# Roy Osherove: full text > Roy Osherove's personal site: 20+ years of blog posts on unit testing, TDD, software craftsmanship, team leadership and continuous delivery, plus his training and consulting. Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page). License: https://creativecommons.org/licenses/by/4.0/. Source: https://osherove.com/ . Generated 2026-10-22T23:44:06.421Z. 2879 posts, 29 pages. ## About the author **Roy Osherove**: Senior Solutions Architect at AWS working on AI for production and AI-driven development; author of The Art of Unit Testing and Elastic Leadership, with about 20 years of consulting and training on unit testing, TDD, team leadership and continuous delivery. ### Sites - [RobotPaper](https://robotpaper.ai/): This blog: AI patterns and anti-patterns, AI and coding agents, and engineering leadership. - [osherove.com](https://osherove.com): Roy's personal site. Author of The Art of Unit Testing and Elastic Leadership; consulting and training on unit testing, TDD, team leadership and continuous delivery, plus about 20 years of blog posts. - [The Art of Unit Testing](https://www.artofunittesting.com): The Art of Unit Testing, 3rd Edition (Manning): readable, maintainable, trustworthy unit tests, plus TDD workshops in C#, JavaScript, Java and Kotlin. - [5whys.com](https://www.5whys.com): Roy's writing on software team leadership: self-organizing teams, surviving chaos, learning mode and the Elastic Leadership model. - [Pipeline Driven](https://pipelinedriven.org): Continuous delivery and DevOps practices: build patterns, pipeline-friendly testing, DevOps metrics and enterprise DevOps. - [Elastic Leadership](https://www.elasticleadership.com): Elastic Leadership, Roy's framework for software team leaders (survival, learning and self-organizing modes). ### Social - X: https://x.com/royosherove - LinkedIn: https://www.linkedin.com/in/osherove/ ### Contact - Contact form: https://forms.gle/jQSx5KoXvrVA1JCK7 ### License Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page). License: https://creativecommons.org/licenses/by/4.0/ --- title: "Video: Test Driven Smart Contracts with Solidity and Forge with Roy Osherove" url: "https://osherove.com/blog/2023/3/23/video-test-driven-smart-contracts-with-solidity-and-forge-with-roy-osherove.md" canonical: "https://osherove.com/blog/2023/3/23/video-test-driven-smart-contracts-with-solidity-and-forge-with-roy-osherove" published: "2023-03-23T21:36:29" updated: "2023-03-23T21:36:29" tags: [] author: "Roy Osherove" description: "I did a talk about Test Driven Solidity Smart contracts at the Israel web3 developers underground last week. Here’s how it went. Hope you enjoy it! Play video Test Driven Solidity Smart Contracts with Foundry & Forge -…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: Test Driven Smart Contracts with Solidity and Forge with Roy Osherove By Roy Osherove March 23, 2023 I did a talk about Test Driven Solidity Smart contracts at the [Israel web3 developers underground](https://israelweb3.com/) last week. Here’s how it went. Hope you enjoy it! [![](https://osherove.com/img/video/yt-HuBHPfCJJlc.jpg)Play videoTest Driven Solidity Smart Contracts with Foundry & Forge - Roy Osherove](https://www.youtube.com/watch?v=HuBHPfCJJlc) --- title: "Some opinions about effective software development after 20+ years" url: "https://osherove.com/blog/2021/1/24/some-opinions-about-effective-software-development-after-20-years.md" canonical: "https://osherove.com/blog/2021/1/24/some-opinions-about-effective-software-development-after-20-years" published: "2021-01-24T09:24:55" updated: "2021-01-24T09:24:55" tags: [] author: "Roy Osherove" description: "This post on hackernews made me write this: Being able to communicate ideas > Being a great technical developer - For every great developer that's an asshole, you can find a great developer that won't be an asshole.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some opinions about effective software development after 20+ years By Roy Osherove January 24, 2021 This [post on hackernews](https://news.ycombinator.com/item?id=25887373) made me write this: - Being able to communicate ideas > Being a great technical developer - - For every great developer that's an asshole, you can find a great developer that won't be an asshole. Don't keep assholes. Google the "[no asshole rule](https://en.wikipedia.org/wiki/The_No_Asshole_Rule)". - - Making the team feel safe to discuss stuff they don't know freely and ask questions that might seem stupid in other teams makes for a great team that's not afraid to challenge assumptions and break through with new skills. - - TDD is a skill just like refactoring. Learn when it makes sense. - 80% of architects in enterprise don't have the skills needed from them. including the things stated above. - Learning the [Theory of Constraints](https://en.wikipedia.org/wiki/Theory_of_constraints) and applying it to find bottlenecks in the process, pipelines and structures of your teams/projects is one of the most useful things you can apply to become more productive. - - Learning [what to measure and what not to measure](https://www.youtube.com/watch?v=goihWvyqRow), lagging vs leading indicators can help you communicate to management about what changes truly need to happen to make your team work more effectively. - - Whiteboards (and remotely, [miro](https://miro.com/) boards) are very effective and can be used for easily 50% of meetings. But aren't. --- title: "SOLVED: Getting Skype for Business to Work on Mac with Virtual Camera" url: "https://osherove.com/blog/2020/12/9/solved-getting-skype-for-business-to-work-on-mac-with-virtual-camera.md" canonical: "https://osherove.com/blog/2020/12/9/solved-getting-skype-for-business-to-work-on-mac-with-virtual-camera" published: "2020-12-09T09:47:30" updated: "2020-12-09T09:47:30" tags: [] author: "Roy Osherove" description: "Skype for business… it used to be “acceptable”. These days it’s the notepad of the conferencing world. Skype has recently broken compatibility with Virtual cameras with the new versions of MAC OS, so here’s the trick…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SOLVED: Getting Skype for Business to Work on Mac with Virtual Camera By Roy Osherove December 9, 2020 Skype for business… it used to be “acceptable”. These days it’s the notepad of the conferencing world. Skype has recently broken compatibility with Virtual cameras with the new versions of MAC OS, so here’s the trick (based on [this forum reply](https://answers.microsoft.com/en-us/msoffice/forum/all/skype-for-business-no-longer-recognizes-virtual/67553f89-db9c-4935-aa9c-c09a775ddf15)): ## ;TLDR: ``` sudo codesign --remove-signature /Applications/Skype\ for\ Business.app/ ``` ## The Long Version: On Mac OS X 1. Close Skype App 2. Open Terminal (if you don't have XCode Installed, do items 3 and 4) 3\. run ``` Xcode-select --install ``` 4\. install and update Xcode **Most important part:** 5\. run ``` sudo codesign --remove-signature /Applications/Skype\ for\ Business.app/ ``` ## When Done: - ou will lose your Skype settings. - when Skype is started the first time you need to enter your admin password and hit "always permit". - After that you are able to access your virtual cameras again. --- title: "Solved - Pihole FTL DB is huge taking too much disk space" url: "https://osherove.com/blog/2020/11/18/solved-pihole-ftl-db-is-huge-taking-too-much-disk-space.md" canonical: "https://osherove.com/blog/2020/11/18/solved-pihole-ftl-db-is-huge-taking-too-much-disk-space" published: "2020-11-18T16:05:28" updated: "2020-11-18T16:05:28" tags: [] author: "Roy Osherove" description: "If, like me, you’ve also run out of room on your pi-hole running on a raspberry pi, here’s how you can clean up the database (note: all of the logged data will disappear forever!) cd /etc/pihole sudo service pihole-FTL…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Solved - Pihole FTL DB is huge taking too much disk space By Roy Osherove November 18, 2020 If, like me, you’ve also run out of room on your pi-hole running on a raspberry pi, here’s how you can clean up the database (note: all of the logged data will disappear forever!) ``` cd /etc/pihole sudo service pihole-FTL stop sudo mv pihole-FTL.db pihole-FTL.db.old sudo service pihole-FTL start ``` --- title: "SOLVED - High CPU and Lagging when Screen Sharing in Zoom 2020 Multiple Screens" url: "https://osherove.com/blog/2020/8/18/solved-high-cpu-and-lagging-when-screen-sharing-in-zoom-2020-multiple-screens.md" canonical: "https://osherove.com/blog/2020/8/18/solved-high-cpu-and-lagging-when-screen-sharing-in-zoom-2020-multiple-screens" published: "2020-08-18T13:04:35" updated: "2020-08-18T13:04:35" tags: [] author: "Roy Osherove" description: "(on a mac) I’m sharing here what I’ve learned the hard way. This has now helped me when teaching half day remote classes about TDD: Go into zoom settings Under “Screen Share” -> Advanced -> Screen Capture Mode Set…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SOLVED - High CPU and Lagging when Screen Sharing in Zoom 2020 Multiple Screens By Roy Osherove August 18, 2020 (on a mac) I’m sharing here what I’ve learned the hard way. This has now helped me when teaching [half day remote classes](https://osherove.com/trainingoptions) about TDD: 1. Go into zoom settings 2. Under “Screen Share” -> Advanced -> Screen Capture Mode 3. Set Screen Capture Mode to “Previous Operating Systems” ![Zoom settings on mac High CPU Usage](https://osherove.com/img/sq/YJO4S3Z2-Zoom-settings-on-mac-High-CPU-Usage.webp) Also: You might also want to set “Limit your screen share to 8 frames per second” but it has worked well for me without it. even when live-coding, both sharing a screen and an individual app. --- title: "COVID19: All current online unit testing and TDD training content is free until further notice" url: "https://osherove.com/blog/2020/3/19/covid19-free-unit-testing-training.md" canonical: "https://osherove.com/blog/2020/3/19/covid19-free-unit-testing-training" published: "2020-03-19T16:33:24" updated: "2020-03-19T16:33:24" tags: [] author: "Roy Osherove" description: "OK. We’re all stuck at home (or will be soon). COVID19 is wreaking havoc on our economy and our way of living. It’s pretty intense, but it’s also a time, for those of us who can do it, to grow and learn new skills, get…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # COVID19: All current online unit testing and TDD training content is free until further notice By Roy Osherove March 19, 2020 [Embedded content](https://embed.restream.io/player/index.html?token=df9f03a833eb31258c522ef33c9ba92c) OK. We’re all stuck at home (or will be soon). COVID19 is wreaking havoc on our economy and our way of living. It’s pretty intense, but it’s also a time, for those of us who can do it, to grow and learn new skills, get out of our comfort zone and use our time indoors to try to be at least somewhat productive. Here’s my part in helping people stay indoors: until further notice, all my existing online courses are free for everyone who’s interested. [Simply go to the COVID19 ALL-IN bundle and sign up](https://go.osherove.com/covid19). You’ll get streaming and download access to all the content. Some of the content there: - TDD in Java, C# and Ruby based on [Art of Unit Testing](https://artofunittesting.com/) - Legacy Code Refactoring for Unit Testing (C#) - Pairing Videos on TDD (C#) - More..! I’ll disable this probably in a month or two, we’ll see. But take your time. Once you get the bundle, the content will be yours FOREVER. even after I have disabled purchasing it for free. so don’t worry about going slow. _Also, consider signing up for_ [_my daily corona dev stream_](https://twitch.tv/royosherove) _where I work on the upcoming next version of my book, art of unit testing 3rd edition, live:_ Have fun, stay safe, stay indoors, and spread knowledge, not the virus. --- title: "Unit Testing Entry and Exit Points" url: "https://osherove.com/blog/2020/3/12/unit-testing-entry-points-and-exit-points.md" canonical: "https://osherove.com/blog/2020/3/12/unit-testing-entry-points-and-exit-points" published: "2020-03-12T14:19:12" updated: "2020-03-12T14:19:12" tags: [] author: "Roy Osherove" description: "Let’s talk about the word “unit” in unit testing. To me, a unit stands for “unit of work” or a “use case” inside the system. A unit of work has a beginning and an end. I call these entry points and exit points . A…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing Entry and Exit Points By Roy Osherove March 12, 2020 Let’s talk about the word “unit” in unit testing.  To me, a _unit_ stands for “unit of work” or a “use case” inside the system. A unit of work has a beginning and an end. I call these _entry points_ and _exit points_. A simple example of a unit of work, as we’ll soon see, is a function that calculates something and returns a value. But that function could also use other functions , other modules and other components in the calculation process, which means the unit of work (from entry point to exit point), now spans more than just a function. Yes that also means you can apply the term ‘unit of work’ to higher level abstractions, as well as use these terms when discussing integration, API and end-to-end tests. We’re focusing on the unit testing side. # **Definition : Unit of Work** A _unit of work_ is the sum of actions that take place between the invocation of an _entry point_ up until a noticeable end result through one or more _exit points_. The _entry point_ is the thing we trigger. Given a publicly visible function, for example: The function’s body is all or part of the unit of work. The function’s declaration and signature are the entry point into the body. The resulting outputs or behaviors of the function are its exit points.   ## **_Entry Points & Exit Points_** A unit of work always has an entry point and one or more exit points. It might be useful to give a quick real-world example, or use case, of what you mean by a unit of work. It seems to me the term could span several different components, and it might be helpful to ground it in a real-world concept. ![unit-of-work1.png](https://osherove.com/img/sq/Q33N66A7-unit-of-work1.png) A _unit of work_ can be a single function, multiple functions, multiple functions or even multiple modules or components. But it always has an entry point which we can trigger from the outside (via tests or other production code), and it always ends up doing something useful. If it doesn’t do anything useful, we might as well remove it from our codebase. What’s useful? Something publicly noticeable happens in the code: A return value, state change or calling an external party. Those noticeable behaviors are what I call exit points. Listing 1.1 will show a simple version of a unit of work. ![unit-of-work2.png](https://osherove.com/img/sq/YACPPM4I-unit-of-work2.png) ## **Why “exit point”?** Why “exit point” and not something like “behavior”?. My thinking is that behaviors can also be purely internal. We’re looking for externally visible behaviors from the caller. That distinction might be difficult to differentiate during “live action” coding. Also, “exit point” has the nice connotation to it that suggests we are leaving the context of a unit of work and going back to the test context. Behaviors might be a bit more fluid than that. That said, I’m not sure. Perhaps this will change in the 4th edition of [my art of unit testing book…](https://artofunittesting.com/) Here’s a quick code example of a simple unit of work. ``` const sum = (numbers) => { const [a, b] = numbers.split(',');  const result = Number.parseInt(a, 10) + Number.parseInt(b, 10);  return result; }; ``` This unit of work is completely encompassed in a single function. The function is both the entry point, and because its end result returns a value, it also acts as the exit point. We get the end result in the same place we trigger the unit of work, so we can describe it such that the entry point is also the exit point. If we drew this function as a unit of work, it would look something like this: ![unit-of-work1.1.png](https://osherove.com/img/sq/1NJMACE7-unit-of-work1.1.png) I used “sum(numbers)” as the entry point and not “numbers” because the entry point is the function signature. The parameters are the context or input given through the entry point.  Here’s a variation of this idea: **A Unit of work has entry points and exit points:** ``` let total = 0; const totalSoFar = () => {   return total; }; const sum = (numbers) => {   const [a, b] = numbers.split(',');   const result = Number.parseInt(a, 10) +             Number.parseInt(b, 10);   total += result;   return result; }; module.exports = {   sum,   totalSoFar }; ``` This new version of sum has _two_ exit points. It does two things: 1.     It returns a value 2.     it has new functionality: it has a running total of all the sums. It sets the state of the module in a way that is noticeable (via totalSoFar() ) from the caller of the entry point. ![unit-of-work1.2.png](https://osherove.com/img/sq/AS88TFG2-unit-of-work1.2.png) You can think of these two exit points as two different _paths_, or _requirements_ from the same unit of work, because they indeed _are_ two different _useful_ things the code is expected to do. It also means I’d be very likely to write two different unit tests here: one for each exit point. Very soon we’ll do exactly that. What about totalSoFar()? Is this also an entry point? Yes, it could be. IN a separate test. I could write a test that proves that calling totalSoFar() without triggering prior to that call returns 0. Which would make it its own little unit of work. And would be perfectly fine. Often one unit of work (sum()) can be made of smaller units. This is where we can start to see how the scope of our tests can change and mutate, but we can still define it with entry points and exit points. Entry points are always where the test triggers the unit of work. You can have multiple entry points into a unit of work, each used by a different set of tests. ## **A side note on design** In terms of design, you can also think of it like this. There are two main types of actions: “Query” actions, and “Command” functions. Query actions don’t change stuff, they just return values. Command actions change stuff but don’t return values. We often combine the two but there are many cases where separating them might be a better design choice. This post isn’t primarily about design, but I urge you to read more about the concept of command-query separation over at Martin Fowler’s website: [https://martinfowler.com/bliki/CommandQuerySeparation.html](https://martinfowler.com/bliki/CommandQuerySeparation.html)   **Exit points often signify requirements and new tests, and vice versa** Exit points are end results of a unit of work.  For Unit Tests, I usually write at least one separate test, with its own readable name, for each exit point. I could then add more tests with variations on inputs, all using the same entry point, to gain more confidence. Integration tests, on the other hand, will usually include multiple end results since it could be impossible to separate code paths at those levels. That’s also one of the reasons integration tests are harder to debug, get up and running, and maintain: they do much more than unit tests, as we’ll soon see. ## **Back to the code:** Here’s a third version of this function : ``` const winston = require('winston'); let total = 0; const totalSoFar = () => {   return total; };   const makeLogger = () => {   return winston     .createLogger({       level: 'info',       transports: new winston.transports.Console()     }); }; const logger = makeLogger(); const sum = (numbers) => {   const [a, b] = numbers.split(',');   logger.info(     'this is a very important log output',     { firstNumWas: a, secondNumWas: b });   const result = Number.parseInt(a, 10) + Number.parseInt(b, 10);   total += result;   return result; }; module.exports = {   totalSoFar,   sum }; ```  You can see there’s a new _exit point/requirement/end result_ in the function. It logs something to an external entity. It could be a file, or the console, or a database. We don’t know, and we don’t care. This is the third type of an exit point: _calling a third party_. I also like to call it “calling a _dependency_”. ## **A Dependency (3rd party)** A dependency is something we don’t have full control over during a unit test. Or something that, to try to control in a test, would make our lives miserable to get up and running, maintain, keep the test consistent, or running fast. Some examples would include: loggers that write to files, things that talk to the network, code controlled by other teams that we cannot change, components that due to the way they function take a very long time (calculations, threads, database access) and more.  The rule of thumb is: “If I can fully and easily control what its doing, and it runs in memory, and its fast, it’s not a dependency”. There are always exceptions to the rule, but this should get you through 80% of the cases at least. Here's how I’d draw it with all three exit points, and two entry points together: ![unit-of-work3.png](https://osherove.com/img/sq/TB8476HD-unit-of-work3.png) At this point we’re still just a function-sized unit of work. The entry point is the function call, but now we have three possible paths, or exit points, that do something useful that the caller can verify publicly. # Test Per Exit Point Here’s where it gets interesting: It’s a good idea to have at least one _separate test per exit point_. (it might have more than a single assert, but only on the things related to exit point, that would be changing together. This will make the tests more readable, simpler and easier to debug or change without affecting other outcomes. ## **_Exit Point Types_** We’ve seen that we have three different types of end results: ### Value Based §  The invoked function returns a useful value (not undefined). If this was in a more static language such as Java or C# we’d say it is a public, non void function. ### State Based §  There’s a _noticeable_ change to the state or behavior of the system before and after invocation that can be determined without interrogating private state. (In our case the wasCalled() function returns a different value after the state change.) ### 3rd Party §  There’s a callout to a third-party system over which the test has no control. That third-party system doesn’t return any value, or that value is ignored. (Example: calling a third-party logging system that was not written by you and you don’t control its source code.) **XUnit Test Patterns’ Definition of Entry & Exit Points** The book [_XUnit Test Patterns_](http://xunitpatterns.com/) discusses the notion of _direct inputs and outputs,_  and _indirect inputs and outputs_. _Direct inputs_  are what I like to call entry points. That book called it “using the front door” of a component. Indirect outputs in that book can be thought of as the other two types of exit points I mentioned (state change and calling a third party).  Both versions of these ideas have evolved in parallel, but the idea of “unit of work” only appears in this book. Unit of work , coupled with “entry” and “exit” points makes much more sense to me that using “direct and indirect inputs and outputs”. Consider this a stylistic choice on how to teach the concept of test scope. You can find more about xunit test patterns at xunitpatterns.com   Let’s see how the idea of entry and exit points affects the definition of a unit test. ## **UPDATED DEFINITION of a unit test:** A _unit test_ is a piece of code that invokes a unit of work and **checks one specific exit point** as an end result of that unit of work. If the assumptions on the end result turn out to be wrong, the unit test has failed. A unit test’s **scope can span as little as a function or as much as multiple modules or components depending on how many functions and modules are used between the entry point and the exit point.**  ## **_1.2          Different Exit Points, Different Techniques_** Why am I spending so much time just talking about types of exit points? Because not only is it a great idea to separate the tests per exit point, but also each type of exit point might require a different technique to test successfully. ·       Return-value based exit points (direct outputs per “xunit patterns”) of all the exit point types, should be the easiest to test. You trigger an entry point, you get something back, you check the value you get back. ·       State based tests (indirect outputs) require a little more gymnastics usually. You call something, then you do _another call to_ check _something else_ (or call the previous thing again) to see if everything went according to plan. In a third-party situation (indirect outputs) we have the most hoops to jump through. We haven’t discussed the idea yet, that’s where we’re forced to use things like _mock objects_ in our tests so we can replace the external system with one we can control and interrogate in our tests. I’ll cover this idea deeply later in the book. **Which exit points make the most problems?** As a rule of thumb, I try to keep most of my tests either return value based or state based tests. I try to avoid mock-object based tests if I can, and usually I can. As a result I usually have no more than perhaps 5% of my tests using mock objects for verification. Those types of tests complicate things and make maintainability more difficult. Sometimes there’s no escape though, and we’ll discuss them in future posts. --- title: "Re-Thinking the Role of Mock Objects, Design & Test Maintainability (stream of thought)" url: "https://osherove.com/blog/2020/3/2/re-thinking-the-role-of-mock-objects-design-amp-test-maintainability-stream-of-thought.md" canonical: "https://osherove.com/blog/2020/3/2/re-thinking-the-role-of-mock-objects-design-amp-test-maintainability-stream-of-thought" published: "2020-03-02T16:38:48" updated: "2020-03-02T16:38:48" tags: [] author: "Roy Osherove" description: "Disclaimer : this post assumes you understand mock objects deeply and have been using them for a long time and are familiar with the london-school of TDD. Disclaimer : written as a stream of though. So might be a bit…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Re-Thinking the Role of Mock Objects, Design & Test Maintainability (stream of thought) By Roy Osherove March 2, 2020 **Disclaimer**: this post assumes you understand mock objects deeply and have been using them for a long time and are familiar with the london-school of TDD. **Disclaimer**: written as a stream of though. So might be a bit incoherent. It’s no secret that in my previous books on unit testing I’ve advocated for an approach to mock objects that is very different from that prescribed in the the “London School of TDD”. Namely, I usually prefer to use mock objects as little as possible, and to verify them only when the expected end result of a unit of work is calling a 3rd party dependency. The reasons I usually state for this are: - since mock objects are testing internal interactions, they solidify our internal design so that it is harder to change later on. Internal interactions always result in either state changes, value results or calling a boundary in the system, so let’s use mock objects only on the boundaries. We can still create local wrapper interfaces for those boundaries, but they still represent a boundary dependency. - mock objects make tests longer and harder to read write and maintain - It’s easy to test something that has no value in real life by mistake (that my class calls a method on another class… ok. now what?) This is almost the exact opposite from the recommendations in “Growing Object Oriented Software Guided by Tests” book and from the now famous paper (well, in our little nische anyway) “[Mock Roles not Objects](http://jmock.org/oopsla2004.pdf)” (PDF). > “…We believe the opposite, that Mock Objects are most useful when used to drive the design of the code under test. This implies that they are most useful within the system where the interfaces can be changed. Mocks and stubs can still be useful for testing interactions with third-party code, especially for avoiding test dependencies, but for us this is a secondary aspect to the technique.” As I’m working [on the third edition](https://go.osherove.com/aout3) of art of unit testing these days, I’m revisiting and challenging my thinking. I did read the GOOS book many years ago and I’ve just re-read it with fresher eyes, but also with more experience of my own, and a few thoughts popped into my head. I’m not sure where they lead yet so I’ll just throw them here before I forget: 1. I always say that TDD requires three skills: good tests, test first and design. And I never focus on design. Mock objects (london school) are all about design of objects and dependencies. It could be that when we want to focus more on our design skill we would want to start using more of the london-school style mock objects? That thought scares me a bit because of the maintainability implications, but… 2. maintainability: If we’re using mocks in our tests to drive the design of roles in our objects, we could take several precautions to prevent test maintainability (maybe) 1. We can use the mock objects in a non strict manner and not verify on them (thish will just force us to think about the internal design). Things like the old NMock and JMock2 were made for that. Any framework with record-replay ability might fit that, but they are getting long in the tooth. AAA frameworks like fake it easy would not help us here because we only define the interactions as part of an assert. 2. We could write the test, assert on the interactions, and then delete the interaction asserts and leave only the mocks, but treated as stubs. This relaxes our maintainability later on assuming we have non strict mocks 3. This could be a sign that our design sucks, so we’d need smaller, shorter interfaces in the system or more roles, or add a middle role for multiple dependencies. 3. We could separate the task fo learning design from the other two skills (test-frist, good tests) by choosing when to use london-style mock objects, and use them only in particular cases 4. Boundaries: It’s true that people can mistakenly just fake external interfaces and use them as mocks in the test. I always advocate for creating an internal wrapper interface instead, that w can control. It could be that the way I explained this before could easily be understood as “fake 3rd parties directly”. And that would be unfortunate. I’ll fix that for my 3rd edition. Fake only things that are under your control, or that are not changing. A 3rd party logger can still change (if you change loggers!) So what am I trying to say here? - There might be room for london style mocks in my book after all, but it might have taken me 10+ years to realize it, and I’m still not convinced fully. It could be one of the keys to learn about design, but at what cost? - My biggest fear is that the cost (tests that keep breaking) far outweighs the value we get from the design, and we’ve all seen long horrible tests with long complicated (also internal) dependency chains. The design skill and the skill of stopping and CHANGING the design when the tests go “OUCH” are not a given in many situations, especially enterprise. - Given the last point, is it worth it to let the london school test driven design idea go with the understanding that the world is mostly not ready for it yet, and will mostly just abuse it? - Or is it fair to throw it out there so that what I fear will be a select few will end up using it “correctly” but the rest of the world types blindly on the keyboard to produce a franken-test? Here’s what the paper has to say about this: > “When testing with Mock Objects it is important to find the right balance between an accurate specification of a unit's required behaviour and **a flexible test that allows easy evolution of the code base**. One of the risks with TDD is that tests become “brittle”, that is they fail when a programmer makes unrelated changes to the application code. **They have been over-specified** to check features that are an artefact of the implementation, not an expression of some requirement in the object. A test suite that contains a lot of brittle tests will slow down development and inhibit refactoring. > > The solution is to re-examine the code and see if either the specification should be weakened, or the object structure is wrong and should be changed. Following Einstein, a specification should be as precise as possible, but not more precise.” Easier said than done? this paper was written 16 years ago. I’d love to say “people are ready” but I’m not sure yet. Mainly, I’m not sure whether Nat Pryce and Steve Freeman have new information to share about these ideas since then and if there are any new lessons learned. I’ll ping them and see if they can respond to this blog post. --- title: "Seeking Speakers about Branching Strategies, Feature Toggles, Pairing & Other XP/CD Practices" url: "https://osherove.com/blog/2020/1/19/seeking-speakers-about-branching-strategies-feature-toggles-pairing-amp-other-xpcd-practices.md" canonical: "https://osherove.com/blog/2020/1/19/seeking-speakers-about-branching-strategies-feature-toggles-pairing-amp-other-xpcd-practices" published: "2020-01-19T11:09:40" updated: "2020-01-19T11:09:40" tags: [] author: "Roy Osherove" description: "The new CD/XP israel meetup that I’m running is seeking speakers for our meetups in the next few months about any of the following subjects: Branching Strategies Continuous Delivery Metrics Engineering Practices &…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Seeking Speakers about Branching Strategies, Feature Toggles, Pairing & Other XP/CD Practices By Roy Osherove January 19, 2020 The new [CD/XP israel meetup](http://cxdxpisrael.com/) that I’m running is seeking speakers for our meetups in the next few months about any of the following subjects: - Branching Strategies - Continuous Delivery Metrics - Engineering Practices & Automation - Testing & TDD \* - Security Testing & Pipeline Automation \* - Developer Testing \* - Infrastructure as Code \* - Cross Team Collaboration \* - Feature Teams \* - QA/Dev/Sec Automation \* - DevOps, DevSecOps, DevTestOps and others \* - Feature Toggles & Rollouts \* - Pair Programming & Other XP Practices \* - Anything else you think might be interesting If you live in Israel are in the neighborhood at some point, please consider sharing your knowledge with the CD/XP agile community. URL to Submit: [http://submit.cdxpisrael.com](http://submit.cdxpisrael.com/) --- title: "An updated diagram of the TDD process from the upcoming 3rd Edition of Art of Unit Testing" url: "https://osherove.com/blog/2019/11/12/an-updated-diagram-of-the-tdd-process-from-the-upcoming-3rd-edition-of-art-of-unit-testing.md" canonical: "https://osherove.com/blog/2019/11/12/an-updated-diagram-of-the-tdd-process-from-the-upcoming-3rd-edition-of-art-of-unit-testing" published: "2019-11-12T07:39:22" updated: "2019-11-12T07:39:22" tags: [] author: "Roy Osherove" description: "As part of the work on Art of Unit Testing in JS, here’s a diagram I’ve created to explain Test Driven Development. Any feedback is welcome:" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # An updated diagram of the TDD process from the upcoming 3rd Edition of Art of Unit Testing By Roy Osherove November 12, 2019 As part of the work on Art of Unit Testing in JS, here’s a diagram I’ve created to explain Test Driven Development. Any feedback is welcome: ![tdd-process.png](https://osherove.com/img/sq/5KIX73Y6-tdd-process.png) --- title: "Can you write for 5 minutes?" url: "https://osherove.com/blog/2019/8/22/can-you-write-for-5-minutes.md" canonical: "https://osherove.com/blog/2019/8/22/can-you-write-for-5-minutes" published: "2019-08-22T14:23:48" updated: "2019-08-22T14:23:48" tags: [] author: "Roy Osherove" description: "Here’s a nice little web app that forces you to write continuously for a specified amount of time, and if you stop, all text is deleted. It’s a fun exercise, especially if you want to practice writing “flow”. Here’s…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Can you write for 5 minutes? By Roy Osherove August 22, 2019 Here’s [a nice little web app that forces you to write continuously](https://maebert.github.io/themostdangerouswritingapp/#/write?limit=5&type=minutes) for a specified amount of time, and if you stop, all text is deleted. It’s a fun exercise, especially if you want to practice writing “flow”. Here’s what 5 minutes on it got me (I’ll leave the typos in…): “every time something happens, I tell myself. Stop. Think. Act. Do. Repeat. Is that all it takes for something to happen? Our mind is a fragile thing. It thinks for itself, but it can also forget itself. It can litellrally forget that it itself, exists. That's crazy, says the mind to itself. A mind thinking in third person has a funny way of looking at the word. Here you are, writing a piece of text on a website. Why? What's the point? WHat would be lost if you had simply stopped writing? What does it take for something to stop? to start? What does it take to look at something, anything, straight in the eyes, and say "that's on me. I'm doing this". Yes, it was always possibel for us to conjur images of ourslves, the way we'd like the world to see us. But is it not the word just a bunch of minds looking back at themselves and asking how other minds see THEM instead? And in that kind of word, that kind of "hell is other people" world, what does it take to be kind? what does kindness even mean? Is kindness itself self explanatory? Is there a method to this madness of being untruistic? is there some form in which humans and their minds can coexit, side by side? does a body without a mind "exist" ? not being self aware, much like schorodinger's cat: it's possible that that cat was itself not aware it was in a box. If a box is, but a box is not aware, is it? Is IT really aware of anything inside of it? How the human complexity of the mind fails to capture this sort of unimaginitive dribble down into a human sized piece of dribble..” --- title: "Art of Unit Testing, 3rd Edition, With Examples in JavaScript: Tech Reviewers Wanted" url: "https://osherove.com/blog/2019/7/26/art-of-unit-testing-3rd-edition-with-examples-in-javascript-tech-reviewers-wanted.md" canonical: "https://osherove.com/blog/2019/7/26/art-of-unit-testing-3rd-edition-with-examples-in-javascript-tech-reviewers-wanted" published: "2019-07-26T15:08:45" updated: "2019-07-26T15:08:45" tags: [] author: "Roy Osherove" description: "TLDR: I need JS Savvy tech reviewers for the 3rd edition of the book. Apply here, get a free book with your name mentioned in it if your feedback is awesome. The Rest Dear Diary. It has been six years since the last…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Art of Unit Testing, 3rd Edition, With Examples in JavaScript: Tech Reviewers Wanted By Roy Osherove July 26, 2019 # TLDR: I need JS Savvy tech reviewers for the 3rd edition of the book. [Apply here,](http://review.artofunittesting.com/) get a free book with your name mentioned in it if your feedback is awesome. # The Rest Dear Diary. It has been [six years since the last edition of Art of Unit Testing](https://www.manning.com/books/the-art-of-unit-testing-second-edition). Many things have changed since then, and many have interestingly remained the same. I’m writing to you today to let you know that I’ve set up with manning to release a 3rd Edition of Art of Unit Testing in the next year. There are quite a few changes to this edition, and the biggest one is that the examples will be in JavaScript. (It would seem the most useful to the most people and a lot of my work these days is centered around that and Java so I think it makes sense). **( I haven’t decided if they should be in plain JS or in Typescript yet. Would love to know what you think in the comments** [**or on twitter**](https://twitter.com/RoyOsherove)**.)** So, I need good people to keep me sane as I transform this book into a JS centric one. People to read each chapter and let me know if things don’t make sense, or of my examples suck, or if there are better ways to achieve the same result. ## Would you like to be a tech reviewer for this new book? You’ll get a free copy of the book and a mention inside the book with your name. Also we’ll become great friends and BBQ together every Saturday (If you’re in the tel aviv area). [Fill out this form and I’ll get back to ASAP.](http://review.artofunittesting.com/) ## Schedule: Nothing is written yet. I should have a chapter or two ready in the next month or two. Maybe earlier. I plan to release each chapter separately to the tech reviewers (typos and all) and get some technical feedback on the code samples and ideas. If that sounds like something you might be interested in geeking out on - it’d be a win-win. ## Here is the current plan for the revised Table of Contents ### Stack used - WebStorm - Git - Jest - Node - Typescript? # TOC (many things will change..) ## Pre - What's new in the 3rd edition - JS ## Part 1 - Getting Started - The Basics of Unit Testing - **(new) What's in a function?** - Return value - Noticeable State Change - Calling a Third Party - **(new) Entry Points & Exit Points** - Units & Unit Of Work - Properties of a Good Unit Test - A first Unit Test ## Part 2 - Core Techniques - Using Stubs to Break Dependencies - **(new) Faking Callbacks** - Interaction Testing using Manual Spies, Mocks - Isolation (Mocking) Frameworks - Digging Deeper into Isolation Frameworks ## Part 3 - The Test Code - Test Hierarchies & Organization - The Pillars of Good Unit Tests - **(new) Multiple naming conventions** - **(new) Three important pieces of information in a name** ## Part 4 - Design & Process - **(new) Unit Tests and a Pipeline Driven Culture** - **(new) Playing well with others** - Other types of Tests - Using Test Recipes to Prevent Duplication - **(new) Lies, Damned Lies, and Unit Testing Metrics** - Integrating Unit Testing into the organization - Working with Legacy Code - **(new) Refactoring DOs and DONTs** - (changed) Design & Testability ## Appendix - JS Testing Tools & Frameworks So, if you want to be a tech reviewer on the book: I’m looking for people with good Node.JS/Javascript experience that would be willing to challenge me on technical details and ideas. Go here and submit yourself. [https://airtable.com/shrtohxHT8RSsfBLc](http://review.artofunittesting.com/) --- title: "Announcing Continuous Delivery Israel Meetup - First Meeting (June 24)" url: "https://osherove.com/blog/2019/6/2/announcing-continuous-delivery-israel-meetup-first-meeting-june-24.md" canonical: "https://osherove.com/blog/2019/6/2/announcing-continuous-delivery-israel-meetup-first-meeting-june-24" published: "2019-06-02T08:20:07" updated: "2019-06-02T08:20:07" tags: [] author: "Roy Osherove" description: "I’m pleased to announce that we will have the first ever meeting Continuous Delivery Israel meetup , in the AWS Floor28 offices in Tel Aviv, June 24th, 2019, at 6PM. The Group’s page is located at CDIsrael.com If you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Announcing Continuous Delivery Israel Meetup - First Meeting (June 24) By Roy Osherove June 2, 2019 I’m pleased to announce that we will have the first ever meeting **Continuous Delivery Israel** meetup , in the AWS Floor28 offices in Tel Aviv, June 24th, 2019, at 6PM. [The Group’s page is located at CDIsrael.com](http://cdisrael.com/) ![CDIsrael.jpg](https://osherove.com/img/sq/TT1VEY56-CDIsrael.jpg) If you would like to be a **speaker or sponsor**, [contact me.](https://osherove.com/contact) **AGENDA**: \------------- 18:00-18:30 Networking & Pizza 18:30 - 18:40 Goals for CD Israel + Logistics 18:40 - 19:20 Ant Weiss: Optimizing the Delivery Pipeline for Flow 19:20 - 19:30 Break 19:30 - 20:15 TBD - We are looking for one more speaker! **ABOUT**: Continuous Delivery is much more than simply Dev + Ops. It is also tech leads, compliance, security, project managers, scrum masters, architects, and everything in between - let's learn from each other! We deal with TECHNIQUES, PRACTICES, PROCESSES (and sometimes tools) that enable true continuous delivery - in large and small companies. We also discuss influencing such change in large and growing organizations. Bottlenecks & Pipelines: We feel feel pipelines are the core engines that can drive a software company, That Dev, Ops, Test, Sec, compliance should all be working together around common automated pipelines, and the processes, and metrics that push for and against adoption. Challenges and insights: We will learn from each other about challenges and techniques that enable true continuous delivery. Great for Ops, Dev, Security, compliance and agile leadership folks (PM, scrum masters, etc) --- title: "About Being Lonely as a Consultant" url: "https://osherove.com/blog/2019/4/16/about-being-lonely-as-a-consultant.md" canonical: "https://osherove.com/blog/2019/4/16/about-being-lonely-as-a-consultant" published: "2019-04-16T09:18:08" updated: "2019-04-16T09:18:08" tags: [] author: "Roy Osherove" description: "Loneliness, as far as I’ve felt it in the past 20+ years where I’ve done perhaps 50% of them as a consultant, is very common. If you become a consultant, you should expect and anticipate it as a given for at least part…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About Being Lonely as a Consultant By Roy Osherove April 16, 2019 Loneliness, as far as I’ve felt it in the past 20+ years where I’ve done perhaps 50% of them as a consultant, is very common. If you become a consultant, you should expect and anticipate it as a given for at least part of your day. Even if your main job is pairing with people, you’ll still have days where loneliness can be felt during the day. There are several factors at play: - People don’t know you for the first few weeks or even months, to invite you into their circles - There are meetings, shared history, shared chat groups and apps that you might not be part of so you’ll feel like everyone knows something you don’t (and they do) - There are just times when you’re not working with anyone and you’re working alone. Be prepared for situations where stuff just happens: - People going out to lunch without you - People having meetings without you (that you might contribute to) - Chasing people to meet that are never available. - People canceling meetings with you leaving you with nothing to do. It’s part of that work life and sometimes it just sucks to feel like people are not including you. They might not do it on purpose, they might view you as an “outsider”. They might disagree with your ideas and avoid working with you. Be prepared for the mental burden of accepting all this, moving on and continuing to push through. I think that’s the hardest part of the job. # Things that help: - Let people know you’re free. - If I feel bad, I look at [this post I wrote a long time ago “When I want to five up”](https://www.5whys.com/articles/when-i-want-to-give-up.html) - Find the people who do seek your opinion and work with them. Realize that usually your job is not to “convince” but to “support” someone who is actively trying to become better. Try to work with those people. - If your job is to “Convince” then realize that 90% of the time you will be working people who disagree with you. Develop a mental “elephant skin” and realize you will finish every day exhausted - but also learning a lot about how to teach and explain the same concept in multiple different ways and levels. THIS WILL MAKE YOU BETTER AT TEACHING. - Look at past successes and remember how it felt before they succeeded and realize this is the same pattern repeated. - Find more customers/teams to work with so you can “breath” other mindsets and gain energy to go back to the place where you feel lonely. - **You are not alone** in feeling this. I feel like this. SOme weeks it’s 50% of the time. Some weeks is 5% of the time. But I believe all consultants feel it and have to deal with it. - Some consultants work in teams so they eat together etc. - Realize that usually if people avoid you it has something to do with what they feel about what THEY should be doing, not what YOU should be doing. - This (plus your knowledge and expertise) is one of the reasons you get paid more (you do ask for more money than you’d make as a hired person, right?). Not everyone can handle this. It always easier to be “part of a group”. - Sometimes at some point teams will let you into their inner circles - that’s a great feeling - and it will help make you a better consultant as you’ll be on the inner scoop of things before they happen, at which point you can do something about it. - Have a life outside of work: spend time with family and friends and bitch to them about your day at work. Spend time with your kids. Have a hobby ([I do music](https://oshro.com/)) . Don’t let work be the only thing that makes you happy. That’s my 2 cents. You probably have other , completely different views on the matter. I’m happy to learn! Put it in the comments. --- title: "Looking to do training or consulting in London around week of May 13th 2019" url: "https://osherove.com/blog/2019/3/14/looking-to-do-training-or-consulting-in-london-around-week-of-may-13th-2019.md" canonical: "https://osherove.com/blog/2019/3/14/looking-to-do-training-or-consulting-in-london-around-week-of-may-13th-2019" published: "2019-03-14T09:16:38" updated: "2019-03-14T09:16:38" tags: [] author: "Roy Osherove" description: "If you're based in LONDON - I'm looking to do a 1-2 day workshop for interested customers about either DevOps Patterns , Elastic Leadership or TDD during the week of May 15th. Here’s the list of possible training or…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Looking to do training or consulting in London around week of May 13th 2019 By Roy Osherove March 14, 2019 If you're based in **LONDON** - I'm looking to do a 1-2 day workshop for interested customers about either [DevOps Patterns](https://pipelinedriven.org/enterprise-devops), [Elastic Leadership](https://5whys.com/) or [TDD](http://artofunittesting.com/) during the week of May 15th. [Here’s the list of possible training or consulting topics.](https://osherove.com/trainingoptions) Feel free [to contact me any time](https://osherove.com/contact) so we can arrange something with your company. --- title: "Removing bloatware from a new windows machine" url: "https://osherove.com/blog/2017/9/29/removing-bloatware-from-a-new-windows-machine.md" canonical: "https://osherove.com/blog/2017/9/29/removing-bloatware-from-a-new-windows-machine.html" published: "2017-09-29T13:00:02" updated: "2017-09-29T13:00:02" tags: [] author: "Roy Osherove" description: "Reminder to self: here’s what you do through powershell: get-appxpackage messaging | remove-appxpackage get-appxpackage sway | remove-appxpackage get-appxpackage commsphone | remove-appxpackage get-appxpackage…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Removing bloatware from a new windows machine By Roy Osherove September 29, 2017 Reminder to self: here’s what you do through powershell: get-appxpackage _messaging_ | remove-appxpackage get-appxpackage _sway_ | remove-appxpackage get-appxpackage _commsphone_ | remove-appxpackage get-appxpackage _windowsphone_ remove-appxpackage get-appxpackage _phone_ | remove-appxpackage get-appxpackage _communicationsapps_ | remove-appxpackage get-appxpackage _people_ | remove-appxpackage get-appxpackage _zunemusic_ | remove-appxpackage get-appxpackage _zunevideo_ | remove-appxpackage get-appxpackage _zune_ | remove-appxpackage get-appxpackage _bingfinance_ | remove-appxpackage get-appxpackage _bingnews_ | remove-appxpackage get-appxpackage _bingsports_ | remove-appxpackage get-appxpackage _bingweather_ | remove-appxpackage get-appxpackage _bing_ | remove-appxpackage get-appxpackage _onenote_ | remove-appxpackage get-appxpackage _maps_ | remove-appxpackage get-appxpackage _solitaire_ | remove-appxpackage get-appxpackage _officehub_ | remove-appxpackage get-appxpackage _skypeapp_ | remove-appxpackage get-appxpackage _getstarted_ | remove-appxpackage get-appxpackage _3dbuilder_ | remove-appxpackage Get-AppxPackage _drawboardpdf_ | Remove-AppxPackage Get-AppxPackage _freshpaint_ | Remove-AppxPackage Get-AppxPackage _nytcrossword_ | Remove-AppxPackage Get-AppxPackage _microsoft.xboxapp_ | Remove-AppxPackage Get-AppxPackage _SurfaceHub_ | Remove-AppxPackage Get-AppxPackage _flipboard_ | Remove-AppxPackage (from [source](https://www.reddit.com/r/pcmasterrace/comments/736tfh/skype_is_officially_bloatware_uninstalled_it/)) --- title: "New Vim Course Online - Vim Hates You" url: "https://osherove.com/blog/2017/4/20/new-vim-course-online-vim-hates-you.md" canonical: "https://osherove.com/blog/2017/4/20/new-vim-course-online-vim-hates-you.html" published: "2017-04-20T06:08:44" updated: "2017-04-20T06:08:44" tags: [] author: "Roy Osherove" description: "I’ve added a new course to http://courses.osherove.com - This time it’s all about Vim, which I’ve been using for a few good years now. Play video Vim Hates You You can check out my online Vim course at…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Vim Course Online - Vim Hates You By Roy Osherove April 20, 2017 I’ve added a new course to http://courses.osherove.com - This time it’s all about Vim, which I’ve been using for a few good years now.  [![](https://osherove.com/img/video/yt-oOKfu5OPlFs.jpg)Play videoVim Hates You](https://www.youtube.com/watch?v=oOKfu5OPlFs) [You can check out my online Vim course at http://VimHatesYou.com](http://vimhatesyou.com/)  Or you can go directly to the course page at http://courses.osherove.com/p/vim-hates-you --- title: "Enterprise DevOps" url: "https://osherove.com/blog/2016/10/29/enterprise-devops.md" canonical: "https://osherove.com/blog/2016/10/29/enterprise-devops.html" published: "2016-10-29T17:01:07" updated: "2016-10-29T17:01:07" tags: [] author: "Roy Osherove" description: "As part of my work in the past few years I’ve been more and more deeply involved in large scale DevOps implemementations in very large companies. I’m now writing about my experiences in here: Main website:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Enterprise DevOps By Roy Osherove October 29, 2016 As part of my work in the past few years I’ve been more and more deeply involved in large scale DevOps implemementations in very large companies. I’m now writing about my experiences in here: - Main website: [enterprisedevops.org](https://pipelinedriven.org/enterprise-devops) Some of the latest posts include: - [What is Enterprise DevOps?](https://pipelinedriven.org/article/what-is-enterprise-devops) And about DevOps metrics: - [Mean time to change](https://pipelinedriven.org/article/devops-metric-definition-mean-time-to-change-mttc-vs-change-lead-time) - [Mean time to recovery](https://pipelinedriven.org/article/devops-metric-mean-time-to-recovery-mttr-definition-and-reasoning) - [Frequency of Release](https://pipelinedriven.org/article/devops-metric-frequency-of-releases-definition) - [Defect Rate](https://pipelinedriven.org/article/devops-metric-amount-of-defects-and-issues-definition) --- title: "Code as Music - Test Environments" url: "https://osherove.com/blog/2016/8/18/code-as-music-test-environments.md" canonical: "https://osherove.com/blog/2016/8/18/code-as-music-test-environments.html" published: "2016-08-17T23:11:38" updated: "2016-08-17T23:11:38" tags: ["codemusic"] author: "Roy Osherove" description: "Music Production also has some corollaries with coding in terms of testing. When producing music, it is important that the music sounds good on multiple types of speakers: in your car, in your iphone headphones, on a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Code as Music - Test Environments By Roy Osherove August 17, 2016 Music Production also has some corollaries with coding in terms of testing. When producing music, it is important that the music sounds good on multiple types of speakers: in your car, in your iphone headphones, on a boom box by the pool,  in a club speaker system etc. In that regard priducing the music locally on yoru own speakers is much like “works on my machine”. Producers will usually take the music and test it out manually in various systems, or have multiple sets of monitors, but still test the music in their car, on friend’s systems and more. There are also “emulators” for sound. There are some software solutions that emulate how your music will sound through different speakers, in different locations , in different file formats (mp3 has less data than a .wav file, wav file, for example. Nothing beats real work integration testing though. Much like code. - [#codemusic](https://osherove.com/blog/tag/codemusic) --- title: "Music Production vs. Code Production" url: "https://osherove.com/blog/2015/12/21/music-production-vs-code-production.md" canonical: "https://osherove.com/blog/2015/12/21/music-production-vs-code-production.html" published: "2015-12-21T17:40:34" updated: "2015-12-21T17:40:34" tags: ["codemusic"] author: "Roy Osherove" description: "My off hours hobby is music production. Here are similarities I see between coding and music production so far: Code compiles into binary - midi is rendered into wav files When producing music you need to take many…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Music Production vs. Code Production By Roy Osherove December 21, 2015 My off hours hobby is music production. Here are similarities I see between coding and music production so far: 1. Code **compiles** into binary - midi is rendered into wav files 2. When producing music you need to take **many breaks** to get your ears “out of the mix” and get your head clear again. The same goes for coding when facing tough creative problems or complicated code. 3. Software culture is moving in the direction of **automation and factories,** with architectures that support changing things on the fly. Music production has two opposing factions: a. Newer pop songs are made almost in an industrial fashion (try many tracks in a day, find one that works , then lyrics and vocals are found for it from many contenders; and b. singer-songwriter which is all about manually crafting a song which can take a lot of time. (compare that to a hand crafted optimized piece of code that needs to run at a very low level like a DSP unit or real time calculations) 4. **Pair-Programming** - > most new music these days is not done alone: there are lyric writing teams, melodic writing teams, production teams. 5. in Music, new **digital tooling** is taking the place of older generation analog tooling. Instead of filling rooms with huge hardware, people use digital work stations with software plugins that emulates almost every piece of hardware out there. Software coding is fully digital, but used to be very hardware oriented . Software testing is still very manual but automation is starting to take its place. 6. **Long term support**: Software can keep changing after you’ve released it (new features added etc. Music is usually delivered in multiple different versions: radio mix, PG safe mix, club mix etc.. and music also gets remixed, new covers by other bands are made, remakes by the original band in shows, digitally remastered albums… not exactly the same, but in music all the “stems” (the parts that make the individual atoms of the song) are always saved and can be used to recreate different variations of the song. 7. Code has classes and functions, Music production (digital) also has building blocks: Sound designers use waveforms and combine them, munge them up and process them to create new types of sounds that are then reused by other musicians. If a waveform is the input of code, an LFO envelope is a type of function that operates on that code. Those are just two types of the :atoms” of synthesized music) 8. When mixing, it is encouraged to take many breaks (20 minutes mixing, 15 minutes break) so that your ears don’t get too used to the mix. Programming is also a very tough activity that is helped by taking many small breaks. 9. TDD: In music you might have a “reference” mix - a song you like or a sound you want to sound like that tells you how close you are to getting the same results (loudness, frequencies, etc). TDD is the same way somewhat in that you set yourself a target and see if you measure up to it or not. Music is not automated for this though, and is not a any kind of regression test. 10. Music pros do as much integration testing as possible they make their friends, DJS, their mom and their cat hear the mix all the time because they know they are not objective about how it translates in the real world. 11. There’s more but my head is drawn a blank.. - [#codemusic](https://osherove.com/blog/tag/codemusic) --- title: "Two new Online Courses: Effective Total Command and FinalBuilder Training Videos" url: "https://osherove.com/blog/2015/1/30/two-new-online-courses-effective-total-command-and-finalbuil.md" canonical: "https://osherove.com/blog/2015/1/30/two-new-online-courses-effective-total-command-and-finalbuil.html" published: "2015-01-30T06:50:30" updated: "2015-01-30T06:50:30" tags: [] author: "Roy Osherove" description: "I’m happy to report two new video courses that I just finished recording and publishing two new courses: Automating All the Things with FinalBuilder Commanding Total Commander Both of these are tools that I rave about…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Two new Online Courses: Effective Total Command and FinalBuilder Training Videos By Roy Osherove January 30, 2015 I’m happy to report two new video courses that I just finished recording and publishing two new courses: - Automating All the Things with FinalBuilder - Commanding Total Commander Both of these are tools that I rave about in almost any new windows based dev shop I go to. Most people have at least heard of Total Commander, but never bothered to find out why people like it, even though it looks ugly. But almost nobody heard about FinalBuilder, but those that did, always have this small glitter in their eye, because they know what I mean when I say you can automate pretty much 99% of your problems away with this stuff. Both of these together (coupled with [everything search engine](http://voidtools.com/) and [systeinternals tools](https://technet.microsoft.com/en-us/sysinternals/bb842062.aspx)) are a godsend to anyone who hates repeating themselves.  I hope you find these courses helpful. --- title: "What's new and Changed in the Art of Unit Testing 2nd Edition" url: "https://osherove.com/blog/2014/10/25/whats-new-and-changed-in-the-art-of-unit-testing-2nd-edition.md" canonical: "https://osherove.com/blog/2014/10/25/whats-new-and-changed-in-the-art-of-unit-testing-2nd-edition.html" published: "2014-10-25T16:38:15" updated: "2014-10-25T16:38:15" tags: ["Unit Testing"] author: "Roy Osherove" description: "I still get called out for some things I wrote in the first edition published in 2009. Some people might not be aware there is a 2nd edition out there, or are borrowing old copies. Lots has changed in my thinking about…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What's new and Changed in the Art of Unit Testing 2nd Edition By Roy Osherove October 25, 2014 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 25, 2014; technical details may be outdated. I still get called out for some things I wrote in the first edition published in 2009. Some people might not be aware there is a 2nd edition out there, or are borrowing old copies. Lots has changed in my thinking about unit testing practices since then and was reflected when the 2nd edition was published in 2013. In [this second edition](http://manning.com/osherove2), I added: - Material about constrained versus unconstrained isolation frameworks : specifically those that can fake things like statics and priavte methods. - A new chapter 6 on what makes for a good isolation framework and how frameworks like Typemock work under the covers.  - I no longer use RhinoMocks. Stay away from it. It is dead. At least for now. I use NSubstitute for examples of Isolation Framework Basics, and I also highly recommend FakeItEasy. I am still not crazy about MOQ, for reasons detailed in chapter 6. - I added more techniques to the chapter about implementing unit testing at the organizational level, such as [understanding influence factors](http://www.slideshare.net/royosherove/organizational-influencehacks45min) - There are plenty of _design changes_ in the code I show in the book: - Mostly I stopped using property setters and am mostly using constructor injection.  - Some discussion of SOLID principles is added, but just enough to make it whet your appetite on the subject. - The build related sections of chapter 7 also contain new information. I learned a lot since the first book about build automation and patterns. [It’s the topic of my next book](http://beautifulbuilds.com/). In this book I talk about build pipelines and where unit testing fits in the process. - I recommend against setup methods, and give alternative ideas on getting the same functionality out of your tests.  - I also use newer versions of Nunit so some of the newer Nunit APIs changed in the book( Assert.thorws. vs Assert.Catch, TestCase attributes and more) - In chapter 10, the tools relating to legacy code were updated. - Having worked with Ruby for the past three years along side .NET, I gained more perspective about design and testability arguments, reflected in chapter 11, dedicated only to this topic. - The tools and frameworks appendix was updated with new tools, and old tools were removed. Also, here is a talk I did about it: [Embedded content](https://www.slideshare.net/slideshow/embed_code/16957770) **[A Second Look at Unit Testing by Roy Osherove](https://www.slideshare.net/royosherove/talk-2ndlookunittesting-copy "A Second Look at Unit Testing by Roy Osherove")** from **[Roy Osherove](https://www.slideshare.net/royosherove)** ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Jul 11, 2014 ### [Should you write unit tests or integration tests?](https://osherove.com/blog/2014/7/11/should-you-write-unit-tests-or-integration-tests.html) - Oct 14, 2013 ### [Video - Refactoring and Design Skills for Test Driven Development](https://osherove.com/blog/2013/10/14/video-refactoring-and-design-skills-for-test-driven-developm.html) --- title: "Why The Hell did you move to New Jersey, Roy?" url: "https://osherove.com/blog/2014/10/7/why-the-hell-did-you-move-to-new-jersey-roy.md" canonical: "https://osherove.com/blog/2014/10/7/why-the-hell-did-you-move-to-new-jersey-roy.html" published: "2014-10-07T00:57:36" updated: "2014-10-07T00:57:36" tags: [] author: "Roy Osherove" description: "After two years in amazing Norway, our Scandinavian adventure has been transformed into what I can only call so far as “The New Jersey Experience”. I’m here on an O-1 visa . I’m also open to doing part time training…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why The Hell did you move to New Jersey, Roy? By Roy Osherove October 7, 2014 **Historical article** · Originally published October 7, 2014; technical details may be outdated. After two years in amazing Norway, our [Scandinavian adventure](http://whythefuckdidyoumovetonorway.com/) has been transformed into what I can only call so far as “The New Jersey Experience”. I’m here on an [O-1 visa](http://en.wikipedia.org/wiki/O_visa). I’m also open to doing part time training courses in the area [so contact me](https://osherove.com/contact). The three little boys, my wife and me moved to Tenafly, home of many other Israelis, to stay 20 minutes away from New York City (baby), in a nice and quiet place with (supposedly) good education for the kids. ### Things we missed in Norway that we can easily find here include, but are not limited to:  - Hummus - Places open after 7pm - Actual Tasty Cereal ### Things we miss from Norway now that we’re in the US: - Our wonderful Oslo International School. School here is very strict: just 22 minutes of break a day for a 5 and 7 year old are basically torture. - Law and order - Paying 50$ for a pizza ### Things I plan to pursue while I’m here - Leading awesome technological teams, flow and architectures - Training on the side -  Try my hand at some stand up comedy open mics - Work on making some [electronic music](https://soundcloud.com/royosherove/i-give-her-all-my-love-remix)  - Work on making more online courses (vim is coming!) ### So, why? We couldn’t think of a place more different than Norway, where we will learn things we didn’t even know we didn’t know. [It’s all about ravines](http://onehundredacorns.wordpress.com/2014/06/10/embrace-ravines-and-get-out-of-your-comfort-zone/). Let the games begin! --- title: "New Online Course: Beautiful Builds and Continuous Delivery Patterns" url: "https://osherove.com/blog/2014/7/11/new-online-course-beautiful-builds-and-continuous-delivery-p.md" canonical: "https://osherove.com/blog/2014/7/11/new-online-course-beautiful-builds-and-continuous-delivery-p.html" published: "2014-07-11T08:31:13" updated: "2014-07-11T08:31:13" tags: [] author: "Roy Osherove" description: "I somehow forgot to blog about this, but it’s never too late. My new online course Beautiful Builds and Continuous Delivery patterns is now available and is $25 until the end of this month (July). Here’s the course…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Online Course: Beautiful Builds and Continuous Delivery Patterns By Roy Osherove July 11, 2014 **Historical article** · Originally published July 11, 2014; technical details may be outdated. I somehow forgot to blog about this, but it’s never too late. My new [online course Beautiful Builds and Continuous Delivery patterns is now available](http://buildcourse.osherove.com/) and is $25 until the end of this month (July). Here’s the course description: Ah, _Continuous Delivery_. Everybody and their sister are talking about it, but in real life, nothing is ever as simple as listening to a conference talk about it. - Can you really deploy 20 times a day if you QA department is breathing down your neck that they are using the staging server between 9 and 5? - Are the teams waiting for each other to finish their work , creating bottlenecks? - Is security threatening to have you fired for even suggesting you deploy to production? In this course Roy Osherove, author of the books “[Beautiful Builds](https://leanpub.com/build)” (still in progress, actually) and “[The Art of Unit Testing](http://artofunittesting.com/)”, discusses common problems and solutions (patterns!) during build automation and continuous delivery. We start from the basics, defining the differences between automated builds and CI, separation of concerns in build management, and then move on to more advanced things such as making builds faster using artifacts, solving versioning issues with snapshots, cross-team dependencies, and much more. - All videos are both streamable AND downloadable to watch offline, no DRM. More info at [beautifulbuilds.com.](http://beautifulbuilds.com/) --- title: "Should you write unit tests or integration tests?" url: "https://osherove.com/blog/2014/7/11/should-you-write-unit-tests-or-integration-tests.md" canonical: "https://osherove.com/blog/2014/7/11/should-you-write-unit-tests-or-integration-tests.html" published: "2014-07-11T08:22:51" updated: "2014-07-11T08:22:51" tags: ["Unit Testing"] author: "Roy Osherove" description: "I got this question in the mail. I thought it was quite valid for many other people: Question: Trying to promote unit tests in a new work place: the “search” action from the UI goes through IOC container which calls a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Should you write unit tests or integration tests? By Roy Osherove July 11, 2014 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published July 11, 2014; technical details may be outdated. I got this question in the mail. I thought it was quite valid for many other people: ### Question: Trying to promote unit tests in a new work place: the “search” action from the UI goes through IOC container which calls a WCF service, where the search itself is done using entity framework auto generated code. My colleague claims that due to the multiple dependencies, it doesn’t make sense to fake everything when running the unit test, and it makes more sense to do integration tests in this case. Is my hunch correct? Should I put efforts into implementing unit tests in this complex scenario? ### My Answer: You can go either way. It really depends on time tradeoffs 1. How long will it take to write the tests? For integration tests you will have to wait until the whole system is complete to get the tests even failing, unless you start from a webpage, and then they will fail for as long as the entire system of layers is not built. 2. How long does it take to run and get feedback? integration tests take longer to run usually. and are more complicated to setup. But when they pass you get a good sense of confidence that all the parts work nicely with each other. with unit tests you will get faster feedback, but you will still need those integration tests for full system confidence. On the other hand with integration tests and no unit tests the developers will have to wait in long cycles before they know if they broke something. There is no one answer. I usually do a mix of both. For web systems I might even start with acceptance tests that fail, and then fill the system slowly with unit tests for parts of the features with more focused functionality.  I guess you can change the question to : **What type of tests should we write FIRST?** Only you know that. it changes for every project and system. ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Oct 25, 2014 ### [What's new and Changed in the Art of Unit Testing 2nd Edition](https://osherove.com/blog/2014/10/25/whats-new-and-changed-in-the-art-of-unit-testing-2nd-edition.html) - Oct 14, 2013 ### [Video - Refactoring and Design Skills for Test Driven Development](https://osherove.com/blog/2013/10/14/video-refactoring-and-design-skills-for-test-driven-developm.html) - Jun 4, 2013 ### [Ugly Code Means Your Product Used to be Successful](https://osherove.com/blog/2013/6/4/ugly-code-means-your-product-used-to-be-successful.html) --- title: "Why I stopped selling courses on udemy" url: "https://osherove.com/blog/2014/5/7/why-i-stopped-selling-courses-on-udemy.md" canonical: "https://osherove.com/blog/2014/5/7/why-i-stopped-selling-courses-on-udemy.html" published: "2014-05-07T20:36:55" updated: "2014-05-07T20:36:55" tags: [] author: "Roy Osherove" description: "The Udemy Pyramid Scheme. I’ve run several successfull courses on udemy (update: I’ve moved my courses over here now) back when they had a royalty rate of 90% revenue share per course. Then things started to change, to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why I stopped selling courses on udemy By Roy Osherove May 7, 2014 **Historical article** · Originally published May 7, 2014; technical details may be outdated. ### The Udemy Pyramid Scheme. I’ve run several successfull courses on [udemy](http://udemy.com/)  (update: I’ve moved my courses over here now) back when they had a royalty rate of 90% revenue share per course.   Then things started to change, to the point where teaching in udemy to me feels like trying to win in a pyramid scheme.  Here are the “new” revenue share model numbers: [http://support.udemy.com/knowledgebase/articles/277758-instructor-revenue-share](http://support.udemy.com/knowledgebase/articles/277758-instructor-revenue-share) Quoting: - 100% revenue share on students that instructors bring to Udemy - 50% revenue share on students that Udemy brings to an instructor’s course - 25% revenue share on students that are driven by Udemy paid ads end quote. Seems fair. Until you realize, the hard way, that any exiting udemy user that takes your courses that YOU didn’t bring in with your specific course codes and discounts, counts as a 50% revenue share. ### Points of consideration: 1. There is a finite number of people who might be interested in your course 2. There is a high chance that many of them have already signed up for udemy 3. Of those who haven’t yet signed up to udemy, you have to bring in and make them use you special offer codes. Only then do you get 100% of that course’s revenue. 4. Once you did that, you basically screwed over other course instructors, because your student will now and forever be considered a 50% revenue share for all other teachers. 5. That means that I benefit and make money at the large expense of other teachers on udemy, while making udemy much, MUCH more money in the long run. 6. The earlier I started with my courses on udemy, the more chances I have to get into udemy those users who have not signed up to udemy yet. The later i sign on to teach in udemy, the smaller my chances are ever making more than 50% revenue share, unless I bring my own crowd. 7. Consider this: for each student on udemy, udemy makes 50% commission on all their purchases, EXCEPT one instructor. 8. Eventually, there will be less and less chances for ALL instructors ot make ore than 50% revenue on courses, as the student population targeted has already signed up. any students that UDEMY brings to the table with ads, will actually only get you 25% revenue share. 9. This whole idea pits the teachers one against the other, to see who gets "fresh" users first, thus taking them “away” from other teachers. That’s not healthy. So I opened [my own shop](http://shop.osherove.com/) on shopify and the later moved it to teachable and at least now I don’t feel like I’m screwing over anybody else. At shopify I paid more than 100$ a month for some of the plugins etc. At teachable the terms are closer to a 80-20 share. But I do have enough people on twitter and I’m well known enough in some corners that it pays me OK.  I don’t like doing it, but it feels better. If they went back to the old model I’d probably go back to them, honestly. ### When udemy sent me an email asking why I haven’t been selling any courses, here was my answer: > “Hi Roy, > > I saw that you drove almost $4,000 to your Udemy courses between Nov-Dec 2013 with instructor coupon codes and haven’t driven any additional income since then. I just wanted to send you a note to find out what we can improve to help you continue building your business on Udemy. > > Would you mind providing a little insight? > > 1) How did you drive your initial Udemy course sales? > > 2) Why did you stop promoting your Udemy courses? > > 3) What do you need to restart promoting your courses? > > I appreciate any feedback you can provide! And if you’d like to schedule time to chat, I’m available. Just let me know. :) > > Regards,….“ ### My answer: > “I stopped because your new royalty model (50% if existing user) is basically a pyramid scam. And it feels unfair. By bringing in new users I make sure I get more royalties, but I also screw the royalties for other authors. Also, there is a limited number of people who are interested in a specific subject, so only early risers will get their full royalty. It feels wrong. I was very happy with the previous model of a flat rate royalty, but this one has me looking for alternatives. “  Needless to say, they didn’t reply yet.  **I would recommend that you stay away from teaching on udemy. it feels unethical.** --- title: "Photo and Video Backup Strategy: Why I am not likely to ever lose my family photos and videos from the last 10 years in the next 10 years." url: "https://osherove.com/blog/2014/1/28/photo-and-video-backup-strategy-why-i-am-not-likely-to-ever.md" canonical: "https://osherove.com/blog/2014/1/28/photo-and-video-backup-strategy-why-i-am-not-likely-to-ever.html" published: "2014-01-28T18:34:58" updated: "2014-01-28T18:34:58" tags: [] author: "Roy Osherove" description: "Here is the way I backup my photos> First I use dropbox for “immediate” backup of the last month Then I use PictureLife as a full backup and viewing service Then I use Amazon Glacier for “cold storage” For my stuff I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Photo and Video Backup Strategy: Why I am not likely to ever lose my family photos and videos from the last 10 years in the next 10 years. By Roy Osherove January 28, 2014 **Historical article** · Originally published January 28, 2014; technical details may be outdated. Here is the way I backup my photos> - First I use dropbox for “immediate” backup of the last month - Then I use PictureLife as a full backup and viewing service - Then I use Amazon Glacier for “cold storage” - For my stuff I sell I use Amazon S3 Here is my system. ## Dropbox : First Line of Backup My wife and I take most of our photos on our phones, so we have dropbox installed on our phone with automatic uploads. Every time we get to a wifi spot, the phone “calls home” to dropbox to upload the latest and gratest photos and family videos we have taken. I have my own dropbox account with 100 GB on it. My wife has a separate, free dropbox account. My wife has shared her “Camera Uploads” dropbox folder with me. She also has auto upload enabled. Dropbox also automatically supports multiple versions up to a point, for the same file, so even if we get our files encrypted by that awful virus, we can restore them by version. I hope. ### Cost: $10 a month for the pro plan ## PictureLife: 2nd Line of Backup with Browsing I pay for a standard picturelife plan, so I can always browse all our pics and videos on my phone, ipad and more. I chose picturelife because it supported videos. Lately other services have added that possibility as well. We have picturelife installed on all our family PCs and phones. On the PCs it is set to look for stuff in the camera uploads and the shared camera uploads folder from my wife. Yes, we upload the same pics multiple times, but picturelife seems to be mostly smart enough to tell if the same picture has been uploaded multiple times and keeps only a single copy. sometimes we get two \*especially if we get any pictures from what’sApp. This is still not a solved problem.. If we do take pictures with other camera, we just put the SD card in the laptop slot and let dropbox import everything into the camera uploads folder. From there everything gets synced to picturelife. ### Cost: $15 a month for up to 300GB ## Glacier: Cold Storage We have two “family computers: in the house. One of the main media center windows machine with 1TB hard drive on it, and it is connected to my dropbox account. That means it also gets all of mine and my my wife’s photos since she has a shared folder with me. Every one a month or two, I zip up al the files on that machine’s camera uploads and “camera uploads from my wife”’s folder and upload them to amazon glacier. the zip file is named with a date range for example jan24-feb25-2013.zip . Once the glacier upload is done (I use fastglacier for a speedy upload) I can safely delete the photos from dropbox, so that I do not pass the 100 GB limit (we have lots of videos). No virus will have access to those files. I also have a copy of all these files in two other glacier regions, just in case. the cost are extermly low. Much better than S3. ### Cost: about $10 a month for around 300GB so far ## Amazon S3: Quick access for my work I have all the video files for [all my courses](http://skills.osherove.com/) backup to both S3 and Glacier. S3 is good because I host some of them for the blog and sometimes I need to get them to upload stuff to my shop. So I have two online backups for my large video files. S3 costs more, so I make sure to keep stuff there without the **redundancy** options, which is much cheaper ### I have LOTS of data on S3 so I get around $40 per month in costs.. ## Final Words I don’t rely on a single service to stay up. And I always have full access to everything from the last ten years. ### Total cost for managing all my files ever:  $65-$75 a month. Your costs might be $40 lower since you might not need S3 if you are not keeping professional grade work for quick retrieval. --- title: "Fifteen things I look for in an Isolation framework" url: "https://osherove.com/blog/2013/11/23/fifteen-things-i-look-for-in-an-isolation-framework.md" canonical: "https://osherove.com/blog/2013/11/23/fifteen-things-i-look-for-in-an-isolation-framework.html" published: "2013-11-23T12:38:13" updated: "2013-11-23T12:38:13" tags: [] author: "Roy Osherove" description: "Is the framework strict or non strict by default? Hopefully non strict. Is everything called a mock? Hopefully not. a fake? mock/stub differentiation? Does it have recursive fakes? Hopefully. How good are the error…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Fifteen things I look for in an Isolation framework By Roy Osherove November 23, 2013 **Historical article** · Originally published November 23, 2013; technical details may be outdated. 1. Is the framework strict or non strict by default? Hopefully non strict. 2. Is everything called a mock? Hopefully not. a fake? mock/stub differentiation? 3. Does it have recursive fakes? Hopefully. 4. How good are the error messages? 5. What is the test style? record replay?arrange-assert-act? arrange-act-assert? hopefully the latter. 6. How simple are the matchers for expected parameters to write?  7. How easily can you create a mock logger that expects a string containing X at least once? 8. How easily can you create a stub logger that simulates an exception, and a mock service that gets a message containing string if the logger throws. (\[as specified here\]) 9. Is the framework constrained or unconstrained? Important to know what it can and cannot do. 10. Does stubbing a return value feel like setting an expectation? Hopefully not. 11. When you verify - can you verify only a single specific call? hopefully. or do you have to verify all? 12. Could you verify all if you wanted? hopefully not. 13. Does the framework verify by default ? hopefully not. 14. Does the framework encourage to verify all in the teardown? hopefully not. 15. How easily can you verify you got an object with some properties or attributes? --- title: "Looking for a new adventure and challenging work in 2014" url: "https://osherove.com/blog/2013/10/20/looking-for-a-new-adventure-and-challenging-work-in-2014.md" canonical: "https://osherove.com/blog/2013/10/20/looking-for-a-new-adventure-and-challenging-work-in-2014.html" published: "2013-10-20T12:26:46" updated: "2013-10-20T12:26:46" tags: [] author: "Roy Osherove" description: "TLDR; If you think I would be useful to your company in the US or in Europe as an Architect, Team Leader, Senior Developer, CTO, Trainer or any other role where I can make a real difference - maybe we can work together,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Looking for a new adventure and challenging work in 2014 By Roy Osherove October 20, 2013 **Historical article** · Originally published October 20, 2013; technical details may be outdated. ## TLDR; If you think I would be useful to your company in the US or in Europe as an **Architect, Team Leader, Senior Developer, CTO, Trainer** **or any other role** where I can make a real difference - maybe we can work together, starting around summer 2014. Due to visa issues we know this takes a while to get going, so we are starting the search early.  [Here is my CV](http://cv.osherove.com/)  I will be in the US (Omaha and New York) during November, and that would be a good time for me to drop by and interview with potential employers. [Contact me.](https://osherove.com/contact) ## More information: In the summer of 2014 my family and me will have spent two years in Norway. It was always about the adventure, and now it’s time to move to a warmer place, and seek new adventure, while the kids are still young enough so that such a move will not be too much of a burden on them. I do love working at my current job at [ITVerket](http://www.itverket.no/), and the project is very rewarding and interesting, but my wife is going crazy not being able to find a job here (due to lack of Norwegian) and next year the international school costs here will just be too high for us. So before the summer comes, I need a place to move to, with a job where I can make a difference. I am looking for work opportunities in places warmer and different from Norway (not Israel. There’s always that option..).  The ideas is to move and live somewhere another two years, or maybe more if we can financially see it being worth it (financially, Norway was very challenging, to put it mildly). If you think I would be useful to your company as an Architect, Team Leader, Senior Developer, CTO or any role where I can make a real difference - maybe we can work together. [Here is my CV](http://cv.osherove.com/) I will be in the US (Omaha and New York) during November, and that would be a good time for me to drop by and interview with potential employers. [Contact me.](https://osherove.com/contact) I do come with a package. I am married with three little boys. We currently live in Norway and that’s where we will be relocating from. ## Places we would love to move to: - US - Austin, TX - Miami - New York/NJ area - Other places with a thriving tech community and reasonably warm weather (My wife is tired of the norwegian winter we’re about to go through again). - Austraila - Canada - Vancouver (yeah, less warm, but we hear is a great place to live with a lively population) - London - Again, not too warm, but I was there a couple of weeks ago and it looks like a great and lively place to work and live. - France - Hawaii? - Anywhere that feels like a Caribbean island - Anywhere else that we should think of and did not! [Contact me.](https://osherove.com/contact) --- title: "$11,000" url: "https://osherove.com/blog/2013/10/18/11000.md" canonical: "https://osherove.com/blog/2013/10/18/11000.html" published: "2013-10-18T13:34:52" updated: "2013-10-18T13:34:52" tags: [] author: "Roy Osherove" description: "That is what I earned on my book for software team leaders before it was even finished. This august I finished writing and publishing my first self-published book. Last month I got done adding a print and an audio…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # $11,000 By Roy Osherove October 18, 2013 **Historical article** · Originally published October 18, 2013; technical details may be outdated. That is what I earned on my [book for software team leaders](https://leanpub.com/teamleader) before it was even finished. This august I finished writing and publishing my first self-published book. Last month I got done adding a print and an audio edition of that book. So far, two months after finishing the book, I have netted almost $14,000 from the book in ebook, print and audio formats. It sold around 1,500 copies. That averages almost $10 per copy sold, and I sold more than half of them at a very large discount. It was an interesting experiment, and I would like others to know how I did it in a way that worked for me. I [previously wrote one other pretty successful](http://artofunittesting.com/) (at least in the Microsoft niche) book about unit testing, through a “standard” publisher (Manning). In the next month, the second edition of my book with manning will appear, and I am looking at the numbers deciding whether the self publishing experiment was worth it. So far, it has. I can already say that I made more on my book before it came out, than I had made with a traditional publisher after 6 years. That is because with a traditional publisher you might end up getting 2-4$ per copy sold, once a quarter, while the way I sold it I got about 20$ for each copy, monthly. ## A four year old blog The work on the self published book started four years ago, with [a simple blog](http://5whys.com/) about the topics I cared about. Every time I had something to say to a team leader, I blogged it there. I knew I would then use the best ideas from my blog in an eventual book. This process keeps repeating for me. My [first book](https://www.amazon.com/exec/obidos/ASIN/1933988274/iserializable-20) was based on a [blog started five years earlier](https://osherove.com/blog). And I am planning another [book about a different topic](http://speakernotes.org/) ### ISBN: AN ISBN can be costly if you live in the US. But [I live in Norway](http://whythefuckdidyoumovetonorway.com/). So that\`s free. You just ask nicely by email. I also made my publisher name “Team Agile Publishing” registered in Norway. Free too. Ebook: So what does an author with a passion for agility and lean thinking do when they write a book? They look for a way to write a book the same way. I used [Leanpub.com](https://leanpub.com/) to write my book and actually start selling it before it was done. In fact, one nice feature you can do with that site is that you can declare you want to write a book, write out a description, and ask people to check it out. Visitors can mark on the page what they would have paid for such a book, and that can help you gauge whether you might make any money writing that book. It is pure lean market research, but you still have to get the people into that page, which is where my blog and twitter came in handy. When I started writing it, I published a couple of chapters and immediately declared it available for sale. Yes, there were typos, and grammar issues. But I believe in deploying less than perfect and see what sticks, because that gives me a motive to keep working at something and make it better. Because I could change the price whenever I wanted immediately, I started off selling the book for 3$, with the leanpub promise that purchasers always get the latest versions of the book as I update them on leanpub. That means early adopters will end up with the full book for 3$. The more chapters I added, the more I added to the price. Most the money from the book was made before it was even published. I was able to do this because I have amassed a bit of an audience through my long time blog and previous book. That means about 8,000 RSS blog readers and 10,000+ twitter followers that knew about my book while I was writing it. While writing it, I also continuously wrote a blog about the ideas in that book at [5whys.com](http://5whys.com/) .  **Profit from Leanpub so far:  13,890$** [![image](https://osherove.com/img/sq/03286897-WindowsLiveWriter-eac5b6fcce09_D9F7.png)](https://osherove.com/s/files/WindowsLiveWriter-eac5b6fcce09_D9F7.png) ## Editing For copyediting, proofing and spelling I used a combination of people I know from the publishing industry, which I paid to with paypal, and asking the readers of my blog to be beta reviewers of the book in exchange for a free copy. **Cost of editing: about 250$** if you do not count about 200 free copies given away. ## Book Cover To design the cover of the book I used [99designs.com](http://99designs.com/) and was quite happy. **Design cost? about 350$** After designing several covers there, I would recommend opening contests for $500 or more so that you get the really top tier designers there interested. [Here is  a great cover I got for that price](https://leanpub.com/wtfnorway). ## Amazon: When my book was done I published it [on amazon kindle](https://www.amazon.com/gp/product/B00EP03O5Y?ie=UTF8&camp=213733&creative=393177&creativeASIN=B00EP03O5Y&linkCode=shr&tag=iserializable-20&sr=1-1-catcorr&qid=1381181101) (LeanPub generates a file you can just upload) through the KDP program. ## Audio Book: I first tried to record the audio book on my own. I felt like I could do it because I do a lot of speaking, but it was just not cutting it. [So I went on voices.com](http://voices.com/) and found within a day the narrator I wanted ([Gorde Edland](http://nostalgicvoice.com/)). Gorde also formatted the mp3 files and I ended up making the itunes file  using [AudioBook Builder](http://www.splasm.com/audiobookbuilder/) **(cost: 5$)**  I then published the audio book first on [gumroad.com](http://gum.co/TeamLeader) **Narration and production Cost? 1650$** **Profit so far: 1679$**      since august 17th: **cost repaid in two months** [![image](https://osherove.com/img/sq/03288387-WindowsLiveWriter-eac5b6fcce09_D9F7.png)](https://osherove.com/s/files/WindowsLiveWriter-eac5b6fcce09_D9F7-1.png) I then tried to find a way to put [the book on Audible.com](http://www.audible.com/pd/Science-Technology/Notes-to-a-Software-Team-Leader-Audiobook/B00FASCIVG/ref=sr_1_1?qid=1382122673&sr=1-1). That is NOT an easy task if you live outside the United states and do not have at least five audio books to sell. Turns out you can find, here and there, publishers that will do audible distribution for you, and only take a small cut of sales. I tried going through [vook.com](http://vook.com/) and a couple of other places but ended up choosing [Spoken Word](http://spokenwordinc.com/books/). They were the quickest to return my email and I did not need all the marketing extra work that vook offered. I still do not have any numbers on how much audible sold. It takes at least three-four months to find out, and then another month to get money from that. That sucks. But any money I make on the audio book now is “free money”. ## Print Book: I chose [CreateSpace.com](http://createspace.com/) to print the book and have [a print edition available on amazon](https://www.amazon.com/gp/product/829993320X?ie=UTF8&camp=213733&creative=393177&creativeASIN=829993320X&linkCode=shr&tag=iserializable-20&qid=1381181101&sr=1-1-catcorr). so far the reports show 10 print copies being sold (I still have not emailed my mailing list of several thousands that the print book exists). To layout the book cover for createspace **cost me about 50$** through a contact I made in the book business **to try out and ship to me a couple of proofs of the final print cost me less than 25$** **Profit so far: About 130$** [![image](https://osherove.com/img/sq/03289067-WindowsLiveWriter-eac5b6fcce09_D9F7.png)](https://osherove.com/s/files/WindowsLiveWriter-eac5b6fcce09_D9F7-2.png) ## Marketing I do very little marketing, and it is mostly on my blog and twitter, in the form of sidebar links from my various websites. I pay **13$** a month to [hellobar.com](http://hellobar.com/) for the top bar of this website which I can easily change and applies to all my other websites as well. I am now experimenting with facebook ads for the book. it cost me less than 10$ to get about 35 clicks and about 3 sales of the book after two days of that starting out. Still playing with that. I use [madmimi.com](http://madmimi.com/) to maintain an email list of people interested, which I got for free because I used to work there. ## Overall : net profit of $13,815 within two months of book publishing in a niche area. [![image](https://osherove.com/img/sq/03291047-WindowsLiveWriter-eac5b6fcce09_D9F7.png)](https://osherove.com/s/files/WindowsLiveWriter-eac5b6fcce09_D9F7-3.png) --- title: "Refactoring and Design Skills for Test Driven Development" url: "https://osherove.com/videos/2013/10/16/refactoring-and-design-skills-for-test-driven-development.md" canonical: "https://osherove.com/videos/2013/10/16/refactoring-and-design-skills-for-test-driven-development.html" published: "2013-10-16T10:26:28" updated: "2013-10-16T10:26:28" tags: [] author: "Roy Osherove" description: "Last week I presented a keynote and a talk at the London Software Architect conference. Here is the video I recorded from my laptop during my talk about refactoring. I hope you find it useful. Play video Refactoring and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Refactoring and Design Skills for Test Driven Development By Roy Osherove October 16, 2013 **Historical article** · Originally published October 16, 2013; technical details may be outdated. Last week I presented a keynote and a talk at the [London Software Architect conference.](http://software-architect.co.uk/) Here is the video I recorded from my laptop during my talk about refactoring. I hope you find it useful. [![](https://osherove.com/img/video/yt-9ZSbuwCmwuc.jpg)Play videoRefactoring and Design Skills for Test Driven Development SA2013](https://www.youtube.com/watch?v=9ZSbuwCmwuc) --- title: "Video: Unit Testing and TDD – Why You Should Care and How to Make It Happen" url: "https://osherove.com/videos/2013/10/16/video-unit-testing-and-tdd-ndash-why-you-should-care-and-how.md" canonical: "https://osherove.com/videos/2013/10/16/video-unit-testing-and-tdd-ndash-why-you-should-care-and-how.html" published: "2013-10-16T10:25:20" updated: "2013-10-16T10:25:20" tags: [] author: "Roy Osherove" description: "A few weeks ago I spent a few days in Germany and got the opportunity to speak at the siemens healthcare testing conference. I talked about why we usually fail to introduce new paractices into an organization and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: Unit Testing and TDD – Why You Should Care and How to Make It Happen By Roy Osherove October 16, 2013 **Historical article** · Originally published October 16, 2013; technical details may be outdated. A few weeks ago I spent a few days in Germany and got the opportunity to speak at the siemens healthcare testing conference. I talked about why we usually fail to introduce new paractices into an organization and explained influence forces and how our own estimates prevent us from doing the things we believe. Here is the video: [![](https://osherove.com/img/video/yt-3_UX8Kqb3aU.jpg)Play videoUnit Testing and TDD: Why you should care and how to make it happen](https://www.youtube.com/watch?v=3_UX8Kqb3aU) --- title: "Video: Unit Testing and TDD – Why You Should Care and How to Make It Happen" url: "https://osherove.com/blog/2013/10/16/video-unit-testing-and-tdd-ndash-why-you-should-care-and-how.md" canonical: "https://osherove.com/blog/2013/10/16/video-unit-testing-and-tdd-ndash-why-you-should-care-and-how.html" published: "2013-10-16T10:23:29" updated: "2013-10-16T10:23:29" tags: [] author: "Roy Osherove" description: "A few weeks ago I spent a few days in Germany and got the opportunity to speak at the siemens healthcare testing conference. I talked about why we usually fail to introduce new paractices into an organization and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: Unit Testing and TDD – Why You Should Care and How to Make It Happen By Roy Osherove October 16, 2013 **Historical article** · Originally published October 16, 2013; technical details may be outdated. A few weeks ago I spent a few days in Germany and got the opportunity to speak at the siemens healthcare testing conference. I talked about why we usually fail to introduce new paractices into an organization and explained influence forces and how our own estimates prevent us from doing the things we believe. Here is the video: [![](https://osherove.com/img/video/yt-3_UX8Kqb3aU.jpg)Play videoUnit Testing and TDD: Why you should care and how to make it happen](https://www.youtube.com/watch?v=3_UX8Kqb3aU) --- title: "Video - Refactoring and Design Skills for Test Driven Development" url: "https://osherove.com/blog/2013/10/14/video-refactoring-and-design-skills-for-test-driven-developm.md" canonical: "https://osherove.com/blog/2013/10/14/video-refactoring-and-design-skills-for-test-driven-developm.html" published: "2013-10-14T17:54:10" updated: "2013-10-14T17:54:10" tags: ["Unit Testing", "video"] author: "Roy Osherove" description: "Last week I presented a keynote and a talk at the London Software Architect conference. Here is the video I recorded from my laptop during my talk about refactoring. I hope you find it useful. Play video Refactoring and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video - Refactoring and Design Skills for Test Driven Development By Roy Osherove October 14, 2013 In [Unit Testing](https://osherove.com/blog/category/unit-testing), [video](https://osherove.com/blog/category/video) **Historical article** · Originally published October 14, 2013; technical details may be outdated. Last week I presented a keynote and a talk at the [London Software Architect conference.](http://software-architect.co.uk/) Here is the video I recorded from my laptop during my talk about refactoring. I hope you find it useful. [![](https://osherove.com/img/video/yt-9ZSbuwCmwuc.jpg)Play videoRefactoring and Design Skills for Test Driven Development SA2013](https://www.youtube.com/watch?v=9ZSbuwCmwuc) ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Oct 25, 2014 ### [What's new and Changed in the Art of Unit Testing 2nd Edition](https://osherove.com/blog/2014/10/25/whats-new-and-changed-in-the-art-of-unit-testing-2nd-edition.html) - Jul 11, 2014 ### [Should you write unit tests or integration tests?](https://osherove.com/blog/2014/7/11/should-you-write-unit-tests-or-integration-tests.html) - Jun 4, 2013 ### [Ugly Code Means Your Product Used to be Successful](https://osherove.com/blog/2013/6/4/ugly-code-means-your-product-used-to-be-successful.html) - Apr 10, 2013 ### [April 18: Refactoring and Design Skills for Test Driven Development Workshop](https://osherove.com/blog/2013/4/11/april-18-refactoring-and-design-skills-for-test-driven-devel.html) --- title: "Looking for promising .NET developers for my current project" url: "https://osherove.com/blog/2013/10/3/looking-for-promising-net-developers-for-my-current-project.md" canonical: "https://osherove.com/blog/2013/10/3/looking-for-promising-net-developers-for-my-current-project.html" published: "2013-10-03T12:31:36" updated: "2013-10-03T12:31:36" tags: [] author: "Roy Osherove" description: "I am currently in Norway, Oslo area, and involved in a very interesting project. Both architecturally and in terms of teams and cross communication of a big product. We are looking for good .NET developers to join, who…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Looking for promising .NET developers for my current project By Roy Osherove October 3, 2013 **Historical article** · Originally published October 3, 2013; technical details may be outdated. I am currently in Norway, Oslo area, and involved in a very interesting project. Both architecturally and in terms of teams and cross communication of a big product. We are looking for good .NET developers to join, who I can then pair with and coach when they join. If you are interested in joining the company, and live in Scandinavia, please contact me to email  **roy at osherove.com**.(no remote work) --- title: "New Online Course: TDD and BDD in Ruby" url: "https://osherove.com/blog/2013/9/15/new-online-course-tdd-and-bdd-in-ruby.md" canonical: "https://osherove.com/blog/2013/9/15/new-online-course-tdd-and-bdd-in-ruby.html" published: "2013-09-15T11:34:55" updated: "2013-09-15T11:34:55" tags: ["BDD", "course", "udemy"] author: "Roy Osherove" description: "If you are just coming into the Ruby community, you might think “man; everyone here does unit testing and TDD already”. But the truth is, that is very far from reality. Most people in Ruby seem to talk the talk, but…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Online Course: TDD and BDD in Ruby By Roy Osherove September 15, 2013 In [BDD](https://osherove.com/blog/category/bdd), [course](https://osherove.com/blog/category/course) **Historical article** · Originally published September 15, 2013; technical details may be outdated. If you are just coming into the Ruby community, you might think “man; everyone here does unit testing and TDD already”. But the truth is, that is very far from reality. Most people in Ruby seem to talk the talk, but very few that I’ve seen actually walk the walk. Yes, many of them do have tests, but very few do things test driven. It’s just very difficult without a guiding hand sometimes. So many developers slack off and write the tests after. [![](https://osherove.com/img/sq/1000w-rubytdd_small.png)](http://rubytdd.osherove.com/) Worst, many developers do not know how to write anything but integration tests. There is lots of good stuff in integration tests, but they can also be very slow for a good feedback cycle. Unit testing is necessary to learn, and doing things test driven can make you more productive in the long run (I discuss some numbers during the course). **YOU DO NOT NEED ANY PREVIOUS UNIT TESTING EXPERIENCE.** I will teach you from zero how to write your first unit test with RSpec (and why RSpec) , all the way to making you a master of the craft with mock objects, stubs, and how to choose an isolation (mocking) framework. You will also learn about making a continuous delivery solution and some patterns for getting started with a project on the right path. - [#udemy](https://osherove.com/blog/tag/udemy) ## More in BDD [All posts in BDD](https://osherove.com/blog/category/bdd) - Oct 4, 2008 ### [BDD: Behavior vs. Spec Frameworks](https://osherove.com/blog/2008/10/4/bdd-behavior-vs-spec-frameworks.html) --- title: "Book & Audio Book: Notes to a Software Team Leader" url: "https://osherove.com/blog/2013/8/19/book-audio-book-notes-to-a-software-team-leader.md" canonical: "https://osherove.com/blog/2013/8/19/book-audio-book-notes-to-a-software-team-leader.html" published: "2013-08-19T14:32:46" updated: "2013-08-19T14:32:46" tags: ["book"] author: "Roy Osherove" description: "If you are a software team leader, architect, scrum master or project leader, you might be interested in the book Notes to a Software Team Leader which I have just finished. The book contains important techniques and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Book & Audio Book: Notes to a Software Team Leader By Roy Osherove August 19, 2013 In [book](https://osherove.com/blog/category/book) **Historical article** · Originally published August 19, 2013; technical details may be outdated. If you are a software team leader, architect, scrum master or project leader, you might be interested in the book [Notes to a Software Team Leader](http://teamleadskills.com/) which I have just finished. [![](https://osherove.com/img/sq/1000w-STL.jpg)](http://teamleadskills.com/) The book contains important techniques and notes from some of the most thought provoking leaders in IT these days: Uncle Bob Martin, Dan North, Johanna Rothman, Kevlin Henney and many more. Now, you can also listen to the book on your iPhone or Android. I had the book professionally narrated. You can listen to a sample of how it sounds on the audio book link below. The book is available in two formats:  \* [An ebook](http://teamleadskills.com/)  \* [An Audio book](http://gum.co/TeamLeader) (4+ hours) Here is what it sounds like: [Embedded content](https://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F104936971)   I am also running workshops on team leadership in software. Here are some of my upcoming stuff: - [Lead Better Workshop](http://www.foocafe.org/event/elastic-leadership) - [Beautiful Builds and Build Automation Patterns](http://www.foocafe.org/event/beautiful-builds) - [Refactoring Skills for Test Driven Development](http://www.cornerstone.se/kurser/systemutveckling/net-framework/generell-net-utbildning/refactoring-skills-for-tdd-in-net-and-java) ## More in book [All posts in book](https://osherove.com/blog/category/book) - Jul 28, 2011 ### [How not to do TDD](https://osherove.com/blog/2011/7/29/how-not-to-do-tdd.html) --- title: "Be a Book Reviewer for 'Notes to a Software Team Leader'" url: "https://osherove.com/blog/2013/6/20/be-a-book-reviewer-for-notes-to-a-software-team-leader.md" canonical: "https://osherove.com/blog/2013/6/20/be-a-book-reviewer-for-notes-to-a-software-team-leader.html" published: "2013-06-20T11:52:32" updated: "2013-06-20T11:52:32" tags: [] author: "Roy Osherove" description: "Want a free book ? Willing to review it on Amazon when it is published? Willing to give me valueble feedback? Fill out this form. Loading&#8230;" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Be a Book Reviewer for 'Notes to a Software Team Leader' By Roy Osherove June 20, 2013 **Historical article** · Originally published June 20, 2013; technical details may be outdated. Want [a free book](http://teamleadskills.com/)? Willing to review it on Amazon when it is published? Willing to give me valueble feedback? [Fill out this form.](https://docs.google.com/forms/d/1zCIU-IAJ5ki-k5ptiycgA3-vnnJQQfeGo3szOYdeSYY/viewform) [Embedded content](https://docs.google.com/forms/d/1zCIU-IAJ5ki-k5ptiycgA3-vnnJQQfeGo3szOYdeSYY/viewform?embedded=true) --- title: "Fix: PhantomJs, YSlow and Loadspeed load pages very slowly on windows machines" url: "https://osherove.com/blog/2013/6/10/fix-phantomjs-yslow-and-loadspeed-load-pages-very-slowly-on.md" canonical: "https://osherove.com/blog/2013/6/10/fix-phantomjs-yslow-and-loadspeed-load-pages-very-slowly-on.html" published: "2013-06-10T12:50:52" updated: "2013-06-10T12:50:52" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "I was running into this problem. We were using phantomjs to run speed tests and weight tests for our web pages, and it all worked well on my machine. Then it worked VERY slowly (five times slower!) on the build agent.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Fix: PhantomJs, YSlow and Loadspeed load pages very slowly on windows machines By Roy Osherove June 10, 2013 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published June 10, 2013; technical details may be outdated. I was running into this problem. We were using phantomjs to run speed tests and weight tests for our web pages, and it all worked well on my machine. Then it worked VERY slowly (five times slower!) on the build agent. The fix was simple, once I [single handedly googled it](https://plus.google.com/101758310571303591763/posts/9v9BMCJj2k6). Go to Internet explorer on that machine. - Click **internet Options** - Click **Connections** - Click **Lan Settings** - UNCHECK “**Automatically detect settings**” As an extra measure, you might want to disable IPV6 on the Ethernet adapter. Seems to fix it for some people. ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Jun 25, 2012 ### [HOW TO: Find the temp videos screenflow makes when uploading to vimeo and youtube](https://osherove.com/blog/2012/6/26/how-to-find-the-temp-videos-screenflow-makes-when-uploading.html) - Aug 3, 2008 ### [Before testing an addin - Reset Visual Studio’s previous addin knowledge](https://osherove.com/blog/2008/8/3/before-testing-an-addin-reset-visual-studios-previous-addin.html) --- title: "Coming to America (to do training)" url: "https://osherove.com/blog/2013/6/6/coming-to-america-to-do-training.md" canonical: "https://osherove.com/blog/2013/6/6/coming-to-america-to-do-training.html" published: "2013-06-06T10:44:25" updated: "2013-06-06T10:44:25" tags: ["Agile", "course"] author: "Roy Osherove" description: "After a long standing bureaucratic battle with the US immigration authority , I finally have a visa to come to the US, and it expires DEC 2nd 2013 (in a few months… I know..) I would like to make the most of this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Coming to America (to do training) By Roy Osherove June 6, 2013 In [Agile](https://osherove.com/blog/category/agile), [course](https://osherove.com/blog/category/course) **Historical article** · Originally published June 6, 2013; technical details may be outdated. After a long standing bureaucratic battle with the US immigration authority , I finally have a visa to come to the US, and **it expires DEC 2nd 2013** (in a few months… I know..) I would like to make the most of this ability to come visit the US. Legally I cannot charge a fee for doing training in the US, but I CAN charge for the training materials you will receive. [Here is a list of possible trainings](https://osherove.com/trainingoptions/). I am also happy to add to that **JS Unit Testing And TDD classes, and Ruby TDD and Unit Testing Classes**. I will write more about those later today. So: I am happy to provide **FREE training (only materials cost money)** to companies in the US in this time frame. If you would like me to come over from Oslo, visit for a few days, and do [any of a number of possible training options](https://osherove.com/trainingoptions/), or if you would like to arrange a PUBLIC course somewhere, I am happy to arrange it as quickly as possible. [Contact me](https://osherove.com/contact) (and read [my payment terms](https://osherove.com/terms/)) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Apr 6, 2013 ### [Two workshops on Beautiful Builds, Refactoring and Design Skills](https://osherove.com/blog/2013/4/6/two-workshops-on-beautiful-builds-and-refactoring-and-design.html) - Feb 28, 2012 ### [New Book: Notes to a software team leader](https://osherove.com/blog/2012/2/28/new-book-notes-to-a-software-team-leader.html) --- title: "Ugly Code Means Your Product Used to be Successful" url: "https://osherove.com/blog/2013/6/4/ugly-code-means-your-product-used-to-be-successful.md" canonical: "https://osherove.com/blog/2013/6/4/ugly-code-means-your-product-used-to-be-successful.html" published: "2013-06-04T12:27:04" updated: "2013-06-04T12:27:04" tags: ["Other", "Unit Testing"] author: "Roy Osherove" description: "I have now worked at a bunch of companies, and consulted for quite a few. I have looked at some pretty horrible code. Every company I visit with say the same thing: “Yeah, but our code really sucks. “ It does not suck…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ugly Code Means Your Product Used to be Successful By Roy Osherove June 4, 2013 In [Other](https://osherove.com/blog/category/other), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published June 4, 2013; technical details may be outdated. I have now worked at a bunch of companies, and consulted for quite a few. I have looked at some pretty horrible code. Every company I visit with say the same thing: > “Yeah, but _our_ code _really_ sucks. “ It does _not_ suck any more than other code I have seen. It usually sucks just about as much. Do a thought experiment: Of the ugly code you’ve seen, _when_ was it written? How long has it been alive?  Most of the time, I have seen ugly code that started a good few years ago. I have also worked in companies that practiced TDD and unit testing, and still had ugly code. Their code did NOT start out with unit testing, and was just as untestable and hard to read and lots of the code you see in your own place. If you ‘hack away’ code and it suddenly becomes successful, you hack away even more. and then suddenly, it is 2 years into the product’s life, and now it is becoming increasingly hard to maintain. NOW you also realize your code really sucks, because it was never intended to be a long lived piece of code, it was always a type of experiment to see what would happen; Would people _really_ like it? And then they did, and then there wasn’t enough time except to take money, fix patches and live. And now it’s time to pay all that technical debt, and that is a good thing, because if you find yourself in technical debt,  it means your product has gone through its trial by fire, and now it is growing up to become a real boy. So do not feel bad your code **used** to suck. You’re doing something about it now, right? it was just in its puberty, when you needed to focus your efforts on making sure you’re on the right path. When I am in a startup, I usually do not write tests until I feel that - I know how to build what I am trying to build. - I know customers _really want_ what I want to build. - I know the code I write will live more than a month. Until then, I think of things as a big prototype, but unlike other places, I am not afraid of throwing it away, but I am also not afraid to accept the fact that some hackity crap code will enter during the experimentation process. Does this mean you have permission not to write unit tests? YES, IF the main focus in your head is to get feedback that you are building the right thing. Once you know it is the right thing, not doing automated tests is very foolish. ## More in Other [All posts in Other](https://osherove.com/blog/category/other) - Jul 29, 2007 ### [Hire me for a day: Two Opportunities](https://osherove.com/blog/2007/7/29/hire-me-for-a-day-two-opportunities.html) - Jun 1, 2007 ### [Why I won't be switching to Google RSS Reader](https://osherove.com/blog/2007/6/1/why-i-wont-be-switching-to-google-rss-reader.html) --- title: "Creativity in Coding - Does TDD Leave Room For it?" url: "https://osherove.com/blog/2013/6/3/creativity-in-coding-does-tdd-leave-room-for-it.md" canonical: "https://osherove.com/blog/2013/6/3/creativity-in-coding-does-tdd-leave-room-for-it.html" published: "2013-06-03T12:18:53" updated: "2013-06-03T12:18:53" tags: [] author: "Roy Osherove" description: "“Is there any room left for creativity in coding?” That’s hilarious. Let’s reach back in time… As poets focus more on rhyme schemes and meter, where is there room for creativity? Now they have this new-fangled thing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Creativity in Coding - Does TDD Leave Room For it? By Roy Osherove June 3, 2013 **Historical article** · Originally published June 3, 2013; technical details may be outdated. >  “Is there any room left for creativity in coding?” That’s hilarious. > > Let’s reach back in time… > > As poets focus more on rhyme schemes and meter, where is there room for creativity? Now they have this new-fangled thing called a “sonnet.” It has to be exactly 14 lines long, all in iambic pentameter, with each of the first 3 groups of lines following an abab rhyme scheme, and the final two a rhyming couplet. Is there are any room left for creativity in poetry? > > To ask the question is to demonstrate that one does not understand the industry and the practices one whit. Creativity does not mean undisciplined hacking. Thank you, [TDD Mailing List’s **Russell Gold**](http://tech.groups.yahoo.com/group/testdrivendevelopment/message/35479). --- title: "Videos: Beautiful Builds, and a Second Look at Unit Testing" url: "https://osherove.com/blog/2013/5/17/videos-beautiful-builds-and-a-second-look-at-unit-testing.md" canonical: "https://osherove.com/blog/2013/5/17/videos-beautiful-builds-and-a-second-look-at-unit-testing.html" published: "2013-05-16T23:16:59" updated: "2013-05-16T23:16:59" tags: ["video"] author: "Roy Osherove" description: "While at the msswit conference in the Ukraine, I got to speak on two subjects with the following videos: Beautiful Builds: Maintainable, Coherent Build Processes A Second Look at Unit Testing : what I learned since the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Videos: Beautiful Builds, and a Second Look at Unit Testing By Roy Osherove May 16, 2013 In [video](https://osherove.com/blog/category/video) **Historical article** · Originally published May 16, 2013; technical details may be outdated. While at the msswit conference in the Ukraine, I got to speak on two subjects with the following videos: - [Beautiful Builds:  Maintainable, Coherent Build Processes](http://www.techdays.ru/videos/6834.html) - [A Second Look at Unit Testing](http://www.techdays.ru/videos/6832.html): what I learned since the first edtion of [Art Of Unit Testing](http://artofunittesting.com/) ## More in video [All posts in video](https://osherove.com/blog/category/video) - Oct 14, 2013 ### [Video - Refactoring and Design Skills for Test Driven Development](https://osherove.com/blog/2013/10/14/video-refactoring-and-design-skills-for-test-driven-developm.html) - Mar 22, 2013 ### [TDD Master Class Online: Get Each Day Separately for $59](https://osherove.com/blog/2013/3/22/tdd-master-class-online-get-each-day-separately-for-59.html) - Mar 17, 2013 ### [Can’t attend my five day TDD master class? Buy & Watch it online, recorded live.](https://osherove.com/blog/2013/3/17/canrsquot-attend-my-five-day-tdd-master-class-buy-amp-watch.html) --- title: "Video: A Second Look At Unit Testing" url: "https://osherove.com/videos/2013/5/17/video-a-second-look-at-unit-testing.md" canonical: "https://osherove.com/videos/2013/5/17/video-a-second-look-at-unit-testing.html" published: "2013-05-16T23:14:26" updated: "2013-05-16T23:14:26" tags: ["msswit"] author: "Roy Osherove" description: "While at the msswit Conference in Ukraine, I spoke about all the things I had learned since the first version of my art of unit testing book . lots. You can see the video here." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: A Second Look At Unit Testing By Roy Osherove May 16, 2013 In [msswit](https://osherove.com/videos/category/msswit) **Historical article** · Originally published May 16, 2013; technical details may be outdated. While at the msswit Conference in Ukraine, I spoke about all the things I had learned since the first version of my [art of unit testing book](http://artofunittesting.com/). lots. [You can see the video here.](http://www.techdays.ru/videos/6832.html) ## More in msswit [All posts in msswit](https://osherove.com/videos/category/msswit) - May 16, 2013 ### [Video: Beautiful Builds](https://osherove.com/videos/2013/5/17/video-beautiful-builds.html) --- title: "Video: Beautiful Builds" url: "https://osherove.com/videos/2013/5/17/video-beautiful-builds.md" canonical: "https://osherove.com/videos/2013/5/17/video-beautiful-builds.html" published: "2013-05-16T23:12:12" updated: "2013-05-16T23:12:12" tags: ["msswit"] author: "Roy Osherove" description: "While at the MSSwit conference in Ukraine, I spoke about Beautiful Builds , and common patterns you can use to make your builds more coherent and maintainable. You can view the video here." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: Beautiful Builds By Roy Osherove May 16, 2013 In [msswit](https://osherove.com/videos/category/msswit) **Historical article** · Originally published May 16, 2013; technical details may be outdated. While at the MSSwit conference in Ukraine, I spoke about [Beautiful Builds](http://beautifulbuilds.com/), and common patterns you can use to make your builds more coherent and maintainable. [You can view the video here.](http://www.techdays.ru/videos/6834.html) ## More in msswit [All posts in msswit](https://osherove.com/videos/category/msswit) - May 16, 2013 ### [Video: A Second Look At Unit Testing](https://osherove.com/videos/2013/5/17/video-a-second-look-at-unit-testing.html) --- title: "Beautiful Builds: Release Compilation Step" url: "https://osherove.com/blog/2013/4/23/beautiful-builds-release-compilation-step.md" canonical: "https://osherove.com/blog/2013/4/23/beautiful-builds-release-compilation-step.html" published: "2013-04-22T22:55:48" updated: "2013-04-22T22:55:48" tags: ["Build Bullet"] author: "Roy Osherove" description: "Imagine you could only compile once a week. Once every two weeks. Once a month. Scary? All that code that you write blindly, not knowing whether it even compiles. All those hidden errors lurking, accumulating in the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Beautiful Builds: Release Compilation Step By Roy Osherove April 22, 2013 In [Build Bullet](https://osherove.com/blog/category/build-bullet) **Historical article** · Originally published April 22, 2013; technical details may be outdated. Imagine you could only compile once a week. Once every two weeks. Once a month. Scary? All that code that you write blindly, not knowing whether it even compiles. All those hidden errors lurking, accumulating in the dark. Then, on that special day of compilation, you get to finally find out if you made it. And of course, you most likely did not. Unfortunately, that special compilation day is followed by an even worse day. Demo day. You are supposed to sit down with your customer, or product owner, and show them all the progress you have made to your application. Most times, compilation day goes sour, and you are stuck fixing last minute, last hour, and last night-Compilation issues only to find out that now, the application isn’t working. So there goes demo day. You secretly start wondering if there was a way to ‘break the rules’. A way that you could secretly compile your code — maybe on a daily basis?— and see if you left something out. Hell, why not do it every time you check in your code? or even save it? What if you could \_continuously\_ compile your code? Your life would be so much easier. Not to mention your customer’s life. You could find those compilation errors quickly, and thus fix them quickly while they are still fresh in memory. You could start focusing on that demo now that the code compiles, and see if the app is actually working! Aren’t we lucky that we all already live with that kind of continuous compilation? At least in static languages, we can see if our code ‘checks out’ by the compiler almost instantly. We can write a single line, or even a single code keyword, and see if it works when the reality of the compiler hits. If we are working in a dynamically typed language, like Ruby or Python, we write tests, and we run those tests continuously , so that we get feedback that the code works. Well, some of us do, anyway. A lot of us just \_say\_ we do it, but deep down we know it is lip service. Sometimes we get a ‘fluke’ - we write a function and it fully compiles and runs with no problems with no compilation and debugging errors. That kind of magic doesn’t happen very often though. Things aren’t perfect. Now that we live in this magical world where compilation is continuous, we start to realize we still have problems with our customer’s demos. The demos aren’t working. Well, they are working, but not really. they break and they work only partially. And when we try to fix the functionality problems, we break other functionality. We need testing, or, more precisely, \_automated\_ testing to tell us if our code functions right. Why does it need to be automated though? Because manual testing takes so much time. It’s really a good waste of money to repeat the same regression tests by a human. We should be using humans for tasks with creativity built in, like exploration testing, but we need ‘automated checks’ for regression testing, to keep telling us we didn’t break anything, continuously. So we write some tests, and we run them locally every time we are about to check in the code. things feel better for a while, but then we realize the customer demos are still not really working. “Why would the customer tests not be working \_now\_?” you ask yourself. Turns out, the demos are supposed to be shown on the customer’s machine. The customer’s machine is very different from a developer’s machine. It has weird firewall requirements, it needs active directory permissions to run your application, and the database is shared on a different machine. For you, demo day is also, it turns out, deployment day. Because you deploy before you demo (usually the day before if you are lucky), it means you have one day every week you deploy. Or maybe demo is once every two or three weeks, so you deploy just once every two or three weeks. If you’re lucky. Deployment once a week? Now you spend your week compiling and testing code, but you’re still as blind as a bat. You do not know whether all this code will actually work within the constraints of the customer’s machine. Sure, it works on \_your machine\_, but we all know that doesn’t mean much.You spend all this time writing and polishing your beautiful code, all the while you have no idea whether it will \_fit in\_ with the hard reality of living on a customer’s machine. Demo day comes, and you deploy, and your perfectly working code is shamingly crashing, lagging, stalling and basically acting like an angry child in the middle of a supermarket: Badly. Your demo sucks. And now you can’t get any feedback from the customer. Instead, you have wasted your customer’s time, and some of their hard earned trust. This keeps happening. Some weeks you get things right, some weeks the new pieces of code just don’t fit the configuration. You have to wait a week between demos to find out if the changes you made to your code or configuration files actually work, because, well, _you deploy once a week_. You secretly start wondering what happened if you broke the rules and got your own little machine that looks and acts just like a customer’s machine. If you had that kind of machine locally, you could try and deploy to it on a daily basis, and find out if your code actually works after deployment. If it didn’t you could fix it way before demo day. And then you can use the demos to actually get feedback on the functionality of your application. On second thought, what if you went all out and \_automated\_ the deployment to the fake customer machine? then you could test your deployment continuously! On every check in. Now that would be quite beautiful. Deployment testing is like a compilation step for your release cycle. It verifies that your product, when deployed, can face the harsh realities of a production machine. It should happen continuously, so that you do not find out at the last minute that your code or configuration, is not able to handle the current reality. For deployment testing, you need to create a \_staging\_ environment. This environment mimics the production environment as closely as possible, and it should not be contaminated with compilers, editors or development tools. How do you test your deployment with a staging environment? You run acceptance tests ,and hopefully also all the other automated tests you’ve written, against the application deployed on staging. For example, you could run browser tests (using selenium or capybara — google those) against a web application installed on staging. What happens if you \_do\_ need to debug something that only seems to happen in the staging environment? That’s why you have a ‘test’ environment. think of ‘test’ as ‘staging + debugging tools’. It can be ‘dirty’ in that you can use it to examine things more closely, but in an environment that can simulate real world difficulties. The environment right before ‘test’ is ‘dev-test’. that can either be a developer local machine, or a continuous integration build agent, that usually just compiles and runs automated tests. To me, a beautiful build, is one that encompasses all the levels of confidence we just discussed: Compilation, automated testing, automated deployment, and deployment testing. If possible,I take the next logical step - I also deploy to a production machine in an automated manner - the same code that has passed all the other stages. I, and many others, call this chain ‘Continuous Delivery’. (will be part of my builds book) ## More in Build Bullet [All posts in Build Bullet](https://osherove.com/blog/category/build-bullet) - Feb 7, 2013 ### [Build Pattern: Cumulative Build](https://osherove.com/blog/2013/2/7/build-pattern-adopt-artifacts.html) - Jan 20, 2013 ### [Tests and Builds are Made to be Broken](https://osherove.com/blog/2013/1/20/tests-and-builds-are-made-to-be-broken.html) --- title: "April 18: Refactoring and Design Skills for Test Driven Development Workshop" url: "https://osherove.com/blog/2013/4/11/april-18-refactoring-and-design-skills-for-test-driven-devel.md" canonical: "https://osherove.com/blog/2013/4/11/april-18-refactoring-and-design-skills-for-test-driven-devel.html" published: "2013-04-10T22:10:19" updated: "2013-04-10T22:10:19" tags: ["Unit Testing"] author: "Roy Osherove" description: "When? April 18-19 Where? Oslo How much? 11,900 NOK How to register? Send me an email. The Problem You have been trying to learn TDD, and it’s going pretty well, but your code looks horrible. Your design skills are…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # April 18: Refactoring and Design Skills for Test Driven Development Workshop By Roy Osherove April 10, 2013 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published April 10, 2013; technical details may be outdated. **When?** April 18-19 **Where?** Oslo **How much?** 11,900 NOK How to register? [Send me an email.](https://osherove.com/contact) **The Problem** You have been trying to learn TDD, and it’s going pretty well, but your code looks horrible. Your design skills are lacking, and trying to let TDD drive the design without having design skills can lead to a very problematic, although testable, design of your code. **Objectives** I usually do not focus about design in my TDD courses. I believe that separating the learning about the core skills of Unit Testing, TDD, and Design should be separated so that the learner will not feel overwhelmed. This course is a complement to the Art of Unit Testing course I am teaching. This course is specifically dealing with design skills, and assumes that you already know how to write unit tests. **Assumed**: You already have some experience writing unit tests. 1. **1.**      Clean Code and SOLID Design Principles 2. **2.**      Design for Testability 3. **3.**      Refactoring patterns on hard to test legacy code 4. **4.**      Writing tests against refactored code 5. **5.**      When it does and does not make sense to refactor 6. **6.**      We will also take a look at open source projects and try to see how we would refactor them. **Materials** All students get a PDF of all the slides in the course, in downloadable form. **Agenda - Day 1:(09:00-16:00)** 1.   From TDD Kata to Design Skills 2.   Single Responsibility Functions 3.   Single Responsibility Classes 4.   SOLID Principles 5.   Drills throughout the day      **Agenda - Day 2:(09:00-16:00)** 1.   Working with Legacy Code 2.   Refactoring for Inversion of Control 3.   Refactoring for Open Closed 4.   Liskov Substitution Problems 5.   Refactoring for Dependency Injection 6.   Drills throughout the day ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Oct 14, 2013 ### [Video - Refactoring and Design Skills for Test Driven Development](https://osherove.com/blog/2013/10/14/video-refactoring-and-design-skills-for-test-driven-developm.html) - Jun 4, 2013 ### [Ugly Code Means Your Product Used to be Successful](https://osherove.com/blog/2013/6/4/ugly-code-means-your-product-used-to-be-successful.html) - Mar 29, 2013 ### [Acceptance Frameworks Vs. Specification APis](https://osherove.com/blog/2013/3/29/acceptance-frameworks-vs-specification-apis.html) - Mar 28, 2013 ### [Using System.Transactions.TransactionScope to Rollback Database changes under an integration test](https://osherove.com/blog/2013/3/28/using-systemtransactionstransactionscope-to-rollback-databas.html) --- title: "Two workshops on Beautiful Builds, Refactoring and Design Skills" url: "https://osherove.com/blog/2013/4/6/two-workshops-on-beautiful-builds-and-refactoring-and-design.md" canonical: "https://osherove.com/blog/2013/4/6/two-workshops-on-beautiful-builds-and-refactoring-and-design.html" published: "2013-04-06T21:21:12" updated: "2013-04-06T21:21:12" tags: ["Agile"] author: "Roy Osherove" description: "This April, I will be in Kyiv, speaking at the Microsoft SWIT conference . I will also be holding two separate workshops before the conference. Two very NEW workshops that I have only done once or twice before. The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Two workshops on Beautiful Builds, Refactoring and Design Skills By Roy Osherove April 6, 2013 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published April 6, 2013; technical details may be outdated. This April, I will be in Kyiv, [speaking at the Microsoft SWIT conference](http://www.msswit.in.ua/en/). I will also be holding two separate workshops before the conference. Two very NEW workshops that I have only done once or twice before. The first one is the [Refactoring Skills for TDD workshop. April 23rd](http://www.msswit.in.ua/en/refactoringskills). The second one is [Beautiful Builds in .NET . April 24th](http://www.msswit.in.ua/en/beautifulbuildsosherove/). Find the agendas below and location, payment and other details at the links mentioned above. \--------------------------------------------------------- #### [AGENDA: REFACTORING SKILLS FOR TDD IN .NET AND JAVA](http://www.msswit.in.ua/en/refactoringskills) **The Problem** You have been trying to learn TDD, and it’s going pretty well, but your code looks horrible. Your design skills are lacking, and trying to let TDD drive the design without having design skills can lead to a very problematic, although testable, design of your code. **Objectives** I usually do not focus about design in my TDD courses. I believe that separating the learning about the core skills of Unit Testing, TDD, and Design should be separated so that the learner will not feel overwhelmed. This course is a complement to the Art of Unit Testing course I am teaching. This course is specifically dealing with design skills, and assumes that you already know how to write unit tests. **Assumed**: You already have some experience writing unit tests. 1. **1.**      Clean Code and SOLID Design Principles 2. **2.**      Design for Testability 3. **3.**      Refactoring patterns on hard to test legacy code 4. **4.**      Writing tests against refactored code 5. **5.**      When it does and does not make sense to refactor 6. **6.**      We will also take a look at open source projects and try to see how we would refactor them. **Materials** All students get a PDF of all the slides in the course, in downloadable form. **Agenda - Day 1:(09:00-16:00)** 1. **1.**  From TDD Kata to Design Skills 2. **2.**  Single Responsibility Functions 3. **3.**  Single Responsibility Classes 4. **4.**  SOLID Principles 5. **6.**  Working with Legacy Code 6. **7.**  Refactoring for Inversion of Control 7. **8.**  Refactoring for Open Closed 8. **9.**  Liskov Substitution Problems 9. **10.**  Refactoring for Dependency Injection 10. **11.**  Drills throughout the day #### \----------------------------------------------- #### [BEAUTIFUL BUILDS IN .NET WITH ROY OSHEROVE](http://www.msswit.in.ua/en/beautifulbuildsosherove/) **The Problem** Being able to deliver fast, and get feedback fast, is a necessary requirement for any kind of agility in software development. But most of our builds, if we have any, look like pieces of gum and string hanging together, held together with some spit. Many projects are barely able to deliver something every month.. We will cover: **Objectives** In this workshop we will learn common patterns and anti patterns for automating the build process, making builds fast, and continuously deliver, while still being able to maintain and understand our builds scripts and process, based on [http://beautifulbuilds.com](http://beautifulbuilds.com/) 1. Understand how automated build scripts and continuous integration servers work best together 2. Know how to choose the right tools for build scripts and CI based on common and future build requirements, such as auto scaling, amount of projects, ease of maintenance etc. 3. Learn common solutions and patterns for making builds faster, maintainable and coherent 4. Understand database migrations and upgrades 5. Understand advanced features of CI systems such as branch builds, gated commits, artifact sharing, build chaining, and when to use them 6. Learn to create a holistic view of the build process, build environments, and the delivery process **Materials** All students get a PDF of all the slides in the course, in downloadable form. **Agenda - Day 1:(09:00-16:00)** 1.     Comparison of build script and CI tooling 2.      Build Script Patterns 3.      CI Patterns 4.      Build Process Patterns 5.       Database Migrations and Upgrade Patterns 6.       Build and Delivery Environments ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 6, 2013 ### [Coming to America (to do training)](https://osherove.com/blog/2013/6/6/coming-to-america-to-do-training.html) - Feb 28, 2012 ### [New Book: Notes to a software team leader](https://osherove.com/blog/2012/2/28/new-book-notes-to-a-software-team-leader.html) - Nov 11, 2011 ### [TDD Master class - Videos Available For Purchase at TekPub](https://osherove.com/blog/2011/11/11/tdd-master-class-videos-available-for-purchase-at-tekpub.html) --- title: "Acceptance Frameworks Vs. Specification APis" url: "https://osherove.com/blog/2013/3/29/acceptance-frameworks-vs-specification-apis.md" canonical: "https://osherove.com/blog/2013/3/29/acceptance-frameworks-vs-specification-apis.html" published: "2013-03-29T14:40:35" updated: "2013-03-29T14:40:35" tags: ["Unit Testing"] author: "Roy Osherove" description: "I see two forms of ‘BDD’ tools floating in the wild. The first form, let`s call it ‘deep BDD’ for now, requires you to go through a special langauge filter, before translating it with special adapters into executable…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Acceptance Frameworks Vs. Specification APis By Roy Osherove March 29, 2013 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 29, 2013; technical details may be outdated. I see two forms of ‘BDD’ tools floating in the wild. The first form, let\`s call it ‘deep BDD’ for now, requires you to go through a special langauge filter, before translating it with special adapters into executable specifications. Think Cucumber’s Gherkin forcing you to write adapters in code to execute your tests. Or SpecFlow’s _Gherkin_ with .NET step definitions. The second form, let’s call it ‘shallow BDD’ are tools that only give you an API to develop with, but no natural language interface to discuss with end users, or for giving end users to edit on their own. Think RSpec, MSpec or NSpec – they are literally just libraries that allow you to write your “tests” in a more BDD like API. Deep BDD tools give you more permission to get out of your comfort zone and talk to a customer, while shallow BDD tools give you more permission to stay in side your comfort zone – your code, and to just stay with yourself, coding into the night, not having to talk to anybody, still feeling you’re awesome because you are dong ‘BDD’. In that way, shallow bdd tools are just shiny wrappers on unit testing tools, while deep BDD tools make us work harder for communication. ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Jun 4, 2013 ### [Ugly Code Means Your Product Used to be Successful](https://osherove.com/blog/2013/6/4/ugly-code-means-your-product-used-to-be-successful.html) - Apr 10, 2013 ### [April 18: Refactoring and Design Skills for Test Driven Development Workshop](https://osherove.com/blog/2013/4/11/april-18-refactoring-and-design-skills-for-test-driven-devel.html) - Mar 28, 2013 ### [Using System.Transactions.TransactionScope to Rollback Database changes under an integration test](https://osherove.com/blog/2013/3/28/using-systemtransactionstransactionscope-to-rollback-databas.html) - Jul 12, 2012 ### [Video: (part 8 - The big Refactoring) TDD Pairing a Go Game Engine](https://osherove.com/blog/2012/7/13/video-part-8-the-big-refactoring-tdd-pairing-a-go-game-engin.html) --- title: "Which Specification Style Framework in .NET are you using?" url: "https://osherove.com/blog/2013/3/29/which-specification-style-framework-in-net-are-you-using.md" canonical: "https://osherove.com/blog/2013/3/29/which-specification-style-framework-in-net-are-you-using.html" published: "2013-03-29T13:28:33" updated: "2013-03-29T13:28:33" tags: [] author: "Roy Osherove" description: "Which one are you using?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Which Specification Style Framework in .NET are you using? By Roy Osherove March 29, 2013 **Historical article** · Originally published March 29, 2013; technical details may be outdated. Which one are you using? --- title: "Using System.Transactions.TransactionScope to Rollback Database changes under an integration test" url: "https://osherove.com/blog/2013/3/28/using-systemtransactionstransactionscope-to-rollback-databas.md" canonical: "https://osherove.com/blog/2013/3/28/using-systemtransactionstransactionscope-to-rollback-databas.html" published: "2013-03-28T22:51:05" updated: "2013-03-28T22:51:05" tags: ["Unit Testing"] author: "Roy Osherove" description: "It has been several years since I came up with the idea of database rolled back tests based on com+ transactions, which later became ServicedComponent tests, which later became TransactionScope aided tests. At some…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Using System.Transactions.TransactionScope to Rollback Database changes under an integration test By Roy Osherove March 28, 2013 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 28, 2013; technical details may be outdated. It has been several years since I came up with the idea of database rolled back tests based on com+ transactions, which later became ServicedComponent tests, which later became TransactionScope aided tests. At some point, a DataRollback attribute was added to NUnIt, but them removed for some reason, that used this idea. I know it exists in MbUnit…. ANYWAY. I never blogged about the TransactionScope solution in this blog, so here is a very simple way to rollback database  changes that your code under test performs under an integration test, so that the DB is not dirtied up for the next test Just use System.Transactions.TransactionScope class: ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Apr 10, 2013 ### [April 18: Refactoring and Design Skills for Test Driven Development Workshop](https://osherove.com/blog/2013/4/11/april-18-refactoring-and-design-skills-for-test-driven-devel.html) - Mar 29, 2013 ### [Acceptance Frameworks Vs. Specification APis](https://osherove.com/blog/2013/3/29/acceptance-frameworks-vs-specification-apis.html) - Jul 12, 2012 ### [Video: (part 8 - The big Refactoring) TDD Pairing a Go Game Engine](https://osherove.com/blog/2012/7/13/video-part-8-the-big-refactoring-tdd-pairing-a-go-game-engin.html) - Jul 9, 2012 ### [Video: (part 7 - The bug that wouldn't die) Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/7/9/video-part-7-the-bug-that-wouldnt-die-go-game-engine-with-td.html) --- title: "Poll> Which IoC frameworks Are you actively using in your current .NET projects?" url: "https://osherove.com/blog/2013/3/25/pollgt-which-ioc-frameworks-are-you-actively-using-in-your-c.md" canonical: "https://osherove.com/blog/2013/3/25/pollgt-which-ioc-frameworks-are-you-actively-using-in-your-c.html" published: "2013-03-25T10:19:16" updated: "2013-03-25T10:19:16" tags: [] author: "Roy Osherove" description: "Which ones do you actively use?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Poll\> Which IoC frameworks Are you actively using in your current .NET projects? By Roy Osherove March 25, 2013 **Historical article** · Originally published March 25, 2013; technical details may be outdated. Which ones do you actively use? --- title: "TDD Master Class Online: Get Each Day Separately for $59" url: "https://osherove.com/blog/2013/3/22/tdd-master-class-online-get-each-day-separately-for-59.md" canonical: "https://osherove.com/blog/2013/3/22/tdd-master-class-online-get-each-day-separately-for-59.html" published: "2013-03-22T21:43:47" updated: "2013-03-22T21:43:47" tags: ["video"] author: "Roy Osherove" description: "Due to public demand, The full course is 99$. and as part of the big experiment I am doing, you can now have TWO ways to get my TDD master class online: You can get the whole master class thing in one big giant course ,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Master Class Online: Get Each Day Separately for $59 By Roy Osherove March 22, 2013 In [video](https://osherove.com/blog/category/video) **Historical article** · Originally published March 22, 2013; technical details may be outdated. Due to public demand, The full course is 99$. and as part of the big experiment I am doing, you can now have TWO ways to get my TDD master class online: 1. You can [get the whole master class thing in one big giant course](https://www.udemy.com/tdd-in-net-with-roy-osherove/), for $500 (use coupon ‘_maintainability’_ to get 30% off that until end of day today, Seattle time) 2. You can download each of the days separately for $90 a pop: 1. [Day one: The First Test](https://www.udemy.com/part1-the-art-of-unit-testing-and-tdd-osherove),  2. [Day 2: Mocks and Stubs](https://www.udemy.com/part2-the-art-of-unit-testing-and-tdd-osherove),  3. [Day 3: Good Tests, Bad Tests](https://www.udemy.com/part3-the-art-of-unit-testing-and-tdd-osherove),  4. [Day 4: Legacy Code](https://www.udemy.com/part-the-art-of-unit-testing-and-tdd-osherove),  5. [Day 5: Unit Testing Patterns in the wild](https://www.udemy.com/part5-the-art-of-unit-testing-and-tdd-osherove),  There will NOT be any upgrade path if you have already purchased a specific day and want the full course, unless I see people truly explode about that. Let us see how people’s wallets vote! feedback is appreciated. If you cannot purchase, [do let me know on twitter why](http://twitter.com/royosherove)! ## More in video [All posts in video](https://osherove.com/blog/category/video) - Oct 14, 2013 ### [Video - Refactoring and Design Skills for Test Driven Development](https://osherove.com/blog/2013/10/14/video-refactoring-and-design-skills-for-test-driven-developm.html) - May 16, 2013 ### [Videos: Beautiful Builds, and a Second Look at Unit Testing](https://osherove.com/blog/2013/5/17/videos-beautiful-builds-and-a-second-look-at-unit-testing.html) - Mar 17, 2013 ### [Can’t attend my five day TDD master class? Buy & Watch it online, recorded live.](https://osherove.com/blog/2013/3/17/canrsquot-attend-my-five-day-tdd-master-class-buy-amp-watch.html) - Feb 6, 2013 ### [Two Day Leadership Workshop–London April 11-12](https://osherove.com/blog/2013/2/6/two-day-leadership-workshopndashlondon-april-11-12.html) --- title: "Osherove online TDD master class at 40% off for a few hours." url: "https://osherove.com/blog/2013/3/21/osherove-online-tdd-master-class-at-40-off-for-a-few-hours.md" canonical: "https://osherove.com/blog/2013/3/21/osherove-online-tdd-master-class-at-40-off-for-a-few-hours.html" published: "2013-03-21T13:20:28" updated: "2013-03-21T13:20:28" tags: ["course"] author: "Roy Osherove" description: "FYI, for the next few hours, I am offering a 40% off my TDD online training course ($300 instead of $500). use coupon code ‘ readability’ on the course page. This is an experiment I am doing, and will be doing others,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Osherove online TDD master class at 40% off for a few hours. By Roy Osherove March 21, 2013 In [course](https://osherove.com/blog/category/course) **Historical article** · Originally published March 21, 2013; technical details may be outdated. FYI, for the next few hours, I am offering a 40% off [my TDD online training course](https://www.udemy.com/tdd-in-net-with-roy-osherove) ($300 instead of $500). use coupon code ‘**readability’** on the course page. This is an experiment I am doing, and will be doing others, but with higher prices. ## More in course [All posts in course](https://osherove.com/blog/category/course) - Sep 15, 2013 ### [New Online Course: TDD and BDD in Ruby](https://osherove.com/blog/2013/9/15/new-online-course-tdd-and-bdd-in-ruby.html) - Jun 6, 2013 ### [Coming to America (to do training)](https://osherove.com/blog/2013/6/6/coming-to-america-to-do-training.html) - Feb 21, 2013 ### [March 7 : Refactoring Skills for Unit Testing and TDD Course](https://osherove.com/blog/2013/2/21/march-7-refactoring-skills-for-unit-testing-and-tdd-course.html) - Feb 6, 2013 ### [Two Day Leadership Workshop–London April 11-12](https://osherove.com/blog/2013/2/6/two-day-leadership-workshopndashlondon-april-11-12.html) --- title: "Can’t attend my five day TDD master class? Buy & Watch it online, recorded live." url: "https://osherove.com/blog/2013/3/17/canrsquot-attend-my-five-day-tdd-master-class-buy-amp-watch.md" canonical: "https://osherove.com/blog/2013/3/17/canrsquot-attend-my-five-day-tdd-master-class-buy-amp-watch.html" published: "2013-03-17T18:23:46" updated: "2013-03-17T18:23:46" tags: ["video"] author: "Roy Osherove" description: "Phew. This is going to be scary. I am making my full TDD master class in .NET available as a video series of over nine hours, recorded live in class . If you have ever wanted to attend my classes, but couldn’t : this is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Can’t attend my five day TDD master class? Buy & Watch it online, recorded live. By Roy Osherove March 17, 2013 In [video](https://osherove.com/blog/category/video) **Historical article** · Originally published March 17, 2013; technical details may be outdated. Phew. This is going to be scary. I am [making my full TDD master class in .NET available as a video series of over nine hours, recorded live in class](https://www.udemy.com/tdd-in-net-with-roy-osherove/). **If you have ever wanted to attend my classes, but couldn’t : this is the next best thing**. It was recorded by me over a few tdd master classes, and assembled with audio, including questions and answers from the attendees. It is as if you are sitting right there in class, unable to speak, but able to hear everything. Plus, if you DO have a question, you can always contact me directly. Why scary? because I am afraid this will eat into my actual course training at customer sites. Why would a customer have me over when they can have the entire course online? For some customers, who can’t have me anyway, this is a no brainer, but for those that could have me, here is my line of thinking: - Nothing beats me being there as you do the exercises, looking over your shoulder, at the actual code you are writing. - If I do go to your place, we can customize the course and spend more time on specific ideas, or even new ideas. - The course changes all the time. The course I teach today is different (slightly) than the one you see here. For example, in my courses today I use **NCrunch**, while in the videos I use **testdriven**.NET. A couple of years ago my courses included Rhino Mocks, now I teach FakeItEasy (this video series includes **fakeiteasy**, for example). So, to mitigate the risk of losing business, I am making the course cost very high. 500$. I hope you will see enough value in it to purchase it and be happy with it. Also, the content is not downloadable for now. Call me paranoid, but I am truly scared of this stuff spreading all over the web and then I lose both actual courses and online sales. Did I say scary yet? I did have some thought about going “Louis CK” on it and selling it for 5$, but I do not have enough people interested. even if I sell 5000 of these 5$, I make up the cost I would make on a single five day course. [I hope you find it useful and valuable](https://www.udemy.com/tdd-in-net-with-roy-osherove/). Feedback is welcome. ## More in video [All posts in video](https://osherove.com/blog/category/video) - May 16, 2013 ### [Videos: Beautiful Builds, and a Second Look at Unit Testing](https://osherove.com/blog/2013/5/17/videos-beautiful-builds-and-a-second-look-at-unit-testing.html) - Mar 22, 2013 ### [TDD Master Class Online: Get Each Day Separately for $59](https://osherove.com/blog/2013/3/22/tdd-master-class-online-get-each-day-separately-for-59.html) - Feb 6, 2013 ### [Two Day Leadership Workshop–London April 11-12](https://osherove.com/blog/2013/2/6/two-day-leadership-workshopndashlondon-april-11-12.html) - Jul 12, 2012 ### [Video: (part 8 - The big Refactoring) TDD Pairing a Go Game Engine](https://osherove.com/blog/2012/7/13/video-part-8-the-big-refactoring-tdd-pairing-a-go-game-engin.html) --- title: "Tools And Frameworks for Unit Testing in .NET for 2013" url: "https://osherove.com/blog/2013/3/16/tools-and-frameworks-for-unit-testing-in-net-and-java.md" canonical: "https://osherove.com/blog/2013/3/16/tools-and-frameworks-for-unit-testing-in-net-and-java.html" published: "2013-03-16T11:06:46" updated: "2013-03-16T11:06:46" tags: ["Cool Tools"] author: "Roy Osherove" description: "in “ Art of Unit Testing 2nd Edition ” I am now at work on the tools and frameworks appendix. It currently includes the following sections: • Isolation frameworks Moq Rhino Mocks Typemock Isolator NMock ? NUnit.Mocks…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tools And Frameworks for Unit Testing in .NET for 2013 By Roy Osherove March 16, 2013 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published March 16, 2013; technical details may be outdated. in “[Art of Unit Testing 2nd Edition](http://artofunittesting.com/)” I am now at work on the tools and frameworks appendix. It currently includes the following sections: **•    Isolation frameworks** > - Moq > - Rhino Mocks > - Typemock Isolator > -  **NMock ?** > - **NUnit.Mocks** > - **Microsoft Fakes / Moles** > - **NSubstitute** > - **FakeItEasy** > - **Foq (for F#)** **•    Test frameworks** > •    NUnit > •   **MbUnit  ? > •    Gallio ? > **•    xUnit > •    Pex - Test Helpers and Assertion APIS - FluentAssertions - Shouldly - SharpTestEx - AutoFixure - **Continuous Testing** - **Mighty Moose** - **NCrunch** - **Typemock Isolator Test Runner ** **•    Dependency injection and IoC containers** > •   > > - [AutoFac](http://code.google.com/p/autofac/) > - [Caliburn.Micro](http://caliburnmicro.codeplex.com/) > - [Catel](http://catel.codeplex.com/) > - [Dynamo.Ioc](http://www.dynamoioc.com/) > - [Funq](http://funq.codeplex.com/) > - [Griffin](https://github.com/jgauffin/griffin.container) > - [Hiro](https://github.com/philiplaureano/Hiro) > - [LightCore](http://www.lightcore.ch/) > - [LightInject](https://github.com/seesharper/LightInject) > - [LinFu](https://github.com/philiplaureano/LinFu) > - [MEF](http://mef.codeplex.com/) > - [Mugen](http://mugeninjection.codeplex.com/) > - [Munq](http://munq.codeplex.com/) > - [Ninject](http://ninject.org/) > - [Petite](https://github.com/andlju/Petite) > - [Simple Injector](http://simpleinjector.codeplex.com/) > - [Speedioc](https://github.com/wade/Speedioc) > - [Spring.NET](http://www.springframework.net/) (does anyone still use this?) > - [StructureMap](http://structuremap.net/structuremap/) > - [TinyIoc](https://github.com/grumpydev/TinyIoC) > - [Unity](http://msdn.microsoft.com/unity) > - [Windsor](http://castleproject.org/) > > Ioc Benchmark: [http://www.palmmedia.de/Blog/2011/8/30/ioc-container-benchmark-performance-comparison](http://www.palmmedia.de/Blog/2011/8/30/ioc-container-benchmark-performance-comparison "http://www.palmmedia.de/Blog/2011/8/30/ioc-container-benchmark-performance-comparison") **•    Database testing** > •   **DataRollback Attribute > **•    Integration Testing with the DB **•    Web testing** > •    Ivonna > •    Team System Web Test > •    **NUnitAsp** > •    Watir > •    **WatiN** > •    Selenium **•    UI testing** > •    **NUnitForms** > •    Project White > •    Team System UI Tests **•    Thread-related testing** > •   **Typemock Racer > •    Microsoft CHESS > **•    Osherove.ThreadTester **•    Acceptance testing** > - FitNesse > - **StoryTeller** ? > - **Cucumber** **BDD Styled Frameworks (used for unit level or acceptance testing)** - **specflow** - **specsharp** - **nspec** - **mSpec** - **TickSpec** **Color Map:** - **Gray**: Will be removed - **GREEN**: New - **BLACK**: Unchanged - ? : Not Sure While I do have my own thoughts on which new tools, frameworks or sections can be added or removed from the old book, **I would really like to hear from you** what _**you** think_ should be in these sections(or new sections), when talking about .NET, Java, C++ ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Feb 22, 2013 ### [Six Tools for managing multiple remote desktop sessions on windows and mac](https://osherove.com/blog/2013/2/22/tools-for-managing-multiple-remote-desktop-sessions-on-windo.html) - Jun 26, 2012 ### [FakeItEasy or NSubstitute? Which should I use for samples in art of unit testing 2nd edition?](https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.html) --- title: "My first talk in Norwegian - Beautiful Builds" url: "https://osherove.com/blog/2013/3/15/my-first-talk-in-norwegian-beautiful-builds.md" canonical: "https://osherove.com/blog/2013/3/15/my-first-talk-in-norwegian-beautiful-builds.html" published: "2013-03-15T12:02:03" updated: "2013-03-15T12:02:03" tags: [] author: "Roy Osherove" description: "I promised myself that I would be able to do a full talk in norweign about six months after coming here. A couple of days ago at the internal Bouvet One conference, I got the chance, as I was standing in for a friend…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My first talk in Norwegian - Beautiful Builds By Roy Osherove March 15, 2013 **Historical article** · Originally published March 15, 2013; technical details may be outdated. I promised myself that I would be able to do a full talk in norweign about six months after coming here. A couple of days ago at the internal _Bouvet One_ conference, I got the chance, as I was standing in for a friend who was not able to speak. The talk was about beautiful builds, and some principles we had used in the last internal project. I felt pretty helpless when someone finally asked a question and starting talking in english again, but I made it through the initial presentation without talking in english at all.  Was scary, but I try to put myself in these situations, since I believe that is when you learn the most. Have fun. I hope to be looking at this in a couple of years and laugh at how bad my norwegian is. [![](https://osherove.com/img/video/yt-GfUIvMfaPDM.jpg)Play videoBeautiful Builds in Norwegian - Roy Osherove](https://www.youtube.com/watch?v=GfUIvMfaPDM) --- title: "Refactoring String Calculator with SOLID Principles in Mind - Examples Needed" url: "https://osherove.com/blog/2013/3/6/refactoring-string-calculator-with-solid-principles-in-mind.md" canonical: "https://osherove.com/blog/2013/3/6/refactoring-string-calculator-with-solid-principles-in-mind.html" published: "2013-03-06T10:30:30" updated: "2013-03-06T10:30:30" tags: [] author: "Roy Osherove" description: "Given this simple implementation of string calculator , mid way, how would you refactor this, based on SOLID principles ? and how far would you go? Please note what principles you think this code breaks, and why it is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Refactoring String Calculator with SOLID Principles in Mind - Examples Needed By Roy Osherove March 6, 2013 **Historical article** · Originally published March 6, 2013; technical details may be outdated. Given this simple implementation of [string calculator](https://osherove.com/kata), mid way, how would you refactor this, based on [SOLID principles](http://en.wikipedia.org/wiki/SOLID_\(object-oriented_design\))? and how far would you go? Please note what principles you think this code breaks, and why it is important that it implement them, if at all. show how you refactored it in a gist. > Post your own gists and tweet them [under hashtag #solidkata](https://twitter.com/search?q=%23solidkata&src=typd) and we can start a discussion on this. later I might use them in my videos, courses and presentations. --- title: "Books vs. Kids" url: "https://osherove.com/blog/2013/3/4/books-vs-kids.md" canonical: "https://osherove.com/blog/2013/3/4/books-vs-kids.html" published: "2013-03-04T08:45:50" updated: "2013-03-04T08:45:50" tags: [] author: "Roy Osherove" description: "Books vs. Kids: a post by Roy Osherove." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Books vs. Kids By Roy Osherove March 4, 2013 **Historical article** · Originally published March 4, 2013; technical details may be outdated. ![](https://osherove.com/img/sq/1000w-4329380-22084649-thumbnail.jpg) --- title: "Six Tools for managing multiple remote desktop sessions on windows and mac" url: "https://osherove.com/blog/2013/2/22/tools-for-managing-multiple-remote-desktop-sessions-on-windo.md" canonical: "https://osherove.com/blog/2013/2/22/tools-for-managing-multiple-remote-desktop-sessions-on-windo.html" published: "2013-02-22T21:50:44" updated: "2013-02-22T21:50:44" tags: ["Cool Tools"] author: "Roy Osherove" description: "I use both mac and windows at work, and I do a lot of remote desktop stuff as well. I asked on twitter “what tools would you recommend on windows to manage remote desktops?” here is the list I got: RemoteNG - oldie but…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Six Tools for managing multiple remote desktop sessions on windows and mac By Roy Osherove February 22, 2013 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published February 22, 2013; technical details may be outdated. I use both mac and windows at work, and I do a lot of remote desktop stuff as well. I asked on twitter “what tools would you recommend on windows to manage remote desktops?” ## here is the list I got: - [RemoteNG](http://www.mremoteng.org/) - oldie but a goodie - Microsoft’s own free [RDCMan](http://www.microsoft.com/en-us/download/details.aspx?id=21101) - nice and simple - [RoyalTS](http://www.code4ward.net/main/code4ward.aspx) – windows, mac and mobile, **not free**. I found this one very annoying and laborious to configure, although it did work well - [Terminals](http://terminals.codeplex.com/) – open source client - [MultiRdPC](http://multirdpc.codeplex.com/) – open source client - [Cord](http://cord.sourceforge.net/) – (mac only) – open source client that I really like on the mac. easier to use than **royalts** and free. other ideas? specific recommendations? comment! side note: if you ever wondered [how to enable multiple RDP sessions to a windows 2008 server, here.](http://www.diaryofaninja.com/blog/2010/10/11/allow-multiple-rdp-sessions-to-a-windows-2008-server) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Mar 16, 2013 ### [Tools And Frameworks for Unit Testing in .NET for 2013](https://osherove.com/blog/2013/3/16/tools-and-frameworks-for-unit-testing-in-net-and-java.html) - Jun 26, 2012 ### [FakeItEasy or NSubstitute? Which should I use for samples in art of unit testing 2nd edition?](https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.html) - Jun 18, 2012 ### [\[Cool Tool\] Chocolatey for windows is what you will not live without in two years](https://osherove.com/blog/2012/6/18/cool-tool-chocolatey-for-windows-is-what-you-will-not-live-w.html) --- title: "March 7 : Refactoring Skills for Unit Testing and TDD Course" url: "https://osherove.com/blog/2013/2/21/march-7-refactoring-skills-for-unit-testing-and-tdd-course.md" canonical: "https://osherove.com/blog/2013/2/21/march-7-refactoring-skills-for-unit-testing-and-tdd-course.html" published: "2013-02-21T11:01:43" updated: "2013-02-21T11:01:43" tags: ["course"] author: "Roy Osherove" description: "update: the course is running. we have 8 participants so far. yay! I usually do not focus about design in my TDD courses. I believe that separating the learning about the core skills of Unit Testing, TDD, and Design…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # March 7 : Refactoring Skills for Unit Testing and TDD Course By Roy Osherove February 21, 2013 In [course](https://osherove.com/blog/category/course) **Historical article** · Originally published February 21, 2013; technical details may be outdated. **update: the course is running. we have 8 participants so far. yay!** I usually do not focus about design in my TDD courses. I believe that separating the learning about the core skills of Unit Testing, TDD, and Design should be separated so that the learner will not feel overwhelmed. this is why I am happy to announce I have a new course about design. March 7 I will be doing a TWO DAY workshop on Refactoring skills for Unit Testing and TDD here in Oslo. **For registration, just contact me directly** ## What the course will cover: - Clean Code and SOLID Design Principles - Design for Testability - Refactoring patterns on hard to test legacy code - Writing tests against refactored code - When it does and does not make sense to refactor - We will also take a look at open source projects and try to see how we would refactor them. Cost: 11,900 NOK per participant, includes lunch, but not hotel or flights. The course will fit both Java and .NET programmers since the refactoring skills are relevant to both languages, and examples can be in both. **To run, the course needs at least 5 participants, to register by end of this month. so do not book flights until I update this post that we have 5.** ****update: the course is running. we have 8 participants so far. yay!**** **For registration, just contact me directly** ## More in course [All posts in course](https://osherove.com/blog/category/course) - Jun 6, 2013 ### [Coming to America (to do training)](https://osherove.com/blog/2013/6/6/coming-to-america-to-do-training.html) - Mar 21, 2013 ### [Osherove online TDD master class at 40% off for a few hours.](https://osherove.com/blog/2013/3/21/osherove-online-tdd-master-class-at-40-off-for-a-few-hours.html) - Feb 6, 2013 ### [Two Day Leadership Workshop–London April 11-12](https://osherove.com/blog/2013/2/6/two-day-leadership-workshopndashlondon-april-11-12.html) - Jun 20, 2012 ### [Upcoming 1-day courses in Sweden](https://osherove.com/blog/2012/6/20/upcoming-1-day-courses-in-sweden.html) --- title: "When I fight with legacy code" url: "https://osherove.com/blog/2013/2/8/when-i-fight-with-legacy-code.md" canonical: "https://osherove.com/blog/2013/2/8/when-i-fight-with-legacy-code.html" published: "2013-02-08T13:22:21" updated: "2013-02-08T13:22:21" tags: ["Blogging"] author: "Roy Osherove" description: "When I consult on Sharepoint Projects When I see sharepoint designers at work When I pair with someone and we rock" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # When I fight with legacy code By Roy Osherove February 8, 2013 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published February 8, 2013; technical details may be outdated. ![](https://osherove.com/img/ext/i.imgur.com_3GSZE2q.gif) When I consult on Sharepoint Projects![](https://osherove.com/img/ext/i.imgur.com_RMg5ui0.gif) When I see sharepoint designers at work ![](https://osherove.com/img/ext/i.imgur.com_0c9ZUZj.gif) When I pair with someone and we rock ![](https://osherove.com/img/ext/i.imgur.com_D3PL6Na.gif) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Feb 2, 2006 ### [Read HackNot](https://osherove.com/blog/2006/2/2/read-hacknot.html) - Nov 16, 2005 ### [Good technology audio I've been listening to](https://osherove.com/blog/2005/11/16/good-technology-audio-ive-been-listening-to.html) --- title: "Build Pattern: Cumulative Build" url: "https://osherove.com/blog/2013/2/7/build-pattern-adopt-artifacts.md" canonical: "https://osherove.com/blog/2013/2/7/build-pattern-adopt-artifacts.html" published: "2013-02-07T12:55:02" updated: "2013-02-07T12:55:02" tags: ["Build Bullet"] author: "Roy Osherove" description: "Note : This will become part of my book on beautiful builds . Any comments or feedback are more than welcome, as well as ideas of other common build patterns you see in the wild. Other Names: Distilled Build…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Build Pattern: Cumulative Build By Roy Osherove February 7, 2013 In [Build Bullet](https://osherove.com/blog/category/build-bullet) **Historical article** · Originally published February 7, 2013; technical details may be outdated. **Note**: This will become [part of my book on beautiful builds](http://beautifulbuilds.com/). Any comments or feedback are more than welcome, as well as ideas of other common build patterns you see in the wild. ## Other Names: - Distilled Build - Inherit/share/import Artifacts - Borrow Build Artifacts - Pre-Chewed Artifacts - Single Responsibility Build Configuration ## Symptoms: - Your build configuration on the CI server is taking a long time to complete. - Each Build Configuration down the build chain takes longer and longer than the build configuration up the chain ## Problem: Your build config might be doing too many things. ## Forces: You want your build time to take less, but you do not want to remove any actions from the build because all the build actions are important. ## Solution: First, Have each build configuration do one thing, and then “share” the resulting artifacts, such as built binaries, so that other build configurations can use them. Then, for each build down the pipeline, have the build import the artifacts from the build config up the line, and simply do one more action on the artifacts, and share them with the next build up the pipeline. ## For example say you have the following build configurations in TeamCity before applying the solution: - **Continuous Integration Build** : Gets from source control, compiles in debug, runs fast tests in debug - **Nightly Build**: Compiles in debug, runs tests in debug, compiles in release, runs tests in release, runs slow tests on release, deploys to test env. - **Release Build**: Compiles in debug, runs tests in debug, compiles in release, runs tests in release, runs slow tests on release, deploys to release env. Here is one way we can make each build do one thing, then share the artifacts with the build up the pipeline: - **Continuous Integration Build** : Gets from source control, compiles in debug, runs fast tests in debug, _shares source and binaries artifacts_ - **Nightly Build**: _Gets build artifacts from CI build_. Compiles in release, runs fast tests in release, runs slow tests in release. _Shares binaries as artifacts._ - **Release Build**: _Gets build artifacts from nightly build_, deploys to release env. _Shares deployed binaries as artifacts._ Now, each build does just one thing, on top of the pre built binaries. For example, only the first build of the bunch gets from source code. Only two builds compile. The deploy build doesn’t do anything but deploy. This also eases the build script management, each build gets a separate build script in source control, that can be reused if needed. ## More in Build Bullet [All posts in Build Bullet](https://osherove.com/blog/category/build-bullet) - Apr 22, 2013 ### [Beautiful Builds: Release Compilation Step](https://osherove.com/blog/2013/4/23/beautiful-builds-release-compilation-step.html) - Jan 20, 2013 ### [Tests and Builds are Made to be Broken](https://osherove.com/blog/2013/1/20/tests-and-builds-are-made-to-be-broken.html) - Jan 20, 2013 ### [Build Pattern: Gated Commit](https://osherove.com/blog/2013/1/20/build-pattern-gated-commit.html) --- title: "Two Day Leadership Workshop–London April 11-12" url: "https://osherove.com/blog/2013/2/6/two-day-leadership-workshopndashlondon-april-11-12.md" canonical: "https://osherove.com/blog/2013/2/6/two-day-leadership-workshopndashlondon-april-11-12.html" published: "2013-02-06T12:05:40" updated: "2013-02-06T12:05:40" tags: ["course", "video"] author: "Roy Osherove" description: "I would love to see you at my upcoming two day workshop in London . Place is limited to 20 participants. The workshop is for architects, team leaders, and managers . The point? Learn how to make the things you believe…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Two Day Leadership Workshop–London April 11-12 By Roy Osherove February 6, 2013 In [course](https://osherove.com/blog/category/course), [video](https://osherove.com/blog/category/video) **Historical article** · Originally published February 6, 2013; technical details may be outdated. I would love to see you [at my upcoming two day workshop in London](http://leadbetterlondon2013.eventbrite.com/). Place is limited to 20 participants. The workshop is for [architects, team leaders, and managers](http://5whys.com/) . The point? Learn how to make the things you believe in come true in your team. Understand why and how to influence works, and learn to harness it. Most importantly, we discuss the role of a leader as a grower of the team, instead of just the guidance of it. [![](https://osherove.com/img/video/yt-uvwW_CRmWmo.jpg)Play videoThe Coaching Leader & Architect - Roy Osherove](https://www.youtube.com/watch?v=uvwW_CRmWmo) ## More in course [All posts in course](https://osherove.com/blog/category/course) - Mar 21, 2013 ### [Osherove online TDD master class at 40% off for a few hours.](https://osherove.com/blog/2013/3/21/osherove-online-tdd-master-class-at-40-off-for-a-few-hours.html) - Feb 21, 2013 ### [March 7 : Refactoring Skills for Unit Testing and TDD Course](https://osherove.com/blog/2013/2/21/march-7-refactoring-skills-for-unit-testing-and-tdd-course.html) - Jun 20, 2012 ### [Upcoming 1-day courses in Sweden](https://osherove.com/blog/2012/6/20/upcoming-1-day-courses-in-sweden.html) --- title: "Mac: keyboard shortcut to enable and disable function keys" url: "https://osherove.com/blog/2013/1/22/mac-keyboard-shortcut-to-enable-and-disable-function-keys.md" canonical: "https://osherove.com/blog/2013/1/22/mac-keyboard-shortcut-to-enable-and-disable-function-keys.html" published: "2013-01-22T12:46:02" updated: "2013-01-22T12:46:02" tags: [] author: "Roy Osherove" description: "I work a lot with visual studio in a virtual machine, and on a mac, the function keys just get in the way of debugging and what not. I needed a way to quickly enable and disable the mac function keys. Found my solution…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mac: keyboard shortcut to enable and disable function keys By Roy Osherove January 22, 2013 **Historical article** · Originally published January 22, 2013; technical details may be outdated. I work a lot with visual studio in a virtual machine, and on a mac, the function keys just get in the way of debugging and what not. I needed a way to quickly enable and disable the mac function keys. [Found my solution over here](http://forums.macrumors.com/showthread.php?t=932342): Get FastScripts [http://www.red-sweater.com/fastscripts/](http://www.red-sweater.com/fastscripts/) and one of these AppleScripts depending on your OS version Leopard: [http://www.mediafire.com/file/uznnoommljk/](http://www.mediafire.com/file/uznnoommljk/) Snow Leopard (works on my mountain lion too): [http://www.mediafire.com/file/2eeywh2ejku/](http://www.mediafire.com/file/2eeywh2ejku/) --- title: "Tests and Builds are Made to be Broken" url: "https://osherove.com/blog/2013/1/20/tests-and-builds-are-made-to-be-broken.md" canonical: "https://osherove.com/blog/2013/1/20/tests-and-builds-are-made-to-be-broken.html" published: "2013-01-20T21:29:35" updated: "2013-01-20T21:29:35" tags: ["Build Bullet"] author: "Roy Osherove" description: "Many agile teams seem to be very focused on not breaking the build. I myself used to jokingly say that your team should have a “I Broke the Build” T-Shirt, to switch between team members. That was a mistake. I think…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tests and Builds are Made to be Broken By Roy Osherove January 20, 2013 In [Build Bullet](https://osherove.com/blog/category/build-bullet) **Historical article** · Originally published January 20, 2013; technical details may be outdated. Many agile teams seem to be very focused on not breaking the build. I myself used to jokingly say that your team should have a “I Broke the Build” T-Shirt, to switch between team members. That was a mistake. I think that builds, much like tests, are made to be broken. Avoiding the public build is like debugging so you won’t have to run your tests. Well ,that last sentence is a bit of hyperbole. It’s like running your tests locally before running them on the build server. Which is actually a great thing to do, unless you can only run some of the tests locally, or it takes time to set up all the integration tests to run on your machine etc.. then it’s just a waste of time. Just run them in the build process. that’s what it’s for. As time goes on, I see many team members wasting precious time trying to avoid the build, by running it privately, when the whole purpose of the build was to give the indication of failure. > If the build never breaks, why have it in the first place? interesting bit on pre-tested commits [osherove.com/blog/2013/1/20…](http://t.co/06xgk0Ss "/blog/2013/1/20/build-pattern-gated-commit.html") > > — Ken Egozi (@kenegozi) [January 20, 2013](https://twitter.com/kenegozi/status/293073679884107777) I want to bring forward a small comment I made next to the “[Gated Commits](https://osherove.com/blog/2013/1/20/build-pattern-gated-commit.html)” build pattern I wrote about and that will end up in my [Beautiful Builds Booklet](http://beautifulbuilds.com/): This\[[pre-tested commits](https://osherove.com/blog/2013/1/20/build-pattern-gated-commit.html)\] can lead to an overall feeling in the team that breaking the build is wrong, and is to be avoided at any cost. This might not be a healthy attitude, since the original purpose of a build process was always to find out problems. You might say that if the build breaks, then the build did it’s job. If the build never breaks, why have it in the first place? ### The Blame Game: This culture of “breaking the build is bad, and it’s your fault” can lead to developers hiding their efforts, in an effort not to look stupid in front of their peers. in essence, a private build can lead to moving from a group effort, into individual based comparison system “who breaks the build the most?”. ### Lost Productivity: More problematic: if developers always get the build failing **privately**, developers will feel they have to **solve** the build privately. when the build fails publicly, it can trigger help from the rest of the team to solve the problem faster since more brains are involved. What about making all the other team members wait to commit until the build finally passes? Isn’t that lost productivity? theoretically, yes. but it also is a great reason for the team to help out and make the build pass. It is a “Stop the line” mentality, which we like to adopt in lean circles. Thoughts? ## More in Build Bullet [All posts in Build Bullet](https://osherove.com/blog/category/build-bullet) - Apr 22, 2013 ### [Beautiful Builds: Release Compilation Step](https://osherove.com/blog/2013/4/23/beautiful-builds-release-compilation-step.html) - Feb 7, 2013 ### [Build Pattern: Cumulative Build](https://osherove.com/blog/2013/2/7/build-pattern-adopt-artifacts.html) - Jan 20, 2013 ### [Build Pattern: Gated Commit](https://osherove.com/blog/2013/1/20/build-pattern-gated-commit.html) - Jan 19, 2013 ### [Build Pattern: Extract Script](https://osherove.com/blog/2013/1/19/build-pattern-extract-script.html) --- title: "Build Pattern: Gated Commit" url: "https://osherove.com/blog/2013/1/20/build-pattern-gated-commit.md" canonical: "https://osherove.com/blog/2013/1/20/build-pattern-gated-commit.html" published: "2013-01-20T13:31:10" updated: "2013-01-20T13:31:10" tags: ["Build Bullet"] author: "Roy Osherove" description: "Other names: Pre-tested commit Gated Check-in Private Build Delayed Commit Symptoms: The build keeps breaking for trivial problems. Problem: Developers do not know what are the outcomes of committing their source code…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Build Pattern: Gated Commit By Roy Osherove January 20, 2013 In [Build Bullet](https://osherove.com/blog/category/build-bullet) **Historical article** · Originally published January 20, 2013; technical details may be outdated. ## Other names: - Pre-tested commit - Gated Check-in - Private Build - Delayed Commit ## Symptoms: The build keeps breaking for trivial problems. ## Problem: Developers do not know what are the outcomes of committing their source code into the master branch. so they blindly commit and wait to see the results. ## Forces: You want to check in (commit) your changes into the master source control, but you are afraid of breaking one of the immediate build configurations on the CI server. For example, you are not sure if all the tests in the nightly build will pass, and your machine is too slow to run the nightly build locally. You’d like to make sure, before you commit or merge into the master branch, that your changes won’t break. but this is very time consuming task locally. ## Solution: A gated commit is a process that can be supported by the CI server. It combines several steps, in several variations: - Developer Requests a gated commit **before** committing actual changes. - the CI server gets the current snapshot of files on the developer’s local machine through a local plugin to the text editor, usually. (in TFS this is called “shelving”) - The CI Server merges the current snapshot with the master source version, as a separate, temporary set of files. this is not being committed to the master branch. - The CI server then runs the specific build configuration requested by the developer , such as a nightly build, with the current code. this might include compilation, running tests, deployment etc. - if the build configuration passes, the temporary file set is committed to master. - if the build configuration fails, the temporary file set is discarded, and the developer is notified of the build failure, without interrupting the main master branch builds. - Developer now has a log file to go through and see what to fix before checking in. ## Examples: Teamcity provides a “[pre-tested commit](http://www.jetbrains.com/teamcity/features/delayed_commit.html)” feature. Install the teamcity plugin in visual studio, and get a new button that allows you to run the current sources as a pre-tested commit. if it passes, changes are committed to source control. ## Side effects: This can lead to an overall feeling in the team that breaking the build is wrong, and is to be avoided at any cost. This might not be a healthy attitude, since the original purpose of a build process was always to find out problems. You might say that if the build breaks, then the build did it’s job. This culture of “breaking the build is bad, and it’s your fault” can lead to developers hiding their efforts, in an effort not to look stupid in front of their peers. in essence, a private build can lead to moving from a group effort, into individual based comparison system “who breaks the build the most?”. More problematic: if developers always get the build failing **privately**, developers will feel they have to **solve** the build privately. when the build fails publicly, it can trigger help from the rest of the team to solve the problem faster since more brains are involved. ## More in Build Bullet [All posts in Build Bullet](https://osherove.com/blog/category/build-bullet) - Feb 7, 2013 ### [Build Pattern: Cumulative Build](https://osherove.com/blog/2013/2/7/build-pattern-adopt-artifacts.html) - Jan 20, 2013 ### [Tests and Builds are Made to be Broken](https://osherove.com/blog/2013/1/20/tests-and-builds-are-made-to-be-broken.html) - Jan 19, 2013 ### [Build Pattern: Extract Script](https://osherove.com/blog/2013/1/19/build-pattern-extract-script.html) - Jan 19, 2013 ### [Build Pattern: Fill In the Blanks](https://osherove.com/blog/2013/1/19/build-pattern-fill-in-the-blanks.html) --- title: "Build Pattern: Extract Script" url: "https://osherove.com/blog/2013/1/19/build-pattern-extract-script.md" canonical: "https://osherove.com/blog/2013/1/19/build-pattern-extract-script.html" published: "2013-01-19T23:40:43" updated: "2013-01-19T23:40:43" tags: ["Build Bullet"] author: "Roy Osherove" description: "This is a variation of Fill in the blanks and will become part of the Builds Book. Symptoms: You have multiple build scripts that contain parts that execute the same set of complicated actions, differing only by path…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Build Pattern: Extract Script By Roy Osherove January 19, 2013 In [Build Bullet](https://osherove.com/blog/category/build-bullet) **Historical article** · Originally published January 19, 2013; technical details may be outdated. This is a variation of [Fill in the blanks](https://osherove.com/blog/2013/1/19/build-pattern-fill-in-the-blanks.html) and will become part of the [Builds Book.](http://beautifulbuilds.com/) ## Symptoms: You have multiple build scripts that contain parts that execute the same set of complicated actions, differing only by path names, files names or other values used in the script. Changing these actions among many scripts is a big hassle (a.k.a [“Shotgun Surgery](http://en.wikipedia.org/wiki/Shotgun_surgery)”). ## Problem: Your build scripts are breaking the DRY rule. Don’t repeat yourself. ## Solution Extract the common set of actions into a new short build script, that receives as parameters, or environment variables the values that different between the various scripts. Then have the other scripts call the new script with the correct parameter values. ## Example: In one of my projects, as part of the deployment of a site, I also wanted to add a set of actions that makes sure the initial web page of the site was up after deploy. if not, the build should fail. It turns out that sometimes it takes the server a few seconds after reset or file change to get back to working shape, and meanwhile it returns various different codes like 403. So the script had to do the following: - loop - get the web page or response and write it to a file - read the file result  into a variable - if result was 404 or unknown to break the build - if the result was 403 then continue looping - wait one second - if the result contained the right text $text\_to\_find then build passes This set of actions was needed when deploying to the test server, staging server, and production server. I extracted only these actions to a new script named “check"\_site” and made the deploy scripts (there were different deploy scripts for production and test)  execute the check\_site script as part of their work. ## Possible Side Effects you might end up with many small scripts, without knowing in which order they are supposed to be executed. To mitigate this you might want to only have one MAIN script call all the other scripts, instead of various small sub scripts calling other sub scripts. If only one main script is in charge of sub script call flow, the build can be readable by looking at the main build script. ## More in Build Bullet [All posts in Build Bullet](https://osherove.com/blog/category/build-bullet) - Jan 20, 2013 ### [Tests and Builds are Made to be Broken](https://osherove.com/blog/2013/1/20/tests-and-builds-are-made-to-be-broken.html) - Jan 20, 2013 ### [Build Pattern: Gated Commit](https://osherove.com/blog/2013/1/20/build-pattern-gated-commit.html) - Jan 19, 2013 ### [Build Pattern: Fill In the Blanks](https://osherove.com/blog/2013/1/19/build-pattern-fill-in-the-blanks.html) - Jan 19, 2013 ### [Build Pattern: Location Agnostic Script](https://osherove.com/blog/2013/1/19/build-pattern-location-agnostic-script.html) --- title: "Build Pattern: Fill In the Blanks" url: "https://osherove.com/blog/2013/1/19/build-pattern-fill-in-the-blanks.md" canonical: "https://osherove.com/blog/2013/1/19/build-pattern-fill-in-the-blanks.html" published: "2013-01-19T17:35:54" updated: "2013-01-19T17:35:54" tags: ["Build Bullet"] author: "Roy Osherove" description: "Other names: DRY Build Scripts (Don’t Repeat Yourself) Infrastructure agnostic scripts Parameterized Scripts Fill In the Blanks Symptoms: You find yourself having to change the script in many places, because a single…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Build Pattern: Fill In the Blanks By Roy Osherove January 19, 2013 In [Build Bullet](https://osherove.com/blog/category/build-bullet) **Historical article** · Originally published January 19, 2013; technical details may be outdated. ## Other names: - DRY Build Scripts (Don’t Repeat Yourself) - Infrastructure agnostic scripts - Parameterized Scripts - Fill In the Blanks ## Symptoms: - You find yourself having to change the script in many places, because a single “thing” has changed. - For example, the name of the remote machine you are deploying to has changed, and that name has to be changed in several places in the build script. - Another example: you want to run the same set of actions both on the debug source directory, and on the release source directory. ## Problem: - The script is breaking the “Don’t repeat yourself” rule, that many programmers know and love (sometimes they love to hate it).There is not “Single source of truth” about specific knowledge in the script. For example, there is no single location that defines what is the deployment target machine name. Instead, that machine name appears in many different places in the script. ## Solution: There are many ways to solve this problem with build scripts, but they all involve using variables inside the build script, and then “fill in the blanks” just once per script: - **Script variables** as the single source of truth: You can define variables in your script. (for example, a variable that stands for the machine name to deploy to, that gets replaced in the script with its underlying value in all places it is used). The use these variables everywhere you see repetition. - **Script Configuration File:** Assuming you have the ability to define script variables, you can read the value of these variables from a configuration file before running the script. This gives an added bonus of not having to much around with the script itself when your IT admin suddenly changes your deployment machine. - **Environment Variables**: Much like the previous solution, environment variables have an added bonus – they are usually very easy to set from within your CI server (such as TeamCity), so that there is now a clear separation between the script knowing about the source files, and the CI build configuration knowing about the IT structure and requirements. In my own builds I use this technique a lot, and might have 10 or 20 environment variables set by the build configuration in the CI server, that are used by the build script that is in source control. That way you can have the same deploy script be used to deploy to a test, staging or production machine, with a simple environment variable change. - **Script Parameters:** This is also useful when using a CI server – instead of setting env. variables, the ci build configuration calls the build script with parameters in the command line call. these are then used to set values for variables inside the build script. ## Possible Side Effects: - **Unclear Script Requirements to run**. It can be hard to find all the possible needed environment variables or parameters needed to run the script successfully. It is up to the script creator to maintain and document the list of needed parameters as much as possible. - **Hard to Debug**.To be able to run the build script on your local machine you will have to provide all the needed env. variables or parameters locally.  If the build system supports variables that can be overridden by environment variables, but that have a default value if there are no environment variables, this can ease this pain. ## More in Build Bullet [All posts in Build Bullet](https://osherove.com/blog/category/build-bullet) - Jan 20, 2013 ### [Build Pattern: Gated Commit](https://osherove.com/blog/2013/1/20/build-pattern-gated-commit.html) - Jan 19, 2013 ### [Build Pattern: Extract Script](https://osherove.com/blog/2013/1/19/build-pattern-extract-script.html) - Jan 19, 2013 ### [Build Pattern: Location Agnostic Script](https://osherove.com/blog/2013/1/19/build-pattern-location-agnostic-script.html) - Jan 7, 2013 ### [Build Pattern: Shipping Skeleton](https://osherove.com/blog/2013/1/7/build-pattern-shipping-skeleton.html) --- title: "Build Pattern: Location Agnostic Script" url: "https://osherove.com/blog/2013/1/19/build-pattern-location-agnostic-script.md" canonical: "https://osherove.com/blog/2013/1/19/build-pattern-location-agnostic-script.html" published: "2013-01-19T13:38:20" updated: "2013-01-19T13:38:20" tags: ["Build Bullet"] author: "Roy Osherove" description: "Symptoms: Running the build script on a machine where it was never run before requires extra pre-work to make the machine ready, such as mapping drives, creating a special build script folder etc. Problem: The build…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Build Pattern: Location Agnostic Script By Roy Osherove January 19, 2013 In [Build Bullet](https://osherove.com/blog/category/build-bullet) **Historical article** · Originally published January 19, 2013; technical details may be outdated. Symptoms: - Running the build script on a machine where it was never run before requires extra pre-work to make the machine ready, such as mapping drives, creating a special build script folder etc. Problem: - The build script uses hardcoded file and directory paths to find its dependent source files. For example, it searches for a solution file in Z:/SolutionFileName . That means the build script has specific requirements from its environment before running, which causes lots of menial, boring work to do before being able to run it. Solution: - Have the script use only relative paths to find files. - Make the script part of source control, or deploy it into the root of the source control branch to build, so that it has access to all the files it needs ## More in Build Bullet [All posts in Build Bullet](https://osherove.com/blog/category/build-bullet) - Jan 19, 2013 ### [Build Pattern: Extract Script](https://osherove.com/blog/2013/1/19/build-pattern-extract-script.html) - Jan 19, 2013 ### [Build Pattern: Fill In the Blanks](https://osherove.com/blog/2013/1/19/build-pattern-fill-in-the-blanks.html) - Jan 7, 2013 ### [Build Pattern: Shipping Skeleton](https://osherove.com/blog/2013/1/7/build-pattern-shipping-skeleton.html) - Dec 6, 2012 ### [Build Bullet #5– How to make your builds FAST using DRY and SRP Principles](https://osherove.com/blog/2012/12/6/build-bullet-5ndash-how-to-make-your-builds-fast-using-dry-a.html) --- title: "Elastic, Agile, Adaptive Leadership Workshop, January 31 2013, Oslo" url: "https://osherove.com/blog/2013/1/16/elastic-agile-adaptive-leadership-workshop-january-31-2013-o.md" canonical: "https://osherove.com/blog/2013/1/16/elastic-agile-adaptive-leadership-workshop-january-31-2013-o.html" published: "2013-01-16T23:03:11" updated: "2013-01-16T23:03:11" tags: [] author: "Roy Osherove" description: "This January, the 31st, I will be giving a two day Workshop for team leaders, architects, and scrum masters, titled Elastic, Agile, Adaptive Leadership. If you’re interested in joining, please contact me directly (or…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Elastic, Agile, Adaptive Leadership Workshop, January 31 2013, Oslo By Roy Osherove January 16, 2013 **Historical article** · Originally published January 16, 2013; technical details may be outdated. This January, the 31st, I will be giving a two day Workshop for team leaders, architects, and scrum masters, **titled Elastic, Agile, Adaptive Leadership.** > If you’re interested in joining, [please contact me directly](https://osherove.com/contact) (or email roy at osherove.com) so I can save you a seat. We need only two more people to finalize course registration. I’ll be happy to see one of my blog readers there! In this 2 day workshop, 30% of the time is dedicated to exercises. we will cover: - The three basic stages of team abilities (Survival, Learning, Self Organization), - Elastic leadership concepts - The leader manifesto and reasoning - Influence forces and understanding why people do what they do - How to grow your team to be self organizing - Why most team's are not really ready to become agile yet (and what to do about it) - How to deal with difficult behavior in the team. - How to lead self organizing teams - Comparing elastic leadership with the cynefin framework and other frameworks. **Audience:** Architects, Technical and non technical team leaders, scrum masters, soon-to-be leaders, project managers, senior developers, consultants. No experience in management needed, but at least one year experience working/leading in a software team. This is based on my book “[Notes to a Software Team Leader](https://leanpub.com/teamleader)” This will be held at Bouvet Oslo HQ, with the cost of 11,900 NOK per person (includes food). Again, f you’re interested in joining, [please contact me directly](https://osherove.com/contact) (or email roy at osherove.com) so I can save you a seat. --- title: "When I have to support an old vb6 project" url: "https://osherove.com/blog/2013/1/12/when-i-have-to-support-an-old-vb6-project.md" canonical: "https://osherove.com/blog/2013/1/12/when-i-have-to-support-an-old-vb6-project.html" published: "2013-01-12T22:45:39" updated: "2013-01-12T22:45:39" tags: [] author: "Roy Osherove" description: "When I try to read Prolog When devops do their thing The first time I logged into realtime chat in a BBS every company party ever When everything works beautifully" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # When I have to support an old vb6 project By Roy Osherove January 12, 2013 **Historical article** · Originally published January 12, 2013; technical details may be outdated. [![cat](https://osherove.com/img/sq/30738857-Windows-Live-Writer-a2efadf431b9_14A0A.gif)](https://osherove.com/s/files/Windows-Live-Writer-a2efadf431b9_14A0A.gif) When I try to read Prolog ![](https://osherove.com/img/ext/25.media.tumblr.com_c2099421468f87c708ff361b754331da_tumblr_mggk5pIOex1ruhvpfo2_r1_250.gif) When devops do their thing ![](https://osherove.com/img/wb/0d1_s3-ec.buzzfed.com_static_enhanced_webdr01_2012_12_4_14_anigif_enhanced-buzz-609-1354650610-7.gif) The first time I logged into realtime chat in a BBS ![](https://osherove.com/img/ext/i.imgur.com_iCUzi.gif) every company party ever ![](https://osherove.com/img/ext/i.imgur.com_CgBBg.gif) When everything works beautifully ![](https://osherove.com/img/ext/i.imgur.com_joSGc.gif) --- title: "Upcoming Courses (C#, Java, Ruby, IOS, MVC and more) (Q1 2013)" url: "https://osherove.com/blog/2013/1/11/upcoming-courses-c-java-ruby-ios-mvc-and-more-q1-2013.md" canonical: "https://osherove.com/blog/2013/1/11/upcoming-courses-c-java-ruby-ios-mvc-and-more-q1-2013.html" published: "2013-01-11T14:27:07" updated: "2013-01-11T14:27:07" tags: [] author: "Roy Osherove" description: "So, I have lots of new courses that I am doing in Oslo . If you are interested, or if you want me to teach these course in your place, or organize public courses like these in your country, ping me directly by emailing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Upcoming Courses (C\#, Java, Ruby, IOS, MVC and more) (Q1 2013) By Roy Osherove January 11, 2013 **Historical article** · Originally published January 11, 2013; technical details may be outdated. So, I have lots of new courses **that I am doing in Oslo**. If you are interested, or if you want me to teach these course in your place, or organize public courses like these in your country, ping me directly by emailing **roy at osherove.com** or use the form at [http://contact.osherove.com](https://osherove.com/contact) You can [get the full list here](http://lanyrd.com/profile/roy-8474/future/speaking/) on lanyrd,  [or here](http://www.bouvet.no/BouvetWEB/Kurs.aspx?catid=162e6100-e21d-4048-b9ee-1195a36fffff&newsid=eeebf4f3-777b-4a3e-803b-0863dfa28507) on the bouvet site (we are working on making that site not suck)(search for osherove) here is a partial list: **Agile, Adaptive, Elastic Leadership (Jan 31)** In this 2 day course, 30% of the time is dedicated to exercises. we will cover: The three basic stages of team abilities (chaos, learning, self organization), elastic leadership concepts, the team leader manifesto and reasoning, influence forces and understanding why people do what they do, how to grow your team to be self organizing, and why most team's are not really ready to become agile yet (and what to do about it), how to deal with difficult behavior in the team. Also, we will cover how to lead self organizing teams, comparing elastic leadership with the cynefin framework and other frameworks. Audience: Architects, Technical and non technical team leaders, scrum masters, soon-to-be leaders, project managers, senior developers, consultants. No experience in management needed, but at least one year experience working/leading in a software team. **The art of unit testing in Java (Jan 22!)** In this 3 day course we will have 50% of the time in exercises in pairs. We will take a look at the following subjects: How to write your first unit tests, using JUnit vs. other frameworks. Also: how to write unit tests that are readable, maintainable and trustworthy, using the test frameworks and test runners, The Concept of Mocks, Stubs and Fakes, Hand Written Fakes, Isolation (Mocking) Frameworks, Pros and cons of hand written vs. isolation frameworks, constrained vs. unconstrained isolation frameworks, Refactoring Techniques on legacy untestable code, using an unconstrained isolation framework with legacy code (powermock, or JMockIt),Review of existing open source tests with DOs and DONTs, Test Hierarchies more. Audience: No experience needed except basic Java knowledge. **The Art Of Unit Testing in .NET (Feb 5!)** In this 4 day course we will have 60% of the time in exercises in pairs. We will take a look at the following subjects: How to write your first unit tests, using NUnit , and compare it to mstest. Also: how to write unit tests that are readable, maintainable and trustworthy, using the test frameworks and test runners, The Concept of Mocks, Stubs and Fakes, Hand Written Fakes, Isolation (Mocking) Frameworks, Pros and cons of hand written vs. isolation frameworks, constrained vs. unconstrained isolation frameworks, Refactoring Techniques on legacy untestable code, using a profiler framework with legacy code (typemock),Review of existing open source tests with DOs and DONTs, Test Hierarchies and extending the test framework. Audience: .NET developers with no experience unit testing or some. No experience needed except from C#. **Unit Testing Patterns in Sharepoint workshop (FEB 4!)** In this 1 day course we will take a look at the following subjects: How to write your first unit tests, using NUnit , and compare it to mstest.  Write your first tests with sharepoint. Differentiate between unit and integration tests. Also learn how to fake anything with a framework like Typemock Isolator,  how to write unit tests that are readable, maintainable and trustworthy, the Concept of Mocks, Stubs and Fakes, Hand Written Fakes, Isolation (Mocking) Frameworks, Pros and cons of hand written vs. isolation frameworks, constrained vs. unconstrained isolation frameworks, Refactoring Techniques on legacy untestable code,  and more. Audience: .NET developers with SharePoint experience. No unit testing experience needed. **Test Driven EpiServer Development (FEB 27)** In this 1 day course we will take a look at the following subjects: How to write your first unit tests, using NUnit , and compare it to mstest.  Write your first tests with EpiServer. What should you write tests for in EpiServer? Differentiate between unit and integration tests. Testing Controllers, models and views. Also learn how to fake anything with a framework like Typemock Isolator,  how to write unit tests that are readable, maintainable and trustworthy, the Concept of Mocks, Stubs and Fakes, Hand Written Fakes, Isolation (Mocking) Frameworks, Pros and cons of hand written vs. isolation frameworks, constrained vs. unconstrained isolation frameworks, Refactoring Techniques on legacy untestable code,  and more. Audience: .NET developers with EpiServer experience. No unit testing experience needed.  **Beginning Ruby (FEB 28)** In this 1 day workshop we will take a look at Ruby, and why so many people fall in love with the language for many different purposes. We will see Ruby in many different scenarios: from domain specific tools like Rake, to full grown frameworks like Sinatra and rails,  to iphone programming with ruby. Audience:  developers of any language. No unit testing experience needed. **Refactoring Skills for Test Driven Development (march 07)** In this 2 day course we will take a look at interesting ways to make your code well designed, while practicing test driven design and development. We will also discuss refactoring patterns for legacy code, and have many exercises in which you will be asked to refactor, or design some code, in a test driven, or in a test-after technique. Audience: .NET developers unit testing experience. **Advanced TDD Subjects for .NET Developers - R...** In this 3 day course we will have 50% of the time in exercises in pairs. We will take a look at the following subjects: On the last day, we will try to write tests against your REAL code, so bring some real code you’d like to test in class. Mocks, Stubs and Fakes, Hand Written Fakes, Isolation (Mocking) Frameworks, Pros and cons of hand written vs. isolation frameworks, proxy based vs. profiler based isolation frameworks, Refactoring Techniques on legacy untestable code, using a profiler framework with legacy code (typemock),Review of existing open source tests with DOs and DONTs, Test Hierarchies, extending the test framework. Audience: .NET developers with experience in unit testing. **Typemock Ninja Secrets Workshop** In this 1 day course, Roy Osherove, previously the CTO at Typemock.com, will take you on a wild tour of all the things you didn’t even know you could do with Typemock Isolator – one of the most powerful isolation (mocking) frameworks in .NET, and the first unconstrained framework in .NET. From creating your own domain specific isolation framework, to extending typemock itself, to changing the behavior of other people’s compiled code to suit your benefit. Audience: .NET developers with some unit testing experience. No typemock experience needed. **Beginning RSpec and TDD workshop (Ruby)** In this 1 day course we will take a look at test driven and Behavior Driven Development (TDD and BDD), and how rspec allows us to achieve them in Ruby. Half of the time will be devoted to exercise, in which you will develop a small set of logic, driven by rspec. We will also cover how to write readable, trustworthy, maintainable specs and tests. Audience: Beginning and advanced Ruby developers interested in learning unit testing and tdd. **TDD in IOS workshop** In this 1 day workshop we will take a look at test driven and Behavior Driven Development (TDD and BDD), and how we can achieve them in an IOS environment such as xcode, or other tools. Half of the time will be devoted to exercise, in which you will develop a small set of logic, driven by tests. We will also cover how to write readable, trustworthy, maintainable specs and tests. Audience: Beginning and advanced IOS developers (iphone, ipad) interested in learning unit testing and tdd. **The Art Of Unit Testing and TDD Masterclass in .NET** In this 5 day course we will have 70% of the time in exercises in pairs. On the last day, we will try to write tests against your REAL code, so bring some real code you’d like to test in class. We will take a look at the following subjects: How to write your first unit tests, using NUnit , and compare it to mstest. Also: how to write unit tests that are readable, maintainable and trustworthy, using the test frameworks and test runners, The Concept of Mocks, Stubs and Fakes, Hand Written Fakes, Isolation (Mocking) Frameworks, Pros and cons of hand written vs. isolation frameworks, constrained vs. unconstrained isolation frameworks, Refactoring Techniques on legacy untestable code, using a profiler framework with legacy code (typemock),Review of existing open source tests with DOs and DONTs, Test Hierarchies and extending the test framework. Audience: .NET developers with no experience unit testing or some. No experience needed except from C#. **Test Driven ASP.NET MVC Patterns** In this 1 day course we will take a look at the following subjects: How to write your first unit tests, using NUnit , and compare it to mstest.  Write your first tests with ASP.NET MVC. What should you write tests for in ASP.NET MVC? Differentiate between unit and integration tests. Testing Controllers, models and views. How to write unit tests that are readable, maintainable and trustworthy. the Concept of Mocks, Stubs and Fakes, Hand Written Fakes, Isolation (Mocking) Frameworks, Pros and cons of hand written vs. isolation frameworks, constrained vs. unconstrained isolation frameworks, and more. Audience: .NET developers with asp.net mvc experience. No unit testing experience needed. **Beginning Node.js workshop** In this 1 day workshop we will take a look at node.js, and how to write simple servers and APIs with it, how to write tests with it, and get up to speed on pros and cons of using Node.js. Audience:  developers of any language with some javascript or java experience. No unit testing experience needed. **Introduction Ruby and rails for .NET and Java...** In this 1 day course you´ll join Roy Osherove in discovering why so many organizations and startups around the world are choosing Ruby and Ruby On Rails for their new web projects, and why producing a web project with Rails can take a fifth of the time it would take on Java or .NET. Learn about ruby basics, rails basics, and build a simple blogging application on your laptop. **TDD in .NET from scratch to master - Roy Oshe...** In this 3 day course we will have 50% of the time in exercises in pairs. We will take a look at the following subjects: How to write your first unit tests, using NUnit , and compare it to mstest. Also: how to write unit tests that are readable, maintainable and trustworthy, using the test frameworks and test runners, The Concept of Mocks, Stubs and Fakes, Hand Written Fakes, Isolation (Mocking) Frameworks, Pros and cons of hand written vs. isolation frameworks, proxy based vs. profiler based isolation frameworks, Refactoring Techniques on legacy untestable code, using a profiler framework with legacy code (typemock),Review of existing open source tests with DOs and DONTs, Test Hierarchies and extending the test framework. Audience: .NET developers with no experience unit testing or some. No experience needed except from C#. **Web Development with Ruby** In this 1 day course you´ll join Roy Osherove in discovering Ruby On Rails, Sinatra, and other web frameworks based on Ruby. Discover why so many companies choose Ruby web dev frameworks for their new web projects, and why producing a web project with Rails, or an API project with Sinatra, can take a fifth of the time it would take on more traditional languages such as Java or .NET. --- title: "Build Pattern: Shipping Skeleton" url: "https://osherove.com/blog/2013/1/7/build-pattern-shipping-skeleton.md" canonical: "https://osherove.com/blog/2013/1/7/build-pattern-shipping-skeleton.html" published: "2013-01-07T21:31:09" updated: "2013-01-07T21:31:09" tags: ["Build Bullet"] author: "Roy Osherove" description: "I am slowly realizing that perhaps my concepts for the build book could be better serving as reusable patterns for creating builds, solving specific problems. Pattern: Shipping Skeleton other names: “Hello World”,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Build Pattern: Shipping Skeleton By Roy Osherove January 7, 2013 In [Build Bullet](https://osherove.com/blog/category/build-bullet) **Historical article** · Originally published January 7, 2013; technical details may be outdated. I am slowly realizing that perhaps my concepts for [the build book](http://beautifulbuilds.com/) could be better serving as reusable patterns for creating builds, solving specific problems. ## Pattern: Shipping Skeleton other names: “Hello World”, Walking Skeleton ([based on XP](http://alistair.cockburn.us/Walking+skeleton)), Tracer Bullet Build, ## Problem: Remember when you had a working product, but you could not ship it, or shipping and deploying it took a long time, or could not be estimated?. By that time, however, your product was too big and your free time was too short to start creating a working automated build and deploy process. As time went on, shipping became even more and more of a nightmarish manual task, and automating it became more and more of a problem. Now you're at the start of a new project, and you want to avoid all that pain in your new project. ## Forces: You want to avoid the pain of automating the build and deploy cycle. But you also don’t want to spend too much time working on it. ## Solution: Before starting development on the new product, **start with a shipping skeleton --** An empty solution with nothing but a “hello world” output, that has the basic automated build and deploy cycle working. You should be able to ship this empty hello world project with the click of a button, in a matter of minutes. once the shipping skeleton is in place, you can start filling out the product with features, and growing the build scripts in small increments alongside the product. Basic Shipping Skeleton: 1) A Build script (in source control) for compiling the current source 2) A Continuous Integration Server that has a “CI” build configuration, triggered by code check-in, that invokes build script from the previous bullet (also see [Build Script injection](https://osherove.com/blog/2012/12/30/build-patterns-script-injection.html) for more on this pattern) 3) Another build configuration on the CI server for “**Deploy**”. This can be either deploy to test, or deploy to production. Usually you want at least a “deploy to test” succeeding before having a “deploy to production” CI build Configuration. This “Deploy to test” gets invoked automatically upon “CI” configuration passing. Later on, as the build process matures, you can change this, but for now, knowing that the product is deployable as soon as possible, while it changes so much, is important for quick feedback cycles. 4) If there isn’t a “Deploy to production”, create it. This deploys the product to a production machine. If it is a web site, it deploys the website to a web server. if it is an installer, it deploys and runs the installer on a machine that will act as a “production” machine. either mimicking a user machine, or or an enterprise machine where the product will be installed. for web servers, make them as real as possible, all the way, even by making them public (although possibly password protected). This gives you the chance to make the web server become real production by the switch of a dns setting. ## Summary By starting with a shipping skeleton, you give yourself several benefits: - You can ship at will - Adding features to the build and deploy cycle is a continuous action that takes a few minutes each day, if at all. - You can receive very quick feedback on features or mockup-features you are building into your product. **Thoughts? Comments? Does this make sense to you? is it the stupidest thing ever?** ## More in Build Bullet [All posts in Build Bullet](https://osherove.com/blog/category/build-bullet) - Jan 19, 2013 ### [Build Pattern: Fill In the Blanks](https://osherove.com/blog/2013/1/19/build-pattern-fill-in-the-blanks.html) - Jan 19, 2013 ### [Build Pattern: Location Agnostic Script](https://osherove.com/blog/2013/1/19/build-pattern-location-agnostic-script.html) - Dec 6, 2012 ### [Build Bullet #5– How to make your builds FAST using DRY and SRP Principles](https://osherove.com/blog/2012/12/6/build-bullet-5ndash-how-to-make-your-builds-fast-using-dry-a.html) - Nov 27, 2012 ### [Build Bullet #4: Rolling Builds and the Plane of Confidence](https://osherove.com/blog/2012/11/27/build-bullet-4-rolling-builds-and-the-plane-of-confidence.html) --- title: "Build Patterns: Script Injection" url: "https://osherove.com/blog/2012/12/30/build-patterns-script-injection.md" canonical: "https://osherove.com/blog/2012/12/30/build-patterns-script-injection.html" published: "2012-12-30T14:39:29" updated: "2012-12-30T14:39:29" tags: [] author: "Roy Osherove" description: "I am slowly realizing that perhaps my concepts for the build book could be better serving as reusable patterns for creating builds, solving specific problems. This is a test to see how well this idea holds up in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Build Patterns: Script Injection By Roy Osherove December 30, 2012 **Historical article** · Originally published December 30, 2012; technical details may be outdated. I am slowly realizing that perhaps my concepts for [the build book](http://beautifulbuilds.com/) could be better serving as reusable patterns for creating builds, solving specific problems. This is a test to see how well this idea holds up in reality. If you like it, and especially if you do NOT like it, please let me know in the comments why, and how you would change it. I think this is a topic that can be of great use to many people. If we frame it right, it can be more easily distributed and understood. I am not even sure if the sections below are what I would “need” for a pattern of sorts. ## Pattern: Script Injection ## Problem: You have a continuous integration process running nicely, but sometimes you need to be able to build older versions of your product. Unfortunately, in older versions of your product in source control, the structure of files is different than the one that your build actions are set up to use. For example, a set of directories that exists in the latest version in source control, and is used in deployment, does not exist in the source control version from 3 months ago. So your build fails because it expects certain files or directories to be there, which did not exist in that source control version. ## Forces: You want the set of automated actions in your build to match exactly the current version and structure of your product files in source control. ## Solution: Separate your build script actions into two parts: - The CI side script, which lives in the continuous integration system. - The source control side script. ## Source control side script one or more script files that are inside the file structure of your product in source control. These scripts change based on the current product version. It is important that this is the same branch that is used within the CI system to build the product, so that the CI side scripts have access to the source control side scripts. Developers should have full access to the source control side scripts. Source Control side scripts contain the knowledge about the current structure of the files, and which actions are relevant for the current product version. So they get to be changed with every product version. They will usually use relative path because they will be executed by CI side scripts on a remote build server. ## CI Side Scripts/Actions These actions act as very simple “dumb” agents. They get the latest version of the source control scripts (and possibly all other product files if needed), and trigger the build scripts as a command line action. ## Summary By separating the version aware knowledge to a script inside source control, and triggering it via a CI side script that contains only parameters and other “context” data to invoke the source control scripts correctly, we “inject” the version aware knowledge of what the build script should do, into a higher level CI process trigger, that does not care about product file structure, but still gives us the advantages with had before with a CI process. **Thoughts? Comments? Does this make sense to you? is it the stupidest thing ever?** Does the fact that [I now wear glasses](https://twitter.com/RoyOsherove/status/285360033015947264/photo/1) help in any way? --- title: "When they tell me I have to use MSBuild to automate our CI Process" url: "https://osherove.com/blog/2012/12/12/when-they-tell-me-i-have-to-use-msbuild-to-automate-our-ci-p.md" canonical: "https://osherove.com/blog/2012/12/12/when-they-tell-me-i-have-to-use-msbuild-to-automate-our-ci-p.html" published: "2012-12-12T22:32:30" updated: "2012-12-12T22:32:30" tags: ["MSBuild", "Off Topic"] author: "Roy Osherove" description: "When they tell me I have to use MSBuild to automate our CI Process When I see a terminal keyboard junkie doing their thing When we are starting a brand new green field project When they approve the budget for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # When they tell me I have to use MSBuild to automate our CI Process By Roy Osherove December 12, 2012 In [MSBuild](https://osherove.com/blog/category/msbuild), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 12, 2012; technical details may be outdated. When they tell me I have to use MSBuild to automate our CI Process ![](https://osherove.com/img/ext/i.imgur.com_OelVq.gif) When I see a terminal keyboard junkie doing their thing When we are starting a brand new green field project ![](https://osherove.com/img/ext/i.imgur.com_K2o7L.gif) When they approve the budget for FinalBuilder so we don’t have to use MSBuild ![](https://osherove.com/img/ext/images.wikia.com_glee_images_7_7b_Happy_dance.gif) When they approve the resharper licenses ![](https://osherove.com/img/wb/2355f632_i.minus.com_i2wTF9uHxOvOC.gif) When my build crashes but is overshadowed by a separate project build’s crash ![](https://osherove.com/img/ext/i.imgur.com_bjIGJ.gif) when I can’t figure out how to test something ![](https://osherove.com/img/ext/i.imgur.com_oEQvr.gif) when I pair with someone in a programming language I have almost no experience with ![](https://osherove.com/img/ext/i.imgur.com_CDXRi.gif) when someone comes back after a two day scrum master class ![](https://osherove.com/img/ext/i.imgur.com_2atp1.gif) the first time you try to automatically deploy to a staging server ![](https://osherove.com/img/ext/i.imgur.com_sd1ld.gif) When my family in Israel complains about the cold weather, while I am living in Norway ![](https://osherove.com/img/ext/i.imgur.com_L24cy.gif) when I arrive at a project that started 5 years ago ![](https://osherove.com/img/ext/i.imgur.com_2O3WS.gif) When I look at a piece of code I want to refactor![](https://osherove.com/img/ext/i.imgur.com_xbXVj.gif) When they tell me there have been new enhancements to CodePlex.com ![](https://osherove.com/img/ext/i.imgur.com_8YUXC.gif) ## More in MSBuild [All posts in MSBuild](https://osherove.com/blog/category/msbuild) - Jun 19, 2006 ### [MSBuild SideKick - Fixed to use with Team Build](https://osherove.com/blog/2006/6/19/msbuild-sidekick-fixed-to-use-with-team-build.html) --- title: "Build Bullet #5– How to make your builds FAST using DRY and SRP Principles" url: "https://osherove.com/blog/2012/12/6/build-bullet-5ndash-how-to-make-your-builds-fast-using-dry-a.md" canonical: "https://osherove.com/blog/2012/12/6/build-bullet-5ndash-how-to-make-your-builds-fast-using-dry-a.html" published: "2012-12-06T21:25:24" updated: "2012-12-06T21:25:24" tags: ["Build Bullet"] author: "Roy Osherove" description: "(this will become part of my upcoming booklet on beautiful builds ) One of the things that kept frustrating me when I was working on various types of build configurations in our CI server, was that each build in a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Build Bullet \#5– How to make your builds FAST using DRY and SRP Principles By Roy Osherove December 6, 2012 In [Build Bullet](https://osherove.com/blog/category/build-bullet) **Historical article** · Originally published December 6, 2012; technical details may be outdated. > _(this will become part of_ [_my upcoming booklet on beautiful builds_](http://beautifulbuilds.com/)_)_ One of the things that kept frustrating me when I was working on various types of build configurations in our CI server, was that each build in a rolling wave would take longer than the one before it. The **CI build** was the fastest, the **nightly build** was slower, because it did all the work of CI (compile, run tests) plus all the other work a nightly needed (run slow tests, create installer etc..). The **Deployment to test** build would maybe just do the work of the CI and then deploy, or, in other projects, would do the work of nightly, then deploy, because wouldn’t you want to deploy something only after it has been tested? And lastly, **production deploy builds** took the longest, because they had to be “just perfect”. so they ran everything before doing anything. That sucked, because at the time, I did not discover one of the most important features that my current CI tool had : the ability to share **artifact**s between builds. Artifacts are the output of the build actions. these could be binary compiled files, or they could be configuration files, or maybe just a log file, or just the source files that were used in the build , from source control. **Realization** Once I realized that build configurations can “publish” artifacts when they finish successfully, and that other build configurations can then “use: those artifacts in their own work, things started falling into place. I no longer needed to re-do all the things in all the builds. Instead, I can use the [DRY](http://en.wikipedia.org/wiki/Don't_repeat_yourself) (Don’t repeat yourself) principle in my build scripts [(remember that build scripts are kept in source control, and are simply executed by a CI build configuration that provides them with context, such as environment parameters, or the artifacts from a previous build).](https://osherove.com/blog/2012/11/17/build-bullet-1-use-version-aware-build-scripts.html) Instead, I can make each [rolling wave build](https://osherove.com/blog/2012/11/27/build-bullet-4-rolling-builds-and-the-plane-of-confidence.html), only do one small thing [(single responsibility principle](http://en.wikipedia.org/wiki/Single_responsibility_principle)), that gets added on top of the artifacts shared by the build before it. **For example:** - The CI Build Only gets the latest version from source control, compiles in debug mode, and runs the fastest tests. Then it **published the source and compiled binaries for other builds to use later on**. Takes the same amount of time as the previously mentioned CI build. - The Nightly build gets the artifacts from the latest successful CI Build, and only: compiles in RELEASE mode, runs the slow tests, creates installers, and **publishes the installer, the source, and the binaries for later builds**. Notice how it does not even need to get anything from source control, since those files are already part of the artifacts (depending on the amount of source this might not be a good idea to publish source artifacts due to slowness, but that depends on the size of the project). takes half the time of the previously mentioned nightly build. - The Deploy (to test) build, gets the installer from the nightly build that last passed successfully,  and deploys it to a machine somewhere. It does not compile, or run any tests**. It publishes the Installer it used.** takes 30 seconds. - The Deploy (to Staging) will just get the latest successful installer build artifacts from (deploy to test) builds, and deploy them to staging, and also **publish** the installer it used. Takes 30 seconds. - The Deploy (to Production) will just get the latest successful installer build artifacts from (deploy to staging) builds, and deploy them to production, and also **publish** the installer it used. Takes 30 seconds. Notice how with artifact reuse, I am able to reverse the time trend with builds. The more “advanced” a build is along the deployment pipeline, the faster it can become. And Because each build in the deploy pipeline is only getting artifacts of successful builds, we can be sure that if we got all the way to this stage, then all needed steps have been taken to be able to arrive at this situation (we ran all the tests, compiled all the source…) ## More in Build Bullet [All posts in Build Bullet](https://osherove.com/blog/category/build-bullet) - Jan 19, 2013 ### [Build Pattern: Location Agnostic Script](https://osherove.com/blog/2013/1/19/build-pattern-location-agnostic-script.html) - Jan 7, 2013 ### [Build Pattern: Shipping Skeleton](https://osherove.com/blog/2013/1/7/build-pattern-shipping-skeleton.html) - Nov 27, 2012 ### [Build Bullet #4: Rolling Builds and the Plane of Confidence](https://osherove.com/blog/2012/11/27/build-bullet-4-rolling-builds-and-the-plane-of-confidence.html) - Nov 18, 2012 ### [Build Bullet #3– Start Products with an Empty Build and Deploy Pipeline](https://osherove.com/blog/2012/11/18/build-bullet-3ndash-start-products-with-an-empty-build-and-d.html) --- title: "Build Bullet #4: Rolling Builds and the Plane of Confidence" url: "https://osherove.com/blog/2012/11/27/build-bullet-4-rolling-builds-and-the-plane-of-confidence.md" canonical: "https://osherove.com/blog/2012/11/27/build-bullet-4-rolling-builds-and-the-plane-of-confidence.html" published: "2012-11-27T13:42:46" updated: "2012-11-27T13:42:46" tags: ["Build Bullet"] author: "Roy Osherove" description: "When I check in code I have been working on, I feel: 1. I want to wait for the build result 2. I don’t want to waste time waiting for the build results, doing nothing 3. But I fear doing something in the code until I’m…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Build Bullet \#4: Rolling Builds and the Plane of Confidence By Roy Osherove November 27, 2012 In [Build Bullet](https://osherove.com/blog/category/build-bullet) **Historical article** · Originally published November 27, 2012; technical details may be outdated. When I check in code I have been working on, I feel: 1.    I want to wait for the build result 2.    I don’t want to waste time waiting for the build results, doing nothing 3.    But I fear doing something in the code until I’m sure I didn’t break anything Supposedly, this is where a CI build configuration comes into place. CI builds are supposed to be as fast as possible so we can get feedback about what we checked in as quickly as possible and get back to work. But the tradeoff is that CI builds also do fewer things so that they can become faster, Thus leaving you with a sense of some risk, even if the build passed. This is why I like to have “**Rolling Builds**”. I like to have builds trigger each other in the Continuous Integration Server: •    A Check-in triggers the CI build •    A successful CI build triggers a nightly build. •    A successful nightly build triggers a deploy to test build. I think of the builds now as single waves crashing on my shoreline. Each build is a slightly bigger wave. Each wave crashing on the shore brings with it a layer of confidence in the code. And because they happen serially, I can choose to just relax and watch the waves of increasing confidence crash on the shore, or I can choose to continue coding right after the first wave of confidence. As I program, the next waves of build results hit the shoreline, and my notification tray tells me what that wave brought with it. Another “green” result wave tells me to go on about my business. A “red” wave tells me to stop and see what happened. But I always wait for at least the first wave to come ashore and tell me what’s going on. I need that little piece of information that tell me “seems legit so far” so I can feel 50@5 good about going back to coding. If my changes were big, I might wait until the next wave to see what to do. So my confidence after check in is not a black or white result. It is a continuous plane of increasing confidence on the code that I am writing, that is topped off when the code is deployed to production. > **Note**: This text is part of a [“Beautiful Builds” Booklet](http://beautifulbuilds.com/) I am working on. ## More in Build Bullet [All posts in Build Bullet](https://osherove.com/blog/category/build-bullet) - Jan 7, 2013 ### [Build Pattern: Shipping Skeleton](https://osherove.com/blog/2013/1/7/build-pattern-shipping-skeleton.html) - Dec 6, 2012 ### [Build Bullet #5– How to make your builds FAST using DRY and SRP Principles](https://osherove.com/blog/2012/12/6/build-bullet-5ndash-how-to-make-your-builds-fast-using-dry-a.html) - Nov 18, 2012 ### [Build Bullet #3– Start Products with an Empty Build and Deploy Pipeline](https://osherove.com/blog/2012/11/18/build-bullet-3ndash-start-products-with-an-empty-build-and-d.html) - Nov 18, 2012 ### [Build Bullets #2–Avoid XML Facing Build Tools](https://osherove.com/blog/2012/11/18/build-bullets-2ndashavoid-xml-facing-build-tools.html) --- title: "Build Bullet #3– Start Products with an Empty Build and Deploy Pipeline" url: "https://osherove.com/blog/2012/11/18/build-bullet-3ndash-start-products-with-an-empty-build-and-d.md" canonical: "https://osherove.com/blog/2012/11/18/build-bullet-3ndash-start-products-with-an-empty-build-and-d.html" published: "2012-11-18T22:40:48" updated: "2012-11-18T22:40:48" tags: ["Build Bullet"] author: "Roy Osherove" description: "Builds can be nasty beasts when It’s finally time to organize and do them. There are so many things you did not think about, that it can take days or weeks to come up with a build for an existing system. To avoid the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Build Bullet \#3– Start Products with an Empty Build and Deploy Pipeline By Roy Osherove November 18, 2012 In [Build Bullet](https://osherove.com/blog/category/build-bullet) **Historical article** · Originally published November 18, 2012; technical details may be outdated. Builds can be nasty beasts when It’s finally time to organize and do them. There are so many things you did not think about, that it can take days or weeks to come up with a build for an existing system. To avoid the nastiness, start with an empty build, on the first day of your project. Then grow it gradually. Before you start your first feature on a product that you know needs to exist for a long time, start with creating the pipeline for deploying it. - Create an empty source project. Something that is a stand-in for the real project you are about to develop. If it is a web application, it could be a single page with “hello world” on it. This project will be what you throw through your empty pipeline to test it. - Create a simple CI build script [that will live with the code](https://osherove.com/blog/2012/11/17/build-bullet-1-use-version-aware-build-scripts.html). For now it might only compile your empty project. Make sure it is relative to the code location so you can run it anywhere. - Create a simple “Deploy to production” build script that lives with your code. For now this will only copy your project or put some file somewhere on a production server. - Oh, you should have a production server to deploy to, so you can deploy your product. that is step #1  of the first iteration! - Create a new project in your CI system (I use teamcity, but go ahead and use Jenkins or anything else you desire. ) In that project create a CI build configuration that triggers the CI build script, and a Deploy to Prod Configuration that triggers the Deployment build script you wrote. - Connect the CI server to your source code repository, and make it trigger the CI on commit. - Make the CI artifacts available to the Deployment configuration. - Make the Deployment Configuration trigger automatically on a successful CI build. - Run the whole thing and see a “hello world” in production **Now you are ready to nit pick:** - You might want to create a “deploy to test” configuration and script that triggers instead of production. - You might want to do the same with a **staging** environment ## Now you have an empty build and deploy pipeline. You can start writing real code, and as real code gets created, you only need to start doing small modifications to your build scripts , or CI process variables to make things work nice and smoothly. Now the build grows and flourishes alongside the source code, instead of as an afterthought. and it is remarkably easier to handle because the changes are much smaller. ## More in Build Bullet [All posts in Build Bullet](https://osherove.com/blog/category/build-bullet) - Dec 6, 2012 ### [Build Bullet #5– How to make your builds FAST using DRY and SRP Principles](https://osherove.com/blog/2012/12/6/build-bullet-5ndash-how-to-make-your-builds-fast-using-dry-a.html) - Nov 27, 2012 ### [Build Bullet #4: Rolling Builds and the Plane of Confidence](https://osherove.com/blog/2012/11/27/build-bullet-4-rolling-builds-and-the-plane-of-confidence.html) - Nov 18, 2012 ### [Build Bullets #2–Avoid XML Facing Build Tools](https://osherove.com/blog/2012/11/18/build-bullets-2ndashavoid-xml-facing-build-tools.html) - Nov 17, 2012 ### [Build Bullet #1 - Use Version Aware Build Scripts](https://osherove.com/blog/2012/11/17/build-bullet-1-use-version-aware-build-scripts.html) --- title: "Build Bullets #2–Avoid XML Facing Build Tools" url: "https://osherove.com/blog/2012/11/18/build-bullets-2ndashavoid-xml-facing-build-tools.md" canonical: "https://osherove.com/blog/2012/11/18/build-bullets-2ndashavoid-xml-facing-build-tools.html" published: "2012-11-18T18:56:34" updated: "2012-11-18T18:56:34" tags: ["Build Bullet"] author: "Roy Osherove" description: "Having your build scripts in XML is one of the worst things you can do for maintainability and readability. Treat your build scripts like you treat your source code (or, how developers should treat their source code) –…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Build Bullets \#2–Avoid XML Facing Build Tools By Roy Osherove November 18, 2012 In [Build Bullet](https://osherove.com/blog/category/build-bullet) **Historical article** · Originally published November 18, 2012; technical details may be outdated. Having your build scripts in XML is one of the worst things you can do for maintainability and readability. Treat your build scripts like you treat your source code (or, how developers **should** treat their source code) – with respect for readability and maintainability, not just for performance. To that end, XML is a bad candidate to have. If you have any more than 15 or 20 lines of xml in a build document: - It is hard to tell where things start, and what they depend on - It is hard to debug the build - It is hard to add or change things in the build logic - XML case sensitivity sucks - Creating, Adding and using  custom actions is a chore To avoid XML, you can start using some of the many build tools out there that are either visual, or support a domain specific language for builds that is more readable, maintainable or debuggable than XML: - [Rake](http://rake.rubyforge.org/) – Ruby Based DSL (Domain Specific Language) for builds, that is very robust and quite readable - [FinalBuilder](http://www.finalbuilder.com/) and [VisualBuild](http://www.kinook.com/VisBuildPro/) are two visual build scripting tools that give great readability into your build script [![image](https://osherove.com/img/sq/64993687-Windows-Live-Writer-Build-Bullets-2Avoid-XML_1149A.png)](https://osherove.com/s/files/Windows-Live-Writer-Build-Bullets-2Avoid-XML_1149A.png) Image: An example of FinalBuilder– My current favorite build tool. **Do not use (for build scripts) tools such as :** - Ant, Nant, maven or msbuild (XML based editing) - TeamCity, FinalBuilder Server, Microsoft Team Build Server (use these [only for build configurations, not the scripts themselves](https://osherove.com/blog/2012/11/17/build-bullet-1-use-version-aware-build-scripts.html)) **Avoid XML editing like the plague, and you might find:** - It is easier to introduce new team members to your build script, and ask them to share in the burden of maintaining it quickly. - It is easier to enable or disable certain actions quickly for debugging purposes - It is easier to reuse build scripts - It is easier to find out what went wrong and where when the build fails if you have a visual tool ## More in Build Bullet [All posts in Build Bullet](https://osherove.com/blog/category/build-bullet) - Nov 27, 2012 ### [Build Bullet #4: Rolling Builds and the Plane of Confidence](https://osherove.com/blog/2012/11/27/build-bullet-4-rolling-builds-and-the-plane-of-confidence.html) - Nov 18, 2012 ### [Build Bullet #3– Start Products with an Empty Build and Deploy Pipeline](https://osherove.com/blog/2012/11/18/build-bullet-3ndash-start-products-with-an-empty-build-and-d.html) - Nov 17, 2012 ### [Build Bullet #1 - Use Version Aware Build Scripts](https://osherove.com/blog/2012/11/17/build-bullet-1-use-version-aware-build-scripts.html) --- title: "Build Bullet #1 - Use Version Aware Build Scripts" url: "https://osherove.com/blog/2012/11/17/build-bullet-1-use-version-aware-build-scripts.md" canonical: "https://osherove.com/blog/2012/11/17/build-bullet-1-use-version-aware-build-scripts.html" published: "2012-11-17T21:47:54" updated: "2012-11-17T21:47:54" tags: ["Build Bullet", "builds"] author: "Roy Osherove" description: "I am thinking of writing a small booklet about better builds . this blog post might end up as a part of it . Let me know if you’re interested by taking a look here. While I do love to use Continuous Integration Servers…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Build Bullet \#1 - Use Version Aware Build Scripts By Roy Osherove November 17, 2012 In [Build Bullet](https://osherove.com/blog/category/build-bullet) **Historical article** · Originally published November 17, 2012; technical details may be outdated. > I am thinking of writing a small [booklet about better builds](https://leanpub.com/build). this blog post might end up as a part of it[. Let me know if you’re interested by taking a look here.](https://leanpub.com/build) While I do love to use Continuous Integration Servers such as teamcity, Jenkins and more, I try to use them as much as possible as “dumb triggers” to my build actions. They do one thing and one thing only, and that is to trigger the correct build script with the correct resources (source version, artifacts form other builds, etc), and nothing more.  I don’t add any custom build actions such as compilation, source checking etc, because I believe that the build actions themselves have a very strong connection with the correct version of the source. For example, at an earlier version of the source you might need to compile a specific set of projects, and in future source versions, maybe new projects were added, some were removed, or renamed etc.  If you have your build scripts as part of your source control, and versioned along with the source, they will always match the current source version. zZhRk5owEMc/jY/tkICcPJ6ctH3oTGeuM31OJWKmkTgh3ul9+oKJSMxyJxptxxkkGwjZX3Y3fxiF6Wr7RZL18rvIKR/hIN+OwqcRxpMgqI+NYXdiKCTLtQkZw4bltLJMSgiu2No2zkVZ0rmybAvB7cHWpKCO4XlOuGv9xXK1NJPD8dH+lbJieXgMihPdU6ndYYycLsiGq097E9bd20D3hebynWmPk8PApTWBNyFWlkHSir3Zk1wwMwtD7reQOZWWibPyT5dSOBuFqRRC6bPVNqW8WZYDcn1b1tPbwpG0VOfcYJx/IXxjpp5+q9s/pJjTqnLAVa9sxUlZt6aFJDmrn5IKLrRLYZal+HHiTsHM6oVKRbenvtbhR8WKKrlrFsGsQWzomNA7NF+PCx5FxrbsLHZ0oEoM0qId+sigPjEYYCQhjGS6YXWk4iAV5YIVLpklWTenav83XTDOO2TSNJtkmUsGDyWDQpvM2CXTXtIlgwIPZCKHzBNhfOfA2UiimCg/YgREUBxPsRdOiY0JARHU2rxzGruc6JqL3b4u1oeftFKjJlQHBhUALEnqpEt9BBYaW8Ragl1iya2IxQ6xZ7GRc6rRKCmai1/Q52BgRUqjdAbF0+CKFH1YkMLgVgVp0g8nY5wCVdqEzZJuSVHnIYhmFjc/F008FM2DjSYC4gYDaCYeyKDArdWsk1bPc8nWqpdPKdQ7aQXFzWA4J3GDoHo9AejEPuggh85pvb4YUF+hvhYQDgFAD7cC5KofsFB7CSeoSl9Lq605HVoY2v590MJusjkoaJk/Sile9zTqotxXeCtdwLp6SxFZ0HZP0TaaW+8CLpar/HHTw4s/EeAPuoc/bjR78WcM+IPv4Y8rxGFRgBw3zxcFTuoBOPqz0ZZMY3RPVQCocd+y4AM4eoH+R10AKHD/uuA6Ov9SGABy+ybCwCuhuyoD/OASurky8IrrvtLAfUU5b+s52UAu2Yv0UnneepI7+QNoBZ2cfv0JL5VuQ/0BtJxes6v8qZvHL6L7vs4X63D2Fw== So what do those processes trigger? A script that is inside source control, tied directly to the current project\`s source committed version. It might be an xml file (ugh), or a rake file, or a finalbuilder script file (my favorite). Then it becomes easier to revert to an older build version to recreate it, or to test differences between versions, or to build multiple different branches of the same applications in parallel for different clients. See if you can take your current CI build, and have it run on a version of the source from 6 months ago. How many changes will that require of you to make it work? If your build is tied to source version, things should feel much simpler. ### Single Responsibility To me it is also about the single responsibility principle.  A Continuous Integration server should do one thing well – manage builds, their resources, and their scheduling.  It should not also need to worry about what is inside each build. In uncle bob’s [newspaper metaphor](http://www.markhneedham.com/blog/2008/09/15/clean-code-book-review/), the builds would be like different sub headings. Each does one thing, and the caller of those functions would only call them, without caring what they do. Thinking about it the other way around, if you have your whole build script running inside one large set of teamcity custom actions, all managed in the browser, and then you refactored that script to separate script files that are part of the source code, you’d be closer to what I am trying to do. So when I see companies boasting about how many custom tools their CI server can do, and how you can manage it all in the browser easily, I remind myself that the more I use those custom build features without the context of a current source version they are attached to, the more work I will have to do to change them every time I need to go back and forth between versions. ###  Version Aware Artifact Paths Following that line of thinking, I might argue that version aware build script “cubes” in source control should also be internally-deciding on what artifacts the encompassing CI process that is running them will be exposed to, and allowed to share with other builds. Today such things are managed solely at the CI tool level, but it would be good if the tools enabled artifact paths to be tied to the current version of the source. - [#builds](https://osherove.com/blog/tag/builds) ## More in Build Bullet [All posts in Build Bullet](https://osherove.com/blog/category/build-bullet) - Nov 18, 2012 ### [Build Bullet #3– Start Products with an Empty Build and Deploy Pipeline](https://osherove.com/blog/2012/11/18/build-bullet-3ndash-start-products-with-an-empty-build-and-d.html) - Nov 18, 2012 ### [Build Bullets #2–Avoid XML Facing Build Tools](https://osherove.com/blog/2012/11/18/build-bullets-2ndashavoid-xml-facing-build-tools.html) --- title: "The Three Values of a Good Isolation Framework" url: "https://osherove.com/blog/2012/10/14/the-three-values-of-a-good-isolation-framework.md" canonical: "https://osherove.com/blog/2012/10/14/the-three-values-of-a-good-isolation-framework.html" published: "2012-10-14T21:27:44" updated: "2012-10-14T21:27:44" tags: [] author: "Roy Osherove" description: "I’m working on the 2nd edition of “ The Art of Unit Testing ” and this is one of the topics I plan to cover. A good isolation framework(mocking framework… but that is a horrible name for it. the word mock is overloaded…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Three Values of a Good Isolation Framework By Roy Osherove October 14, 2012 **Historical article** · Originally published October 14, 2012; technical details may be outdated. I’m working on the 2nd edition of “[The Art of Unit Testing](http://artofunittesting.com/)” and this is one of the topics I plan to cover. A good isolation framework(mocking framework… but that is a horrible name for it. the word mock is overloaded already) should follow three values to not be a hindrance, and actually be helpful to me: - **Simple to use**. For example, a single point of entry in the API, easy to remember API, or Intellisense guidance. - **Test Robustness**. Making sure the test can live as long as possible while the system changes, and it only breaks when something important to it changes. Things like recursive fakes help a lot there.So does being non strict by default. - **Helpful**. If something is wrong, the user should not feel stupid. Helpful error messages go a long way. Being specific and not surprising the user as much as possible. The result of using a framework that does not adhere to these values? You will get sucked into your tests, and instead of saving time, your tests will cost you time, money and unneeded sweat and tears. And then you will want to delete your tests. One day you actually will. And then you will move to a different job and it was all a waste of energy. in .NET, here is my current view of which frameworks answer these values: [![image](https://osherove.com/img/sq/51559367-Windows-Live-Writer-5a74f2a3c55f_147C4.png)](https://osherove.com/s/files/Windows-Live-Writer-5a74f2a3c55f_147C4.png) Also, I’ve marked frameworks that are “unconstrained” (ones that can fake whatever they want) in orange. And yes. I meant it. Justmock [does not support recursive fakes](http://www.telerik.com/help/justmock/basic-usage-recursive-mocking.html).  Justmock supports chained fake expectations (where you can tell a chain of calls to return a value), but it does not by default return fake objects from a fake object’s methods without explicitly being told to do so. That makes us write more and more lines of code as the production code grows to support code we don’t care about. This leads to over specification and fragile tests. thoughts? --- title: "Polite Code, News Articles, And Pulling Out Early" url: "https://osherove.com/blog/2012/9/21/polite-code-news-articles-and-pulling-out-early.md" canonical: "https://osherove.com/blog/2012/9/21/polite-code-news-articles-and-pulling-out-early.html" published: "2012-09-21T12:26:32" updated: "2012-09-21T12:26:32" tags: ["tdd"] author: "Roy Osherove" description: "Christine Gorman gave a talk about getting rid of unneeded complexity in code, but removing ideas many of us (me too) find make it more readable. I couldn’t explain why I disagreed with her, except that I like the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Polite Code, News Articles, And Pulling Out Early By Roy Osherove September 21, 2012 In [tdd](https://osherove.com/blog/category/tdd) **Historical article** · Originally published September 21, 2012; technical details may be outdated. Christine Gorman [gave a talk about getting rid of unneeded complexity](https://vimeo.com/49484333) in code, but removing ideas many of us (me too) find make it more readable. I couldn’t explain why I disagreed with her, except that I like the “style” of the way I wrote code better. so it reads like a book. But [uncle bob nails the description of the quality of the code](https://raw.github.com/gist/3753571/2f3a8702a0fd0ae08f9778956b8efe4d998b4d65/gistfile1.txt) that I like to write and read: Read it here. It \*is\* like a newspaper article that slowly drills down into more and more details. It \*does\* let me stop reading it if I need to move over to something else. Good job Uncle bob.  Christin is a very passionate speaker. I am trying to get her to do a podcast with me on video (because she lives in Norway too). what do you think? ## More in tdd [All posts in tdd](https://osherove.com/blog/category/tdd) - Jun 26, 2012 ### [FakeItEasy or NSubstitute? Which should I use for samples in art of unit testing 2nd edition?](https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.html) - Jun 24, 2012 ### [Video: (part 1) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/25/video-part-1-building-a-go-game-engine-with-tdd-and-pair-pro.html) --- title: "Readable, Maintainable, Trustworthy Unit Tests in Java" url: "https://osherove.com/blog/2012/9/17/readable-maintainable-trustworthy-unit-tests-in-java.md" canonical: "https://osherove.com/blog/2012/9/17/readable-maintainable-trustworthy-unit-tests-in-java.html" published: "2012-09-17T13:24:37" updated: "2012-09-17T13:24:37" tags: ["javazone"] author: "Roy Osherove" description: "While in JavaZone, I adapted my talk about good unit tests to Java. Here you go" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Readable, Maintainable, Trustworthy Unit Tests in Java By Roy Osherove September 17, 2012 **Historical article** · Originally published September 17, 2012; technical details may be outdated. While in JavaZone, I adapted my talk about good unit tests to Java. [Here you go](https://vimeo.com/49307941) - [#javazone](https://osherove.com/blog/tag/javazone) --- title: "protip: How to have a very good panel debate at your conference" url: "https://osherove.com/blog/2012/9/14/protip-how-to-have-a-very-good-panel-debate-at-your-conferen.md" canonical: "https://osherove.com/blog/2012/9/14/protip-how-to-have-a-very-good-panel-debate-at-your-conferen.html" published: "2012-09-14T09:44:50" updated: "2012-09-14T09:44:50" tags: ["javazone"] author: "Roy Osherove" description: "I was part of this panel about “making the programming pain stop” along with Kevlin Henney and others. It was such fun! One of the things that helped it succeed was the fact that Johannes (the panel moderator) asked the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # protip: How to have a very good panel debate at your conference By Roy Osherove September 14, 2012 **Historical article** · Originally published September 14, 2012; technical details may be outdated. I was part of [this panel about “making the programming pain stop”](https://vimeo.com/49368449) along with [Kevlin Henney](http://curbralan.com/) and others. It was such fun! ![](https://osherove.com/img/sq/1000w-IMG_4725.JPG) One of the things that helped it succeed was the fact that [Johannes (the panel moderator)](http://johannesbrodwall.com/) asked the panelists to meet together an hour before the panel started and to start discussing interesting questions together. Banter started as we got to know each other and when we finally got on stage it was just… fun. People were less shy to speak and tackle each other and overall feeling of “flow” had started. - [#javazone](https://osherove.com/blog/tag/javazone) --- title: "Video: Discussing Evolutionary Value Delivery with Tom Gilb" url: "https://osherove.com/blog/2012/9/14/video-discussing-evolutionary-value-delivery-with-tom-gilb.md" canonical: "https://osherove.com/blog/2012/9/14/video-discussing-evolutionary-value-delivery-with-tom-gilb.html" published: "2012-09-14T09:17:31" updated: "2012-09-14T09:17:31" tags: ["gilb"] author: "Roy Osherove" description: "During JavaZone yesterday in Oslo, I got to meet with Tom Gilb and his son - Kai. I don’t know much about what they teach relating to Evolutionary Value Delivery (EVO for short) so i was intrigued to find out more. Tom…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: Discussing Evolutionary Value Delivery with Tom Gilb By Roy Osherove September 14, 2012 **Historical article** · Originally published September 14, 2012; technical details may be outdated. During JavaZone yesterday in Oslo, I got to meet with Tom Gilb and his son - Kai. I don’t know much about what they teach relating to Evolutionary Value Delivery (EVO for short) so i was intrigued to find out more. Tom was kind (well, he’s very israeli in his version of kind…) enough to speak with me for about 50 minutes about his philosophy. It slowly made sense to me, and you can find a way to quantify and make meaning out of vague ideas you’d like to exercise. In retrospect, had I known that Tom is also [doing certifications on this matter](http://www.gilb.com/Value+Delivery+Certification), I would have had many more interesting questions to ask him relating to that (I am a sceptic about that, but it might work in this context.. maybe. what do you think?) To find out more just go to [gilb.com/downloads](http://gilb.com/downloads)  [![](https://osherove.com/img/video/yt-8QZgEOmGWVM.jpg)Play videoTom Gilb and & Roy Osherove on Evolutionary Value Delivery](https://www.youtube.com/watch?v=8QZgEOmGWVM) - [#gilb](https://osherove.com/blog/tag/gilb) --- title: "Update on foocafe courses in sweden (tdd and elastic leadership)" url: "https://osherove.com/blog/2012/9/7/update-on-foocafe-courses-in-sweden-tdd-and-elastic-leadersh.md" canonical: "https://osherove.com/blog/2012/9/7/update-on-foocafe-courses-in-sweden-tdd-and-elastic-leadersh.html" published: "2012-09-06T21:44:12" updated: "2012-09-06T21:44:12" tags: [] author: "Roy Osherove" description: "My links were wrong. here are the links for the sweden courses Stockholm, October 19, 2012 - Advanced TDD Subjects in .NET Malmo, October 15, 2012 - Advanced TDD Subjects in .NET Stockholm, November 2. 2012 - Essential…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Update on foocafe courses in sweden (tdd and elastic leadership) By Roy Osherove September 6, 2012 **Historical article** · Originally published September 6, 2012; technical details may be outdated. My links were wrong. here are the links for the sweden courses - [Stockholm, October 19, 2012 - Advanced TDD Subjects in .NET](http://www.foocafe.org/index.php/site/event/advanced-tdd-subjects-for-.net-developers-roy-osherove1)  - [Malmo, October 15, 2012 - Advanced TDD Subjects in .NET](http://www.foocafe.org/index.php/site/event/advanced-tdd-subjects-for-.net-developers-roy-osherove)  - [Stockholm, November 2. 2012 - Essential Skills and elastic leadership for software team leaders](http://www.foocafe.org/index.php/site/event/elastic-leadership-concepts-roy-osherove) - [Malmo, November 5, 2012 - Essential Skills and Elastic Leadership for software team leaders](http://www.foocafe.org/index.php/site/event/elastic-leadership-concepts-roy-osherove1) --- title: "A view of the books in my bouvet office" url: "https://osherove.com/blog/2012/9/6/a-view-of-the-books-in-my-bouvet-office.md" canonical: "https://osherove.com/blog/2012/9/6/a-view-of-the-books-in-my-bouvet-office.html" published: "2012-09-06T13:43:02" updated: "2012-09-06T13:43:02" tags: ["bouvet"] author: "Roy Osherove" description: "Here’s a short video I took reviewing the old and new books in my bouvet shared office. Its interesting to look at, just like watching the rings on a cut down tree. You can tell what things the team is interested in (or…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A view of the books in my bouvet office By Roy Osherove September 6, 2012 **Historical article** · Originally published September 6, 2012; technical details may be outdated. Here’s a short video I took reviewing the old and new books in my bouvet shared office. Its interesting to look at, just like watching the rings on a cut down tree. You can tell what things the team is interested in (or try to be) by looking at its history of book purchases. [![](https://osherove.com/img/video/yt-iQN0LN8RmXo.jpg)Play videoA small look at roy osherove's bouvet.no office in Oslo](https://www.youtube.com/watch?v=iQN0LN8RmXo) - [#bouvet](https://osherove.com/blog/tag/bouvet) --- title: "Book me for consulting,courses in Norway and scandinavia - I live here now" url: "https://osherove.com/blog/2012/9/5/book-me-for-consultingcourses-in-norway-and-scandinavia-i-li.md" canonical: "https://osherove.com/blog/2012/9/5/book-me-for-consultingcourses-in-norway-and-scandinavia-i-li.html" published: "2012-09-05T07:50:30" updated: "2012-09-05T07:50:30" tags: [] author: "Roy Osherove" description: "Hi Folks. My move to Norway is now almost complete (should be getting my id number mid September.) Bærum Kummune, I am in you. Yeah. And I have the norwegian keyboard to prøve it. Now that I’m here I plan to do a lot…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Book me for consulting,courses in Norway and scandinavia - I live here now By Roy Osherove September 5, 2012 **Historical article** · Originally published September 5, 2012; technical details may be outdated. Hi Folks. My move to Norway is now almost complete (should be getting my id number mid September.) ### Bærum Kummune, I am in you. Yeah. And I have the norwegian keyboard to prøve it. Now that I’m here I plan to do a lot more in scandinavia. here’s just the tip of the iceberg.  > I’m now fully available to do consulting and training in Norway, through [Bouvet](http://bouvet.no/). If you want me to come t**each something about unit testing or team leadership**, or **do test reviews**, or help you **automate everything**, or just **coach** your development **team or team leader or architect** on better ways to accomplish things, feel free to just email the person who helped make it all happen for me - Simen. He’s also working with me at Bouvet and is in charge of making sure my time is well spent. Make him work. Hard. BTW - if You’re in DENMARK and want to help me arrange more courses there about various topics, [please ping me.](https://osherove.com/request-more-info/) I need to do more of these! ### Out of Norway training or Coaching? if you want me to cone and teach or consult out of norway, [just contact me directly](https://osherove.com/request-more-info/) (that is not through Bouvet) ### Denmark : - October 22 - [3 Day TDD Master Class](http://www.ative.dk/agile-teknikker/test-driven-development-master-class-in-c.aspx) - November 12 - [1 Day Team Leadership Skills With Elastic Leadership Concepts](http://www.ative.dk/scrum/elastic-leadership.aspx) ### Norway: - 29 October - [Trondheim Developer Conferences](http://www.trondheimdc.no/foredrag/) [![](https://osherove.com/img/sq/1000w-bouvet.jpg)](http://bouvet.no/)  - [Team Leader Skills and Elastic Leadership](http://tema.bouvet.no/no/Teknologi/Kurs-med-Roy-Osherove/Teamledelse-og-smidig/) (2 days) - [Team Leader Skills and Elastic Leadership](http://tema.bouvet.no/no/Teknologi/Kurs-med-Roy-Osherove/Teamledelse-og-smidig/) (1 day) - New: [Succeeding with Agile Adoption](http://tema.bouvet.no/no/Teknologi/Kurs-med-Roy-Osherove/Teamledelse-og-smidig/) (1 days) - [Test Driven Development 3 days](http://tema.bouvet.no/no/Teknologi/Kurs-med-Roy-Osherove/Kurs-om-testdrevet-utvikling-TDD/) (zero knowledge needed) - [Test Driven Development 5 days master class](http://tema.bouvet.no/no/Teknologi/Kurs-med-Roy-Osherove/Kurs-om-testdrevet-utvikling-TDD/) (zero knowledge needed) - New: [Advanced Test Driven Development Subjects](http://tema.bouvet.no/no/Teknologi/Kurs-med-Roy-Osherove/Kurs-om-testdrevet-utvikling-TDD/)  New: - [From test, to build automation, to deployment - tools and techniques for .NET](http://tema.bouvet.no/no/Teknologi/Kurs-med-Roy-Osherove/Andre-NET-kurs/)     - [Windows, Visual Studio.NET and Resharper Ninja Moves and productivity techniques](http://tema.bouvet.no/no/Teknologi/Kurs-med-Roy-Osherove/Andre-NET-kurs/)   - [Introduction To Agile and Lean development ideas (zero knowledge needed)](http://tema.bouvet.no/no/Teknologi/Kurs-med-Roy-Osherove/Andre-NET-kurs/) - [Introduction to Ruby and rails for .NET and Java developers (zero knowledge needed)](http://tema.bouvet.no/no/Teknologi/Kurs-med-Roy-Osherove/Andre-NET-kurs/) ### Sweden: [![](https://osherove.com/img/sq/1000w-foocafe.png)](http://foocafe.org/) - [Stockholm, October 19, 2012 - Advanced TDD Subjects in .NET](http://www.foocafe.org/index.php/site/event/advanced-tdd-subjects-for-.net-developers-roy-osherove1)  - [Malmo, October 15, 2012 - Advanced TDD Subjects in .NET](http://www.foocafe.org/index.php/site/event/advanced-tdd-subjects-for-.net-developers-roy-osherove)  - [Stockholm, November 2. 2012 - Essential Skills and elastic leadership for software team leaders](http://www.foocafe.org/index.php/site/event/elastic-leadership-concepts-roy-osherove) - [Malmo, November 5, 2012 - Essential Skills and Elastic Leadership for software team leaders](http://www.foocafe.org/index.php/site/event/elastic-leadership-concepts-roy-osherove1) --- title: "Video: (part 8 - The big Refactoring) TDD Pairing a Go Game Engine" url: "https://osherove.com/blog/2012/7/13/video-part-8-the-big-refactoring-tdd-pairing-a-go-game-engin.md" canonical: "https://osherove.com/blog/2012/7/13/video-part-8-the-big-refactoring-tdd-pairing-a-go-game-engin.html" published: "2012-07-12T23:28:13" updated: "2012-07-12T23:28:13" tags: ["Unit Testing", "video"] author: "Roy Osherove" description: "In this video (all the sessions are here ), Raymond and I do a refactoring of the code, to something we like much more. We end up with code we can be more proud of, and the comtinued feedback of the tests helps us do…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: (part 8 - The big Refactoring) TDD Pairing a Go Game Engine By Roy Osherove July 12, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing), [video](https://osherove.com/blog/category/video) **Historical article** · Originally published July 12, 2012; technical details may be outdated. In this video (all the [sessions are here](http://artofunittesting.com/)), Raymond and I do a refactoring of the code, to something we like much more. We end up with code we can be more proud of, and the comtinued feedback of the tests helps us do this in small, secure steps. This is what refactoring should always feel like. [![](https://osherove.com/img/video/yt-YdooYM1Gc2Q.jpg)Play videoTDD Pairing Session 8 (The Big Refactor) with Roy Osherove and Raymond Lim](https://www.youtube.com/watch?v=YdooYM1Gc2Q) ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Mar 29, 2013 ### [Acceptance Frameworks Vs. Specification APis](https://osherove.com/blog/2013/3/29/acceptance-frameworks-vs-specification-apis.html) - Mar 28, 2013 ### [Using System.Transactions.TransactionScope to Rollback Database changes under an integration test](https://osherove.com/blog/2013/3/28/using-systemtransactionstransactionscope-to-rollback-databas.html) - Jul 9, 2012 ### [Video: (part 7 - The bug that wouldn't die) Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/7/9/video-part-7-the-bug-that-wouldnt-die-go-game-engine-with-td.html) - Jul 8, 2012 ### [Faking static methods in Moq, FakeItEasy and NSubstitute might be closer than imagined](https://osherove.com/blog/2012/7/8/faking-static-methods-in-moq-fakeiteasy-and-nsubstitute-migh.html) --- title: "Video: (part 7 - The bug that wouldn't die) Go Game Engine with TDD and Pair Programming" url: "https://osherove.com/blog/2012/7/9/video-part-7-the-bug-that-wouldnt-die-go-game-engine-with-td.md" canonical: "https://osherove.com/blog/2012/7/9/video-part-7-the-bug-that-wouldnt-die-go-game-engine-with-td.html" published: "2012-07-09T20:14:33" updated: "2012-07-09T20:14:33" tags: ["Unit Testing", "video"] author: "Roy Osherove" description: "In our continuing series of TDD pairing videos , Raymond and I meet again to continue where we left off. Where we left off was not a good place - we had bugs in the logic of our test code that we hunted down in the last…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: (part 7 - The bug that wouldn't die) Go Game Engine with TDD and Pair Programming By Roy Osherove July 9, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing), [video](https://osherove.com/blog/category/video) **Historical article** · Originally published July 9, 2012; technical details may be outdated. In our [continuing series of TDD pairing videos](http://artofunittesting.com/), Raymond and I meet again to continue where we left off. Where we left off was not a good place - we had bugs in the logic of our test code that we hunted down in the last episode, but to our dismay, some tests keep failing in this episode as well! We figure out that I didn’t use git correctly and didn’t commit the fix right, so that’s 30 minutes lots right there, hunting down stuff.  [![](https://osherove.com/img/video/yt-svhfTVX_T7U.jpg)Play videoTDD Pairing Session 7a (More debugging!) with Raymond Lim and Roy Osherove](https://www.youtube.com/watch?v=svhfTVX_T7U) Feeling stupider and stupider, we finally pull ourselves out of the hole we have created and are actually able to adding a loody feature to the code. Who said TDD makes it all better? It’s not better, but it’s more possible. [![](https://osherove.com/img/video/yt-7kRE_4a0dAQ.jpg)Play videoTDD Pairing Session 7b(Finally some new features) with Roy Osherove and Raymon Lim](https://www.youtube.com/watch?v=7kRE_4a0dAQ) The naming conventions continue to help us figure out what goes wrong, and we trudge along adding sub features to the detection of surrounded multiple cells. This video is split up in two because Camtasia on windows crapped out on us in the middle of recording.  ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Mar 28, 2013 ### [Using System.Transactions.TransactionScope to Rollback Database changes under an integration test](https://osherove.com/blog/2013/3/28/using-systemtransactionstransactionscope-to-rollback-databas.html) - Jul 12, 2012 ### [Video: (part 8 - The big Refactoring) TDD Pairing a Go Game Engine](https://osherove.com/blog/2012/7/13/video-part-8-the-big-refactoring-tdd-pairing-a-go-game-engin.html) - Jul 8, 2012 ### [Faking static methods in Moq, FakeItEasy and NSubstitute might be closer than imagined](https://osherove.com/blog/2012/7/8/faking-static-methods-in-moq-fakeiteasy-and-nsubstitute-migh.html) - Jul 5, 2012 ### [Video: (part 6 - Total n00b mistakes) Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/7/5/video-part-6-total-n00b-mistakes-go-game-engine-with-tdd-and.html) --- title: "Faking static methods in Moq, FakeItEasy and NSubstitute might be closer than imagined" url: "https://osherove.com/blog/2012/7/8/faking-static-methods-in-moq-fakeiteasy-and-nsubstitute-migh.md" canonical: "https://osherove.com/blog/2012/7/8/faking-static-methods-in-moq-fakeiteasy-and-nsubstitute-migh.html" published: "2012-07-08T18:35:24" updated: "2012-07-08T18:35:24" tags: ["Unit Testing"] author: "Roy Osherove" description: "Update : the version that works with .net 4.0 is here (link to InjecttionExample3.zip in that page). the examples from the link below work in .net 3.5 and under. While I was doing my TDD course at Soluto this week, One…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Faking static methods in Moq, FakeItEasy and NSubstitute might be closer than imagined By Roy Osherove July 8, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published July 8, 2012; technical details may be outdated. > **Update**: the version that [works with .net 4.0 is here](http://www.sysnet.pe.kr/2/0/942) (link to InjecttionExample3.zip in that page). the examples from the link below work in .net 3.5 and under. While I was doing my TDD course at [Soluto](http://soluto.com/) this week, One of the architects, Shai, Found an interesting article on CodeProject [that shows how to change the pointer of a managed method in C# to redirect to a different method](http://www.codeproject.com/Articles/37549/CLR-Injection-Runtime-Method-Replacer). They even tried it and showed it can work to allow changing the behavior of a static method by intercepting it. This does not use the profiler API at all (like typemock or Justmock do), but it is a non-safe (unsafe) way to do it in a managed way. This needs more examination, but if this works out, it could be the beginning of a new era of unconstrained Isolation frameworks in .NET, that are fully open source. It’s not just static methods that can be replaced, and that’s where it gets REALLY interesting. Let’s keep our fingers crossed, and I expect the devs of Moq, FakeItEasy and NSubstitue to work on that. If they don’t , I certainly will! ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Jul 12, 2012 ### [Video: (part 8 - The big Refactoring) TDD Pairing a Go Game Engine](https://osherove.com/blog/2012/7/13/video-part-8-the-big-refactoring-tdd-pairing-a-go-game-engin.html) - Jul 9, 2012 ### [Video: (part 7 - The bug that wouldn't die) Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/7/9/video-part-7-the-bug-that-wouldnt-die-go-game-engine-with-td.html) - Jul 5, 2012 ### [Video: (part 6 - Total n00b mistakes) Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/7/5/video-part-6-total-n00b-mistakes-go-game-engine-with-tdd-and.html) - Jul 2, 2012 ### [Video: (part 5 - A Test DSL) Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/7/2/video-part-5-a-test-dsl-go-game-engine-with-tdd-and-pair-pro.html) --- title: "Video: (part 6 - Total n00b mistakes) Go Game Engine with TDD and Pair Programming" url: "https://osherove.com/blog/2012/7/5/video-part-6-total-n00b-mistakes-go-game-engine-with-tdd-and.md" canonical: "https://osherove.com/blog/2012/7/5/video-part-6-total-n00b-mistakes-go-game-engine-with-tdd-and.html" published: "2012-07-05T07:38:51" updated: "2012-07-05T07:38:51" tags: ["Unit Testing", "video"] author: "Roy Osherove" description: "If you calculate by hours, this might be called “the first session of the 2nd day” of Raymond and me working together. This was by far the most frustrating one of the 6 we’ve had so far. all the other sessions are here…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: (part 6 - Total n00b mistakes) Go Game Engine with TDD and Pair Programming By Roy Osherove July 5, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing), [video](https://osherove.com/blog/category/video) **Historical article** · Originally published July 5, 2012; technical details may be outdated. If you calculate by hours, this might be called “the first session of the 2nd day” of Raymond and me working together. This was by far the most frustrating one of the 6 we’ve had so far. [all the other sessions are here](http://artofunittesting.com/), and [the source code](https://github.com/RayyLim). - We start out the session with a weird behavior by the tests (they fail on my machine and pass on Raymond’s . So we debug right out of the gate.  - see 0:01:45 for [NCrunch](http://ncrunch.net/) telling me where to look for the bug and me glaring at that like an idiot and not getting it. - see 0:02:00 to see how good test naming helps me wade through the bunch of failing tests and get a “meta” understanding about their complexity, and I’m able to choos a really simple on, and realize the bug might be not related to a specific scenario. This is a HUGE time saver for idiots like me who didn’t get the hits from the tool on the first go, and need to start manually figuring things out. - At some point we debug the wrong test. Seriously. - Near the end, we discover that we had a bug in the way we fill the board all along. We switch the x and y positions of the board DSL for tests, and it’s biting us in the ass two sessions after we did it. - Both of the bugs (in the start and in the end of the session) we had in this VERY frustrating sessions, were to do with our FillBoard method - a piece of logic in our tests. That’s what happens when you have logic in tests, and we should have been more careful and test that. One bug had to do with how we split the strings, and the other was in how we add stones. 10 lines of code, 90 minutes of frustrations X 2 people. - see 1:22:20 to see our VERY slow realization that we might have switched out X-Y positions on the board in our helper method. it takes me two minutes to “get” it, while Raymond patiently explains to me and my slow brain why he’s right. And then, two minutes later (1:23:50), it hits me and the horror on my face is just… human. - In the last 3 seconds I forget to turn off my camera. But I’m too tired to notice. - Inspite of all this, we still get some s#!t done, and knock off a couple of features like winner by counting cells. - We end up with a partial feature of multiple cells (only one to the right), but we now have something to aspire to finish in the next session. [![](https://osherove.com/img/video/yt-mEpj4g68TQ8.jpg)Play videoTDD Pairing Session 6: Total Noob Fail - Go Game Engine with Raymond Lim](https://www.youtube.com/watch?v=mEpj4g68TQ8) ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Jul 9, 2012 ### [Video: (part 7 - The bug that wouldn't die) Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/7/9/video-part-7-the-bug-that-wouldnt-die-go-game-engine-with-td.html) - Jul 8, 2012 ### [Faking static methods in Moq, FakeItEasy and NSubstitute might be closer than imagined](https://osherove.com/blog/2012/7/8/faking-static-methods-in-moq-fakeiteasy-and-nsubstitute-migh.html) - Jul 2, 2012 ### [Video: (part 5 - A Test DSL) Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/7/2/video-part-5-a-test-dsl-go-game-engine-with-tdd-and-pair-pro.html) - Jun 29, 2012 ### [Refactoring Dillema Video: (part 4) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/29/refactoring-dillema-video-part-4-building-a-go-game-engine-w.html) --- title: "Video: (part 5 - A Test DSL) Go Game Engine with TDD and Pair Programming" url: "https://osherove.com/blog/2012/7/2/video-part-5-a-test-dsl-go-game-engine-with-tdd-and-pair-pro.md" canonical: "https://osherove.com/blog/2012/7/2/video-part-5-a-test-dsl-go-game-engine-with-tdd-and-pair-pro.html" published: "2012-07-02T14:13:05" updated: "2012-07-02T14:13:05" tags: ["Unit Testing", "video"] author: "Roy Osherove" description: "In this session we start writing some tests that don’t fail first, and we don’t understand why. So we take some time to make a testing DSL, so that our tests will be more readable, and also easier to write. We also…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: (part 5 - A Test DSL) Go Game Engine with TDD and Pair Programming By Roy Osherove July 2, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing), [video](https://osherove.com/blog/category/video) **Historical article** · Originally published July 2, 2012; technical details may be outdated. In this session we start writing some tests that don’t fail first, and we don’t understand why. So we take some time to make a testing DSL, so that our tests will be more readable, and also easier to write. We also start to use [NCrunch](http://www.ncrunch.net/) to see how it feels in real life. As always, you can get [all the previous parts here](http://artofunittesting.com/), and [the source code is here](https://github.com/RayyLim/GoGame). [![](https://osherove.com/img/video/yt-7d0TvjrgxnY.jpg)Play videoTDD Pairing Session 5: A Test DSL - Go Game Engine with Raymond Lim and Roy Osherove](https://www.youtube.com/watch?v=7d0TvjrgxnY) #### Interesting note: This video, along with the others, marks **6.5 hours of us pairing**. So this is where we’d end up at the end of the first day working on this project if we were working in a real job, pairing full time. Not bad, in terms of amount of discoveries, knowledge shared, and understanding the problem domain, and starting with something that works. ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Jul 8, 2012 ### [Faking static methods in Moq, FakeItEasy and NSubstitute might be closer than imagined](https://osherove.com/blog/2012/7/8/faking-static-methods-in-moq-fakeiteasy-and-nsubstitute-migh.html) - Jul 5, 2012 ### [Video: (part 6 - Total n00b mistakes) Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/7/5/video-part-6-total-n00b-mistakes-go-game-engine-with-tdd-and.html) - Jun 29, 2012 ### [Refactoring Dillema Video: (part 4) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/29/refactoring-dillema-video-part-4-building-a-go-game-engine-w.html) - Jun 28, 2012 ### [Video: (part 3) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/28/video-part-3-building-a-go-game-engine-with-tdd-and-pair-pro.html) --- title: "Refactoring Dillema Video: (part 4) Building a Go Game Engine with TDD and Pair Programming" url: "https://osherove.com/blog/2012/6/29/refactoring-dillema-video-part-4-building-a-go-game-engine-w.md" canonical: "https://osherove.com/blog/2012/6/29/refactoring-dillema-video-part-4-building-a-go-game-engine-w.html" published: "2012-06-29T09:33:40" updated: "2012-06-29T09:33:40" tags: ["Unit Testing", "video"] author: "Roy Osherove" description: "In this video ( the rest are here ) we focus on refactoring, and we try out the strategy pattern. We end up not being sure how well it worked out for the future, but we’ll see how things unfold in the next parts. We…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Refactoring Dillema Video: (part 4) Building a Go Game Engine with TDD and Pair Programming By Roy Osherove June 29, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing), [video](https://osherove.com/blog/category/video) **Historical article** · Originally published June 29, 2012; technical details may be outdated. In this video ([the rest are here](http://artofunittesting.com/)) we focus on refactoring, and we try out the strategy pattern. We end up not being sure how well it worked out for the future, but we’ll see how things unfold in the next parts. We also start using [MightyMoose for continuous Tests](http://continuoustests.com/) running every time we save the files, and only running the affected tests. So far results are mized - it’s much slower than TestDriven.NET, but for a large project that has slow tests, Mighty Moose could be a god send. Would love to know your thoughts if the refactoring here made sense, or if there was room for a different refactoring. The source code so far is at [https://github.com/RayyLim/GoGame](https://github.com/RayyLim/GoGame)  [![](https://osherove.com/img/video/yt-_s_lBh315Tc.jpg)Play videoTDD Pairing Session 4: Go Game Engine Raymond Lim](https://www.youtube.com/watch?v=_s_lBh315Tc) ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Jul 5, 2012 ### [Video: (part 6 - Total n00b mistakes) Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/7/5/video-part-6-total-n00b-mistakes-go-game-engine-with-tdd-and.html) - Jul 2, 2012 ### [Video: (part 5 - A Test DSL) Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/7/2/video-part-5-a-test-dsl-go-game-engine-with-tdd-and-pair-pro.html) - Jun 28, 2012 ### [Video: (part 3) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/28/video-part-3-building-a-go-game-engine-with-tdd-and-pair-pro.html) - Jun 27, 2012 ### [Video: (part 2c) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/28/video-part-2c-building-a-go-game-engine-with-tdd-and-pair-pr.html) --- title: "Video: (part 3) Building a Go Game Engine with TDD and Pair Programming" url: "https://osherove.com/blog/2012/6/28/video-part-3-building-a-go-game-engine-with-tdd-and-pair-pro.md" canonical: "https://osherove.com/blog/2012/6/28/video-part-3-building-a-go-game-engine-with-tdd-and-pair-pro.html" published: "2012-06-28T10:28:19" updated: "2012-06-28T10:28:19" tags: ["Unit Testing", "video"] author: "Roy Osherove" description: "Another good hour of pairing with Raymond Lim yesterday. This time we continue by adding more sub-features to the “GetWinner” feature, and discover a bug in the process. As usual, you can find all the videos of our…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: (part 3) Building a Go Game Engine with TDD and Pair Programming By Roy Osherove June 28, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing), [video](https://osherove.com/blog/category/video) **Historical article** · Originally published June 28, 2012; technical details may be outdated. Another good hour of pairing with [Raymond Lim](https://twitter.com/rayylim) yesterday. This time we continue by adding more sub-features to the “GetWinner” feature, and discover a bug in the process. As usual, you can find [all the videos of our sessions from the beginning over here.](http://artofunittesting.com/) [![](https://osherove.com/img/video/yt-iy6RcqfAFyY.jpg)Play videoTDD and pairing session 3 - Go Engine with Raymond Lim and Roy Osherove](https://www.youtube.com/watch?v=iy6RcqfAFyY) ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Jul 2, 2012 ### [Video: (part 5 - A Test DSL) Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/7/2/video-part-5-a-test-dsl-go-game-engine-with-tdd-and-pair-pro.html) - Jun 29, 2012 ### [Refactoring Dillema Video: (part 4) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/29/refactoring-dillema-video-part-4-building-a-go-game-engine-w.html) - Jun 27, 2012 ### [Video: (part 2c) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/28/video-part-2c-building-a-go-game-engine-with-tdd-and-pair-pr.html) - Jun 27, 2012 ### [Video: Part 2b : TDD and Pairing on a go engine with Raymond Lim](https://osherove.com/blog/2012/6/27/video-part-2b-tdd-and-pairing-on-a-go-engine-with-raymond-li.html) --- title: "Video: (part 2c) Building a Go Game Engine with TDD and Pair Programming" url: "https://osherove.com/blog/2012/6/28/video-part-2c-building-a-go-game-engine-with-tdd-and-pair-pr.md" canonical: "https://osherove.com/blog/2012/6/28/video-part-2c-building-a-go-game-engine-with-tdd-and-pair-pr.html" published: "2012-06-27T21:22:12" updated: "2012-06-27T21:22:12" tags: ["Unit Testing", "video"] author: "Roy Osherove" description: "In this final part, Raymond and I finish a big refactoring. First, we fail. then we back up and start moving slowly again.Finally, we succeed. Our tests save our asses in the process. Play video TDD and Pairing Session…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: (part 2c) Building a Go Game Engine with TDD and Pair Programming By Roy Osherove June 27, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing), [video](https://osherove.com/blog/category/video) **Historical article** · Originally published June 27, 2012; technical details may be outdated. In this final part, Raymond and I finish a big refactoring. First, we fail. then we back up and start moving slowly again.Finally, we succeed. Our tests save our asses in the process. [![](https://osherove.com/img/video/yt-BkUzoWnGTYM.jpg)Play videoTDD and Pairing Session 2c: Go Game Engine with Raymond Lim](https://www.youtube.com/watch?v=BkUzoWnGTYM) I’ve [put the whole list of continually updating videos on this Go game over here](http://artofunittesting.com/), so you can watch them form the beginning. There is still much to do, but this is starting to get fun! ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Jun 29, 2012 ### [Refactoring Dillema Video: (part 4) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/29/refactoring-dillema-video-part-4-building-a-go-game-engine-w.html) - Jun 28, 2012 ### [Video: (part 3) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/28/video-part-3-building-a-go-game-engine-with-tdd-and-pair-pro.html) - Jun 27, 2012 ### [Video: Part 2b : TDD and Pairing on a go engine with Raymond Lim](https://osherove.com/blog/2012/6/27/video-part-2b-tdd-and-pairing-on-a-go-engine-with-raymond-li.html) - Jun 26, 2012 ### [The future of Isolation frameworks, and how Moq isn't it (for now)](https://osherove.com/blog/2012/6/27/the-future-of-isolation-frameworks-and-how-moq-isnt-it-for-n.html) --- title: "Video: Part 2b : TDD and Pairing on a go engine with Raymond Lim" url: "https://osherove.com/blog/2012/6/27/video-part-2b-tdd-and-pairing-on-a-go-engine-with-raymond-li.md" canonical: "https://osherove.com/blog/2012/6/27/video-part-2b-tdd-and-pairing-on-a-go-engine-with-raymond-li.html" published: "2012-06-27T18:41:18" updated: "2012-06-27T18:41:18" tags: ["Unit Testing", "video"] author: "Roy Osherove" description: "Here’s the 2nd part of three total, of my second session with Raymond going through building a Go game engine from scratch. I’ve put the whole list of continually updating videos on this Go game over here , so you can…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: Part 2b : TDD and Pairing on a go engine with Raymond Lim By Roy Osherove June 27, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing), [video](https://osherove.com/blog/category/video) **Historical article** · Originally published June 27, 2012; technical details may be outdated. Here’s the 2nd part of three total, of my second session with Raymond going through building a Go game engine from scratch. I’ve [put the whole list of continually updating videos on this Go game over here](http://artofunittesting.com/), so you can watch them form the beginning. There is still much to do, but this is starting to get fun! In this session, we finish the getwinner feature and start refactoring. [![](https://osherove.com/img/video/yt-odHtISznxIA.jpg)Play videoTDD Pairing Session 2b - Go Engine - Raymond Lim and Roy Osherove](https://www.youtube.com/watch?v=odHtISznxIA) ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Jun 28, 2012 ### [Video: (part 3) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/28/video-part-3-building-a-go-game-engine-with-tdd-and-pair-pro.html) - Jun 27, 2012 ### [Video: (part 2c) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/28/video-part-2c-building-a-go-game-engine-with-tdd-and-pair-pr.html) - Jun 26, 2012 ### [The future of Isolation frameworks, and how Moq isn't it (for now)](https://osherove.com/blog/2012/6/27/the-future-of-isolation-frameworks-and-how-moq-isnt-it-for-n.html) - Jun 26, 2012 ### [Video: (part 2a) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/26/video-part-2a-building-a-go-game-engine-with-tdd-and-pair-pr.html) --- title: "The future of Isolation frameworks, and how Moq isn't it (for now)" url: "https://osherove.com/blog/2012/6/27/the-future-of-isolation-frameworks-and-how-moq-isnt-it-for-n.md" canonical: "https://osherove.com/blog/2012/6/27/the-future-of-isolation-frameworks-and-how-moq-isnt-it-for-n.html" published: "2012-06-26T21:22:12" updated: "2012-06-26T21:22:12" tags: ["Unit Testing", "video"] author: "Roy Osherove" description: "In a past post I hinted that I think Moq is not a part of the future of isolation frameworks. Here’s where I get to explain why. To be clear, it is a really valuable, widely used framework, and it helped change the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The future of Isolation frameworks, and how Moq isn't it (for now) By Roy Osherove June 26, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing), [video](https://osherove.com/blog/category/video) **Historical article** · Originally published June 26, 2012; technical details may be outdated. In [a past post I hinted that](https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.html) I think [Moq](http://moq.github.com/moq/) is not a part of the future of isolation frameworks. Here’s where I get to explain why. To be clear, it is a really valuable, widely used framework, and it helped change the world of Isolation Frameworks in its day. It’s GOOD. But it does not emcopass the properties that I’d like to see, and starting to see in the future of isolation frameworks.  So, to be clear “the future” means “the future I think we should have”, and also, “the patterns I’m starting to see embraced that I like”. **TLDR:** - The future is about **usability**. Moq has horrible messages, to the point of wasting lots of the devloper’s time. - The future is about testing a **single concern**. With Moq it’s easy to test too many things in a single test. - The future is cross-cutting, **robust and future proof fakes**. The newer frameworks allow (at least FakeItEasy) to do cross-cutting faking (such as on all methods that return a specific type). - The future is **simplicity**. (Moq is not as simple as the newer frameworks, in terms of API and usage) - The future is **less confusing**. The future APIs should not and do not use “Mock” and “stub” in the API, because these words are abused and over used to the point of namelessness. So they get out of the way, and not make you think to much about what you get back. It’s all about how you use it, anyway. (if you verify against it, it’s a mock. if not, it’s a stub. done.) - **update**: new: the future is **loose**, not strict. While mock does support loose mocks by default, it allows strict mocks, which make tests much more fragile. Newer frameworks are loose by default, with no strict mode that I know of. See the video below for more details. [![](https://osherove.com/img/video/yt-kzRQPGzCtjI.jpg)Play videoThe Future of Isolation(Mocking) Frameworks](https://www.youtube.com/watch?v=kzRQPGzCtjI) **The LONG version:** - The future is **loose**, not strict mocks. Loose mocks don’t care how many times something was called. so if you say that  method stub returns 3, it \*always\* returns 3. if you verify that a method was called, it doesn’t care how many times it was called with other parameters, as long as it was called at least once with the parameters you mentioned. this makes the tests more robust and future proof as well. Moq does support loose mocks by default, but like many others, it used to not, and still has support for strict mocks for backward compatibility. The new frameworks don’t support strict mocks by default at all, they just allow you to verify amount of times called if you really want to (which I still am not crazy about, but it’s a feature you’d need about 2% of the time when you do TDD).  Strict mocks expect you to say exactly how many times something will return something, or how many times something is called. Always. So your tests become very “naggy” and fragile every time you change production code and tweak it even a little bit. even if it still works in the end result, the tests will nag you to fix them, for all the wrong reasons. - The future is **usability**. Moq has horrible error messages. When the test fails because Moq expectedsomething to be called and it wasn’t, or something different to be called than was actually was, there is almost no way to tell what the differences are in a simple way. The error messages are more scary than helpful. Worse yet, the error message usability has not had any work done that I could see in the few years I’ve used it in class (in many situations). FakeItEasy and NSubstitute (and also Typemock) take great care in giving lots of information in clear , readable error messages.  - The future is less confusing. FakeItEasy and NSubstitute are free of “mock” and “stub” in the API. theAPIs of current isolation frameworks abuse and overuse the word ‘Mock” until its meaningless. It should be simple to tell something is a mock - if you verify against it. The API just gets in the way, and confuses newbies, in Moq (everything is a mock? hardly. But everything is a ‘Mock’..!) - The future is about testing just one thing. FakeItEasy and NSubstitue by default verify a single call, not all of them together. Moq has APIs specifically for testing multiple verifications, which can lead tomaintainable, fragile tests (the past is filled with such tests, because that’s how we used to write tests. We also used to think cigarettes are harmless.). The framework of the future should help prevent over-specification by design. - The future is robust and future proof. A framework like FakeItEasy (as in Isolator) was built with the understanding that sometimes, in your tests, you don’t care about a \*bunch\* of methods, or classes, alltogether. you just want them to make “happy noises”. So they give you APIs that allow you to fake things in a [cross-cutting faking](https://osherove.com/blog/2012/6/27/ss_temp_url) manner (all methods that return type X are fake, or all static methods on type Y are fake). This is robust because if later we add another method to production code that returns that type, we don’t have to go back to our test and add a line that fake it. It gets included by default. Our tests become more maintainable in the face of production code additions and changes. The frameworks of the past are clueless about such ideas. To me, the idea of faking things with a think brush and declaring “i just don’t care about this whole thing right here, or about anything that looks like X” is the same as the idea of [recursive fakes](http://www.richard-banks.org/2010/07/mocking-comparison-part-8-recursive.html), which was finally introduced in Moq a while ago. It makes our tests smaller, more readable and robust for the future. ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Jun 27, 2012 ### [Video: (part 2c) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/28/video-part-2c-building-a-go-game-engine-with-tdd-and-pair-pr.html) - Jun 27, 2012 ### [Video: Part 2b : TDD and Pairing on a go engine with Raymond Lim](https://osherove.com/blog/2012/6/27/video-part-2b-tdd-and-pairing-on-a-go-engine-with-raymond-li.html) - Jun 26, 2012 ### [Video: (part 2a) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/26/video-part-2a-building-a-go-game-engine-with-tdd-and-pair-pr.html) - Jun 26, 2012 ### [FakeItEasy or NSubstitute? Which should I use for samples in art of unit testing 2nd edition?](https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.html) --- title: "Video: (part 2a) Building a Go Game Engine with TDD and Pair Programming" url: "https://osherove.com/blog/2012/6/26/video-part-2a-building-a-go-game-engine-with-tdd-and-pair-pr.md" canonical: "https://osherove.com/blog/2012/6/26/video-part-2a-building-a-go-game-engine-with-tdd-and-pair-pr.html" published: "2012-06-26T20:06:42" updated: "2012-06-26T20:06:42" tags: ["Unit Testing", "video", "Raymond Lim"] author: "Roy Osherove" description: "I’ve put the whole list of continually updating videos on this Go game over here , so you can watch them form the beginning. There is still much to do, but this is starting to get fun! In this 30 minutes video, Raymond…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: (part 2a) Building a Go Game Engine with TDD and Pair Programming By Roy Osherove June 26, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing), [video](https://osherove.com/blog/category/video) **Historical article** · Originally published June 26, 2012; technical details may be outdated. I’ve [put the whole list of continually updating videos on this Go game over here](http://artofunittesting.com/), so you can watch them form the beginning. There is still much to do, but this is starting to get fun! In this 30 minutes video, [Raymond Lim](https://twitter.com/#!/rayylim) and I continue to work on the Go Game Engine, but this time we : - Start with some simple drawings of our wanted feature set, and create a simple backlog - We decide where we want to go next in terms of features - We start writing the feature that determines the winner of the game and “[komi](http://gobase.org/studying/rules/?id=6&ln=uk)” You might ask “why are you pairing with Raymond on this anyway?” It’s simple: Raymond was kind enough to send an email with a question about how to proceed in a specific part of his Go Engine, and in turn I felt it would make an interesting problem to solve as a pair. I did not know Raymond before, but I like to take a risk and meet someone new every once in a while, and pair with them on something I’ve never done before. This time I also got permission to record it. So there. [![](https://osherove.com/img/video/yt-fCgCp4Bc-Sc.jpg)Play videoTDD Pairing Session 2a: A Go Game Engine with Raymond Lim](https://www.youtube.com/watch?v=fCgCp4Bc-Sc) - [#Raymond Lim](https://osherove.com/blog/tag/raymond-lim) ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Jun 27, 2012 ### [Video: Part 2b : TDD and Pairing on a go engine with Raymond Lim](https://osherove.com/blog/2012/6/27/video-part-2b-tdd-and-pairing-on-a-go-engine-with-raymond-li.html) - Jun 26, 2012 ### [The future of Isolation frameworks, and how Moq isn't it (for now)](https://osherove.com/blog/2012/6/27/the-future-of-isolation-frameworks-and-how-moq-isnt-it-for-n.html) - Jun 26, 2012 ### [FakeItEasy or NSubstitute? Which should I use for samples in art of unit testing 2nd edition?](https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.html) - Jun 24, 2012 ### [Video: (part 1) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/25/video-part-1-building-a-go-game-engine-with-tdd-and-pair-pro.html) --- title: "FakeItEasy or NSubstitute? Which should I use for samples in art of unit testing 2nd edition?" url: "https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.md" canonical: "https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.html" published: "2012-06-26T00:13:40" updated: "2012-06-26T00:13:40" tags: ["Cool Tools", "Unit Testing", "tdd"] author: "Roy Osherove" description: "In my upcoming 2nd edition of art of unit testing , I’ve decided not to use RhinoMocks (too old and stuck in the past), or Moq (although widely used, I think it represents the past, not the future) for examples of an…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # FakeItEasy or NSubstitute? Which should I use for samples in art of unit testing 2nd edition? By Roy Osherove June 26, 2012 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Unit Testing](https://osherove.com/blog/category/unit-testing), [tdd](https://osherove.com/blog/category/tdd) **Historical article** · Originally published June 26, 2012; technical details may be outdated. In my [upcoming 2nd edition of art of unit testing](http://affiliate.manning.com/idevaffiliate.php?id=462_304), I’ve decided not to use RhinoMocks (too old and stuck in the past), or Moq (although widely used, I think it represents the past, not the future) for examples of an open source free framework. I think .NET needs to move past Moq and Rhinomocks and seek out new frameworks that adopt some newer API and thinking principles, and are not tied down to backward compatibility APIs. Two good upcoming frameworks are [FakeItEasy](http://julianjelfs.wordpress.com/2011/03/30/why-fakeiteasy-beats-rhino-mocks/) and [NSubstitute](http://nsubstitute.github.com/). If I’m missing a good newcomer, let me know in the comments. Their APIs are slick and simple, and they represent, to me, the future of the isolation framework space in .NET in terms of usability, and also in terms of APIs that don’t use the words ‘mock” or “stub” at all. I like it because that makes less room for abusing the API to make confusing tests. examples: NSubstitute’s API: > `//Create:` > > `var calculator = Substitute.For();` > > `//Set a return value:` > > `calculator.Add(1, 2).Returns(3);` > > `Assert.AreEqual(3, calculator.Add(1, 2));` > > `//Check received calls:` > > `calculator.Received().Add(1, Arg.Any<``int``>());` > > `calculator.DidNotReceive().Add(2, 2);` > > `//Raise events` > > `calculator.PoweringUp += Raise.Event();` FakeItEasy, other than simple stuff, brings a whole new class of APIs - cross-cutting concerns, almost: > var session = A.Fake(); > >        var criteria = A.Fake(); > >        Any.CallTo(session).WithReturnType().Returns(criteria); > >        Any.CallTo(criteria).WithReturnType().Returns(criteria); > >        var controller = new ThingController(session); > >        var result = controller.GetThings(“filter”); > >        A.CallTo(() => criteria.Add( > >            A.That.Matches(c => c.ToString() == Restrictions.InsensitiveLike(“Property”, “%filter%”).ToString()).Argument)) > >            .MustHaveHappened(Repeated.AtLeast.Once); But, I like them both a lot. I use them both in my courses. So help me choose which one to use for examples in my book in chapter 5. I will still cover ALL other frameworks, but I have to give examples in one of them, and not confuse the reader with too many different fframeworks examples. Answer this poll: ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Mar 16, 2013 ### [Tools And Frameworks for Unit Testing in .NET for 2013](https://osherove.com/blog/2013/3/16/tools-and-frameworks-for-unit-testing-in-net-and-java.html) - Feb 22, 2013 ### [Six Tools for managing multiple remote desktop sessions on windows and mac](https://osherove.com/blog/2013/2/22/tools-for-managing-multiple-remote-desktop-sessions-on-windo.html) - Jun 18, 2012 ### [\[Cool Tool\] Chocolatey for windows is what you will not live without in two years](https://osherove.com/blog/2012/6/18/cool-tool-chocolatey-for-windows-is-what-you-will-not-live-w.html) - Dec 14, 2011 ### [\[Cool Tool\] Checking Out VsVim](https://osherove.com/blog/2011/12/14/cool-tool-checking-out-vsvim.html) --- title: "HOW TO: Find the temp videos screenflow makes when uploading to vimeo and youtube" url: "https://osherove.com/blog/2012/6/26/how-to-find-the-temp-videos-screenflow-makes-when-uploading.md" canonical: "https://osherove.com/blog/2012/6/26/how-to-find-the-temp-videos-screenflow-makes-when-uploading.html" published: "2012-06-25T23:42:40" updated: "2012-06-25T23:42:40" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "I was finishing up a screenflow recording and immediately pressed the “upload to youtube” button. then I realized that the auto-saved video file will have to be re-generated if I ever wanted to upload it to another…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # HOW TO: Find the temp videos screenflow makes when uploading to vimeo and youtube By Roy Osherove June 25, 2012 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published June 25, 2012; technical details may be outdated. I was finishing up a screenflow recording and immediately pressed the “upload to youtube” button. then I realized that the auto-saved video file will have to be re-generated if I ever wanted to upload it to another location. That is a bit silly, isn’t it? So I wondered if I can backup the currently uploading video (it has to be on the machine somewhere). I looked, and could not find. I asked on twitter, and this one came a bit too late for me, but screenflow’s twitter handle (@screenflow) gave me this tip (on OSX): > Try Finder>Library>autosave information > > or > > Finder>Library>Application support>Telestream>ScreenFlow>Auto Saving.  ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Jun 10, 2013 ### [Fix: PhantomJs, YSlow and Loadspeed load pages very slowly on windows machines](https://osherove.com/blog/2013/6/10/fix-phantomjs-yslow-and-loadspeed-load-pages-very-slowly-on.html) - Aug 3, 2008 ### [Before testing an addin - Reset Visual Studio’s previous addin knowledge](https://osherove.com/blog/2008/8/3/before-testing-an-addin-reset-visual-studios-previous-addin.html) - Aug 2, 2008 ### [Howto: Set custom Visual Studio Addin menu icons without a satellite dll](https://osherove.com/blog/2008/8/2/howto-set-custom-visual-studio-addin-menu-icons-without-a-sa.html) --- title: "Video: (part 1) Building a Go Game Engine with TDD and Pair Programming" url: "https://osherove.com/videos/2012/6/25/video-part-1-building-a-go-game-engine-with-tdd-and-pair-pro.md" canonical: "https://osherove.com/videos/2012/6/25/video-part-1-building-a-go-game-engine-with-tdd-and-pair-pro.html" published: "2012-06-24T21:42:05" updated: "2012-06-24T21:42:05" tags: ["NDC 2012", "TDD"] author: "Roy Osherove" description: "A few days ago, a guy named Raymond Lim sent me an email with some questions about how to do something with TDD. He has been working on creating a game engine for “Go” game, for practice. I thought it would make for a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: (part 1) Building a Go Game Engine with TDD and Pair Programming By Roy Osherove June 24, 2012 In [NDC 2012](https://osherove.com/videos/category/ndc-2012), [TDD](https://osherove.com/videos/category/tdd) **Historical article** · Originally published June 24, 2012; technical details may be outdated. A few days ago, a guy named Raymond Lim sent me an email with some questions about how to do something with TDD. He has been working on creating a game engine for “Go” game, for practice. I thought it would make for a fun tdd pairing session, so we short the first part of that today. Here’s part one, which is just less than 2 hours long, where we setup the environment, and get going with some simple engine rules. you get to see how engaging and and fun it can be to pair, and how important communication is. Also, you get to see a bunch of times where test-first saves our asses. It’s not perfect, but it’s basically how I’d approach this problem in the real world. Have fun, and let me know if you’d like to see the rest of the session(s) we haven’t shot yet. Thanks Raymond, for having an open mind, and a willingness to jump into the deep water! [![](https://osherove.com/img/video/yt-xX9hfPkA800.jpg)Play videoTDD Pairing Session 1 with Raymond Lim and Roy Osherove](https://www.youtube.com/watch?v=xX9hfPkA800) --- title: "Video: (part 1) Building a Go Game Engine with TDD and Pair Programming" url: "https://osherove.com/blog/2012/6/25/video-part-1-building-a-go-game-engine-with-tdd-and-pair-pro.md" canonical: "https://osherove.com/blog/2012/6/25/video-part-1-building-a-go-game-engine-with-tdd-and-pair-pro.html" published: "2012-06-24T21:08:57" updated: "2012-06-24T21:08:57" tags: ["Unit Testing", "tdd", "video", "Raymond Lim"] author: "Roy Osherove" description: "I’ve put the whole list of continually updating videos on this Go game over here , so you can watch them form the beginning. A few days ago, a guy named Raymond Lim sent me an email with some questions about how to do…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: (part 1) Building a Go Game Engine with TDD and Pair Programming By Roy Osherove June 24, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing), [tdd](https://osherove.com/blog/category/tdd), [video](https://osherove.com/blog/category/video) **Historical article** · Originally published June 24, 2012; technical details may be outdated. I’ve [put the whole list of continually updating videos on this Go game over here](http://artofunittesting.com/), so you can watch them form the beginning.  A few days ago, a guy named [Raymond Lim](https://twitter.com/#!/rayylim) sent me an email with some questions about how to do something with TDD. He has been working on creating a game engine for “Go” game, for practice. I thought it would make for a fun tdd pairing session, so we short the first part of that today. Here’s part one, which is just less than 2 hours long, where we setup the environment, and get going with some simple engine rules. you get to see how engaging and and fun it can be to pair, and how important communication is. Also, you get to see a bunch of times where test-first saves our asses. It’s not perfect, but it’s basically how I’d approach this problem in the real world. Have fun, and let me know if you’d like to see the rest of the session(s) we haven’t shot yet. Thanks Raymond, for having an open mind, and a willingness to jump into the deep water! [![](https://osherove.com/img/video/yt-xX9hfPkA800.jpg)Play videoTDD Pairing Session 1 with Raymond Lim and Roy Osherove](https://www.youtube.com/watch?v=xX9hfPkA800) - [#Raymond Lim](https://osherove.com/blog/tag/raymond-lim) ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Jun 26, 2012 ### [Video: (part 2a) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/26/video-part-2a-building-a-go-game-engine-with-tdd-and-pair-pr.html) - Jun 26, 2012 ### [FakeItEasy or NSubstitute? Which should I use for samples in art of unit testing 2nd edition?](https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.html) - May 16, 2012 ### [File System Wrappers for Unit Testing in C#](https://osherove.com/blog/2012/5/16/file-system-wrappers-for-unit-testing-in-c.html) - May 16, 2012 ### [Test Driven Validation Logic with Extract & Override](https://osherove.com/blog/2012/5/16/test-driven-validation-logic-with-extract-override.html) --- title: "Upcoming 1-day courses in Sweden" url: "https://osherove.com/blog/2012/6/20/upcoming-1-day-courses-in-sweden.md" canonical: "https://osherove.com/blog/2012/6/20/upcoming-1-day-courses-in-sweden.html" published: "2012-06-20T12:20:18" updated: "2012-06-20T12:20:18" tags: ["course"] author: "Roy Osherove" description: "I’ve joined with Foo-Cafe in Sweden (the same folks who brought you oredev until a couple of years ago) here are a few one day courses I’ll be doing there, which are open to the public: Stockholm, October 19, 2012 -…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Upcoming 1-day courses in Sweden By Roy Osherove June 20, 2012 In [course](https://osherove.com/blog/category/course) **Historical article** · Originally published June 20, 2012; technical details may be outdated. I’ve joined with Foo-Cafe in Sweden (the same folks who brought you oredev until a couple of years ago) here are a few one day courses I’ll be doing there, which are open to the public: - [Stockholm, October 19, 2012 - Advanced TDD Subjects in .NET](http://foocafe.org/#event-stockholm-master-class-software-team-leader-essential-skills-and-elastic-leadership-concepts-roy-osherove)  - [Malmo, October 15, 2012 - Advanced TDD Subjects in .NET](http://foocafe.org/#event-master-class-advanced-tdd-subjects-for-net-developers-roy-osherove)  - [Stockholm, November 2. 2012 - Essential Skills and elastic leadership for software team leaders](http://foocafe.org/#event-stockholm-master-class-software-team-leader-essential-skills-and-elastic-leadership-concepts-roy-osherove) - [Malmo, November 5, 2012 - Essential Skills and Elastic Leadership for software team leaders](http://foocafe.org/#event-master-class-software-team-leader-essential-skills-and-elastic-leadership-concepts-roy-osherove) ## More in course [All posts in course](https://osherove.com/blog/category/course) - Feb 21, 2013 ### [March 7 : Refactoring Skills for Unit Testing and TDD Course](https://osherove.com/blog/2013/2/21/march-7-refactoring-skills-for-unit-testing-and-tdd-course.html) - Feb 6, 2013 ### [Two Day Leadership Workshop–London April 11-12](https://osherove.com/blog/2013/2/6/two-day-leadership-workshopndashlondon-april-11-12.html) --- title: "[Cool Tool] Chocolatey for windows is what you will not live without in two years" url: "https://osherove.com/blog/2012/6/18/cool-tool-chocolatey-for-windows-is-what-you-will-not-live-w.md" canonical: "https://osherove.com/blog/2012/6/18/cool-tool-chocolatey-for-windows-is-what-you-will-not-live-w.html" published: "2012-06-18T18:36:11" updated: "2012-06-18T18:36:11" tags: ["Cool Tools"] author: "Roy Osherove" description: "OK, the name isn’t amazing, but having lived in linux land for a while now, and on mac too, the one thing I miss in windows is a no-hassle, dialog-free installation experience, that I can just do using a command line.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool Tool\] Chocolatey for windows is what you will not live without in two years By Roy Osherove June 18, 2012 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published June 18, 2012; technical details may be outdated. OK, the name isn’t amazing, but having lived in linux land for a while now, and on mac too, the one thing I miss in windows is a no-hassle, dialog-free installation experience, that I can just do using a command line. [Chocolatey is as close as it gets](http://chocolatey.org/), and it makes for a very good experience. Just go to [http://chocolatey.org/](http://chocolatey.org/) and check out the simple instructions. after a simple install you should be able to install a bunch of apps very easily without having to : - go to a site - download an installer - unzip maybe - run installer - press all the dialogs you would just do a simple command line “c:\\cinst \[\[application name\]\]” and that’s it. [here’s the list of things](http://chocolatey.org/packages) you can install now, and you can quite easily create more. I think it should be awesome to bae able to install typemock isolator that way (hint!) but I don’t work there anymore, so I can’t make it happen. If I did, I would. I hope that people will start using this for automated software deployments too.  ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Feb 22, 2013 ### [Six Tools for managing multiple remote desktop sessions on windows and mac](https://osherove.com/blog/2013/2/22/tools-for-managing-multiple-remote-desktop-sessions-on-windo.html) - Jun 26, 2012 ### [FakeItEasy or NSubstitute? Which should I use for samples in art of unit testing 2nd edition?](https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.html) - Dec 14, 2011 ### [\[Cool Tool\] Checking Out VsVim](https://osherove.com/blog/2011/12/14/cool-tool-checking-out-vsvim.html) - Aug 2, 2010 ### [Case Study: SmartInspect in the real world](https://osherove.com/blog/2010/8/2/case-study-smartinspect-in-the-real-world.html) --- title: "The courses I'll be teaching while living in scandinavia" url: "https://osherove.com/blog/2012/6/17/the-courses-ill-be-teaching-while-living-in-scandinavia.md" canonical: "https://osherove.com/blog/2012/6/17/the-courses-ill-be-teaching-while-living-in-scandinavia.html" published: "2012-06-17T09:51:37" updated: "2012-06-17T09:51:37" tags: [] author: "Roy Osherove" description: "If you answer this poll, I’ll get a better chance of knowing which courses i should do and which I shouldn’t waste my time on. Help me figure this out. And feel free to suggest courses you’d like to see me teach!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The courses I'll be teaching while living in scandinavia By Roy Osherove June 17, 2012 **Historical article** · Originally published June 17, 2012; technical details may be outdated. If you answer this poll, I’ll get a better chance of knowing which courses i should do and which I shouldn’t waste my time on. Help me figure this out.  And feel free to suggest courses you’d like to see me teach! --- title: "Free for private leadership and TDD training June and July" url: "https://osherove.com/blog/2012/6/12/free-for-private-leadership-and-tdd-training-june-and-july.md" canonical: "https://osherove.com/blog/2012/6/12/free-for-private-leadership-and-tdd-training-june-and-july.html" published: "2012-06-12T11:10:02" updated: "2012-06-12T11:10:02" tags: [] author: "Roy Osherove" description: "With all the work going on with our move to norway this august, I managed to not book anything for end of june, and all through july. If anyone wants me to come over and bring some TDD sense , or leadership techniques…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free for private leadership and TDD training June and July By Roy Osherove June 12, 2012 **Historical article** · Originally published June 12, 2012; technical details may be outdated. With all the work going on with our move to norway this august, I managed to not book anything for end of june, and all through july. If anyone wants me to come over and bring some [TDD sense](https://osherove.com/tdd-training/), or [leadership techniques](https://leanpub.com/elastic) to your team leaders and teams, [please ping me.](https://osherove.com/request-more-info/) --- title: "File System Wrappers for Unit Testing in C#" url: "https://osherove.com/blog/2012/5/16/file-system-wrappers-for-unit-testing-in-c.md" canonical: "https://osherove.com/blog/2012/5/16/file-system-wrappers-for-unit-testing-in-c.html" published: "2012-05-16T12:29:18" updated: "2012-05-16T12:29:18" tags: ["Unit Testing"] author: "Roy Osherove" description: "I’ve asked this on twitter, and here’s what I got: System.IO.Abstractions (looks pretty deep) SystemWrapper (I’m not crazy about the file system being used as a mock API) Something older I’d take a look at the first on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # File System Wrappers for Unit Testing in C\# By Roy Osherove May 16, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published May 16, 2012; technical details may be outdated. I’ve asked this on twitter, and here’s what I got: - [System.IO.Abstractions](https://github.com/tathamoddie/System.IO.Abstractions) (looks pretty deep) - [SystemWrapper](http://systemwrapper.codeplex.com/) (I’m not crazy about the file system being used as a mock API) - [Something older](http://bugsquash.blogspot.de/2008/03/injectable-file-adapters.html) I’d take a look at the first on the list first, if only for it being on github as a sign of advancement. ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Jun 26, 2012 ### [FakeItEasy or NSubstitute? Which should I use for samples in art of unit testing 2nd edition?](https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.html) - Jun 24, 2012 ### [Video: (part 1) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/25/video-part-1-building-a-go-game-engine-with-tdd-and-pair-pro.html) - May 16, 2012 ### [Test Driven Validation Logic with Extract & Override](https://osherove.com/blog/2012/5/16/test-driven-validation-logic-with-extract-override.html) - May 15, 2012 ### [Test Naming Conventions With Unit of Work](https://osherove.com/blog/2012/5/15/test-naming-conventions-with-unit-of-work.html) --- title: "Test Driven Validation Logic with Extract & Override" url: "https://osherove.com/blog/2012/5/16/test-driven-validation-logic-with-extract-override.md" canonical: "https://osherove.com/blog/2012/5/16/test-driven-validation-logic-with-extract-override.html" published: "2012-05-16T09:24:38" updated: "2012-05-16T09:24:38" tags: ["Unit Testing"] author: "Roy Osherove" description: "In the NerdDinner project, there’s this amazing test (see the bottom, second one). There are so many things wrong here: What is exactly correct about these properties? Many magic values Multiple tests in a single test…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven Validation Logic with Extract & Override By Roy Osherove May 16, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published May 16, 2012; technical details may be outdated. In the NerdDinner project, [there’s this amazing test](http://nerddinner.codeplex.com/SourceControl/changeset/view/70027#874462) (see the bottom, second one). There are so many things wrong here: - What is exactly correct about these properties? - Many magic values - Multiple tests in a single test - if it fails,  its hard to find out why Here’s how I would approach this kind of validation logic: use Extract and override, with the test setting the flags for all ‘other’ validation functions except the one I’m testing right now. and I’d at least have two tests for each validation logic. This can also be accomplished with multiple classes and an interface, but I find the tests this way are more readable. ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Jun 24, 2012 ### [Video: (part 1) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/25/video-part-1-building-a-go-game-engine-with-tdd-and-pair-pro.html) - May 16, 2012 ### [File System Wrappers for Unit Testing in C#](https://osherove.com/blog/2012/5/16/file-system-wrappers-for-unit-testing-in-c.html) - May 15, 2012 ### [Test Naming Conventions With Unit of Work](https://osherove.com/blog/2012/5/15/test-naming-conventions-with-unit-of-work.html) - May 15, 2012 ### [What does the 'unit' in 'unit test' mean?](https://osherove.com/blog/2012/5/15/what-does-the-unit-in-unit-test-mean.html) --- title: "Zen of python revisited with code samples" url: "https://osherove.com/blog/2012/5/16/zen-of-python-revisited-with-code-samples.md" canonical: "https://osherove.com/blog/2012/5/16/zen-of-python-revisited-with-code-samples.html" published: "2012-05-15T21:14:45" updated: "2012-05-15T21:14:45" tags: ["python"] author: "Roy Osherove" description: "I really like reading this code . I will look deeper into it this week. Many of the “zen” ideas here speak to me on the unit test level." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Zen of python revisited with code samples By Roy Osherove May 15, 2012 In [python](https://osherove.com/blog/category/python) **Historical article** · Originally published May 15, 2012; technical details may be outdated. I really like [reading this code](http://artifex.org/~hblanks/talks/2011/pep20_by_example.html). I will look deeper into it this week. Many of the “zen” ideas here speak to me on the unit test level. --- title: "Test Naming Conventions With Unit of Work" url: "https://osherove.com/blog/2012/5/15/test-naming-conventions-with-unit-of-work.md" canonical: "https://osherove.com/blog/2012/5/15/test-naming-conventions-with-unit-of-work.html" published: "2012-05-15T16:15:54" updated: "2012-05-15T16:15:54" tags: ["Unit Testing"] author: "Roy Osherove" description: "When I name my tests I use the name of the “ unit of work ” as the first part. If the unit of work is bigger than a method, I usually name the test with the name of the initial public method that starts the unit of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Naming Conventions With Unit of Work By Roy Osherove May 15, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published May 15, 2012; technical details may be outdated. When I name my tests I use the name of the “[unit of work](https://osherove.com/blog/2012/5/15/what-does-the-unit-in-unit-test-mean.html)” as the first part. If the unit of work is bigger than a method, I usually name the test with the name of the **initial public method** that starts the unit of work.  Test names are affected by the type of end result we are expecting. So a test might look like this for a return value result: **IsLoginOK\_UserDoesNotExist\_ReturnsFalse** or like this for a state change result: **AddUser\_ValidUserDetails\_UserCanBeLoggedIn** or like this for 3rd party end results (when we use mock objects): **IsLoginOK\_LoginFails\_CallsLogger** the first part is the unit of work. the second part is the scenario. the third part is the expected end result or behavior of the system. ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - May 16, 2012 ### [File System Wrappers for Unit Testing in C#](https://osherove.com/blog/2012/5/16/file-system-wrappers-for-unit-testing-in-c.html) - May 16, 2012 ### [Test Driven Validation Logic with Extract & Override](https://osherove.com/blog/2012/5/16/test-driven-validation-logic-with-extract-override.html) - May 15, 2012 ### [What does the 'unit' in 'unit test' mean?](https://osherove.com/blog/2012/5/15/what-does-the-unit-in-unit-test-mean.html) - Oct 6, 2011 ### [Free event and 5 day TDD masterclass in Copenhagen this month](https://osherove.com/blog/2011/10/6/free-event-and-5-day-tdd-masterclass-in-copenhagen-this-mont.html) --- title: "What does the 'unit' in 'unit test' mean?" url: "https://osherove.com/blog/2012/5/15/what-does-the-unit-in-unit-test-mean.md" canonical: "https://osherove.com/blog/2012/5/15/what-does-the-unit-in-unit-test-mean.html" published: "2012-05-15T16:02:45" updated: "2012-05-15T16:02:45" tags: ["Unit Testing"] author: "Roy Osherove" description: "I used to think it was a method. Then I thought it coule be several methods. then I thought it might be several classes. then I realized it changes all the time. It means “unit of work”. A unit of work is a use case in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What does the 'unit' in 'unit test' mean? By Roy Osherove May 15, 2012 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published May 15, 2012; technical details may be outdated. I used to think it was a method. Then I thought it coule be several methods. then I thought it might be several classes. then I realized it changes all the time. It means “unit of work”. A unit of work is a use case in the system, that is initiated by a public method somewhere, and ends up with an end result. An end result can be one of three things: - A return value(if the public method is a function) or an exception return value - A **noticeable** change to the state of the system under test. **Noticeable** means that the system behaves differently to an end user than it did before. For example - adding a user changes the system behavior to allow that user to login in.  - A call to a 3rd party system. A 3rd party system is a dependency that we do not have control over in our test. If it touches the file system, or calls the network, or uses threads, or anything that makes our test slow, or inconsistent, it is a dependency we don’t have control over. The third case (3rd parties) is where we end up using mock objects. In all other cases, we might have stubs to break dependencies, but our asserts will be against the system’s different states, or different return values. ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - May 16, 2012 ### [Test Driven Validation Logic with Extract & Override](https://osherove.com/blog/2012/5/16/test-driven-validation-logic-with-extract-override.html) - May 15, 2012 ### [Test Naming Conventions With Unit of Work](https://osherove.com/blog/2012/5/15/test-naming-conventions-with-unit-of-work.html) - Oct 6, 2011 ### [Free event and 5 day TDD masterclass in Copenhagen this month](https://osherove.com/blog/2011/10/6/free-event-and-5-day-tdd-masterclass-in-copenhagen-this-mont.html) - Aug 24, 2011 ### [Why MSTest is the IE6 of unit test frameworks](https://osherove.com/blog/2011/8/24/why-mstest-is-the-ie6-of-unit-test-frameworks.html) --- title: "[Video] Vimming - Natural Selection in Visual Mode" url: "https://osherove.com/blog/2012/5/9/video-vimming-natural-selection-in-visual-mode.md" canonical: "https://osherove.com/blog/2012/5/9/video-vimming-natural-selection-in-visual-mode.html" published: "2012-05-09T13:07:32" updated: "2012-05-09T13:07:32" tags: ["video", "vim"] author: "Roy Osherove" description: "My third vimdeo Play video Vimming - Natural Selection" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Video\] Vimming - Natural Selection in Visual Mode By Roy Osherove May 9, 2012 In [video](https://osherove.com/blog/category/video), [vim](https://osherove.com/blog/category/vim) **Historical article** · Originally published May 9, 2012; technical details may be outdated. My third vimdeo [![](https://osherove.com/img/video/yt-aaCGJCJPSjA.jpg)Play videoVimming - Natural Selection](https://www.youtube.com/watch?v=aaCGJCJPSjA) ## More in video [All posts in video](https://osherove.com/blog/category/video) - Jun 26, 2012 ### [Video: (part 2a) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/26/video-part-2a-building-a-go-game-engine-with-tdd-and-pair-pr.html) - Jun 24, 2012 ### [Video: (part 1) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/25/video-part-1-building-a-go-game-engine-with-tdd-and-pair-pro.html) - Jul 8, 2011 ### [Video: Team Leadership in the Age of Agile](https://osherove.com/blog/2011/7/8/video-team-leadership-in-the-age-of-agile.html) - Jun 18, 2011 ### [Video: The 3 amigos at NDC2011](https://osherove.com/blog/2011/6/18/video-the-3-amigos-at-ndc2011.html) --- title: "[Video] Vimming - All about change" url: "https://osherove.com/blog/2012/5/8/video-vimming-all-about-change.md" canonical: "https://osherove.com/blog/2012/5/8/video-vimming-all-about-change.html" published: "2012-05-08T14:32:02" updated: "2012-05-08T14:32:02" tags: [] author: "Roy Osherove" description: "here’s my second attempt Play video vimming - All About Change" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Video\] Vimming - All about change By Roy Osherove May 8, 2012 **Historical article** · Originally published May 8, 2012; technical details may be outdated. here’s my second attempt [![](https://osherove.com/img/video/yt-qfYRzmHVoSA.jpg)Play videovimming - All About Change](https://www.youtube.com/watch?v=qfYRzmHVoSA) --- title: "[Video] Vimming - Hello World with vim" url: "https://osherove.com/blog/2012/5/7/video-vimming-hello-world-with-vim.md" canonical: "https://osherove.com/blog/2012/5/7/video-vimming-hello-world-with-vim.html" published: "2012-05-07T19:15:38" updated: "2012-05-07T19:15:38" tags: ["vim"] author: "Roy Osherove" description: "My first foray into trying to teach vim related stuff. hope you like it. Play video vimming - Hello World with vim" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Video\] Vimming - Hello World with vim By Roy Osherove May 7, 2012 In [vim](https://osherove.com/blog/category/vim) **Historical article** · Originally published May 7, 2012; technical details may be outdated. My first foray into trying to teach vim related stuff. hope you like it. [![](https://osherove.com/img/video/yt-eiVnG0lkfF4.jpg)Play videovimming - Hello World with vim](https://www.youtube.com/watch?v=eiVnG0lkfF4) ## More in vim [All posts in vim](https://osherove.com/blog/category/vim) - May 9, 2012 ### [\[Video\] Vimming - Natural Selection in Visual Mode](https://osherove.com/blog/2012/5/9/video-vimming-natural-selection-in-visual-mode.html) --- title: "Annual Poll: Which Isolation framework do you use if any?" url: "https://osherove.com/blog/2012/5/4/annual-poll-which-isolation-framework-do-you-use-if-any.md" canonical: "https://osherove.com/blog/2012/5/4/annual-poll-which-isolation-framework-do-you-use-if-any.html" published: "2012-05-04T09:44:41" updated: "2012-05-04T09:44:41" tags: [] author: "Roy Osherove" description: "Please answer the following:" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Annual Poll: Which Isolation framework do you use if any? By Roy Osherove May 4, 2012 **Historical article** · Originally published May 4, 2012; technical details may be outdated. Please answer the following: --- title: "Hire me for a day or two in Oslo, in June" url: "https://osherove.com/blog/2012/5/3/hire-me-for-a-day-or-two-in-oslo-in-june.md" canonical: "https://osherove.com/blog/2012/5/3/hire-me-for-a-day-or-two-in-oslo-in-june.html" published: "2012-05-03T11:22:22" updated: "2012-05-03T11:22:22" tags: [] author: "Roy Osherove" description: "During the week of NDC, I will be spending some of my time doing absolutely nothing but look at apartments (we’re planning to move to Norway in august, given all works out and I find a good place to work). If anyone…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hire me for a day or two in Oslo, in June By Roy Osherove May 3, 2012 **Historical article** · Originally published May 3, 2012; technical details may be outdated. During the week of NDC, I will be spending some of my time doing absolutely nothing but look at apartments (we’re planning to move to Norway in august, given all works out and I find a good place to work). If anyone would like me to come over to their place and speak, train, consult, pair or do a code/test review - I’d love to do it. Also, if your company is willing to donate a lecture hall (50 ppl or more) I’m attempting to organize a one day public course about leadership. ping me if you’re interested. [Contact me here.](https://osherove.com/request-more-info/) --- title: "The Zen of python should be the zen of good unit testing" url: "https://osherove.com/blog/2012/5/2/the-zen-of-python-should-be-the-zen-of-good-unit-testing.md" canonical: "https://osherove.com/blog/2012/5/2/the-zen-of-python-should-be-the-zen-of-good-unit-testing.html" published: "2012-05-01T21:20:19" updated: "2012-05-01T21:20:19" tags: [] author: "Roy Osherove" description: "I’ve come across the “ zen of python ”. A list of siple rules for style and thought. Overall, I’ve heard that python folks like to be more explicit, and I always felt it’s a good idea. but when I came across the full…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Zen of python should be the zen of good unit testing By Roy Osherove May 1, 2012 **Historical article** · Originally published May 1, 2012; technical details may be outdated. I’ve come across the “[zen of python](http://www.python.org/dev/peps/pep-0020/)”. A list of siple rules for style and thought. Overall, I’ve heard that python folks like to be more explicit, and I always felt it’s a good idea. but when I came across the full list, I can see how I believe in most of these thigns when I teach my students about readable, maintinable tests: The zen of unit testing: ``` Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. (? not sure what this means) Readability counts. Special cases aren't special enough to break the rules. (? not sure it's tru for unit testing style) Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. (uh.. yeah) Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those! (not sure..) ``` --- title: "NEW: Ruby podcast in hebrew" url: "https://osherove.com/blog/2012/5/2/new-ruby-podcast-in-hebrew-1.md" canonical: "https://osherove.com/blog/2012/5/2/new-ruby-podcast-in-hebrew-1.html" published: "2012-05-01T21:15:04" updated: "2012-05-01T21:15:04" tags: ["Ruby"] author: "Roy Osherove" description: "A few of the members of the ruby underground in israel have started a ruby related podcast in the hebrew language. It’s pretty awesome - go have a listen to the first show about quality software ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NEW: Ruby podcast in hebrew By Roy Osherove May 1, 2012 In [Ruby](https://osherove.com/blog/category/ruby) **Historical article** · Originally published May 1, 2012; technical details may be outdated. A few of the members of [the ruby underground in israel](http://meetup.com/IsraelRubyUnderground/) have started [a ruby related podcast in the hebrew language.](http://rauchy.net/truby/) It’s pretty awesome - go have a listen [to the first show about quality software](http://rauchy.net/truby/002-%D7%90%D7%99%D7%9B%D7%95%D7%AA-%D7%AA%D7%95%D7%9B%D7%A0%D7%94/). ## More in Ruby [All posts in Ruby](https://osherove.com/blog/category/ruby) - Jul 8, 2011 ### [Ruby User Group: upcoming meeting on Ruby next week](https://osherove.com/blog/2011/7/8/ruby-user-group-upcoming-meeting-on-ruby-next-week.html) - Mar 16, 2011 ### [New User Group: Ruby Underground - Ruby and Ruby On Rails](https://osherove.com/blog/2011/3/16/new-user-group-ruby-underground-ruby-and-ruby-on-rails-1.html) --- title: "Looking for full time work in Norway" url: "https://osherove.com/blog/2012/4/16/looking-for-full-time-work-in-norway.md" canonical: "https://osherove.com/blog/2012/4/16/looking-for-full-time-work-in-norway.html" published: "2012-04-16T09:10:19" updated: "2012-04-16T09:10:19" tags: [] author: "Roy Osherove" description: "It’s decided. I want to live with my family in norway (unless some magical opportunity comes my way from Sweden!) for a few years and see what happens. It seems like a big place of opportunity and learning, and here in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Looking for full time work in Norway By Roy Osherove April 16, 2012 **Historical article** · Originally published April 16, 2012; technical details may be outdated. It’s decided. I want to live with my family in norway (unless some magical opportunity comes my way from Sweden!) for a few years and see what happens. It seems like a big place of opportunity and learning, and here in Israel the feeling is that I’m kind of stuck. plus the travel to Norway 4 times a year is not great.  I’m looking for a company to sponsor me for a work permit for a year or more (1-2 years for now). This is a full time job, and what I’m looking for is working in any of the following areas:  - Training [about TDD](https://osherove.com/tdd-training/) and [Team Leadership](https://osherove.com/leadership-course/) - CTO - Consuting about TDD and team leadership - Coding and leading (.NET or Ruby, Or Python or Node.js Or frontend stuff, hopefully more than one langauge) - [Writing](http://artofunittesting.com/) and Speaking at places - … Your ideas are welcome. I’ll try anything once..! [Contact me](https://osherove.com/request-more-info/) What I need: - the company handles all the paperwork for getting me and my family over there - the company helps me find a place for the family to live, school and kindergarten for my kids - I need to be able to continue providing my courses, possibly even more of them, with some cut to the hosting company  - A role where I can make a difference When? Either August 2012 or Aug 2013, depending on how fast we can make things happen. If you [want me to work with you ping me here](https://osherove.com/request-more-info/). --- title: "New Book: Notes to a software team leader" url: "https://osherove.com/blog/2012/2/28/new-book-notes-to-a-software-team-leader.md" canonical: "https://osherove.com/blog/2012/2/28/new-book-notes-to-a-software-team-leader.html" published: "2012-02-28T09:09:07" updated: "2012-02-28T09:09:07" tags: ["Agile"] author: "Roy Osherove" description: "I've started to write my upcoming book titled \" Notes to a software team leader \" (hat tip to Kevlin Henney for the name idea). The book will combine many of the subjects my 5whys blog addresses, plus notes collected…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Book: Notes to a software team leader By Roy Osherove February 28, 2012 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published February 28, 2012; technical details may be outdated. I've started to write my upcoming book titled "**Notes to a software team leader**" (hat tip to [Kevlin Henney](http://www.two-sdg.demon.co.uk/curbralan/kevlin.html) for the name idea). The book will combine many of the subjects [my 5whys blog](http://5whys.com/) addresses, plus notes collected from some of the best minds in the management field, various stakeholders and actual team members. If you're interested, [you can be notified when it's published](https://leanpub.com/teamleader) (chapter by chapter)- I will start publishing incrementally, in the coming days, over at leanpub. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 6, 2013 ### [Coming to America (to do training)](https://osherove.com/blog/2013/6/6/coming-to-america-to-do-training.html) - Apr 6, 2013 ### [Two workshops on Beautiful Builds, Refactoring and Design Skills](https://osherove.com/blog/2013/4/6/two-workshops-on-beautiful-builds-and-refactoring-and-design.html) - Nov 11, 2011 ### [TDD Master class - Videos Available For Purchase at TekPub](https://osherove.com/blog/2011/11/11/tdd-master-class-videos-available-for-purchase-at-tekpub.html) - Jun 1, 2010 ### [Video: Hardcore production debugging in .NET – Ingo Rammer](https://osherove.com/blog/2010/6/1/video-hardcore-production-debugging-in-net-ingo-rammer.html) --- title: "[Cool Tool] Checking Out VsVim" url: "https://osherove.com/blog/2011/12/14/cool-tool-checking-out-vsvim.md" canonical: "https://osherove.com/blog/2011/12/14/cool-tool-checking-out-vsvim.html" published: "2011-12-14T04:56:18" updated: "2011-12-14T04:56:18" tags: ["Cool Tools"] author: "Roy Osherove" description: "I've been using VsVim in my latest TDD course. It's a simulator of Vim keybindings for visual studio. I've been using vim since january 2011, so almost a year now, and i've come to really like the power you get when…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool Tool\] Checking Out VsVim By Roy Osherove December 14, 2011 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published December 14, 2011; technical details may be outdated. I've been [using VsVim](http://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-46ca-8fe1-0e90e3f79329) in my latest TDD course. It's a simulator of Vim keybindings for visual studio. I've been using vim since january 2011, so almost a year now, and i've come to really like the power you get when editing code with it. Unlike [ViEmu](http://www.viemu.com/), another vim emulator for visual studio.net, VsVim is 'soft' on overriding keybindings. So, because I also use reshaper, VsVim doesn't override any keybindings that are already taken by other visual studio addins. That means that out of the box, vsvim "just works" and reshaper continues to "just work" without any fiddling needed. Very few of the bindings that I 'lost' to reshaper are ones that I actually like in reshaper (ctrl-d to duplicate in reshaper is also 'scroll down' in vim, but that's ok). In short, VsVim is free, you can get it from the VS extension manager, and it 'just works' if you're a Vim fan. Nice job! Also, kudos to Lars Magen Engedal from my TDD course in Stavanger, Norway, for letting me know about it. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 26, 2012 ### [FakeItEasy or NSubstitute? Which should I use for samples in art of unit testing 2nd edition?](https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.html) - Jun 18, 2012 ### [\[Cool Tool\] Chocolatey for windows is what you will not live without in two years](https://osherove.com/blog/2012/6/18/cool-tool-chocolatey-for-windows-is-what-you-will-not-live-w.html) - Aug 2, 2010 ### [Case Study: SmartInspect in the real world](https://osherove.com/blog/2010/8/2/case-study-smartinspect-in-the-real-world.html) - Aug 2, 2010 ### [Case Study: CryptoLicensing + CryptoObfuscator in the real world](https://osherove.com/blog/2010/8/2/case-study-cryptolicensing-cryptoobfuscator-in-the-real-worl.html) --- title: "Help me pick a name for my new site - a search engine for keyboard shortcuts" url: "https://osherove.com/blog/2011/12/5/help-me-pick-a-name-for-my-new-site-a-search-engine-for-keyb.md" canonical: "https://osherove.com/blog/2011/12/5/help-me-pick-a-name-for-my-new-site-a-search-engine-for-keyb.html" published: "2011-12-05T19:35:00" updated: "2011-12-05T19:35:00" tags: [] author: "Roy Osherove" description: "I’m working on a new site that will be a search engine for keyboard shortuts, where you’d put in an app name and get all the shortcuts for it. But I’m not sure which name is best. help me decide, dear reader!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Help me pick a name for my new site - a search engine for keyboard shortcuts By Roy Osherove December 5, 2011 **Historical article** · Originally published December 5, 2011; technical details may be outdated. I’m working on a new site that will be a search engine for keyboard shortuts, where you’d put in an app name and get all the shortcuts for it. But I’m not sure which name is best. help me decide, dear reader! --- title: "Norway - Stavanger Elastic Leadership Class" url: "https://osherove.com/blog/2011/11/29/norway-stavanger-elastic-leadership-class.md" canonical: "https://osherove.com/blog/2011/11/29/norway-stavanger-elastic-leadership-class.html" published: "2011-11-29T12:38:09" updated: "2011-11-29T12:38:09" tags: [] author: "Roy Osherove" description: "This is very short notice, (which is why there is a surprise) - but During December 15-16, I’ll be doing my Elastic Leadership Course “Lead Better” in Stavanger, Norway. This course is for new and experienced software…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Norway - Stavanger Elastic Leadership Class By Roy Osherove November 29, 2011 **Historical article** · Originally published November 29, 2011; technical details may be outdated. This is very short notice, (which is why there is a surprise) - but During December 15-16, I’ll be doing my [Elastic Leadership Course “Lead Better”](https://osherove.com/leadership-course/) in Stavanger, Norway. This course is for new and experienced software team leaders, who want to get things done. It touches all the points not covered in the today’s ‘Agile’, ‘Scrum’ and ‘Project Management’ courses - people skills, influence techniques and understanding team phases. It is based on my experiences blogged at [http://5whys.com](http://5whys.com/) - but with much more details and exercises. What’s the surprise? because it’s such short notice, all tickets are around 20% off regular ticket price (no double discounts!) (10,900 non instead of 13,900). [For registration and info click here.](http://www.programutvikling.no/kurskalenderoversikt.aspx?mid_1=1352&mid=1535&id=1269909) **NOTE: the course will run only if we have 5 or more attendees registered.** [Course](http://technorati.com/tag/Course) --- title: "How Microsoft Israel Scares .NET Consultants Into Submission" url: "https://osherove.com/blog/2011/11/27/how-microsoft-israel-scares-net-consultants-into-submission.md" canonical: "https://osherove.com/blog/2011/11/27/how-microsoft-israel-scares-net-consultants-into-submission.html" published: "2011-11-27T10:49:09" updated: "2011-11-27T10:49:09" tags: [".NET"] author: "Roy Osherove" description: "If you are a consultant related to any Microsoft related technology in Israel, you might know the feeling - There's something you really want to tell your customers about a product that might be better than a current…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How Microsoft Israel Scares .NET Consultants Into Submission By Roy Osherove November 27, 2011 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published November 27, 2011; technical details may be outdated. If you are a consultant related to any Microsoft related technology in Israel, you might know the feeling - There's something you really want to tell your customers about a product that might be better than a current Microsoft Product, but you hold your tongue from doing this in public, let alone in any kind of recorded fashion. **The reasons? You fear Microsoft Israel's retaliation on your livelihood.** I think this fear affects most of the consultants/speakers you'd see at events such as TechEd israel and other Microsoft Centric programmer events. While I can only speak for my own experiences and feelings on this, I've been told 'off the record' by multiple high profile consultants in the israel arena, ranging from technologies such as Sharepoint, WCF, WPF and more, that I'm not the only one who felt this. They are actively discouraging themselves from saying bad things about Microsoft Technology, even if they fully believe they are true. They fear for their livelihood . **How come?** If you work for a Microsoft Partner in Israel, or you offer Microsoft based solutions to customers in Israel, chances are you also went through talking to some of the folks over at the "Marketing" machine down in Israel's Ra'anana center. No development is done there, but all event planning, partner hookups and customer evangelism lives there related to all of israel. If you consult for israeli customers on Microsoft issues, and you want to publicize yourself through any of the Microsoft channels in Israel - from speaking at conference and events, to getting special 'leads' for customers interested in solving solutions for their Microsoft technologies - you depend on the folks at the Microsoft Israel Ra-anana Center to help you out. If the folks at the MS raanana center don't like what you have to say - they won't let you speak at any Microsoft Event (no matter whether you are right or wrong), and they won't refer any potential customers with issues to you. You are left with no ability to market yourself but directly to Israeli customers - an ability which most consultants in Israel are too small to handle successfully. This creates the situations where - once you are 'in' the 'in crowd' of the folks who speak at Microsoft conferences, or work at a Microsoft Partner - you start depending on getting leads and event opportunities from Microsoft itself. In return you feel less and less 'encouraged' to say anything that would hurt your livelihood. If technologists are _afraid_ of saying the "right thing" because they fear losing customers - we get into a situation where customers who are in the "Microsoft eco system" get to hear only things that will make them pay more money to Microsoft, never to try things out of the Microsoft tech system, even if they are good for them. Not sure what's so bad about that? It's the same problem of trust you should have if you want to get your car's annual check, and the licensing place also gives you technical 'fixing' services for your car - they have it in their best interest to make you pay more, instead of telling you the truth if your car should pass the license check. Imagine a speaker at a TechEd conference who spoke ill about Microsoft's unit testing solution. Now imagine that person never being invited back to speak there even though their talk was among the top ten voted talks for that conference, simply because of the fact he is vocalizing negative feedback on the Microsoft eco system. He also stops receiving emails and phone calls from MS evangelists that want to connect him to customers, because he's 'off message'. These things are not 'publicly declared, but they are well known in the large community of .NET consultants who depend on MS leads and events for a living here in Israel. If that person depends solely on Microsoft technology to earn a living, they are shut out of the MS eco system's biggest marketing tool - conference speaking. Within a year they change their tune when they see that others are getting into the conferences and the'r talks are rejected silently. Now imagine that actually happened, and that most technical Microsoft Consultants feel threatened in that way - a silent, deadly threat to their livelihood. > If I can't even tell the truth to my customers, do I really want to live in that world? **The solution** is to bring in people into the MS Israel Arena that don't fear deserting views, but welcome them and welcome open dialog. Otherwise, this hidden method of pre-selection will continue to hurt all of Microsoft Israel's technology customers and partners. The last one I trusted was Yossi Taguri - but he has since long gone in to the OSS and mobile world. I don't know if it's the same in other countries, but I can tell you that power corrupts even at such minute levels. People get 'punished' for doing the wrong thing, instead of an actual conversation and real community going on. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 11, 2011 ### [TDD Master class - Videos Available For Purchase at TekPub](https://osherove.com/blog/2011/11/11/tdd-master-class-videos-available-for-purchase-at-tekpub.html) - Aug 25, 2011 ### [Upcoming 3 and 5 day TDD classes](https://osherove.com/blog/2011/8/25/upcoming-3-and-5-day-tdd-classes.html) --- title: "My Suggested Talks for NDC 2012" url: "https://osherove.com/blog/2011/11/23/my-suggested-talks-for-ndc-2012.md" canonical: "https://osherove.com/blog/2011/11/23/my-suggested-talks-for-ndc-2012.html" published: "2011-11-23T12:49:43" updated: "2011-11-23T12:49:43" tags: ["NDC"] author: "Roy Osherove" description: "Here’s the list I submitted to the powers that be for NDC 2012 . Most of these are new. soe are ‘refurbished’ with information I learned in the past year. I wonder which ones will go through.. 10 things every software…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My Suggested Talks for NDC 2012 By Roy Osherove November 23, 2011 In [NDC](https://osherove.com/blog/category/ndc) **Historical article** · Originally published November 23, 2011; technical details may be outdated. Here’s the list I submitted to the powers that be for [NDC 2012](http://ndc2012.no/). Most of these are new. soe are ‘refurbished’ with information I learned in the past year. I wonder which ones will go through.. 1. 10 things every software team leader should know 2. How to change anything: the six influence factors that will change they way you lead your team 3. What you don’t know you don’t know: How to become a better developer by breaking out of your comfort zone 4. Real life TDD lessons in .NET and Ruby - what I learned in the past year working on a Ruby on Rails Project 5. Awesome CSS sauce - Cool tools and techniques to make CSS work more fun and maintainable 6. Vim for Victory - Love it or hate it - You have to know vim and understand its strengths and weaknesses. It will help you in real life. 7. Test Driven Ruby - The simple case of the string calculator kata 8. Unit Testing Best Practices for static and non static languages - I’ll discuss which make sense for .net or ruby style languages 9. .NET Isolation Frameworks Deep Dive: what you should know before choosing one - I review the big ones, and the differences between Proxy Based frameworks and the commercial, profiler based ones 10. Powerful gems every ruby on rails developer should know --- title: "TDD Master class - Videos Available For Purchase at TekPub" url: "https://osherove.com/blog/2011/11/11/tdd-master-class-videos-available-for-purchase-at-tekpub.md" canonical: "https://osherove.com/blog/2011/11/11/tdd-master-class-videos-available-for-purchase-at-tekpub.html" published: "2011-11-11T20:16:11" updated: "2011-11-11T20:16:11" tags: [".NET", "Agile"] author: "Roy Osherove" description: "UPDATE: I have moved my tdd master class videos over to udemy.com . I’ve added many more and the class is now almost fully complete. In the past several months I’ve been taking background recordings of my classes with…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Master class - Videos Available For Purchase at TekPub By Roy Osherove November 11, 2011 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published November 11, 2011; technical details may be outdated. UPDATE: I have moved my [tdd master class videos over to udemy.com](http://www.udemy.com/tdd-in-net-with-roy-osherove/) . I’ve added many more and the class is now almost fully complete. In the past several months I’ve been taking background recordings [of my classes](https://osherove.com/tdd-training/) with screen recorders on. I’ve heard from a good number of people that they can’t attend my TDD classes, and that it would be great if they could get videos of those classes in some way.  So I took a step that scared me a bit (always a good thing to be scared a bit!), and through TekPub, released recordings from days 1 and 2 of my TDD master class (overall it’s five days). The whole thing costs 40$, which to me is the scary part. Maybe people will not want to got to my classes if they can learn it all online? Maybe it’s not enough money? (I’m getting about 50% of that, BTW - which is cool and dandy with me). Anyway, I thought it might be an interesting exercise, so for now, I’m not putting all my eggs in one basket - You can’t get \*all\* five days of videos.. yet. That scares me a bit too much to do. Instead, you get to learn some of the most basic building blocks of successful TDD and Unit testing: writing tests that are readable, maintainable and trustworthy.  ### What’s included? - Unit Testing and TDD 101 + Readability, Maintainability and Trust - if you’ve never written a unit test before - this is a good start. But if you have, you’ll start learning about practices that will make the tests readable and maintainable. You’ll also learn some Test-First with NUnit (and some Nuget as well..). This is covered in various ways in all five of those videos - Hand Written Mocks and Fakes - good for understanding the concepts of mocks, stubs and fakes, and how they work under the covers. In fact, some people never go on to use Isolation frameworks (I dislike calling them mocking frameworks because that term is just mostly wrong for what they are used for),  and stay with hand written fakes. - Starting the string calculator kata - I here I go through the first few stages of the String Calculator Kata, again with focus on readability and maintainability, and also describing my TDD thinking process in a frame-by-frame manner - Lots of conversations between me and my students - You’ll get to hear how I changed my view from what a ‘unit’ is to a ‘unit-of-work’ mentality - Legacy code walk-throughs - Code Reviews - Isolation Frameworks **NOT THERE:** - You doing the exercises and drills that comprise more than 50% of this course with me watching and nagging behind your back I hope this helps you get closer to your target of quality code, delivered. If you need more - [you can read my book.](http://artofunittesting.com/) Or [you can watch more videos for free](https://osherove.com/videos/). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 27, 2011 ### [How Microsoft Israel Scares .NET Consultants Into Submission](https://osherove.com/blog/2011/11/27/how-microsoft-israel-scares-net-consultants-into-submission.html) - Aug 25, 2011 ### [Upcoming 3 and 5 day TDD classes](https://osherove.com/blog/2011/8/25/upcoming-3-and-5-day-tdd-classes.html) - Jul 8, 2011 ### [The first Ruby on Rails course in Israel is open for registration](https://osherove.com/blog/2011/7/8/the-first-ruby-on-rails-course-in-israel-is-open-for-registr.html) --- title: "Effective Miscommunication" url: "https://osherove.com/blog/2011/11/5/effective-miscommunication.md" canonical: "https://osherove.com/blog/2011/11/5/effective-miscommunication.html" published: "2011-11-05T18:17:16" updated: "2011-11-05T18:17:16" tags: [] author: "Roy Osherove" description: "My previous post was precieved by some people as an arrogant, self congratulatory public postering of someone who wrote me some praise. That was not the intended meaning of that post. It was about effective ways of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Effective Miscommunication By Roy Osherove November 5, 2011 **Historical article** · Originally published November 5, 2011; technical details may be outdated. My [previous post](https://osherove.com/blog/2011/11/5/this-is-not-a-question-just-a-comment-for-you-roy.html) was precieved by some people as an arrogant, self congratulatory public postering of someone who wrote me some praise. That was not the intended meaning of that post. It was about effective ways of communication, and the irony of that email having the same ineffective communication problem. I apologize if that seemed very arrogant to you. I am still very proud of what I do and every once in a while if I get an email that really makes me think, and feel both weird and good, I might publish it here. --- title: "\"This is not a question. Just a comment for you, Roy.\"" url: "https://osherove.com/blog/2011/11/5/this-is-not-a-question-just-a-comment-for-you-roy.md" canonical: "https://osherove.com/blog/2011/11/5/this-is-not-a-question-just-a-comment-for-you-roy.html" published: "2011-11-05T17:39:40" updated: "2011-11-05T17:39:40" tags: [] author: "Roy Osherove" description: "—————- My Name:: ***** My Email is:: ******* My Company: I’m interested in: Other I am located in : Sweden Message: Thanks for having videos publicly available. I am going to setup hands-on courses in using…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # "This is not a question. Just a comment for you, Roy." By Roy Osherove November 5, 2011 **Historical article** · Originally published November 5, 2011; technical details may be outdated. —————- > My Name:: \*\*\*\*\* > > My Email is:: \*\*\*\*\*\*\* > > My Company: > > I’m interested in: Other > > I am located in : Sweden > > Message:  > > Thanks for having videos publicly available. I am going to setup hands-on courses in using tools/libraries in the company I am working for. I care much about quality and process improvement. The first course I was thinking of was to be about unit testing and mocking. I have not worked with it much myself, so I have to learn it good myself first. > > Browsing for recommended books I found “xUnit Test Patterns” which I bought, and on another page I saw a sub-comment by a person that said _“The Art of Unit Testing” (written by me) is now available. I wrote in it all the things I was missing in the other books!”_. > > Seriously. I don’t get much confidence in a man saying that his book is the best. BUT thanks to a comment by another person saying that you are an authority in unit testing, I decided to check-out your webpage. > > First impression. You don´t know how to tell jokes. You are rude and a know-it-all. > > The first video that I began to see “unit testing best practices”, was actually so good that I bought the book before finish watching it. I watched more and more videos. I like you now! > > You are a hard man. You don´t have recommendations, you have rules. But the rules makes so much sense. Only 1 Assert, Strict Naming convention, Only test 1 thing. Sensible test data, (not 42, which is just sad) You are still rude, but I understand that your humor or rudeness is also a way provoke a silent and non-interactive public to interact with you. > > I liked especially the Norwegian exception. Not zooming-in on small fonts, even though you know it is small. That was rude. But they deserved it for being so silent, even though you asked them. > > In my team we have a lot of automatic integration tests. I realize now that we are doing it all wrong. We don´t know what we test, and cannot say what is wrong when something fails. We also test too much in each test, use magic numbers, and have tests that are supposed to “fail”. It is embarrassing when you think about it. You have really opened my eyes for Unit Testing. I will now work even harder to introduce it in my own team and get that course up. I frankly didn’t know that there was so much to learn about unit testing. I got a real eye opener. Thanks I will highly recommend your videos to my colleagues. (and the book after reading it)  ————- I think he _inadvertently_ gave me a taste of what it feels like to listen to me, from his point of view. --- title: "What You Don't Know You Don't Know" url: "https://osherove.com/blog/2011/10/21/what-you-dont-know-you-dont-know.md" canonical: "https://osherove.com/blog/2011/10/21/what-you-dont-know-you-dont-know.html" published: "2011-10-21T12:48:33" updated: "2011-10-21T12:48:33" tags: [] author: "Roy Osherove" description: "I recently did a talk to a your crowd of israeli developers (it was in hebrew) about a stopic I’ve never spoken about before in a talk - The reasons for my leaving the .NET world for a year. You can see the video of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What You Don't Know You Don't Know By Roy Osherove October 21, 2011 **Historical article** · Originally published October 21, 2011; technical details may be outdated. I recently did a talk to a your crowd of israeli developers (it was in hebrew) about a stopic I’ve never spoken about before in a talk - The reasons for my leaving the .NET world for a year. You can see [the video of this talk (and the q&a to follow) in this video](https://osherove.com/videos/2011/10/19/what-you-dont-know-you-dont-know-hebrew.html). It’s about getting out of your comfort zone, and learning things you never thought existed. Related Posts that I talk about: - [Leaving my job](https://osherove.com/blog/2010/12/30/a-farewell-to-typemock.html) - [Becoming an intern](https://osherove.com/blog/2010/12/30/hire-me-as-your-ruby-intern-for-a-year.html) - [The power of a true community](http://7enn.com/2011/07/04/appreciating-the-power-of-a-true-community/) --- title: "What You Don't Know You Don't Know (Hebrew)" url: "https://osherove.com/videos/2011/10/19/what-you-dont-know-you-dont-know-hebrew.md" canonical: "https://osherove.com/videos/2011/10/19/what-you-dont-know-you-dont-know-hebrew.html" published: "2011-10-19T19:31:08" updated: "2011-10-19T19:31:08" tags: ["Hebrew", "Leadership"] author: "Roy Osherove" description: "what_you_dont_know.mp4 In this video (which is in Hebrew) I talk to a crowd of young developers in Israel about the reasons for my leaving the .NET world - mostly - the idea of finding out the things you don’t know that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What You Don't Know You Don't Know (Hebrew) By Roy Osherove October 19, 2011 In [Hebrew](https://osherove.com/videos/category/hebrew), [Leadership](https://osherove.com/videos/category/leadership) **Historical article** · Originally published October 19, 2011; technical details may be outdated. what\_you\_dont\_know.mp4 In this video (which is in Hebrew) I talk to a crowd of young developers in Israel about the reasons for my leaving the .NET world - mostly - the idea of finding out the things you don’t know that you don’t know. How to get out of your comfort zone, and to find a bigger world outside your own bubble. Most of the devs there are trapped in a Microsoft world, [as I was](http://7enn.com/2011/07/04/appreciating-the-power-of-a-true-community/). ## More in Hebrew [All posts in Hebrew](https://osherove.com/videos/category/hebrew) - Sep 9, 2011 ### [Agile Israel - Intro to Agile (Hebrew)](https://osherove.com/videos/2011/9/9/agile-israel-intro-to-agile-hebrew.html) --- title: "Free event and 5 day TDD masterclass in Copenhagen this month" url: "https://osherove.com/blog/2011/10/6/free-event-and-5-day-tdd-masterclass-in-copenhagen-this-mont.md" canonical: "https://osherove.com/blog/2011/10/6/free-event-and-5-day-tdd-masterclass-in-copenhagen-this-mont.html" published: "2011-10-06T10:39:39" updated: "2011-10-06T10:39:39" tags: ["Unit Testing"] author: "Roy Osherove" description: "Hi all. Two things to announce: TDD Master Class: If you’re in or near Copenhagen this month, and are interested in joining my 5 day TDD master class in .NET, you can learn more about it here . This is the only time…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free event and 5 day TDD masterclass in Copenhagen this month By Roy Osherove October 6, 2011 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 6, 2011; technical details may be outdated. Hi all. Two things to announce: - **TDD Master Class:** If you’re in or near Copenhagen this month, and are interested in joining my 5 day TDD master class in .NET, [you can learn more about it here](http://www.ative.dk/agile-teknikker/test-driven-development-master-class-in-c.aspx).  - This is the only time this year I am doing the full length 5 day version of this course - I want it to go deeeep down into interesting problems. With five full days, we get a chance to dig and really get used to TDD, and work on interesting and sometimes quite difficult problems.  - I tell people who finish my five day course that if they did well in this course, they should have no problem dealing with any tdd related problem in the wild. It containts the building blocks that you would need to solve most if not all of the problems I’ve encountered in my real work. - The class is always changing  - for example - I no longer teach **rhino** mocks, but instead **Moq** and **FakeItEasy**. Also, I’ve encourporated **Nuget** into the lessons. Maybe this time we’ll do something new! - **Free Event:** If you’re not joining the course, maybe we can still meet up - [I’m doing a free event](http://www.ative.dk/agile-teknikker/roy-osherove.aspx) \- talking about test reviews and good unit tests on thursday evening during the course week.  **Want me to teach at your place?** If you’re interested in having me over to your place (Europe or scandinavia - US is too far for someone with 3 little kids), I invite you to help me plan my 2012 schedule. Several companies are working on getting me over, and I love traveling (3 little kids, you know..!) ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - May 15, 2012 ### [Test Naming Conventions With Unit of Work](https://osherove.com/blog/2012/5/15/test-naming-conventions-with-unit-of-work.html) - May 15, 2012 ### [What does the 'unit' in 'unit test' mean?](https://osherove.com/blog/2012/5/15/what-does-the-unit-in-unit-test-mean.html) - Aug 24, 2011 ### [Why MSTest is the IE6 of unit test frameworks](https://osherove.com/blog/2011/8/24/why-mstest-is-the-ie6-of-unit-test-frameworks.html) - May 23, 2011 ### [New TDD Kata - Interactions](https://osherove.com/blog/2011/5/23/new-tdd-kata-interactions.html) --- title: "Want me to train or consult in your company during 2012?" url: "https://osherove.com/blog/2011/9/19/want-me-to-train-or-consult-in-your-company-during-2012.md" canonical: "https://osherove.com/blog/2011/9/19/want-me-to-train-or-consult-in-your-company-during-2012.html" published: "2011-09-19T16:56:12" updated: "2011-09-19T16:56:12" tags: [] author: "Roy Osherove" description: "I'm planning 2012 , as well as December of this year, so I'm looking for interesting places to host either my 3 or 5 day TDD master class in .NET, or a two day Software Team Leader Essential Skills (Elastic Leadership)…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Want me to train or consult in your company during 2012? By Roy Osherove September 19, 2011 **Historical article** · Originally published September 19, 2011; technical details may be outdated. I'm planning **2012**, as well as **December** of this year, so I'm looking for interesting places to host either my 3 or 5 day TDD master class in .NET, or a two day Software Team Leader Essential Skills (Elastic Leadership) Seminar. If you want me to come over to your company and you're in Europe or Scandinavia [I'd love to talk to you](https://osherove.com/request-more-info/). (Sorry, US. The trip is too long, and the Visa req. are too strict for me to come over..) --- title: "Agile Israel - Intro to Agile (Hebrew)" url: "https://osherove.com/videos/2011/9/9/agile-israel-intro-to-agile-hebrew.md" canonical: "https://osherove.com/videos/2011/9/9/agile-israel-intro-to-agile-hebrew.html" published: "2011-09-09T12:50:50" updated: "2011-09-09T12:50:50" tags: ["Hebrew"] author: "Roy Osherove" description: "During 2007 I did a talk at teh agile israel user group about introduction to agile development. It’s in hebrew, and there isn’t a lot of hebrew video material on this yet. Also, I didn’t want this to get lost in the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Israel - Intro to Agile (Hebrew) By Roy Osherove September 9, 2011 In [Hebrew](https://osherove.com/videos/category/hebrew) **Historical article** · Originally published September 9, 2011; technical details may be outdated. During 2007 I did a talk at teh agile israel user group about introduction to agile development. It’s in hebrew, and there isn’t a lot of hebrew video material on this yet. Also, I didn’t want this to get lost in the sands of time, so I’m putting it up here for future generations.. agileisrael.part1.introtoagile.flv ## More in Hebrew [All posts in Hebrew](https://osherove.com/videos/category/hebrew) - Oct 19, 2011 ### [What You Don't Know You Don't Know (Hebrew)](https://osherove.com/videos/2011/10/19/what-you-dont-know-you-dont-know-hebrew.html) --- title: "One Day Software Team Leader Skills Class - Lund, Sweden" url: "https://osherove.com/blog/2011/9/2/one-day-software-team-leader-skills-class-lund-sweden.md" canonical: "https://osherove.com/blog/2011/9/2/one-day-software-team-leader-skills-class-lund-sweden.html" published: "2011-09-02T10:53:10" updated: "2011-09-02T10:53:10" tags: [] author: "Roy Osherove" description: "FYI - this course has been CANCELED I will be doing a one day class for new and experienced software team leaders about important skills you need to \"make\" it as a team leader. In the class you will learn how to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # One Day Software Team Leader Skills Class - Lund, Sweden By Roy Osherove September 2, 2011 **Historical article** · Originally published September 2, 2011; technical details may be outdated. **FYI - this course has been CANCELED** I will be doing a one day class for new and experienced software team leaders about important skills you need to "make" it as a team leader. In the class you will learn how to identify and act according to the three maturity phases of a software team. how to understand and influence behaviors of team members and upper management, and more. You can [find more details and purchase a ticket here](http://5whys.com/one-day-team-leader-class-lu). --- title: "One day dive into Unit Testing and TDD in .NET - Lund, Sweden" url: "https://osherove.com/blog/2011/9/2/one-day-dive-into-unit-testing-and-tdd-in-net-lund-sweden.md" canonical: "https://osherove.com/blog/2011/9/2/one-day-dive-into-unit-testing-and-tdd-in-net-lund-sweden.html" published: "2011-09-02T06:55:00" updated: "2011-09-02T06:55:00" tags: [] author: "Roy Osherove" description: "FYI - this course has been CANCELED This September, I will be doing a one day TDD and unit testing class in Lund. The class is it for both people who have never written a unit test before and people who have. The first…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # One day dive into Unit Testing and TDD in .NET - Lund, Sweden By Roy Osherove September 2, 2011 **Historical article** · Originally published September 2, 2011; technical details may be outdated. **FYI - this course has been CANCELED** This September, I will be doing a one day TDD and unit testing class in Lund. The class is it for both people who have never written a unit test before and people who have. The first 10 purchases to use the coupon FAILFIRST at checkout will get a 10% discount for their purchase (even if its multiple tickets). [You can find more details here.](http://artofunittesting.com/unit-testing-and-tdd-course/) --- title: "A week in Stockholm - Open for consulting or training" url: "https://osherove.com/blog/2011/9/1/a-week-in-stockholm-open-for-consulting-or-training.md" canonical: "https://osherove.com/blog/2011/9/1/a-week-in-stockholm-open-for-consulting-or-training.html" published: "2011-09-01T14:21:43" updated: "2011-09-01T14:21:43" tags: ["Art Of Unit Testing"] author: "Roy Osherove" description: "I'll be spending the week of September 12-16 in Stockholm, Sweden. While i'm there I will be doing consulting gigs and possibly training. If you're interested in me coming to your company for a day or two and teach Test…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A week in Stockholm - Open for consulting or training By Roy Osherove September 1, 2011 In [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published September 1, 2011; technical details may be outdated. I'll be spending the week of **September 12-16** in Stockholm, Sweden. While i'm there I will be doing consulting gigs and possibly training. If you're interested in me coming to your company for a day or two and [teach Test Driven Development](https://osherove.com/tdd-training/) or [Team Leadership skills](https://osherove.com/leadership-course/), please [contact me as soon as possible](https://osherove.com/request-more-info/) so we can set up a date. ## More in Art Of Unit Testing [All posts in Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) - Dec 23, 2009 ### [Comments on Corey Haines’ String Calculator TDD Kata Implementation](https://osherove.com/blog/2009/12/23/comments-on-corey-haines-string-calculator-tdd-kata-implemen.html) - Nov 12, 2009 ### [Test driven design – Willed vs. Forced Designs](https://osherove.com/blog/2009/11/12/test-driven-design-willed-vs-forced-designs.html) --- title: "Upcoming 3 and 5 day TDD classes" url: "https://osherove.com/blog/2011/8/25/upcoming-3-and-5-day-tdd-classes.md" canonical: "https://osherove.com/blog/2011/8/25/upcoming-3-and-5-day-tdd-classes.html" published: "2011-08-25T07:03:00" updated: "2011-08-25T07:03:00" tags: [".NET"] author: "Roy Osherove" description: "September in Stockholm (3 days) I'll be giving a 3 day version of my TDD masterclass in .NET, in Stockholm. You can register and find more details here. October in Copenhagen (5 days) This is the only 5 day TDD class I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Upcoming 3 and 5 day TDD classes By Roy Osherove August 25, 2011 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published August 25, 2011; technical details may be outdated. ## [September in Stockholm](http://www.informator.se/utbildningar/systemutveckling/applikation/dotnet-och-visual-studio/test-driven-development-in-dotnet-master-class.aspx) (3 days) I'll be giving a 3 day version of my TDD masterclass in .NET, in Stockholm. You can [register and find more details here.](http://www.informator.se/utbildningar/systemutveckling/applikation/dotnet-och-visual-studio/test-driven-development-in-dotnet-master-class.aspx) ## [October in Copenhagen](http://www.ative.dk/agile-teknikker/test-driven-development-master-class-in-c.aspx) (5 days) This is the [only 5 day TDD class](http://www.ative.dk/agile-teknikker/test-driven-development-master-class-in-c.aspx) I am doing this year. I'm pretty much not doing my 5 day version of the TDD masterclass anymore. It's because I'm trying to give time in the same weeks both for my [leadership class](http://londonleader.eventbrite.com/?oshcom) and TDD, and they won't fit together in 5 days unless I cut TDD short. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 27, 2011 ### [How Microsoft Israel Scares .NET Consultants Into Submission](https://osherove.com/blog/2011/11/27/how-microsoft-israel-scares-net-consultants-into-submission.html) - Nov 11, 2011 ### [TDD Master class - Videos Available For Purchase at TekPub](https://osherove.com/blog/2011/11/11/tdd-master-class-videos-available-for-purchase-at-tekpub.html) - Jul 8, 2011 ### [The first Ruby on Rails course in Israel is open for registration](https://osherove.com/blog/2011/7/8/the-first-ruby-on-rails-course-in-israel-is-open-for-registr.html) - Mar 16, 2011 ### [New User Group: Ruby Underground - Ruby and Ruby On Rails](https://osherove.com/blog/2011/3/16/new-user-group-ruby-underground-ruby-and-ruby-on-rails-1.html) --- title: "Why MSTest is the IE6 of unit test frameworks" url: "https://osherove.com/blog/2011/8/24/why-mstest-is-the-ie6-of-unit-test-frameworks.md" canonical: "https://osherove.com/blog/2011/8/24/why-mstest-is-the-ie6-of-unit-test-frameworks.html" published: "2011-08-24T19:38:36" updated: "2011-08-24T19:38:36" tags: ["Unit Testing"] author: "Roy Osherove" description: "Someone asked me by email a couple of weeks ago, whether I still think NUnit is better than MSTest. I had two weeks to think about this before having enough time to write this. keep in mind, I posted pretty much the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why MSTest is the IE6 of unit test frameworks By Roy Osherove August 24, 2011 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published August 24, 2011; technical details may be outdated. Someone asked me by email a couple of weeks ago, whether I still think NUnit is better than MSTest. I had two weeks to think about this before having enough time to write this. > keep in mind, I posted [pretty much the same thing over a year ago](http://weblogs.asp.net/rosherove/archive/2010/03/05/nunit-vs-mstest-nunit-wins-for-unit-testing.aspx). and NOTHING of that has changed since. It’s hard to imagine just how little effort Microsoft has been putting into the idea of unit testing inside of mstest. 4 years after (or is it more?) it was concieved as an answer to things like NUnit (instead of adopting NUnit into visual studio), MSTest continues to be the fat, whiney kid in class,  where the only reason he has to be in that school is because his father donated a library to it. Things mstest **\*still\* doesn’t have**, that exist in all other unit test frameworks: - [Assert.Throws](http://www.nunit.org/index.php?p=assertThrows&r=2.5) like functionality. instead, it still supports the old way of using \[ExpectedException\]. even product teams working on asp.net mvc need to create their own helper methods to have the simple ability to assert that a **specific line of code throws an exception**. Just take a look at [the tests for ASPNET MVC framework](http://aspnet.codeplex.com/releases/view/58781) and you’ll find various ExceptionHelper classes. - [TestCase](http://www.nunit.org/index.php?p=testCase&r=2.5.10) - Ability to create parametrized , in place, tests such as NUnit’s \[TestCase\], or XUnit’s \[Theory\] . _FYI, Data Driven Testing in MSTest is NOT what I consider the equivalent of that. it is good for range-tests, hundreds and thousands of test points, but not for unit tests, when you want your inputs as close to the test as possible. it is also horribly uneasy to start using DDT with mstest, because you’d also need to start “deploy”ing all those crap input excel files that contain 3 rows of simple data._ Things mstest does plain wrong: - it **still** has a bug with expected exception’s attribute “message” property that has not been fixed. - It does not allow abstract base classes for test classes Here’s what really bugging me about mstest - these things have been true for **several years** and nothing has been done about them. MS really doesn’t care about unit testing, and their tools will actually force you to write worse unit tests. It’s time to face facts : > MSTest is the IE6 of Unit Test Frameworks. It’s big and bloated, doesn’t support upcoming standards for doing things better, slower, and you’re \*sucked\* into having to look at it sitting there, all day, just because you made the (lack of choice) to use Visual Studio for editing your .NET code. It’s NOT easily extendable, and it will only run tests written using mstest (Nunit can run mstest tests, BTW…) If you really care about code quality, then mstest represents the opposite of paying attention to code quality for you. it represents neglect and uncaring. Don’t use it. Don’t, Don’t Don’t. **Update:** Here’s a video reply to some of the comments telling me how simple it is to add those features: [![](https://osherove.com/img/video/yt-pdSqT0VNO68.jpg)Play videoMstest as ie](https://www.youtube.com/watch?v=pdSqT0VNO68)   ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - May 15, 2012 ### [What does the 'unit' in 'unit test' mean?](https://osherove.com/blog/2012/5/15/what-does-the-unit-in-unit-test-mean.html) - Oct 6, 2011 ### [Free event and 5 day TDD masterclass in Copenhagen this month](https://osherove.com/blog/2011/10/6/free-event-and-5-day-tdd-masterclass-in-copenhagen-this-mont.html) - May 23, 2011 ### [New TDD Kata - Interactions](https://osherove.com/blog/2011/5/23/new-tdd-kata-interactions.html) - Feb 23, 2011 ### [Free TDD Class Seat in March - Here's How](https://osherove.com/blog/2011/2/23/free-tdd-class-seat-in-march-heres-how.html) --- title: "TDD in .NET Day 3 Learnings" url: "https://osherove.com/blog/2011/8/12/tdd-in-net-day-3-learnings.md" canonical: "https://osherove.com/blog/2011/8/12/tdd-in-net-day-3-learnings.html" published: "2011-08-12T15:23:05" updated: "2011-08-12T15:23:05" tags: [] author: "Roy Osherove" description: "3rd day of TDD in .net in Oslo is over, and here are some of the subjects covered: Moq FakeitEasy Extract & Override refactoring Typemock Doing Test Reviews on other people's tests Approaching Legacy Code" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD in .NET Day 3 Learnings By Roy Osherove August 12, 2011 **Historical article** · Originally published August 12, 2011; technical details may be outdated. 3rd day of TDD in .net in Oslo is over, and here are some of the subjects covered: 1. Moq 2. FakeitEasy 3. Extract & Override refactoring 4. Typemock 5. Doing Test Reviews on other people's tests 6. Approaching Legacy Code --- title: "TDD in .NET course - Day 2 Learnings" url: "https://osherove.com/blog/2011/8/11/tdd-in-net-course-day-2-learnings.md" canonical: "https://osherove.com/blog/2011/8/11/tdd-in-net-course-day-2-learnings.html" published: "2011-08-11T14:06:21" updated: "2011-08-11T14:06:21" tags: [] author: "Roy Osherove" description: "Just finished day two od TDD in .NET course here in oslo. here are the list of things we covered today: Test that an even gets fired Understand the boundaries of a unit of work (more than a single method) mocks vs.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD in .NET course - Day 2 Learnings By Roy Osherove August 11, 2011 **Historical article** · Originally published August 11, 2011; technical details may be outdated. Just finished day two od TDD in .NET course here in oslo. here are the list of things we covered today: - Test that an even gets fired - Understand the boundaries of a unit of work (more than a single method) - mocks vs. stubs - manual mocks and stubs - Dependency Injection via constructors - TDD is about removing assumptions from the code one by one - How to control time in tests - How to Learn things, and what ravines and plateus are - Go mouseless inside vs (for the entire day!) - How to use and not abuse test coverage --- title: "Elastic Team Leadership Class in Oslo - August 2011" url: "https://osherove.com/blog/2011/8/2/elastic-team-leadership-class-in-oslo-august-2011.md" canonical: "https://osherove.com/blog/2011/8/2/elastic-team-leadership-class-in-oslo-august-2011.html" published: "2011-08-02T08:31:02" updated: "2011-08-02T08:31:02" tags: [] author: "Roy Osherove" description: "I'm holding a two day Elastic Team Leadership class in Oslo next week - (right before my 3 day TDD course) This class is about everything that Agile methodologies do not teach you Have you ever come across these…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Elastic Team Leadership Class in Oslo - August 2011 By Roy Osherove August 2, 2011 **Historical article** · Originally published August 2, 2011; technical details may be outdated. I'm [holding a two day Elastic Team Leadership class in Oslo next week](http://put.no/kurskalenderoversikt.aspx?id=938475) \- (right before my 3 day TDD course) ## This class is about everything that Agile methodologies **do not** teach you Have you ever come across these situations? - You try to convince your team that a specific practice is a good idea, but no one really adopts it, and you don’t know what to do about it. - You are afraid of losing friendships just because you’ve become manager to the same people you’ve worked with as a team member up until now. - Your team doesn’t have time to do anything but putting out fires and you feel helpless about it. - You have a problematic team member and you feel like you’ve tried everything to solve this behavior and failed. - You are being expected to perform impossible feats with impossible deadlines, and can’t do anything to stop it. - You think that your team will never be able to be one of those “extreme programming” teams you keep writing about. - You wonder “if only I had better people in my team I’d…” --- ### VIDEO: ### I recently gave a talk on Team Leadership in the age of Agile: ### [Here's the video.](http://www.infoq.com/presentations/Team-Leadership-in-the-Age-of-Internet) --- **You are not alone** in these thoughts. We’ve all been there. A lucky few of us had good mentors to teach us what to do in these situations, but most of us just try our best and hope for miracles. Keep our heads down and pray nothing bad happens until the next person comes along. In this course you’ll learn the basic trade secrets for managers and coaches - how to lead teams to greatness, with a twist - this course is especially designed for _software team leaders_ - and deals with specific people issues in this highly technical world. Hopefully, by the end of this course you’ll feel not only empowered to change things for the better, but you’ll also be equipped with a set of tools and techniques to help you think through and overcome tough people issues and challenges during your time as a team leader. --- ## Based on my experiences and my blog at [http://5whys.com](http://5whys.com/) --- ****Prerequisites :**** One year’s experience developing software using any language ******Course Outline****** ## **Day 1 – Elastic Leadership Principles** **_Skills being developed:_** - Understanding [the three phases of team maturity](http://5whys.com/blog/the-3-maturity-stages-of-a-software-team-and-how-scrum-fails.html) - The [chaos-command phase](http://5whys.com/blog/category/first-steps-during-chaos) - Dealing with [impossible tasks, management conditions and people](http://5whys.com/blog/12-behavior-anti-patterns-you-will-face-as-a-software-team-l.html) - **Exercises** - The [Learning-commanding coach phase](http://5whys.com/blog/category/learning-phase) - Managing current work with [task boards and kanban boards](http://5whys.com/blog/step-2-use-a-big-visible-board-with-post-it-notes.html) - Using [Delegation as a growth tool](http://5whys.com/blog/what-are-you-going-to-do-about-it.html) ## **Day 2 – Influence and Team Growing** **_Skills being developed:_** - The [Self Leading-Coach phase](http://5whys.com/blog/category/self-leading-phase) - Influencing [the six forces that change people’s behavior](http://5whys.com/blog/how-to-plan-and-influence-change-at-your-company.html) - **Exercises** - Understanding and approaching [the five dysfunctions of teams](http://5whys.com/blog/the-five-dysfunctions-of-a-team.html) --- title: "TDD course in Oslo - August 2011" url: "https://osherove.com/blog/2011/8/2/tdd-course-in-oslo-august-2011.md" canonical: "https://osherove.com/blog/2011/8/2/tdd-course-in-oslo-august-2011.html" published: "2011-08-02T06:09:19" updated: "2011-08-02T06:09:19" tags: ["tdd"] author: "Roy Osherove" description: "I will be starting a 3 day TDD in .NET course in Oslo next week (wed.). The course covers everything from zero - so I assume you have no unit testing experience whatsoever. Then it gets you al the way to *highly…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD course in Oslo - August 2011 By Roy Osherove August 2, 2011 In [tdd](https://osherove.com/blog/category/tdd) **Historical article** · Originally published August 2, 2011; technical details may be outdated. I [will be starting a 3 day TDD in .NET course in Oslo next week](http://put.no/kurskalenderoversikt.aspx?id=938478) (wed.). The course covers everything from zero - so I assume you have no unit testing experience whatsoever. Then it gets you al the way to \*highly advanced\* unit testing, including mocks and stubs, and refactoring legacy code, usage of things like FakeItEasy, Typemock Isolator, and more. 50% of the class is dedicated to hand on workshops, in which I walk around and check out how you actually write the code.  The idea is that I want people coming out of that calss to feel comfortable handling almost any situation and problem solving relating to unit testing at work, without needing me for guidance later. This class is a good start to make that happen. > **Each class is different** Each class I used things I learned since the previous class, so each class is very different, and fitted exactly to the current crowd. That’s why I don’t let anyone teach my course except me -because it’s based on my own thinking, and not on a perscriptive “how to” that is rigid.  I hope to see you there! ## More in tdd [All posts in tdd](https://osherove.com/blog/category/tdd) - Jun 26, 2012 ### [FakeItEasy or NSubstitute? Which should I use for samples in art of unit testing 2nd edition?](https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.html) - Jun 24, 2012 ### [Video: (part 1) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/25/video-part-1-building-a-go-game-engine-with-tdd-and-pair-pro.html) - Dec 23, 2009 ### [Comments on Corey Haines’ String Calculator TDD Kata Implementation](https://osherove.com/blog/2009/12/23/comments-on-corey-haines-string-calculator-tdd-kata-implemen.html) --- title: "How not to do TDD" url: "https://osherove.com/blog/2011/7/29/how-not-to-do-tdd.md" canonical: "https://osherove.com/blog/2011/7/29/how-not-to-do-tdd.html" published: "2011-07-28T21:25:22" updated: "2011-07-28T21:25:22" tags: ["book"] author: "Roy Osherove" description: "Update : It seems that much further down in the book, they do cover a more minimalist and simplistic approach to make the tests pass . I was too quick to write, and did not look further in the book. I would recommend…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How not to do TDD By Roy Osherove July 28, 2011 In [book](https://osherove.com/blog/category/book) **Historical article** · Originally published July 28, 2011; technical details may be outdated. > **Update**: > > It seems that much further down in the book, [they do cover a more minimalist and simplistic approach to make the tests pass](http://proquest.safaribooksonline.com/book/-/9780470643204/chapter-1-the-road-to-test-driven-development/a_quick_example_of_the_tdd_app#X2ludGVybmFsX0ZsYXNoUmVhZGVyP3htbGlkPTk3ODA0NzA2NDMyMDQvODM=). I was too quick to write, and did not look further in the book. I would recommend people to SKIP the first chapter of that book, and move directly to the “getting started” part. My apologies for the early-to-blame nature of this post. I will make a more concrete investigation next time.  Here’s an excerpt from one of the first chapters of a new book about TDD in C# - what’s wrong with the following paragraph and following code? > The reason for the test failure (as shown by the highlighted text) is that you have not implemented the method. The next step is to write code to make this test pass:  Found it? I’ll highlight the offending sentence: > The reason for the test failure (as shown by the highlighted text) is that you **have not implemented the method.** yes. And then they go on to FULLY IMPLEMENT the whole method, in a non test driven way. [This is the offending book](http://proquest.safaribooksonline.com/book/-/9780470643204/chapter-1-the-road-to-test-driven-development/a_quick_example_of_the_tdd_app#X2ludGVybmFsX0ZsYXNoUmVhZGVyP3htbGlkPTk3ODA0NzA2NDMyMDQvMTM=). I would NOT recommend buying it, as it shows a clear lack of understanding many things. first, a test not compiling is not the same as failing. second, you don’t fully implement the most complicated way to solve something.   For a good tdd book I’d instead recommend [Kent Beck’s oldie but a goodie](https://www.amazon.com/exec/obidos/ASIN/0321146530/?tag=iserializable-20), and [this good book](https://www.amazon.com/exec/obidos/ASIN/0321503627/?tag=iserializable-20). (get both, not one of them, as they complete each other each other) ## More in book [All posts in book](https://osherove.com/blog/category/book) - Aug 19, 2013 ### [Book & Audio Book: Notes to a Software Team Leader](https://osherove.com/blog/2013/8/19/book-audio-book-notes-to-a-software-team-leader.html) --- title: "Video: Team Leadership in the Age of Agile" url: "https://osherove.com/blog/2011/7/8/video-team-leadership-in-the-age-of-agile.md" canonical: "https://osherove.com/blog/2011/7/8/video-team-leadership-in-the-age-of-agile.html" published: "2011-07-08T22:06:39" updated: "2011-07-08T22:06:39" tags: ["video"] author: "Roy Osherove" description: "during QCon 2011 in London, I gave a talk about the new qualities that team leaders need to make agile succeed. It's a very small fraction of what I cover and coach during my upcoming course. See the full video here…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: Team Leadership in the Age of Agile By Roy Osherove July 8, 2011 In [video](https://osherove.com/blog/category/video) **Historical article** · Originally published July 8, 2011; technical details may be outdated. during QCon 2011 in London, I gave a talk about the new qualities that team leaders need to make agile succeed. It's a very small fraction of what I cover and coach [during my upcoming course.](http://londonleadership.eventbrite.com/) > **[See the full video here](http://www.infoq.com/presentations/Team-Leadership-in-the-Age-of-Internet)** some of the things I cover include top mistakes that team leaders do with teams. most of these are closely related to [elastic leadership principles](http://5whys.com/blog/elastic-leadership.html) - changing the leadership type based on the team's current maturity. ## More in video [All posts in video](https://osherove.com/blog/category/video) - Jun 24, 2012 ### [Video: (part 1) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/25/video-part-1-building-a-go-game-engine-with-tdd-and-pair-pro.html) - May 9, 2012 ### [\[Video\] Vimming - Natural Selection in Visual Mode](https://osherove.com/blog/2012/5/9/video-vimming-natural-selection-in-visual-mode.html) - Jun 18, 2011 ### [Video: The 3 amigos at NDC2011](https://osherove.com/blog/2011/6/18/video-the-3-amigos-at-ndc2011.html) - Nov 19, 2010 ### [Videos: Let’s Play TDD with James Shore](https://osherove.com/blog/2010/11/19/videos-lets-play-tdd-with-james-shore.html) --- title: "Ruby User Group: upcoming meeting on Ruby next week" url: "https://osherove.com/blog/2011/7/8/ruby-user-group-upcoming-meeting-on-ruby-next-week.md" canonical: "https://osherove.com/blog/2011/7/8/ruby-user-group-upcoming-meeting-on-ruby-next-week.html" published: "2011-07-08T01:00:42" updated: "2011-07-08T01:00:42" tags: ["Ruby"] author: "Roy Osherove" description: "Hi all. Next week the Ruby Underground meeting is actually taking place in Microsoft in Herzliya. The topics of the meeting will be about Sinatra, and a glimpse of one developer's development environment and what tools…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ruby User Group: upcoming meeting on Ruby next week By Roy Osherove July 8, 2011 In [Ruby](https://osherove.com/blog/category/ruby) **Historical article** · Originally published July 8, 2011; technical details may be outdated. Hi all. Next week the [Ruby Underground meeting is actually taking place in Microsoft in Herzliya.](http://www.meetup.com/IsraelRubyUnderground/events/23644731/) The [topics of the meeting](http://www.meetup.com/IsraelRubyUnderground/events/23644731/) will be about Sinatra, and a glimpse of one developer's development environment and what tools they use on a daily basis. It is totally free to join, and if you're interested in Ruby at all, this is a warm and welcoming group of people who'd love to help you learn! Sessions: - **Sinatra Intro** **(50 min) by** [**Gregory Mostizky**](http://www.meetup.com/IsraelRubyUnderground/members/7893454/) 1. What, why and when of Sinatra? Why not Rails? 2. Hello world. (building a live app) 3. Routes. Views. ActiveRecord? 4. Testing. 5. Overview of advanced stuff. - BREAK **•** **My development environment** **(50 min) by** [**Reuven Lerner**](http://www.meetup.com/IsraelRubyUnderground/members/438025) I've been developing in Ruby for about six years now, and have assembled over time a number of tools that provide me with an environment optimized for rapid development.  I'll demonstrate the tools that I use, starting with the GNU Emacs editor and several add-ins for it, the Rails console (and IRB) and a number of useful gems for it, my Git configuration, and the configuration I've set up for my Unix shell. see you there, Roy ## More in Ruby [All posts in Ruby](https://osherove.com/blog/category/ruby) - May 1, 2012 ### [NEW: Ruby podcast in hebrew](https://osherove.com/blog/2012/5/2/new-ruby-podcast-in-hebrew-1.html) - Mar 16, 2011 ### [New User Group: Ruby Underground - Ruby and Ruby On Rails](https://osherove.com/blog/2011/3/16/new-user-group-ruby-underground-ruby-and-ruby-on-rails-1.html) - Mar 16, 2011 ### [New User Group: Ruby Underground - Ruby and Ruby On Rails](https://osherove.com/blog/2011/3/16/new-user-group-ruby-underground-ruby-and-ruby-on-rails.html) --- title: "The first Ruby on Rails course in Israel is open for registration" url: "https://osherove.com/blog/2011/7/8/the-first-ruby-on-rails-course-in-israel-is-open-for-registr.md" canonical: "https://osherove.com/blog/2011/7/8/the-first-ruby-on-rails-course-in-israel-is-open-for-registr.html" published: "2011-07-08T01:00:06" updated: "2011-07-08T01:00:06" tags: [".NET"] author: "Roy Osherove" description: "if you've ever wanted to learn ruby on rails in Israel, but didn't know how to start on your own, I think you'd find this very interesting! (no, I am not teaching it. someone with much more experience than me is) Web…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The first Ruby on Rails course in Israel is open for registration By Roy Osherove July 8, 2011 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published July 8, 2011; technical details may be outdated. if you've ever wanted to learn ruby on rails in Israel, but didn't know how to start on your own, I [think you'd find this very interesting!](http://www.hi-tech.co.il/college/default.asp?PageID=12&CourseNum=4564) (no, I am not teaching it. someone with much more experience than me is) Web Development in Ruby on Rails ## Course Number 4564 – 40 Hours **Overview:** This is an introductory course to **Ruby on Rails**, a popular, open-source framework for developing **Web applications**. Developers (and the organizations for which they work) love **Rails**, because it allows them to create high-quality applications quickly and reliably. Both **Ruby** and**Rails embrace object-oriented programming** to a very large degree, also embracing (and encouraging) the use of “metaprogramming” to turn**Rails** into a library that is especially useful and tuned for creating a particular **Web application**. The course begins with an overview of the **Ruby language**, and then progresses through the major elements of the **Rails framework**, including numerous hints for getting the most out of it. The course concludes with participants building a **Web application** that is of personal interest and value, using the skills that they have learned during the course. **Course Contents:** - Ruby language - Introduction to Rails, and ActiveRecord - Controllers, views, and helpers - Ajax and advanced topics - Personal project ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 11, 2011 ### [TDD Master class - Videos Available For Purchase at TekPub](https://osherove.com/blog/2011/11/11/tdd-master-class-videos-available-for-purchase-at-tekpub.html) - Aug 25, 2011 ### [Upcoming 3 and 5 day TDD classes](https://osherove.com/blog/2011/8/25/upcoming-3-and-5-day-tdd-classes.html) - Mar 16, 2011 ### [New User Group: Ruby Underground - Ruby and Ruby On Rails](https://osherove.com/blog/2011/3/16/new-user-group-ruby-underground-ruby-and-ruby-on-rails-1.html) - Mar 16, 2011 ### [New User Group: Ruby Underground - Ruby and Ruby On Rails](https://osherove.com/blog/2011/3/16/new-user-group-ruby-underground-ruby-and-ruby-on-rails.html) --- title: "Video: The 3 amigos at NDC2011" url: "https://osherove.com/blog/2011/6/18/video-the-3-amigos-at-ndc2011.md" canonical: "https://osherove.com/blog/2011/6/18/video-the-3-amigos-at-ndc2011.html" published: "2011-06-18T20:28:18" updated: "2011-06-18T20:28:18" tags: ["video", "ndc2011"] author: "Roy Osherove" description: "Embedded Flash media from the original post is no longer playable. recorded at NDC 2011 picturing Ruby on Rails development vs. ASP.NET MVC development" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: The 3 amigos at NDC2011 By Roy Osherove June 18, 2011 In [video](https://osherove.com/blog/category/video) **Historical article** · Originally published June 18, 2011; technical details may be outdated. Embedded Flash media from the original post is no longer playable. recorded at [NDC 2011](http://ndc2011.no/) picturing Ruby on Rails development vs. ASP.NET MVC development - [#ndc2011](https://osherove.com/blog/tag/ndc2011) ## More in video [All posts in video](https://osherove.com/blog/category/video) - May 9, 2012 ### [\[Video\] Vimming - Natural Selection in Visual Mode](https://osherove.com/blog/2012/5/9/video-vimming-natural-selection-in-visual-mode.html) - Jul 8, 2011 ### [Video: Team Leadership in the Age of Agile](https://osherove.com/blog/2011/7/8/video-team-leadership-in-the-age-of-agile.html) - Nov 19, 2010 ### [Videos: Let’s Play TDD with James Shore](https://osherove.com/blog/2010/11/19/videos-lets-play-tdd-with-james-shore.html) --- title: "Agile Practitioners Israel Group Announced" url: "https://osherove.com/blog/2011/6/9/agile-practitioners-israel-group-announced.md" canonical: "https://osherove.com/blog/2011/6/9/agile-practitioners-israel-group-announced.html" published: "2011-06-09T21:30:15" updated: "2011-06-09T21:30:15" tags: ["agile", "community"] author: "Roy Osherove" description: "Elad Sofer and Lior Fridman have created Agile Practitioners in Israel group. More details here , and you can sign up for the upcoming event here . I'm happy to see that people are picking up what ever shreds of the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Practitioners Israel Group Announced By Roy Osherove June 9, 2011 **Historical article** · Originally published June 9, 2011; technical details may be outdated. Elad Sofer and Lior Fridman have created Agile Practitioners in Israel group. [More details here](http://blog.thescrumster.com/archives/543), and you can [sign up for the upcoming event here](http://www.eventbrite.com/event/1774314021/?ref=enivtefor). I'm happy to see that people are picking up what ever shreds of the agile israel community are left, and running with it with resolve and determination. Good luck! - [#agile](https://osherove.com/blog/tag/agile) - [#community](https://osherove.com/blog/tag/community) --- title: "New TDD Kata - Interactions" url: "https://osherove.com/blog/2011/5/23/new-tdd-kata-interactions.md" canonical: "https://osherove.com/blog/2011/5/23/new-tdd-kata-interactions.html" published: "2011-05-23T21:12:50" updated: "2011-05-23T21:12:50" tags: ["Unit Testing", "tdd", "unit-testing"] author: "Roy Osherove" description: "Here's a new TDD kata that's a bit more advanced than String Calculator , and requires the use of mocks and stubs to complete. I've been using it in the past 10 or so classes I've had with great impressions of how…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New TDD Kata - Interactions By Roy Osherove May 23, 2011 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published May 23, 2011; technical details may be outdated. Here's [a new TDD kata that's a bit more advanced](https://osherove.com/tdd-kata-2/) than [String Calculator](https://osherove.com/kata), and requires the use of mocks and stubs to complete. I've been using it in the past 10 or so classes I've had with great impressions of how people learn it and what problems they face while learning it. - [#tdd](https://osherove.com/blog/tag/tdd) - [#unit-testing](https://osherove.com/blog/tag/unit-testing) ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Oct 6, 2011 ### [Free event and 5 day TDD masterclass in Copenhagen this month](https://osherove.com/blog/2011/10/6/free-event-and-5-day-tdd-masterclass-in-copenhagen-this-mont.html) - Aug 24, 2011 ### [Why MSTest is the IE6 of unit test frameworks](https://osherove.com/blog/2011/8/24/why-mstest-is-the-ie6-of-unit-test-frameworks.html) - Feb 23, 2011 ### [Free TDD Class Seat in March - Here's How](https://osherove.com/blog/2011/2/23/free-tdd-class-seat-in-march-heres-how.html) - Feb 21, 2011 ### [Want a free seat for my TDD class in march? Propose a challenge.](https://osherove.com/blog/2011/2/21/want-a-free-seat-for-my-tdd-class-in-march-propose-a-challen.html) --- title: "Video: Elastic Leadership in software - InfoQ interview" url: "https://osherove.com/videos/2011/4/15/video-elastic-leadership-in-software-infoq-interview.md" canonical: "https://osherove.com/videos/2011/4/15/video-elastic-leadership-in-software-infoq-interview.html" published: "2011-04-15T17:04:04" updated: "2011-04-15T17:04:04" tags: ["Leadership", "QCON"] author: "Roy Osherove" description: "Originally posted from my 5Whys blog . During the recent QCON London 2011 Conference, Michael Hunger of Infoq interviewed me about what I later started describing as “ Elastic Leadership ” – The team leader changes her…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: Elastic Leadership in software - InfoQ interview By Roy Osherove April 15, 2011 In [Leadership](https://osherove.com/videos/category/leadership), [QCON](https://osherove.com/videos/category/qcon) **Historical article** · Originally published April 15, 2011; technical details may be outdated. Originally posted from my [5Whys blog](http://5whys.com/blog/video-elastic-leadership-in-software-infoq-interview.html). During the recent [QCON London](http://qconlondon.com/) 2011 Conference, [Michael Hunger of Infoq](http://twitter.com/mesirii) interviewed me about what I later started describing as “[Elastic Leadership](http://5whys.com/blog/elastic-leadership.html)” – The team leader changes her leadership style (dictator all the way through to coach) based on the [current team stage](http://5whys.com/blog/the-3-maturity-stages-of-a-software-team-and-how-scrum-fails.html). [You can see the full video interview here](http://www.infoq.com/interviews/osherove-software-team-leadership). I look a bit tired, but I hope my message was clear. ## More in Leadership [All posts in Leadership](https://osherove.com/videos/category/leadership) - Oct 19, 2011 ### [What You Don't Know You Don't Know (Hebrew)](https://osherove.com/videos/2011/10/19/what-you-dont-know-you-dont-know-hebrew.html) - May 26, 2010 ### [Beautiful Teams and Code Leaders - QCON London 2010](https://osherove.com/videos/2010/5/27/beautiful-teams-and-code-leaders-qcon-london-2010.html) --- title: "Lead Better - Course next week in Oslo" url: "https://osherove.com/blog/2011/4/7/lead-better-course-next-week-in-oslo.md" canonical: "https://osherove.com/blog/2011/4/7/lead-better-course-next-week-in-oslo.html" published: "2011-04-07T07:19:56" updated: "2011-04-07T07:19:56" tags: [] author: "Roy Osherove" description: "I’ll be doing my “ Lead Better ” course in Oslo next week . There are 3 places left if you want to join us. A lot of what this course is about can be seen at my Five Whys blog . If you’ve ever tried to convince your…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Lead Better - Course next week in Oslo By Roy Osherove April 7, 2011 **Historical article** · Originally published April 7, 2011; technical details may be outdated. I’ll be doing my “[Lead Better](https://osherove.com/leadership-course/)” course [in Oslo next week](http://put.no/kurskalenderoversikt.aspx?id=938475). There are 3 places left if you want to join us.  A lot of what this course is about [can be seen at my Five Whys blog](http://5whys.com/). If you’ve ever tried to convince your team to do unit testing or TDD, but failed miserably at getting them to do it. If you think “no way can **my** team ever be like those highly productive teams I read about”, or even if you’re just scared enough and not sure what to do next - this course can help you wrap your head around your job as a team leader in software. If you’re about to become a team lead, or have just become one, or even if you’re an experienced team lead, this course can help master the things no one guides you about: how to drive people, to make a difference, to motivate, and influence the direction and behavior of the people around you. --- title: "My Google Rejection Letter" url: "https://osherove.com/blog/2011/4/5/my-google-rejection-letter.md" canonical: "https://osherove.com/blog/2011/4/5/my-google-rejection-letter.html" published: "2011-04-05T11:29:19" updated: "2011-04-05T11:29:19" tags: [] author: "Roy Osherove" description: "Before joining Astrails a couple of weeks ago, I tried to apply to Google. And….I’m not good enough to work as a test engineer at google. No, they did not ask about my book . “Hi Roy Osherove, It was a pleasure speaking…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My Google Rejection Letter By Roy Osherove April 5, 2011 **Historical article** · Originally published April 5, 2011; technical details may be outdated. Before [joining Astrails](http://astrails.com/) a couple of weeks ago, I tried to apply to Google. And….I’m not good enough to work as a test engineer at google.  No, they did not [ask about my book](http://artofunittesting.com/).  > “Hi Roy Osherove, > > It was a pleasure speaking with you on the phone about the Test Engineer - Haifa or Tel Aviv position.  Thank you for your time and interest in Google.  We carefully reviewed your background and experience, and though we do not have a position that is a strong match with your qualifications at this time, we will be keeping your resume active in our system.  We will continue to use our database to match your profile with new opportunities and will reach out to you if we find an opening for which you may be qualified. > > Thanks again for your interest in Google’s careers and unique culture; we hope you will remain enthusiastic about our company.  If you have any questions, please feel free to contact me at..” I actually had three different phone interviews there. all failed because of my (obviously lacking) knowledge of implementing binary searches. So anyway - if you wanna work there, it doesn’t matter what you’ve done, or accomplished, or how you work with people, or how creative you are. If you know binary searches, you’re in.  Good luck! --- title: "Seven Features SquareSpace should have added *before* the location widget" url: "https://osherove.com/blog/2011/4/4/seven-features-squarespace-should-have-added-before-the-loca.md" canonical: "https://osherove.com/blog/2011/4/4/seven-features-squarespace-should-have-added-before-the-loca.html" published: "2011-04-04T18:17:20" updated: "2011-04-04T18:17:20" tags: [] author: "Roy Osherove" description: "after almost a year of waiting for *some* kind of feature to be added to squarespace (i’m quite a happy customer, but it feels like someone forgot to add features after the company got bought!), squarespace has added…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Seven Features SquareSpace should have added \*before\* the location widget By Roy Osherove April 4, 2011 **Historical article** · Originally published April 4, 2011; technical details may be outdated. after almost a year of waiting for \*some\* kind of feature to be added to [squarespace](http://squarespace.com/) (i’m quite a happy customer, but it feels like someone forgot to add features after the company got bought!), squarespace has added the “[location](http://blog.squarespace.com/blog/2010/12/13/location-location-location.html)” widget for showing your recent checking on various services (that was 4 months ago!).  besides the yawn factor, here are some things way more important than that for existing customers: - Add specialized links to ‘approve’ and ‘spam’ comments on the blog, that can be licked directly from the email notification message, so no other actiona has to be done after that - Ability to host file storage files bigger than 20MB directly on the amazon s3 cloud (you just “remembered that only up to 20MB allowed??) - ability to set url shortcuts to EXTERNAL urls - Remove the annoying dialog that says “unable to complete the connection” if you click on some link on the management dashboard while it still loads.  - Add more basic themes to choose from (I’ve been a customer for over a year and I see the same themes! I know I can customze them, but it would be a blessing to see more interesting and creative styles there. - Add built-in jquery to all pages. yeah. I know I can do that myself, but isn’t the site supposed to make things easier? - Add big, birhgt rss and twitter icons as widgets, not just small links - Add ability to upload or import or sync file storage with ftp or amazon s3 - Add built in ability to embed videos firectly from amazon s3 or file storage, with a custom player by SS  ok. so it’s more than seven. --- title: "New User Group: Ruby Underground - Ruby and Ruby On Rails" url: "https://osherove.com/blog/2011/3/16/new-user-group-ruby-underground-ruby-and-ruby-on-rails-1.md" canonical: "https://osherove.com/blog/2011/3/16/new-user-group-ruby-underground-ruby-and-ruby-on-rails-1.html" published: "2011-03-16T21:52:32" updated: "2011-03-16T21:52:32" tags: [".NET", "Ruby"] author: "Roy Osherove" description: "Ever wondered what all the fuss is about when people talk about Ruby and Rails? Now’s your chance to get in on the inside loop and join a rapidly growing community of practice here in Israel on this very subject. We’ve…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New User Group: Ruby Underground - Ruby and Ruby On Rails By Roy Osherove March 16, 2011 In [.NET](https://osherove.com/blog/category/net), [Ruby](https://osherove.com/blog/category/ruby) **Historical article** · Originally published March 16, 2011; technical details may be outdated. ### Ever wondered what all the fuss is about when people talk about Ruby and Rails? ### Now’s your chance to get in on the inside loop and join a rapidly growing community of practice here in Israel on this very subject. We’ve started a new user group for Ruby and Ruby on Rails development in Israel, called **Ruby Underground**. - Find out why sites such as GitHub.com, Twitter.com, Hulu.com and many others chose Ruby on Rails to run on. - Learn a new programming language and framework that is vastly different from .NET - [Get out of your comfort zone and become a better developer](http://david.ing.name/2010/12/01/time-to-diversify/) by expanding your horizons It is fully FREE to join and I invite you all to join our very first meeting taking place on the 24th of this month (next thursday!) at 18:00. ### more details at : [http://www.meetup.com/Ruby-Underground-Israel](http://www.meetup.com/Ruby-Underground-Israel/) **DETAILS** **Our first ever meeting  will be divided into two main parts:** - 18:15 - 19:15 : **introduction to the ruby language, state of mind and way of doing things** - **BREAK** - 19:30 - 20:30: **introduction to ruby on rails programming** (no, it is NOT about Iron-Ruby. Just Ruby!) The speaker is Michael Mazyar from [Astrails.com](http://astrails.com/) ![](https://osherove.com/img/ext/photos1.meetupstatic.com_photos_event_a_c_8_5_event_22064165.jpeg) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 25, 2011 ### [Upcoming 3 and 5 day TDD classes](https://osherove.com/blog/2011/8/25/upcoming-3-and-5-day-tdd-classes.html) - Jul 8, 2011 ### [The first Ruby on Rails course in Israel is open for registration](https://osherove.com/blog/2011/7/8/the-first-ruby-on-rails-course-in-israel-is-open-for-registr.html) - Mar 16, 2011 ### [New User Group: Ruby Underground - Ruby and Ruby On Rails](https://osherove.com/blog/2011/3/16/new-user-group-ruby-underground-ruby-and-ruby-on-rails.html) - Jun 5, 2010 ### [This Week In Test - Episode 1 – Rietveld!](https://osherove.com/blog/2010/6/5/this-week-in-test-episode-1-rietveld.html) --- title: "New User Group: Ruby Underground - Ruby and Ruby On Rails" url: "https://osherove.com/blog/2011/3/16/new-user-group-ruby-underground-ruby-and-ruby-on-rails.md" canonical: "https://osherove.com/blog/2011/3/16/new-user-group-ruby-underground-ruby-and-ruby-on-rails.html" published: "2011-03-16T21:52:32" updated: "2011-03-16T21:52:32" tags: [".NET", "Ruby"] author: "Roy Osherove" description: "Ever wondered what all the fuss is about when people talk about Ruby and Rails? Now’s your chance to get in on the inside loop and join a rapidly growing community of practice here in Israel on this very subject. We’ve…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New User Group: Ruby Underground - Ruby and Ruby On Rails By Roy Osherove March 16, 2011 In [.NET](https://osherove.com/blog/category/net), [Ruby](https://osherove.com/blog/category/ruby) **Historical article** · Originally published March 16, 2011; technical details may be outdated. ### Ever wondered what all the fuss is about when people talk about Ruby and Rails? Now’s your chance to get in on the inside loop and join a rapidly growing community of practice here in Israel on this very subject. We’ve started a new user group for Ruby and Ruby on Rails development in Israel, called **Ruby Underground**. - Find out why sites such as GitHub.com, Twitter.com, Hulu.com and many others chose Ruby on Rails to run on. - Learn a new programming language and framework that is vastly different from .NET - [Get out of your comfort zone and become a better developer](http://david.ing.name/2010/12/01/time-to-diversify/) by expanding your horizons It is fully FREE to join and I invite you all to join our very first meeting taking place on the 23rd of this month (next thursday!) at 18:00. ### more details at : [http://www.meetup.com/Ruby-Underground-Israel](http://www.meetup.com/Ruby-Underground-Israel/) **DETAILS** **Our first ever meeting  will be divided into two main parts:** - 18:15 - 19:15 : **introduction to the ruby language, state of mind and way of doing things** - **BREAK** - 19:30 - 20:30: **introduction to ruby on rails programming** (no, it is NOT about Iron-Ruby. Just Ruby!) The speaker is Michael Mazyar from [Astrails.com](http://astrails.com/) ![](https://osherove.com/img/ext/photos1.meetupstatic.com_photos_event_a_c_8_5_event_22064165.jpeg) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jul 8, 2011 ### [The first Ruby on Rails course in Israel is open for registration](https://osherove.com/blog/2011/7/8/the-first-ruby-on-rails-course-in-israel-is-open-for-registr.html) - Mar 16, 2011 ### [New User Group: Ruby Underground - Ruby and Ruby On Rails](https://osherove.com/blog/2011/3/16/new-user-group-ruby-underground-ruby-and-ruby-on-rails-1.html) - Jun 5, 2010 ### [This Week In Test - Episode 1 – Rietveld!](https://osherove.com/blog/2010/6/5/this-week-in-test-episode-1-rietveld.html) - Jun 1, 2010 ### [Video: Hardcore production debugging in .NET – Ingo Rammer](https://osherove.com/blog/2010/6/1/video-hardcore-production-debugging-in-net-ingo-rammer.html) --- title: "Winner: Free seat in my TDD Class" url: "https://osherove.com/blog/2011/3/2/winner-free-seat-in-my-tdd-class.md" canonical: "https://osherove.com/blog/2011/3/2/winner-free-seat-in-my-tdd-class.html" published: "2011-03-02T15:24:23" updated: "2011-03-02T15:24:23" tags: [] author: "Roy Osherove" description: "Tim Barber gets a free seat for my two day TDD class in London for his post about his dedication to learning this subject . Tim, I’ll see you there! Tim gets in free to learn the following subjects and more: Creating…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Winner: Free seat in my TDD Class By Roy Osherove March 2, 2011 **Historical article** · Originally published March 2, 2011; technical details may be outdated. [Tim Barber](http://www.atypicalcoder.com/) gets a free seat for my [two day TDD class](http://londontdd.eventbrite.com/) in London for [his post about his dedication to learning this subject](http://www.atypicalcoder.com/i-need-refactoring/). Tim, I’ll see you there!  Tim gets in free to [learn the following subjects and more:](http://londontdd.eventbrite.com/) - Creating readable, maintainable and trustworthy unit tests - Testing and refactoring legacy code - Mocks, stubs and fakes (FakeItEasy, Moq and handwritten fakes) - Reviewing unit tests for teaching purposes - TDD Katas - more Two runner ups get a 50% discount for a ticket (just contact me and ask for the code): - [Nazakat Ali](http://fragiledevelopment.blogspot.com/2011/02/last-chance-for-tdd-class.html) - Marko from Servia (who does not have a blog but left a comment instead).  Congratulations and I [hope to see you all there](http://londontdd.eventbrite.com/)! --- title: "Are you an agile consultant in Israel? Make yourself known!" url: "https://osherove.com/blog/2011/2/27/are-you-an-agile-consultant-in-israel-make-yourself-known.md" canonical: "https://osherove.com/blog/2011/2/27/are-you-an-agile-consultant-in-israel-make-yourself-known.html" published: "2011-02-27T10:24:11" updated: "2011-02-27T10:24:11" tags: [] author: "Roy Osherove" description: "Israel needs more Agile consultants. I’m serious. I keep getting asked by small and large companies if I know good agile consultants. And the problem is that I know very little agile related consultants that don’t…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Are you an agile consultant in Israel? Make yourself known! By Roy Osherove February 27, 2011 **Historical article** · Originally published February 27, 2011; technical details may be outdated. Israel needs more Agile consultants. I’m serious. I keep getting asked by small and large companies if I know good agile consultants. And the problem is that I know very little agile related consultants that don’t already have their hands full. Let’s face it  - currently the market situation is dire. There is maybe one relatively known company that dominates the market, simply beucase it has a member with scrum certification, and the rest are small time people who circulate around other clients. Some of them even joined that company.  I only know one agile\\lean\\tdd consultant that isn’t associated with that company - [Lior Friedman](http://imistaken.blogspot.com/) (which I got to work with and trust). And he’s got his hands full already. So let’s make a list of agile consultants. **If you are one, but nobody knows you - feel free to comment here with your name, your specialties and link to website\\blog\\twitter**. At the very least - I’ll have options to give to people who contact me.  The more competition there is, the more clients benefit. It’d be great if we could get ot the situation where there are “too many”. Choice is a good problem to have. --- title: "Free TDD Class Seat in March - Here's How" url: "https://osherove.com/blog/2011/2/23/free-tdd-class-seat-in-march-heres-how.md" canonical: "https://osherove.com/blog/2011/2/23/free-tdd-class-seat-in-march-heres-how.html" published: "2011-02-23T12:58:18" updated: "2011-02-23T12:58:18" tags: ["Unit Testing"] author: "Roy Osherove" description: "After much debating , here’s how you can win a free seat for my two day TDD in .NET class in London Next month (you get full free entry - but does not include flight\\hotel! ) Write a blog post that details (in text,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free TDD Class Seat in March - Here's How By Roy Osherove February 23, 2011 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published February 23, 2011; technical details may be outdated. After [much debating](https://osherove.com/blog/2011/2/21/want-a-free-seat-for-my-tdd-class-in-march-propose-a-challen.html), here’s how you can win a free seat for [my two day TDD in .NET](http://londontdd.eventbrite.com/) class in London Next month (you get full free entry  - but does not include flight\\hotel! ) - Write a blog post that details (in text, video or otherwise) why you think you should be the one to get this free seat, [and include a link to the course page](http://londontdd.eventbrite.com/) or to this blog post.  - write a comment on this post with a link to your email, or tweet  about it under the hashtag #LondonTDD so I can catch it - At the end of this month I will declare one winner (either by public vote, or I’ll just select one) - **2nd and 3rd place will get a 50% discount on a ticket.**  - **Contest ends end of this month** ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Aug 24, 2011 ### [Why MSTest is the IE6 of unit test frameworks](https://osherove.com/blog/2011/8/24/why-mstest-is-the-ie6-of-unit-test-frameworks.html) - May 23, 2011 ### [New TDD Kata - Interactions](https://osherove.com/blog/2011/5/23/new-tdd-kata-interactions.html) - Feb 21, 2011 ### [Want a free seat for my TDD class in march? Propose a challenge.](https://osherove.com/blog/2011/2/21/want-a-free-seat-for-my-tdd-class-in-march-propose-a-challen.html) - Feb 6, 2011 ### [Video: how to do test reviews](https://osherove.com/blog/2011/2/6/video-how-to-do-test-reviews.html) --- title: "Want a free seat for my TDD class in march? Propose a challenge." url: "https://osherove.com/blog/2011/2/21/want-a-free-seat-for-my-tdd-class-in-march-propose-a-challen.md" canonical: "https://osherove.com/blog/2011/2/21/want-a-free-seat-for-my-tdd-class-in-march-propose-a-challen.html" published: "2011-02-21T07:08:02" updated: "2011-02-21T07:08:02" tags: ["Unit Testing"] author: "Roy Osherove" description: "In a few weeks I will be giving a full two day TDD class in .NET, in London, at the SkillsMatter facilities . To celebrate the first course ever that I am doing “alone” (without any host organizing things for me), I’m…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Want a free seat for my TDD class in march? Propose a challenge. By Roy Osherove February 21, 2011 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published February 21, 2011; technical details may be outdated. In a few weeks I will be giving a full two day TDD class in .NET, [in London, at the SkillsMatter facilities](http://londontdd.eventbrite.com/). To celebrate the first course ever that I am doing “alone” (without any host organizing things for me), I’m giving away **one free seat** for the full two days (it does not include flight or hotel costs). But who to select? Ah. a challenge is in order! Propose a challenge that I’ll ask people to do – anything that people could share online relating to unit testing in some way. some things I’m considering (but happy to hear better ideas) : - Tell your worst war stories relating to unit testing\\TDD - Make a short video about unit testing\\tdd - write the best sob story on why you deserve it - bribes - selling the ticket on ebay - naked pict…. never mind. any idea is welcome. as you can see, I’m struggling. I will declare this challenge within 3 days. ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - May 23, 2011 ### [New TDD Kata - Interactions](https://osherove.com/blog/2011/5/23/new-tdd-kata-interactions.html) - Feb 23, 2011 ### [Free TDD Class Seat in March - Here's How](https://osherove.com/blog/2011/2/23/free-tdd-class-seat-in-march-heres-how.html) - Feb 6, 2011 ### [Video: how to do test reviews](https://osherove.com/blog/2011/2/6/video-how-to-do-test-reviews.html) - Feb 2, 2011 ### [Test Driven Source Control–Safe Points](https://osherove.com/blog/2011/2/2/test-driven-source-controlndashsafe-points.html) --- title: "Multiple mocks, asserts, and hidden results" url: "https://osherove.com/blog/2011/2/9/multiple-mocks-asserts-and-hidden-results.md" canonical: "https://osherove.com/blog/2011/2/9/multiple-mocks-asserts-and-hidden-results.html" published: "2011-02-09T11:25:00" updated: "2011-02-09T11:25:00" tags: [] author: "Roy Osherove" description: "In his post “ one mock per test considered harmful ” , Phillip suggests that having multiple mocks used could make a more readable specification. he also disagrees with the way I provide some of the advice in my book.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Multiple mocks, asserts, and hidden results By Roy Osherove February 9, 2011 **Historical article** · Originally published February 9, 2011; technical details may be outdated. In his post “[one mock per test considered harmful](http://fragmental.tw/2010/12/14/one-mock-per-test-considered-not-awesome/)” , Phillip suggests that having multiple mocks used could make a more readable specification.  he also disagrees with the way I provide some of the advice in my book. First, I’d like to get to the technical issue at the heart of this matter. Why do I not want to test more than one “thing” in the test? because mock verifications, much like asserts, throw exceptions. That means that any verifications below that line never get called and so you’ll never know if they passed or not. if you have three assertions or mocks in a test and you verify all of them, you need to accept the fact that is the first one fails, you’ll never know if the other two passed or not. You’re like a doctor that only sees one symptom in a patient, with two other symptoms hidden. them more symptoms you can see, the better you might deal with the problem, or look in a different place to fix it. There is one exception which makes sense to use more than a single mock or assertion, even if you know it “hides” the other results. ask yourself this simple question: > If the first assert\\mock fails, do I really still care about the lower ones? If the answer is “no", then you can go ahead and use multiple mocks\\asserts. if you answered “yes” you’d be better off splitting that assert into a different test, with a good name that explains what is the behavior you are expecting. For me, I find the “no, I don’t care about the other asserts\\mocks if the first fails” answer is more likely when you are asserting on the same object (like checking multiple properties on the same object). ### Test Frameworks need to support multiple asserts\\mocks If test frameworks did NOT throw exceptions form asserts\\mocks, but instead gathered all of their data before ending the test as fail\\pass, this would not be needed. [here’s an example of a small helper framework for .NET called “one assert per test”](http://rauchy.net/oapt/) which tries to alleviate this situation, by generating a test-per-assert at runtime. Pretty clever idea! ### **Naming** When we have this support, then the naming problem might hit us – if you’re testing multiple things, can you make the spec\\test name readable enough to fully understand all of its consequences? otherwise it would be very generic and not understandable. ### **Over Specification** 90% of the time when I see tests using multiple mocks, they are actually guilty of over specification (some examples of that [in this video)](https://osherove.com/videos/2011/2/6/how-to-do-test-reviews.html)  - where you specify too much of the internal interaction and thus making the test fragile. for newbies, thinking of multiple mocks as a short rule, is an encouragement to learn why and to make up their own rules later, but to get started with a foundation. ### Learning Stages I’m happy that Phillip has learned enough to avoid recommendations that feel “deterministic” in some way. He’s passed the stage where he needs to look and follow, and he’s making up rules that suit him better, and even making up better rules for the same situations. [My book](http://artofunittesting.com/) is largely pointed at people new to unit testing. just like you start learning martial arts by following things step by step (katas), and then leveraging that knowledge to diversify and build upon and improvise new ways, so is my book. it’s not for people who are already doing bdd-like work. it’s for those who aren’t sure where to begin, or how to continue. --- title: "Video: how to do test reviews" url: "https://osherove.com/blog/2011/2/6/video-how-to-do-test-reviews.md" canonical: "https://osherove.com/blog/2011/2/6/video-how-to-do-test-reviews.html" published: "2011-02-06T13:43:33" updated: "2011-02-06T13:43:33" tags: ["Unit Testing", "oredev"] author: "Roy Osherove" description: "Last year I did a talk at Oredev, showing examples of how I go over various pieces of open source projects, and what I look for when I review other people’s unit tests. The full video is here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: how to do test reviews By Roy Osherove February 6, 2011 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published February 6, 2011; technical details may be outdated. Last year I did a talk at Oredev, showing examples of how I go over various pieces of open source projects, and what I look for when I review other people’s unit tests. [The full video is here](http://oredev.org/2010/sessions/how-to-do-test-reviews). - [#oredev](https://osherove.com/blog/tag/oredev) ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Feb 23, 2011 ### [Free TDD Class Seat in March - Here's How](https://osherove.com/blog/2011/2/23/free-tdd-class-seat-in-march-heres-how.html) - Feb 21, 2011 ### [Want a free seat for my TDD class in march? Propose a challenge.](https://osherove.com/blog/2011/2/21/want-a-free-seat-for-my-tdd-class-in-march-propose-a-challen.html) - Feb 2, 2011 ### [Test Driven Source Control–Safe Points](https://osherove.com/blog/2011/2/2/test-driven-source-controlndashsafe-points.html) - Nov 30, 2010 ### [2 day TDD workshop in London, UK - March 2011](https://osherove.com/blog/2010/11/30/2-day-tdd-workshop-in-london-uk-march-2011.html) --- title: "How to do test reviews" url: "https://osherove.com/videos/2011/2/6/how-to-do-test-reviews.md" canonical: "https://osherove.com/videos/2011/2/6/how-to-do-test-reviews.html" published: "2011-02-06T13:38:40" updated: "2011-02-06T13:38:40" tags: ["Oredev", "TDD", "Unit Testing", "reviews"] author: "Roy Osherove" description: "Last year I did a talk at Oredev, showing examples of how I go over various pieces of open source projects, and what I look for when I review other people’s unit tests. The full video is here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to do test reviews By Roy Osherove February 6, 2011 In [Oredev](https://osherove.com/videos/category/oredev), [TDD](https://osherove.com/videos/category/tdd), [Unit Testing](https://osherove.com/videos/category/unit-testing) **Historical article** · Originally published February 6, 2011; technical details may be outdated. Last year I did a talk at Oredev, showing examples of how I go over various pieces of open source projects, and what I look for when I review other people’s unit tests. [The full video is here](http://oredev.org/2010/sessions/how-to-do-test-reviews). - [#reviews](https://osherove.com/videos/tag/reviews) ## More in Oredev [All posts in Oredev](https://osherove.com/videos/category/oredev) - Dec 7, 2010 ### [Let's Play TDD with James Shore](https://osherove.com/videos/2010/12/7/lets-play-tdd-with-james-shore.html) - Nov 24, 2010 ### [20 tools and tips that make me a better developer](https://osherove.com/videos/2010/11/24/20-tools-and-tips-that-make-me-a-better-developer.html) --- title: "What are you going to do about it?" url: "https://osherove.com/blog/2011/2/3/what-are-you-going-to-do-about-it.md" canonical: "https://osherove.com/blog/2011/2/3/what-are-you-going-to-do-about-it.html" published: "2011-02-03T13:14:40" updated: "2011-02-03T13:14:40" tags: [] author: "Roy Osherove" description: "A couple of Days ago I finished the first “Lead Better” course for software team leaders in Oslo. It was the first time I had done this course out of Israel. It was a great feeling to get the following email today from…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What are you going to do about it? By Roy Osherove February 3, 2011 **Historical article** · Originally published February 3, 2011; technical details may be outdated. A couple of Days ago I finished the first [“Lead Better” course for software team leaders](http://www.programutvikling.no/kurskalenderoversikt.aspx?id=938475) in Oslo. It was the first time I had done this course out of Israel. It was a great feeling to get the following email today from Michal, one of the participants of that course. In the email he also refers to [an Integrity and commitment based technique I wrote about](http://5whys.com/blog/my-team-keeps-breaking-their-promises-what-can-i-do.html) before, and that we covered deeply during the course. > Hi Roy, >   > I participated in the course “Lead better” 2 days ago in Oslo. >   > I committed to you that I would ask at least one time the magical phrase “What are you gonna do about it” to my teammates and let you know about results. > It happened sooner than I would expect. More, the problem was solved very quickly. >   > On a standup meeting one of my teammates said: > \-          “we need to test the new configuration somehow”. > > \-          So I immediately asked “What are you gonna do about it?” > > \-          ... seconds of consternation... “eeehhhmmmm, I will figure out something” > > \-          “By When?” > > \-          “Today, an hour after scrum meeting, I will reconfigure the platform and let you know about the results.” > > \-          “Great” :) > >   > And it worked! In an hour I got him with a rest of a team discussing details and in another hour, the platform was reconfigured and fully tested! It would never happen so fast if he had not commited to do so :) > Thanks. >   > Michał Wikliński --- title: "Review: PostSharp 2.0" url: "https://osherove.com/blog/2011/2/3/review-postsharp-20.md" canonical: "https://osherove.com/blog/2011/2/3/review-postsharp-20.html" published: "2011-02-03T10:00:40" updated: "2011-02-03T10:00:40" tags: [] author: "Roy Osherove" description: "While working at Typemock, we got a few review licenses of PostSharp . I had known the product from it’s version 1.0 days, and was determined on using it to apply logging and tracing into our applications (such as Test…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Review: PostSharp 2.0 By Roy Osherove February 3, 2011 **Historical article** · Originally published February 3, 2011; technical details may be outdated. While working at Typemock, we got a few review licenses [of PostSharp](http://www.sharpcrafters.com/). I had known the product from it’s version 1.0 days, and was determined on using it to apply logging and tracing into our applications (such as Test Lint). It’s been a great experience working with it. For that task, PostSharp was great, and worked perfectly in conjunction with other products such as SmartInspect and others. The only problems I’ve experienced with it were actually related to Typemock Isolator disturbing it just a little bit. Unfortunately we never got to fix those little bugs in Isolator, but that should not be a problem for most anyone. I’d highly recommend it as infrastructure for logging\\tracing abilities that “just works”. --- title: "20% discount, and new location - Two Day TDD Class UK" url: "https://osherove.com/blog/2011/2/2/20-discount-and-new-location-two-day-tdd-class-uk.md" canonical: "https://osherove.com/blog/2011/2/2/20-discount-and-new-location-two-day-tdd-class-uk.html" published: "2011-02-02T18:11:27" updated: "2011-02-02T18:11:27" tags: [] author: "Roy Osherove" description: "Good news : My march class of TDD in .NET has a location : SkillsMatter in the UK. There are only five tickets left, and the first one to use the code “ GoMouseless ” at checkout, gets a 20% discount on the purchase. I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 20% discount, and new location - Two Day TDD Class UK By Roy Osherove February 2, 2011 **Historical article** · Originally published February 2, 2011; technical details may be outdated. Good news : [My march class of TDD](http://londontdd.eventbrite.com/) in .NET has a location : SkillsMatter in the UK. There are only five tickets left, and the first one to use the code “**GoMouseless**” at checkout, gets a 20% discount on the purchase. I hope you’ll join me! --- title: "Test Driven Source Control–Safe Points" url: "https://osherove.com/blog/2011/2/2/test-driven-source-controlndashsafe-points.md" canonical: "https://osherove.com/blog/2011/2/2/test-driven-source-controlndashsafe-points.html" published: "2011-02-02T14:49:00" updated: "2011-02-02T14:49:00" tags: ["Unit Testing"] author: "Roy Osherove" description: "Having worked quite a bit now with Git and Mercurial, and tests, I got an interesting idea. An addin that runs inside your favorite IDE, and listens to test related events. Every time the test suite is finished running,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven Source Control–Safe Points By Roy Osherove February 2, 2011 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published February 2, 2011; technical details may be outdated. Having worked quite a bit now with Git and Mercurial, and tests, I got an interesting idea. An addin that runs inside your favorite IDE, and listens to test related events. Every time the test suite is finished running, the addin performs a commit of all the current files and state into the local source control system. BUT, it also includes the current **results of all the test runs**. essentially, it will associate the state of the system as part of an automated commit on every run of the tests. # What do you get? You get a wonderful ability of **reverting back to the time where all the tests passed**, or to a time when a specific test passed. You also don’t need to remember to commit locally when you get to any kind of stable state. Each commit will be saved and visualized as a “Safe Point” – and you can travel up and down the source history, based on the test results that you’d like to get to. This is great if you get down a rabbit hole and break everything. You just revert back to the time when everything was passing, or even partially passing. Today, without this, if you forgot to locally commit during the work or before it, you’re out of luck. with this system you never forget to commit, and you get access to different states of the system you also get, if you work in a Test Driven way, a nice way to perhaps visual the history of how some functionality was created. You might play-back the steps it took to make something. If no one builds it, I will! ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Feb 21, 2011 ### [Want a free seat for my TDD class in march? Propose a challenge.](https://osherove.com/blog/2011/2/21/want-a-free-seat-for-my-tdd-class-in-march-propose-a-challen.html) - Feb 6, 2011 ### [Video: how to do test reviews](https://osherove.com/blog/2011/2/6/video-how-to-do-test-reviews.html) - Nov 30, 2010 ### [2 day TDD workshop in London, UK - March 2011](https://osherove.com/blog/2010/11/30/2-day-tdd-workshop-in-london-uk-march-2011.html) - Oct 18, 2010 ### [Join me for a live webinar on unit testing with Isolator++ this thursday](https://osherove.com/blog/2010/10/18/join-me-for-a-live-webinar-on-unit-testing-with-isolator-thi.html) --- title: "Measuring Simplicity in TDD" url: "https://osherove.com/blog/2011/1/20/measuring-simplicity-in-tdd.md" canonical: "https://osherove.com/blog/2011/1/20/measuring-simplicity-in-tdd.html" published: "2011-01-19T23:06:16" updated: "2011-01-19T23:06:16" tags: [] author: "Roy Osherove" description: "Uncle Bob talks about priorities when changing code functionality according to a failing test (‘tranformations’): http://cleancoder.posterous.com/the-transformation-priority-premise he asks: Is there really a priority?…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Measuring Simplicity in TDD By Roy Osherove January 19, 2011 **Historical article** · Originally published January 19, 2011; technical details may be outdated. Uncle Bob talks about priorities when changing code functionality according to a failing test (‘tranformations’): [http://cleancoder.posterous.com/the-transformation-priority-premise](http://cleancoder.posterous.com/the-transformation-priority-premise) he asks: - Is there really a priority? (I think so, but it might be more complicated than a simple ordinal sequence) - If so, what is the principle behind that priority? (some notion of “complexity”) - Can it be quantified? (I have no idea) Yes. There IS a priority and he is right. When I teach my students how to solve things, I talk about what it means for solutions to be simple. I quantify and measure simplcity of a solution by: - How high is the code in the function? the closer it is to the beginning, the simpler it is - How indented is the code? the less indentation, the more simple it is - How wide is it? It should be as narrow (short) as possible, but still be readable - How many ASSUMPTIONS does it have? the more assumptions it has, the simpler it is (this goes to Uncle Bob’s idea of tdd making code more and more generic as it progresses which fully agree with). For example, if you can assume on the length of the input, the code will be simpler than having to find the length. On the test side, I always try to ask:  - What is the simplest test that proves there is something wrong with that code?  - How can you prove that the code is making a hard coded assumption? - Did you fully “solve” the last test? or did you “cheat” by making an assumption in the code? if so, keep writing tests on that assumption until you can move on to the next “task” in the requirements - where there are no assumptions left in the code that disagree with the requirements --- title: "The Journey Begins (and why it starts with Ruby)" url: "https://osherove.com/blog/2011/1/2/the-journey-begins-and-why-it-starts-with-ruby.md" canonical: "https://osherove.com/blog/2011/1/2/the-journey-begins-and-why-it-starts-with-ruby.html" published: "2011-01-02T13:23:08" updated: "2011-01-02T13:23:08" tags: [] author: "Roy Osherove" description: "I am so freaking glad I made this move . I’ve gotten more than a dozen emails from companies in Israel doing non-MS stuff, who may be interested in me interning for them. Technologies range from Java Based Scalability…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Journey Begins (and why it starts with Ruby) By Roy Osherove January 2, 2011 **Historical article** · Originally published January 2, 2011; technical details may be outdated. I am _so freaking glad_  I [made this move](https://osherove.com/blog/2010/12/30/hire-me-as-your-ruby-intern-for-a-year.html). I’ve gotten more than a dozen emails from companies in Israel doing non-MS stuff, who may be interested in me interning for them. Technologies range from Java Based Scalability and Infrastructure running against NOSQL databases in the cloud, to pure Ruby on Rails against MySql and into Django\\Python material. ### The open source scene in Israel seems to be steaming with opportunity. Some people have asked me why I chose to work in Ruby. Why not **Python**? Why not **Node.Js**? The answer is  - that I only choose to _start_ with Ruby. One has to start with something, and from my journey so far, Ruby seems to be the most welcoming to newbies, and with the largest community. I might be totally wrong, of course, but that’s the beauty of this journey. I don’t know what I don’t know yet. I’m about to know what it is that I don’t know, and then I’ll know that I need to learn it. I don’t know in what priority to learn things, so I’m just plunging head first into the open source pool with something that seems reasonable. I may look back on this move and laugh how silly it was that I chose Ruby, but by then, I will have learned a great deal. Some of the companies I’ve been in contact with so far: - [MadMimi](http://madmimi.com/) - [Fiverr](http://fiverr.com/) - [KenShoo](http://kenshoo.com/) - SyGen - [SaasPulse](http://saaspulse.com/) - [BaLiGam](http://www.baligam.co.il/) and a few more. ## Thanks for taking a risk with me! I’ll be meeting with all of them and sharing what I can during my learning process. --- title: "Hire me as your ruby intern for a year" url: "https://osherove.com/blog/2010/12/30/hire-me-as-your-ruby-intern-for-a-year.md" canonical: "https://osherove.com/blog/2010/12/30/hire-me-as-your-ruby-intern-for-a-year.html" published: "2010-12-30T19:48:06" updated: "2010-12-30T19:48:06" tags: [] author: "Roy Osherove" description: "Want to pay me peanuts for dedicated work? Here’s how! You can contact me here Summary What you get A fast learner with a good track record of shipping products, good knowledge of unit testing concepts and TDD , brain…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hire me as your ruby intern for a year By Roy Osherove December 30, 2010 **Historical article** · Originally published December 30, 2010; technical details may be outdated. Want to pay me peanuts for dedicated work? Here’s how! You [can contact me here](https://osherove.com/request-more-info/) ## Summary ### What you get A fast learner with [a good track record](https://osherove.com/blog/2010/12/30/a-farewell-to-typemock.html) of shipping products, [good knowledge of unit testing concepts](http://artofunittesting.com/) and TDD , brain storming, curious developer **who will work for peanuts**. for 50% to 80% job. Already has basic web experience (jQuery mainly). ### What I get A place **in Israel** where I can learn and develop in Ruby **(or mobile)** as part of a real team with real experience doing it, on a Mac or Linux desktop. And a car. And a beginner’s salary. That’s it. ## The Details Now that [I’ve left Typemock behind me](https://osherove.com/blog/2010/12/30/a-farewell-to-typemock.html), For the next year I plan to live life outside the Microsoft world.   Outside [of training courses that will help pay my way](https://osherove.com/),  I plan to not touch .NET at all, and Windows either. Many of the reasons I can think of [have been summed up beautifully in this blog post](http://david.ing.name/2010/12/01/time-to-diversify/).  I want to know what I don’t know about the “other side” of things. Mucking with ruby and Ubuntu in the past couple of months has shown me several interesting things about the open source culture, its innovation, and more importantly, has helped shine the light more on how MS developers are being treated by Microsoft, without even being aware of it (not as well as they should, basically). I’m quite sure that **Ruby, Python** and **open source** isn’t going to be perfect, and that there are pros and cons to each side of the camp, but at the very least I plan to dig through as much as possible so that I can safely switch between camps based on what I need to do. In order to do that I want to offer myself up for internship  - starting from scratch : ### What company am I looking for? If **you’re a company in Israel**, working purely on non MS technologies, not even the operating system you code on, and you’re building some sort of website\\mobile app with some sort of ruby\\other open source combo – I’d love to help. For either a half or 80% job, I’d be happy with a car and a _fresh out of school_ salary. I believe that the best learning comes from doing, and that doing is about doing something \*real\*. not just a personal thing. If you’d like to have me work for you and you’re a non MS shop – I’d be happy to hear and learn something new! If you’re a MS shop just getting into these technologies as well, you’re not what I’m looking for. I’m looking to work with people who _already know_ what they are doing, and can mentor me on what they have learned. I’m also planning [to apply to Google as a tester](http://googletesting.blogspot.com/) in the coming months. There’s a 50% chance of me getting in. I just need to prepare my math\\algo skills (having no formal degree, I hear that’s kinda of a problem.)  But in the meantime, if something awesome was to come along, I would not say no! (except to Google!) --- title: "A Farewell to Typemock" url: "https://osherove.com/blog/2010/12/30/a-farewell-to-typemock.md" canonical: "https://osherove.com/blog/2010/12/30/a-farewell-to-typemock.html" published: "2010-12-30T18:48:18" updated: "2010-12-30T18:48:18" tags: ["Typemock"] author: "Roy Osherove" description: "Today is both a sad and happy day for me. It was my last day working at Typemock . Starting January, I’ve decided to go on a new journey. More on that in the next post . I’ve been at Typemock exactly three years, the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Farewell to Typemock By Roy Osherove December 30, 2010 In [Typemock](https://osherove.com/blog/category/typemock) **Historical article** · Originally published December 30, 2010; technical details may be outdated. Today is both a sad and happy day for me. It was my last day working at [Typemock](http://typemock.com/). Starting January, I’ve decided to go on a new journey. [More on that in the next post](https://osherove.com/blog/2010/12/30/hire-me-as-your-ruby-intern-for-a-year.html). I’ve been at Typemock exactly three years, the last couple of years as Chief Architect. Joined January 3 years ago, and leaving just when the leasing on my company car has run out. During those 3 years I’ve learned so much It will be hard to describe it in one post, but I’ll try. I’m proud to have helped ship several new products and versions of those products during my stay: - [Isolator++](http://www.typemock.com/isolatorpp-product-page), the ultimate Isolation framework for C++; - [Test Lint](http://www.typemock.com/test-lint), a just-in-time test review extension for visual studio; - [Racer](http://site.typemock.com/typemock-racer-product/), for finding deadlocks in .net threads - [TeamMate](http://www.typemock.com/TeamMate), for measuring the effectiveness of your unit testing strategy - and of course [Isolator for .NET](http://www.typemock.com/typemock-isolator-product3) in its new and fluent API for both C# and VB. During the past three years I’ve learned, among other things, [a better meaning and essence of team leadership](http://5whys.com/), product management, team management techniques, productization and post-deployment thinking, working with contractors, true pair programming, ScrumP (Scrum+XP) in real life, and many more things I’ve neglected to write [in my book](http://artofunittesting.com/). I’d like to think that not only did I learn many things, but that, together with a bunch of extraordinary developers, we’ve helped shape and change the state of the art in unit testing in .NET, and most recently in C++. ## It started out very differently. The main reason I chose to work at Typemock was one you might raise an eyebrow at: I was not a big supporter of Typemock at the time, and in fact, felt that it could make things worse for the unit testing community by encouraging bad design. I also knew that it’s the easiest thing in the world to stand at the sidelines and judge something you don’t understand fully, so I decided to jump head first into the opportunity that came upon me: [Eli Lopian, the CEO of Typemock](http://www.elilopian.com/), knew me from consulting at his company with their efforts for TDD. When he left there to start Typemock, he offered me a job there. I thanked him and said “no”. I was dong something else at the time. But a year or so later, I called him up and said I want to be part of it. I really wanted to understand what is it that I don’t understand about this product and its abilities. What better way to learn that than to spearhead the development of said product? At worst, I would find out that I was right. At best, I would learn something new. And that’s what happened. I realized this product makes a real difference for people stuck in bad code and bad companies. It’s a bridge, a way out into agility. at least, into the start of agility. And it can change people’s lives for the better. So I’m happy I did it, and I still believe this to be true. I’m leaving because I want to learn new things, but I ‘d still highly recommend Typemock to people struggling with such issues. The future holds great things for this company, if Eli can keep it focused and poised at its targets. ## The developers at Typemock ..are some of the best I’ve gotten the chance to work with, but it was a process getting there. We **all** learned a lot about ourselves and about how we work, and I feel _privileged_ to be part of that learning process.  Doron, [Gil](http://www.gilzilberfeld.com/), [Dror](http://blog.drorhelper.com/), Ohad, [Igal](http://www.hmemcpy.com/blog/) – it’s been a pleasure. Anna, Elisha, Idan – I wish we could have worked more together! [Eli](http://www.elilopian.com/) – Thanks for helping shape who I am and what I know today. You are one of the best CEOs I’ve seen (and I’ve been to quite a few startups). They are lucky to have you guiding them! Thanks for all the fish! I’m moving to a different ocean for a while. ## More in Typemock [All posts in Typemock](https://osherove.com/blog/category/typemock) - Oct 18, 2010 ### [Join me for a live webinar on unit testing with Isolator++ this thursday](https://osherove.com/blog/2010/10/18/join-me-for-a-live-webinar-on-unit-testing-with-isolator-thi.html) - Jul 4, 2010 ### [new Test Lint Beta – with command line runner](https://osherove.com/blog/2010/7/4/new-test-lint-beta-with-command-line-runner.html) --- title: "Amazon EC2: Launching windows instance with custom HD size works for X64, fails for x86" url: "https://osherove.com/blog/2010/12/28/amazon-ec2-launching-windows-instance-with-custom-hd-size-wo.md" canonical: "https://osherove.com/blog/2010/12/28/amazon-ec2-launching-windows-instance-with-custom-hd-size-wo.html" published: "2010-12-28T02:39:43" updated: "2010-12-28T02:39:43" tags: ["EC2"] author: "Roy Osherove" description: "I’m still struggling with this annoying problem. Any help would be appreciated! https://forums.aws.amazon.com/thread.jspa?threadID=57283" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Amazon EC2: Launching windows instance with custom HD size works for X64, fails for x86 By Roy Osherove December 28, 2010 In [EC2](https://osherove.com/blog/category/ec2) **Historical article** · Originally published December 28, 2010; technical details may be outdated. I’m still struggling with this annoying problem. Any help would be appreciated! [https://forums.aws.amazon.com/thread.jspa?threadID=57283](https://forums.aws.amazon.com/thread.jspa?threadID=57283) --- title: "Be a legacy code unit test ninja with Typemock Isolator" url: "https://osherove.com/videos/2010/12/7/be-a-legacy-code-unit-test-ninja-with-typemock-isolator.md" canonical: "https://osherove.com/videos/2010/12/7/be-a-legacy-code-unit-test-ninja-with-typemock-isolator.html" published: "2010-12-07T18:06:04" updated: "2010-12-07T18:06:04" tags: ["Howto"] author: "Roy Osherove" description: "Embedded Flash media from the original post is no longer playable." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Be a legacy code unit test ninja with Typemock Isolator By Roy Osherove December 7, 2010 In [Howto](https://osherove.com/videos/category/howto) **Historical article** · Originally published December 7, 2010; technical details may be outdated. Embedded Flash media from the original post is no longer playable. ## More in Howto [All posts in Howto](https://osherove.com/videos/category/howto) - Jun 1, 2010 ### [Continuous Integration with and without team system 2008](https://osherove.com/videos/2010/6/1/continuous-integration-with-and-without-team-system-2008.html) - Aug 24, 2009 ### [Testing Complex Logic with TDD](https://osherove.com/videos/2009/8/25/testing-complex-logic-with-tdd.html) --- title: "Let's Play TDD with James Shore" url: "https://osherove.com/videos/2010/12/7/lets-play-tdd-with-james-shore.md" canonical: "https://osherove.com/videos/2010/12/7/lets-play-tdd-with-james-shore.html" published: "2010-12-07T18:03:00" updated: "2010-12-07T18:03:00" tags: ["Oredev", "TDD"] author: "Roy Osherove" description: "During my speaking at Oredev Conference , I got to meet James Shore , author of The Art of Agile book . I’ve known him only through reputation and his book, so when he offered to pair with him for a series of short…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Let's Play TDD with James Shore By Roy Osherove December 7, 2010 In [Oredev](https://osherove.com/videos/category/oredev), [TDD](https://osherove.com/videos/category/tdd) **Historical article** · Originally published December 7, 2010; technical details may be outdated. During [my speaking at Oredev Conference](http://oredev.org/2010/speakers/roy-osherove), I got to meet [James Shore](http://jamesshore.com/), author of The [Art of Agile book](https://www.amazon.com/gp/product/0596527675?ie=UTF8&tag=iserializable-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596527675). I’ve known him only through reputation and his book, so when he offered to pair with him for a series of short Let’s Play TDD screencasts, I was excited to join in the fun.  [![The Art of Agile Development](https://osherove.com/img/ext/mages_I_41enDzc2mWL._BO2_204_203_200_PIsitb-sticker-arrow-click_TopRight_35_-76_AA300_SH20_OU01_.jpg)](https://www.amazon.com/gp/product/0596527675?ie=UTF8&tag=iserializable-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596527675) It’s been a long while since I’ve done java, and I’m certainly not a mac guy (just getting into [Ubuntu](http://www.ubuntu.com/), actually), but it turned out to be quite interesting and entertaining. James is a smart guy and his views on how things get to be where they are are at the very least interesting. In fact, after looking more into it, I think he’s got some interesting comments hidden indie these screencasts. be sure to look for hidden gems. ## The Episodes 1. [Episode 48](http://jamesshore.com/Blog/Lets-Play/Episode-48.html) – where James mostly shows me around the current spike he’s done so far, and we being to write the first test. 2. [Episode 49](http://jamesshore.com/Blog/Lets-Play/Episode-49.html) – where we try to write the first test for the new UI. This is really us finding the “pattern” in which to write the real unit test, and make it somewhat readable. We then somehow fail to make it pass. 3. [Episode 50](http://jamesshore.com/Blog/Lets-Play/Episode-50.html) – where we try to figure out why our test isn’t really working and make it work, but it’s still an integration style UI test 4. [Episode 51](http://jamesshore.com/Blog/Lets-Play/Episode-51.html)\-  where we refactor the test into a somewhat workable unit test (removing UI related parts that are not needed) 5. [Episode 52](http://jamesshore.com/Blog/Lets-Play/Episode-52.html) – where get the production code working for real. ## More in Oredev [All posts in Oredev](https://osherove.com/videos/category/oredev) - Feb 6, 2011 ### [How to do test reviews](https://osherove.com/videos/2011/2/6/how-to-do-test-reviews.html) - Nov 24, 2010 ### [20 tools and tips that make me a better developer](https://osherove.com/videos/2010/11/24/20-tools-and-tips-that-make-me-a-better-developer.html) --- title: "2 day TDD workshop in London, UK - March 2011" url: "https://osherove.com/blog/2010/11/30/2-day-tdd-workshop-in-london-uk-march-2011.md" canonical: "https://osherove.com/blog/2010/11/30/2-day-tdd-workshop-in-london-uk-march-2011.html" published: "2010-11-30T20:35:52" updated: "2010-11-30T20:35:52" tags: ["Unit Testing"] author: "Roy Osherove" description: "During March, right before QCON, I’ll be hosting a 2 day intense TDD workshop in London, UK . It’s in C#. I’m still looking for the right place to host it in, but it will be in London, that’s for sure! It’s the first…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 2 day TDD workshop in London, UK - March 2011 By Roy Osherove November 30, 2010 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published November 30, 2010; technical details may be outdated. During March, right before QCON, [I’ll be hosting a 2 day intense TDD workshop in London, UK](http://londontdd.eventbrite.com/). It’s in C#. I’m still looking for the right place to host it in, but it will be in London, that’s for sure! It’s the first event I’ll be trying to arrange all on my own, so I also get to set my own limits  - **NO MORE THAN 12 STUDENT**S**.** This will give me lots of time with each student, and also the ability to dive deeper into various subjects with a smaller class. You don’t have to have ANY experience with TDD to join this class. It starts from **zero knowledge** assumptions. But the hope is that by the end of two days you’ll know enough to feel a bit more comfortable tackling something from the real world, or at least knowing where to look if you get stuck. More importantly, it’s about getting the first few steps _right_. I’ve seen plenty of people taking the first steps wrongly, and ending up failing an entire adoption process because of unmaintainable tests, for example. This workshop will also allow to sponsor my free talks at the upcoming QCON london conference right after the workshop ends. [I hope you’ll join me! There are only 4 early bird tickets.](http://londontdd.eventbrite.com/) ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Feb 6, 2011 ### [Video: how to do test reviews](https://osherove.com/blog/2011/2/6/video-how-to-do-test-reviews.html) - Feb 2, 2011 ### [Test Driven Source Control–Safe Points](https://osherove.com/blog/2011/2/2/test-driven-source-controlndashsafe-points.html) - Oct 18, 2010 ### [Join me for a live webinar on unit testing with Isolator++ this thursday](https://osherove.com/blog/2010/10/18/join-me-for-a-live-webinar-on-unit-testing-with-isolator-thi.html) - Oct 14, 2010 ### [What’s coming in Test Lint 1.5](https://osherove.com/blog/2010/10/14/whats-coming-in-test-lint-15.html) --- title: "20 tools and tips that make me a better developer" url: "https://osherove.com/videos/2010/11/24/20-tools-and-tips-that-make-me-a-better-developer.md" canonical: "https://osherove.com/videos/2010/11/24/20-tools-and-tips-that-make-me-a-better-developer.html" published: "2010-11-24T20:57:04" updated: "2010-11-24T20:57:04" tags: ["Oredev", "cloud", "tools"] author: "Roy Osherove" description: "In this session you will learn about the tools I use every day to speed up my work, to help me think better, to help me plan better and execute faster, to find errors faster, to automate easier and to be better at what…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 20 tools and tips that make me a better developer By Roy Osherove November 24, 2010 In [Oredev](https://osherove.com/videos/category/oredev) **Historical article** · Originally published November 24, 2010; technical details may be outdated. In this session you will learn about the tools I use every day to speed up my work, to help me think better, to help me plan better and execute faster, to find errors faster, to automate easier and to be better at what I do. Bring a pen and paper - you’ll need them! 20ToolsAndTipsOredev.mp4 [Top 20 tools and tips that make me a better developer - Roy Osherove](https://vimeo.com/17155992) from [Øredev](https://vimeo.com/user2649908) on [Vimeo](https://vimeo.com/). Recorded 2010-11-12 at Øredev - [oredev.org](http://www.oredev.org/) - [#cloud](https://osherove.com/videos/tag/cloud) - [#tools](https://osherove.com/videos/tag/tools) ## More in Oredev [All posts in Oredev](https://osherove.com/videos/category/oredev) - Feb 6, 2011 ### [How to do test reviews](https://osherove.com/videos/2011/2/6/how-to-do-test-reviews.html) - Dec 7, 2010 ### [Let's Play TDD with James Shore](https://osherove.com/videos/2010/12/7/lets-play-tdd-with-james-shore.html) --- title: "Diving into Ruby on Rails" url: "https://osherove.com/blog/2010/11/20/diving-into-ruby-on-rails.md" canonical: "https://osherove.com/blog/2010/11/20/diving-into-ruby-on-rails.html" published: "2010-11-20T19:30:51" updated: "2010-11-20T19:30:51" tags: ["RoR"] author: "Roy Osherove" description: "One of my missions in the coming year is to learn and get to know Ruby on Rails, and working with Ubuntu Linux. Here are the resources I’m currently using to get to learn Ruby on Rails: Listen to The Ruby Show podcast –…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Diving into Ruby on Rails By Roy Osherove November 20, 2010 In [RoR](https://osherove.com/blog/category/ror) **Historical article** · Originally published November 20, 2010; technical details may be outdated. One of my missions in the coming year is to learn and get to know Ruby on Rails, and working with Ubuntu Linux. Here are the resources I’m currently using to get to learn Ruby on Rails: - Listen to [The Ruby Show podcast](http://5by5.tv/rubyshow) – to listen to what rubyists talk about (hint – lots of tools and extensions you’ve never heard about) - Go to [TryRuby.org](http://tryruby.org/) for a 15 min. interactive Ruby tutorial in your browser - Go to [RailsForZombies.org](http://railsforzombies.org/) for an interactive and fun Ruby on Rails Tutorial and labs, inside your browser. - Get the book [Rails 3 in Action](http://www.manning.com/katz/) from Manning. It’s a well written and nicely composed book, that starts from the basic -  doing spec and test first rails applications. --- title: "Videos: Let’s Play TDD with James Shore" url: "https://osherove.com/blog/2010/11/19/videos-lets-play-tdd-with-james-shore.md" canonical: "https://osherove.com/blog/2010/11/19/videos-lets-play-tdd-with-james-shore.html" published: "2010-11-19T15:36:54" updated: "2010-11-19T15:36:54" tags: ["video", "book"] author: "Roy Osherove" description: "during my speaking at Oredev Conference , I got to meet James Shore , author of The Art of Agile book . I’ve known him only through reputation and his book, so when he offered to pair with him for a series of short…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Videos: Let’s Play TDD with James Shore By Roy Osherove November 19, 2010 In [video](https://osherove.com/blog/category/video) **Historical article** · Originally published November 19, 2010; technical details may be outdated. during [my speaking at Oredev Conference](http://oredev.org/2010/speakers/roy-osherove), I got to meet [James Shore](http://jamesshore.com/), author of The [Art of Agile book](https://www.amazon.com/gp/product/0596527675?ie=UTF8&tag=iserializable-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596527675). I’ve known him only through reputation and his book, so when he offered to pair with him for a series of short Let’s Play TDD screencasts, I was excited to join in the fun.  [![The Art of Agile Development](https://osherove.com/img/ext/mages_I_41enDzc2mWL._BO2_204_203_200_PIsitb-sticker-arrow-click_TopRight_35_-76_AA300_SH20_OU01_.jpg)](https://www.amazon.com/gp/product/0596527675?ie=UTF8&tag=iserializable-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0596527675) It’s been a long while since I’ve done java, and I’m certainly not a mac guy (just getting into [Ubuntu](http://www.ubuntu.com/), actually), but it turned out to be quite interesting and entertaining. James is a smart guy and his views on how things get to be where they are are at the very least interesting. In fact, after looking more into it, I think he’s got some interesting comments hidden indie these screencasts. be sure to look for hidden gems. ## The Episodes 1. [Episode 48](http://jamesshore.com/Blog/Lets-Play/Episode-48.html) – where James mostly shows me around the current spike he’s done so far, and we being to write the first test. 2. [Episode 49](http://jamesshore.com/Blog/Lets-Play/Episode-49.html) – where we try to write the first test for the new UI. This is really us finding the “pattern” in which to write the real unit test, and make it somewhat readable. We then somehow fail to make it pass. 3. [Episode 50](http://jamesshore.com/Blog/Lets-Play/Episode-50.html) – where we try to figure out why our test isn’t really working and make it work, but it’s still an integration style UI test 4. [Episode 51](http://jamesshore.com/Blog/Lets-Play/Episode-51.html)\-  where we refactor the test into a somewhat workable unit test (removing UI related parts that are not needed) 5. [Episode 52](http://jamesshore.com/Blog/Lets-Play/Episode-52.html) – where get the production code working for real. - [#book](https://osherove.com/blog/tag/book) ## More in video [All posts in video](https://osherove.com/blog/category/video) - Jul 8, 2011 ### [Video: Team Leadership in the Age of Agile](https://osherove.com/blog/2011/7/8/video-team-leadership-in-the-age-of-agile.html) - Jun 18, 2011 ### [Video: The 3 amigos at NDC2011](https://osherove.com/blog/2011/6/18/video-the-3-amigos-at-ndc2011.html) --- title: "How to: Move your blog off of weblogs.asp.net" url: "https://osherove.com/blog/2010/11/18/how-to-move-your-blog-off-of-weblogsaspnet.md" canonical: "https://osherove.com/blog/2010/11/18/how-to-move-your-blog-off-of-weblogsaspnet.html" published: "2010-11-18T09:45:07" updated: "2010-11-18T09:45:07" tags: [] author: "Roy Osherove" description: "My blog has finally moved to /blog Thank you DotNetWeblogs and ScottWater for creating the dotnetweblogs.com site to begin with. It used to be a great community site, which I was proud to be part of. Why? Thank you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to: Move your blog off of weblogs.asp.net By Roy Osherove November 18, 2010 **Historical article** · Originally published November 18, 2010; technical details may be outdated. **My blog has finally moved to [/blog](https://osherove.com/blog)** **Thank you** DotNetWeblogs and ScottWater for creating the _dotnetweblogs.com_ site to begin with. It used to be a great community site, which I was proud to be part of. - **Why?** _Thank you Microsoft_ for abandoning it and leaving its users hopelessly stuck unable to move to other blog platforms. Today it is ugly, unmaintained, and 7 versions back in the CommunityServer version. This horse is almost as dead as live spaces, only Microsoft isn’t planning on reincarnating it into wordpress any time soon. - **What’s the new RSS feed for the new blog?** It’s the same. you don’t have to change anything, since I’m using FeedBurner for the feed. It’s still [http://feeds.feedburner.com/Iserializable](http://feeds.feedburner.com/Iserializable) - **I want to move my blog out of this site as well!** We’ve released the tool that has exported my project as an Open Source tool over on CodePlex: [http://blogmigrator.codeplex.com/](http://blogmigrator.codeplex.com/) - **Will this work for other CommunityServer based sites?** _(such as blogs.microsoft.co.il , blogs.msdn.com ?)_ It should, since the tool is based on XML-RPC. It also supports SquareSpace and WordPress, so you should be able to: - Move your blog from WordPress to Squarespace - Move your blog from WordPress to CommunityServer - Move your blog from Squarespace to WordPress - Move your blog from SquareSpace to CommunityServer - Move your blog from CommunityServer to Squarespace - Move your blog from CommunityServer to WordPress --- title: "Free Webinar: Be a legacy code unit test ninja with Typemock Isolator" url: "https://osherove.com/blog/2010/11/18/free-webinar-be-legacy-code-unit-test-ninja-with-typemock-is.md" canonical: "https://osherove.com/blog/2010/11/18/free-webinar-be-legacy-code-unit-test-ninja-with-typemock-is.html" published: "2010-11-18T09:42:52" updated: "2010-11-18T09:42:52" tags: [] author: "Roy Osherove" description: "On Tuesday next week, I’ll be hosting a free webinar on using Typemock Isolator to write unit tests for some horribly untestable legacy code. (I originally wanted to call it “Can you Isolation framework do this?”) Roy…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free Webinar: Be a legacy code unit test ninja with Typemock Isolator By Roy Osherove November 18, 2010 **Historical article** · Originally published November 18, 2010; technical details may be outdated. On Tuesday next week, [I’ll be hosting a free webinar](https://www2.gotomeeting.com/register/568863971) on using Typemock Isolator to write unit tests for some horribly untestable legacy code. _(I originally wanted to call it “Can you Isolation framework do this?”)_ > Roy will walk you through writing unit tests for one of the most untestable code bases he could find in the .net open source world - BlogEngine.NET. > > > A successful blogging engine, BlogEngine.NET lacks some unit tests, and together with Roy, you'll dive deep into effective techniques to add tests to such code, assuming you cannot change it. > > Learn how to use Typemock Isolator to: > • Fake nonpublic static methods > • Fake singletons > • Select the level at which to fake something > • And much more… > > > **When: Tuesday, November 23, 2010 3:00 PM - 4:00 PM (GMT+2)** --- title: "Bounty: 500$ is you can convert my blog to squarespace" url: "https://osherove.com/blog/2010/10/26/bounty-500-is-you-can-convert-my-blog-to-squarespace.md" canonical: "https://osherove.com/blog/2010/10/26/bounty-500-is-you-can-convert-my-blog-to-squarespace.html" published: "2010-10-26T06:24:38" updated: "2010-10-26T06:24:38" tags: [] author: "Roy Osherove" description: "update: someone has taken the challenge and is now working on the solution. I gave up trying to relocate my community server blog to a squarespace site on my own – the software to do this properly just does not exist.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Bounty: 500$ is you can convert my blog to squarespace By Roy Osherove October 26, 2010 **Historical article** · Originally published October 26, 2010; technical details may be outdated. update: someone has taken the challenge and is now working on the solution. I gave up trying to relocate my community server blog to a squarespace site on my own – the software to do this properly just does not exist. so here’s a test: I hereby offer the following **bounty** : **500 USD** for the following software: \- will convert the BlogML format produced by Community Server into one of the formats accepted by Squarespace Blog Import (Blogger, MovableType  or TypePad) \- will give me a simple form that allows me to replace the text in al my EXISTING community server blog posts to text of my choosing /or redirect to the new blog on squarespace I will only pay this AFTER I see this works, but I’m willing to i give half upfront if I know you and trust you. Once this works for me I will also publish this software for free use by anyone interested to move out of CommunityServer. Interested? [Contact me.](https://osherove.com/request-more-info/) Only the FIRST to accomplish this gets the money. --- title: "Join me for a live webinar on unit testing with Isolator++ this thursday" url: "https://osherove.com/blog/2010/10/18/join-me-for-a-live-webinar-on-unit-testing-with-isolator-thi.md" canonical: "https://osherove.com/blog/2010/10/18/join-me-for-a-live-webinar-on-unit-testing-with-isolator-thi.html" published: "2010-10-18T08:19:45" updated: "2010-10-18T08:19:45" tags: ["Typemock", "Unit Testing"] author: "Roy Osherove" description: "In three days, this Thursday , I’ll be giving a half hour online webinar on our latest product, Isolator++ and some usage patterns with it on C++ code. I might even do a little song in honor of C++ – still need to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Join me for a live webinar on unit testing with Isolator++ this thursday By Roy Osherove October 18, 2010 In [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 18, 2010; technical details may be outdated. In three days, [this Thursday](https://www2.gotomeeting.com/register/973812899), I’ll be giving a half hour online webinar on our [latest product, Isolator++](http://www.typemock.com/isolatorpp-product-page) and some usage patterns with it on C++ code. I might even do a little song in honor of C++ – still need to figure out what to base it on – ideas are welcome! ![](https://osherove.com/img/wb/15fd8519_www.typemock.com_media_images_landing_page_isolator_logo.png) **Who should attend the webinar?** - C++ developers working on the windows platform - Devs who love GoogleMock and think it’s the greatest thing since fake bread. - Devs who tried unit testing, but hate every minute of it - Devs who are afraid to try unit testing in C++ **What will be covered** - The basic API design principles of Isolator++ (from AAA to recursive fakes, loose fakes, sticky behavior etc..) - What can Isolator++ do that others can’t? - Code examples using Google Test framework and Isolator++, to test nasty untestable C++ code - Possibly a short song, suitable for the occasion, performed live. **When?** Thursday, October 21, 2010 3:00 PM - 4:00 PM IST **Oh, I almost forgot!** In honor of the first release of Isolator++, we’re giving away **a free Isolator++ license to all webinar attendees** . [To attend the webinar, you can register here.](https://www2.gotomeeting.com/register/973812899) ## More in Typemock [All posts in Typemock](https://osherove.com/blog/category/typemock) - Dec 30, 2010 ### [A Farewell to Typemock](https://osherove.com/blog/2010/12/30/a-farewell-to-typemock.html) - Jul 4, 2010 ### [new Test Lint Beta – with command line runner](https://osherove.com/blog/2010/7/4/new-test-lint-beta-with-command-line-runner.html) - May 9, 2010 ### [Two Cool Typemock Contests](https://osherove.com/blog/2010/5/9/two-cool-typemock-contests.html) --- title: "What’s coming in Test Lint 1.5" url: "https://osherove.com/blog/2010/10/14/whats-coming-in-test-lint-15.md" canonical: "https://osherove.com/blog/2010/10/14/whats-coming-in-test-lint-15.html" published: "2010-10-14T12:02:41" updated: "2010-10-14T12:02:41" tags: ["Unit Testing"] author: "Roy Osherove" description: "Test Lint is an “as you type” parser that detects common readability, maintainability and trust anti-patterns in your unit tests. the addin for VS is free . there is also a command line version that you can use in your…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What’s coming in Test Lint 1.5 By Roy Osherove October 14, 2010 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 14, 2010; technical details may be outdated. [Test Lint](http://site.typemock.com/test-lint/) is an “as you type” parser that detects common readability, maintainability and trust anti-patterns in your unit tests. the addin for VS **is free**. there is also [a command line version](http://site.typemock.com/typemock-test-lint-pro) that you can use in your automated builds. Here’s a sneak preview of things to come in [Test Lint](http://site.typemock.com/test-lint/) next month ([here are the still unfinished new docs](http://docs.typemock.com/lint/##LintHelp.chm/test_lint_rule_review_referenc.htm)): - we added 3 categories for rules – **Trust, Readability, and Maintainability** We’ve added **10 new rules to Test Lint**, that detect more “advanced” yet common problematic scenarios: **New Trust Related Issues:** - Avoid hand rolled mocks or stubs that contain custom logic (hard coded values or pure logic) - We’ll try to detect when you [put production logic in your unit test](http://docs.typemock.com/lint/##LintHelp.chm/avoid_putting_production_logic.htm), and give you a hint about it - We’ll help make sure you [separate unit from integration tests](http://weblogs.asp.net/rosherove/archive/2008/05/31/unit-testing-vs-integration-testing-the-restaurant-analogy.aspx), by detecting integration tests in a project that doesn’t have the word “integration” at its subject. - Avoid Random Generation in tests: your test will keep changing on every run. **new Readability Rules:** - Avoid confusing mocks and stub variable names - Don’t create fakes in setup methods **New Maintainability rules** - Prefer factory method to create objects under test - Avoid over specification in test (calling verifyAll on mocks) **New Isolator Specific Rule** - Avoid calling “new” inside “whencalled” calls ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Nov 30, 2010 ### [2 day TDD workshop in London, UK - March 2011](https://osherove.com/blog/2010/11/30/2-day-tdd-workshop-in-london-uk-march-2011.html) - Oct 18, 2010 ### [Join me for a live webinar on unit testing with Isolator++ this thursday](https://osherove.com/blog/2010/10/18/join-me-for-a-live-webinar-on-unit-testing-with-isolator-thi.html) - Oct 14, 2010 ### [Announcing Isolator++, and closing a TDD circle](https://osherove.com/blog/2010/10/14/announcing-isolator-and-closing-a-tdd-circle.html) - Sep 29, 2010 ### [A customer switches to MOQ – and I’m happy](https://osherove.com/blog/2010/9/29/a-customer-switches-to-moq-and-im-happy.html) --- title: "Announcing Isolator++, and closing a TDD circle" url: "https://osherove.com/blog/2010/10/14/announcing-isolator-and-closing-a-tdd-circle.md" canonical: "https://osherove.com/blog/2010/10/14/announcing-isolator-and-closing-a-tdd-circle.html" published: "2010-10-14T10:16:54" updated: "2010-10-14T10:16:54" tags: ["Unit Testing"] author: "Roy Osherove" description: "Last week I closed one little circle in my consulting life: The company I work at released Isolator++ – a truly powerful, and yet simple, Isolation framework for C++, that makes unit testing in C++ feel as easy as unit…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Announcing Isolator++, and closing a TDD circle By Roy Osherove October 14, 2010 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 14, 2010; technical details may be outdated. Last week I closed one little circle in my consulting life: The company I work at [released Isolator++](http://www.typemock.com/isolatorpp-product-page) – a truly powerful, and yet simple, Isolation framework for C++, that makes unit testing in C++ feel as easy as unit testing in .NET or Java.  [![](https://osherove.com/img/wb/15fd8519_www.typemock.com_media_images_landing_page_isolator_logo.png)](http://www.typemock.com/isolatorpp-product-page) It can Isolate statics, non virtuals, future objects and lots of other cool things (the private beta we have also fakes OUT and REF parameters. if you’re interested ping me..) It closed a circle for me because a few years ago, I was consulting for a large company in Israel, and the person who brought me into that company was Typemock’s Founder, Eli. Together we tried to help the “masses” learn Test Driven Development and unit testing in 3 languages. Java, C++ and .NET. Java went great, .NET a little less great, and C++ – failure. Back then I wished for a tool that could have done in C++ what Isolator++ does now – surpass design issues that lead to untestable code, and help people learn the value of unit tests, without boggling them down with design problems. I wanted them to learn design in separation of unit testing, but there was no way around it. Most people (in C++) just gave up on the huge learning and refactoring work that needed to be done and dropped unit testing and TDD completely. Last week that circle closed, as I helped drive the release of a tool that would solve this problem for me, and for them, the next time we enter a C++ team that wants to learn TDD and unit testing. Now I’ll have a clear learning schedule in mind: first, learn unit testing, and get some benefits, to get some management buy in to your efforts. then learn TDD, and through that learn better design techniques. Getting all three of these together at the same time is just too damn time consuming for most companies. **If you work at a windows C++ shop, or you know people who do, and want to give unit testing a try, I heartily recommend you** [**give Isolator++ a try**](http://www.typemock.com/isolatorpp-product-page)**.** ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Oct 18, 2010 ### [Join me for a live webinar on unit testing with Isolator++ this thursday](https://osherove.com/blog/2010/10/18/join-me-for-a-live-webinar-on-unit-testing-with-isolator-thi.html) - Oct 14, 2010 ### [What’s coming in Test Lint 1.5](https://osherove.com/blog/2010/10/14/whats-coming-in-test-lint-15.html) - Sep 29, 2010 ### [A customer switches to MOQ – and I’m happy](https://osherove.com/blog/2010/9/29/a-customer-switches-to-moq-and-im-happy.html) - Sep 6, 2010 ### [Unit Testing in C++ is harder than..](https://osherove.com/blog/2010/9/6/unit-testing-in-c-is-harder-than.html) --- title: "A customer switches to MOQ – and I’m happy" url: "https://osherove.com/blog/2010/9/29/a-customer-switches-to-moq-and-im-happy.md" canonical: "https://osherove.com/blog/2010/9/29/a-customer-switches-to-moq-and-im-happy.html" published: "2010-09-29T08:54:12" updated: "2010-09-29T08:54:12" tags: ["Unit Testing"] author: "Roy Osherove" description: "a few days ago, we got into an interesting email conversation with a person in a large company, who had purchased isolator a while ago. Our customer lieason sent me this person’s recent response to the “how are things…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A customer switches to MOQ – and I’m happy By Roy Osherove September 29, 2010 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 29, 2010; technical details may be outdated. a few days ago, we got into an interesting email conversation with a person in a large company, who had purchased isolator a while ago. Our customer lieason sent me this person’s recent response to the “how are things going with Isolator?” email we sent them. He expressed concern because the customer had suggested they are looking into switching away from Isolator, towards using MOQ. First, here’s the email: > “Well, I am the one who introduced TypeMock at \[company\] so I suppose that is a natural delegation. > We started out with an organisation that had never done any kind of test driven development and had never done any work with dependency injection. We are gradually porting a lagacy vb6 application to .NET. We went with TypeMock Isolator so that we did not have to adjust the way we wanted to design and code and it went really well in the beginning. We also decided to work behaviour driven with a MVVM pattern in WPF. > > However, we are about a fifth thru the migration process and have now passed 3000 tests. Those take about ten minutes to run on our build server. 15 000 tests would take close to an hour to run. Hey, that can't be right! So we investigated the reasons why our tests take so long to run and apart from the integration tests (yapp, they will eventually be set aside) the single most costly component seems to be having TypeMock Isolator enabled. Not necessarily running tests using TypeMock Isolator, but having it enabled. Due to the Profiling API I assume. I have sent you guys timing data previously indicating the big problem but I'll give you another example. A newly started project with 175 tests using Moq and StructureMap as dependency injection framework. No TypeMock Isolator whatsoever. Running the tests takes less than 8 seconds including integration tests. Enabling TypeMock Isolator it takes 17 seconds! More than 100% time increase! So that is a really big issue. > > Apart from that we have had issues with prior versions where the Resharper runner stalled when running tests residing in different assemblies. We have an ongoing issue with tests not running after having created a first WPF-control in a test. For that we have a hack where we catch an exception in a dummy test (if I remember correctly) when creating the first WPF control. Following creation is no issue. I have tried to reconstruct it in stand alone environment but have failed at that (do not really have time to investigate further I'm afraid). > > We are also under the impression that mocking without dependency injection works pretty well in a small scale, but as the code develops it gets harder and harder to maintain the tests. **Partly because designing that way gives too much room to just add responsibilities to classes without having to rethink what restructuring/refactoring really should be done.** Or put another way, it does not push my team mates in a test first direction. And I do not like that at all! > > > Well, as you gather we are moving on. Moq and StructureMap it is for now using dependency injection. It works really well. But then again we are still in the initial phase having a rather small code base. > > If there is anything I could help you out with I will do my best to assist you. But time is kind of restricted in those areas here at my customer, and at home I am way to busy developing. So it might not be an instant response. >   Kind regards” Wow.  I don’t think it gets any better than that when as a company we are looking for input from a real life customer. Yeah – we need to deal with perf issues, and minor bugs, but I’ve highlighted the best part of this email for me: “**Partly because designing that way gives too much room to just add responsibilities to classes without having to rethink what restructuring/refactoring really should be done.** “ as far as I’m concerned, this is a success story for typemock (even though we have some things to fix). the reason? we solved the initial problem for that large client – become agile in the first place and learning to unit test – without needing to learn design first. they have successfully been [able to split, delay and prioritize their learning](http://weblogs.asp.net/rosherove/archive/2008/09/26/unit-testing-decoupled-from-design-adoption.aspx), and still become better and more agile. because they were able to separate the task of unit testing from the task of learning design they were able to actually get things done and show results in a meaningful time, so the effort to drive agility was showing results quicker. if they had done them both at the same time chances for success would have been much lower, and time would be much longer. as it stands, they went from zero agile to unit testing and TDD, and now they are finally at a stage where the design is starting to be their main concern. unit testing is just another tool in their belt. I feel that our product has enabled that company to achieve this stage, and may no longer ne needed for them. What they need now are tools that teach design, not tools that enable unit testing. and MOQ (or FakeItEasy, or RhinoMocks) are great for such a task. They’ve outgrown us – and it’s sad to see them leave – but I’m happy they got to that stage – that we were so successful that we’ve made ourselves redundant. **That is pure awesome. this is why I come to work every day.** congratulations! I promise we’ll work more on the perf issues mentioned so that our next customers will have an easier time. **interesting question** – should we have a free version of isolator without the “power features” so that customers at least won’t have to learn a new syntax when they want to start focusing on design learning? ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Oct 14, 2010 ### [What’s coming in Test Lint 1.5](https://osherove.com/blog/2010/10/14/whats-coming-in-test-lint-15.html) - Oct 14, 2010 ### [Announcing Isolator++, and closing a TDD circle](https://osherove.com/blog/2010/10/14/announcing-isolator-and-closing-a-tdd-circle.html) - Sep 6, 2010 ### [Unit Testing in C++ is harder than..](https://osherove.com/blog/2010/9/6/unit-testing-in-c-is-harder-than.html) - Aug 14, 2010 ### [Two different ways to create bad logic in unit tests](https://osherove.com/blog/2010/8/14/two-different-ways-to-create-bad-logic-in-unit-tests.html) --- title: "Why StackExchange will eventually fail – Control-Freak-ism" url: "https://osherove.com/blog/2010/9/24/why-stackexchange-will-eventually-fail-control-freak-ism.md" canonical: "https://osherove.com/blog/2010/9/24/why-stackexchange-will-eventually-fail-control-freak-ism.html" published: "2010-09-24T08:21:56" updated: "2010-09-24T08:21:56" tags: [] author: "Roy Osherove" description: "I think the stack overflow folks have finally started hurting SO more than they help. I used to really like the idea of StackOverFlow – a great platform to ask some great questions and get good answers. And the badges…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why StackExchange will eventually fail – Control-Freak-ism By Roy Osherove September 24, 2010 **Historical article** · Originally published September 24, 2010; technical details may be outdated. I think the stack overflow folks have finally started hurting SO more than they help. I used to really like the idea of [StackOverFlow](http://stackoverflow.com/) – a great platform to ask some great questions and get good answers. And the badges certainly add the needed pepper into the mix. At some point, stackoverflow started getting a bit ahead of itself – suddenly, if you had enough rank – you could start editing other people’s posts. Seriously – you could go in and change the wording, the casing – whatever you wanted. Execuse my french – but what the fuck are all these “enlightened” people doing editing my answers? If I wanted people editing my words, looking down at me, and deciding to change stuff, I’d start a wiki. as is, my answers are my own, and they reflect my mood, and my typos. and if they want me ot fix them they should ask me. **But that’s not why it will fail** Stackoverflow gave the people that gave it their soul something very precious to them – control. control freaks are all around us – I’m one probably – but therein lies a bigger problem – the bigger problem of stackoverflow is that being a controlfreak is part of who the owners are as well. it makes sense – one will attract the same kind. so control freaks as they are – they made a great platform and started selling it to create mini sites for questions. But they didn’t like it – they decided that “for the good of the community” it will be better if people couldn’t “buy” their own stack overflow sites, but instead [the community would have to vote on them](http://area51.stackexchange.com/faq) – controlfreak move #1 – WE decide for YOU that OTHERS will decide for YOU if your idea is good or not. OK – fair enough – what’s done is done. [so up goes a suggestion for a unit testing site (dev testing).](http://area51.stackexchange.com/proposals/8494/unit-testing) It’s supposed to go through all the confirmation channels, get a specific number of supporters to get to being “live” and then joel and jeff will make it into a real site. right. only the controlfreak nature won’t let go. the unit testing site is ALMOST up to being a legit site, with people from all over the community wanting to be part of it. after following all the rules that joel and jeff put up themselves, they suddenly drop this bomb - “[hey – why don’t we merge this unit testing thing with another site – it will make more sense that way!”](http://meta.stackoverflow.com/questions/65439/should-developer-testing-be-folded-into-a-more-general-programmers-site/65452#65452) **Let it go!** you wanted the community to decide? [it has decided!](http://area51.stackexchange.com/proposals/8494/developer-testing-unit-testing-and-more) stop stirring the pot and start following the rules that you yourself have set and broken twice before. What’s the point of creating a site where the community can choose if the community can only choose when it fits the hearts and minds of the site’s creators? Joel and Jeff – you’re smart – but you can’t let go – so stop taking control and start losing it already!  You’re fucking your own shit up right now. --- title: "2010 Poll: Which Isolation Framework do you use in .NET?" url: "https://osherove.com/blog/2010/9/10/2010-poll-which-isolation-framework-do-you-use-in-net.md" canonical: "https://osherove.com/blog/2010/9/10/2010-poll-which-isolation-framework-do-you-use-in-net.html" published: "2010-09-10T13:19:56" updated: "2010-09-10T13:19:56" tags: [] author: "Roy Osherove" description: "Here’s the yearly poll, answer truthfully now… (if you can't see it: click here" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 2010 Poll: Which Isolation Framework do you use in .NET? By Roy Osherove September 10, 2010 **Historical article** · Originally published September 10, 2010; technical details may be outdated. Here’s the yearly poll, answer truthfully now… (if you can't see it: [click here](http://poll.fm/28arw) --- title: "Unit Testing in C++ is harder than.." url: "https://osherove.com/blog/2010/9/6/unit-testing-in-c-is-harder-than.md" canonical: "https://osherove.com/blog/2010/9/6/unit-testing-in-c-is-harder-than.html" published: "2010-09-06T07:45:46" updated: "2010-09-06T07:45:46" tags: ["Unit Testing"] author: "Roy Osherove" description: "Unit Testing in C++ – it’s even harder than Inidian Pole Gymnastics Video unavailable (the original video has been removed from YouTube). I mean seriously - CPPUnit is the devil. What kind of test framework do you use…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing in C++ is harder than.. By Roy Osherove September 6, 2010 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 6, 2010; technical details may be outdated. Unit Testing in C++ – it’s even harder than Inidian Pole Gymnastics Video unavailable (the original video has been removed from YouTube). I mean seriously - CPPUnit is the devil. What kind of test framework do you use in C++? ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Oct 14, 2010 ### [Announcing Isolator++, and closing a TDD circle](https://osherove.com/blog/2010/10/14/announcing-isolator-and-closing-a-tdd-circle.html) - Sep 29, 2010 ### [A customer switches to MOQ – and I’m happy](https://osherove.com/blog/2010/9/29/a-customer-switches-to-moq-and-im-happy.html) - Aug 14, 2010 ### [Two different ways to create bad logic in unit tests](https://osherove.com/blog/2010/8/14/two-different-ways-to-create-bad-logic-in-unit-tests.html) - Jul 23, 2010 ### [Notes from a TDD masterclass](https://osherove.com/blog/2010/7/23/notes-from-a-tdd-masterclass.html) --- title: "Two different ways to create bad logic in unit tests" url: "https://osherove.com/blog/2010/8/14/two-different-ways-to-create-bad-logic-in-unit-tests.md" canonical: "https://osherove.com/blog/2010/8/14/two-different-ways-to-create-bad-logic-in-unit-tests.html" published: "2010-08-14T04:41:53" updated: "2010-08-14T04:41:53" tags: ["Unit Testing"] author: "Roy Osherove" description: "we’re adding more rules to Test Lint, these days, and one of them is called “Production Logic in Test”. It is quite different, and I think even more dangerous than the existing rule “Logic in Test” – because it talks…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Two different ways to create bad logic in unit tests By Roy Osherove August 14, 2010 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published August 14, 2010; technical details may be outdated. we’re adding more rules to Test Lint, these days, and one of them is called “Production Logic in Test”. It is quite different, and I think even more dangerous than the existing rule “Logic in Test” – because it talks about reproducing logic from within production code inside your unit tests. What might that look like? here’s a simple example: ``` 1 [TestMethod] 2 public void SomeTest() 3 { 4 string user = "user"; 5 ComponentUnderTest cut = new ComponentUnderTest(); 6 string result = cut.SayHello(user); 7 8 string expected = "hello " + user; 9 Assert.AreEqual(expected,result); 10 11 } ``` line 8 contains logic that is potentially reproducing logic under test. 99% certainty that the concatenation of the two strings might appear exactly like it does in the test, inside the production code. **so what’s the problem?** 1. If the logic in production code contains a bug, and we are recreating the same logic in the test, we are essentially reproducing the bug as well – we are in fact _expecting_ that bug to occur, so our test will pass _because_ the bug is there. 2. even if we are not reproducing the bug from production, we might have our own bug in that piece of logic. Our test might fail, but because there is a bug in the expected test value – which we will not try to look for since we assume tests are correct (this would not be true if we were writing this test first!) **How is this rule different than just _regular_ logic in test?** usual logic in tests usually tries to test several outcomes in the same test, or verify different things based on various conditions. a loop in a test will loop and may assert on several things, while an _IF_ statement may exist so we only check something based on certain conditions. in fact, logic in unit tests can appear in several places, and create the same problem as stated i #2 above: - inside a unit test - to avoid this, try to test the smallest thing possible that proves your point. for example, do you _really_ need to loop over 10 rows in a memory table, or maybe just one row will do to prove something works or fails? - inside a helper method (which also affects the readability of the test that calls that helper method) - usually done for the same of _reuse_ – this anti pattern in tests can both create bugs, and lack of readability or ma_gic in the  calling tests_. It’s magic if you have to ask yourself as you read the test questions such as “so where is my assert?” or “why am I sending in this string?” - inside manual mocks and stubs (which also affects the readability of the test that calls that helper method) - usually done for lack of knowledge that this is an anti pattern, people will create mocks and stubs that contains logic that might either reproduce some of the production code, or might make assumptions about what calling unit tests will send as parameters. - this leads to lack of readability in the test - magic strings or numbers in a test - weird bugs - many times that logic exists to accomodat ethe different needs of no more than a couple of unit tests that need different behavior from a stub - it could easily be avoided by : - creating stubs with hardcoded known behavior that is names in the type name of the stub, per each need of a specific unit test - having the stubs take “orders” from the tests on how to behave – never to assume anything. for example. ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Sep 29, 2010 ### [A customer switches to MOQ – and I’m happy](https://osherove.com/blog/2010/9/29/a-customer-switches-to-moq-and-im-happy.html) - Sep 6, 2010 ### [Unit Testing in C++ is harder than..](https://osherove.com/blog/2010/9/6/unit-testing-in-c-is-harder-than.html) - Jul 23, 2010 ### [Notes from a TDD masterclass](https://osherove.com/blog/2010/7/23/notes-from-a-tdd-masterclass.html) - Mar 24, 2010 ### [Introducing QuickUnit](https://osherove.com/blog/2010/3/24/introducing-quickunit.html) --- title: "Case Study: SmartInspect in the real world" url: "https://osherove.com/blog/2010/8/2/case-study-smartinspect-in-the-real-world.md" canonical: "https://osherove.com/blog/2010/8/2/case-study-smartinspect-in-the-real-world.html" published: "2010-08-02T15:02:31" updated: "2010-08-02T15:02:31" tags: ["Cool Tools", "review"] author: "Roy Osherove" description: "as part of the last case study , I’ve also implemented another tool in our real world project – SmartInspect : a tracing tool. The developer had also given us this tool free of charge to do a case study with, which I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Case Study: SmartInspect in the real world By Roy Osherove August 2, 2010 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [review](https://osherove.com/blog/category/review) **Historical article** · Originally published August 2, 2010; technical details may be outdated. as part of [the last case study](http://weblogs.asp.net/rosherove/archive/2010/08/02/case-study-cryptolicensing-cryptoobfuscator-in-the-real-world.aspx), I’ve also implemented another tool [in our real world project](http://typemock.com/lintpro) – [SmartInspect](http://www.gurock.com/smartinspect/): a tracing tool. The developer had also given us this tool free of charge to do a case study with, which I had promised to publish on my blog (good or bad!). As a startup company we’re trying to conserve cash, so this is a great tradeoff – we need good tools, and we can pay with publicity if they are great! (hear that, JetBrains?) Amazing tidbit: [I reviewed SmartInspect last time during 2006](http://weblogs.asp.net/rosherove/archive/2006/05/15/SmartInspectReview.aspx), and it’s come a long way since then. - **EASY**: it was relatively easy to get going with [SmartInspect](http://www.gurock.com/smartinspect/). The object model is quite nice, and I really liked the fact they have a special api for various common types (LogImage, LogException etc..). each type gets logs with its unique properties, and is visible in the very nicely done UI trace.: ![SmartInspect Console](https://osherove.com/img/wb/1d4dd40c_www.gurock.com_images_smartinspect_tour_console_small.png) The UI allows creating custom filters in your own tabs and panes, and is pretty powerful, but I’ve foudn its usability factor to be less than adequate. It needs more usability work, and I haven’t had time to contact their support to let them know (sorry about making you find out this way!). It also has some bugs (some “errors” are not shown even if you filter to see all error types..) but overall it has been very good. The way we used it, is by using PostSharp aspects that weave custom tracing using SmartInspect in the the begin and end of each method. Otherwise you’d need to do it yourself. and I hate wasting my time that way. SmartInspect and PostSharp go together as nicely as burger and fris. Don’t leave home without them. - **Nice feature set**. It does. It did everything I needed it to do, including support for “rolling” log files, that get recycled after a specific size, allowing encryption, and more. my favorite part of **runtime view** of logs as they happen inside the UI console. no need to look at the files after something happens. you can see it scroll by in real time.  it even supports logging from multiple thread and processes, and then seeing the log stack for each thread and process separately. I have not needed that feature yet, but future plans will force me to use it. **Summary:** I have not regretted choosing this tool, and plan to continue using it it other projects as well. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 18, 2012 ### [\[Cool Tool\] Chocolatey for windows is what you will not live without in two years](https://osherove.com/blog/2012/6/18/cool-tool-chocolatey-for-windows-is-what-you-will-not-live-w.html) - Dec 14, 2011 ### [\[Cool Tool\] Checking Out VsVim](https://osherove.com/blog/2011/12/14/cool-tool-checking-out-vsvim.html) - Aug 2, 2010 ### [Case Study: CryptoLicensing + CryptoObfuscator in the real world](https://osherove.com/blog/2010/8/2/case-study-cryptolicensing-cryptoobfuscator-in-the-real-worl.html) - Apr 9, 2010 ### [Things to install on a new machine – revisited](https://osherove.com/blog/2010/4/9/things-to-install-on-a-new-machine-revisited.html) --- title: "Case Study: CryptoLicensing + CryptoObfuscator in the real world" url: "https://osherove.com/blog/2010/8/2/case-study-cryptolicensing-cryptoobfuscator-in-the-real-worl.md" canonical: "https://osherove.com/blog/2010/8/2/case-study-cryptolicensing-cryptoobfuscator-in-the-real-worl.html" published: "2010-08-02T14:45:48" updated: "2010-08-02T14:45:48" tags: ["Cool Tools", "review"] author: "Roy Osherove" description: "I’ve reviewed CryptoLicensing last year , and in the past few months, I’ve had the chance of implementing both CryptoLicensing and CryptoObfuscator for .NET in a real commercial project . the developer had given us free…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Case Study: CryptoLicensing + CryptoObfuscator in the real world By Roy Osherove August 2, 2010 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [review](https://osherove.com/blog/category/review) **Historical article** · Originally published August 2, 2010; technical details may be outdated. I’ve [reviewed CryptoLicensing last year](http://weblogs.asp.net/rosherove/archive/2009/06/02/review-cryptolicensing-for-net.aspx), and in the past few months, I’ve had the chance of implementing both [CryptoLicensing](http://www.ssware.com/cryptolicensing/cryptolicensing_net.htm) and [CryptoObfuscator](http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm) for .NET [in a real commercial project](http://typemock.com/lintpro). the developer had given us free licenses to do a case study with it, and the results **are very positive** so far: [**Crypto Licensing:**](http://www.ssware.com/cryptolicensing/cryptolicensing_net.htm) - **EASY**. Creating a licensing solution, including a key generation solution for CRM backend, checking for supported features and amount of runs for the program, and other very common tasks was extremely easy. it takes less than 10 minutes to integrate rudimentary licensing into a new application when you’ve done it before. If you’ve never done it it take about 30 minutes. - **SIMPLE**. The code being using with the licensing is pretty simple and readable, and the object model is easy to work with. It has some interesting APIs that might confuse at first (differentiation between license keys and serials was a problem for me) but the documentation has been fixed to make things a bit more understandable. - **SUPPORT**. the UI for the generator built in is not very intuitive. But it was MUCH less intuitive when I started working with it. During the past few months it has changes in many ways to alleviate various usability problems I’ve noticed in it, in many ways due to the quick response from the developer. - **Nice feature set**. The licensing solution supports most very common cases in a very easy manner, and I pretty much could do whatever I wanted, except for one thing which I really missed – the ability to prevent multiple instances of the same application with same key in the local network (like resharper’s behavior). I’m told this is coming, but it could have come sooner. Other than that it supports activation remotely, trisal licensing, counting of runs, total time used, net time used, time since install and many other more advanced features. Pretty cool for such a small footprint. [**Crypto Obfuscator:**](http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm) - **RELATIVELY EASY**. It was quite easy to get it to work with one assembly, but once we got into multiple assemblies with dependencies we’ve hit some bugs. Those were fixed very quickly and it seems to work great with a very diver solution of dependent projects. - **SIMPLE**: making it work as part of the build was very simple indeed. changing an option on it is also simple. the way everything should be in software. - **SUPPORT**: just as good (same developer). I had various usability problems with it that were fixed quickly. - **Nice feature set**: it has everything I needed (including ability to prevent Reflector from seeing various bits of source code). **Summary**: _I’m really happy I chose these tools_. They have, still, some usability issues. but they work great, and they saved us some real time when we needed to focus on actual business value instead of dealing with crap like this. That’s about as positive as it gets in component world – get a component so it can get out of your way when you develop the really important stuff. As a result we’re now looking into using Crypto licensing for MFC for our Isolator for C++ product line. I’ll let you know how that goes! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Dec 14, 2011 ### [\[Cool Tool\] Checking Out VsVim](https://osherove.com/blog/2011/12/14/cool-tool-checking-out-vsvim.html) - Aug 2, 2010 ### [Case Study: SmartInspect in the real world](https://osherove.com/blog/2010/8/2/case-study-smartinspect-in-the-real-world.html) - Apr 9, 2010 ### [Things to install on a new machine – revisited](https://osherove.com/blog/2010/4/9/things-to-install-on-a-new-machine-revisited.html) - Jun 6, 2009 ### [web related graphics and animation generators online](https://osherove.com/blog/2009/6/6/web-related-graphics-and-animation-generators-online.html) --- title: "Notes from a TDD masterclass" url: "https://osherove.com/blog/2010/7/23/notes-from-a-tdd-masterclass.md" canonical: "https://osherove.com/blog/2010/7/23/notes-from-a-tdd-masterclass.html" published: "2010-07-23T21:39:46" updated: "2010-07-23T21:39:46" tags: ["Unit Testing"] author: "Roy Osherove" description: "another TDD masterclass is done , and this time it was Munich! Lovely people, and smart programmers :) made a few changes this time – had an excersice about doing automated builds and CI, removed rhino mocks and added a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Notes from a TDD masterclass By Roy Osherove July 23, 2010 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published July 23, 2010; technical details may be outdated. [another TDD masterclass is done](https://osherove.com/training), and this time it was Munich! Lovely people, and smart programmers :) made a few changes this time – had an excersice about doing automated builds and CI, removed rhino mocks and added a bunch of other frameworks (FakeItEasy, JustMock and others) and various other small things. at the last day of the course, I asked each person on the most important thing they learned, and something that surprised them during the course. here’s the list we made: •How to practice TDD •Isolation frameworks abilities, differences and categories •Difference between test and production code standards •Pay attention to requirements •TDD is doable, also in legacy •Simple tests •Legacy code refactoring is hard •Better unit tests •It’s not hype •Reviewing is easier than thought •Pair programming is productive •How to refactor and test legacy •Power of manual fakes •Tdd makes testable code •Tests as specs •How to write fast tests, productively with tdd •RTM tests are harder than you think •Spec and Interface based development •Code gets written differently •Incremental work, simply •Lots of different ways to do the same concept •How to handle statics •Different people are different •Brownfield is tough to tdd ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Sep 6, 2010 ### [Unit Testing in C++ is harder than..](https://osherove.com/blog/2010/9/6/unit-testing-in-c-is-harder-than.html) - Aug 14, 2010 ### [Two different ways to create bad logic in unit tests](https://osherove.com/blog/2010/8/14/two-different-ways-to-create-bad-logic-in-unit-tests.html) - Mar 24, 2010 ### [Introducing QuickUnit](https://osherove.com/blog/2010/3/24/introducing-quickunit.html) - Mar 19, 2010 ### [Code excavations, wishful invocations, perimeters and domain specific unit test frameworks](https://osherove.com/blog/2010/3/19/code-excavations-wishful-invocations-perimeters-and-domain-s.html) --- title: "new Test Lint Beta – with command line runner" url: "https://osherove.com/blog/2010/7/4/new-test-lint-beta-with-command-line-runner.md" canonical: "https://osherove.com/blog/2010/7/4/new-test-lint-beta-with-command-line-runner.html" published: "2010-07-04T07:30:56" updated: "2010-07-04T07:30:56" tags: ["Typemock"] author: "Roy Osherove" description: "There is a new version of Test Lint – a test review tool for visual studio. It will check your unit tests for common problems and teach you on making your tests more readable, maintainable and trustworthy. The addin is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # new Test Lint Beta – with command line runner By Roy Osherove July 4, 2010 In [Typemock](https://osherove.com/blog/category/typemock) **Historical article** · Originally published July 4, 2010; technical details may be outdated. There is a [new version of Test Lint](http://typemock.com/lint) – a test review tool for visual studio. It will check your unit tests for common problems and teach you on making your tests more readable, maintainable and trustworthy. The addin is still free and has a new rule (about using DateTime). but it also comes with a command line runner, that allows you to run test lint as part of your automated build. you just provide it with an /sln=mysln.cln parameter and go. The command line runner will **not** be free. We will be coming out with a pricing plan for it sometime this week. For now, feel free to give it a try. I’d love to hear your comments! \- Added: \*Command Line Runner\* Tool     \*\* Limited Preview (TestLintCMD.exe)     \*\* for automated builds. Trial Version allows 15 initial runs.     \*\* parameters are:     \*\* TestLintCmd.exe     \*\*            /sln="\[solution file\]"     \*\*            /license="\[optional. path to license file\]" \- Added: Test Lint will ignore projects with 'integration' in their names \- Added: new rule: DateTime.Now \- Added: link to submit a bug from within test lint popups \- Added: missing tooltip on lint icons \- Added background statistics on Test Issues \- Fixed bug: Missing asserts did not detect     X.foo().Should...()   \[fluent methods) ## More in Typemock [All posts in Typemock](https://osherove.com/blog/category/typemock) - Dec 30, 2010 ### [A Farewell to Typemock](https://osherove.com/blog/2010/12/30/a-farewell-to-typemock.html) - Oct 18, 2010 ### [Join me for a live webinar on unit testing with Isolator++ this thursday](https://osherove.com/blog/2010/10/18/join-me-for-a-live-webinar-on-unit-testing-with-isolator-thi.html) - May 9, 2010 ### [Two Cool Typemock Contests](https://osherove.com/blog/2010/5/9/two-cool-typemock-contests.html) - Apr 23, 2010 ### [First Typemock Academy - 4 days from now](https://osherove.com/blog/2010/4/23/first-typemock-academy-4-days-from-now.html) --- title: "This Week In Test - Episode 1 – Rietveld!" url: "https://osherove.com/blog/2010/6/5/this-week-in-test-episode-1-rietveld.md" canonical: "https://osherove.com/blog/2010/6/5/this-week-in-test-episode-1-rietveld.html" published: "2010-06-05T05:49:19" updated: "2010-06-05T05:49:19" tags: [".NET"] author: "Roy Osherove" description: "We’re happy to bring you the first episode of the new and revamped “This week in testing” with Roy osherove and Ariel Raunstien. The episode is 32 minutes long. You can watch it in full at our new site ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # This Week In Test - Episode 1 – Rietveld! By Roy Osherove June 5, 2010 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published June 5, 2010; technical details may be outdated. [![image](https://osherove.com/img/wb/fb0b7b04_weblogs.asp.net_blogs_rosherove_image_2F9B433C.png)](http://thisweekintest.tv/) We’re happy to bring you the first episode of the new and revamped “This week in testing” with Roy osherove and Ariel Raunstien. The episode is 32 minutes long. You can [watch it in full at our new site](http://thisweekintest.tv/). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Mar 16, 2011 ### [New User Group: Ruby Underground - Ruby and Ruby On Rails](https://osherove.com/blog/2011/3/16/new-user-group-ruby-underground-ruby-and-ruby-on-rails-1.html) - Mar 16, 2011 ### [New User Group: Ruby Underground - Ruby and Ruby On Rails](https://osherove.com/blog/2011/3/16/new-user-group-ruby-underground-ruby-and-ruby-on-rails.html) - Jun 1, 2010 ### [Video: Hardcore production debugging in .NET – Ingo Rammer](https://osherove.com/blog/2010/6/1/video-hardcore-production-debugging-in-net-ingo-rammer.html) - Jun 1, 2010 ### [Want to work at Typemock? We’re Hiring](https://osherove.com/blog/2010/6/1/want-to-work-at-typemock-were-hiring.html) --- title: "Converting MOD files to quicktime or mpeg for adobe premiere pro" url: "https://osherove.com/blog/2010/6/2/converting-mod-files-to-quicktime-or-mpeg-for-adobe-premiere.md" canonical: "https://osherove.com/blog/2010/6/2/converting-mod-files-to-quicktime-or-mpeg-for-adobe-premiere.html" published: "2010-06-02T06:26:27" updated: "2010-06-02T06:26:27" tags: ["Off Topic"] author: "Roy Osherove" description: "I’ve been Editing lots of videos lately. My company got a video camera: Canon Legria FS200. It saves the movies in a digital format – as MOD files. Unfortunately, Adobe Premiere doesn’t work with these files. I needed…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Converting MOD files to quicktime or mpeg for adobe premiere pro By Roy Osherove June 2, 2010 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 2, 2010; technical details may be outdated. I’ve been Editing lots of videos lately. My company got a video camera: Canon Legria FS200. It saves the movies in a digital format – as MOD files. Unfortunately, Adobe Premiere doesn’t work with these files. I needed software to convert MOD files to QuickTime or mpeg files. I found a good free one : It’s called [Mpeg StreamClip](http://www.squared5.com/):  It works well. and it’s pretty fast. And it’s Free. What’s not to like? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 12, 2012 ### [When they tell me I have to use MSBuild to automate our CI Process](https://osherove.com/blog/2012/12/12/when-they-tell-me-i-have-to-use-msbuild-to-automate-our-ci-p.html) - Apr 16, 2010 ### [Funny Volcanic Ash Tweets](https://osherove.com/blog/2010/4/16/funny-volcanic-ash-tweets.html) - Nov 2, 2008 ### [Cute picture of my son](https://osherove.com/blog/2008/11/2/cute-picture-of-my-son.html) --- title: "Continuous Integration with and without team system 2008" url: "https://osherove.com/videos/2010/6/1/continuous-integration-with-and-without-team-system-2008.md" canonical: "https://osherove.com/videos/2010/6/1/continuous-integration-with-and-without-team-system-2008.html" published: "2010-06-01T07:46:01" updated: "2010-06-01T07:46:01" tags: ["Howto", "TechEd"] author: "Roy Osherove" description: "this one was a loong time ago – but still has value. it’s about continous Integration, with and without team system. Embedded Flash media from the original post is no longer playable." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Continuous Integration with and without team system 2008 By Roy Osherove June 1, 2010 In [Howto](https://osherove.com/videos/category/howto), [TechEd](https://osherove.com/videos/category/teched) **Historical article** · Originally published June 1, 2010; technical details may be outdated. this one was a loong time ago – but still has value. it’s about continous Integration, with and without team system. Embedded Flash media from the original post is no longer playable. ## More in Howto [All posts in Howto](https://osherove.com/videos/category/howto) - Dec 7, 2010 ### [Be a legacy code unit test ninja with Typemock Isolator](https://osherove.com/videos/2010/12/7/be-a-legacy-code-unit-test-ninja-with-typemock-isolator.html) - Aug 24, 2009 ### [Testing Complex Logic with TDD](https://osherove.com/videos/2009/8/25/testing-complex-logic-with-tdd.html) --- title: "Video: Hardcore production debugging in .NET – Ingo Rammer" url: "https://osherove.com/blog/2010/6/1/video-hardcore-production-debugging-in-net-ingo-rammer.md" canonical: "https://osherove.com/blog/2010/6/1/video-hardcore-production-debugging-in-net-ingo-rammer.html" published: "2010-06-01T01:59:33" updated: "2010-06-01T01:59:33" tags: [".NET", "Agile"] author: "Roy Osherove" description: "I got Ingo Rammer’s permission to post this video of one of his Teched EMEA 2008 talks – it’s about hardcore production debugging, and it’s a wonderful talk. I highly recommend you watch it. Also you should consider…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: Hardcore production debugging in .NET – Ingo Rammer By Roy Osherove June 1, 2010 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published June 1, 2010; technical details may be outdated. I got Ingo Rammer’s permission to post this video of one of his Teched EMEA 2008 talks – it’s about hardcore production debugging, and it’s a wonderful talk. I highly recommend you watch it. Also you should consider getting the book [Advanced .NET Debugging](https://www.amazon.com/exec/obidos/ASIN/0321578899/iserializable-20) – it’s wonderful (though pretty advanced!) FYI, you can find many [other .NET and unit testing videos here](https://osherove.com/videos). Embedded Flash media from the original post is no longer playable. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Mar 16, 2011 ### [New User Group: Ruby Underground - Ruby and Ruby On Rails](https://osherove.com/blog/2011/3/16/new-user-group-ruby-underground-ruby-and-ruby-on-rails.html) - Jun 5, 2010 ### [This Week In Test - Episode 1 – Rietveld!](https://osherove.com/blog/2010/6/5/this-week-in-test-episode-1-rietveld.html) - Jun 1, 2010 ### [Want to work at Typemock? We’re Hiring](https://osherove.com/blog/2010/6/1/want-to-work-at-typemock-were-hiring.html) - Jun 1, 2010 ### [Video: Continuous Integration with and without team system (Teched 2008)](https://osherove.com/blog/2010/6/1/video-continuous-integration-with-and-without-team-system-te.html) --- title: "Want to work at Typemock? We’re Hiring" url: "https://osherove.com/blog/2010/6/1/want-to-work-at-typemock-were-hiring.md" canonical: "https://osherove.com/blog/2010/6/1/want-to-work-at-typemock-were-hiring.html" published: "2010-06-01T01:55:17" updated: "2010-06-01T01:55:17" tags: [".NET", "Agile"] author: "Roy Osherove" description: "We are looking for a .NET\\C++ developer to join the growing Typemock ranks. You need to: Live in Israel know .NET very well (at least 3 years .NET experience – VB.NET or C#, and willing to learn the other one) Have some…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Want to work at Typemock? We’re Hiring By Roy Osherove June 1, 2010 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published June 1, 2010; technical details may be outdated. We are looking for a .NET\\C++ developer to join the growing Typemock ranks. You need to: - Live in Israel - know .NET very well (at least 3 years .NET experience – VB.NET _or_ C#, and willing to learn the other one) - Have some C++ experience (recent – sometime in the past couple of years) - Be interested in Agile development, unit testing and TDD (you don’t have to be an expert. **You’ll become one on the job.**) - have very good english - **PASSION for programming** - Advantage to C++ hardcore devs but you don’t have to be one - Advantage to Open source contributors   but you don’t have to be one - Advantage to public figures (bloggers, speakers..) but you don’t have to be one You will be working on one of our products, or several of them along the way. Including Typemock Isolator, Test Lint, TeamMate and future products we are working on! We are counting on all our developers to be part of the design process, to take active part in support and customer meetings, and the first day of every two weeks is dedicated to pet projects – you work on anything you want (even if it’s not to do with Typemock)! send an email with your ENGLISH CV to **royo AT typemock.com** ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 5, 2010 ### [This Week In Test - Episode 1 – Rietveld!](https://osherove.com/blog/2010/6/5/this-week-in-test-episode-1-rietveld.html) - Jun 1, 2010 ### [Video: Hardcore production debugging in .NET – Ingo Rammer](https://osherove.com/blog/2010/6/1/video-hardcore-production-debugging-in-net-ingo-rammer.html) - Jun 1, 2010 ### [Video: Continuous Integration with and without team system (Teched 2008)](https://osherove.com/blog/2010/6/1/video-continuous-integration-with-and-without-team-system-te.html) - May 31, 2010 ### [Running TeamCity from Amazon EC2 - Cloud based scalable build and continuous Integration](https://osherove.com/blog/2010/5/31/running-teamcity-from-amazon-ec2-cloud-based-scalable-build.html) --- title: "Video: Continuous Integration with and without team system (Teched 2008)" url: "https://osherove.com/blog/2010/6/1/video-continuous-integration-with-and-without-team-system-te.md" canonical: "https://osherove.com/blog/2010/6/1/video-continuous-integration-with-and-without-team-system-te.html" published: "2010-06-01T00:38:58" updated: "2010-06-01T00:38:58" tags: [".NET", "Agile"] author: "Roy Osherove" description: "this one was a loong time ago – but still has value. it’s about continous Integration, with and without team system. BTW – you can find all of my videos over here . Embedded Flash media from the original post is no…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: Continuous Integration with and without team system (Teched 2008) By Roy Osherove June 1, 2010 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published June 1, 2010; technical details may be outdated. this one was a loong time ago – but still has value. it’s about continous Integration, with and without team system. BTW – you can find [all of my videos over here](https://osherove.com/videos). Embedded Flash media from the original post is no longer playable. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 1, 2010 ### [Video: Hardcore production debugging in .NET – Ingo Rammer](https://osherove.com/blog/2010/6/1/video-hardcore-production-debugging-in-net-ingo-rammer.html) - Jun 1, 2010 ### [Want to work at Typemock? We’re Hiring](https://osherove.com/blog/2010/6/1/want-to-work-at-typemock-were-hiring.html) - May 31, 2010 ### [Running TeamCity from Amazon EC2 - Cloud based scalable build and continuous Integration](https://osherove.com/blog/2010/5/31/running-teamcity-from-amazon-ec2-cloud-based-scalable-build.html) - May 25, 2010 ### [JustMock and Moles – A short overview for TDD alpha geeks](https://osherove.com/blog/2010/5/25/justmock-and-moles-a-short-overview-for-tdd-alpha-geeks.html) --- title: "Running TeamCity from Amazon EC2 - Cloud based scalable build and continuous Integration" url: "https://osherove.com/blog/2010/5/31/running-teamcity-from-amazon-ec2-cloud-based-scalable-build.md" canonical: "https://osherove.com/blog/2010/5/31/running-teamcity-from-amazon-ec2-cloud-based-scalable-build.html" published: "2010-05-31T05:53:02" updated: "2010-05-31T05:53:02" tags: [".NET", "Agile"] author: "Roy Osherove" description: "I’ve been having fun playing with the amazon EC2 cloud service. I set up a server running TeamCity , and an image of a server that just runs a TeamCity agent. I also setup TeamCity to automatically instantiate agents on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Running TeamCity from Amazon EC2 - Cloud based scalable build and continuous Integration By Roy Osherove May 31, 2010 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published May 31, 2010; technical details may be outdated. I’ve been having fun playing with the [amazon EC2 cloud](http://aws.amazon.com/ec2/) service. I set up a server running [TeamCity](http://www.jetbrains.com/teamcity/), and an image of a server that just runs a TeamCity agent. I also setup TeamCity  to automatically instantiate agents on EC2 and shut them down based upon availability of free agents. Here’s how I did it: **The first step was setting up the teamcity server.** 1. Create an account on amazon EC2 (BTW, amazon’s sites works better in IE than it does in chrome.. who knew!?) 2. Open the EC2 dashboard, and click “Launch Instance” . 3. From the “Quick Start” tab I selected from the list: “**Getting Started on Microsoft Windows Server 2008 (AMI Id: ami-c5e40dac)**” .  it’s good enough to just run teamcity. 4. In the instance details, I used the default (Small instance, 1.7 GB mem). You might want to choose a close availability zone based on where you are. 5. We want to “Launch instances” so click continue. 6. Select the default kernel, RAM disk and all. No need to enable monitoring for now (you can do that later). click continue. 7. If you don’t have a key pair, you will be prompted to create one. Once you do, select it in the list. 8. Now you’ll be prompted to create a security group. I named mine “TC” as in “TeamCity”. each group is a bunch of settings on which ports can be let through into and out of a hosted machine.  keep it as the default settings. We will change them later. 9. Click continue,  review and then click “Launch”. Now you’ll be able to see the new instance in the running instances list on your site. 10. Now, you need to install stuff on that instance (TeamCity!) . To do that, you’ll need to Remote desktop into that instance. To do that, we’ll get the admin password for that instance: Check it on the list, and click “Instance Actions” - “Get Windows Admin Password”. You might have to wait about 10 minutes or so for the password to be generated for you. 11. Once you have the password, you will remote desktop (start-run-‘mstsc’) into the instance. It’s address is a dns address shown below the list under “Public DNS”. it looks something like: ec2-256-226-194-91.compute-1.amazonaws.com 12. Once you’re inside the instance – you’ll need to open IE (it is in hardened mode so you’ll have to relax its security settings to download stuff). I first downloaded chrome and using chrome I downloaded TeamCity. Note that the download speed is FAST. several MBs per second. 13. To be able to see TeamCity from the outside, you will need to open the advanced firewall settings inside the remote machine, and add incoming and outgoing rules for port 80 (HTTP). Once you do that, you should be able to see the machine from the outside. If you still can’t, see the next step. I also enabled ports 9090 since I will use this machine to create an agent image later as well. 14. Now configure the security group (TC) to enable talking to agents: IN the EC2 dashboard click on “Security Groups” and select your group. To add a rule, click on the empty list under the ‘protocol’ header. select TCP. from and ‘to’ ports are 9090. source ip is 0.0.0.0/0 (every ip is allowed). click “Save.  Also make sure you can see “HTTP” tcp 80 in that list. if you can’t see it, add it or you won’t be able to browse to the machine’s teamcity server home page. 15. I also set an elastic IP for the machine: so I always have the same IP for the machine instance. Allocate and set one through the”Elastic IP” link on the EC2 dashboard. you should now have a working instance of teamcity. **Now let’s create an agent image.** Repeat steps 1-9, but this time, make sure you select a machine that fits what an agent might do. I selected Instance type – Hihg-CPU medium machine,  that is much faster. On that machine, I installed what I needed (VS 2010, PostSharp etc..). downloading VS 2010 from MSDN (2 GB took less than 10 min!) Now, instead of installing teamcity, _browse_ using the browser to the teamcity homepage (from within the remote machine). go to the Administration page, and click the upper right link “Install agents”. - Install the agent on he local machine – set it to the IP or DNS of the running TeamCity server. That way you’ll be able to check their connectivity live before making this machine your official agent image to reuse. - Once the agent is installed, see that the TC server can see it and use it. see steps 13-14 above if they can’t. - Once it works, you can take steps to make this image your agent image to be reused. next, here is a copy-paste of several steps to take from [http://confluence.jetbrains.net/display/TCD5/Setting+Up+TeamCity+for+Amazon+EC2](http://confluence.jetbrains.net/display/TCD5/Setting+Up+TeamCity+for+Amazon+EC2) - Configure system so that agent it is started on machine boot (and make sure TeamCity server is accessible on machine boot). 1. Test the setup by rebooting machine and checking that the agent connects normally to the server. 2. Prepare the Image for bundling: - Remove any temporary/history information in the system. - Stop the agent (under Windows stop the service but leave it in _Automatic_ startup type) - Delete content agent logs and temp directories (not necessary) - Delete "/conf/amazon-\*" file (not necessary) - Change config/buildAgent.properties to remove properties: name, serverAddress, authToken (not necessary) Now, we need to: 1. Make AMI from the running instance. 2. Configure TeamCity EC2 support on TeamCity server. **Making an AMI:** - Check the instance of the agent in the EC2 dashboard instance list, and select instance actions->Create Image (EBS AMI) - you’ll see the image pending in the APIs list in the EC2 dashboard. this could take 30 minutes or more. meanwhile we can configure the could support in the teamcity server. COPY THE AMI ID to the clipboard (looks like ami-a88aa4ce) Configuring TeamCity for Cloud: - In TeamCity, click on “Agents” and then on “Cloud” tab. this is where you will control your cloud agents. - to configure new cloud agents based on APIs, click on the right link to the “configuration page” - Create a new profile and select AMazon EC2 as cloud type. Use your AMI ID that you copied to the clipboard into the “Images” field. - Select an availability zone that is the same as the one your instance is running on for best communication perf between them - make sure you select the ‘TC’ security group hopefully, that should be it, and teamcity will try to instantiate new instances on demand. Note that it may take around 10 minutes for an agent to become available to teamcity from the time it’s started. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 1, 2010 ### [Want to work at Typemock? We’re Hiring](https://osherove.com/blog/2010/6/1/want-to-work-at-typemock-were-hiring.html) - Jun 1, 2010 ### [Video: Continuous Integration with and without team system (Teched 2008)](https://osherove.com/blog/2010/6/1/video-continuous-integration-with-and-without-team-system-te.html) - May 25, 2010 ### [JustMock and Moles – A short overview for TDD alpha geeks](https://osherove.com/blog/2010/5/25/justmock-and-moles-a-short-overview-for-tdd-alpha-geeks.html) - May 25, 2010 ### [TechEd Israel 2010 may only accept speakers from sponsors](https://osherove.com/blog/2010/5/25/teched-israel-2010-may-only-accept-speakers-from-sponsors.html) --- title: "Warning - Don’t touch MindTouch Deki Wiki" url: "https://osherove.com/blog/2010/5/29/warning-dont-touch-mindtouch-deki-wiki.md" canonical: "https://osherove.com/blog/2010/5/29/warning-dont-touch-mindtouch-deki-wiki.html" published: "2010-05-29T01:53:20" updated: "2010-05-29T01:53:20" tags: [] author: "Roy Osherove" description: "I made the big mistake of hosting my book’s website wiki on MindTouch’s Deki Wiki ( http://*.wik.is ) Why was it a mistake? I started getting lots of SPAM in the wiki. That in itself isn’t really a MindTouch problem,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Warning - Don’t touch MindTouch Deki Wiki By Roy Osherove May 29, 2010 **Historical article** · Originally published May 29, 2010; technical details may be outdated. I made the big mistake of hosting [my book’s website wiki](http://artofunittesting.com/) on [MindTouch’s](http://www.mindtouch.com/) Deki Wiki ( [http://\*.wik.is](http://*.wik.is/)) Why was it a mistake? I started getting lots of SPAM in the wiki. That in itself isn’t really a MindTouch problem, but how one handles spam in a Deki Wiki _is_. - There’s no way to bulk delete comments - There’s no spam-aware way to moderate comments - No easy way to get notification whenever my pages were changed (that should have been the default) - There’s no easy way to bulk ban or delete users - there’s no way to see or remove all comments by a specific user So, a wiki owner discovers one day his wiki has been turned in a spam heaven – and they have almost nothing to do but go one by one and delete comments and pages. Bad. I had to literally recreate the site from scratch (using [SquareSpace](http://squarespace.com/)). --- title: "Beautiful Teams and Code Leaders - QCON London 2010" url: "https://osherove.com/videos/2010/5/27/beautiful-teams-and-code-leaders-qcon-london-2010.md" canonical: "https://osherove.com/videos/2010/5/27/beautiful-teams-and-code-leaders-qcon-london-2010.html" published: "2010-05-26T21:28:43" updated: "2010-05-26T21:28:43" tags: ["Leadership", "QCON"] author: "Roy Osherove" description: "Here’s the video of a talk about team leadership and beautiful teams I gave at QCON London this year. You can download the slides for this presentation here . This talk is mainly about the first stage (out of the three…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Beautiful Teams and Code Leaders - QCON London 2010 By Roy Osherove May 26, 2010 In [Leadership](https://osherove.com/videos/category/leadership), [QCON](https://osherove.com/videos/category/qcon) **Historical article** · Originally published May 26, 2010; technical details may be outdated. Here’s the video of a talk about team leadership and beautiful teams I gave at QCON London this year. You [can download the slides for this presentation here](http://5whys.com/storage/Code%20Leaders.pdf). This talk is mainly about the first stage (out of [the three team stages](http://5whys.com/blog/the-3-maturity-stages-of-a-software-team-and-how-scrum-fails.html)) – where the team lead takes charge of guiding and coaching the team. note: the original video for this presentation can be found at: [http://www.infoq.com/presentations/Code-Leaders-Beautiful-Teams](http://www.infoq.com/presentations/Code-Leaders-Beautiful-Teams) InfoQCodeLeadersandBeautifulTeams.flv ## More in Leadership [All posts in Leadership](https://osherove.com/videos/category/leadership) - Oct 19, 2011 ### [What You Don't Know You Don't Know (Hebrew)](https://osherove.com/videos/2011/10/19/what-you-dont-know-you-dont-know-hebrew.html) - Apr 15, 2011 ### [Video: Elastic Leadership in software - InfoQ interview](https://osherove.com/videos/2011/4/15/video-elastic-leadership-in-software-infoq-interview.html) --- title: "JustMock and Moles – A short overview for TDD alpha geeks" url: "https://osherove.com/blog/2010/5/25/justmock-and-moles-a-short-overview-for-tdd-alpha-geeks.md" canonical: "https://osherove.com/blog/2010/5/25/justmock-and-moles-a-short-overview-for-tdd-alpha-geeks.html" published: "2010-05-25T12:10:57" updated: "2010-05-25T12:10:57" tags: [".NET", ".Net Original", "Agile"] author: "Roy Osherove" description: "People have been lurking near my house, asking me to write something about Moles and JustMock, so I’ll try to be as objective as possible, taking in the fact that I work at Typemock. If I were NOT working at Typemock…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # JustMock and Moles – A short overview for TDD alpha geeks By Roy Osherove May 25, 2010 In [.NET](https://osherove.com/blog/category/net), [.Net Original](https://osherove.com/blog/category/net-original), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published May 25, 2010; technical details may be outdated. People have been lurking near my house, asking me to write something about Moles and JustMock, so I’ll try to be as objective as possible, taking in the fact that I work at Typemock. If I were NOT working at [Typemock](http://site.typemock.com/) I’d write: **JustMock** **[JustMock](http://www.telerik.com/products/mocking.aspx)** tries to be Typemock at so many levels it’s not even funny. Technically they work the same and the API almost looks like it’s a search and replace work based on the Isolator API (awesome compliment!), but JustMock still has too many growing pains and bugs to be usable. Also, JustMock is missing alot of the legacy abilities such as Non public faking, faking all types and various other things that are really needed in real legacy code. Biggest thing (in terms of isolation integration) is that it does not integrate with other profilers such as coverage, NCover etc.) Justmock claims to fake anything in MSCorLib, but I did not find this to be the case, except for several specific types. The documentation on how to fake things other than statics shows a very unusual and awkward API to achieve this, which did not work at all for me. When JustMock comes out of beta, I feel that it should cost about half as Isolator costs, as it currently provides about half the abilities. **Moles** **[Moles](http://research.microsoft.com/en-us/projects/pex/)** is an addon of Pex and was originally only intended to work within the Pex environment. It started as a research project and now it’s a power-tool for VS (so it’s a separate install) Now it’s it’s own little stubbing framework. It’s not really an Isolation framework in the classic sense, because it does not provide any kind of API built in to verify object interactions. You have to use manual flags all on your own to do that. It generates two types of classes per assembly: Manual Stubs(just like you’d hand code them) and _Mole_ classes. Each Mole class is a special API to change and break the behavior that the corresponding type. so MDateTime is how you change behavior for DateTime. In that sense the API is al over the place, and it can become highly unreadable and unmentionable over time in your test. Also, the Moles API isn’t really designed to deal with real Legacy code. It only deals with _public_ types and methods. anything _internal_ or _private_ is ignored and you can’t change its behavior. You also can’t control static constructors. That takes about 95% of legacy scenarios out of the picture if that’s what you’re trying to use it for. Personally, I found it hard to get used to the idea of two parallel APIs for different abilities, and when to choose which. and I _know this stuff_. I would expect more usability from the API to make it more widely used. I don’t think that Moles in planning to go that route. Publishing it as an Isolation framework is really an afterthought of a tool that was design with a specific task in mind, and generic Isolation isn’t it. it’s only hope is DEQ – a simple code example that shows a simple Isolation API built on the Moles generic engine. Moles can and should be used for very simple cases of detouring functionality such a simple static methods or interfaces and virtual functions (like rhinomock and MOQ do). **Oh, Wait.** Ah, good thing I work at Typemock. I won’t write all that. I’ll just write: JustMock and Moles are great tools that enlarge the market space for isolation related technologies, and they prove that the idea of productivity and unit testing can go hand in hand and get people hooked. I look forward to compete with them at this growing market. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 1, 2010 ### [Video: Continuous Integration with and without team system (Teched 2008)](https://osherove.com/blog/2010/6/1/video-continuous-integration-with-and-without-team-system-te.html) - May 31, 2010 ### [Running TeamCity from Amazon EC2 - Cloud based scalable build and continuous Integration](https://osherove.com/blog/2010/5/31/running-teamcity-from-amazon-ec2-cloud-based-scalable-build.html) - May 25, 2010 ### [TechEd Israel 2010 may only accept speakers from sponsors](https://osherove.com/blog/2010/5/25/teched-israel-2010-may-only-accept-speakers-from-sponsors.html) - Apr 9, 2010 ### [Finding the location of vsixInstaller.exe programmatically](https://osherove.com/blog/2010/4/9/finding-the-location-of-vsixinstallerexe-programmatically.html) --- title: "TechEd Israel 2010 may only accept speakers from sponsors" url: "https://osherove.com/blog/2010/5/25/teched-israel-2010-may-only-accept-speakers-from-sponsors.md" canonical: "https://osherove.com/blog/2010/5/25/teched-israel-2010-may-only-accept-speakers-from-sponsors.html" published: "2010-05-25T11:34:00" updated: "2010-05-25T11:34:00" tags: [".NET", "Agile", "Community"] author: "Roy Osherove" description: "UPDATE: Microsoft reps and other sources have notified me that whatever plans they had for only sponsored speakers, are canceled. they will be accepting non sponsored speakers as well. A month or so ago, Microsoft…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TechEd Israel 2010 may only accept speakers from sponsors By Roy Osherove May 25, 2010 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published May 25, 2010; technical details may be outdated. **UPDATE: Microsoft reps and other sources have notified me that whatever plans they had for only sponsored speakers, are canceled. they will be accepting non sponsored speakers as well.** A month or so ago, Microsoft Israel started sending out emails to its partners and registered event users to “Save the date!” – Micraoft Teched Israel is coming, and it’s going to be this november! “Great news” I thought to myself. I’d been to a couple of the MS teched events, as a speaker and as an attendee, and it was lovely and professionally done. Israel is an amazing place for technology and development and TechEd hosted some big names in the world of MS software. A couple of weeks ago, I was shocked to hear from a couple of people that Microsoft Israel plans to only accept non-MS teched speakers, only from _sponsors_ of the event. That means that according to the amount that you have paid, you get to insert one or more of your own selected speakers as part of teched. I’ve spent the past couple of weeks trying to gather more evidence of this, and have gotten some input from within MS about this information. It looks like that is indeed the case, though no MS rep. was prepared to answer any email I had publicly. If they approach me now I’d be happy to print their response. **What does this mean?** If this is true, it means that Microsoft Israel is making a grave mistake – - They are diluting the quality of the speakers for pure money factors. That means, **that as a teched attendee**, who paid good money, you might be sitting down to watch nothing more that a bunch of infomercials, or sub-standard speakers – since speakers are no longer selected on quality or interest in their topic. - They are turning the conference from a learning event to a commercial driven event - They are closing off the stage to the community of speakers who may not be associated with any organization  willing to be a sponsor - They are losing speakers (such as myself) who will not want to be part of such an event. (yes – even if my company ends up sponsoring the event, I will not take part in it, Sorry Eli!) - They are saying “F&$K you” to the community of MVPs who should be the people to be approached first about technical talks (my guess is many MVPs wouldn’t want to talk at an event driven that way anyway ) I do hope this ends up not being true, but it looks like it is. MS Israel had already done such a thing with the Developer Days event previouly held in Israel – only sponsors were allowed to insert speakers into the event. If this turns out to be true I would urge the MS community in Israel to NOT TAKE PART AT THIS EVENT in any form (attendee, speaker, sponsor or otherwise). by taking part, you will be telling MS Israel it’s OK to piss all over the community that they are quietly suffocating anyway. **The MVP case** MS Israel has managed to screw the MVP program as well. MS MVPs (I’m one) have had a tough time here in Israel the past couple of years. ever since [yosi taguri](http://blogs.microsoft.co.il/blogs/yosit/) left the blue badge ranks, there was not real community leader left. Whoever runs things right now has their eyes and minds set elsewhere, with the software MVP community far from mind and heart. No special MVP events (except a couple of small ones this year). No real MVP leadership happens here, with the MVP MEA lead (Ruari) being on a remote line, is not really what’s needed. “MVP? What’s that?” I’m sure many MS Israel employees would say. Exactly my point. **Last word** I’ve been disappointed by the MS machine for a while now, but their slowness to realize what real community means in the past couple of years really turns me off. Maybe it’s time to move on. Maybe I shouldn’t be chasing people at MS Israel begging for a room to host the Agile Israel user group. Maybe it’s time to say a big bye bye and start looking at a life a bit more disconnected from that giant. I hear the people at Google are pretty Agile! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 31, 2010 ### [Running TeamCity from Amazon EC2 - Cloud based scalable build and continuous Integration](https://osherove.com/blog/2010/5/31/running-teamcity-from-amazon-ec2-cloud-based-scalable-build.html) - May 25, 2010 ### [JustMock and Moles – A short overview for TDD alpha geeks](https://osherove.com/blog/2010/5/25/justmock-and-moles-a-short-overview-for-tdd-alpha-geeks.html) - Apr 9, 2010 ### [Finding the location of vsixInstaller.exe programmatically](https://osherove.com/blog/2010/4/9/finding-the-location-of-vsixinstallerexe-programmatically.html) - Apr 9, 2010 ### [Things to install on a new machine – revisited](https://osherove.com/blog/2010/4/9/things-to-install-on-a-new-machine-revisited.html) --- title: "Two Cool Typemock Contests" url: "https://osherove.com/blog/2010/5/9/two-cool-typemock-contests.md" canonical: "https://osherove.com/blog/2010/5/9/two-cool-typemock-contests.html" published: "2010-05-09T06:09:16" updated: "2010-05-09T06:09:16" tags: ["Typemock"] author: "Roy Osherove" description: "This week we announced two cool contests: Extend Test Lint – create your own rules for unit test reviews Test Lint is one of our new products, and it’s free . It checks your unit tests as you type them, looking for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Two Cool Typemock Contests By Roy Osherove May 9, 2010 In [Typemock](https://osherove.com/blog/category/typemock) **Historical article** · Originally published May 9, 2010; technical details may be outdated. This week we announced two cool contests: - [Extend Test Lint – create your own rules for unit test reviews](https://osherove.com/blog/2010/5/9/www.typemock.com/test-lint-contest/) Test Lint is one of our new products, and it’s _free_. It checks your unit tests as you type them, looking for common unit test mistakes (kind of like what I do in TDD class). for example – missing or multiple asserts. It’s fully extensible too, so you can create your own rules for it. Now you can do that and get your name in the product :) -  [14 seconds movie challenge](http://site.typemock.com/14seconds/) – can you create a short movie about typemock? How creative will you get? We want to create a library of customer and user videos of people who are excited about what typemock enables them to do. So we are challenging you to create a movie no longer than 14 seconds to do it in. In exchange you can win up to 50 licenses of Isolator for your company (yes. professional for company-use licenses) ## More in Typemock [All posts in Typemock](https://osherove.com/blog/category/typemock) - Oct 18, 2010 ### [Join me for a live webinar on unit testing with Isolator++ this thursday](https://osherove.com/blog/2010/10/18/join-me-for-a-live-webinar-on-unit-testing-with-isolator-thi.html) - Jul 4, 2010 ### [new Test Lint Beta – with command line runner](https://osherove.com/blog/2010/7/4/new-test-lint-beta-with-command-line-runner.html) - Apr 23, 2010 ### [First Typemock Academy - 4 days from now](https://osherove.com/blog/2010/4/23/first-typemock-academy-4-days-from-now.html) - Mar 7, 2010 ### [Introducing Typemock Test Lint](https://osherove.com/blog/2010/3/7/introducing-typemock-test-lint.html) --- title: "Emperors don’t come cheap" url: "https://osherove.com/blog/2010/5/8/emperors-dont-come-cheap.md" canonical: "https://osherove.com/blog/2010/5/8/emperors-dont-come-cheap.html" published: "2010-05-08T07:19:24" updated: "2010-05-08T07:19:24" tags: ["Agile"] author: "Roy Osherove" description: "“Sorry” I replied in a polite email. “Maybe next year, when budgets allow for this”. It was addressed to the organizer of TechEd US, which was to be in New Orleans this year. Man, I would have loved to be in new Orleans…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Emperors don’t come cheap By Roy Osherove May 8, 2010 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published May 8, 2010; technical details may be outdated. “Sorry” I replied in a polite email. “Maybe next year, when budgets allow for this”. It was addressed to the organizer of TechEd US, which was to be in New Orleans this year. Man, I would have loved to be in new Orleans this year, but, I guess these guys only understand one language – and I won’t be their puppy any more. You see, they wouldn’t pay for my business class flight to TechEd from Israel. Me– the great emperor of unit testing?! travelling coach for 12 hours? No thanks. I have better things to do! And this is after last year, they only invited me to have _one_ talk throughout the conference. _one talk_. After the year _before_ I was on the top ten speakers list of that conference?! No sir! They did give it a good try, though. They said they can pay up to 4,000$ per flight cost for me, and that they only found a flight at about 5460$. “Unacceptable” I told them when they asked if I would pay the difference. And that was that. Goodbye teched. As I closed up gmail, wondering if I should have told them that I found a similar flight at 4,300$, and came back to the living room, I told my wife, all full of myself “I just canceled teched”. “Oh good” she said. Not even looking at me as she tried to feed our one year old. “did you tell them you need to cancel because you already have another flight that month and your wife won’t let you travel more than once a month anymore?” “Yeah right” I said. Just what I need – for people to realize I’m totally whipped. I still need an ounce of dignity. “I told those bastards that if they want me they have to make an effort. People like me don’t come cheap, you know?” “You’re an idiot for not telling them the real reason.” She handed me the baby.  “What if they found a flight that matches their budget? How would you have gotten away from that engagement?” . She put on “Lost” on the media center and sat next to me. I did not reply. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 25, 2010 ### [JustMock and Moles – A short overview for TDD alpha geeks](https://osherove.com/blog/2010/5/25/justmock-and-moles-a-short-overview-for-tdd-alpha-geeks.html) - May 25, 2010 ### [TechEd Israel 2010 may only accept speakers from sponsors](https://osherove.com/blog/2010/5/25/teched-israel-2010-may-only-accept-speakers-from-sponsors.html) - Mar 24, 2010 ### [Introducing QuickUnit](https://osherove.com/blog/2010/3/24/introducing-quickunit.html) - Mar 19, 2010 ### [Code excavations, wishful invocations, perimeters and domain specific unit test frameworks](https://osherove.com/blog/2010/3/19/code-excavations-wishful-invocations-perimeters-and-domain-s.html) --- title: "First Typemock Academy - 4 days from now" url: "https://osherove.com/blog/2010/4/23/first-typemock-academy-4-days-from-now.md" canonical: "https://osherove.com/blog/2010/4/23/first-typemock-academy-4-days-from-now.html" published: "2010-04-23T13:41:39" updated: "2010-04-23T13:41:39" tags: ["Typemock"] author: "Roy Osherove" description: "This April 27th marks a special occasion for Typemock – the first Typemock Partner Conference is about to take place in Oslo, Norway. Some special treats are expected (including a very cool after party), and Uncle Bob…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # First Typemock Academy - 4 days from now By Roy Osherove April 23, 2010 In [Typemock](https://osherove.com/blog/category/typemock) **Historical article** · Originally published April 23, 2010; technical details may be outdated. This April 27th marks a special occasion for Typemock – the [first Typemock Partner Conference](http://site.typemock.com/typemock-academy) is about to take place in Oslo, Norway. [Some special treats](http://www.typemock.com/agenda/) are expected (including a very cool after party), and [Uncle Bob Martin](http://www.objectmentor.com/omTeam/martin_r.html) and myself will be doing a special Q&A video conference live with the attendees as part of it. Attendance is by invite only, but you can see if you’re eligible by going to [this page and filling out your details](http://site.typemock.com/typemock-academy). ## More in Typemock [All posts in Typemock](https://osherove.com/blog/category/typemock) - Jul 4, 2010 ### [new Test Lint Beta – with command line runner](https://osherove.com/blog/2010/7/4/new-test-lint-beta-with-command-line-runner.html) - May 9, 2010 ### [Two Cool Typemock Contests](https://osherove.com/blog/2010/5/9/two-cool-typemock-contests.html) - Mar 7, 2010 ### [Introducing Typemock Test Lint](https://osherove.com/blog/2010/3/7/introducing-typemock-test-lint.html) - Oct 23, 2009 ### [TypeMOQ API](https://osherove.com/blog/2009/10/23/typemoq-api.html) --- title: "Open Space, Volcano Edition – London, Tuesday April 20th" url: "https://osherove.com/blog/2010/4/17/open-space-volcano-edition-london-tuesday-april-20th.md" canonical: "https://osherove.com/blog/2010/4/17/open-space-volcano-edition-london-tuesday-april-20th.html" published: "2010-04-17T14:33:14" updated: "2010-04-17T14:33:14" tags: [] author: "Roy Osherove" description: "If you’re stuck (or live) in London this week, a bunch of us geeks from the ACCU conference are trying to organize an open space one day conference. We are still looking for a space so ping me if you can help host 100…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Open Space, Volcano Edition – London, Tuesday April 20th By Roy Osherove April 17, 2010 **Historical article** · Originally published April 17, 2010; technical details may be outdated. If you’re stuck (or live) in London this week, a bunch of us geeks from the ACCU conference are trying to organize an open space one day conference. We are still looking for a space so ping me if you can help host 100 people, but if you want to register [you can do it here](http://openvolcano10.eventbrite.com/). also, details about the event are on [my twitter account](http://twitter.com/RoyOsherove) and at the [#OpenVolcano10](http://search.twitter.com/search?q=openvolcano10) hashtag on twitter. --- title: "I’m in London this week – looking for training or consulting gigs (tdd and team leadership)" url: "https://osherove.com/blog/2010/4/17/im-in-london-this-week-looking-for-training-or-consulting-gi.md" canonical: "https://osherove.com/blog/2010/4/17/im-in-london-this-week-looking-for-training-or-consulting-gi.html" published: "2010-04-17T14:30:13" updated: "2010-04-17T14:30:13" tags: [] author: "Roy Osherove" description: "I’ve decided to stay in London for the week, instead of desperately trying to get home. I hope things will get better by the week’s end. That also means that I’m now looking for interesting consulting or training gigs…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I’m in London this week – looking for training or consulting gigs (tdd and team leadership) By Roy Osherove April 17, 2010 **Historical article** · Originally published April 17, 2010; technical details may be outdated. I’ve decided to stay in London for the week, instead of desperately trying to get home. I hope things will get better by the week’s end. That also means that I’m now looking for interesting consulting or training gigs to do while I’m in London. possibilities:  ([contact me by clicking here](https://osherove.com/request-more-info/)) - **Test review session**: I’ll come over and review your unit tests, and help optimize them for readability, maintainability and trustworthiness - **Tdd training session**: a one, two or three day tdd training for your company or team - **Team leadership skills**: a one or two days training for your new team leads about skills that will help them grow and reincarnate their team into a healthy, super productive team. - **Speaking**: I’d love to come in and talk about various subjects: team leadership, tdd and unit testing or something along those lines. [click here to get more details about what’s possible](https://osherove.com/training) --- title: "Funny Volcanic Ash Tweets" url: "https://osherove.com/blog/2010/4/16/funny-volcanic-ash-tweets.md" canonical: "https://osherove.com/blog/2010/4/16/funny-volcanic-ash-tweets.html" published: "2010-04-16T06:37:35" updated: "2010-04-16T06:37:35" tags: ["Off Topic"] author: "Roy Osherove" description: "Now that I’m officially stuck in the UK (for ACCU ) until the cloud of ash thinks it’s OK, I’ve gathered some funny tweets from #ashtag: @the_pc_doc: I, for one, welcome our new volcanic overloads. #ashtag @CloudierK:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Funny Volcanic Ash Tweets By Roy Osherove April 16, 2010 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 16, 2010; technical details may be outdated. Now that I’m officially stuck in the UK (for [ACCU](http://accu.org/)) until the cloud of ash thinks it’s OK, I’ve gathered some funny tweets from #ashtag: 1. @the\_pc\_doc: I, for one, welcome our new volcanic overloads. #ashtag 2. @CloudierK: Just like Bjork,volcano ash is a typically Icelandic export: awesome at first,but gets boring rather quickly #ashtag 3. Iceland farts and Europe holds its breath. #ashtag 4. @twmercer: Honestly. If you can't look after your volcano you shouldn't be allowed to keep one. #ashtag 5. @davidgilson: I have just cried with laughter. The volcano is tweeting! follow @Eyjafjalla #ashtag 6. @Jemandi: Can all airlines in the UK planning to strike in the nearby future, please go ahead and do it straight away. #ashtag 7. @johnbowman: Man. The last time Iceland emitted something this annoying, it was wearing a swan dress ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 12, 2012 ### [When they tell me I have to use MSBuild to automate our CI Process](https://osherove.com/blog/2012/12/12/when-they-tell-me-i-have-to-use-msbuild-to-automate-our-ci-p.html) - Jun 2, 2010 ### [Converting MOD files to quicktime or mpeg for adobe premiere pro](https://osherove.com/blog/2010/6/2/converting-mod-files-to-quicktime-or-mpeg-for-adobe-premiere.html) - Nov 2, 2008 ### [Cute picture of my son](https://osherove.com/blog/2008/11/2/cute-picture-of-my-son.html) - Jul 29, 2008 ### [My Son - Itamar the Snake Tamer](https://osherove.com/blog/2008/7/29/my-son-itamar-the-snake-tamer.html) --- title: "Finding the location of vsixInstaller.exe programmatically" url: "https://osherove.com/blog/2010/4/9/finding-the-location-of-vsixinstallerexe-programmatically.md" canonical: "https://osherove.com/blog/2010/4/9/finding-the-location-of-vsixinstallerexe-programmatically.html" published: "2010-04-09T17:32:00" updated: "2010-04-09T17:32:00" tags: [".NET"] author: "Roy Osherove" description: "It should always be here: %vs100comntools%\\..\\..\\IDE\\ or through the registry: HKLM\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\ under key “ InstallDir ” Thanks Pablo !" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Finding the location of vsixInstaller.exe programmatically By Roy Osherove April 9, 2010 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published April 9, 2010; technical details may be outdated. > It should always be here: **%vs100comntools%\\..\\..\\IDE\\** or through the registry: > **HKLM\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\** > > under key “**InstallDir**” [Thanks Pablo](http://www.clariusconsulting.net/blogs/pga/archive/2009/07/07/DeployingaVSIXfromaMSI.aspx)! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 25, 2010 ### [JustMock and Moles – A short overview for TDD alpha geeks](https://osherove.com/blog/2010/5/25/justmock-and-moles-a-short-overview-for-tdd-alpha-geeks.html) - May 25, 2010 ### [TechEd Israel 2010 may only accept speakers from sponsors](https://osherove.com/blog/2010/5/25/teched-israel-2010-may-only-accept-speakers-from-sponsors.html) - Apr 9, 2010 ### [Things to install on a new machine – revisited](https://osherove.com/blog/2010/4/9/things-to-install-on-a-new-machine-revisited.html) - Feb 23, 2010 ### [Solution: Visual Studio 2010 beta 2 extension does not load in vs 2010 RC](https://osherove.com/blog/2010/2/23/solution-visual-studio-2010-beta-2-extension-does-not-load-i.html) --- title: "Things to install on a new machine – revisited" url: "https://osherove.com/blog/2010/4/9/things-to-install-on-a-new-machine-revisited.md" canonical: "https://osherove.com/blog/2010/4/9/things-to-install-on-a-new-machine-revisited.html" published: "2010-04-09T16:14:20" updated: "2010-04-09T16:14:20" tags: [".NET", "Cool Tools"] author: "Roy Osherove" description: "as I prepare to get a new dev machine at work, I write the things I am going to install on it, before writing the first line of code on that machine: Control Freak Tools: Everything Search Engine – a free and amazingly…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Things to install on a new machine – revisited By Roy Osherove April 9, 2010 In [.NET](https://osherove.com/blog/category/net), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published April 9, 2010; technical details may be outdated. as I prepare to get a new dev machine at work, I write the things I am going to install on it, before writing the first line of code on that machine: **Control Freak Tools:** 1. [Everything Search Engine](http://www.voidtools.com/) – a free and amazingly fast search engine for files all over your machine. (just file names, not inside files). This is so fast I use it almost as a replacement for my start menu, but it’s also great for finding those files that get hidden and tucked away in dark places on my system. Ever had a situation where you needed to see exactly how many copies of X.dll were hiding on your machine and where? this tool is perfect for that. 2. [Google Chrome](http://chrome.google.com/). It’s just fast. very fast. and Firefox has become the IE of alternative browsers in terms of speed and memory. Don’t even get me started on IE. 3. [TweetDeck](http://www.tweetdeck.com/) – get a complete view of what’s up on twitter 4. [Total Commander](http://www.ghisler.com/) – my still favorite file manager, over five years now. 5. [KatMouse](http://ehiti.de/katmouse/) – will scroll any window your hovering on, even if it’s not an active window, when you use scroll the wheel on it. 6. [PowerIso](http://www.poweriso.com/) or [Daemon Tools](http://www.daemon-tools.cc/eng/home) – for loading up ISO images of discs 7. [LogMeIn Ignition](https://secure.logmein.com/US/products/ignition/) – quick access to your LogMeIn computers 8. for online Backup: JungleDisk or BackBlaze 9. [KeePass](http://keepass.info/) – save important passwords 10. [MS Security Essentials](http://www.microsoft.com/security_essentials/) – free anti virus that’s quoest and doesn’t make a mess of your system. 11. for home: [uTorrent](http://www.utorrent.com/) – a torrent client that can read rss feeds (like the ones from ezrss.it ) 12. [Camtasia Studio](http://www.techsmith.com/camtasia.asp) and [SnagIt](http://www.techsmith.com/screen-capture.asp) – for recording and capturing the screen, and then adding cool effects on top. 13. [Foxit PDF Reader](http://download.cnet.com/Foxit-Reader/3000-10743_4-10313206.html?part=dl-116442&subj=dl&tag=button/) – much faster that adove reader. 14. [Toddler Keys](http://tk.ms11.net/) (for home) – for when your baby wants to play with your keyboard. 15. [Live Writer](http://download.live.com/writer) – for writing blog posts 16. for Lenovo ThinkPads – [Lenovo System Update](http://www-307.ibm.com/pc/support/site.wss/TVSU-UPDATE.html) – if you have a “custom” system instead of the one that came built in, this will keep all your lenovo drivers up to date. 17. [FileZilla](http://filezilla-project.org/) – for FTP stuff 18. [All the utils from sysinternals](http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx), (or try [the live-links](http://live.sysinternals.com/)) especially: [AutoRuns](http://technet.microsoft.com/en-us/sysinternals/bb963902.aspx) for deciding what’s really going to load at startup, [procmon](http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) to see what’s really going on with processes in your system **Developer stuff:** 1. [Reflector](http://www.red-gate.com/products/reflector/). Pure magic. Time saver. See source code of any compiled assembly. 2. [Resharper](http://www.jetbrains.com/resharper/). Great for productivity and navigation across your source code 3. [FinalBuilder](http://www.finalbuilder.com/) – a commercial build automation tool. Love it. much better than any xml based time hog out there. 4. [TeamCity](http://www.jetbrains.com/teamcity/) – a great visual and friendly server to manage continuous integration. powerful features. 5. [Test Lint](http://typemock.com/lint) – a free addin for vs 2010 I helped create, that checks your unit tests for possible problems and hints you about it. 6. [TestDriven.NET](http://www.testdriven.net/) – a great test runner for vs 2008 and 2010 with some powerful features. 7. [VisualSVN](http://www.visualsvn.com/) – a commercial tool if you use subversion. very reliable addin for vs 2008 and 2010 8. [Beyond Compare](http://www.scootersoftware.com/) – a powerful file and directory comparison tool. I love the fact that you can right click in windows exporer on any file and select “select left side to compare”, then right click on another file and select “compare with left side”. Great usability thought! 9. [PostSharp 2.0](http://www.sharpcrafters.com/) – for addind system wide concepts into your code (tracing, exception management). Goes great hand in hand with.. 10. [SmartInspect](http://www.gurock.com/smartinspect/) – a powerful framework and viewer for tracing for your application. lots of hidden features. 11. [Crypto Obfuscator](http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm) – a relatively new obfuscation tool for .NET that seems to do the job very well. 12. [Crypto Licensing](http://www.ssware.com/cryptolicensing/cryptolicensing_net.htm) – from the same company –finally a licensing solution that seems to really fit what I needed. And it works. 13. [Fiddler 2](http://www.fiddler2.com/fiddler2/) – great for debugging and tracing http traffic to and from your app. 14. [Debugging Tools for Windows](http://www.microsoft.com/whdc/Devtools/Debugging/default.mspx) and [DebugDiag](http://www.microsoft.com/downloads/details.aspx?FamilyID=28BD5941-C458-46F1-B24D-F60151D875A3&displaylang=en)  - great for debugging scenarios. **still wanting more?** I think [this should keep you busy for a while](http://www.hanselman.com/tools). 1. [Regulator and Regulazy](https://osherove.com/tools) – for testing and generating regular expressions 2. [Notepad 2](http://www.flos-freeware.ch/notepad2.html) – for quick editing and viewing with syntax highlighting ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 25, 2010 ### [TechEd Israel 2010 may only accept speakers from sponsors](https://osherove.com/blog/2010/5/25/teched-israel-2010-may-only-accept-speakers-from-sponsors.html) - Apr 9, 2010 ### [Finding the location of vsixInstaller.exe programmatically](https://osherove.com/blog/2010/4/9/finding-the-location-of-vsixinstallerexe-programmatically.html) - Feb 23, 2010 ### [Solution: Visual Studio 2010 beta 2 extension does not load in vs 2010 RC](https://osherove.com/blog/2010/2/23/solution-visual-studio-2010-beta-2-extension-does-not-load-i.html) - Feb 10, 2010 ### [Working on a new product](https://osherove.com/blog/2010/2/10/working-on-a-new-product.html) --- title: "Introducing QuickUnit" url: "https://osherove.com/blog/2010/3/24/introducing-quickunit.md" canonical: "https://osherove.com/blog/2010/3/24/introducing-quickunit.html" published: "2010-03-24T02:37:18" updated: "2010-03-24T02:37:18" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "A friend of mine, Ariel, just finished up his latest project, in the unit testing world – called QuickUnit . From the site: QuickUnit significantly reduces the time needed to design and generate high-quality unit tests.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing QuickUnit By Roy Osherove March 24, 2010 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 24, 2010; technical details may be outdated. A friend of mine, Ariel, just finished up his latest project, in the unit testing world – [called QuickUnit](http://www.quickunit.com/). From the site: QuickUnit significantly reduces the time needed to design and generate high-quality unit tests. I see it as an interactive unit test generator with all the options for isolation included. give it a whirl ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 25, 2010 ### [TechEd Israel 2010 may only accept speakers from sponsors](https://osherove.com/blog/2010/5/25/teched-israel-2010-may-only-accept-speakers-from-sponsors.html) - May 8, 2010 ### [Emperors don’t come cheap](https://osherove.com/blog/2010/5/8/emperors-dont-come-cheap.html) - Mar 19, 2010 ### [Code excavations, wishful invocations, perimeters and domain specific unit test frameworks](https://osherove.com/blog/2010/3/19/code-excavations-wishful-invocations-perimeters-and-domain-s.html) - Feb 13, 2010 ### [Inhibiting design tooling and sex education](https://osherove.com/blog/2010/2/13/inhibiting-design-tooling-and-sex-education.html) --- title: "Code excavations, wishful invocations, perimeters and domain specific unit test frameworks" url: "https://osherove.com/blog/2010/3/19/code-excavations-wishful-invocations-perimeters-and-domain-s.md" canonical: "https://osherove.com/blog/2010/3/19/code-excavations-wishful-invocations-perimeters-and-domain-s.html" published: "2010-03-19T10:41:11" updated: "2010-03-19T10:41:11" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "One of the talks I did at QCON London was about a subject that I’ve come across fairly recently , when I was building SilverUnit – a “pure” unit test framework for silverlight objects that depend on the silverlight…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Code excavations, wishful invocations, perimeters and domain specific unit test frameworks By Roy Osherove March 19, 2010 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 19, 2010; technical details may be outdated. One of the talks I did at [QCON London](http://qconlondon.com/) was about a subject that I’ve come across fairly recently , when I was building [SilverUnit](http://cthru.codeplex.com/) – a “pure” unit test framework for silverlight objects that depend on the silverlight runtime to run. It is the concept of “cogs in the machine” – when your piece of code needs to run inside a host framework or runtime that you have little or no control over for testability related matters. Examples of such cogs and machines can be: - your custom control running inside silverlight runtime in the browser - your plug-in running inside an IDE - your activity running inside a windows workflow - your code running inside a java EE bean - your code inheriting from a COM+ (enterprise services) component - etc.. Not all of these are necessarily testability problems. The main testability problem usually comes when your code actually inherits form something inside the system. For example. one of the biggest problems with testing objects like silverlight controls is _the way_ they depend on the silverlight runtime – they don’t implement some silverlight interface, they don’t just call external static methods against the framework runtime that surrounds them – they actually _inherit_ parts of the framework: they all inherit (in this case) from the silverlight _DependencyObject_ ### Wrapping it up? An _inheritance dependency_ is uniquely challenging to bring under test, because “classic” methods such as wrapping the object under test with a framework wrapper will not work, and the only way to do manually is to create _parallel testable objects_ that get delegated with all the possible actions from the dependencies.    In silverlight’s case, that would mean creating your own custom logic class that would be called directly from controls that inherit from silverlight, and would be tested independently of these controls. The pro side is that you get the benefit of understanding the “contract” and the “roles” your system plays against your logic, but unfortunately, more often than not, it can be very tedious to create, and may sometimes feel unnecessary or like code duplication. ## About perimeters A _perimeter_ is that invisible line that your draw around your pieces of logic during a test, that separate the code under test from any dependencies that it uses. Most of the time, a test perimeter around an object will be the list of _seams_ (dependencies that can be replaced such as interfaces, virtual methods etc.) that are actually replaced for that test or for all the tests. ## Role based perimeters In the case of creating a wrapper around an object – one really creates a “role based” perimeter around the logic that is being tested – that wrapper takes on roles that are required by the code under test, and also communicates with the host system to implement those roles and provide any inputs to the logic under test. in the image below – we have the code we want to test represented as a star. No perimeter is drawn yet (we haven’t wrapped it up in anything yet). in the image below is what happens when you wrap your logic with a role based wrapper – you get a role based perimeter anywhere your code interacts with the system: There’s another way to bring that code under test – using isolation frameworks like typemock, rhino mocks and MOQ (but if your code inherits from the system, Typemock might be the only way to isolate the code from the system interaction. ## Ad-Hoc Isolation perimeters the image below shows what I call _ad-hoc_ perimeter that might be vastly different between different tests: This perimeter’s surface is much smaller, because for that specific test, that is all the “change” that is required to the host system behavior. The third way of isolating the code from the host system is the main “meat” of this post: ## Subterranean perimeters Subterranean perimeters are Deep rooted perimeters  - “always on” seams that that can lie very deep in the heart of the host system where they are fully invisible even to the test itself, not just to the code under test. Because they lie deep inside a system you can’t control, the only way I’ve found to control them is with runtime (not compile time) interception of method calls on the system. One way to get such abilities is by using Aspect oriented frameworks – for example, in SilverUnit, I’ve used the [CThru AOP framework](http://cthru.codeplex.com/) based on Typemock hooks and CLR profilers to intercept such system level method calls and effectively turn them into seams that lie deep down at the heart of the silverlight runtime. the image below depicts an example of what such a perimeter could look like: As you can see, the actual seams can be very far away form the actual code under test, and as you’ll discover, that’s actually a very good thing. Here is only a partial list of examples of such deep rooted seams : - disabling the constructor of a base class _five levels below_ the code under test (this.base.base.base.base) - faking static methods of a type that’s being called several levels down the stack: method x() calls y() calls z() calls SomeType.StaticMethod()  - Replacing an async mechanism with a synchronous one (replacing all timers with your own timer behavior that always Ticks immediately upon calls to “start()” on the same caller thread for example) - Replacing event mechanisms with your own event mechanism (to allow “firing” system events) - Changing the way the system saves information with your own saving behavior (in silverunit, I replaced all Dependency Property set and get with calls to an in memory value store instead of using the one built into silverlight which threw exceptions without a browser) several questions could jump in: - How do you know what to fake? (how do you discover the perimeter?) - How do you fake it? - Wouldn’t this be problematic  - to fake something you don’t own? it might change in the future How do you discover the perimeter to fake? To discover a perimeter all you have to do is start with a _wishful invocation_. a _wishful invocation_ is the act of trying to invoke a method (or even just create an instance ) of an object using “regular” test code. You invoke the thing that you’d like to do in a real unit test, to see what happens: - Can I even create an instance of this object without getting an exception? - Can I invoke this method on that instance without getting an exception? - Can I verify that some call into the system happened? You make the invocation, get an exception (because there is a dependency) and look at the stack trace. choose a location in the stack trace and disable it. Then try the invocation again. if you don’t get an exception the perimeter is good for that invocation, so you can move to trying out other methods on that object. in a future post I will show the process using CThru, and how you end up with something close to a domain specific test framework after you’re done creating the perimeter you need. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 8, 2010 ### [Emperors don’t come cheap](https://osherove.com/blog/2010/5/8/emperors-dont-come-cheap.html) - Mar 24, 2010 ### [Introducing QuickUnit](https://osherove.com/blog/2010/3/24/introducing-quickunit.html) - Feb 13, 2010 ### [Inhibiting design tooling and sex education](https://osherove.com/blog/2010/2/13/inhibiting-design-tooling-and-sex-education.html) - Feb 10, 2010 ### [Working on a new product](https://osherove.com/blog/2010/2/10/working-on-a-new-product.html) --- title: "Introducing Typemock Test Lint" url: "https://osherove.com/blog/2010/3/7/introducing-typemock-test-lint.md" canonical: "https://osherove.com/blog/2010/3/7/introducing-typemock-test-lint.html" published: "2010-03-07T14:25:32" updated: "2010-03-07T14:25:32" tags: ["Typemock", "Unit Testing"] author: "Roy Osherove" description: "We just released a new, free product - Typemock Test Lint, click here for all the gory details . It’s a just-in-time unit testing coach that looks at your code as you type and looks for common unit testing errors. Or,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing Typemock Test Lint By Roy Osherove March 7, 2010 In [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 7, 2010; technical details may be outdated. We just released a new, free product -  Typemock Test Lint, [click here for all the gory details](http://site.typemock.com/test-lint). It’s a just-in-time unit testing coach that looks at your code as you type and looks for common unit testing errors. Or, you can just watch this movie: Embedded Flash media from the original post is no longer playable. ## More in Typemock [All posts in Typemock](https://osherove.com/blog/category/typemock) - May 9, 2010 ### [Two Cool Typemock Contests](https://osherove.com/blog/2010/5/9/two-cool-typemock-contests.html) - Apr 23, 2010 ### [First Typemock Academy - 4 days from now](https://osherove.com/blog/2010/4/23/first-typemock-academy-4-days-from-now.html) - Oct 23, 2009 ### [TypeMOQ API](https://osherove.com/blog/2009/10/23/typemoq-api.html) - Oct 18, 2009 ### [Introducing Typemock IntelliTest](https://osherove.com/blog/2009/10/18/introducing-typemock-intellitest.html) --- title: "NUnit vs. MsTest: NUnit wins for Unit Testing." url: "https://osherove.com/blog/2010/3/5/nunit-vs-mstest-nunit-wins-for-unit-testing.md" canonical: "https://osherove.com/blog/2010/3/5/nunit-vs-mstest-nunit-wins-for-unit-testing.html" published: "2010-03-05T16:19:27" updated: "2010-03-05T16:19:27" tags: ["Unit Testing"] author: "Roy Osherove" description: "People are still wondering what are the differences between the two most popular unit testing frameworks in the .NET world: the open source NUnit and the commercial MsTest). Here’s a short list of what i remember…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NUnit vs. MsTest: NUnit wins for Unit Testing. By Roy Osherove March 5, 2010 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 5, 2010; technical details may be outdated. [People are still wondering](http://stackoverflow.com/questions/1487773/is-there-anything-i-can-do-in-nunit-that-i-cant-do-in-mstest/) what are the differences between the two most popular unit testing frameworks in the .NET world: the open source NUnit and the commercial MsTest). Here’s a short list of what i remember instantly: - Nunit contains a \[TestCase\] attribute that allows implementing parametrized tests. this does not exist in msTest - MsTest's ExpectedException attribute has a bug where the expected message is never really asserted even if it's wrong - the test will pass. - Nunit has an Assert.Throws API to allow testing an exception on a specific line of code instead of the whole method (you can easily implement this one yourself though) - Nunit contains a fluent version of Assert api (as already mentioned - Assert.That..) - Nunit is much faster - NUnit can run tests in 32 and 64 bit (MSTest only runs them in 32 bit IIRC) - NUnit allows abstract classes to be test fixtures (so you can inherit test fixtures). MsTest does not. - NUnit allows non public classes to be test fixtures (as of the latest version) - NUnit was created SOLELY for the idea of unit testing. MsTest was created for Testing - and also a bit of unit testing. - NUnit contains PNunit (running prallel tests with Nunit). MsTest only adds this ability in vs 2010 given all these – **MsTest has much better abilities for integration based testing** (all these are things Nunit doesn’t even want to have): - ability to do data-driven tests from a db data source - ability to do performance testing - ability to determine the order of tests (ordered tests) - ability to easily setup and teardown and generate database data - great integration with team system reporting for LOADS of statistics **having said all these:** if you’re working with team system, I’d use MsTest. the integration with other team system tools and reporting is just beyond compare and the reporting alone helps alot to find recurring breaking tests, code churn vs. new tests and others. ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Mar 19, 2010 ### [Code excavations, wishful invocations, perimeters and domain specific unit test frameworks](https://osherove.com/blog/2010/3/19/code-excavations-wishful-invocations-perimeters-and-domain-s.html) - Mar 7, 2010 ### [Introducing Typemock Test Lint](https://osherove.com/blog/2010/3/7/introducing-typemock-test-lint.html) - Feb 13, 2010 ### [Inhibiting design tooling and sex education](https://osherove.com/blog/2010/2/13/inhibiting-design-tooling-and-sex-education.html) - Jan 12, 2010 ### [Unit Testing Biztalk : Two possible frameworks](https://osherove.com/blog/2010/1/12/unit-testing-biztalk-two-possible-frameworks.html) --- title: "Solution: Visual Studio 2010 beta 2 extension does not load in vs 2010 RC" url: "https://osherove.com/blog/2010/2/23/solution-visual-studio-2010-beta-2-extension-does-not-load-i.md" canonical: "https://osherove.com/blog/2010/2/23/solution-visual-studio-2010-beta-2-extension-does-not-load-i.html" published: "2010-02-23T23:43:37" updated: "2010-02-23T23:43:37" tags: [".NET"] author: "Roy Osherove" description: "like (I think) many others, the extension I am writing for visual studio 2010 beta did not even load on the new visual studio 2010 RC. After searching and asking around, it looks like the main breaking change for me was…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Solution: Visual Studio 2010 beta 2 extension does not load in vs 2010 RC By Roy Osherove February 23, 2010 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published February 23, 2010; technical details may be outdated. like (I think) many others, the extension I am writing for visual studio 2010 beta did not even load on the new visual studio 2010 RC. After searching and asking around, it looks like the main breaking change for me was that I was importing an IServiceProvider type, which in the RC needs to be imported as SvsServiceProvider. all I needed to do was change form this: **_\[Import(typeof(IServiceProvider)\]_** _public IServiceProvider provider;_ To this: **_\[Import(typeof(SvsServiceProvider)\]_** _public IServiceProvider provider;_ you can see [some other changes here](http://blogs.msdn.com/noahric/archive/2010/02/11/what-s-new-for-extenders-in-the-visual-studio-2010-rc.aspx). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Apr 9, 2010 ### [Finding the location of vsixInstaller.exe programmatically](https://osherove.com/blog/2010/4/9/finding-the-location-of-vsixinstallerexe-programmatically.html) - Apr 9, 2010 ### [Things to install on a new machine – revisited](https://osherove.com/blog/2010/4/9/things-to-install-on-a-new-machine-revisited.html) - Feb 10, 2010 ### [Working on a new product](https://osherove.com/blog/2010/2/10/working-on-a-new-product.html) - Jan 30, 2010 ### [TDD master class – Vienna Feb 15-19](https://osherove.com/blog/2010/1/30/tdd-master-class-vienna-feb-15-19.html) --- title: "Vienna done!" url: "https://osherove.com/blog/2010/2/20/vienna-done.md" canonical: "https://osherove.com/blog/2010/2/20/vienna-done.html" published: "2010-02-20T14:50:22" updated: "2010-02-20T14:50:22" tags: [] author: "Roy Osherove" description: "My TDD course week in Vienna just finished, and Vienna was a blast! I got to hang out with (admittedly very quiet) geeks: how geeky? Lars (who came all the way from Denmark!) actually brought over his avatar 3d glasses…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Vienna done! By Roy Osherove February 20, 2010 **Historical article** · Originally published February 20, 2010; technical details may be outdated. My [TDD course week](https://osherove.com/training/) in Vienna just finished, and Vienna was a blast! I got to hang out with (admittedly very quiet) geeks: how geeky? Lars (who came all the way from Denmark!) actually brought over his avatar 3d glasses to dinner: --- title: "Inhibiting design tooling and sex education" url: "https://osherove.com/blog/2010/2/13/inhibiting-design-tooling-and-sex-education.md" canonical: "https://osherove.com/blog/2010/2/13/inhibiting-design-tooling-and-sex-education.html" published: "2010-02-13T14:58:19" updated: "2010-02-13T14:58:19" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "during a reply to a thread about design for testability , Pat Maddox wrote something interesting about how the inherent testability in Ruby still does not make up for the lack of design skills: “ Too often I'm finding…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Inhibiting design tooling and sex education By Roy Osherove February 13, 2010 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published February 13, 2010; technical details may be outdated. during [a reply to a thread about design for testability](http://tech.groups.yahoo.com/group/testdrivendevelopment/message/32355), Pat Maddox wrote something interesting about how the inherent testability in Ruby still does not make up for the lack of design skills: > “_Too often I'm finding in the Ruby community we've got people who have learned how to test, and even take advantage of Ruby's flexibility when writing tests, but have never learned how to design. They end up doing crazy shit because **(a) they don't know any better and (b) they can**_.” My immediate thought was that the community’s biggest mistake is  sticking to tooling that tries to fix “b” (because they can) instead of “a” (they don’t know any better") it leads to a false sense of teaching when you’re just making people go through hoops to get things testable in a different way, and still does not teach proper design. it’s like the old debate of whether you should give out condoms to teenagers or teach\\force them abstinence. they **will** have sex, it’s just a matter of how well you educate them about it, and give them the proper knowledge and tooling to handle it safely. forcing them to hide it or assuming that they don’t do it because you told them so isn’t going to work. Just because you force someone to work with [MOQ](http://moq.me/) doesn’t mean their design will not be crappy, it just means you feel better about yourself, and you’re not teaching them the right thing – when and where to use design techniques in which situations. Instead, start doing brown bags, code reviews and get some copies of [clean code](https://www.amazon.com/gp/product/0132350882?ie=UTF8&tag=iserializable-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=0132350882). ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 24, 2010 ### [Introducing QuickUnit](https://osherove.com/blog/2010/3/24/introducing-quickunit.html) - Mar 19, 2010 ### [Code excavations, wishful invocations, perimeters and domain specific unit test frameworks](https://osherove.com/blog/2010/3/19/code-excavations-wishful-invocations-perimeters-and-domain-s.html) - Feb 10, 2010 ### [Working on a new product](https://osherove.com/blog/2010/2/10/working-on-a-new-product.html) - Jan 30, 2010 ### [TDD master class – Vienna Feb 15-19](https://osherove.com/blog/2010/1/30/tdd-master-class-vienna-feb-15-19.html) --- title: "Working on a new product" url: "https://osherove.com/blog/2010/2/10/working-on-a-new-product.md" canonical: "https://osherove.com/blog/2010/2/10/working-on-a-new-product.html" published: "2010-02-10T13:59:44" updated: "2010-02-10T13:59:44" tags: [".NET", "Agile"] author: "Roy Osherove" description: "I’ve been heads down in the past few weeks working on a new product. a public alpha\\beta will be out end of this month. It is in the field of unit testing. Can you guess what it is? hints : There is parsing involved…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Working on a new product By Roy Osherove February 10, 2010 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published February 10, 2010; technical details may be outdated. I’ve been heads down in the past few weeks working on a new product. a public alpha\\beta will be out end of this month. It is in the field of unit testing. Can you guess what it is? **hints**: - There is parsing involved - [IWpfTextView](http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.text.editor.iwpftextview\(VS.100\).aspx) - [My book](http://www.manning.com/affiliate/idevaffiliate.php?id=462_91) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Apr 9, 2010 ### [Things to install on a new machine – revisited](https://osherove.com/blog/2010/4/9/things-to-install-on-a-new-machine-revisited.html) - Feb 23, 2010 ### [Solution: Visual Studio 2010 beta 2 extension does not load in vs 2010 RC](https://osherove.com/blog/2010/2/23/solution-visual-studio-2010-beta-2-extension-does-not-load-i.html) - Jan 30, 2010 ### [TDD master class – Vienna Feb 15-19](https://osherove.com/blog/2010/1/30/tdd-master-class-vienna-feb-15-19.html) - Jan 21, 2010 ### [18 Questions to ask yourself when choosing continuous integration and build automation tools](https://osherove.com/blog/2010/1/21/18-questions-to-ask-yourself-when-choosing-continuous-integr.html) --- title: "Wanted: WPF Designer" url: "https://osherove.com/blog/2010/2/9/wanted-wpf-designer.md" canonical: "https://osherove.com/blog/2010/2/9/wanted-wpf-designer.html" published: "2010-02-09T08:51:46" updated: "2010-02-09T08:51:46" tags: [] author: "Roy Osherove" description: "I’m looking for a skilled freelance WPF designer for short gigs, that can help design beautiful and usable wpf control layouts and UI behaviors, and images to be used in and around those controls. (DO NOT contact me if…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Wanted: WPF Designer By Roy Osherove February 9, 2010 **Historical article** · Originally published February 9, 2010; technical details may be outdated. I’m looking for a skilled freelance **WPF designer** for short gigs, that can help design beautiful and usable wpf control layouts and UI behaviors,  and images to be used in and around those controls. (DO NOT contact me if you DO NOT have WPF skills) [Please contact me](https://osherove.com/request-more-info/) with links to existing works you’ve done. --- title: "TDD master class – Vienna Feb 15-19" url: "https://osherove.com/blog/2010/1/30/tdd-master-class-vienna-feb-15-19.md" canonical: "https://osherove.com/blog/2010/1/30/tdd-master-class-vienna-feb-15-19.html" published: "2010-01-30T17:20:55" updated: "2010-01-30T17:20:55" tags: [".NET", "Agile"] author: "Roy Osherove" description: "I will be in Vienna again in two weeks , from Feb 15-19 ,doing my TDD master class . There are two seats left – and I’d love to see you there! here’s what other people who attended had to say about this class . You can…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD master class – Vienna Feb 15-19 By Roy Osherove January 30, 2010 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published January 30, 2010; technical details may be outdated. I [will be in Vienna again in two weeks](http://www.hlmc.at/termine/roy-osherove-tdd-masterclass.html), from Feb 15-19 ,doing my [TDD master class](https://osherove.com/tdd-training/) . There are two seats left – and I’d love to see you there! here’s what other people who attended [had to say about this class](https://osherove.com/testimonials/). [You can register here.](http://www.hlmc.at/termine/roy-osherove-tdd-masterclass.html) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Feb 23, 2010 ### [Solution: Visual Studio 2010 beta 2 extension does not load in vs 2010 RC](https://osherove.com/blog/2010/2/23/solution-visual-studio-2010-beta-2-extension-does-not-load-i.html) - Feb 10, 2010 ### [Working on a new product](https://osherove.com/blog/2010/2/10/working-on-a-new-product.html) - Jan 21, 2010 ### [18 Questions to ask yourself when choosing continuous integration and build automation tools](https://osherove.com/blog/2010/1/21/18-questions-to-ask-yourself-when-choosing-continuous-integr.html) - Jan 14, 2010 ### [January at Israel .net user group: Unit Testing!](https://osherove.com/blog/2010/1/14/january-at-israel-net-user-group-unit-testing.html) --- title: "Why we all need celebrity programmers" url: "https://osherove.com/blog/2010/1/23/why-we-all-need-celebrity-programmers.md" canonical: "https://osherove.com/blog/2010/1/23/why-we-all-need-celebrity-programmers.html" published: "2010-01-23T16:02:40" updated: "2010-01-23T16:02:40" tags: [] author: "Roy Osherove" description: "before scott bellware disappeared off the twitter radar, he kept talking about the idea of “celebrity” being the big problem with communities such as ALT.NET, and lately with the Lean and Craftsmanship movements. I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why we all need celebrity programmers By Roy Osherove January 23, 2010 **Historical article** · Originally published January 23, 2010; technical details may be outdated. before [scott bellware](http://blog.scottbellware.com/) disappeared off the twitter radar, he kept talking about the idea of “celebrity” being the big problem with communities such as ALT.NET, and lately with the Lean and Craftsmanship movements. I actually think that celebrity is an essential and important driving force for any programming community. The analogy I can draw is to the drug-creating companies. drugs helps people feel better – they make the world better, actually. but they are not free. in fact some of the most helpful drugs out there are far from easy to purchase, and cost so much money you’d need to sell a house or two to sponsor treatments using them. That’s not by chance. Drugs need to cost money so that the companies that make them have a good incentive to do the heavy lifting when it comes to researching the creation of new drugs. The fact that drugs cost so much money actually helps _drive_ the creation of new and better drugs to the world. taken a few notches down, many developers, consultants and trainers out there want to become some sort of vertical celebrity in some field in software. They will work hard to drive and become a specific field where they will be known as someone to go to in that field. They will do the heavy lifting when it comes to researching new and exciting methods to develop software, to use new programming languages and to bring something new to the existing world we live in. The need for people to stand out in the crowd is a very large driver for change in behavior, practices and whole methodologies. But what happens when those people get what they wanted? maybe they will just stand still, trying to hold on to the thing they’ve gotten, protecting it from others? No to worry. For each **existing** celebrity, there exists N **unknown** future celebrities who also want to stand out. they will be forced to drive through, to push other boundaries than the ones that already exist (since they already have people associated with them) and to drive home a new concept, language, practice, methodology – anything unique that can make waves in the community, and by chance also get their names up in print somewhere in the future. It’s free market, and trying to throw rocks at those who’ve already achieved this is as useless as telling drug companies to lower their prices. Don’t worry – there’s always another company out there with the next big cure for something – the existing companies **cannot** hold back progress-  since it’s ingrained in people. --- title: "18 Questions to ask yourself when choosing continuous integration and build automation tools" url: "https://osherove.com/blog/2010/1/21/18-questions-to-ask-yourself-when-choosing-continuous-integr.md" canonical: "https://osherove.com/blog/2010/1/21/18-questions-to-ask-yourself-when-choosing-continuous-integr.html" published: "2010-01-21T14:57:02" updated: "2010-01-21T14:57:02" tags: [".NET", "Agile"] author: "Roy Osherove" description: "In a previous post I explained the different between Continuous Integration tools and Build automation tools , but there’s also lots of be said for HOW to pick a specific CI or BA tool. What do I look for in a CI tool?…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 18 Questions to ask yourself when choosing continuous integration and build automation tools By Roy Osherove January 21, 2010 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published January 21, 2010; technical details may be outdated. [In a previous post I explained the different between Continuous Integration tools and Build automation tools](http://weblogs.asp.net/rosherove/archive/2010/01/14/the-difference-between-continuous-integration-tools-and-automated-build-tools.aspx), but there’s also lots of be said for HOW to pick a specific CI or BA tool. **What do I look for in a CI tool?** - first and foremost – **how intuitive and usable is it?** how easy is it to add, remove or change build configurations? How long will it take me to explain to a new dev on my team how these builds are connected?, and how long will it take them to change or fix a build related problem? - Does it have the ability to run builds on “slave” machines or just on the local machine where its installed? - Do I need to use XML to configure it? - How easy is it to see the status of a build, history of builds? - can I “kill” and detect a “stuck” build? - How long does it take to setup? - Does it have good metrics? - does it contain ability to launch random “exe” or “command line” batch files? - Does it allow for build hierarchies? (builds that depend on each other’s output, or that trigger each other automatically, or that all have to pass ) - Is there a large community or product support in case of a commercial product? - How much does it cost? will it cost me more to use a “free” tool given the questions above? **What do I look for in a build automation tool?** - first and foremost – **how intuitive and usable is it?** is the configuration interface visual? XML based? tree based? how easy is it to add, remove or change existing scripts? How long will it take me to explain to a new dev on my team how the build works, and how long will it take them to change or fix a build related problem? - How many built in tasks are there with the tool? the more “custom” tasks i need to create to make my build work, the less productive I am - How easy is it to create a custom task? in what language? how easy is it to integrate a custom task into a build flow? - Can a script run other scripts ? - How easy is it to read the log generated by the build tool? - How well does it play with my existing toolset? (if I use TFS – can I easily invoke it from TFS? can it invoke TFS related things like add new TFS task items?) - Is there a large community or product support in case of a commercial product? - How much does it cost? will it cost me more to use a “free” tool given the questions above? **Bonus question:** - Am I choosing this tool blindly because someone I respect is using it, or did I check other options and this choice is based on the actual pros and cons of the tool? ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Feb 10, 2010 ### [Working on a new product](https://osherove.com/blog/2010/2/10/working-on-a-new-product.html) - Jan 30, 2010 ### [TDD master class – Vienna Feb 15-19](https://osherove.com/blog/2010/1/30/tdd-master-class-vienna-feb-15-19.html) - Jan 14, 2010 ### [January at Israel .net user group: Unit Testing!](https://osherove.com/blog/2010/1/14/january-at-israel-net-user-group-unit-testing.html) - Jan 14, 2010 ### [The difference between continuous Integration tools and automated build tools](https://osherove.com/blog/2010/1/14/the-difference-between-continuous-integration-tools-and-auto.html) --- title: "January at Israel .net user group: Unit Testing!" url: "https://osherove.com/blog/2010/1/14/january-at-israel-net-user-group-unit-testing.md" canonical: "https://osherove.com/blog/2010/1/14/january-at-israel-net-user-group-unit-testing.html" published: "2010-01-14T16:27:00" updated: "2010-01-14T16:27:00" tags: [".NET", "Agile"] author: "Roy Osherove" description: "The January meeting of the Israel Dot Net Developers User Group will be held on Wednesday January 20, 2010. This meeting will focus on real-real issues and practices in developing unit tests, with a variety of tools.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # January at Israel .net user group: Unit Testing! By Roy Osherove January 14, 2010 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published January 14, 2010; technical details may be outdated. The January meeting of the Israel Dot Net Developers User Group will be held on Wednesday January  20, 2010.   This meeting will focus on real-real issues and practices in developing unit tests, with a variety of tools.  Our speakers will be Dror Helper and Gil Zilberfeld from the company **Typemock**. Details of his special user group presentation are given below: **Please register for this event at:** [**IDNDUG  January 2010 registration**](http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032439094&Culture=he-IL) **When:** Wednesday January 20, 2010 **At: ****Microsoft Israel** **2 Hapnina St,  Ra'anana  (09) 7625-100** **Floor 0 , Dekel Room** **It is the building across from Amdocs.** **Turn right at the first traffic circle and then there is an area for (free) parking.** Abstract: Unit tests increase the programmer’s confidence that individual units of source code are fit for use. Although most software developers have heard about unit testing and some even use TDD at their work there is more to unit tests then writing tests using a framework. This session is intended for developers that want to know more about unit testing and TDD and how it can help them produce better code. Part 1 – Real life unit testing Tools are not enough. If you want to succeed overtime, you need more ammunition. Some people call them best practices. We call them real life lessons. Let’s share. ·         Why should every developer unit test his code ·         Unit testing tools ·         TDD & Unit testing best practices ·         How to avoid writing fragile tests ·         Testing special scenarios Part 2 - How to make a mockery So you’ve decided you want to unit test. Good for you. But are you ready for the next step? In the real world, applications are so complex, that in order to test a component in isolation, you need a new set of tools. He’s what we’re going to learn: •        What’s the problem? •        Why is it so confusing? •        That’s how I roll (my own mocks) •        All sorts of Isolation frameworks •        Road-bumps and stabilizers 17:30 - 18:00   Assembly 18:00 - 19:15   “**Real\_life Unit Testing**”                          Dror Helper and Gil Zilberfeld, Typemock 19:15 - 19:30   Break 19:30 – 20:30  “**How to Make a Mockery**”           Dror Helper and Gil Zilberfeld, Typemock **About the presenters:** _Dror Helper is an experienced software developer currently working at Typemock where he develops unit testing tools. Over the past 7 years, he has designed and developed applications in various fields including video streaming, eCommerce and performance tools. He is passionate about programming best practices and unit testing, and is always willing to talk about the subject. He was a guest presenter at several user groups. Visit Dror’s blog ([http://blogs.microsoft.co.il/blogs/dhelper/](http://blogs.microsoft.co.il/blogs/dhelper/)) where he writes about software development and best practices._ _Gil Zilberfeld has been in software since childhood, starting with Logo turtles. After 15 years in commercial software companies, he has vast experience in development and development practices. Currently Gil is the Technical Evangelist of Typemock, promoting unit testing and some incredibly cool tools. He's also taken part in the Alt.Net Israel community, and has run talks in different groups. Gil blogs on the Typemock blog ([http://blog.typemock.com](http://blog.typemock.com/)). Gil and Dror produce the [“This Week in Testing”](http://www.typemock.com/this-week-in-test/) webcast on the Typemock site._ Take Care, ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jan 30, 2010 ### [TDD master class – Vienna Feb 15-19](https://osherove.com/blog/2010/1/30/tdd-master-class-vienna-feb-15-19.html) - Jan 21, 2010 ### [18 Questions to ask yourself when choosing continuous integration and build automation tools](https://osherove.com/blog/2010/1/21/18-questions-to-ask-yourself-when-choosing-continuous-integr.html) - Jan 14, 2010 ### [The difference between continuous Integration tools and automated build tools](https://osherove.com/blog/2010/1/14/the-difference-between-continuous-integration-tools-and-auto.html) - Jan 12, 2010 ### [Unit Testing Biztalk : Two possible frameworks](https://osherove.com/blog/2010/1/12/unit-testing-biztalk-two-possible-frameworks.html) --- title: "The difference between continuous Integration tools and automated build tools" url: "https://osherove.com/blog/2010/1/14/the-difference-between-continuous-integration-tools-and-auto.md" canonical: "https://osherove.com/blog/2010/1/14/the-difference-between-continuous-integration-tools-and-auto.html" published: "2010-01-14T12:08:20" updated: "2010-01-14T12:08:20" tags: [".NET", "Agile"] author: "Roy Osherove" description: "Lots of people have a common misunderstanding of the (subtle) differences between the various tooling regarding continuous integration and build automateion. Here’s the gist of it: Build automation: Build automation…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The difference between continuous Integration tools and automated build tools By Roy Osherove January 14, 2010 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published January 14, 2010; technical details may be outdated. Lots of people have a common misunderstanding of the (subtle) differences between the various tooling regarding continuous integration and build automateion. Here’s the gist of it: **Build automation:** Build automation tools are tools you use to automate the build process, instead of doing it manually. Build automation tools include: - batch files - [MSBuild](http://msdn.microsoft.com/en-us/library/0k6kkbsd.aspx) files (csproj and vbproj files are really msbuild files inside, for example) - [NAnt](http://nant.sourceforge.net/) files - [FinalBuilder](http://www.finalbuilder.com/) (slick, visual editor, hundreds of built in tasks) - [VisualBuild](http://www.kinook.com/VisBuildPro/) (slick, visual editor) - [Rake](http://martinfowler.com/articles/rake.html) (based on Ruby) - [BooBS](http://code.google.com/p/boo-build-system/) (Boo Build System) **Continuous Integration:** CI tools are the **triggers** that listen to various “events’ in the network (a check-in to source control, for example could be a trigger. You can configure these tools to do a few simple things when an event happens. One of those things can be to invoke one of the tools in the previous list. Some of the CI tools, though, include a few simple built in build atomation power (such as built in MSBuild support, or running tests) but you would do much better choosing a CI tool that invokes a build automation power tool, since each are design with different goals in mind. CI tools include: - [TeamCity](http://www.jetbrains.com/teamcity/index.html) (recommended 0 invokes msbuild, command line, tests, and more) - [Team System Build server](http://msdn.microsoft.com/en-us/library/ms181710\(VS.80\).aspx) (invokes MSBuild files) - [Hudson](http://hudson-ci.org/) (mosty used in Java contexts but I hear some .net devs use it too) - [CruiseControl.NET](http://cruisecontrol.sourceforge.net/) (xml based – very mature but also old fashioned..) - others..? **What should you use?** I really like to take the best of each category. I’ve found the combination of using **TeamCity** to listen and configure events which then triggers a **FinalBuilder** script file as an ultimate combination of both power and (very important!) maintainability and understandability of the process. I really despise tools that force you to configure huge xml files (msBuild, CCNet, NAnt) as that is a maintainability nightmare waiting to happen. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jan 21, 2010 ### [18 Questions to ask yourself when choosing continuous integration and build automation tools](https://osherove.com/blog/2010/1/21/18-questions-to-ask-yourself-when-choosing-continuous-integr.html) - Jan 14, 2010 ### [January at Israel .net user group: Unit Testing!](https://osherove.com/blog/2010/1/14/january-at-israel-net-user-group-unit-testing.html) - Jan 12, 2010 ### [Unit Testing Biztalk : Two possible frameworks](https://osherove.com/blog/2010/1/12/unit-testing-biztalk-two-possible-frameworks.html) - Jan 11, 2010 ### [Poll: Do you use NUnit’s fluent API?](https://osherove.com/blog/2010/1/11/poll-do-you-use-nunits-fluent-api.html) --- title: "Unit Testing Biztalk : Two possible frameworks" url: "https://osherove.com/blog/2010/1/12/unit-testing-biztalk-two-possible-frameworks.md" canonical: "https://osherove.com/blog/2010/1/12/unit-testing-biztalk-two-possible-frameworks.html" published: "2010-01-12T14:51:55" updated: "2010-01-12T14:51:55" tags: [".NET", "Agile", "Unit Testing"] author: "Roy Osherove" description: "BizTalk is notoriously hard to test. But I just came a cross a couple of interesting solutions to do unit testing for biztalk related logic and orchestration. BizMock : “BizMock is a framework for testing BizTalk…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing Biztalk : Two possible frameworks By Roy Osherove January 12, 2010 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published January 12, 2010; technical details may be outdated. BizTalk is notoriously hard to test. But I just came a cross a couple of interesting solutions to do unit testing for biztalk related logic and orchestration. 1. [BizMock](http://biztodd.blogspot.com/2009/12/what-is-bizmock.html) : > “BizMock is a framework for testing BizTalk solutions, using a Domain Driven Design (DDD) approach and fluent interface API. It has mocking capabilities, so no need to rely on dependent infraestructure like web services or DBs. The tests are writen and executed from within VS using regular Visual Studio Tests and C# code, allowing a TDD and agile development style of BizTalk solutions.” 2. [Bizmonade](http://bizmonade.matricis.com/): (I really don’t like the name) > “Bizmonade is a new project being developed to enable unit testing of BizTalk orchestrations, in isolation of other components, **without deploying the orchestrations to BizTalk** and without doing any configuration (bindings). > It allows running orchestrations directly from unit tests written in C#, using NUnit, MSTest or any another .Net testing tool. The orchestrations therefore run in complete isolation from the whole BizTalk environment, reducing the time needed to do quick tests of new orchestrations or of modifications to existing ones.” the API for BizMonade looks really interesting, but since I’m no Biztalk Guru, I don’t know if it satisfies what you’d want to test in a biztalk solution. With BizMock, the fact that one would need a “DeploymentItem” on the tests might mean that it’s an integration style test framework that’s just easier to get up and running, but not a “pure” unit testing solution. However, I’m not sure since I have not used it. Do you use these? or other solutions? Update: there’s [also BizUnit](http://www.codeplex.com/bizunit) , but god help me if I ever recommend people to use XML for making tests. [DON’T USE XML.](http://5whys.com/blog/be-productive-and-stop-using-xml.html) Please. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jan 14, 2010 ### [January at Israel .net user group: Unit Testing!](https://osherove.com/blog/2010/1/14/january-at-israel-net-user-group-unit-testing.html) - Jan 14, 2010 ### [The difference between continuous Integration tools and automated build tools](https://osherove.com/blog/2010/1/14/the-difference-between-continuous-integration-tools-and-auto.html) - Jan 11, 2010 ### [Poll: Do you use NUnit’s fluent API?](https://osherove.com/blog/2010/1/11/poll-do-you-use-nunits-fluent-api.html) - Jan 6, 2010 ### [TDD: 4 questions that will help you create the simplest thing that could possibly work](https://osherove.com/blog/2010/1/6/tdd-4-questions-that-will-help-you-create-the-simplest-thing.html) --- title: "Poll: Do you use NUnit’s fluent API?" url: "https://osherove.com/blog/2010/1/11/poll-do-you-use-nunits-fluent-api.md" canonical: "https://osherove.com/blog/2010/1/11/poll-do-you-use-nunits-fluent-api.html" published: "2010-01-11T16:39:02" updated: "2010-01-11T16:39:02" tags: [".NET", "Agile"] author: "Roy Osherove" description: "if you use NUnit, did you know it has a fluent API option? Do you use it? you can write the following: Assert.That( someString, Is.Not.Null .And.Not.Empty .And.EqualTo(\"foo\") .And.Not.EqualTo(\"bar\")…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Poll: Do you use NUnit’s fluent API? By Roy Osherove January 11, 2010 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published January 11, 2010; technical details may be outdated. if you use NUnit, did you know it has a fluent API option? Do you use it? you can write the following: Assert.That( someString,       Is.Not.Null       .And.Not.Empty       .And.EqualTo("foo")       .And.Not.EqualTo("bar")       .And.StartsWith("f")); Assert.That(someEnumerable,     Has.Count.EqualTo(2),     .And.Contains.Some.Matches(x => x.FirstName == "Jim")     .And.Contains.None.Matches(x => x.LastName == "Jones")); Assert.That( x => ,     Throws.TypeOf().With.Message.EqualTo("Too Bad!"); ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jan 14, 2010 ### [The difference between continuous Integration tools and automated build tools](https://osherove.com/blog/2010/1/14/the-difference-between-continuous-integration-tools-and-auto.html) - Jan 12, 2010 ### [Unit Testing Biztalk : Two possible frameworks](https://osherove.com/blog/2010/1/12/unit-testing-biztalk-two-possible-frameworks.html) - Jan 6, 2010 ### [TDD: 4 questions that will help you create the simplest thing that could possibly work](https://osherove.com/blog/2010/1/6/tdd-4-questions-that-will-help-you-create-the-simplest-thing.html) - Jan 3, 2010 ### [Oslo TDD Course – First day canceled](https://osherove.com/blog/2010/1/3/oslo-tdd-course-first-day-canceled.html) --- title: "How SilverUnit can help you be famous" url: "https://osherove.com/blog/2010/1/10/how-silverunit-can-help-you-be-famous.md" canonical: "https://osherove.com/blog/2010/1/10/how-silverunit-can-help-you-be-famous.html" published: "2010-01-10T13:29:11" updated: "2010-01-10T13:29:11" tags: ["Agile"] author: "Roy Osherove" description: "Want to be famous? If you’ve used SilverUnit to successfully help you test your silverlight code, I might be able to help. I’m working on a conference talk showing SilverUnit and the idea of system wide isolation, and I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How SilverUnit can help you be famous By Roy Osherove January 10, 2010 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published January 10, 2010; technical details may be outdated. Want to be famous? [If you’ve used SilverUnit](http://cthru.codeplex.com/wikipage?title=SilverUnit%20examples&referringTitle=Home) to successfully help you test your silverlight code, I might be able to help. I’m working on a conference talk showing SilverUnit and the idea of system wide isolation, and I want to also mention people who’ve used SilverUnit to help solve tough testing issues. I’ll also be doing a short song about this, and if you send me a cool story of how it actually helped you, I’ll include your name in the song which will be videos and put on my site for the world to see :) [Ping me and tell me all about your SilverUnit success story](http://weblogs.asp.net/rosherove/contact.aspx). ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jan 12, 2010 ### [Unit Testing Biztalk : Two possible frameworks](https://osherove.com/blog/2010/1/12/unit-testing-biztalk-two-possible-frameworks.html) - Jan 11, 2010 ### [Poll: Do you use NUnit’s fluent API?](https://osherove.com/blog/2010/1/11/poll-do-you-use-nunits-fluent-api.html) - Jan 6, 2010 ### [TDD: 4 questions that will help you create the simplest thing that could possibly work](https://osherove.com/blog/2010/1/6/tdd-4-questions-that-will-help-you-create-the-simplest-thing.html) - Jan 3, 2010 ### [Oslo TDD Course – First day canceled](https://osherove.com/blog/2010/1/3/oslo-tdd-course-first-day-canceled.html) --- title: "List of extensibility points in visual studio 2010" url: "https://osherove.com/blog/2010/1/10/list-of-extensibility-points-in-visual-studio-2010.md" canonical: "https://osherove.com/blog/2010/1/10/list-of-extensibility-points-in-visual-studio-2010.html" published: "2010-01-10T07:45:00" updated: "2010-01-10T07:45:00" tags: ["C#"] author: "Roy Osherove" description: "How long i’ve been looking for some concrete list of interfaces – god knows. There is only this category-like list of possible extensible areas. but that’s not good enough. went to Reflector, and analyzed all the usages…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # List of extensibility points in visual studio 2010 By Roy Osherove January 10, 2010 In [C#](https://osherove.com/blog/category/c) **Historical article** · Originally published January 10, 2010; technical details may be outdated. How long i’ve been looking for some concrete list of interfaces – god knows. [There is only this category-like](http://msdn.microsoft.com/en-us/vsx/bb980955.aspx) list of possible extensible areas. but that’s not good enough. went to Reflector, and analyzed all the usages of ImportAttribute in the visual studio assemblies. For future lookup, here’s the full list of interfaces that can (and are) used to extend visual studio 2010 functionality. I’m sure most of it is not usable , but it’s good to know just how big this ecosystem is. nice and simple, eh? (1.1 mb file of this image [is here](https://osherove.com/img/sq/1000w-ImportedTypes.png)) ## More in C# [All posts in C#](https://osherove.com/blog/category/c) - Aug 11, 2009 ### [Script# (Script Sharp) – writing javascript in C#](https://osherove.com/blog/2009/8/11/script-script-sharp-writing-javascript-in-c.html) - Oct 23, 2007 ### [Dave Platt In Israel - CAB Fans Prepare yourself](https://osherove.com/blog/2007/10/23/dave-platt-in-israel-cab-fans-prepare-yourself.html) --- title: "TDD: 4 questions that will help you create the simplest thing that could possibly work" url: "https://osherove.com/blog/2010/1/6/tdd-4-questions-that-will-help-you-create-the-simplest-thing.md" canonical: "https://osherove.com/blog/2010/1/6/tdd-4-questions-that-will-help-you-create-the-simplest-thing.html" published: "2010-01-06T14:36:08" updated: "2010-01-06T14:36:08" tags: [".NET", "Agile", "Unit Testing"] author: "Roy Osherove" description: "Today in class I got to understand, for the first time, what I define as “the simplest thing that could possibly work” when doing TDD. Many people struggle with the idea of simplicity. the idea of doing things to the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD: 4 questions that will help you create the simplest thing that could possibly work By Roy Osherove January 6, 2010 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published January 6, 2010; technical details may be outdated. Today in class I got to understand, for the first time, what I define as “the simplest thing that could possibly work” when doing TDD. Many people struggle with the idea of simplicity. the idea of doing things to the point of “micro-increments” to the code, that will then help in driving out new tests that you had not thoguht about, is really tough. what’s missing is a simple set of rules you can check your implementation against. here’s a set of rules to serve as the basis for this discussion. I’m sure there are more, and i’m sure this will change over time, as defining this “simplicity pattern” is a rather new thing for me. I have not seen this done elsewhere. **the situation:** - You had a failing test - You went to the production code, and made the test (and all other tests) pass, in the simplest way you thought possible. - But was it really the simplest way? look at the code you just wrote in your production code and ask yourself the following: **“Can I implement the same solution in a way that is ..”** 1. _“.. More Hard coded ..”_ 2. _“.. Closer to the beginning of the method i wrote it in.. “_ 3. _“.. Less indented (in as less “scopes” as possible like “if”s, loops, try-catch ..”_ 4. _“.. shorter (literally less characters to write) yet still readable ..”_ **“… and still make all the tests pass?”** if the answer to one of these is “yes” then do that, and see all the tests still passing. the trick is this: by doing this, you’ve implemented the same feature (or part of feature) and yet you _know_that the feature is not complete yet. Something is _missing_. it might be too hard coded now, or not in the correct scope or it’s missing a check.. but all the tests are still passing, so you can’t change the code now(in tdd you can only change production code functionality when you have a failing test)! what do you have to do to be able to change the code? Add a test that proves that something is missing in the code! sometimes, you might discover that the simpler way is actually a good enough solution that does not need changing, or any more tests. either case, you’ve won – you either got a simpler solution to the same problem, or you discovered a test that was missing. Example: say, that, you had a new requirement to add a call to a logger when a login succeeds for a user. I won’t show the test that failed, just the code that you might have written to make the test pass: You added one line of code, that calls a logger with the string containing the user name and a short message. Now, let’s see how we can make this implementation simpler, without breaking any tests: _**1\. can I make it “.. More Hard coded ..” without breaking tests?**_ _**YES (I only have one test)**_ assuming the test was trying to log in with a user names “testuser” i can make the test pass by hardcoding the user name. this would _force_ me to write another test that sends in a _different_ user name to the method, that proves this cannot be a hard coded string. _2\. can I write it “.. Closer to the beginning of the method i wrote it in.. “_ _YES. Assuming there is no test that assume logger is called otherwise from this method, I can do this easily without breaking the test. I’ll just move the code up to the start of the method:_ **3\. can i make it “.. Less indented (in as less “scopes” as possible like “if”s, loops, try-catch ..”** YES. I already did, in the previous step. _**4\. can I make it “.. shorter (literally less characters to write) yet still readable ..”**_ doesn’t look like it. now, I have this code, and i _know_ it is not good enough. I need to prove that using tests before I can change it, which _forces me_ to think of two new tests: one that logs in with a different user name, and another that makes sure the logger is _not_ called unless the login is successful. **Are these tests valuable?** I’m not sure. Do we _really_ need a double test with two different values? I’m partial to this. Do we realy need a test that proves something _doesn’t_ happen? not crazy about it. it feels a but like over specification – why should i care if the logger is called or not in a place I don’t care about in terms of functionality? that test would break the second someone would add logging there, which is obviously needed, so it might just be a test waiting to be deleted. on the other hand… doing things so incrementally is a god way to teach small, incremental steps. as students become proficient, they can choose which increments to skip, but these small steps are good for “muscle memory” during kata training. should i really forgo these increments (therby loostening up the need to “micro-increment” and giving up muscle learning) in favor of teaching types of tests that arn’t needed? or is muscle memory important enough to “sacrifice” some robustness in a few tests (which is also very very important). which value is more important? micro-increments? or recognizing un-needed tests? which one is easier to learn later? it seems micro-increments (the way i teach) require writing some tests that may feel un-needed. but do I really want to let go of forcing this very powerful habit? ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jan 12, 2010 ### [Unit Testing Biztalk : Two possible frameworks](https://osherove.com/blog/2010/1/12/unit-testing-biztalk-two-possible-frameworks.html) - Jan 11, 2010 ### [Poll: Do you use NUnit’s fluent API?](https://osherove.com/blog/2010/1/11/poll-do-you-use-nunits-fluent-api.html) - Jan 3, 2010 ### [Oslo TDD Course – First day canceled](https://osherove.com/blog/2010/1/3/oslo-tdd-course-first-day-canceled.html) - Dec 31, 2009 ### [RTM ready tests](https://osherove.com/blog/2009/12/31/rtm-ready-tests.html) --- title: "Oslo TDD Course – First day canceled" url: "https://osherove.com/blog/2010/1/3/oslo-tdd-course-first-day-canceled.md" canonical: "https://osherove.com/blog/2010/1/3/oslo-tdd-course-first-day-canceled.html" published: "2010-01-03T14:57:19" updated: "2010-01-03T14:57:19" tags: [".NET", "Agile"] author: "Roy Osherove" description: "I’m so sorry to announce this. Due to various flight delays coming in to Oslo from Tel aviv, I am stuck in munich, only coming into Oslo tomorrow afternoon. That means that if you are part of my TDD course starting…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Oslo TDD Course – First day canceled By Roy Osherove January 3, 2010 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published January 3, 2010; technical details may be outdated. I’m so sorry to announce this. Due to various flight delays coming in to Oslo from Tel aviv, I am stuck in munich, only coming into Oslo tomorrow afternoon. That means that if you are part of my TDD course starting tomorrow, tomorrow’s day is canceled. Instead the following will take place: - Class starts Tuesday morning at 8AM (instead of 9AM) and will begin so for the rest of the week at 8. - We will try to finish days a bit later (though I doubt of the effectiveness – it’s a tough class and at the end of the day everyone is beat). We’ll see how this goes. - We will see about adding a half day or maybe more on Saturday if the class wants to. I will delay my return flight home to make this happen. Again, my apologies – these are unforeseen circumstances, but for next time I will be sure to pick flights that wil have less risks like this. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jan 11, 2010 ### [Poll: Do you use NUnit’s fluent API?](https://osherove.com/blog/2010/1/11/poll-do-you-use-nunits-fluent-api.html) - Jan 6, 2010 ### [TDD: 4 questions that will help you create the simplest thing that could possibly work](https://osherove.com/blog/2010/1/6/tdd-4-questions-that-will-help-you-create-the-simplest-thing.html) - Dec 31, 2009 ### [RTM ready tests](https://osherove.com/blog/2009/12/31/rtm-ready-tests.html) - Dec 31, 2009 ### [Brown, Green, Refactor](https://osherove.com/blog/2009/12/31/brown-green-refactor.html) --- title: "RTM ready tests" url: "https://osherove.com/blog/2009/12/31/rtm-ready-tests.md" canonical: "https://osherove.com/blog/2009/12/31/rtm-ready-tests.html" published: "2009-12-31T14:54:05" updated: "2009-12-31T14:54:05" tags: [".NET", "Agile"] author: "Roy Osherove" description: "a friend came up with a good way to describe good tests the way I see them (in my book I describe good unit tests as ones that are readable, maintainable and trust-worthy at the same time). He just called them RTM:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # RTM ready tests By Roy Osherove December 31, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published December 31, 2009; technical details may be outdated. a friend came up with a good way to describe good tests the way I see them [(in my book](http://artofunittesting.com/) I describe good unit tests as ones that are _readable, maintainable and trust-worthy_ at the same time). He just called them RTM: Readable, Trust-worthy, Maintainable I think I’ll keep this idea – as it flows well with the idea of an RTM application – can you actually “release” these tests to the market (that is – for someone else to read, maintain and trust)? ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jan 6, 2010 ### [TDD: 4 questions that will help you create the simplest thing that could possibly work](https://osherove.com/blog/2010/1/6/tdd-4-questions-that-will-help-you-create-the-simplest-thing.html) - Jan 3, 2010 ### [Oslo TDD Course – First day canceled](https://osherove.com/blog/2010/1/3/oslo-tdd-course-first-day-canceled.html) - Dec 31, 2009 ### [Brown, Green, Refactor](https://osherove.com/blog/2009/12/31/brown-green-refactor.html) - Dec 30, 2009 ### [Software Apprenticeship](https://osherove.com/blog/2009/12/30/software-apprenticeship.html) --- title: "Brown, Green, Refactor" url: "https://osherove.com/blog/2009/12/31/brown-green-refactor.md" canonical: "https://osherove.com/blog/2009/12/31/brown-green-refactor.html" published: "2009-12-31T14:50:56" updated: "2009-12-31T14:50:56" tags: [".NET", "Agile", "Unit Testing"] author: "Roy Osherove" description: "Having seen enough crappy unit tests to last me a lifetime, I think there should be a parallel to the old “ red-green-refactor ” (from TDD) – it’s evil twin brother should be “ Brown-Green-Refactor ” wherin you’d do a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Brown, Green, Refactor By Roy Osherove December 31, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published December 31, 2009; technical details may be outdated. Having seen enough crappy unit tests to last me a lifetime, I think there should be a parallel to the old “[red-green-refactor](http://jamesshore.com/Blog/Red-Green-Refactor.html)” (from TDD) – **it’s evil twin brother** should be “**Brown-Green-Refactor**” wherin you’d do a crappy test first, then make it pass (it could pass for the wrong reasons.. like threads, randoms, dates..), then refactor – the code, not the test. in red-green-refactor you’d write a _good_ test and remember to also refactor the _test_ when refactoring your code, if needed. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jan 3, 2010 ### [Oslo TDD Course – First day canceled](https://osherove.com/blog/2010/1/3/oslo-tdd-course-first-day-canceled.html) - Dec 31, 2009 ### [RTM ready tests](https://osherove.com/blog/2009/12/31/rtm-ready-tests.html) - Dec 30, 2009 ### [Software Apprenticeship](https://osherove.com/blog/2009/12/30/software-apprenticeship.html) - Dec 30, 2009 ### [Test Driven Development Master class in Sydney, Australia](https://osherove.com/blog/2009/12/30/test-driven-development-master-class-in-sydney-australia.html) --- title: "Software Apprenticeship" url: "https://osherove.com/blog/2009/12/30/software-apprenticeship.md" canonical: "https://osherove.com/blog/2009/12/30/software-apprenticeship.html" published: "2009-12-30T17:12:29" updated: "2009-12-30T17:12:29" tags: [".NET", "Agile"] author: "Roy Osherove" description: "Wow, maybe indeed it is time for a book about apprenticeship in software. I think the software craftsmanship initiative is long overdue, but it won’t be complete without the idea of proper leadership , not just…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Software Apprenticeship By Roy Osherove December 30, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published December 30, 2009; technical details may be outdated. Wow, maybe indeed it is time for a [book about apprenticeship](http://oreilly.com/catalog/9780596518387) in software. I think the software craftsmanship initiative is long overdue, but it won’t be complete without the [idea of proper leadership](http://5whys.com/), not just apprenticeship. speaking of books, there’s going to be a [special version of my book for java](http://www.manning.com/koskela2/). how cool is that? ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Dec 31, 2009 ### [RTM ready tests](https://osherove.com/blog/2009/12/31/rtm-ready-tests.html) - Dec 31, 2009 ### [Brown, Green, Refactor](https://osherove.com/blog/2009/12/31/brown-green-refactor.html) - Dec 30, 2009 ### [Test Driven Development Master class in Sydney, Australia](https://osherove.com/blog/2009/12/30/test-driven-development-master-class-in-sydney-australia.html) - Dec 30, 2009 ### [Advanced .NET Debugging](https://osherove.com/blog/2009/12/30/advanced-net-debugging.html) --- title: "Test Driven Development Master class in Sydney, Australia" url: "https://osherove.com/blog/2009/12/30/test-driven-development-master-class-in-sydney-australia.md" canonical: "https://osherove.com/blog/2009/12/30/test-driven-development-master-class-in-sydney-australia.html" published: "2009-12-30T16:57:36" updated: "2009-12-30T16:57:36" tags: [".NET"] author: "Roy Osherove" description: "I’ll be doing my TDD master class in Sydney, Australia this February, and I’d love to see as many of you ozzies there as possible :) while I'm there, during or after the course, I’m open to doing some short consulting…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven Development Master class in Sydney, Australia By Roy Osherove December 30, 2009 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published December 30, 2009; technical details may be outdated. I’ll be doing my [TDD master class in Sydney, Australia](https://osherove.com/upcoming-travel?from=post) this February, and I’d love to see as many of you ozzies there as possible :) while I'm there, during or after the course, I’m open to doing some short consulting or extra training gigs through readify, so if you’re interested – [ping me!](https://osherove.com/request-more-info/) I’ll also be bringing my little family along so we’ll have a little trip after the course. [![](https://osherove.com/img/sq/1000w-TDD-Sydeny-wide.png)](https://osherove.com/upcoming-travel?from=post) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Dec 31, 2009 ### [Brown, Green, Refactor](https://osherove.com/blog/2009/12/31/brown-green-refactor.html) - Dec 30, 2009 ### [Software Apprenticeship](https://osherove.com/blog/2009/12/30/software-apprenticeship.html) - Dec 30, 2009 ### [Advanced .NET Debugging](https://osherove.com/blog/2009/12/30/advanced-net-debugging.html) - Dec 30, 2009 ### [The legend of free tools](https://osherove.com/blog/2009/12/30/the-legend-of-free-tools.html) --- title: "Advanced .NET Debugging" url: "https://osherove.com/blog/2009/12/30/advanced-net-debugging.md" canonical: "https://osherove.com/blog/2009/12/30/advanced-net-debugging.html" published: "2009-12-30T16:49:00" updated: "2009-12-30T16:49:00" tags: [".NET"] author: "Roy Osherove" description: "I’ve started reading the book “ Advanced .NET Debugging ” and am loving the first chapter already – which is really just a list of debugging tools – at least a third of which I’ve not heard of. How awesome it is to feel…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Advanced .NET Debugging By Roy Osherove December 30, 2009 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published December 30, 2009; technical details may be outdated. I’ve started reading the book “[Advanced .NET Debugging](https://www.amazon.com/exec/obidos/ASIN/0321578899/iserializable-20)” and am loving the first chapter already – which is really just a list of debugging tools – at least a third of which I’ve not heard of. How awesome it is to feel stupid in a new area! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Dec 30, 2009 ### [Software Apprenticeship](https://osherove.com/blog/2009/12/30/software-apprenticeship.html) - Dec 30, 2009 ### [Test Driven Development Master class in Sydney, Australia](https://osherove.com/blog/2009/12/30/test-driven-development-master-class-in-sydney-australia.html) - Dec 30, 2009 ### [The legend of free tools](https://osherove.com/blog/2009/12/30/the-legend-of-free-tools.html) - Nov 16, 2009 ### [How to start agile development in your team](https://osherove.com/blog/2009/11/16/how-to-start-agile-development-in-your-team.html) --- title: "The legend of free tools" url: "https://osherove.com/blog/2009/12/30/the-legend-of-free-tools.md" canonical: "https://osherove.com/blog/2009/12/30/the-legend-of-free-tools.html" published: "2009-12-30T16:45:56" updated: "2009-12-30T16:45:56" tags: [".NET"] author: "Roy Osherove" description: "It amazes me that people still feel the need to solve things in the hardest way possible simply because it is “free”. In this thread , a guy wants to setup an automated build for his company a a demo of how good it can…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The legend of free tools By Roy Osherove December 30, 2009 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published December 30, 2009; technical details may be outdated. It amazes me that people still feel the need to solve things in the hardest way possible simply because it is “free”. [In this thread](http://tech.groups.yahoo.com/group/altdotnet/message/23435), a guy wants to setup an automated build for his company a a demo of how good it can be, and the proceed to dive into many rabbit holes as possible in his quest to show how simple and good such a solution could be (thanks CCNet and XML – [looks like you’re here for good](http://5whys.com/blog/be-productive-and-stop-using-xml.html)) wanna show people who simple and clean it is to have an automated build? Get TeamCity running along with FinalBuilder (and you can hook them up to TFS if you like) – get this all running in an hour, and you have a winner. Oh, but it will cost money? You already saved that money by \*not\* working for two days on setting this same thing up using the various, shall i say, less-than-maintainable-unless-you’re-ayende tools. granted – if there \*were\* indeed tools that come close interms of usability and maintainability to those two in the open source or free world, I would recommend them, but you know what – there arn’t any that don’t require you, as a cost of entry, to pay up front much more than what the “paid” tools cost. and even then, they are not there yet. Prove me wrong by showing me a UI as usable and maintainable as that of FinalBuilder in the free worlds, or as TeamCity. I’d love to know! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Dec 30, 2009 ### [Test Driven Development Master class in Sydney, Australia](https://osherove.com/blog/2009/12/30/test-driven-development-master-class-in-sydney-australia.html) - Dec 30, 2009 ### [Advanced .NET Debugging](https://osherove.com/blog/2009/12/30/advanced-net-debugging.html) - Nov 16, 2009 ### [How to start agile development in your team](https://osherove.com/blog/2009/11/16/how-to-start-agile-development-in-your-team.html) - Nov 13, 2009 ### [Course: Leading Software Teams – Essential Practices for team leads](https://osherove.com/blog/2009/11/13/course-leading-software-teams-essential-practices-for-team-l.html) --- title: "Comments on Corey Haines’ String Calculator TDD Kata Implementation" url: "https://osherove.com/blog/2009/12/23/comments-on-corey-haines-string-calculator-tdd-kata-implemen.md" canonical: "https://osherove.com/blog/2009/12/23/comments-on-corey-haines-string-calculator-tdd-kata-implemen.html" published: "2009-12-23T14:26:35" updated: "2009-12-23T14:26:35" tags: ["Agile", "Art Of Unit Testing", "Unit Testing", "tdd"] author: "Roy Osherove" description: "Corey Haines recreated my TDD Kata on his KataCasts blog. ( click here to learn more about TDD katas ) Since Corey is an experienced TDD practitioner I was honored that he’d given it a go, and was eager to see the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Comments on Corey Haines’ String Calculator TDD Kata Implementation By Roy Osherove December 23, 2009 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing), [tdd](https://osherove.com/blog/category/tdd) **Historical article** · Originally published December 23, 2009; technical details may be outdated. [Corey Haines recreated](http://katas.softwarecraftsmanship.org/?p=80) my [TDD Kata](https://osherove.com/tdd-kata-1/) on his KataCasts blog.  ([click here to learn more about TDD katas](http://5whys.com/blog/how-to-measure-programmer-productivity-using-tdd-katas.html)) Since Corey is an experienced TDD practitioner I was honored that he’d given it a go, and was eager to see the video. Later, corey asks for my remarks on it, which i will gladly put here. In general, Corey’s video is a great piece of TDD work to watch as an example of a master TDDer doing his thing. Everything flows gracefully and the code produced is simple, readable and of course – **works**. I especially loved the large amount of merciless refactoring Corey made during the Kata. As you TDD you should not cut any corners in the refactoring area – and almost after every passing test or two, Corey does refactoring to some very simple code patterns. Another worthy note – Corey takes care in refactoring the tests as well throughout the kata. Kudos! A few things that stood out for me can be thought of as very little things – and are mostly questions: 1. **Partial Test:** at some point, Corey seems to be writing the tests incrementally as well, in that he writes an empty test that passes, and then fills in the test itself to see it fail (which is usually where I start). I wasn’t sure why he’d do that, but the reasoning could be that he wants to make sure the environment works for the test. since he does it all in Ruby, which is a more forgiving environment for typing errors, this might be it. 2. **Always passing test**: very early on, in the second test actually, Corey creates a test that asserts that sending “0” returns “0” – which _passes_ and _never fails_. That is because by default empty strings as input return zero. I do it a bit differently – i try to start with a failing test that drives more functionality, and if i can find a way to make a test for “0” fail as well to being, i will do it (so that i can ‘test the test’ in TDD style). _A different way_: Don’t write a passing test for “0” input. instead write a _failing test_ for “1” input. Another options would have been to indeed start with a _passing test for “0” input_, but then to go production code and deliberately return –1 to see the test fail, then fix it to return “0”, see the test pass again, and move on to the next test. 3. **Magic inputs**: Corey sends in various seemingly random, out of the air numbers as inputs to the tests starting from the third test onwards. For example, to a reader who sees a test that says “sending in 5 returns 5” that reader might ask themselves “why 5? why is 5 so special? should I also use 5 in my tests?”. _A different way_: To avoid such confusion i like to stick to the lowest common version of an input that still proves the application wrong. if sending in “1” produces the same result as sending in “5” then my all means i will send in “1”. If the input is 2 digits, I’d send in “10”, “100” and so on. If the input still does not make sense I would put it in as a variable named “SINGLE DIGIT NUMBER” to explain to the reader what is so special or not so special about this value. 4. **The simplest Test:**Corey wrote the tests for inputs with \\newline characters without considering the most basic test for this kind: a simple string containing only a new line character (equivalent to an empty string). I agree that not everyone would pick up on this as an idea, since you might feel this is an invalid input into the system. nevertheless, [when I teach TDD](https://osherove.com/training/) this is the way i teach the kata. It feels like a more natural incremental evolution of the code and tests, and a good way to send the message that _anything can be divided into small increments if you want to_. 5. **Refactor to un-readability**: At some point Corey refactors the code that handles delimiter characters into a single line of Ruby code. while it _is_a form of refactoring, i found that the code after refactoring was much less readable than it was before. _A different way_: I try to avoid any “immediate if”s or single line “smart” statements that feel more “smart” than “simple”. When i have to choose between length and readability, i will choose length every time. this makes sure the reader is always comfortable with the code. **Summary:** These small things aside, I think Corey’s video is a great example of TDD in practice! [Go watch it](http://katas.softwarecraftsmanship.org/?p=80). ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Dec 31, 2009 ### [Brown, Green, Refactor](https://osherove.com/blog/2009/12/31/brown-green-refactor.html) - Dec 30, 2009 ### [Software Apprenticeship](https://osherove.com/blog/2009/12/30/software-apprenticeship.html) - Nov 30, 2009 ### [TDD Master class in Vienna, January 18](https://osherove.com/blog/2009/11/30/tdd-master-class-in-vienna-january-18.html) - Nov 16, 2009 ### [How to start agile development in your team](https://osherove.com/blog/2009/11/16/how-to-start-agile-development-in-your-team.html) --- title: "TDD Master class in Vienna, January 18" url: "https://osherove.com/blog/2009/11/30/tdd-master-class-in-vienna-january-18.md" canonical: "https://osherove.com/blog/2009/11/30/tdd-master-class-in-vienna-january-18.html" published: "2009-11-30T07:27:02" updated: "2009-11-30T07:27:02" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "Hi All. If you live in or near Vienna, i hope you'll find interest in the course that I am giving there: A five day TDD master class in Vienna, on January 18th here's what students of this course had to say after…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Master class in Vienna, January 18 By Roy Osherove November 30, 2009 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published November 30, 2009; technical details may be outdated. Hi All. If you live in or near Vienna, i hope you'll find interest in the course that I am giving there: A five day TDD master class in Vienna, on January 18th **here's what students of this course had to say after finishing it:** [/testimonials/](https://osherove.com/testimonials/) **to learn more about this course:** [http://www.hlmc.at/events/aktuelle-termine/roy-osherove-tdd-masterclass.html](http://www.hlmc.at/events/aktuelle-termine/roy-osherove-tdd-masterclass.html) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Dec 30, 2009 ### [Software Apprenticeship](https://osherove.com/blog/2009/12/30/software-apprenticeship.html) - Dec 23, 2009 ### [Comments on Corey Haines’ String Calculator TDD Kata Implementation](https://osherove.com/blog/2009/12/23/comments-on-corey-haines-string-calculator-tdd-kata-implemen.html) - Nov 16, 2009 ### [How to start agile development in your team](https://osherove.com/blog/2009/11/16/how-to-start-agile-development-in-your-team.html) - Nov 13, 2009 ### [Course: Leading Software Teams – Essential Practices for team leads](https://osherove.com/blog/2009/11/13/course-leading-software-teams-essential-practices-for-team-l.html) --- title: "How to start agile development in your team" url: "https://osherove.com/blog/2009/11/16/how-to-start-agile-development-in-your-team.md" canonical: "https://osherove.com/blog/2009/11/16/how-to-start-agile-development-in-your-team.html" published: "2009-11-16T05:08:41" updated: "2009-11-16T05:08:41" tags: [".NET", "Agile"] author: "Roy Osherove" description: "Got this in the mail: Hi Roy, From time to time I'm reading your blog, and I must say that I'm quite behind. I would like to start an Agile Process in our company, but to be honest I do not have any knowledge from where…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to start agile development in your team By Roy Osherove November 16, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published November 16, 2009; technical details may be outdated. Got this in the mail: > _Hi Roy, > From time to time I'm reading your blog, and I must say that I'm quite behind. I would like to start an Agile Process in our company, but to be honest I do not have any knowledge from where to start. > So from where to start ?_ Wow. what a simple and powerful question. I’d start incrementally, doing the things that are easiest but also make small “wins” for the team and process. Here is where I’d start (order matters) 1. [start doing daily stand up meeting](http://5whys.com/blog/daily-standup-meetings-introduction-and-5-useful-tips.html) 2. start doing automated builds 3. start [working in pairs](http://www.atlassian.com/agile/practices/code-quality.jsp) on relatively complicated problems 4. [start doing code reviews](http://5whys.com/blog/step-4-start-doing-code-reviews-seriously.html) 5. [start showing visible progress](http://5whys.com/blog/step-2-use-a-big-visible-board-with-post-it-notes.html) 6. start trying to show demos every two or three weeks 7. [start learning unit testing](http://artofunittesting.com/) 8. learn how to [code better, design better](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=sr_1_1?ie=UTF8&s=books&qid=1258373192&sr=1-1) 9. start doing TDD But, be sure to [have what it takes](http://5whys.com/) as a team lead to drive this thing. I’m sure y’all in the comments can add to this discussion! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Dec 30, 2009 ### [Advanced .NET Debugging](https://osherove.com/blog/2009/12/30/advanced-net-debugging.html) - Dec 30, 2009 ### [The legend of free tools](https://osherove.com/blog/2009/12/30/the-legend-of-free-tools.html) - Nov 13, 2009 ### [Course: Leading Software Teams – Essential Practices for team leads](https://osherove.com/blog/2009/11/13/course-leading-software-teams-essential-practices-for-team-l.html) - Nov 12, 2009 ### [Test driven design – Willed vs. Forced Designs](https://osherove.com/blog/2009/11/12/test-driven-design-willed-vs-forced-designs.html) --- title: "Course: Leading Software Teams – Essential Practices for team leads" url: "https://osherove.com/blog/2009/11/13/course-leading-software-teams-essential-practices-for-team-l.md" canonical: "https://osherove.com/blog/2009/11/13/course-leading-software-teams-essential-practices-for-team-l.html" published: "2009-11-13T02:07:54" updated: "2009-11-13T02:07:54" tags: [".NET", "Agile"] author: "Roy Osherove" description: "This november the 22nd I’ll be doing a one day workshop for software team leads on the essentials of leading a software team, and required leadership skills that need to be developed. The full course agenda can be found…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Course: Leading Software Teams – Essential Practices for team leads By Roy Osherove November 13, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published November 13, 2009; technical details may be outdated. This november the 22nd I’ll be doing a one day workshop for software team leads on the essentials of leading a software team, and required leadership skills that need to be developed. [The full course agenda can be found here](http://www.e4d.co.il/events/expertdays/Course.aspx?CourseID=051&Course=Leading%20Software%20Teams%20%E2%80%93%20Essential%20Practices%20for%20team%20leads). The course is in Israel, and in Hebrew. ##### Course Description: Congratulations - you’re a new team lead! You’re very skilled technically, but can you drive a team of software developers to achieve amazing things? - Can you see the full software delivery process from start to end? - You know what proper code should look like, but do you know how to drive you team members to write such code? - You know that short iterations work great, but you have a bunch of developers who don’t believe this is such a great idea, and you’re stuck! - You believe in so many things, and yet, even as a team lead, you feel powerless to drive them with your team members. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Dec 30, 2009 ### [The legend of free tools](https://osherove.com/blog/2009/12/30/the-legend-of-free-tools.html) - Nov 16, 2009 ### [How to start agile development in your team](https://osherove.com/blog/2009/11/16/how-to-start-agile-development-in-your-team.html) - Nov 12, 2009 ### [Test driven design – Willed vs. Forced Designs](https://osherove.com/blog/2009/11/12/test-driven-design-willed-vs-forced-designs.html) - Nov 5, 2009 ### [Recommended books part III](https://osherove.com/blog/2009/11/5/recommended-books-part-iii.html) --- title: "Test driven design – Willed vs. Forced Designs" url: "https://osherove.com/blog/2009/11/12/test-driven-design-willed-vs-forced-designs.md" canonical: "https://osherove.com/blog/2009/11/12/test-driven-design-willed-vs-forced-designs.html" published: "2009-11-12T14:59:48" updated: "2009-11-12T14:59:48" tags: [".NET", "Agile", "Art Of Unit Testing", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "I’m writing this as a typemock employee, but also as someone who has sat on the other side of the line for several good years, and can argue in both ways. The following, I feel, is true no matter where I work. There are…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test driven design – Willed vs. Forced Designs By Roy Osherove November 12, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published November 12, 2009; technical details may be outdated. I’m writing this as a typemock employee, but also as someone who has sat on the other side of the line for several good years, and can argue in both ways. The following, I feel, is true no matter where I work. There are two ways people use tests to drive design, as far as I see. one is great, and I agree with, the other is not so great and I don’t agree with it. Sadly, both of them are categorized together these days, and the baby gets thrown out with the bath water - You either use both (BAD) or you use neither (BAD!) Here are the two usage patterns: **#1 Willed Design** > By writing tests, you can observe the usability of your design from a consumer perspective, and can decide whether or not you like it, and change it accordingly **#2 Forced Design** > By using a subset of the available isolation frameworks(rhino, moq, nmock) or specific techniques \*manual mocks and stubs) you discover cases that are not technically “mockable” or “fakeable” and use that as a sign for design change. I highly agree with #1, and highly disagree with #2. **#1 makes sense.** You get to decide what is a good and bad design, and the experience of using that design from the test perspective is your guideline. But **you** make the rules on what you like and don’t like. **#2 is problematic for several reasons:** - The tool decides. Not you. You let an automated tool (rhino mocks, Moq etc..) tell you when your design is OK or not. That point alone should go against anything ALT.NET has ever stood for, doesn’t it? If you need a tool to tell you what is good or bad design, then you **are doing it wrong**. You should either know good design beforehad, or you shoud pair program together to find the best design, or you should learn by a mentor who can review your design mistakes, but don’t ever let a tool tell you what is right and what isn’t, especially when the only reason that tool works for that is by chance and not on purpose  (as you’ll see in the next point) - A technical limitation that grew into something else tools like rhino and MOQ and NMOCK **just happen** to support some OO ideas that seem good enough for design activities because of the underlying technology they use underneath. It’s pretty simple – they all use some form of either generating code at runtime that inherits from a class or interface, and then overrides methods on it (therefore they need to be virtual methods and non sealed classes, or an interface) or they use a proxy of some kind which underneath does pretty much the same things. (typemock is an exception since it uses a profiler api which has non of these requirements) . **simply that means** that the reason rhino, or MOQ or NMOCK “let you know” that you should use an interface somewhere, is a technical limitation of the tools, not a choice. Ayende was asked once what he’d do if he was technically able to fake static methods in rhino mocks – would he add that feature? “in the blink of an eye” he answered. and I agree. adding more options to the tool just extends the limitations of the possible design under test, not the “goodness” of it. Languages like Ruby, Javascript, Python etc.. have isolation frameworks (or in some cases don’t even need such frameworks) that fully support any type of behavior changing, regardless of the design, since the language is less strict. yet, somehow, proper design arises in those languages tool. perhaps those languages are just “too powerful” and should not be used because they will cause you to do bad design? see the previous point for my answer. What happens if tomorrow, or using C# 4.0 those tools get such abilities? will you all stop using them? of course, you don’t have to use isolation frameworks to be dissuaded by the idea of limiting your design by using something – in this case a technique: using manual mocks and stubs in an object oriented language is just as “limiting” technically as is using one of those frameworks. You’re still bound to play within the simple laws of OO and using a design that is even a little out of place (even though it might make perfect sense for your application for security, performance or other reasons) is either untestable, or a general no no. see the previous point for what i think about that. the point here is that you’re using a technical limitation of a tool or a technique to tell you what to do instead of thinking for yourself and learning proper design guidelines. that limitation **just happens** to be somewhat partially consistent with what you might currently to believe to be true for design. but technically, it is a limitation that could end soon. when it changes it’s behavior, will you just change your design guidelines? switch or won’t upgrade to a new version of the language? or actually start using your head and your peers to see what’s right and what’s not? **The Typemock Dilemma** Typemock gets a lot of flack for not inhibiting the design of the program, and I can see how people would be afraid to lose that limitation in other tools, since all they head from alpha geeks in .NET is that if it’s not “testable” then your design is wrong. worse, they hear “if you need typemock your design is wrong”. there’s nothing a silly as absolute “fact” theories in the software world. In fact, let me go out and say that **all fact theories are wrong**. How that’s for irony? The message should be, I feel, more like “here are some principles of good design as we think of it today”, but instead it is based on tool choice and not on technicques or craftsmanship. Unfortunately, I don’t think getting rid of #2 is possible in .NET today without using a tool like typemock, and that’s a shame, since it means that, because it costs money, people in the community will still want to use the free tools, which force design, instead of allowing them to decide on it like the mature developers they are. Maybe it’s time to have some sort of free version of Isolator so that everyone can benefit. what do you think? ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 16, 2009 ### [How to start agile development in your team](https://osherove.com/blog/2009/11/16/how-to-start-agile-development-in-your-team.html) - Nov 13, 2009 ### [Course: Leading Software Teams – Essential Practices for team leads](https://osherove.com/blog/2009/11/13/course-leading-software-teams-essential-practices-for-team-l.html) - Nov 5, 2009 ### [Recommended books part III](https://osherove.com/blog/2009/11/5/recommended-books-part-iii.html) - Nov 1, 2009 ### [Recommended books - part II](https://osherove.com/blog/2009/11/1/recommended-books-part-ii.html) --- title: "DWORD – a new video cast" url: "https://osherove.com/blog/2009/11/7/dword-a-new-video-cast.md" canonical: "https://osherove.com/blog/2009/11/7/dword-a-new-video-cast.html" published: "2009-11-07T17:40:08" updated: "2009-11-07T17:40:08" tags: ["Agile"] author: "Roy Osherove" description: "I’m trying out something new. You can check it out here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # DWORD – a new video cast By Roy Osherove November 7, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published November 7, 2009; technical details may be outdated. I’m trying out something new. You [can check it out here](https://osherove.com/dword/2009/11/8/dword-duct-tape-programmers.html). ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Nov 13, 2009 ### [Course: Leading Software Teams – Essential Practices for team leads](https://osherove.com/blog/2009/11/13/course-leading-software-teams-essential-practices-for-team-l.html) - Nov 12, 2009 ### [Test driven design – Willed vs. Forced Designs](https://osherove.com/blog/2009/11/12/test-driven-design-willed-vs-forced-designs.html) - Nov 5, 2009 ### [Recommended books part III](https://osherove.com/blog/2009/11/5/recommended-books-part-iii.html) - Nov 1, 2009 ### [Recommended books - part II](https://osherove.com/blog/2009/11/1/recommended-books-part-ii.html) --- title: "Recommended books part III" url: "https://osherove.com/blog/2009/11/5/recommended-books-part-iii.md" canonical: "https://osherove.com/blog/2009/11/5/recommended-books-part-iii.html" published: "2009-11-05T03:48:49" updated: "2009-11-05T03:48:49" tags: [".NET", "Agile"] author: "Roy Osherove" description: "Play video Recommended dev books part 3 as usual, the book link list can be found here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Recommended books part III By Roy Osherove November 5, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published November 5, 2009; technical details may be outdated. [![](https://osherove.com/img/video/yt-RVmOFPtn85w.jpg)Play videoRecommended dev books part 3](https://www.youtube.com/watch?v=RVmOFPtn85w) as usual, the [book link list can be found here](https://osherove.com/books-i-like). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 13, 2009 ### [Course: Leading Software Teams – Essential Practices for team leads](https://osherove.com/blog/2009/11/13/course-leading-software-teams-essential-practices-for-team-l.html) - Nov 12, 2009 ### [Test driven design – Willed vs. Forced Designs](https://osherove.com/blog/2009/11/12/test-driven-design-willed-vs-forced-designs.html) - Nov 1, 2009 ### [Recommended books - part II](https://osherove.com/blog/2009/11/1/recommended-books-part-ii.html) - Oct 29, 2009 ### [Recommended books - part 1](https://osherove.com/blog/2009/10/29/recommended-books-part-1.html) --- title: "Recommended books part II" url: "https://osherove.com/videos/2009/11/2/recommended-books-part-ii.md" canonical: "https://osherove.com/videos/2009/11/2/recommended-books-part-ii.html" published: "2009-11-02T00:52:54" updated: "2009-11-02T00:52:54" tags: ["Books"] author: "Roy Osherove" description: "Play video Recommended dev books part 2 all the book links can be found here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Recommended books part II By Roy Osherove November 2, 2009 In [Books](https://osherove.com/videos/category/books) **Historical article** · Originally published November 2, 2009; technical details may be outdated. [![](https://osherove.com/img/video/yt-1FSdXt2sML0.jpg)Play videoRecommended dev books part 2](https://www.youtube.com/watch?v=1FSdXt2sML0) all the book links [can be found here](https://osherove.com/books-i-like/). ## More in Books [All posts in Books](https://osherove.com/videos/category/books) - Nov 2, 2009 ### [Recommended books part I](https://osherove.com/videos/2009/11/2/recommended-books-part-i.html) --- title: "Recommended books part I" url: "https://osherove.com/videos/2009/11/2/recommended-books-part-i.md" canonical: "https://osherove.com/videos/2009/11/2/recommended-books-part-i.html" published: "2009-11-02T00:51:42" updated: "2009-11-02T00:51:42" tags: ["Books"] author: "Roy Osherove" description: "Play video Books for software developers part 1 you can find the book links here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Recommended books part I By Roy Osherove November 2, 2009 In [Books](https://osherove.com/videos/category/books) **Historical article** · Originally published November 2, 2009; technical details may be outdated. [![](https://osherove.com/img/video/yt-IffTHbOjUbQ.jpg)Play videoBooks for software developers part 1](https://www.youtube.com/watch?v=IffTHbOjUbQ) you can find [the book links here](https://osherove.com/books-i-like/). ## More in Books [All posts in Books](https://osherove.com/videos/category/books) - Nov 2, 2009 ### [Recommended books part II](https://osherove.com/videos/2009/11/2/recommended-books-part-ii.html) --- title: "Recommended books - part II" url: "https://osherove.com/blog/2009/11/1/recommended-books-part-ii.md" canonical: "https://osherove.com/blog/2009/11/1/recommended-books-part-ii.html" published: "2009-11-01T16:22:01" updated: "2009-11-01T16:22:01" tags: [".NET", "Agile"] author: "Roy Osherove" description: "Play video Recommended dev books part 2 as usual, the book link list can be found here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Recommended books - part II By Roy Osherove November 1, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published November 1, 2009; technical details may be outdated. [![](https://osherove.com/img/video/yt-1FSdXt2sML0.jpg)Play videoRecommended dev books part 2](https://www.youtube.com/watch?v=1FSdXt2sML0) as usual, the [book link list can be found here](https://osherove.com/books-i-like). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 12, 2009 ### [Test driven design – Willed vs. Forced Designs](https://osherove.com/blog/2009/11/12/test-driven-design-willed-vs-forced-designs.html) - Nov 5, 2009 ### [Recommended books part III](https://osherove.com/blog/2009/11/5/recommended-books-part-iii.html) - Oct 29, 2009 ### [Recommended books - part 1](https://osherove.com/blog/2009/10/29/recommended-books-part-1.html) - Oct 5, 2009 ### [Why Google Chrome and FireFox are a big security risk for anyone using them](https://osherove.com/blog/2009/10/5/why-google-chrome-and-firefox-are-a-big-security-risk-for-an.html) --- title: "Recommended books - part 1" url: "https://osherove.com/blog/2009/10/29/recommended-books-part-1.md" canonical: "https://osherove.com/blog/2009/10/29/recommended-books-part-1.html" published: "2009-10-29T17:17:02" updated: "2009-10-29T17:17:02" tags: [".NET", "Agile"] author: "Roy Osherove" description: "Play video Books for software developers part 1 You can find the list of books with links over here: /books-i-like" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Recommended books - part 1 By Roy Osherove October 29, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published October 29, 2009; technical details may be outdated. [![](https://osherove.com/img/video/yt-IffTHbOjUbQ.jpg)Play videoBooks for software developers part 1](https://www.youtube.com/watch?v=IffTHbOjUbQ) You can find the list of books with links over here: [/books-i-like](https://osherove.com/books-i-like) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 5, 2009 ### [Recommended books part III](https://osherove.com/blog/2009/11/5/recommended-books-part-iii.html) - Nov 1, 2009 ### [Recommended books - part II](https://osherove.com/blog/2009/11/1/recommended-books-part-ii.html) - Oct 5, 2009 ### [Why Google Chrome and FireFox are a big security risk for anyone using them](https://osherove.com/blog/2009/10/5/why-google-chrome-and-firefox-are-a-big-security-risk-for-an.html) - Aug 20, 2009 ### [NDC Video Torrents Update – More videos! (please re-seed)](https://osherove.com/blog/2009/8/20/ndc-video-torrents-update-more-videos-please-re-seed.html) --- title: "Test Review - XUnit.NET" url: "https://osherove.com/videos/2009/10/28/test-review-xunitnet.md" canonical: "https://osherove.com/videos/2009/10/28/test-review-xunitnet.html" published: "2009-10-28T01:04:20" updated: "2009-10-28T01:04:20" tags: ["Test Review", "Unit Testing"] author: "Roy Osherove" description: "TestReviewXUnitNet.flv" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Review - XUnit.NET By Roy Osherove October 28, 2009 In [Test Review](https://osherove.com/videos/category/test-review), [Unit Testing](https://osherove.com/videos/category/unit-testing) **Historical article** · Originally published October 28, 2009; technical details may be outdated. TestReviewXUnitNet.flv ## More in Test Review [All posts in Test Review](https://osherove.com/videos/category/test-review) - Oct 18, 2009 ### [Test Review - MEF](https://osherove.com/videos/2009/10/18/test-review-mef.html) - Aug 24, 2009 ### [Test Review #3 - Unity](https://osherove.com/videos/2009/8/25/test-review-3-unity.html) --- title: "TypeMOQ API" url: "https://osherove.com/blog/2009/10/23/typemoq-api.md" canonical: "https://osherove.com/blog/2009/10/23/typemoq-api.html" published: "2009-10-23T07:18:14" updated: "2009-10-23T07:18:14" tags: ["Agile", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "I was fiddling around with the typemock API, see what it would belike to use it in a more MOQ like manner: to support this, all the code you need, including the Faker class exists here . you’d need to reference the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TypeMOQ API By Roy Osherove October 23, 2009 In [Agile](https://osherove.com/blog/category/agile), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 23, 2009; technical details may be outdated. I was fiddling around with the typemock API, see what it would belike to use it in a more [MOQ](http://code.google.com/p/moq/) like manner: ![image](https://osherove.com/img/wb/2b9de5c8_weblogs.asp.net_blogs_rosherove_image_thumb_7DB323F9.png) to support this, [all the code you need, including the Faker class exists here](http://codepaste.net/kqqyrm). you’d need to reference the typemock dll and the typemock c# API dll to make it work. I’m not sure I’m crazy about it, but it is shorter. I’m not sure it’s as readable, though. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Nov 1, 2009 ### [Recommended books - part II](https://osherove.com/blog/2009/11/1/recommended-books-part-ii.html) - Oct 29, 2009 ### [Recommended books - part 1](https://osherove.com/blog/2009/10/29/recommended-books-part-1.html) - Oct 18, 2009 ### [Introducing Typemock IntelliTest](https://osherove.com/blog/2009/10/18/introducing-typemock-intellitest.html) - Sep 30, 2009 ### [Poll: Which mocking\\isolation framework do you use?](https://osherove.com/blog/2009/9/30/poll-which-mockingisolation-framework-do-you-use.html) --- title: "Test Review - MEF" url: "https://osherove.com/videos/2009/10/18/test-review-mef.md" canonical: "https://osherove.com/videos/2009/10/18/test-review-mef.html" published: "2009-10-18T16:00:44" updated: "2009-10-18T16:00:44" tags: ["Test Review", "Unit Testing"] author: "Roy Osherove" description: "A review of Microsoft MEF unit tests Video unavailable (the original video has been removed from Vimeo). Test Review - MEF from Roy Osherove on Vimeo ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Review - MEF By Roy Osherove October 18, 2009 In [Test Review](https://osherove.com/videos/category/test-review), [Unit Testing](https://osherove.com/videos/category/unit-testing) **Historical article** · Originally published October 18, 2009; technical details may be outdated. A review of Microsoft MEF unit tests Video unavailable (the original video has been removed from Vimeo). [Test Review - MEF](https://vimeo.com/7121073) from [Roy Osherove](https://vimeo.com/user222785) on [Vimeo](https://vimeo.com/). ## More in Test Review [All posts in Test Review](https://osherove.com/videos/category/test-review) - Oct 28, 2009 ### [Test Review - XUnit.NET](https://osherove.com/videos/2009/10/28/test-review-xunitnet.html) - Aug 24, 2009 ### [Test Review #3 - Unity](https://osherove.com/videos/2009/8/25/test-review-3-unity.html) - Aug 24, 2009 ### [Test Review #2 - ASP.NET MVC](https://osherove.com/videos/2009/8/25/test-review-2-aspnet-mvc.html) --- title: "Introducing Typemock IntelliTest" url: "https://osherove.com/blog/2009/10/18/introducing-typemock-intellitest.md" canonical: "https://osherove.com/blog/2009/10/18/introducing-typemock-intellitest.html" published: "2009-10-18T13:25:31" updated: "2009-10-18T13:25:31" tags: ["Agile", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "We just released the latest version (5.4.2) of Typemock Isolator, with one cool Addon built in - Typemock Intellitest . what’s it about? in one word: productivity. Here's what it does: Play video Typemock Isolator…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing Typemock IntelliTest By Roy Osherove October 18, 2009 In [Agile](https://osherove.com/blog/category/agile), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 18, 2009; technical details may be outdated. We just released [the latest version (5.4.2)](http://learn.typemock.com/download/) of Typemock Isolator, with one cool Addon built in - **Typemock Intellitest**. what’s it about? in one word: productivity. Here's what it does: [![](https://osherove.com/img/video/yt-AIr1uheuPIs.jpg)Play videoTypemock Isolator IntelliTest](https://www.youtube.com/watch?v=AIr1uheuPIs) ([here's the full info](http://blog.typemock.com/2009/10/isolator-542-released-introducing.html)) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Oct 29, 2009 ### [Recommended books - part 1](https://osherove.com/blog/2009/10/29/recommended-books-part-1.html) - Oct 23, 2009 ### [TypeMOQ API](https://osherove.com/blog/2009/10/23/typemoq-api.html) - Sep 30, 2009 ### [Poll: Which mocking\\isolation framework do you use?](https://osherove.com/blog/2009/9/30/poll-which-mockingisolation-framework-do-you-use.html) - Sep 28, 2009 ### [Unit Test Definition 2.0](https://osherove.com/blog/2009/9/28/unit-test-definition-20.html) --- title: "Test Review: MEF" url: "https://osherove.com/blog/2009/10/17/test-review-mef.md" canonical: "https://osherove.com/blog/2009/10/17/test-review-mef.html" published: "2009-10-17T23:19:37" updated: "2009-10-17T23:19:37" tags: ["TestReview", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "it’s late at night, and my new baby just went to sleep, again. Time for another test review! (you can find other test reviews here ) Video unavailable (the original video has been removed from Vimeo). Test Review - MEF…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Review: MEF By Roy Osherove October 17, 2009 In [TestReview](https://osherove.com/blog/category/testreview), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 17, 2009; technical details may be outdated. it’s late at night, and my new baby just went to sleep, again. Time for another test review! (you can find [other test reviews here](http://weblogs.asp.net/rosherove/archive/tags/TestReview/default.aspx)) Video unavailable (the original video has been removed from Vimeo). [Test Review - MEF](https://vimeo.com/7121073) from [Roy Osherove](https://vimeo.com/user222785) on [Vimeo](https://vimeo.com/). ## More in TestReview [All posts in TestReview](https://osherove.com/blog/category/testreview) - Mar 22, 2009 ### [Test Review #3 – Unity](https://osherove.com/blog/2009/3/23/test-review-3-unity.html) - Mar 21, 2009 ### [Test Review #2 – ASP.NET MVC Unit Tests](https://osherove.com/blog/2009/3/21/test-review-2-aspnet-mvc-unit-tests.html) --- title: "Why Google Chrome and FireFox are a big security risk for anyone using them" url: "https://osherove.com/blog/2009/10/5/why-google-chrome-and-firefox-are-a-big-security-risk-for-an.md" canonical: "https://osherove.com/blog/2009/10/5/why-google-chrome-and-firefox-are-a-big-security-risk-for-an.html" published: "2009-10-05T15:18:39" updated: "2009-10-05T15:18:39" tags: [".NET"] author: "Roy Osherove" description: "I’ve stopped using Internet Explorer – Too damn slow, memory hogging beast. I’ve stopped using FireFox, for the same reasons, funnily enough (until I found out about the security flaw). I’m now using Safari – it’s…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why Google Chrome and FireFox are a big security risk for anyone using them By Roy Osherove October 5, 2009 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published October 5, 2009; technical details may be outdated. I’ve stopped using Internet Explorer – Too damn slow, memory hogging beast. I’ve stopped using FireFox, for the same reasons, funnily enough (until I found out about the security flaw). I’m now using Safari – it’s blazing fast, reliable and does not have that aweful security risk that Chrome does. **What is it?** **Google Chrome will reveal your saved passwords to anyone** who wants them, with no possibility of securing them with a master password. The image below shows what happens when I use Chrome to save my password for gmail, I can then just go an open chrome options, click “Show Saved passwords” and select a line there, and click “Show password” (in the image that button is titled “Hide password” after clicking it. ![image](https://osherove.com/img/wb/8ad223bc_weblogs.asp.net_blogs_rosherove_image_thumb_09FEA948.png) With Firefox, the **default** behavior is to allow anyone to see your passwords as well, but you can **actively** choose to use a master password in firefox to make this less accessible. the **default** is that it’s open for anyone to see. With Chrome, there isn’t even a “master password” option. Until they fix this, I am **not** going to use Chrome, I don’t care how fast it is. Safari is fast and doesn’t show my passwords. K THX BY ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 1, 2009 ### [Recommended books - part II](https://osherove.com/blog/2009/11/1/recommended-books-part-ii.html) - Oct 29, 2009 ### [Recommended books - part 1](https://osherove.com/blog/2009/10/29/recommended-books-part-1.html) - Aug 20, 2009 ### [NDC Video Torrents Update – More videos! (please re-seed)](https://osherove.com/blog/2009/8/20/ndc-video-torrents-update-more-videos-please-re-seed.html) - Aug 19, 2009 ### [NDC Video – Robert Martin – S.O.L.I.D Principles of OO class design](https://osherove.com/blog/2009/8/19/ndc-video-robert-martin-solid-principles-of-oo-class-design.html) --- title: "Poll: Which mocking\\isolation framework do you use?" url: "https://osherove.com/blog/2009/9/30/poll-which-mockingisolation-framework-do-you-use.md" canonical: "https://osherove.com/blog/2009/9/30/poll-which-mockingisolation-framework-do-you-use.html" published: "2009-09-30T15:34:34" updated: "2009-09-30T15:34:34" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "Time for the bi-annual frameworks poll!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Poll: Which mocking\\isolation framework do you use? By Roy Osherove September 30, 2009 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 30, 2009; technical details may be outdated. Time for the bi-annual frameworks poll! ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Oct 23, 2009 ### [TypeMOQ API](https://osherove.com/blog/2009/10/23/typemoq-api.html) - Oct 18, 2009 ### [Introducing Typemock IntelliTest](https://osherove.com/blog/2009/10/18/introducing-typemock-intellitest.html) - Sep 28, 2009 ### [Unit Test Definition 2.0](https://osherove.com/blog/2009/9/28/unit-test-definition-20.html) - Sep 16, 2009 ### [Announcing the Team Leadership Google Group](https://osherove.com/blog/2009/9/16/announcing-the-team-leadership-google-group.html) --- title: "Unit Test Definition 2.0" url: "https://osherove.com/blog/2009/9/28/unit-test-definition-20.md" canonical: "https://osherove.com/blog/2009/9/28/unit-test-definition-20.html" published: "2009-09-28T09:26:37" updated: "2009-09-28T09:26:37" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "Update: added the difference from integration tests at the end of the post. Here’s my latest definition of what a unit test is: A unit test is a fast, in-memory, consistent, automated and repeatable test of a functional…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Test Definition 2.0 By Roy Osherove September 28, 2009 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 28, 2009; technical details may be outdated. **Update:** added the difference from integration tests at the end of the post. Here’s my latest definition of what a unit test is: A unit test is a **fast, in-memory, consistent, automated** and **repeatable** test of a functional **unit-of-work** in the system. A **unit of work** is any functional scenario in the system that contains logic. it can be as short as a function, or it can span multiple classes and functions, and it provides internal or business value to the system under test. **how is it different that an integration test?** An integration test usually is not in-memory: it may touch the disk file system, databases, registry or other shared resources.  It may read or need a configuration file of the file system, wheas a unit test can be fully configured in-memory, for example. An integration test will usually run much slower because it does not run in-memory. An integration test can be less consistent – it may use threads or random number generators so that the result of the test is not always consistent. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Oct 18, 2009 ### [Introducing Typemock IntelliTest](https://osherove.com/blog/2009/10/18/introducing-typemock-intellitest.html) - Sep 30, 2009 ### [Poll: Which mocking\\isolation framework do you use?](https://osherove.com/blog/2009/9/30/poll-which-mockingisolation-framework-do-you-use.html) - Sep 16, 2009 ### [Announcing the Team Leadership Google Group](https://osherove.com/blog/2009/9/16/announcing-the-team-leadership-google-group.html) - Sep 6, 2009 ### [Introducing 5Whys.com](https://osherove.com/blog/2009/9/6/introducing-5whyscom.html) --- title: "Steal My Book" url: "https://osherove.com/blog/2009/9/22/steal-my-book.md" canonical: "https://osherove.com/blog/2009/9/22/steal-my-book.html" published: "2009-09-22T17:16:33" updated: "2009-09-22T17:16:33" tags: [] author: "Roy Osherove" description: "last night I found out on twitter , that people are spreading the full PDF versions of my book . What made me angry was that the person who did this had the audacity to also retweet stuff I said, a few minutes after…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Steal My Book By Roy Osherove September 22, 2009 **Historical article** · Originally published September 22, 2009; technical details may be outdated. last night [I found out on twitter](http://twitter.com/royosherove), that people are spreading the full PDF versions of [my book](http://www.artofunittesting.com/). What made me angry was that the person who did this had the audacity to also retweet stuff I said, a few minutes after spreading a link to an illegal copy of my book. then I got a few responses, some supportive, some telling me that “that’s the way things are” and that it might actually be a good thing. So I decided to have an experiment. I’m going to give you some links to download an illegal, full PDF version of my book. A book that took me three years to finish. A book that I started with zero kids, and was released with me having two kids. A book that has changed during its writing, that I learned a lot from, and that I am making about 2$ off of every PRINT copy sold, and much less on PDF copies sold (in short – the money ain’t great). I want you to **steal** my book as PDF. and if you like it, I want you to be straight about it, and purchase either the [PDF version of it](http://www.manning.com/affiliate/idevaffiliate.php?id=462_91), or buy [a print version on Manning](http://www.manning.com/affiliate/idevaffiliate.php?id=462_91) or [Amazon’s site](https://www.amazon.com/exec/obidos/ASIN/1933988274/iserializable-20). **Here goes:** [Buy the print or the PDF eBook on the Manning site](http://www.manning.com/affiliate/idevaffiliate.php?id=462_91) [Buy the print book on Amazon](https://www.amazon.com/exec/obidos/ASIN/1933988274/iserializable-20)  (FYI – every print copy has a coupon for a full PDF copy inside) [Download the FULL Illegal PDF of the book from RapidShare](http://xrl.us/bfnipn) ([or just google](http://www.google.com/search?q=art+of+unit+tesitng+ebook) for an illegal version) **Answer** this poll so that I know if this was a smart idea or not \[You’re reading my .NET Blog. I’ve also started a team leadership blog over [at 5Whys.com](http://5whys.com/) – it’s all about leading software teams. You can also [attend varioius courses on TDD and team leadership](https://osherove.com/) that I provide\] --- title: "Announcing the Team Leadership Google Group" url: "https://osherove.com/blog/2009/9/16/announcing-the-team-leadership-google-group.md" canonical: "https://osherove.com/blog/2009/9/16/announcing-the-team-leadership-google-group.html" published: "2009-09-16T11:20:24" updated: "2009-09-16T11:20:24" tags: ["Agile"] author: "Roy Osherove" description: "I believe the next wave of issues that we will need to start solving is that of software team leadership . We may all believe in the stuff that agile, tdd and the like bring to the company, but we often have problems…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Announcing the Team Leadership Google Group By Roy Osherove September 16, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published September 16, 2009; technical details may be outdated. I believe the next wave of issues that we will need to start solving is that of **software team leadership**. We may all believe in the stuff that agile, tdd and the like bring to the company, but we often have problems following through on these, since we can't find a way to drive the people in our teams to "get" these things. Team leadership is the essential skill that binds together the will do be better and the ability to drive a team to be better, and to eventually truly become a self directing group of people. I think most software leads suck at people skills, at driving their team and getting things ready to be more agile. and I think that's one of the main reasons some agile adoptions fail so badly. But I have not found a place to get answers on leading teams at the people level, or even at the basic skill level that would target exactly this role. I started [http://5whys.com](http://5whys.com/) for that reason, but I believe that many of us will benefit from a more open and honest dialog about managing people, the problems we deal with, and ways to solve them. I invite you to join the group at [http://groups.google.com/group/leading-teams](http://groups.google.com/group/leading-teams) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 30, 2009 ### [Poll: Which mocking\\isolation framework do you use?](https://osherove.com/blog/2009/9/30/poll-which-mockingisolation-framework-do-you-use.html) - Sep 28, 2009 ### [Unit Test Definition 2.0](https://osherove.com/blog/2009/9/28/unit-test-definition-20.html) - Sep 6, 2009 ### [Introducing 5Whys.com](https://osherove.com/blog/2009/9/6/introducing-5whyscom.html) - Aug 31, 2009 ### [My Videos](https://osherove.com/blog/2009/8/31/my-videos.html) --- title: "Your testimonials needed on TDD master class and my teaching skills" url: "https://osherove.com/blog/2009/9/15/your-testimonials-needed-on-tdd-master-class-and-my-teaching.md" canonical: "https://osherove.com/blog/2009/9/15/your-testimonials-needed-on-tdd-master-class-and-my-teaching.html" published: "2009-09-15T13:22:31" updated: "2009-09-15T13:22:31" tags: [] author: "Roy Osherove" description: "It seems that there are some clients that require client testimonials about my 5 day TDD master class and about my TDD related classes in general. It has suddenly occurred to me that I have none (except those verbally…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Your testimonials needed on TDD master class and my teaching skills By Roy Osherove September 15, 2009 **Historical article** · Originally published September 15, 2009; technical details may be outdated. It seems that there are some clients that require client testimonials about my [5 day TDD master class](https://osherove.com/training) and about my TDD related classes in general. It has suddenly occurred to me that I have none (except those verbally given). Dear reader, if you’ve been to my class at some point in the past 3-4 years, and found it useful, I’d love it if you either left a comment on this blog post with your testimonial, or contact me directly with your testimonial and name. Does not have to be much -  a sentence or a paragraph – anything would be great. I will then place those testimonials (along with any blog links you have sent me attached if you’d like) on my [personal website](https://osherove.com/). Yours truly, Roy --- title: "Introducing 5Whys.com" url: "https://osherove.com/blog/2009/9/6/introducing-5whyscom.md" canonical: "https://osherove.com/blog/2009/9/6/introducing-5whyscom.html" published: "2009-09-06T02:32:29" updated: "2009-09-06T02:32:29" tags: ["Agile"] author: "Roy Osherove" description: "I created 5Whys because… well – here’s why . This blog will remain about TDD and other things, but 5Whys.com will be about a focused gateway to developers who want to be better, and team leads who want to be better. And…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing 5Whys.com By Roy Osherove September 6, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published September 6, 2009; technical details may be outdated. I created [5Whys](http://5whys.com/) because… well – [here’s why](http://5whys.com/blog/the-first-five-whys.html). This blog will remain about TDD and other things, but 5Whys.com will be about a focused gateway to developers who want to be better, and team leads who want to be better. And I’ll ask you one more thing: [what would you tell a newly minted team lead on his first day](http://5whys.com/blog/call-for-content-ndash-what-do-new-team-leads-to-know-on-the.html), that they could not find in any book? ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 28, 2009 ### [Unit Test Definition 2.0](https://osherove.com/blog/2009/9/28/unit-test-definition-20.html) - Sep 16, 2009 ### [Announcing the Team Leadership Google Group](https://osherove.com/blog/2009/9/16/announcing-the-team-leadership-google-group.html) - Aug 31, 2009 ### [My Videos](https://osherove.com/blog/2009/8/31/my-videos.html) - Aug 26, 2009 ### [TDD Master Class Day # 3 – “What I learned today”](https://osherove.com/blog/2009/8/26/tdd-master-class-day-3-what-i-learned-today.html) --- title: "8 techniques to find problems in your unit tests within 30 seconds" url: "https://osherove.com/blog/2009/8/31/8-techniques-to-find-problems-in-your-unit-tests-within-30-s.md" canonical: "https://osherove.com/blog/2009/8/31/8-techniques-to-find-problems-in-your-unit-tests-within-30-s.html" published: "2009-08-31T06:18:49" updated: "2009-08-31T06:18:49" tags: [] author: "Roy Osherove" description: "when reviewing tests, there are “easy finds” you can have. Here’s how I might start search for the following issues: Trust issues – can I trust the test (is it repeatable, conssistent and tests the right thing? Search…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 8 techniques to find problems in your unit tests within 30 seconds By Roy Osherove August 31, 2009 **Historical article** · Originally published August 31, 2009; technical details may be outdated. when reviewing tests, there are “easy finds” you can have. Here’s how I might start search for the following issues: **Trust issues – can I trust the test (is it repeatable, conssistent and tests the right thing?** - **Search the test project for use of “DateTime.”**  using DateTime in your tests means that everytime you run the test, you’re essentially running a **different** unit test. if it somehow fails due to the datetime, there might not be an easy way to recreate the failing test (if you’ve never logged the datetime being used) - **Search the Test Project for any word to do with Threads**  if you’re using threads, then your test might break due to threading issues, and not logic issues. even running it on a slow machine, or a machine with multiple CPUs changes the test execution. It’s ok for an integration test, but not for a unit test, which should **always** have the same result. - **Search for “Environment.” (ignore newline)** If you’re using anything from the current environment, then there are two possible things happening: You run a different a test every time you change your test machine, and your test may be repeating the logic that exists in the production code. Instead, try to fake the environment values (abstract them away) and have hard coded expected values in your tests. otherwise- you have an integration test. **Maintainability issues – how fragile are the tests? will the break even if the code under test changes, but isn’t broken?** - Use Resharper to search for the “.Verifiable” method, and **group by member**. there should be no more than one per test.  If there is then you are testing more than one thing – and your test is more fragile since it over-specifies internal behavior. any internal change in the code, even if the end behavior is OK, can break your test quite easily. - If using **Moq**: Search for “.VerifyAll”  - you are again over specifying the test, making it fragile and easy to break for the wrong reason. You should verify only on a single mock object. - If using **Rhino Mocks**: Search for multiple .AssertWasCalled or multiple Verify() or VerifyAll() for the same reason above. - If using **Isolator**: Search for multiple Verify() calls in one test for the same reasons - Search for creation of the objects under test inside the test – this is a big chance for refactoring – if you don’t, and the constructor for the object changes – you will have to change all these tests as well. Refactor to a factory method, or use the Setup method in the tests. Again – these are all “easy wins”. there are things which take a bit more digging up to find, which will greatly improve your tests. for more examples see: - [My book](http://artofunittesting.com/), the art of unit testing, has a bunch of test review guidelines at the last page - My [test review videos](https://osherove.com/videos/category/test-review) --- title: "My Videos" url: "https://osherove.com/blog/2009/8/31/my-videos.md" canonical: "https://osherove.com/blog/2009/8/31/my-videos.html" published: "2009-08-31T02:00:13" updated: "2009-08-31T02:00:13" tags: ["Agile"] author: "Roy Osherove" description: "I’ve started to load up all the videos of me from conferences and such on the web, and put them al in one place. They are all over here . for example: Deep Reflection - from TechEd TDD – Understanding Mock Objects" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My Videos By Roy Osherove August 31, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published August 31, 2009; technical details may be outdated. I’ve started to load up all the videos of me from conferences and such on the web, and put them al in one place. They are all [over here](https://osherove.com/videos). for example: - [Deep Reflection](https://osherove.com/videos/2009/8/25/deep-reflection-400-level.html)  - from TechEd - [TDD – Understanding Mock Objects](https://osherove.com/videos/2009/8/25/tdd-understanding-mock-objects.html) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 16, 2009 ### [Announcing the Team Leadership Google Group](https://osherove.com/blog/2009/9/16/announcing-the-team-leadership-google-group.html) - Sep 6, 2009 ### [Introducing 5Whys.com](https://osherove.com/blog/2009/9/6/introducing-5whyscom.html) - Aug 26, 2009 ### [TDD Master Class Day # 3 – “What I learned today”](https://osherove.com/blog/2009/8/26/tdd-master-class-day-3-what-i-learned-today.html) - Aug 25, 2009 ### [TDD Course Day 2 – “What I Learned Today”](https://osherove.com/blog/2009/8/25/tdd-course-day-2-what-i-learned-today.html) --- title: "TDD Master Class Day # 3 – “What I learned today”" url: "https://osherove.com/blog/2009/8/26/tdd-master-class-day-3-what-i-learned-today.md" canonical: "https://osherove.com/blog/2009/8/26/tdd-master-class-day-3-what-i-learned-today.html" published: "2009-08-26T07:48:50" updated: "2009-08-26T07:48:50" tags: ["Agile"] author: "Roy Osherove" description: "Today’s edition had two questions: what was really hard to accomplish today, and what did you learn? Good: The different isolation frameworks Swapping all instances of a type How the Isolate.IgnoreCall method really…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Master Class Day \# 3 – “What I learned today” By Roy Osherove August 26, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published August 26, 2009; technical details may be outdated. Today’s edition had two questions: what was really hard to accomplish today, and what did you learn? #### Good: The different isolation frameworks Swapping all instances of a type How the Isolate.IgnoreCall method really works (it should be renamed! to DoNothing) Keeping the test simple No need to overuse isolation frameworks Isolator stands out (easier to remember syntax) Legacy code CAN be tested important to recognize bloated tests (and refactoring it) ”got”  the “extract and override” pattern Learned to use ”isolation” instead of ”mocking” frameworks Manual stubs and mocks can really simplify tests #### Hard: Hard to go slow and incremental Naming tests is still hard Making legacy tests readable and less bloated Creating tests that fail for the right reason Testing legacy code Mixed up the frameworks all the time How to flip through docs Override methods through a framework vs. manually \- making the frameworks work like i want **\- Error messages on ALL isolatoin frameworks suck** make them More like Nunit\`s error messages \- IDE api tooltips for ALL isolation frameworks suck, including a few of Isolator \- ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 6, 2009 ### [Introducing 5Whys.com](https://osherove.com/blog/2009/9/6/introducing-5whyscom.html) - Aug 31, 2009 ### [My Videos](https://osherove.com/blog/2009/8/31/my-videos.html) - Aug 25, 2009 ### [TDD Course Day 2 – “What I Learned Today”](https://osherove.com/blog/2009/8/25/tdd-course-day-2-what-i-learned-today.html) - Aug 24, 2009 ### [One Free Ticket to my UK TDD Master class](https://osherove.com/blog/2009/8/24/one-free-ticket-to-my-uk-tdd-master-class.html) --- title: "Deep Reflection (400 level)" url: "https://osherove.com/videos/2009/8/25/deep-reflection-400-level.md" canonical: "https://osherove.com/videos/2009/8/25/deep-reflection-400-level.html" published: "2009-08-25T19:42:16" updated: "2009-08-25T19:42:16" tags: ["TechEd"] author: "Roy Osherove" description: "Did this talk at TechEd Europe 2008. A deep Reflection talk for .NET developers. DeepReflection.flv" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Deep Reflection (400 level) By Roy Osherove August 25, 2009 In [TechEd](https://osherove.com/videos/category/teched) **Historical article** · Originally published August 25, 2009; technical details may be outdated. Did this talk at TechEd Europe 2008. A deep Reflection talk for .NET developers. DeepReflection.flv ## More in TechEd [All posts in TechEd](https://osherove.com/videos/category/teched) - Jun 1, 2010 ### [Continuous Integration with and without team system 2008](https://osherove.com/videos/2010/6/1/continuous-integration-with-and-without-team-system-2008.html) --- title: "TDD Course Day 2 – “What I Learned Today”" url: "https://osherove.com/blog/2009/8/25/tdd-course-day-2-what-i-learned-today.md" canonical: "https://osherove.com/blog/2009/8/25/tdd-course-day-2-what-i-learned-today.html" published: "2009-08-25T07:42:15" updated: "2009-08-25T07:42:15" tags: ["Agile"] author: "Roy Osherove" description: "Here’s what people at my course in Norway had to say at the end of the day to the question “Tell me one thing you “got” today “: Lambda expressions (many of the isolation frameworks require heavy use of Lambda…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Course Day 2 – “What I Learned Today” By Roy Osherove August 25, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published August 25, 2009; technical details may be outdated. Here’s what people at my course in Norway had to say at the end of the day to the question “Tell me one thing you “got” today “: - Lambda expressions (many of the isolation frameworks require heavy use of Lambda Expressions) - Stub vs. Mock – the differences - The different isolation frameworks (Isolator, Rhino Mock, Moq) - How to Fake methods on classes - Faking static methods (using Isolator, and refactoring) - How to fake stuff in general - Learned i have a lot to learn - How to use moq - How to test classes with many dependencies - Test first actually works! (many felt today that writing the test first was just “automatic” without any thought – and really helped) - Why good test naming is important (also helps direct you when you are “lost” in the test - Design by contract removes waiting for other teams in the company ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Aug 31, 2009 ### [My Videos](https://osherove.com/blog/2009/8/31/my-videos.html) - Aug 26, 2009 ### [TDD Master Class Day # 3 – “What I learned today”](https://osherove.com/blog/2009/8/26/tdd-master-class-day-3-what-i-learned-today.html) - Aug 24, 2009 ### [One Free Ticket to my UK TDD Master class](https://osherove.com/blog/2009/8/24/one-free-ticket-to-my-uk-tdd-master-class.html) - Aug 24, 2009 ### [Benefits of TDD and Pair Programming (Course Day #1)](https://osherove.com/blog/2009/8/24/benefits-of-tdd-and-pair-programming-course-day-1.html) --- title: "Unit Testing Best Practices" url: "https://osherove.com/videos/2009/8/25/unit-testing-best-practices.md" canonical: "https://osherove.com/videos/2009/8/25/unit-testing-best-practices.html" published: "2009-08-25T05:47:59" updated: "2009-08-25T05:47:59" tags: ["NDC 2009", "Unit Testing"] author: "Roy Osherove" description: "Play video Unit Testing Best Practices with Roy Osherove" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing Best Practices By Roy Osherove August 25, 2009 In [NDC 2009](https://osherove.com/videos/category/ndc-2009), [Unit Testing](https://osherove.com/videos/category/unit-testing) **Historical article** · Originally published August 25, 2009; technical details may be outdated. [![](https://osherove.com/img/video/yt-dJUVNFxrK_4.jpg)Play videoUnit Testing Best Practices with Roy Osherove](https://www.youtube.com/watch?v=dJUVNFxrK_4) ## More in NDC 2009 [All posts in NDC 2009](https://osherove.com/videos/category/ndc-2009) - Aug 24, 2009 ### [Unit Testing in Silverlight - SilverUnit and MS Sliverlight Test Framework](https://osherove.com/videos/2009/8/25/unit-testing-in-silverlight-silverunit-and-ms-sliverlight-te.html) - Aug 24, 2009 ### [Mocking on the Edge - Isolation at the system level](https://osherove.com/videos/2009/8/25/mocking-on-the-edge-isolation-at-the-system-level.html) --- title: "Unit Testing in Silverlight - SilverUnit and MS Sliverlight Test Framework" url: "https://osherove.com/videos/2009/8/25/unit-testing-in-silverlight-silverunit-and-ms-sliverlight-te.md" canonical: "https://osherove.com/videos/2009/8/25/unit-testing-in-silverlight-silverunit-and-ms-sliverlight-te.html" published: "2009-08-24T22:52:54" updated: "2009-08-24T22:52:54" tags: ["NDC 2009", "Unit Testing"] author: "Roy Osherove" description: "In this video I show SilverUnit and MS Test for Silverlight. Embedded Flash media from the original post is no longer playable." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing in Silverlight - SilverUnit and MS Sliverlight Test Framework By Roy Osherove August 24, 2009 In [NDC 2009](https://osherove.com/videos/category/ndc-2009), [Unit Testing](https://osherove.com/videos/category/unit-testing) **Historical article** · Originally published August 24, 2009; technical details may be outdated. In this video I show SilverUnit and MS Test for Silverlight. Embedded Flash media from the original post is no longer playable. ## More in NDC 2009 [All posts in NDC 2009](https://osherove.com/videos/category/ndc-2009) - Aug 25, 2009 ### [Unit Testing Best Practices](https://osherove.com/videos/2009/8/25/unit-testing-best-practices.html) - Aug 24, 2009 ### [Mocking on the Edge - Isolation at the system level](https://osherove.com/videos/2009/8/25/mocking-on-the-edge-isolation-at-the-system-level.html) - Aug 24, 2009 ### [TDD - Understanding Mock Objects](https://osherove.com/videos/2009/8/25/tdd-understanding-mock-objects.html) --- title: "Testing Complex Logic with TDD" url: "https://osherove.com/videos/2009/8/25/testing-complex-logic-with-tdd.md" canonical: "https://osherove.com/videos/2009/8/25/testing-complex-logic-with-tdd.html" published: "2009-08-24T22:25:46" updated: "2009-08-24T22:25:46" tags: ["Howto", "Unit Testing"] author: "Roy Osherove" description: "I did this video a looong while ago. still, I think it has value. BTW - if this interests you, you might REALLY like my full online TDD course . Play video Testing Complex Logic with TDD" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Testing Complex Logic with TDD By Roy Osherove August 24, 2009 In [Howto](https://osherove.com/videos/category/howto), [Unit Testing](https://osherove.com/videos/category/unit-testing) **Historical article** · Originally published August 24, 2009; technical details may be outdated. I did this video a looong while ago. still, I think it has value. BTW - if this interests you, you might REALLY like my [full online TDD course](http://www.udemy.com/tdd-in-net-with-roy-osherove/). [![](https://osherove.com/img/video/yt-PP8UDXt268M.jpg)Play videoTesting Complex Logic with TDD](https://www.youtube.com/watch?v=PP8UDXt268M) ## More in Howto [All posts in Howto](https://osherove.com/videos/category/howto) - Dec 7, 2010 ### [Be a legacy code unit test ninja with Typemock Isolator](https://osherove.com/videos/2010/12/7/be-a-legacy-code-unit-test-ninja-with-typemock-isolator.html) - Jun 1, 2010 ### [Continuous Integration with and without team system 2008](https://osherove.com/videos/2010/6/1/continuous-integration-with-and-without-team-system-2008.html) --- title: "Test Review #3 - Unity" url: "https://osherove.com/videos/2009/8/25/test-review-3-unity.md" canonical: "https://osherove.com/videos/2009/8/25/test-review-3-unity.html" published: "2009-08-24T22:10:52" updated: "2009-08-24T22:10:52" tags: ["Test Review", "Unit Testing"] author: "Roy Osherove" description: "TestReviewUnity.flv" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Review \#3 - Unity By Roy Osherove August 24, 2009 In [Test Review](https://osherove.com/videos/category/test-review), [Unit Testing](https://osherove.com/videos/category/unit-testing) **Historical article** · Originally published August 24, 2009; technical details may be outdated. TestReviewUnity.flv ## More in Test Review [All posts in Test Review](https://osherove.com/videos/category/test-review) - Oct 28, 2009 ### [Test Review - XUnit.NET](https://osherove.com/videos/2009/10/28/test-review-xunitnet.html) - Oct 18, 2009 ### [Test Review - MEF](https://osherove.com/videos/2009/10/18/test-review-mef.html) - Aug 24, 2009 ### [Test Review #2 - ASP.NET MVC](https://osherove.com/videos/2009/8/25/test-review-2-aspnet-mvc.html) - Aug 24, 2009 ### [Test Review #1 - NerdDinner](https://osherove.com/videos/2009/8/25/test-review-1-nerddinner.html) --- title: "Test Review #2 - ASP.NET MVC" url: "https://osherove.com/videos/2009/8/25/test-review-2-aspnet-mvc.md" canonical: "https://osherove.com/videos/2009/8/25/test-review-2-aspnet-mvc.html" published: "2009-08-24T22:09:13" updated: "2009-08-24T22:09:13" tags: ["Test Review", "Unit Testing"] author: "Roy Osherove" description: "TestReviewAspNetMVC.flv" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Review \#2 - ASP.NET MVC By Roy Osherove August 24, 2009 In [Test Review](https://osherove.com/videos/category/test-review), [Unit Testing](https://osherove.com/videos/category/unit-testing) **Historical article** · Originally published August 24, 2009; technical details may be outdated. TestReviewAspNetMVC.flv ## More in Test Review [All posts in Test Review](https://osherove.com/videos/category/test-review) - Oct 18, 2009 ### [Test Review - MEF](https://osherove.com/videos/2009/10/18/test-review-mef.html) - Aug 24, 2009 ### [Test Review #3 - Unity](https://osherove.com/videos/2009/8/25/test-review-3-unity.html) - Aug 24, 2009 ### [Test Review #1 - NerdDinner](https://osherove.com/videos/2009/8/25/test-review-1-nerddinner.html) --- title: "Test Review #1 - NerdDinner" url: "https://osherove.com/videos/2009/8/25/test-review-1-nerddinner.md" canonical: "https://osherove.com/videos/2009/8/25/test-review-1-nerddinner.html" published: "2009-08-24T22:07:38" updated: "2009-08-24T22:07:38" tags: ["Test Review", "Unit Testing"] author: "Roy Osherove" description: "TestReviewNerdDinner.flv" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Review \#1 - NerdDinner By Roy Osherove August 24, 2009 In [Test Review](https://osherove.com/videos/category/test-review), [Unit Testing](https://osherove.com/videos/category/unit-testing) **Historical article** · Originally published August 24, 2009; technical details may be outdated. TestReviewNerdDinner.flv ## More in Test Review [All posts in Test Review](https://osherove.com/videos/category/test-review) - Aug 24, 2009 ### [Test Review #3 - Unity](https://osherove.com/videos/2009/8/25/test-review-3-unity.html) - Aug 24, 2009 ### [Test Review #2 - ASP.NET MVC](https://osherove.com/videos/2009/8/25/test-review-2-aspnet-mvc.html) --- title: "Mocking on the Edge - Isolation at the system level" url: "https://osherove.com/videos/2009/8/25/mocking-on-the-edge-isolation-at-the-system-level.md" canonical: "https://osherove.com/videos/2009/8/25/mocking-on-the-edge-isolation-at-the-system-level.html" published: "2009-08-24T22:03:51" updated: "2009-08-24T22:03:51" tags: ["NDC 2009", "Unit Testing"] author: "Roy Osherove" description: "MockingOnTheEdge.flv" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mocking on the Edge - Isolation at the system level By Roy Osherove August 24, 2009 In [NDC 2009](https://osherove.com/videos/category/ndc-2009), [Unit Testing](https://osherove.com/videos/category/unit-testing) **Historical article** · Originally published August 24, 2009; technical details may be outdated. MockingOnTheEdge.flv ## More in NDC 2009 [All posts in NDC 2009](https://osherove.com/videos/category/ndc-2009) - Aug 25, 2009 ### [Unit Testing Best Practices](https://osherove.com/videos/2009/8/25/unit-testing-best-practices.html) - Aug 24, 2009 ### [Unit Testing in Silverlight - SilverUnit and MS Sliverlight Test Framework](https://osherove.com/videos/2009/8/25/unit-testing-in-silverlight-silverunit-and-ms-sliverlight-te.html) - Aug 24, 2009 ### [TDD - Understanding Mock Objects](https://osherove.com/videos/2009/8/25/tdd-understanding-mock-objects.html) - Aug 24, 2009 ### [Understanding Test Driven Development](https://osherove.com/videos/2009/8/25/understanding-test-driven-development.html) --- title: "TDD - Understanding Mock Objects" url: "https://osherove.com/videos/2009/8/25/tdd-understanding-mock-objects.md" canonical: "https://osherove.com/videos/2009/8/25/tdd-understanding-mock-objects.html" published: "2009-08-24T22:00:44" updated: "2009-08-24T22:00:44" tags: ["NDC 2009", "Unit Testing"] author: "Roy Osherove" description: "UnderstandingMockObjects.flv" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD - Understanding Mock Objects By Roy Osherove August 24, 2009 In [NDC 2009](https://osherove.com/videos/category/ndc-2009), [Unit Testing](https://osherove.com/videos/category/unit-testing) **Historical article** · Originally published August 24, 2009; technical details may be outdated. UnderstandingMockObjects.flv ## More in NDC 2009 [All posts in NDC 2009](https://osherove.com/videos/category/ndc-2009) - Aug 24, 2009 ### [Unit Testing in Silverlight - SilverUnit and MS Sliverlight Test Framework](https://osherove.com/videos/2009/8/25/unit-testing-in-silverlight-silverunit-and-ms-sliverlight-te.html) - Aug 24, 2009 ### [Mocking on the Edge - Isolation at the system level](https://osherove.com/videos/2009/8/25/mocking-on-the-edge-isolation-at-the-system-level.html) - Aug 24, 2009 ### [Understanding Test Driven Development](https://osherove.com/videos/2009/8/25/understanding-test-driven-development.html) --- title: "Understanding Test Driven Development" url: "https://osherove.com/videos/2009/8/25/understanding-test-driven-development.md" canonical: "https://osherove.com/videos/2009/8/25/understanding-test-driven-development.html" published: "2009-08-24T21:59:35" updated: "2009-08-24T21:59:35" tags: ["NDC 2009", "TDD", "Unit Testing"] author: "Roy Osherove" description: "Play video Understanding Test Driven Development" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Understanding Test Driven Development By Roy Osherove August 24, 2009 In [NDC 2009](https://osherove.com/videos/category/ndc-2009), [TDD](https://osherove.com/videos/category/tdd), [Unit Testing](https://osherove.com/videos/category/unit-testing) **Historical article** · Originally published August 24, 2009; technical details may be outdated. [![](https://osherove.com/img/video/yt-q5Xd1tmIgec.jpg)Play videoUnderstanding Test Driven Development](https://www.youtube.com/watch?v=q5Xd1tmIgec) ## More in NDC 2009 [All posts in NDC 2009](https://osherove.com/videos/category/ndc-2009) - Aug 24, 2009 ### [Mocking on the Edge - Isolation at the system level](https://osherove.com/videos/2009/8/25/mocking-on-the-edge-isolation-at-the-system-level.html) - Aug 24, 2009 ### [TDD - Understanding Mock Objects](https://osherove.com/videos/2009/8/25/tdd-understanding-mock-objects.html) --- title: "One Free Ticket to my UK TDD Master class" url: "https://osherove.com/blog/2009/8/24/one-free-ticket-to-my-uk-tdd-master-class.md" canonical: "https://osherove.com/blog/2009/8/24/one-free-ticket-to-my-uk-tdd-master-class.html" published: "2009-08-24T18:46:24" updated: "2009-08-24T18:46:24" tags: ["Agile"] author: "Roy Osherove" description: "Want to be in my UK TDD master class but can’t find the money for it? If you have a blog, there’s a very big chance that you could still get in . Draw will be held on sep. 1st!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # One Free Ticket to my UK TDD Master class By Roy Osherove August 24, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published August 24, 2009; technical details may be outdated. Want to be in my [UK TDD master class](http://bbits.co.uk/tddmasterclass) but can’t find the money for it? [If you have a blog, there’s a very big chance that you could still get in](http://bbits.co.uk/blog/archive/2009/08/19/bloggers-win-a-free-place-for-roy-osheroves-tdd-masterclass-worth-2395.aspx). Draw will be held on sep. 1st! ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Aug 26, 2009 ### [TDD Master Class Day # 3 – “What I learned today”](https://osherove.com/blog/2009/8/26/tdd-master-class-day-3-what-i-learned-today.html) - Aug 25, 2009 ### [TDD Course Day 2 – “What I Learned Today”](https://osherove.com/blog/2009/8/25/tdd-course-day-2-what-i-learned-today.html) - Aug 24, 2009 ### [Benefits of TDD and Pair Programming (Course Day #1)](https://osherove.com/blog/2009/8/24/benefits-of-tdd-and-pair-programming-course-day-1.html) - Aug 11, 2009 ### [Uncle bob and the Art of Unit Testing](https://osherove.com/blog/2009/8/11/uncle-bob-and-the-art-of-unit-testing.html) --- title: "Benefits of TDD and Pair Programming (Course Day #1)" url: "https://osherove.com/blog/2009/8/24/benefits-of-tdd-and-pair-programming-course-day-1.md" canonical: "https://osherove.com/blog/2009/8/24/benefits-of-tdd-and-pair-programming-course-day-1.html" published: "2009-08-24T07:50:57" updated: "2009-08-24T07:50:57" tags: ["Agile"] author: "Roy Osherove" description: "We just finished day 1 of TDD master class in Norway. Here’s what people had to say about TDD and Pair Programming which they did half of the day: When doing TDD it is: Easier to isolate a problem Probably less bugs…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Benefits of TDD and Pair Programming (Course Day \#1) By Roy Osherove August 24, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published August 24, 2009; technical details may be outdated. We just finished day 1 of TDD master class in Norway. Here’s what people had to say about TDD and Pair Programming which they did half of the day: **When doing TDD it is:** - Easier to isolate a problem - Probably less bugs - Better API design - More thinking about what you are writing - More tests - Cleaner tests - Less debugger - More confidence in the code - Api documentation (up to date) - Able to ”move on” to other tasks once finished - More focus - Code coverage (everyone has 94-100%) - Quick feedback when you fail or break - Didn't write extra unneeded code - Think about requirements of API - Easy refactoring **When working in pairs:** - better Interacting (sparing) - You learn something from the other person - Good for teaching and mentoring - Instant code review - Very productive and focused - No time wasted - Mostly fun - Shared code ownership (bus factor) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Aug 25, 2009 ### [TDD Course Day 2 – “What I Learned Today”](https://osherove.com/blog/2009/8/25/tdd-course-day-2-what-i-learned-today.html) - Aug 24, 2009 ### [One Free Ticket to my UK TDD Master class](https://osherove.com/blog/2009/8/24/one-free-ticket-to-my-uk-tdd-master-class.html) - Aug 11, 2009 ### [Uncle bob and the Art of Unit Testing](https://osherove.com/blog/2009/8/11/uncle-bob-and-the-art-of-unit-testing.html) - Jul 28, 2009 ### [Webinar: Driving unit testing in the organization](https://osherove.com/blog/2009/7/28/webinar-driving-unit-testing-in-the-organization.html) --- title: "NDC Video Torrents Update – More videos! (please re-seed)" url: "https://osherove.com/blog/2009/8/20/ndc-video-torrents-update-more-videos-please-re-seed.md" canonical: "https://osherove.com/blog/2009/8/20/ndc-video-torrents-update-more-videos-please-re-seed.html" published: "2009-08-20T00:25:16" updated: "2009-08-20T00:25:16" tags: [".NET", "NDC09-Video"] author: "Roy Osherove" description: "There are now two torrent files. Vegan Vikan has shared a torrent that has most of my TDD talks, a few from Ayende, and Robert Martin/ This torrent has talks that I downloaded. Action item: Even if you’re not interested…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NDC Video Torrents Update – More videos! (please re-seed) By Roy Osherove August 20, 2009 In [.NET](https://osherove.com/blog/category/net), [NDC09-Video](https://osherove.com/blog/category/ndc09-video) **Historical article** · Originally published August 20, 2009; technical details may be outdated. There are now two torrent files. - [Vegan Vikan has shared a torrent](http://files.osherove.com/downloads/ndc09-1.torrent) that has most of my TDD talks, a few from Ayende, and Robert Martin/ - [This torrent](http://files.osherove.com/downloads/ndc09-2.torrent) has talks that I downloaded. **Action item:** **Even if you’re not interested in all the videos, please share and re-seed the torrents so that other people can enjoy them.** ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 29, 2009 ### [Recommended books - part 1](https://osherove.com/blog/2009/10/29/recommended-books-part-1.html) - Oct 5, 2009 ### [Why Google Chrome and FireFox are a big security risk for anyone using them](https://osherove.com/blog/2009/10/5/why-google-chrome-and-firefox-are-a-big-security-risk-for-an.html) - Aug 19, 2009 ### [NDC Video – Robert Martin – S.O.L.I.D Principles of OO class design](https://osherove.com/blog/2009/8/19/ndc-video-robert-martin-solid-principles-of-oo-class-design.html) - Aug 19, 2009 ### [NDC Video – Robert Martin – Craftsmanship and Ethics](https://osherove.com/blog/2009/8/19/ndc-video-robert-martin-craftsmanship-and-ethics.html) --- title: "NDC Video – Robert Martin – S.O.L.I.D Principles of OO class design" url: "https://osherove.com/blog/2009/8/19/ndc-video-robert-martin-solid-principles-of-oo-class-design.md" canonical: "https://osherove.com/blog/2009/8/19/ndc-video-robert-martin-solid-principles-of-oo-class-design.html" published: "2009-08-19T12:46:10" updated: "2009-08-19T12:46:10" tags: [".NET", "NDC09-Video"] author: "Roy Osherove" description: "another one from the big uncle overseas Embedded Flash media from the original post is no longer playable." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NDC Video – Robert Martin – S.O.L.I.D Principles of OO class design By Roy Osherove August 19, 2009 In [.NET](https://osherove.com/blog/category/net), [NDC09-Video](https://osherove.com/blog/category/ndc09-video) **Historical article** · Originally published August 19, 2009; technical details may be outdated. another one from the big uncle overseas Embedded Flash media from the original post is no longer playable. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 5, 2009 ### [Why Google Chrome and FireFox are a big security risk for anyone using them](https://osherove.com/blog/2009/10/5/why-google-chrome-and-firefox-are-a-big-security-risk-for-an.html) - Aug 20, 2009 ### [NDC Video Torrents Update – More videos! (please re-seed)](https://osherove.com/blog/2009/8/20/ndc-video-torrents-update-more-videos-please-re-seed.html) - Aug 19, 2009 ### [NDC Video – Robert Martin – Craftsmanship and Ethics](https://osherove.com/blog/2009/8/19/ndc-video-robert-martin-craftsmanship-and-ethics.html) - Aug 19, 2009 ### [NDC 2009 Videos - .Torrent File](https://osherove.com/blog/2009/8/19/ndc-2009-videos-torrent-file.html) --- title: "NDC Video – Robert Martin – Craftsmanship and Ethics" url: "https://osherove.com/blog/2009/8/19/ndc-video-robert-martin-craftsmanship-and-ethics.md" canonical: "https://osherove.com/blog/2009/8/19/ndc-video-robert-martin-craftsmanship-and-ethics.html" published: "2009-08-19T12:42:16" updated: "2009-08-19T12:42:16" tags: [".NET", "NDC09-Video"] author: "Roy Osherove" description: "while you’re waiting to get all the videos I have via torrent (could take about 6 days for the initial seed to be complete, sorry!), here’s another killer from Robert Martin: Embedded Flash media from the original post…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NDC Video – Robert Martin – Craftsmanship and Ethics By Roy Osherove August 19, 2009 In [.NET](https://osherove.com/blog/category/net), [NDC09-Video](https://osherove.com/blog/category/ndc09-video) **Historical article** · Originally published August 19, 2009; technical details may be outdated. while you’re waiting to [get all the videos I have via torrent](http://files.osherove.com/downloads/NDC09-2.torrent) (could take about 6 days for the initial seed to be complete, sorry!), here’s another killer from Robert Martin: Embedded Flash media from the original post is no longer playable. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 20, 2009 ### [NDC Video Torrents Update – More videos! (please re-seed)](https://osherove.com/blog/2009/8/20/ndc-video-torrents-update-more-videos-please-re-seed.html) - Aug 19, 2009 ### [NDC Video – Robert Martin – S.O.L.I.D Principles of OO class design](https://osherove.com/blog/2009/8/19/ndc-video-robert-martin-solid-principles-of-oo-class-design.html) - Aug 19, 2009 ### [NDC 2009 Videos - .Torrent File](https://osherove.com/blog/2009/8/19/ndc-2009-videos-torrent-file.html) - Aug 18, 2009 ### [NDC Video – Robert Martin – Component Principles](https://osherove.com/blog/2009/8/18/ndc-video-robert-martin-component-principles.html) --- title: "NDC 2009 Videos - .Torrent File" url: "https://osherove.com/blog/2009/8/19/ndc-2009-videos-torrent-file.md" canonical: "https://osherove.com/blog/2009/8/19/ndc-2009-videos-torrent-file.html" published: "2009-08-19T06:53:40" updated: "2009-08-19T06:53:40" tags: [".NET", "NDC09-Video"] author: "Roy Osherove" description: "After uploading files slowly to Viddler, I realise that the video quality is pretty low. so, I create a .torrent file you can use to get the hi-res versions of the NDC videos I managed to download. I use UTorrent as a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NDC 2009 Videos - .Torrent File By Roy Osherove August 19, 2009 In [.NET](https://osherove.com/blog/category/net), [NDC09-Video](https://osherove.com/blog/category/ndc09-video) **Historical article** · Originally published August 19, 2009; technical details may be outdated. After uploading files slowly to Viddler, I realise that the video quality is pretty low. so, I create a .torrent file you can use to get the hi-res versions of the NDC videos I managed to download. I use UTorrent as a torrent client, and it’s awesome. [click here to get the ndc torrent file](http://files.osherove.com/downloads/NDC09-2.torrent). **please re-seed, re-announce and share. the more people we get on this the faster you’ll be able to get it.** ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 19, 2009 ### [NDC Video – Robert Martin – S.O.L.I.D Principles of OO class design](https://osherove.com/blog/2009/8/19/ndc-video-robert-martin-solid-principles-of-oo-class-design.html) - Aug 19, 2009 ### [NDC Video – Robert Martin – Craftsmanship and Ethics](https://osherove.com/blog/2009/8/19/ndc-video-robert-martin-craftsmanship-and-ethics.html) - Aug 18, 2009 ### [NDC Video – Robert Martin – Component Principles](https://osherove.com/blog/2009/8/18/ndc-video-robert-martin-component-principles.html) - Aug 18, 2009 ### [NDC Video – Robert Martin – Clean Code III – Functions](https://osherove.com/blog/2009/8/18/ndc-video-robert-martin-clean-code-iii-functions.html) --- title: "NDC Video – Robert Martin – Component Principles" url: "https://osherove.com/blog/2009/8/18/ndc-video-robert-martin-component-principles.md" canonical: "https://osherove.com/blog/2009/8/18/ndc-video-robert-martin-component-principles.html" published: "2009-08-18T23:41:34" updated: "2009-08-18T23:41:34" tags: [".NET", "NDC09-Video"] author: "Roy Osherove" description: "Embedded Flash media from the original post is no longer playable." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NDC Video – Robert Martin – Component Principles By Roy Osherove August 18, 2009 In [.NET](https://osherove.com/blog/category/net), [NDC09-Video](https://osherove.com/blog/category/ndc09-video) **Historical article** · Originally published August 18, 2009; technical details may be outdated. Embedded Flash media from the original post is no longer playable. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 19, 2009 ### [NDC Video – Robert Martin – Craftsmanship and Ethics](https://osherove.com/blog/2009/8/19/ndc-video-robert-martin-craftsmanship-and-ethics.html) - Aug 19, 2009 ### [NDC 2009 Videos - .Torrent File](https://osherove.com/blog/2009/8/19/ndc-2009-videos-torrent-file.html) - Aug 18, 2009 ### [NDC Video – Robert Martin – Clean Code III – Functions](https://osherove.com/blog/2009/8/18/ndc-video-robert-martin-clean-code-iii-functions.html) - Aug 18, 2009 ### [NDC Video – Michael Feathers – Working Effectively with Legacy Code](https://osherove.com/blog/2009/8/18/ndc-video-michael-feathers-working-effectively-with-legacy-c.html) --- title: "NDC Video – Robert Martin – Clean Code III – Functions" url: "https://osherove.com/blog/2009/8/18/ndc-video-robert-martin-clean-code-iii-functions.md" canonical: "https://osherove.com/blog/2009/8/18/ndc-video-robert-martin-clean-code-iii-functions.html" published: "2009-08-18T23:39:50" updated: "2009-08-18T23:39:50" tags: [".NET", "NDC09-Video"] author: "Roy Osherove" description: "Uncle Bob! Embedded Flash media from the original post is no longer playable." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NDC Video – Robert Martin – Clean Code III – Functions By Roy Osherove August 18, 2009 In [.NET](https://osherove.com/blog/category/net), [NDC09-Video](https://osherove.com/blog/category/ndc09-video) **Historical article** · Originally published August 18, 2009; technical details may be outdated. Uncle Bob! Embedded Flash media from the original post is no longer playable. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 19, 2009 ### [NDC 2009 Videos - .Torrent File](https://osherove.com/blog/2009/8/19/ndc-2009-videos-torrent-file.html) - Aug 18, 2009 ### [NDC Video – Robert Martin – Component Principles](https://osherove.com/blog/2009/8/18/ndc-video-robert-martin-component-principles.html) - Aug 18, 2009 ### [NDC Video – Michael Feathers – Working Effectively with Legacy Code](https://osherove.com/blog/2009/8/18/ndc-video-michael-feathers-working-effectively-with-legacy-c.html) - Aug 18, 2009 ### [NDC Video – Jeremy D. Miller – Convention Over Configuration](https://osherove.com/blog/2009/8/18/ndc-video-jeremy-d-miller-convention-over-configuration.html) --- title: "NDC Video – Michael Feathers – Working Effectively with Legacy Code" url: "https://osherove.com/blog/2009/8/18/ndc-video-michael-feathers-working-effectively-with-legacy-c.md" canonical: "https://osherove.com/blog/2009/8/18/ndc-video-michael-feathers-working-effectively-with-legacy-c.html" published: "2009-08-18T07:48:23" updated: "2009-08-18T07:48:23" tags: [".NET", "NDC09-Video"] author: "Roy Osherove" description: "another one by Michael Feathers Embedded Flash media from the original post is no longer playable." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NDC Video – Michael Feathers – Working Effectively with Legacy Code By Roy Osherove August 18, 2009 In [.NET](https://osherove.com/blog/category/net), [NDC09-Video](https://osherove.com/blog/category/ndc09-video) **Historical article** · Originally published August 18, 2009; technical details may be outdated. another one by Michael Feathers Embedded Flash media from the original post is no longer playable. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 18, 2009 ### [NDC Video – Robert Martin – Component Principles](https://osherove.com/blog/2009/8/18/ndc-video-robert-martin-component-principles.html) - Aug 18, 2009 ### [NDC Video – Robert Martin – Clean Code III – Functions](https://osherove.com/blog/2009/8/18/ndc-video-robert-martin-clean-code-iii-functions.html) - Aug 18, 2009 ### [NDC Video – Jeremy D. Miller – Convention Over Configuration](https://osherove.com/blog/2009/8/18/ndc-video-jeremy-d-miller-convention-over-configuration.html) - Aug 18, 2009 ### [NDC Video – Michael Feathers – Seven Blind Alleys in Software Design](https://osherove.com/blog/2009/8/18/ndc-video-michael-feathers-seven-blind-alleys-in-software-de.html) --- title: "NDC Video – Jeremy D. Miller – Convention Over Configuration" url: "https://osherove.com/blog/2009/8/18/ndc-video-jeremy-d-miller-convention-over-configuration.md" canonical: "https://osherove.com/blog/2009/8/18/ndc-video-jeremy-d-miller-convention-over-configuration.html" published: "2009-08-18T07:45:43" updated: "2009-08-18T07:45:43" tags: [".NET", "NDC09-Video"] author: "Roy Osherove" description: "Here’s one by Jeremy Miller Embedded Flash media from the original post is no longer playable." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NDC Video – Jeremy D. Miller – Convention Over Configuration By Roy Osherove August 18, 2009 In [.NET](https://osherove.com/blog/category/net), [NDC09-Video](https://osherove.com/blog/category/ndc09-video) **Historical article** · Originally published August 18, 2009; technical details may be outdated. Here’s one by [Jeremy Miller](http://codebetter.com/blogs/jeremy.miller/) Embedded Flash media from the original post is no longer playable. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 18, 2009 ### [NDC Video – Robert Martin – Clean Code III – Functions](https://osherove.com/blog/2009/8/18/ndc-video-robert-martin-clean-code-iii-functions.html) - Aug 18, 2009 ### [NDC Video – Michael Feathers – Working Effectively with Legacy Code](https://osherove.com/blog/2009/8/18/ndc-video-michael-feathers-working-effectively-with-legacy-c.html) - Aug 18, 2009 ### [NDC Video – Michael Feathers – Seven Blind Alleys in Software Design](https://osherove.com/blog/2009/8/18/ndc-video-michael-feathers-seven-blind-alleys-in-software-de.html) - Aug 18, 2009 ### [NDC Video – Ted Neward – WCF Patterns](https://osherove.com/blog/2009/8/18/ndc-video-ted-neward-wcf-patterns.html) --- title: "NDC Video – Michael Feathers – Seven Blind Alleys in Software Design" url: "https://osherove.com/blog/2009/8/18/ndc-video-michael-feathers-seven-blind-alleys-in-software-de.md" canonical: "https://osherove.com/blog/2009/8/18/ndc-video-michael-feathers-seven-blind-alleys-in-software-de.html" published: "2009-08-18T07:42:05" updated: "2009-08-18T07:42:05" tags: [".NET", "NDC09-Video"] author: "Roy Osherove" description: "and another, by Michael. Embedded Flash media from the original post is no longer playable." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NDC Video – Michael Feathers – Seven Blind Alleys in Software Design By Roy Osherove August 18, 2009 In [.NET](https://osherove.com/blog/category/net), [NDC09-Video](https://osherove.com/blog/category/ndc09-video) **Historical article** · Originally published August 18, 2009; technical details may be outdated. and another, by Michael. Embedded Flash media from the original post is no longer playable. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 18, 2009 ### [NDC Video – Michael Feathers – Working Effectively with Legacy Code](https://osherove.com/blog/2009/8/18/ndc-video-michael-feathers-working-effectively-with-legacy-c.html) - Aug 18, 2009 ### [NDC Video – Jeremy D. Miller – Convention Over Configuration](https://osherove.com/blog/2009/8/18/ndc-video-jeremy-d-miller-convention-over-configuration.html) - Aug 18, 2009 ### [NDC Video – Ted Neward – WCF Patterns](https://osherove.com/blog/2009/8/18/ndc-video-ted-neward-wcf-patterns.html) - Aug 13, 2009 ### [Six things that will happen when you uninstall your MSDN documentation](https://osherove.com/blog/2009/8/13/six-things-that-will-happen-when-you-uninstall-your-msdn-doc.html) --- title: "NDC Video – Ted Neward – WCF Patterns" url: "https://osherove.com/blog/2009/8/18/ndc-video-ted-neward-wcf-patterns.md" canonical: "https://osherove.com/blog/2009/8/18/ndc-video-ted-neward-wcf-patterns.html" published: "2009-08-18T07:39:27" updated: "2009-08-18T07:39:27" tags: [".NET", "NDC09-Video"] author: "Roy Osherove" description: "This one, by Ted Neward Note: it starts about 10-15 minutes into the video (it is unedited) Embedded Flash media from the original post is no longer playable." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NDC Video – Ted Neward – WCF Patterns By Roy Osherove August 18, 2009 In [.NET](https://osherove.com/blog/category/net), [NDC09-Video](https://osherove.com/blog/category/ndc09-video) **Historical article** · Originally published August 18, 2009; technical details may be outdated. This one, by [Ted Neward](http://blogs.tedneward.com/) Note: it starts about 10-15 minutes into the video (it is unedited) Embedded Flash media from the original post is no longer playable. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 18, 2009 ### [NDC Video – Jeremy D. Miller – Convention Over Configuration](https://osherove.com/blog/2009/8/18/ndc-video-jeremy-d-miller-convention-over-configuration.html) - Aug 18, 2009 ### [NDC Video – Michael Feathers – Seven Blind Alleys in Software Design](https://osherove.com/blog/2009/8/18/ndc-video-michael-feathers-seven-blind-alleys-in-software-de.html) - Aug 13, 2009 ### [Six things that will happen when you uninstall your MSDN documentation](https://osherove.com/blog/2009/8/13/six-things-that-will-happen-when-you-uninstall-your-msdn-doc.html) - Aug 11, 2009 ### [Uncle bob and the Art of Unit Testing](https://osherove.com/blog/2009/8/11/uncle-bob-and-the-art-of-unit-testing.html) --- title: "NDC Video: Michael Feathers – Design Sense" url: "https://osherove.com/blog/2009/8/18/ndc-video-michael-feathers-design-sense.md" canonical: "https://osherove.com/blog/2009/8/18/ndc-video-michael-feathers-design-sense.html" published: "2009-08-18T07:29:04" updated: "2009-08-18T07:29:04" tags: ["NDC09-Video"] author: "Roy Osherove" description: "the videos from NDC 2009 were briefly published and then went away never to come back, it seems. I was able to snag several of them just before they went away so I’ll be publishing them on the blog as I upload them…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NDC Video: Michael Feathers – Design Sense By Roy Osherove August 18, 2009 In [NDC09-Video](https://osherove.com/blog/category/ndc09-video) **Historical article** · Originally published August 18, 2009; technical details may be outdated. the videos from [NDC 2009](http://www.ndc2009.no/) were briefly published and then went away never to come back, it seems. I was able to snag several of them just before they went away so I’ll be publishing them on the blog as I upload them (slowly!). Unfortunately, I was planning on getting the videos of my **own** talks there last, but that opportunity did not return. If anyone ever gets a hold of them, do let me know! here’s the first one, by Michael Feathers: Embedded Flash media from the original post is no longer playable. ## More in NDC09-Video [All posts in NDC09-Video](https://osherove.com/blog/category/ndc09-video) - Aug 18, 2009 ### [NDC Video – Michael Feathers – Seven Blind Alleys in Software Design](https://osherove.com/blog/2009/8/18/ndc-video-michael-feathers-seven-blind-alleys-in-software-de.html) - Aug 18, 2009 ### [NDC Video – Ted Neward – WCF Patterns](https://osherove.com/blog/2009/8/18/ndc-video-ted-neward-wcf-patterns.html) --- title: "Six things that will happen when you uninstall your MSDN documentation" url: "https://osherove.com/blog/2009/8/13/six-things-that-will-happen-when-you-uninstall-your-msdn-doc.md" canonical: "https://osherove.com/blog/2009/8/13/six-things-that-will-happen-when-you-uninstall-your-msdn-doc.html" published: "2009-08-13T15:18:47" updated: "2009-08-13T15:18:47" tags: [".NET"] author: "Roy Osherove" description: "someone asked in a mailing list if there are any repercussions to uninstalling MSDN documentation from their system, since it was taking such a long time to load on F1. my answer: After uninstalling MSDN you will get…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Six things that will happen when you uninstall your MSDN documentation By Roy Osherove August 13, 2009 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published August 13, 2009; technical details may be outdated. someone asked in a mailing list if there are any repercussions to uninstalling MSDN documentation from their system, since it was taking such a long time to load on F1. **my answer:** 1. After uninstalling MSDN you will get the weird and uncomfortable feeling that things are running a bit smoother 2. pressing F1, however, will still stall your system, though for a little bit less time. Everything else will continue to work just fine, as if MSDN docs never existed. 3. you will also find that whatever it is you were looking for, the closest search engine (ehm google) will find a better match (sometimes within MSDN itself, but mostly much better than MSDN). 4. Your hard drive will also contain a bit more space, which you can then use to install productive tools such as "everything" search engine, "TestDriven.NET" and Total commander :) 5. you will continue to go through life wondering what would have happened if you had just stuck with MSDN a little bit longer 6. but that sinking feeling will soon be replaced by the realization that most of the time, you just don't need to install MSDN anymore. It's almost irrelevant since the info is out there in the cloud anyway. and the fact that you can go get coffee if you accidentally press F1 doesn’t really help its case. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 18, 2009 ### [NDC Video – Michael Feathers – Seven Blind Alleys in Software Design](https://osherove.com/blog/2009/8/18/ndc-video-michael-feathers-seven-blind-alleys-in-software-de.html) - Aug 18, 2009 ### [NDC Video – Ted Neward – WCF Patterns](https://osherove.com/blog/2009/8/18/ndc-video-ted-neward-wcf-patterns.html) - Aug 11, 2009 ### [Uncle bob and the Art of Unit Testing](https://osherove.com/blog/2009/8/11/uncle-bob-and-the-art-of-unit-testing.html) - Aug 11, 2009 ### [No Excuses](https://osherove.com/blog/2009/8/11/no-excuses.html) --- title: "Uncle bob and the Art of Unit Testing" url: "https://osherove.com/blog/2009/8/11/uncle-bob-and-the-art-of-unit-testing.md" canonical: "https://osherove.com/blog/2009/8/11/uncle-bob-and-the-art-of-unit-testing.html" published: "2009-08-11T16:28:53" updated: "2009-08-11T16:28:53" tags: [".NET", "Agile"] author: "Roy Osherove" description: "Before my book came out, I sent a copy over to Robert Martin. the guy in the agile circles these days (and for many years!) I wanted him to read it and give me a quote about the book I can use. Well, it took some time…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Uncle bob and the Art of Unit Testing By Roy Osherove August 11, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published August 11, 2009; technical details may be outdated. Before [my book](https://www.amazon.com/exec/obidos/ASIN/1933988274/iserializable-20) came out, I sent a copy over to Robert Martin. **the** guy in the agile circles these days (and for many years!) I wanted him to read it and give me a quote about the book I can use. Well, it took some time but he came back with a quote I’d love to use and I’m really proud of: **[Uncle Bob:](http://www.objectmentor.com/omTeam/martin_r.html)** "This is one of the best soup-to-nuts books on TDD that I've seen.  It starts at the beginning, but takes no prisoners as it logically and inexorably moves to ever more advanced topics." Awesome! I am truly honored. Now I need to figure out a way to put it [on the amazon book page…](https://www.amazon.com/exec/obidos/ASIN/1933988274/iserializable-20) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 18, 2009 ### [NDC Video – Ted Neward – WCF Patterns](https://osherove.com/blog/2009/8/18/ndc-video-ted-neward-wcf-patterns.html) - Aug 13, 2009 ### [Six things that will happen when you uninstall your MSDN documentation](https://osherove.com/blog/2009/8/13/six-things-that-will-happen-when-you-uninstall-your-msdn-doc.html) - Aug 11, 2009 ### [No Excuses](https://osherove.com/blog/2009/8/11/no-excuses.html) - Aug 11, 2009 ### [Script# (Script Sharp) – writing javascript in C#](https://osherove.com/blog/2009/8/11/script-script-sharp-writing-javascript-in-c.html) --- title: "No Excuses" url: "https://osherove.com/blog/2009/8/11/no-excuses.md" canonical: "https://osherove.com/blog/2009/8/11/no-excuses.html" published: "2009-08-11T15:43:12" updated: "2009-08-11T15:43:12" tags: [".NET"] author: "Roy Osherove" description: "I read on twitter the other day this guy who wanted to go to my TDD master class course but was bummed out for not having the money. so he started bitching about it on twitter how it costs so much and can someone please…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # No Excuses By Roy Osherove August 11, 2009 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published August 11, 2009; technical details may be outdated. I read on twitter the other day this guy who wanted to go to [my TDD master class course](http://www.bbits.co.uk/services/training/?61) but was bummed out for not having the money. so he started bitching about it on twitter how it costs so much and can someone please give him a handout (jokingly). So I approached him and told him that **if he makes it to my course I will personally make sure he only pays half the cost. I will cover the other half.** Why did I do it? Because I wanted to see how serious he was, or was he just making up excuses for not doing. I would have indeed given him a 50% discount if he showed up. My guess? it won’t happen. Not that I think he’s a bad guy or anything, I just think that there are only two states you can live in in this life: you’re either a victim of something, or you’re a doer. **A victim** has everything **happen to them**. they are powerless against it, and can only talk about things, instead of doing them. **A doer** will **take** matters to their own hands, and will wield their power to do what is under their control to make the life they intended. was this guy a doer or a victim? here’s another hint: when I told him about the discount he said “cool. getting the time off work should be OK, but how do I pay off the other 50%?” classic victim speak. I know a few people who would not let themselves be victims in this case. **if you really wanted** to do it, you’d find a way, see? when you think something can’t be done, try to place yourself in a situation of much larger proportions: - you need to come up with 1000$ for a course. - you’re not sure how you can get them - **Now, Imagine** you need 1000$ for an **immediate knee surgery** you are having tomorrow, or you will never walk again on that leg. - Still can’t find a way to get 1000$? - I bet you can find 5 different ways to get 1000$ in one day in 5 minutes if you thought it was important enough. - you can ask a good friend\\parents\\bank\\bookie to loan you the money for a very important cause - you can ask to put overtime at work if possible - you can ask for an advance at work, or a loan from work - you can sell your TV - you can make a deal with the course firm to help out in other course in exchange - you can make a deal with the course firm to advertise or to bring a paying friend with you for an extra discount on top - you can ask your boss and explain why this is important to you - or - you can bitch about it and remain “stuck” **here’s another scenario:** - You want to learn web development, but your job is on winforms all day (no hint of web in sight) - you’re not sure how you can find time to learn it - **Now, imagine** you need to learn web development because you’re on a TV show that will give you 1,000,000$ if you do a simple web app in a month. - Still can’t find the time? - you can learn at night - you can take time off work - you can work half time for a month - you can play sick for a week - you can switch to a different job - you can ask your boss to move you to the web team - you can ask you boss to **create** a web team which you lead - you can convince your boss that you’d like to build a web app for your business that is sorely needed, given 25% time - you can decide that the last hour or first hour of each work day is not email\\youtube, but instead is trying to write a simple web page. - or - you can bitch about it and remain “stuck” so the only difference is: how badly do you think you want to do it? you just need to figure out what things are under your own control, and do what you can in those areas. # **NO EXCUSES** if it’s important to you, and you’re not pushing yourself to do it, I will not respect you in the morning. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 13, 2009 ### [Six things that will happen when you uninstall your MSDN documentation](https://osherove.com/blog/2009/8/13/six-things-that-will-happen-when-you-uninstall-your-msdn-doc.html) - Aug 11, 2009 ### [Uncle bob and the Art of Unit Testing](https://osherove.com/blog/2009/8/11/uncle-bob-and-the-art-of-unit-testing.html) - Aug 11, 2009 ### [Script# (Script Sharp) – writing javascript in C#](https://osherove.com/blog/2009/8/11/script-script-sharp-writing-javascript-in-c.html) - Jun 30, 2009 ### [Lifetime of a software methodology](https://osherove.com/blog/2009/6/30/lifetime-of-a-software-methodology.html) --- title: "Script# (Script Sharp) – writing javascript in C#" url: "https://osherove.com/blog/2009/8/11/script-script-sharp-writing-javascript-in-c.md" canonical: "https://osherove.com/blog/2009/8/11/script-script-sharp-writing-javascript-in-c.html" published: "2009-08-11T15:18:04" updated: "2009-08-11T15:18:04" tags: [".NET", "C#", "web"] author: "Roy Osherove" description: "I’ve started dabbling with web development. I’m building a secret project that I’ll unleash one day. soon. I’m learning a lot of JS and JQUery foo as I’m putting together a coupld of ajax and interaction intensive pages…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Script\# (Script Sharp) – writing javascript in C\# By Roy Osherove August 11, 2009 In [.NET](https://osherove.com/blog/category/net), [C#](https://osherove.com/blog/category/c), [web](https://osherove.com/blog/category/web) **Historical article** · Originally published August 11, 2009; technical details may be outdated. I’ve started dabbling with web development. I’m building a secret project that I’ll unleash one day. soon. I’m learning a lot of JS and JQUery foo as I’m putting together a coupld of ajax and interaction intensive pages on the site. The javascript experience has been not so great. While it’s a piece of cake to get small scripts going, once you get beyond a couple of pages long script files, you get into a nightmarish scenario where navigating, refactoring or sometimes understanding the relationships in your javascript code becomes slow to nearly impossible. there’s a lot to be said for the open way in which javascript works. but it’s too “open” in terms of programming experience. So I looked at way to arrange javascript better. from ways to arrange files and classes, to loading JS dynamically. it all pretty much sucks. I can’t believe this is the state of the art after a few good years of web 2.0 programming. really. Enter Script#. This thing has potential to be huge. It’s a custom compiler that sits inside visual studio and gives you “special” projects that you write like C# libraries. the code that you write then gets compiled to both a dll (which you don’t care about) **and** to a javascrip file (in two versions – a minified version and a debuggable version). it’s basically a translation of the C# code you write into javascript. this allows me to write a whole bunch of very interactive scripts, but they are easily managed like regular C# files and projects. - I can refactor the code easily - I can navigate easily - there’s a representation of the document and script object models has C# frameworks, so I get intellisense - I can also use JQuery and other things which I depend on (like jquery plugins etc..) the only thing you don’t get is the debuggability. for that you still need to debug javascript code, which the generated code is very readable. - It does not support generics yet, which is OK. You don’t need generics to do great stuff in javascript code. but it would be nice to have! - It does not support JQuery out of the box. there is a solution, and the end of this post. - It still has some quirks and things you need to learn using the script objectmodel so that you get what you intend in your javascript code. overall, despise the very different nature of C# and JS, I find that with Script# I almost manage to have it all: Great javascript interaction, but a “managed” experience when writing that code. **How can I get it?** - [you can get Script# here](http://projects.nikhilk.net/ScriptSharp/) - [here’s a good doc on intro to Script# plus lots of "common scenarios” in JS](http://www.scribd.com/doc/13743466/ScriptSharpv042) and how you implement them using Script#.  For example, to implement sending in a JSON object with various properties, you use a special “Dictionary” class with values and keys. - you can get JQuery support by using [the “jQuerySharp” project](http://code.google.com/p/jquerysharp/) . **Including JQuery into the mix** - I downloaded and extended the [JQuery for Script# project](http://code.google.com/p/jquerysharp/). it’s very easy to “get” and get going once you grokked Script#. - The “$” sign is out. You can’t use the “$” sign since it’s not allowed in C#. so the generated code actually uses it in other places in the generated code (it was not built with jQuery in mind). So if you have other non generated JS code that uses jQUery you’ll need to use the “safe” version of jQuery (“$(‘something’)” becomes “jQuery(‘something’)” ) - you will need to add any plugins jQuery uses on top of that. it’s very simple: The thing you need to realize about “supporting” other frameworks, is that when you code in C# you need to think at a different level - “what will be generated from this?”. There are two kinds of code in script# – - there’s “regular” code which you write which gets all translated into javascript. - and then there’s “Exported” code, which is just a strongly typed “shell” you can program against, but does not really get generated on the JS side. You note that code by putting a couple of attributes on the class. for example, the JQuery additions to Script# are just one class called jQUery with methods that have the same signatures as methods in the jQuery object model, but with no implementation but the simplest one to make them compile. **any calls to this class will be generated**, but the class being called will not be generated. You are in fact saying to the compiler ‘expect that there’s already an existing object model I will work against" – ignore this class when you generate code”. very cool stuff. **Things I’d love to see in Script#:** - More frequent updates and .net 3.5 support. - Features: I’d love to be able to use “new {Prop=”value”}” anonymous types to generated JSON objects. also I’d love to have lambda support instead of just a simple delegate support. - Open source it baby. so we can all contribute and learn from it. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 11, 2009 ### [Uncle bob and the Art of Unit Testing](https://osherove.com/blog/2009/8/11/uncle-bob-and-the-art-of-unit-testing.html) - Aug 11, 2009 ### [No Excuses](https://osherove.com/blog/2009/8/11/no-excuses.html) - Jun 30, 2009 ### [Lifetime of a software methodology](https://osherove.com/blog/2009/6/30/lifetime-of-a-software-methodology.html) - Jun 28, 2009 ### [JQuery in Action – Great book](https://osherove.com/blog/2009/6/28/jquery-in-action-great-book.html) --- title: "Webinar: Driving unit testing in the organization" url: "https://osherove.com/blog/2009/7/28/webinar-driving-unit-testing-in-the-organization.md" canonical: "https://osherove.com/blog/2009/7/28/webinar-driving-unit-testing-in-the-organization.html" published: "2009-07-28T15:58:22" updated: "2009-07-28T15:58:22" tags: ["Agile"] author: "Roy Osherove" description: "Just a quick reminder, I’ll be participating in the Typemock webinar tomorrow on how to advance unit testing in your organization. It will be led by Gil Zilberfeld and myself and we’ll talk about ways to overcome…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Webinar: Driving unit testing in the organization By Roy Osherove July 28, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published July 28, 2009; technical details may be outdated. Just a quick reminder, I’ll be participating in the Typemock webinar tomorrow on how to advance unit testing in your organization. It will be led by Gil Zilberfeld and myself and we’ll talk about ways to overcome difficulties when pushing for unit testing in your team and organization. If you’d like to listen in, [all the details are here](http://blog.typemock.com/2009/07/lead-way-in-unit-testing-live-webinar.html).. for direct links: 8am GMT – [https://www2.gotomeeting.com/register/813743274](https://www2.gotomeeting.com/register/813743274) And again at 3pm EDT: [https://www2.gotomeeting.com/register/121909771](https://www2.gotomeeting.com/register/121909771) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Aug 24, 2009 ### [Benefits of TDD and Pair Programming (Course Day #1)](https://osherove.com/blog/2009/8/24/benefits-of-tdd-and-pair-programming-course-day-1.html) - Aug 11, 2009 ### [Uncle bob and the Art of Unit Testing](https://osherove.com/blog/2009/8/11/uncle-bob-and-the-art-of-unit-testing.html) - Jul 25, 2009 ### [Nightly build wins again](https://osherove.com/blog/2009/7/25/nightly-build-wins-again.html) - Jul 22, 2009 ### [Lean and Kanban Videos](https://osherove.com/blog/2009/7/22/lean-and-kanban-videos.html) --- title: "Nightly build wins again" url: "https://osherove.com/blog/2009/7/25/nightly-build-wins-again.md" canonical: "https://osherove.com/blog/2009/7/25/nightly-build-wins-again.html" published: "2009-07-25T14:37:01" updated: "2009-07-25T14:37:01" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "Here’s an email message the dev lead at our company sent out tonight: “Hi, I analyzed the nightly build failure - it broke because of an examples test that tests recursive fakes, and incidentally uses WhenCalled() on a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nightly build wins again By Roy Osherove July 25, 2009 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published July 25, 2009; technical details may be outdated. Here’s an email message the dev lead at our company sent out tonight: _“Hi, I analyzed the nightly build failure - it broke because of an examples test that tests recursive fakes, and incidentally uses WhenCalled() on a property getter on the 2nd level of the recursive fake. This does not work because of a hidden bug - WhenCalled() should reset the recursive fake property setter, and when it is called true properties should be off. This bug has been there for a long time, and only the bug fix for recursive fakes with true properties unveiled it. I will take two actions to resolve this: 1\. add a test for this scenario to our normal unit tests 2\. implement the fix above - 1/2 hour of work Please pay close attention to the build status until then - the nightly breaks because of this examples test. Any other test failure should raise a flag.”_ I was thrilled to read this. Our automated nightly builds also run all the “example” tests that ship with Typemock Isolator. A couple months back we found out that this was not being done, and added it to the build process. The bug found here is the type that can remain hidden and even if you do TDD there are always chances of not thinking about tests that kind of corner cases. In this case, not only did the nightly build uncover a bug that would have been embarrassing to find at the customer site (“silly typmock, their own example tests don’t even pass on a newly installed machine!”) but uncovered a buried problem, by chance. lesson: automate and test as much as you can. even examples that you produce with your product. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Aug 11, 2009 ### [Uncle bob and the Art of Unit Testing](https://osherove.com/blog/2009/8/11/uncle-bob-and-the-art-of-unit-testing.html) - Jul 28, 2009 ### [Webinar: Driving unit testing in the organization](https://osherove.com/blog/2009/7/28/webinar-driving-unit-testing-in-the-organization.html) - Jul 22, 2009 ### [Lean and Kanban Videos](https://osherove.com/blog/2009/7/22/lean-and-kanban-videos.html) - Jul 9, 2009 ### [Minimizing unit Test Fragility – 8 features in Typemock Isolator to help](https://osherove.com/blog/2009/7/9/minimizing-unit-test-fragility-8-features-in-typemock-isolat.html) --- title: "Lean and Kanban Videos" url: "https://osherove.com/blog/2009/7/22/lean-and-kanban-videos.md" canonical: "https://osherove.com/blog/2009/7/22/lean-and-kanban-videos.html" published: "2009-07-22T05:12:01" updated: "2009-07-22T05:12:01" tags: ["Agile", "Lean"] author: "Roy Osherove" description: "Lots of what seem to be good videos about Lean and Kanban here http://www.sep.com/lk2009/david-anderson-kanban-applying-principles-and-evolving-process-solutions" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Lean and Kanban Videos By Roy Osherove July 22, 2009 In [Agile](https://osherove.com/blog/category/agile), [Lean](https://osherove.com/blog/category/lean) **Historical article** · Originally published July 22, 2009; technical details may be outdated. Lots of what seem to be good videos about Lean and Kanban here [http://www.sep.com/lk2009/david-anderson-kanban-applying-principles-and-evolving-process-solutions](http://www.sep.com/lk2009/david-anderson-kanban-applying-principles-and-evolving-process-solutions "http://www.sep.com/lk2009/david-anderson-kanban-applying-principles-and-evolving-process-solutions") ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 28, 2009 ### [Webinar: Driving unit testing in the organization](https://osherove.com/blog/2009/7/28/webinar-driving-unit-testing-in-the-organization.html) - Jul 25, 2009 ### [Nightly build wins again](https://osherove.com/blog/2009/7/25/nightly-build-wins-again.html) - Jul 9, 2009 ### [Minimizing unit Test Fragility – 8 features in Typemock Isolator to help](https://osherove.com/blog/2009/7/9/minimizing-unit-test-fragility-8-features-in-typemock-isolat.html) - Jul 9, 2009 ### [Preventing fragile tests – how can isolation frameworks help or hinder your goal?](https://osherove.com/blog/2009/7/9/preventing-fragile-tests-how-can-isolation-frameworks-help-o.html) --- title: "Minimizing unit Test Fragility – 8 features in Typemock Isolator to help" url: "https://osherove.com/blog/2009/7/9/minimizing-unit-test-fragility-8-features-in-typemock-isolat.md" canonical: "https://osherove.com/blog/2009/7/9/minimizing-unit-test-fragility-8-features-in-typemock-isolat.html" published: "2009-07-09T15:52:50" updated: "2009-07-09T15:52:50" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "in continuation to my challenge (which no one had bothered answering, lazy web!) One of the things that inhibits unit tests in organizations is the idea of fragile tests. a Fragile test is a test that can easily break…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Minimizing unit Test Fragility – 8 features in Typemock Isolator to help By Roy Osherove July 9, 2009 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published July 9, 2009; technical details may be outdated. in continuation [to my challenge](http://weblogs.asp.net/rosherove/archive/2009/07/09/preventing-fragile-tests-how-can-isolation-frameworks-help-or-hinder-your-goal.aspx) (which no one had bothered answering, lazy web!) ![image](https://osherove.com/img/wb/61df090f_weblogs.asp.net_blogs_rosherove_image_thumb_3B3B939A.png) One of the things that inhibits unit tests in organizations is the idea of _fragile_ tests. a Fragile test is a test that can easily break when the production code changes. That’s not to say that tests should _never_ break as you change production code, but there are ways to minimize this effect so that when tests _do_ break, they break for the _right_  reason. **the right reason** is when a feature in production code isn’t working. **the wrong reasons** can be many and varied. Of the most common ones is the idea of over specification in tests. The more your test expects of your code’s internal implementation, the more “specified” it is, the more “expectations” it has on the internals of the code. since internal code is more prone to change, so will the test break more often. so the situation can occur that the production code changed, but still gets the job done, but since it’s doing it differently internally, the test breaks even though the end result is still OK. One of the main ideas in the new Isolator API was to reduce the fragility of tests by default. there are several features in Typemock Isolator that remove lots of fragility from tests by default, compared to other tools: 1. **All Fakes are non strict by default**. 2. **Recursive Fakes** 3. Method stubs ignore parameters by default 4. “From now on” Method behavior as a default 5. Isolate.Swap.AllInstances 6. Isolated.NonPublic APIs will not break when refactoring from private to public 7. Ignore one or all static methods on a type 8. True Properties 9. All Method overloads are faked by default - **All Fakes are non strict by default**. when a fake object is strict, then it will throw an exception when someone calls one of its methods that wasn’t specifically “expected” by the test (or a different number of times than expected). since internal code can change and start interacting with other code in different ways, strict fakes will almost always fail your test on the lightest nuance of change. Most frameworks used to have strict fakes by default. Isolator has all fakes non strict by default. in fact, there is no “strict” mode at all. var fake = Isolate.Fake.Instance(); //code under test can now call any method without the test needing to specify it. the test only needs to specify behavior of methods it cares about. - **Recursive Fakes** This is a feature first introduced by Isolator more than a couple of years ago and then adopted by Moq and Rhino Mocks. the idea is simple : allow chained calls in your code without the test needing to specify fakes at each hierarchy level. for example, calling MyFake.SomeProperty.DoSomething() will, by default, do nothing since its root is a fake object. the “SomeProperty” will be initialized by default to a fake object as well, recursively down the line. With other frameworks this will only work with interfaces, methods which are virtual and classes that are non sealed. Isolator can make this work with anything, including static methods and non sealed classes. var fake = Isolate.Fake.Instance(); //code under test can fake.SomeProperty.DoSomething() //or var propObj = fake.SomeProperty; propObj.DoSomething(); As your internal code is refactored, or changed to call a method down the hierarchy, this should not break a test (as long as the method does not matter to the test) - **Method stubs ignore parameters by default** all other frameworks except Isolator will use the values being sent to methods of fake objects during the “setup” phase, as expectations of these actual values. Isolator by default ignores values being sent in, and just returns the fake result we tell it to, no matter what was being sent in. Of course, you \*could\* tell it to use the exact argument values, but that is not the default behavior. other frameworks will require that you put in special constraints on each parameter value to say that you don’t care about the actual value. var o = Isolate.Fake.Instance(); const int IGNORED\_VALUE=10; object IGNORED\_OBJECT= null; Isolate.WhenCalled(()=> o.SomeMethodWithParams(“ignored string”,IGNORED\_VALUE,IGNORED\_OBJECT) ).WillReturn(3); this method will return 3 no matter what parameters are being sent to it. so internal code can change parameters slightly and it will still work. by specifying only on specify param values, we could be over specifying the test. - **“From now on” Method behavior as a default** with Isolator, once you set behavior on a method (“Ignore”, WillReturn(..), WillThrowException(..) ), it will use that as its default behavior for all subsequent calls. That way, if the internal code ends up calling a method more than once, the test should not care about it (as long as the result does not hurt the test). This is great for ignore calls to “Log” objects and such, where you don’t know or care how many times it will be called. you just want to ignore them without having to worry if the code will use them or not. for example, the method from the code above will \*always\* return 3, no matter how many times it will be called. if we specified it twice with different return values, it will return the \*last\* behavior as the default, after it was called once with the previous behavior. - **Isolate.Swap.AllInstances** This beauty will replace all existing and future instances of a specific type in the code under test with the fake type. that way you don’t care how many times some object might be created, or how many instances of it are used. for “util” type objects, this makes things a breeze to setup for a test that could be very complicated or impossible in other frameworks. as the internal code changes with usage of these types, the test will still pass. var fake = Isolate.Fake.Instance(); Isolate.WhenCalled( ()=> fake.Foo() ).IgnoreCall(); Isolate.Swap.AllInstances().With(fake); //now production code can do this: var x = new SomeType();//<—this will behave like the fake object we created - **Isolated.NonPublic APIs will not break when refactoring from private to public** Isolator allows setting method behavior on non public methods as well: var x = new SomeObject(); Isolate.NonPublic.WhenCalled(x,”SomeMethod”).WillReturn(3); The beauty is that if you do refactor the method to make it public, the test won’t nudge you or throw an exception. It will just work with public methods as well. You can then refactor the test without being a slave to it. - **Ignore one or all static methods on a type** Isolate.Fake.StaticMethods() will ignore all void methods on that type, and return recursive fakes on all functions. That way, if you add more methods to that type, the test won’t care about it.  great for utility style classes with lots of static methods. - **True Properties** “True properties” is a feature that Isolator picked up from Rhino Mocks – you can set properties on a fake object as if they were real properties. The nice thing is that if internal code then sets these properties to values you don’t care about, the test will work just fine. it’s also very readable. var fake = Isolate.Fake.Instance(); fake.SomeProperty=3; //will behave like a real property and return 3; - **Default Faked method overloads** Once you set a method’s behavior, if that method has any overloads, they will have the same behavior as well. So if you refactor your code under test to use a different overload of the same method the test will “just work” and won’t need to be changed to reflect this change. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 25, 2009 ### [Nightly build wins again](https://osherove.com/blog/2009/7/25/nightly-build-wins-again.html) - Jul 22, 2009 ### [Lean and Kanban Videos](https://osherove.com/blog/2009/7/22/lean-and-kanban-videos.html) - Jul 9, 2009 ### [Preventing fragile tests – how can isolation frameworks help or hinder your goal?](https://osherove.com/blog/2009/7/9/preventing-fragile-tests-how-can-isolation-frameworks-help-o.html) - Jul 7, 2009 ### [Art of Unit Testing on Hanselminutes](https://osherove.com/blog/2009/7/7/art-of-unit-testing-on-hanselminutes.html) --- title: "Preventing fragile tests – how can isolation frameworks help or hinder your goal?" url: "https://osherove.com/blog/2009/7/9/preventing-fragile-tests-how-can-isolation-frameworks-help-o.md" canonical: "https://osherove.com/blog/2009/7/9/preventing-fragile-tests-how-can-isolation-frameworks-help-o.html" published: "2009-07-09T08:06:58" updated: "2009-07-09T08:06:58" tags: ["Agile", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "One of the things that inhibits unit tests in organizations is the idea of fragile tests. a Fragile test is a test that can easily break when the production code changes. That’s not to say that tests should never break…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Preventing fragile tests – how can isolation frameworks help or hinder your goal? By Roy Osherove July 9, 2009 In [Agile](https://osherove.com/blog/category/agile), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published July 9, 2009; technical details may be outdated. One of the things that inhibits unit tests in organizations is the idea of _fragile_ tests. a Fragile test is a test that can easily break when the production code changes. That’s not to say that tests should _never_ break as you change production code, but there are ways to minimize this effect so that when tests _do_ break, they break for the _right_  reason. **the right reason** is when a feature in production code isn’t working. **the wrong reasons** can be many and varied. Of the most common ones is the idea of **over specification** in tests. The more your test expects of your code’s internal implementation, the more “specified” it is, the more “expectations” it has on the internals of the code. since internal code is more proone to change, so will the test break more often. so the situation can occur that the production code changed, but still gets the job done, but since it’s doing it differently internally, the test breaks even though the end result is still OK. One of the main ideas in the [new Isolator API](http://blog.typemock.com/search/label/AAA) was to reduce the fragility of tests by default. there are several features in Typemock Isolator that remove lots of fragility from tests by default, compared to other tools. **What do you think they are?** ([look here for hints](http://blog.typemock.com/search/label/AAA)) I found at least 8 separate things. what do other tools like Rhino Mocks, or Moq do to help or hinder the fragility of your tests? \*[here is a search that will help](http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=Nsa&q=%2Bfragile+test+moq+rhino+mocks+nmock&aq=f&oq=&aqi=)\* I’ll post my own answers tomorrow. but I’d like to see if people actually “get” how important the API of an isolation framework is to this cause. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 22, 2009 ### [Lean and Kanban Videos](https://osherove.com/blog/2009/7/22/lean-and-kanban-videos.html) - Jul 9, 2009 ### [Minimizing unit Test Fragility – 8 features in Typemock Isolator to help](https://osherove.com/blog/2009/7/9/minimizing-unit-test-fragility-8-features-in-typemock-isolat.html) - Jul 7, 2009 ### [Art of Unit Testing on Hanselminutes](https://osherove.com/blog/2009/7/7/art-of-unit-testing-on-hanselminutes.html) - Jul 7, 2009 ### [TDD Master class in Kent, UK](https://osherove.com/blog/2009/7/7/tdd-master-class-in-kent-uk.html) --- title: "Art of Unit Testing on Hanselminutes" url: "https://osherove.com/blog/2009/7/7/art-of-unit-testing-on-hanselminutes.md" canonical: "https://osherove.com/blog/2009/7/7/art-of-unit-testing-on-hanselminutes.html" published: "2009-07-07T05:28:40" updated: "2009-07-07T05:28:40" tags: ["Agile", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "Scott Hanselman took me in for a 30 minute interview about Unit Testing Dos and Don’ts in his podcast, Hanselminutes. It was a pleasure, and I hope to be there once more about other topics. Maybe in TechEd Berlin.. Have…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Art of Unit Testing on Hanselminutes By Roy Osherove July 7, 2009 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published July 7, 2009; technical details may be outdated. ![image](https://osherove.com/img/wb/82185141_weblogs.asp.net_blogs_rosherove_image_thumb_27F98A51.png) [Scott Hanselman](http://www.hanselman.com/blog/) took me in for a 30 minute interview about Unit Testing Dos and Don’ts in his podcast, Hanselminutes. It was a pleasure, and I hope to be there once more about other topics. Maybe in TechEd Berlin.. [Have a listen](http://www.hanselminutes.com/default.aspx?showID=187) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 9, 2009 ### [Minimizing unit Test Fragility – 8 features in Typemock Isolator to help](https://osherove.com/blog/2009/7/9/minimizing-unit-test-fragility-8-features-in-typemock-isolat.html) - Jul 9, 2009 ### [Preventing fragile tests – how can isolation frameworks help or hinder your goal?](https://osherove.com/blog/2009/7/9/preventing-fragile-tests-how-can-isolation-frameworks-help-o.html) - Jul 7, 2009 ### [TDD Master class in Kent, UK](https://osherove.com/blog/2009/7/7/tdd-master-class-in-kent-uk.html) - Jun 30, 2009 ### [Lifetime of a software methodology](https://osherove.com/blog/2009/6/30/lifetime-of-a-software-methodology.html) --- title: "TDD Master class in Kent, UK" url: "https://osherove.com/blog/2009/7/7/tdd-master-class-in-kent-uk.md" canonical: "https://osherove.com/blog/2009/7/7/tdd-master-class-in-kent-uk.html" published: "2009-07-07T05:16:22" updated: "2009-07-07T05:16:22" tags: ["Agile"] author: "Roy Osherove" description: "I’m happy to announce that I’ll be doing a 5 day TDD master class in the UK, September 21-25. Full course details are here . If you read my blog or seen my twitter, you also have the chance for an early bird pricing.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Master class in Kent, UK By Roy Osherove July 7, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published July 7, 2009; technical details may be outdated. I’m happy to announce that I’ll be doing a 5 day TDD master class in the UK, September 21-25. [Full course details are here](http://bbits.co.uk/tddmasterclass). If you read my blog or seen my twitter, you also have the chance for an early bird pricing. but, if you use the following VIP code \[VIPTDD09\], you get an additional discount over that as well. IF you want to get a glimpse of what are the kind of topics we cover in the first two days alone, you can listen in [to the latest Hanselminutes episode](http://www.hanselminutes.com/default.aspx?showID=187) about the art of unit testing, with me. Seats are limited to 20. you’ll be pair programming most of the time, and I want to make sure people get as much personal attention and guidance from me as possible. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 9, 2009 ### [Preventing fragile tests – how can isolation frameworks help or hinder your goal?](https://osherove.com/blog/2009/7/9/preventing-fragile-tests-how-can-isolation-frameworks-help-o.html) - Jul 7, 2009 ### [Art of Unit Testing on Hanselminutes](https://osherove.com/blog/2009/7/7/art-of-unit-testing-on-hanselminutes.html) - Jun 30, 2009 ### [Lifetime of a software methodology](https://osherove.com/blog/2009/6/30/lifetime-of-a-software-methodology.html) - Jun 25, 2009 ### [TDD Master Class almost full](https://osherove.com/blog/2009/6/25/tdd-master-class-almost-full.html) --- title: "Lifetime of a software methodology" url: "https://osherove.com/blog/2009/6/30/lifetime-of-a-software-methodology.md" canonical: "https://osherove.com/blog/2009/6/30/lifetime-of-a-software-methodology.html" published: "2009-06-30T13:36:26" updated: "2009-06-30T13:36:26" tags: [".NET", "Agile"] author: "Roy Osherove" description: "I think I heard Jerry Seinfeld say that the life of an actor are: Who’s Jerry Seinfeld? Get me Jerry Seinfeld Get me a young Jerry Seinfeld Who’s Jerry Seinfeld? Which really feels these days like: What’s “CMM” Let’s do…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Lifetime of a software methodology By Roy Osherove June 30, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published June 30, 2009; technical details may be outdated. I think I heard Jerry Seinfeld say that the life of an actor are: - Who’s Jerry Seinfeld? - Get me Jerry Seinfeld - Get me a young Jerry Seinfeld - Who’s Jerry Seinfeld? **Which really feels these days like:** - What’s “CMM” - Let’s do “CMM” - Let’s do an adapted version of “CMM” - Here’s a better,lighter “CMM” - What’s “CMM”? - What’s “Agile” - Let’s do “Agile” - Let’s do an adapted version of “Agile” - Here’s a better, lighter “Agile” - What’s “Agile”? - What’s “Scrum” - Let’s do “Scrum” - Let’s do an adapted version of “Scrum” - Here’s a better, lighter “Scrum” - What’s “Scrum”? - What’s “Lean” - Let’s do “Lean” - Let’s do an adapted version of “Lean” - Here’s a better, lighter “Lean” - What’s “Lean”? ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 11, 2009 ### [No Excuses](https://osherove.com/blog/2009/8/11/no-excuses.html) - Aug 11, 2009 ### [Script# (Script Sharp) – writing javascript in C#](https://osherove.com/blog/2009/8/11/script-script-sharp-writing-javascript-in-c.html) - Jun 28, 2009 ### [JQuery in Action – Great book](https://osherove.com/blog/2009/6/28/jquery-in-action-great-book.html) - Jun 25, 2009 ### [TDD Master Class almost full](https://osherove.com/blog/2009/6/25/tdd-master-class-almost-full.html) --- title: "JQuery in Action – Great book" url: "https://osherove.com/blog/2009/6/28/jquery-in-action-great-book.md" canonical: "https://osherove.com/blog/2009/6/28/jquery-in-action-great-book.html" published: "2009-06-28T12:14:48" updated: "2009-06-28T12:14:48" tags: [".NET"] author: "Roy Osherove" description: "I’m half way through JQuery in Action and have to say I was pleasantly surprised to read a lot of things about the “why'” things are the way they are, and not just simple facts about JQuery. Lots of useful information,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # JQuery in Action – Great book By Roy Osherove June 28, 2009 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published June 28, 2009; technical details may be outdated. I’m half way through [JQuery in Action](https://www.amazon.com/exec/obidos/ASIN/1933988355/iserializable-) and have to say I was pleasantly surprised to read a lot of things about the “why'” things are the way they are, and not just simple facts about JQuery. Lots of useful information, especially for a web newbie like me (I used to hate html related activities until $() came along) Way to go, great book! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 11, 2009 ### [Script# (Script Sharp) – writing javascript in C#](https://osherove.com/blog/2009/8/11/script-script-sharp-writing-javascript-in-c.html) - Jun 30, 2009 ### [Lifetime of a software methodology](https://osherove.com/blog/2009/6/30/lifetime-of-a-software-methodology.html) - Jun 25, 2009 ### [TDD Master Class almost full](https://osherove.com/blog/2009/6/25/tdd-master-class-almost-full.html) - Jun 6, 2009 ### [Art Of Unit Testing available at Amazon](https://osherove.com/blog/2009/6/6/art-of-unit-testing-available-at-amazon.html) --- title: "TDD Master Class almost full" url: "https://osherove.com/blog/2009/6/25/tdd-master-class-almost-full.md" canonical: "https://osherove.com/blog/2009/6/25/tdd-master-class-almost-full.html" published: "2009-06-25T01:08:54" updated: "2009-06-25T01:08:54" tags: [".NET", "Agile", "Unit Testing"] author: "Roy Osherove" description: "My upcoming TDD Master class in Oslo, Norway, during august, has only a few seats left. I heard from several people at NDC that they are planning to sign up, so I’d suggest they hurry up . This class is a 5 day pair…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Master Class almost full By Roy Osherove June 25, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published June 25, 2009; technical details may be outdated. My [upcoming TDD Master class](http://tinyurl.com/tddAugust) in Oslo, Norway, during august, has only a few seats left. I heard from several people at NDC that they are planning to sign up, [so I’d suggest they hurry up](http://tinyurl.com/tddAugust). This class is a 5 day pair programming fest, where people work together on Unit Testing and TDD related excercises with my coaching. It’s the class I wish I had done 10 years ago. - If you’re interested in me doing this class in other countries, [drop me a line](http://weblogs.asp.net/rosherove/contact.aspx). - If you’ve already been to my class, I’d love it if you left your thoughts, comments or recommendations to it on the comments to this post. I will later use them on other places that talk about this class (with your name next to it!) ![Flying Ninja](https://osherove.com/img/wb/130c95b4_weblogs.asp.net_blogs_rosherove_iStock_000007109321Small_thumb_5126F221.jpg) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 30, 2009 ### [Lifetime of a software methodology](https://osherove.com/blog/2009/6/30/lifetime-of-a-software-methodology.html) - Jun 28, 2009 ### [JQuery in Action – Great book](https://osherove.com/blog/2009/6/28/jquery-in-action-great-book.html) - Jun 6, 2009 ### [Art Of Unit Testing available at Amazon](https://osherove.com/blog/2009/6/6/art-of-unit-testing-available-at-amazon.html) - Jun 2, 2009 ### [Using Explicit Arrange,Act,Assert scopes in tests – thoughts?](https://osherove.com/blog/2009/6/2/using-explicit-arrangeactassert-scopes-in-tests-thoughts.html) --- title: "NDC 2009 – Done!" url: "https://osherove.com/blog/2009/6/22/ndc-2009-done.md" canonical: "https://osherove.com/blog/2009/6/22/ndc-2009-done.html" published: "2009-06-22T04:46:14" updated: "2009-06-22T04:46:14" tags: ["Agile", "Art Of Unit Testing"] author: "Roy Osherove" description: "NDC 2009 was a blast! Thanks for all the great conversations :) Here’s what it looked like when you look up at a full room in NDC" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NDC 2009 – Done! By Roy Osherove June 22, 2009 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published June 22, 2009; technical details may be outdated. NDC 2009 was a blast! Thanks for all the great conversations :) Here’s what it looked like when you look up at a full room in NDC ![DSC03827](https://osherove.com/img/wb/89ba1779_weblogs.asp.net_blogs_rosherove_DSC03827_thumb_7D78C4BF.jpg) ![DSC03826](https://osherove.com/img/wb/393ae9ae_weblogs.asp.net_blogs_rosherove_DSC03826_thumb_06E15D69.jpg) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 30, 2009 ### [Lifetime of a software methodology](https://osherove.com/blog/2009/6/30/lifetime-of-a-software-methodology.html) - Jun 25, 2009 ### [TDD Master Class almost full](https://osherove.com/blog/2009/6/25/tdd-master-class-almost-full.html) - Jun 15, 2009 ### [Questions every team and dev lead should ask themselves](https://osherove.com/blog/2009/6/15/questions-every-team-and-dev-lead-should-ask-themselves.html) - Jun 6, 2009 ### [Art Of Unit Testing available at Amazon](https://osherove.com/blog/2009/6/6/art-of-unit-testing-available-at-amazon.html) --- title: "Questions every team and dev lead should ask themselves" url: "https://osherove.com/blog/2009/6/15/questions-every-team-and-dev-lead-should-ask-themselves.md" canonical: "https://osherove.com/blog/2009/6/15/questions-every-team-and-dev-lead-should-ask-themselves.html" published: "2009-06-15T22:43:34" updated: "2009-06-15T22:43:34" tags: ["Agile", "Art Of Unit Testing"] author: "Roy Osherove" description: "here are the questions that teams and team leads should be asking themselves on a daily\\weekly basis. There are more, but these are the basics, to me. It’s part of the summary for the talk “Beautiful teams I am giving…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Questions every team and dev lead should ask themselves By Roy Osherove June 15, 2009 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published June 15, 2009; technical details may be outdated. here are the questions that teams and team leads should be asking themselves on a daily\\weekly basis. There are more, but these are the basics, to me. It’s part of the summary for the talk “Beautiful teams I am giving at SEConf and NDC. we do a lot of this stuff [over at work](http://www.typemock.com/), and it’s proving itself on a daily basis. **Whole team** 1. What can we automate? 2. where are we "Reinventing the wheel"? 3. what are the tools that slow us down? 4. what tools can we use better? 5. are there bugs that I could have found earlier? how do I make sure I find them earlier? 6. when do we find out we built the right thing? 7. when do we find out our code\\design sucks? how can we make that earlier? 8. How do we show progress at the team level? at the management level? 9. How many meetings does each dev have every week? how can we remove them? 10. Are we building by feature or by layer? 11. can we make all our team sit in the same place? **Team Lead** 1. daily: what bottlenecks exist in the team? what have I solved? 2. will my devs be better in a month or two than they were before? if not, how do I make that happen? 3. what prevents my devs from working? what am I doing about this? ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 25, 2009 ### [TDD Master Class almost full](https://osherove.com/blog/2009/6/25/tdd-master-class-almost-full.html) - Jun 22, 2009 ### [NDC 2009 – Done!](https://osherove.com/blog/2009/6/22/ndc-2009-done.html) - Jun 6, 2009 ### [Art Of Unit Testing available at Amazon](https://osherove.com/blog/2009/6/6/art-of-unit-testing-available-at-amazon.html) - Jun 2, 2009 ### [Using Explicit Arrange,Act,Assert scopes in tests – thoughts?](https://osherove.com/blog/2009/6/2/using-explicit-arrangeactassert-scopes-in-tests-thoughts.html) --- title: "Itamar and the Pitanga Trampoline" url: "https://osherove.com/blog/2009/6/13/itamar-and-the-pitanga-trampoline.md" canonical: "https://osherove.com/blog/2009/6/13/itamar-and-the-pitanga-trampoline.html" published: "2009-06-13T04:53:19" updated: "2009-06-13T04:53:19" tags: ["Family"] author: "Roy Osherove" description: "This was such a beautiful picture, I just had to share. My beautiful Itamar, eating Pitanga on a trampoline." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Itamar and the Pitanga Trampoline By Roy Osherove June 13, 2009 In [Family](https://osherove.com/blog/category/family) **Historical article** · Originally published June 13, 2009; technical details may be outdated. This was such a beautiful picture, I just had to share. My beautiful Itamar, eating [Pitanga](http://en.wikipedia.org/wiki/Pitanga) on a trampoline. ![DSC02907](https://osherove.com/img/wb/50ac4d10_weblogs.asp.net_blogs_rosherove_DSC02907_thumb_3032D3AE.jpg) ## More in Family [All posts in Family](https://osherove.com/blog/category/family) - Apr 27, 2009 ### [Welcome Aviv Osherove](https://osherove.com/blog/2009/4/27/welcome-aviv-osherove.html) --- title: "Art Of Unit Testing available at Amazon" url: "https://osherove.com/blog/2009/6/6/art-of-unit-testing-available-at-amazon.md" canonical: "https://osherove.com/blog/2009/6/6/art-of-unit-testing-available-at-amazon.html" published: "2009-06-06T17:43:57" updated: "2009-06-06T17:43:57" tags: [".NET", "Agile", "Art Of Unit Testing"] author: "Roy Osherove" description: "My book, The Art Of Unit Testing , is now in stock at Amazon. If you’ve read the book, I’d love it if you put in a review on that page." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Art Of Unit Testing available at Amazon By Roy Osherove June 6, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published June 6, 2009; technical details may be outdated. My book, [The Art Of Unit Testing](https://www.amazon.com/exec/obidos/ASIN/1933988274/iserializable-20), is now **in stock** at Amazon. If you’ve read the book, I’d love it if you [put in a review on that page.](https://www.amazon.com/exec/obidos/ASIN/1933988274/iserializable-20) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 28, 2009 ### [JQuery in Action – Great book](https://osherove.com/blog/2009/6/28/jquery-in-action-great-book.html) - Jun 25, 2009 ### [TDD Master Class almost full](https://osherove.com/blog/2009/6/25/tdd-master-class-almost-full.html) - Jun 2, 2009 ### [Using Explicit Arrange,Act,Assert scopes in tests – thoughts?](https://osherove.com/blog/2009/6/2/using-explicit-arrangeactassert-scopes-in-tests-thoughts.html) - Jun 1, 2009 ### [Review: CryptoLicensing for .NET](https://osherove.com/blog/2009/6/1/review-cryptolicensing-for-net.html) --- title: "web related graphics and animation generators online" url: "https://osherove.com/blog/2009/6/6/web-related-graphics-and-animation-generators-online.md" canonical: "https://osherove.com/blog/2009/6/6/web-related-graphics-and-animation-generators-online.html" published: "2009-06-06T02:04:31" updated: "2009-06-06T02:04:31" tags: ["Cool Tools"] author: "Roy Osherove" description: "wow. I didn’t even know these sorts of sites existed! Isn’t the web great for really small niche markets? (via Jason )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # web related graphics and animation generators online By Roy Osherove June 6, 2009 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published June 6, 2009; technical details may be outdated. wow. I didn’t even know [these sorts of sites](http://www.balkhis.com/web-designs-resources/55-extremely-useful-online-generators-for-designers/) existed! Isn’t the web great for really small niche markets? (via [Jason](http://feeds.jasongaylord.com/~r/JasonNGaylord/~3/B6rXrRJO2og/the-technology-post-for-may-19th.aspx)) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Aug 2, 2010 ### [Case Study: CryptoLicensing + CryptoObfuscator in the real world](https://osherove.com/blog/2010/8/2/case-study-cryptolicensing-cryptoobfuscator-in-the-real-worl.html) - Apr 9, 2010 ### [Things to install on a new machine – revisited](https://osherove.com/blog/2010/4/9/things-to-install-on-a-new-machine-revisited.html) - Jun 1, 2009 ### [Review: CryptoLicensing for .NET](https://osherove.com/blog/2009/6/1/review-cryptolicensing-for-net.html) - Mar 16, 2009 ### [Code Formatter plugin for live writer - updated](https://osherove.com/blog/2009/3/16/code-formatter-plugin-for-live-writer-updated.html) --- title: "Using Explicit Arrange,Act,Assert scopes in tests – thoughts?" url: "https://osherove.com/blog/2009/6/2/using-explicit-arrangeactassert-scopes-in-tests-thoughts.md" canonical: "https://osherove.com/blog/2009/6/2/using-explicit-arrangeactassert-scopes-in-tests-thoughts.html" published: "2009-06-02T17:55:11" updated: "2009-06-02T17:55:11" tags: [".NET", ".Net 2.0", "Agile", "Art Of Unit Testing", "Silverlight"] author: "Roy Osherove" description: "What are your thoughts on this style of writing? Specifically the “Explicit” way of defining arrange, act and assert scopes. also, given the name of the test, where should the call to “OnApplyTemplate” be (if you’ve…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Using Explicit Arrange,Act,Assert scopes in tests – thoughts? By Roy Osherove June 2, 2009 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Silverlight](https://osherove.com/blog/category/silverlight) **Historical article** · Originally published June 2, 2009; technical details may be outdated. What are your thoughts on this style of writing? - Specifically the “Explicit” way of defining arrange, act and assert scopes. - also, given the name of the test, where should the call to “OnApplyTemplate” be (if you’ve never seen the code)? - which version makes more sense to you? A, or B? version A: ![image](https://osherove.com/img/wb/e929be7f_weblogs.asp.net_blogs_rosherove_image_thumb_6AC9F7F5.png) version B: ![image](https://osherove.com/img/wb/88c4c113_weblogs.asp.net_blogs_rosherove_image_thumb_062EAE5F.png) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 25, 2009 ### [TDD Master Class almost full](https://osherove.com/blog/2009/6/25/tdd-master-class-almost-full.html) - Jun 6, 2009 ### [Art Of Unit Testing available at Amazon](https://osherove.com/blog/2009/6/6/art-of-unit-testing-available-at-amazon.html) - Jun 1, 2009 ### [Review: CryptoLicensing for .NET](https://osherove.com/blog/2009/6/1/review-cryptolicensing-for-net.html) - May 31, 2009 ### [Daily news blogs about .NET and related creatures](https://osherove.com/blog/2009/5/31/daily-news-blogs-about-net-and-related-creatures.html) --- title: "Upcoming SilverUnit Preview" url: "https://osherove.com/blog/2009/6/2/upcoming-silverunit-preview.md" canonical: "https://osherove.com/blog/2009/6/2/upcoming-silverunit-preview.html" published: "2009-06-02T12:54:00" updated: "2009-06-02T12:54:00" tags: ["Agile", "Silverlight"] author: "Roy Osherove" description: "Coming up in SilverUnit , the true unit testing framework for silverlight controls" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Upcoming SilverUnit Preview By Roy Osherove June 2, 2009 In [Agile](https://osherove.com/blog/category/agile), [Silverlight](https://osherove.com/blog/category/silverlight) **Historical article** · Originally published June 2, 2009; technical details may be outdated. Coming up in [SilverUnit](http://www.codeplex.com/CThru/Wiki/View.aspx?title=SilverUnit%20examples&referringTitle=Home), the true unit testing framework for silverlight controls ![image](https://osherove.com/img/wb/6b21c48c_weblogs.asp.net_blogs_rosherove_image_thumb_50B501C0.png) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 6, 2009 ### [Art Of Unit Testing available at Amazon](https://osherove.com/blog/2009/6/6/art-of-unit-testing-available-at-amazon.html) - Jun 2, 2009 ### [Using Explicit Arrange,Act,Assert scopes in tests – thoughts?](https://osherove.com/blog/2009/6/2/using-explicit-arrangeactassert-scopes-in-tests-thoughts.html) - May 23, 2009 ### [SilverUnit Project Template and new version](https://osherove.com/blog/2009/5/23/silverunit-project-template-and-new-version.html) - May 23, 2009 ### [Testing that an event was raised](https://osherove.com/blog/2009/5/23/testing-that-an-event-was-raised.html) --- title: "Review: CryptoLicensing for .NET" url: "https://osherove.com/blog/2009/6/1/review-cryptolicensing-for-net.md" canonical: "https://osherove.com/blog/2009/6/1/review-cryptolicensing-for-net.html" published: "2009-06-01T23:39:05" updated: "2009-06-01T23:39:05" tags: [".NET", "Cool Tools"] author: "Roy Osherove" description: "I was recently asked to review a licensing solution – CryptoLicensing for .NET (disclosure – I was paid for my time , the time it took to review it, but had only committed to doing a fair and balanced review). After…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Review: CryptoLicensing for .NET By Roy Osherove June 1, 2009 In [.NET](https://osherove.com/blog/category/net), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published June 1, 2009; technical details may be outdated. I was recently asked to review a licensing solution – [CryptoLicensing for .NET](http://www.ssware.com/cryptolicensing/cryptolicensing_net.htm)(disclosure – I was paid for my time , the time it took to review it, but had only committed to doing a fair and balanced review). After reading [Oren’s post](http://ayende.com/Blog/archive/2009/02/02/open-letter-to-xheo-that-is-not-a-good-way.aspx) a while ago about how he couldn’t find a decent licensing solution to the point of making his own, I was sure that this one will fall out as well over some technicality. Typemock also has a home-grown solution for licensing, and while searching the web about a year ago I was hard pressed to find a decent licensing component for .NET that didn’t suck in terms of usability or features. So, all the signs pointed to the possibility that this would be yet another one of those licensing schemes that are just not good enough, but I was wrong. It took me less than an hour to feel pretty comfortable with the CryptoLicensing API, and the feature set it contains is pretty powerful, packaged in a very simple API. It does have some small flaws, but they are shadowed by the very big value it provides. As one discovers pretty quickly when doing their own homegrown licensing solution, a licensing scheme has at least two main parts: THE API you use from within your software, and the Serial Generator (KeyGen) software. Often, the keygen will also have an API that can be used programmatically so that you can then generate licenses on the fly automatically per an automated request (say CRM). I was happy to discover that CryptoLicensing supports all that out of the box and so much more. but let’s start at the beginning: **The API:** The API is very simple to use. There is only **one class** you use in your project: CryptoLicense. This class allows you to load a license from the local machine, or save one either to the registry or to the file system. the API can be used in two ways: **the simple way** is just to check a _status_ property on the CryptoLicense class one you have tried to “load” it. If it’s anything but Status.Valid then you need to put in a serial number. The class can then be invoked to show a “Enter Serial” dialog that is built in, which will tell the user what are the current license terms or how much time they have left on the current license. The dialog is fully customizable – it comes with full source code so you can make it your own very simply. here’s how the eval dialog looks: ![image](https://osherove.com/img/wb/e488bec3_weblogs.asp.net_blogs_rosherove_image_thumb_7B4873C4.png) I do wish that there was a way to set some of the strings in the dialog programmatically, instead of having to create your own version of the dialog, but the guys at SSWare, the maker of this tool assure me this feature is coming in future versions. Once the dialog is gone you get back a yes\\no answer. if it’s a no, the license is still not valid and you can choose to end your program right there. If it’s “yes” you can save the new license details the user entered and continue operations. it’s very simple to use. **The advanced way:** One of the features that many licensing schemes require is the ability to have different features of the software enabled or disabled based on the current license. I was happy to see that this open is built into the CryptoLIcensing API and keygen. The API has a “IsFeatureEnabled(featureEnum)” function. there are thirty something features available in the enum. more than enough for most if not all licensing schemes. The great thing is that the license code you generate contains all the data you need to determine what feature is enabled. So, once you initialize the CryptoLicense class, you just ask whether feature in enum12 is enabled (enum12 could be mapped to some feature in your application. If that’s true, you allow that feature to run. or you don’t if it’s not. Pretty cool and powerful. Here’s how the keygen looks (features related part is highlighted) ![image](https://osherove.com/img/wb/e39de430_weblogs.asp.net_blogs_rosherove_image_thumb_24CC192B.png) You’ll also note about the keygen that you can set many options for evaluation. and i mean many: ![image](https://osherove.com/img/wb/3910cd76_weblogs.asp.net_blogs_rosherove_image_thumb_61FCA825.png) Pretty powerful. All of these features will be encapsulated int he Status property of the CryptoLicense API. If the status is not valid, you have special enaus that explain which of these statuses is true. **Floating licenses and license server** another powerful feature set enables you to set floating licenses in a company: ![image](https://osherove.com/img/wb/b77d1a2b_weblogs.asp.net_blogs_rosherove_image_thumb_6E5AA581.png) or lock a serial to a specific machine. The software comes with the source for a simple enough ASP.NET web serivce that ca nbe run on IIs. you install this on a machine that will be declared as your license server, and that server can “activate” software licenses based either on a serial that was provided or the amount of already active licenses for that company. tha tmeans that if you are the issuer of the software, you can have your own license server, but large companies who request floating licenses can have a customized version of the license server running on the local customer server for that specific company. Licenses vs. serials CryptoLicensing has two notions of keys. a “License” is a longer string that can be used to “activate” a customer’s software without needing outside activation. A “Serial” is issued but cannot be verified without contacting a license server. This is not clear by default in the keygen and I am told they will be making it easier to understand both in the docs and in the keygen window: ![image](https://osherove.com/img/wb/32e7ddb1_weblogs.asp.net_blogs_rosherove_image_thumb_165D2ED4.png) even now I still get a little confused what each one of those four means. I wish the UI was simpler to use. **embedded license information** One powerful feature is that you can “embed” into a license all the user and company information you need: ![image](https://osherove.com/img/wb/3df30aed_weblogs.asp.net_blogs_rosherove_image_thumb_712FBE9A.png) all this info can be gotten at runtime only from the license key, and allows a very simple way of mapping licenses to customers in your CRM system for example. **Summary** There are many more features that I have not covered(tried). for example, it supports licensing of .NET controls. Since I don’t do custom controls I don’t know how useful that feature is. I’ve also looked at the obfuscated source of the cryptolicensing package and it looks pretty good. The software itself doest **not** offer obfuscation abilities and I like that. Focus on one thing and do it well. I’ll obfuscate using other tools, thank you. overall I’ve found [CryptoLicensing for .NET](http://www.ssware.com/cryptolicensing/cryptolicensing_net.htm) to be a very powerful and easy to use product. I think it’s the **only** one that I’d feel comfortable to use in a real project for now. The UI has some quirks. the only thing I’m really missing from this is the ability to disallow the same license across the network without needing to install a license server (Resharper has this ability). If that were possible this would be absolutely marvelous. I asked and was told it is coming soon to a version near you. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 6, 2009 ### [Art Of Unit Testing available at Amazon](https://osherove.com/blog/2009/6/6/art-of-unit-testing-available-at-amazon.html) - Jun 2, 2009 ### [Using Explicit Arrange,Act,Assert scopes in tests – thoughts?](https://osherove.com/blog/2009/6/2/using-explicit-arrangeactassert-scopes-in-tests-thoughts.html) - May 31, 2009 ### [Daily news blogs about .NET and related creatures](https://osherove.com/blog/2009/5/31/daily-news-blogs-about-net-and-related-creatures.html) - May 27, 2009 ### [A simpler, conventions based DependencyProperty structure for silverlight using CustomControlBase](https://osherove.com/blog/2009/5/27/a-simpler-conventions-based-dependencyproperty-structure-for.html) --- title: "Daily news blogs about .NET and related creatures" url: "https://osherove.com/blog/2009/5/31/daily-news-blogs-about-net-and-related-creatures.md" canonical: "https://osherove.com/blog/2009/5/31/daily-news-blogs-about-net-and-related-creatures.html" published: "2009-05-31T03:52:16" updated: "2009-05-31T03:52:16" tags: [".NET", ".Net 2.0", "Community", "Community News"] author: "Roy Osherove" description: "A friend asked me how I know about so many things that happen in the .NET sphere. the answer is very very simple. All you have to do is follow a few blogs on a daily basis, and you’ll have access to a whole world of new…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Daily news blogs about .NET and related creatures By Roy Osherove May 31, 2009 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Community](https://osherove.com/blog/category/community), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published May 31, 2009; technical details may be outdated. ![image](https://osherove.com/img/wb/86a9197c_weblogs.asp.net_blogs_rosherove_image_thumb_57701165.png) A friend asked me how I know about so many things that happen in the .NET sphere. the answer is **very very simple.** All you have to do is follow a few blogs on a daily basis, and you’ll have access to a whole world of new and existing things you didn’t even know existed in .NET. here are the first three blogs I subscribe to on a daily basis. These are “link blogs”, they only supply links to cool and interesting stuff that happens in .NET land. - [Dew Drop (Alvin Ashcraft)](http://www.alvinashcraft.com/) - [Interesting finds (Jason Haley)](http://jasonhaley.com/blog/) - [The Morning Brew\\Reflective Perspective (Chris Aclock)](http://blog.cwa.me.uk/) \*Update: Also found the following: - [Arjans World](http://www.arjansworld.com/) - [Bogda’s blog](http://bogdanbrinzarea.wordpress.com/) - also [DotNetShoutOut](http://dotnetshoutout.com/) - also [The Technology Post](http://weblogs.asp.net/jgaylord/archive/tags/The+Technology+Post/default.aspx) If you think I’ve missed some good news links blogs in our sphere, feel free to post in the comments. I’ll updated the post as needed. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 2, 2009 ### [Using Explicit Arrange,Act,Assert scopes in tests – thoughts?](https://osherove.com/blog/2009/6/2/using-explicit-arrangeactassert-scopes-in-tests-thoughts.html) - Jun 1, 2009 ### [Review: CryptoLicensing for .NET](https://osherove.com/blog/2009/6/1/review-cryptolicensing-for-net.html) - May 27, 2009 ### [A simpler, conventions based DependencyProperty structure for silverlight using CustomControlBase](https://osherove.com/blog/2009/5/27/a-simpler-conventions-based-dependencyproperty-structure-for.html) - May 27, 2009 ### [Fix: Requested registry access is not allowed error when creating silverlight project in visual studio 2008](https://osherove.com/blog/2009/5/27/fix-requested-registry-access-is-not-allowed-error-when-crea.html) --- title: "A simpler, conventions based DependencyProperty structure for silverlight using CustomControlBase" url: "https://osherove.com/blog/2009/5/27/a-simpler-conventions-based-dependencyproperty-structure-for.md" canonical: "https://osherove.com/blog/2009/5/27/a-simpler-conventions-based-dependencyproperty-structure-for.html" published: "2009-05-27T05:44:27" updated: "2009-05-27T05:44:27" tags: [".NET", "Silverlight"] author: "Roy Osherove" description: "Having stated to look into silverlight not long ago, I was totally put off by the horridness that is DependencyProperties, and how you implement them: You need to declare a static property that is registered at the type…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A simpler, conventions based DependencyProperty structure for silverlight using CustomControlBase By Roy Osherove May 27, 2009 In [.NET](https://osherove.com/blog/category/net), [Silverlight](https://osherove.com/blog/category/silverlight) **Historical article** · Originally published May 27, 2009; technical details may be outdated. Having stated to look into silverlight not long ago, I was totally put off by the horridness that is DependencyProperties, and how you implement them: - You need to declare a static property that is registered at the type initialization phase - you need to have a “regular” property that calls getvalue and setvalue with that property - if you want to handle changes you need to registed a specific callback in the dependency declaration - the same goes for default value yuck. So here’s what I came up with. [It’s a simple base class you can use in your silverlight projects](http://pastie.org/491270), and inherit your custom control from. Once you do it, you can write DependencyProperties like this: ![image](https://osherove.com/img/wb/2d14875a_weblogs.asp.net_blogs_rosherove_image_thumb_02AECB7C.png) the things to note here: - You inherit from CustomControlBase - The On\[PropertyName\]Changed will be registered automatically based on its name (Convention based work) - You call GetDPValue and SetDPValue instead of GetValue and SetValue - You set the DefaultValue using an attribute (in System.ComponentModel) - You can omit the callback method if you want. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 1, 2009 ### [Review: CryptoLicensing for .NET](https://osherove.com/blog/2009/6/1/review-cryptolicensing-for-net.html) - May 31, 2009 ### [Daily news blogs about .NET and related creatures](https://osherove.com/blog/2009/5/31/daily-news-blogs-about-net-and-related-creatures.html) - May 27, 2009 ### [Fix: Requested registry access is not allowed error when creating silverlight project in visual studio 2008](https://osherove.com/blog/2009/5/27/fix-requested-registry-access-is-not-allowed-error-when-crea.html) - Apr 27, 2009 ### [Upcoming travel: SEConf, NDC](https://osherove.com/blog/2009/4/27/upcoming-travel-seconf-ndc.html) --- title: "Resharper template for DependencyProperty in silverlight" url: "https://osherove.com/blog/2009/5/27/resharper-template-for-dependencyproperty-in-silverlight.md" canonical: "https://osherove.com/blog/2009/5/27/resharper-template-for-dependencyproperty-in-silverlight.html" published: "2009-05-27T04:15:30" updated: "2009-05-27T04:15:30" tags: ["Silverlight"] author: "Roy Osherove" description: "Here’s a much better DependencyProperty snipper for Silverlight custom controls that can be used with resharper: #region $PROPNAME$ Property public $PROPTYPE$ $PROPNAME$ { get { return ($PROPTYPE$)…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Resharper template for DependencyProperty in silverlight By Roy Osherove May 27, 2009 In [Silverlight](https://osherove.com/blog/category/silverlight) **Historical article** · Originally published May 27, 2009; technical details may be outdated. Here’s a much better DependencyProperty snipper for Silverlight custom controls that can be used with resharper:         #region $PROPNAME$ Property         public $PROPTYPE$ $PROPNAME$         {             get { return ($PROPTYPE$) GetValue($PROPNAME$Property); }             set { SetValue($PROPNAME$Property,value); }         }         public static readonly DependencyProperty $PROPNAME$Property =                                             DependencyProperty.Register(             "$PROPNAME$", typeof ($PROPTYPE$), typeof ($DECLARING\_TYPE$),             new PropertyMetadata($DEF\_VALUE$ , On$PROPNAME$Changed ));         private static void On$PROPNAME$Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)         {             $DECLARING\_TYPE$ $DECLARING\_TYPE\_var$ = d as $DECLARING\_TYPE$;             $END$         }         #endregion ## More in Silverlight [All posts in Silverlight](https://osherove.com/blog/category/silverlight) - Jun 2, 2009 ### [Upcoming SilverUnit Preview](https://osherove.com/blog/2009/6/2/upcoming-silverunit-preview.html) - May 27, 2009 ### [A simpler, conventions based DependencyProperty structure for silverlight using CustomControlBase](https://osherove.com/blog/2009/5/27/a-simpler-conventions-based-dependencyproperty-structure-for.html) - May 27, 2009 ### [Fix: Requested registry access is not allowed error when creating silverlight project in visual studio 2008](https://osherove.com/blog/2009/5/27/fix-requested-registry-access-is-not-allowed-error-when-crea.html) - May 23, 2009 ### [SilverUnit Project Template and new version](https://osherove.com/blog/2009/5/23/silverunit-project-template-and-new-version.html) --- title: "Fix: Requested registry access is not allowed error when creating silverlight project in visual studio 2008" url: "https://osherove.com/blog/2009/5/27/fix-requested-registry-access-is-not-allowed-error-when-crea.md" canonical: "https://osherove.com/blog/2009/5/27/fix-requested-registry-access-is-not-allowed-error-when-crea.html" published: "2009-05-27T04:10:37" updated: "2009-05-27T04:10:37" tags: [".NET", "Silverlight"] author: "Roy Osherove" description: "This is an issue that had me stumped for a while. I was getting a “Requested registry access is not allowed.” message from visual studio when trying to create a new silverlight application. turns out the culprit is a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Fix: Requested registry access is not allowed error when creating silverlight project in visual studio 2008 By Roy Osherove May 27, 2009 In [.NET](https://osherove.com/blog/category/net), [Silverlight](https://osherove.com/blog/category/silverlight) **Historical article** · Originally published May 27, 2009; technical details may be outdated. This is an issue that had me stumped for a while. I was getting a “Requested registry access is not allowed.” message from visual studio when trying to create a new silverlight application. turns out the culprit is a few registry entries that somehow don’t have the correct permissions. To fix this: - Download the “[SubInACL](http://www.microsoft.com/downloads/thankyou.aspx?familyId=e8ba3e56-d8fe-4a91-93cf-ed6985e3927b&displayLang=en)” tool from Microsoft and install it - create a batch file in its install dir (C:\\Program Files\\Windows Resource Kits\\Tools\\) - the batch should contain: subinacl /subkeyreg HKEY\_CLASSES\_ROOT\\AgControl.AgControl /grant=administrators=f subinacl /subkeyreg HKEY\_CLASSES\_ROOT\\AgControl.AgControl /grant=users=f subinacl /subkeyreg HKEY\_CLASSES\_ROOT\\AgControl.AgControl /grant=system=f subinacl /subkeyreg HKEY\_CLASSES\_ROOT\\AgControl.AgControl\\CLSID /grant=administrators=f subinacl /subkeyreg HKEY\_CLASSES\_ROOT\\AgControl.AgControl\\CLSID /grant=users=f subinacl /subkeyreg HKEY\_CLASSES\_ROOT\\AgControl.AgControl\\CLSID /grant=system=f subinacl /subkeyreg HKEY\_CLASSES\_ROOT\\AgControl.AgControl.2.0 /grant=administrators=f subinacl /subkeyreg HKEY\_CLASSES\_ROOT\\AgControl.AgControl.2.0 /grant=users=f subinacl /subkeyreg HKEY\_CLASSES\_ROOT\\AgControl.AgControl.2.0 /grant=system=f subinacl /subkeyreg HKEY\_CLASSES\_ROOT\\AgControl.AgControl.3.0 /grant=administrators=f subinacl /subkeyreg HKEY\_CLASSES\_ROOT\\AgControl.AgControl.3.0 /grant=users=f subinacl /subkeyreg HKEY\_CLASSES\_ROOT\\AgControl.AgControl.3.0 /grant=system=f run the batch file from a command line as administrator, and that should fix the problem. This problem can also occur on other project types, so you may need to fix it by calling out to different registry keys. [like this one for example](http://petesbloggerama.blogspot.com/2008/01/fix-requested-registry-access-is-not.html). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 31, 2009 ### [Daily news blogs about .NET and related creatures](https://osherove.com/blog/2009/5/31/daily-news-blogs-about-net-and-related-creatures.html) - May 27, 2009 ### [A simpler, conventions based DependencyProperty structure for silverlight using CustomControlBase](https://osherove.com/blog/2009/5/27/a-simpler-conventions-based-dependencyproperty-structure-for.html) - Apr 27, 2009 ### [Upcoming travel: SEConf, NDC](https://osherove.com/blog/2009/4/27/upcoming-travel-seconf-ndc.html) - Apr 2, 2009 ### [Preview: Placeholder arguments and custom argument checkers](https://osherove.com/blog/2009/4/2/preview-placeholder-arguments-and-custom-argument-checkers.html) --- title: "SilverUnit Project Template and new version" url: "https://osherove.com/blog/2009/5/23/silverunit-project-template-and-new-version.md" canonical: "https://osherove.com/blog/2009/5/23/silverunit-project-template-and-new-version.html" published: "2009-05-23T12:45:41" updated: "2009-05-23T12:45:41" tags: ["Agile", "Silverlight", "Unit Testing"] author: "Roy Osherove" description: "SilverUnit 0.5 has been released with some speed optimizations, as well as binary reference to the latest Typemock version 5.3.0. If you don’t know what it is, SilverUnit aims to allow true unit testing of silverlight…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SilverUnit Project Template and new version By Roy Osherove May 23, 2009 In [Agile](https://osherove.com/blog/category/agile), [Silverlight](https://osherove.com/blog/category/silverlight), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published May 23, 2009; technical details may be outdated. SilverUnit 0.5 has been released with some speed optimizations, as well as binary reference to the latest Typemock version 5.3.0. If you don’t know what it is, SilverUnit aims to allow **true** unit testing of silverlight objects, without needing to run them in the silverlight runtime or in the browser. It’s for testing only logic, and it’s much simpler to use that [Microsoft’s silverlight test framework](http://www.codeplex.com/Silverlight/) (which is essentially an integration test framework). **Project Template** If you’ve been working with SilverUnit, you know it’s a pain to setup a “regular” test project that will reference a silverlight project under test. So I followed [Jamie’s footsteps](http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx) and created a Project template installer for SilverUnit. (Unlike jamie’s installer, this one create a regular class library project with regular references to silverlight assemblies) After installation, you get this nice template in the new project dialog: ![image](https://osherove.com/img/wb/3fd852e2_weblogs.asp.net_blogs_rosherove_image_thumb_13850B89.png) this template should contain all the relevant references to start testing your project with SilverUnit (you might need to remove and re-add the reference to the typemock.dll) you can get it [in the latest release of CThru and SilverUnit on Codeplex](http://cthru.codeplex.com/) (0.5 at the moment): ![image](https://osherove.com/img/wb/a6e3aec8_weblogs.asp.net_blogs_rosherove_image_thumb_1BD8BB13.png) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 2, 2009 ### [Using Explicit Arrange,Act,Assert scopes in tests – thoughts?](https://osherove.com/blog/2009/6/2/using-explicit-arrangeactassert-scopes-in-tests-thoughts.html) - Jun 2, 2009 ### [Upcoming SilverUnit Preview](https://osherove.com/blog/2009/6/2/upcoming-silverunit-preview.html) - May 23, 2009 ### [Testing that an event was raised](https://osherove.com/blog/2009/5/23/testing-that-an-event-was-raised.html) - May 22, 2009 ### [DateTime.LastYear](https://osherove.com/blog/2009/5/22/datetimelastyear.html) --- title: "Testing that an event was raised" url: "https://osherove.com/blog/2009/5/23/testing-that-an-event-was-raised.md" canonical: "https://osherove.com/blog/2009/5/23/testing-that-an-event-was-raised.html" published: "2009-05-23T11:25:20" updated: "2009-05-23T11:25:20" tags: ["Agile", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "This question keeps coming up: “How can I test that an event was actually raised from my class under test?” actually, there is an easy way to check if an event was raised. you subscribe to the event in your test, and in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Testing that an event was raised By Roy Osherove May 23, 2009 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published May 23, 2009; technical details may be outdated. This question keeps coming up: “How can I test that an event was actually raised from my class under test?” actually, there is an easy way to check if an event was raised. you subscribe to the event in your test, and in the event handler you set a boolean flag to true. then you just assert on the flag. here is a quick example: **Code:** public void Test() { bool wasRaised=false; var button = new Button; button.Click += ()=> wasRaised=true; button.DoSomethingThatShouldHaveTriggeredTheEvent(); Assert.IsTrue(wasRaised); } **If you feel less comfortable using lambdas:** public void Test() { bool wasRaised=false; var button = new Button; button.Click += delegate > { > > wasRaised=true > > }; button.DoSomethingThatShouldHaveTriggeredTheEvent(); Assert.IsTrue(wasRaised); } Unfortunately, with VB.NET’s current version, doing this in a single method is next to impossible, so you are forced to register to the event with a method at the class level, and check that: **Code (VB.NET):** dim wasRaised as Boolean=false; **public sub test() ** wasRaised=false dim button = new Button() AddHandler( button.Click , AddressOf(OnClick)) button.DoSomethingThatShouldHaveTriggeredTheEvent() Assert.IsTrue(wasRaised); **end sub** **public sub OnClick(source as object,e as EventArgs)** wasRaised=true **end sub** ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 2, 2009 ### [Upcoming SilverUnit Preview](https://osherove.com/blog/2009/6/2/upcoming-silverunit-preview.html) - May 23, 2009 ### [SilverUnit Project Template and new version](https://osherove.com/blog/2009/5/23/silverunit-project-template-and-new-version.html) - May 22, 2009 ### [DateTime.LastYear](https://osherove.com/blog/2009/5/22/datetimelastyear.html) - May 20, 2009 ### [Art Of Unit Testing (The Samurai Book)– Get it now, it’s done.](https://osherove.com/blog/2009/5/20/art-of-unit-testing-the-samurai-book-get-it-now-its-done.html) --- title: "DateTime.LastYear" url: "https://osherove.com/blog/2009/5/22/datetimelastyear.md" canonical: "https://osherove.com/blog/2009/5/22/datetimelastyear.html" published: "2009-05-22T02:09:21" updated: "2009-05-22T02:09:21" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "Oh, didn’t I mention we can now fake DateTime.Now in unit tests ?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # DateTime.LastYear By Roy Osherove May 22, 2009 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published May 22, 2009; technical details may be outdated. Oh, didn’t I mention we can now [fake DateTime.Now in unit tests](http://blog.typemock.com/2009/05/mockingfaking-datetimenow-in-unit-tests.html)? ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 23, 2009 ### [SilverUnit Project Template and new version](https://osherove.com/blog/2009/5/23/silverunit-project-template-and-new-version.html) - May 23, 2009 ### [Testing that an event was raised](https://osherove.com/blog/2009/5/23/testing-that-an-event-was-raised.html) - May 20, 2009 ### [Art Of Unit Testing (The Samurai Book)– Get it now, it’s done.](https://osherove.com/blog/2009/5/20/art-of-unit-testing-the-samurai-book-get-it-now-its-done.html) - May 19, 2009 ### [Introducing Typemock Racer 1.0 – Find multithreaded deadlocks](https://osherove.com/blog/2009/5/19/introducing-typemock-racer-10-find-multithreaded-deadlocks.html) --- title: "Art Of Unit Testing (The Samurai Book)– Get it now, it’s done." url: "https://osherove.com/blog/2009/5/20/art-of-unit-testing-the-samurai-book-get-it-now-its-done.md" canonical: "https://osherove.com/blog/2009/5/20/art-of-unit-testing-the-samurai-book-get-it-now-its-done.html" published: "2009-05-20T14:22:14" updated: "2009-05-20T14:22:14" tags: ["Agile", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "The time has actually come. After 2.5 years, and two kids, my book is finally done and is available in full form as an EBook. at the end of the month it will be in print form. Now would be the time to get it, when it is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Art Of Unit Testing (The Samurai Book)– Get it now, it’s done. By Roy Osherove May 20, 2009 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published May 20, 2009; technical details may be outdated. The time has actually come. After 2.5 years, and two kids, [my book is finally done](http://www.manning.com/affiliate/idevaffiliate.php?id=462_91) and is available in full form as an EBook. at the end of the month it will be in print form. Now would be the time to get it, when it is still at a “pre-order” pricing. Get the preorder price either [at Manning](http://www.manning.com/affiliate/idevaffiliate.php?id=462_91)(along with the EBook) or at [the amazon page](https://www.amazon.com/exec/obidos/ASIN/1933988274/iserializable-20). I love the cover image. How about we call this “The Samurai book” from now on? This is the book that I wished I had when I started out writing my first tests, and that combines my knowledge about unit testing from the past 5-6 years or so working with companies on real projects (and real failures). It contains things I have not seen in other places – writing readable, maintainable and trustworthy tests, as well as guidelines on how to review someone else’s tests and what to watch out for. [![image](https://osherove.com/img/wb/9669266a_weblogs.asp.net_blogs_rosherove_image_6E3CE98B.png)](http://www.manning.com/affiliate/idevaffiliate.php?id=462_91) I was lucky to have the foreword written by no other than [Michael-Legacy-Code-Feathers](https://www.amazon.com/exec/obidos/ASIN/0131177052/iserializable-20) himself, and with some great quotes including one from Kent Beck about the book. Here is the [Table of Contents](http://www.manning.com/osherove/excerpt_contents.html). **Free Chapters** The book comes with two free chapters: **Chapter 1** – [The basics of unit testing(PDF)](http://www.manning.com/osherove/SampleChapter1.pdf) **Chapter 3** – [Using Stubs to Break Dependencies (PDF)](http://www.manning.com/osherove/SampleChapter3.pdf) Or [get the full book](http://www.manning.com/affiliate/idevaffiliate.php?id=462_91) **Book description:** Unit testing, done right, can mean the difference between a failed project and a successful one, between a maintainable code base and a code base that no one dares touch, and between getting home at 2 AM or getting home in time for dinner, even before a release deadline. _The Art of Unit Testing_ builds on top of what's already been written about this important topic. It guides you step by step from simple tests to tests that are maintainable, readable, and trustworthy. It covers advanced subjects like mocks, stubs, and frameworks such as Typemock Isolator and Rhino Mocks. And you'll learn about advanced test patterns and organization, working with legacy code and even untestable code. The book discusses tools you need when testing databases and other technologies. It's written for .NET developers but others will also benefit from this book. **What’s inside:** - Test Review Guidelines - How to create readable, maintainable, trustworthy tests - Stubs, mock objects, and automated frameworks - Working with .NET tools, including NUnit, Rhino Mocks and Typemock Isolator ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 23, 2009 ### [Testing that an event was raised](https://osherove.com/blog/2009/5/23/testing-that-an-event-was-raised.html) - May 22, 2009 ### [DateTime.LastYear](https://osherove.com/blog/2009/5/22/datetimelastyear.html) - May 19, 2009 ### [Introducing Typemock Racer 1.0 – Find multithreaded deadlocks](https://osherove.com/blog/2009/5/19/introducing-typemock-racer-10-find-multithreaded-deadlocks.html) - May 19, 2009 ### [TDD with SharePoint – the best movie ever](https://osherove.com/blog/2009/5/19/tdd-with-sharepoint-the-best-movie-ever.html) --- title: "Introducing Typemock Racer 1.0 – Find multithreaded deadlocks" url: "https://osherove.com/blog/2009/5/19/introducing-typemock-racer-10-find-multithreaded-deadlocks.md" canonical: "https://osherove.com/blog/2009/5/19/introducing-typemock-racer-10-find-multithreaded-deadlocks.html" published: "2009-05-19T06:32:51" updated: "2009-05-19T06:32:51" tags: ["Agile", "Threading", "Typemock", "racer"] author: "Roy Osherove" description: "I’m proud to announce the official release of Typemock Racer - A Parallel Inspection engine for your multithreaded code. Think Microsoft Chess, only it’s available today, for visual studio 2008, and will continually be…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing Typemock Racer 1.0 – Find multithreaded deadlocks By Roy Osherove May 19, 2009 In [Agile](https://osherove.com/blog/category/agile), [Threading](https://osherove.com/blog/category/threading), [Typemock](https://osherove.com/blog/category/typemock), [racer](https://osherove.com/blog/category/racer) **Historical article** · Originally published May 19, 2009; technical details may be outdated. I’m proud to announce the official release [of Typemock Racer](http://www.typemock.com/learn_about_typemock_racer.php)\- A Parallel Inspection engine for your multithreaded code. Think Microsoft Chess, only it’s available today, for visual studio 2008, and will continually be updated with new features. ![image](https://osherove.com/img/wb/abd2b302_weblogs.asp.net_blogs_rosherove_image_thumb_7E44E913.png) Racer’s main purpose is to find and recreate deadlocks in code that you give it. Think of it like specifying a unit test, but then putting one simple attribute on top of the test called \[ParallelInspection\]. This will turn the test into a Racer test. In the future racer will extend to also checking for race conditions, but currently will find deadlocks in managed code. I made a quick little movie that shows how to start using it quickly and painlessly. see below. Embedded Flash media from the original post is no longer playable. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 22, 2009 ### [DateTime.LastYear](https://osherove.com/blog/2009/5/22/datetimelastyear.html) - May 20, 2009 ### [Art Of Unit Testing (The Samurai Book)– Get it now, it’s done.](https://osherove.com/blog/2009/5/20/art-of-unit-testing-the-samurai-book-get-it-now-its-done.html) - May 19, 2009 ### [TDD with SharePoint – the best movie ever](https://osherove.com/blog/2009/5/19/tdd-with-sharepoint-the-best-movie-ever.html) - May 19, 2009 ### [Outputting build status from FinalBuilder to TeamCity](https://osherove.com/blog/2009/5/19/outputting-build-status-from-finalbuilder-to-teamcity.html) --- title: "TDD with SharePoint – the best movie ever" url: "https://osherove.com/blog/2009/5/19/tdd-with-sharepoint-the-best-movie-ever.md" canonical: "https://osherove.com/blog/2009/5/19/tdd-with-sharepoint-the-best-movie-ever.html" published: "2009-05-19T04:51:38" updated: "2009-05-19T04:51:38" tags: ["Agile"] author: "Roy Osherove" description: "Thanks to Andrew Woodward for this great intro to TDD with SharePoint! this awe inspiring movie is the reason I got into TDD in the first place. Video is courtesy of the Sharepoint Pod Show – if you’re into SharePoint,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD with SharePoint – the best movie ever By Roy Osherove May 19, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published May 19, 2009; technical details may be outdated. Thanks to [Andrew Woodward](http://www.21apps.com/) for this great intro to TDD with SharePoint! this awe inspiring movie is the reason I got into TDD in the first place. Video is courtesy of the [Sharepoint Pod Show](http://www.sharepointpodshow.com/) – if you’re into SharePoint, looks like that podcast should be missed! Embedded Flash media from the original post is no longer playable. &lt;a href="http://video.msn.com/?mkt=en-US&amp;amp;playlist=videoByUuids:uuids:e4f7de58-89b1-43ee-af89-2c90fad21392&amp;amp;showPlaylist=true&amp;amp;from=msnvideo" target="\_new" title="Test Driven Development - Part 3"&gt;Video: Test Driven Development - Part 3&lt;/a&gt; ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 20, 2009 ### [Art Of Unit Testing (The Samurai Book)– Get it now, it’s done.](https://osherove.com/blog/2009/5/20/art-of-unit-testing-the-samurai-book-get-it-now-its-done.html) - May 19, 2009 ### [Introducing Typemock Racer 1.0 – Find multithreaded deadlocks](https://osherove.com/blog/2009/5/19/introducing-typemock-racer-10-find-multithreaded-deadlocks.html) - May 19, 2009 ### [Outputting build status from FinalBuilder to TeamCity](https://osherove.com/blog/2009/5/19/outputting-build-status-from-finalbuilder-to-teamcity.html) - May 18, 2009 ### [Free Typemock licenses – Welcome the ASP.NET Unit Testing Bundle](https://osherove.com/blog/2009/5/18/free-typemock-licenses-welcome-the-aspnet-unit-testing-bundl.html) --- title: "Outputting build status from FinalBuilder to TeamCity" url: "https://osherove.com/blog/2009/5/19/outputting-build-status-from-finalbuilder-to-teamcity.md" canonical: "https://osherove.com/blog/2009/5/19/outputting-build-status-from-finalbuilder-to-teamcity.html" published: "2009-05-19T04:01:56" updated: "2009-05-19T04:01:56" tags: ["Agile"] author: "Roy Osherove" description: "as a personal reference – next time I need FinalBuilder to output data into TeamCIty (such as current build status etc..) : here is the documentation that explains the simple text formatting rules All you need to do in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Outputting build status from FinalBuilder to TeamCity By Roy Osherove May 19, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published May 19, 2009; technical details may be outdated. as a personal reference – next time I need [FinalBuilder](http://www.finalbuilder.com/) to output data into TeamCIty (such as current build status etc..) : [here is the documentation that explains the simple text formatting rules](http://www.jetbrains.net/confluence/display/TCD4/Build+Script+Interaction+with+TeamCity) All you need to do in FB is to use “Comment” tasks and output the text you need based on these rules into the console. TeamCity will pick them up automatically. of course, this will also work with all other custom runners you might be building for TeamCity ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 19, 2009 ### [Introducing Typemock Racer 1.0 – Find multithreaded deadlocks](https://osherove.com/blog/2009/5/19/introducing-typemock-racer-10-find-multithreaded-deadlocks.html) - May 19, 2009 ### [TDD with SharePoint – the best movie ever](https://osherove.com/blog/2009/5/19/tdd-with-sharepoint-the-best-movie-ever.html) - May 18, 2009 ### [Free Typemock licenses – Welcome the ASP.NET Unit Testing Bundle](https://osherove.com/blog/2009/5/18/free-typemock-licenses-welcome-the-aspnet-unit-testing-bundl.html) - May 18, 2009 ### [“Code Leader” book – what’s the missing piece?](https://osherove.com/blog/2009/5/18/code-leader-book-whats-the-missing-piece.html) --- title: "Free Typemock licenses – Welcome the ASP.NET Unit Testing Bundle" url: "https://osherove.com/blog/2009/5/18/free-typemock-licenses-welcome-the-aspnet-unit-testing-bundl.md" canonical: "https://osherove.com/blog/2009/5/18/free-typemock-licenses-welcome-the-aspnet-unit-testing-bundl.html" published: "2009-05-18T14:48:13" updated: "2009-05-18T14:48:13" tags: ["Agile"] author: "Roy Osherove" description: "My company is giving away free Typemock Isolator licenses for bloggers, in light of a new ASP.NET Unit testing bundle offering. If you’re interested in all the gory details, this is the place you want to go ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free Typemock licenses – Welcome the ASP.NET Unit Testing Bundle By Roy Osherove May 18, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published May 18, 2009; technical details may be outdated. My company is giving away free Typemock Isolator licenses for bloggers, in light of a new [ASP.NET Unit testing bundle](http://www.typemock.com/ASP.NET_unit_testing_page.php) offering. If you’re interested in all the gory details, [this is the place you want to go](http://blog.typemock.com/2009/05/get-free-typemock-licenses-aspnet.html). ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 19, 2009 ### [TDD with SharePoint – the best movie ever](https://osherove.com/blog/2009/5/19/tdd-with-sharepoint-the-best-movie-ever.html) - May 19, 2009 ### [Outputting build status from FinalBuilder to TeamCity](https://osherove.com/blog/2009/5/19/outputting-build-status-from-finalbuilder-to-teamcity.html) - May 18, 2009 ### [“Code Leader” book – what’s the missing piece?](https://osherove.com/blog/2009/5/18/code-leader-book-whats-the-missing-piece.html) - Apr 3, 2009 ### [ALT.NET Israel II - Done](https://osherove.com/blog/2009/4/3/altnet-israel-ii-done.html) --- title: "“Code Leader” book – what’s the missing piece?" url: "https://osherove.com/blog/2009/5/18/code-leader-book-whats-the-missing-piece.md" canonical: "https://osherove.com/blog/2009/5/18/code-leader-book-whats-the-missing-piece.html" published: "2009-05-18T14:40:55" updated: "2009-05-18T14:40:55" tags: ["Agile"] author: "Roy Osherove" description: "I first heard about the book “Code Leader” from this blog entry . What got me interested about it is that this is the first book I‘ve seen that tries to take the technical approach to teaching team leadership. First, I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # “Code Leader” book – what’s the missing piece? By Roy Osherove May 18, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published May 18, 2009; technical details may be outdated. I first heard about the book “Code Leader” from [this blog entry](http://feedproxy.google.com/~r/CodeBetter/~3/qstZjX-TUHQ/book-review-code-leader-by-patrick-cauldwell-a-digression-on-contracts.aspx). What got me interested about it is that this is the first book I‘ve seen that tries to take the technical approach to teaching team leadership. First, I think that this book is (at least from the table of contents) very much something that is missing in today’s book landscape – a book that talks about best practices and things that “work” without trying to be too “agile” driven. What I’d call “a book for the rest of us”. But, as I looked at the [Table of contents](https://www.amazon.com/Code-Leader-Processes-Successful-Programmer/dp/0470259248) for the book, I tried to find something very specific that anyone talking about code leaders should be talking about. Can you tell me what it is I was not finding in the TOC? **Chapter 1 (Buy, not Build)** describes how to go about deciding which parts of your software project you need to write yourself and which parts you may be able to purchase or otherwise leverage from someplace else. In order to keep costs down and focus on your real competitive advantage, it is necessary to write only those parts of your application that you really need to. **Chapter 2 (****Test-Driven Development****)** examines the Test-Driven Development (or Test-Driven Design) philosophy and some practical ways of applying it to your development lifecycle to produce higher-quality code in less time. **Chapter 3 (Continuous Integration)** explores the Continuous Integration philosophy and how you can apply it to your project. CI involves automating your build and unit testing processes to give developers a shorter feedback cycle about changes that they make to the project. A shorter feedback cycle makes it easier for developers to work together as a team and at a higher level of productivity. **Chapter 4 (Done Is Done)** contains suggestions for defining what it means for a developer to “finish” a development task. Creating a “done is done” policy for your team can make it easier for developers to work together, and easier for developers and testers to work together. If everyone on your team follows the same set of steps to complete each task, then development will be more predictable and of a higher quality. **Chapter 5 (Testing)** presents some concrete suggestions for how to create tests, how to run them, and how to organize them to make them easier to run, easier to measure, and more useful to developers and to testers. Included are sections on what code coverage means and how to measure it effectively, how to organize your tests by type, and how to automate your testing processes to get the most benefit from them. **Chapter 6 (Source Control)** explains techniques for using your source control system more effectively so that it is easier for developers to work together on the same project, and easier to correlate changes in source control with physical software binaries and with defect or issue reports in your tracking system. **Chapter 7 (Static Analysis)** examines what static analysis is, what information it can provide, and how it can improve the quality and maintainability of your projects. **Chapter 8 (Contract, Contract, Contract!)** tackles programming by contract and how that can make your code easier for developers to understand and to use. Programming by contract can also make your application easier (and therefore less expensive) to maintain and support. **Chapter 9 (Limiting Dependencies)** focuses on techniques for limiting how dependent each part of your application is upon the others. Limiting dependencies can lead to software that is easier to make changes to and cheaper to maintain as well as easier to deploy and test. **Chapter 10 (The Model-View-Presenter Model)** offers a brief descr... \-------------- can you tell what’s missing here? Yes. these are all great subjects, but how can a book presume to talk about code leadership without having a chapter on, well, **leadership**? - What makes a good team lead **a great** team lead? - how does a team lead deal with personal issues in the team? - People not working well with one another - One developer that is slowing down the whole team - How do you “grow” a team of great devlopers? - What are the common pitfalls that team leads fall into time and time again? These things are _essential_. To understand why, just think that even if you are a team lead who knows _everything_ in this book, it **does not matter** if you **cannot get your devs to do it right**. it does not matter if you cannot find the inner strength to face a developer who is not up to par and _get him up to par_. I hope I am mistaken and that somewhere in the book these ideas and more are addressed, but it does not look like it from the chapters. Instead, the book takes the _easy road_ which is just talking technical. To me, a code leader is not just a technical beast. he or she needs to be so much more than that to make an OK team into a **great** team. It does not matter one bit how good you are technically if you _can’t drive the team_. I’ll start talking about what I think makes a good team lead in upcoming posts. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 19, 2009 ### [Outputting build status from FinalBuilder to TeamCity](https://osherove.com/blog/2009/5/19/outputting-build-status-from-finalbuilder-to-teamcity.html) - May 18, 2009 ### [Free Typemock licenses – Welcome the ASP.NET Unit Testing Bundle](https://osherove.com/blog/2009/5/18/free-typemock-licenses-welcome-the-aspnet-unit-testing-bundl.html) - Apr 3, 2009 ### [ALT.NET Israel II - Done](https://osherove.com/blog/2009/4/3/altnet-israel-ii-done.html) - Apr 2, 2009 ### [Preview: Placeholder arguments and custom argument checkers](https://osherove.com/blog/2009/4/2/preview-placeholder-arguments-and-custom-argument-checkers.html) --- title: "Upcoming travel: SEConf, NDC" url: "https://osherove.com/blog/2009/4/27/upcoming-travel-seconf-ndc.md" canonical: "https://osherove.com/blog/2009/4/27/upcoming-travel-seconf-ndc.html" published: "2009-04-27T06:29:35" updated: "2009-04-27T06:29:35" tags: [".NET"] author: "Roy Osherove" description: "Trying to balance work life and … life… is challenging. I’ve taken quite a bit of a vacation from speaking engagements, but starting June I’m back to some of my old antics. Here’s my travel schedule if you care enough:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Upcoming travel: SEConf, NDC By Roy Osherove April 27, 2009 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published April 27, 2009; technical details may be outdated. Trying to balance work life and … life… is challenging. I’ve taken quite a bit of a vacation from speaking engagements, but starting June I’m back to some of my old antics. Here’s my travel schedule if you care enough: - **Vienna, June 16:** I will be doing the Keynote session as well as three other sessions on the first day of [the Software Engineering Conference](http://www.seconf.at/) in Vienna. Topics include: 10 ways agile adoption can fail, tips and tricks for dev teams, unit testing best practices and understanding TDD (intro). My guitar will accompany me. - **Oslo, June 17-18-19:** I will be doing a full day of talks at the awesome [NDC](http://www.ndc2009.no/), mostly about TDD, unit testing with mock objects, and such, but also will talk deeply about [CThru and Silverlight unit testing](http://www.codeplex.com/CThru). My guitar will accompany me. - **Oslo, August 24-28:** I will be doing [the 5 day Test Driven Development in .NET master class](http://www.programutvikling.no/kurskalenderoversikt.aspx?id=218164)  in Oslo, Norway. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 27, 2009 ### [A simpler, conventions based DependencyProperty structure for silverlight using CustomControlBase](https://osherove.com/blog/2009/5/27/a-simpler-conventions-based-dependencyproperty-structure-for.html) - May 27, 2009 ### [Fix: Requested registry access is not allowed error when creating silverlight project in visual studio 2008](https://osherove.com/blog/2009/5/27/fix-requested-registry-access-is-not-allowed-error-when-crea.html) - Apr 2, 2009 ### [Preview: Placeholder arguments and custom argument checkers](https://osherove.com/blog/2009/4/2/preview-placeholder-arguments-and-custom-argument-checkers.html) - Mar 24, 2009 ### [Geeky T-Shirt ideas](https://osherove.com/blog/2009/3/24/geeky-t-shirt-ideas.html) --- title: "Welcome Aviv Osherove" url: "https://osherove.com/blog/2009/4/27/welcome-aviv-osherove.md" canonical: "https://osherove.com/blog/2009/4/27/welcome-aviv-osherove.html" published: "2009-04-27T05:40:22" updated: "2009-04-27T05:40:22" tags: ["Family"] author: "Roy Osherove" description: "Aviv Osherove was born on Passover eve, April 8th, 2009. “Aviv” means “Spring” in Hebrew, as passover marks the beginning of spring. His big brother, Itamar, seems to be welcoming him with open arms! It’s been a rough…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Welcome Aviv Osherove By Roy Osherove April 27, 2009 In [Family](https://osherove.com/blog/category/family) **Historical article** · Originally published April 27, 2009; technical details may be outdated. Aviv Osherove was born on Passover eve, April 8th, 2009. “Aviv” means “Spring” in Hebrew, as passover marks the beginning of spring. His big brother, Itamar, seems to be welcoming him with open arms! ![image](https://osherove.com/img/wb/c97930fe_weblogs.asp.net_blogs_rosherove_image_thumb_336A7039.png) It’s been a rough couple of weeks but things are starting to fall into place again. Having two kids is definitely more awesome than one. I am told :) So far aviv does a lot of this: ![image](https://osherove.com/img/wb/bda777a3_weblogs.asp.net_blogs_rosherove_image_thumb_5D6598BB.png)  ![image](https://osherove.com/img/wb/408091e6_weblogs.asp.net_blogs_rosherove_image_thumb_2E0F4D8B.png) ![image](https://osherove.com/img/wb/2dc446fe_weblogs.asp.net_blogs_rosherove_image_thumb_09198AE1.png) while his brother itamar (2.4 years) does lots of this: ![image](https://osherove.com/img/wb/b13b2307_weblogs.asp.net_blogs_rosherove_image_thumb_36264FB1.png) ![image](https://osherove.com/img/wb/64b317bf_weblogs.asp.net_blogs_rosherove_image_thumb_3E15CA15.png) ![image](https://osherove.com/img/wb/dce6a017_weblogs.asp.net_blogs_rosherove_image_thumb_46D19895.png) ![image](https://osherove.com/img/wb/a8cf6224_weblogs.asp.net_blogs_rosherove_image_thumb_5A66F605.png) ![image](https://osherove.com/img/wb/26cde81f_weblogs.asp.net_blogs_rosherove_image_thumb_66182938.png) ![image](https://osherove.com/img/wb/e386d008_weblogs.asp.net_blogs_rosherove_image_thumb_5FECC89E.png) ![image](https://osherove.com/img/wb/648633a9_weblogs.asp.net_blogs_rosherove_image_thumb_2F162301.png) ![image](https://osherove.com/img/wb/763c94e9_weblogs.asp.net_blogs_rosherove_image_thumb_548B6696.png) ## More in Family [All posts in Family](https://osherove.com/blog/category/family) - Jun 13, 2009 ### [Itamar and the Pitanga Trampoline](https://osherove.com/blog/2009/6/13/itamar-and-the-pitanga-trampoline.html) --- title: "ALT.NET Israel II - Done" url: "https://osherove.com/blog/2009/4/3/altnet-israel-ii-done.md" canonical: "https://osherove.com/blog/2009/4/3/altnet-israel-ii-done.html" published: "2009-04-03T05:44:00" updated: "2009-04-03T05:44:00" tags: ["Agile", "altnetconf"] author: "Roy Osherove" description: "It was fun doing ALT.NET in Israel again. For those of you who didn’t make it, Gadi has a very good play by play list of posts in hebrew ( one , two , three , four , five , six , seven ). Thanks to SELA for donating the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ALT.NET Israel II - Done By Roy Osherove April 3, 2009 In [Agile](https://osherove.com/blog/category/agile), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published April 3, 2009; technical details may be outdated. It was fun doing ALT.NET in Israel again. For those of you who didn’t make it, [Gadi](http://blogs.microsoft.co.il/blogs/gadim/) has a very good play by play list of posts in hebrew ([one](http://blogs.microsoft.co.il/blogs/gadim/archive/2009/04/02/264000.aspx), [two](http://blogs.microsoft.co.il/blogs/gadim/archive/2009/04/03/264196.aspx), [three](http://blogs.microsoft.co.il/blogs/gadim/archive/2009/04/03/264202.aspx), [four](http://blogs.microsoft.co.il/blogs/gadim/archive/2009/04/03/264238.aspx), [five](http://blogs.microsoft.co.il/blogs/gadim/archive/2009/04/03/264240.aspx), [six](http://blogs.microsoft.co.il/blogs/gadim/archive/2009/04/03/264293.aspx), [seven](http://blogs.microsoft.co.il/blogs/gadim/archive/2009/04/03/264297.aspx)). Thanks to SELA for donating the classes, and thanks to Typemock for the food! I am still fusing my thoughts about what I think the outcomes were. will blog when I have something of meaning to say. ![image](https://osherove.com/img/wb/cb43685b_weblogs.asp.net_blogs_rosherove_image_thumb_36695780.png) ![image](https://osherove.com/img/wb/5722afd2_weblogs.asp.net_blogs_rosherove_image_thumb_4FD482E3.png) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 18, 2009 ### [Free Typemock licenses – Welcome the ASP.NET Unit Testing Bundle](https://osherove.com/blog/2009/5/18/free-typemock-licenses-welcome-the-aspnet-unit-testing-bundl.html) - May 18, 2009 ### [“Code Leader” book – what’s the missing piece?](https://osherove.com/blog/2009/5/18/code-leader-book-whats-the-missing-piece.html) - Apr 2, 2009 ### [Preview: Placeholder arguments and custom argument checkers](https://osherove.com/blog/2009/4/2/preview-placeholder-arguments-and-custom-argument-checkers.html) - Apr 2, 2009 ### [ALT.NET Israel II happens TODAY](https://osherove.com/blog/2009/4/2/altnet-israel-ii-happens-today.html) --- title: "Preview: Placeholder arguments and custom argument checkers" url: "https://osherove.com/blog/2009/4/2/preview-placeholder-arguments-and-custom-argument-checkers.md" canonical: "https://osherove.com/blog/2009/4/2/preview-placeholder-arguments-and-custom-argument-checkers.html" published: "2009-04-02T05:50:32" updated: "2009-04-02T05:50:32" tags: [".NET", "Agile", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "here is a glimpse of the feature the guys are working on at the moment. I call it “Placeholder Arguments”. It’s a variation of the “how do you allow the user to check parameters passed to a method?” question when…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Preview: Placeholder arguments and custom argument checkers By Roy Osherove April 2, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published April 2, 2009; technical details may be outdated. here is a glimpse of the feature [the guys](http://www.typemock.com/) are working on at the moment. I call it “Placeholder Arguments”. It’s a variation of the **“how do you allow the user to check parameters passed to a method?”** question when working with isolation frameworks. We implemented a [suggestion from Vagif Abilov](http://bloggingabout.net/blogs/vagif/archive/2009/03/12/how-i-would-match-faked-method-s-arguments-if-i-was-typemock-isolator.aspx), one of our Typemock Insiders. The idea is pretty elegant, really – allow the user to define (inside the lambda expression) ”placeholder” arguments, that can then be checked in a custom delegate provided by the user. Then, you can call the method with a combination of “real” and “placeholder” arguments, and “real” ones will not be checked by default. Only the placeholder ones can then be used in the custom argument matcher the user provides. This should be out in the coming weeks. ![image](https://osherove.com/img/wb/e0dd859b_weblogs.asp.net_blogs_rosherove_image_thumb_3D0EAC6D.png) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 27, 2009 ### [Fix: Requested registry access is not allowed error when creating silverlight project in visual studio 2008](https://osherove.com/blog/2009/5/27/fix-requested-registry-access-is-not-allowed-error-when-crea.html) - Apr 27, 2009 ### [Upcoming travel: SEConf, NDC](https://osherove.com/blog/2009/4/27/upcoming-travel-seconf-ndc.html) - Mar 24, 2009 ### [Geeky T-Shirt ideas](https://osherove.com/blog/2009/3/24/geeky-t-shirt-ideas.html) - Mar 22, 2009 ### [Test Review #3 – Unity](https://osherove.com/blog/2009/3/23/test-review-3-unity.html) --- title: "ALT.NET Israel II happens TODAY" url: "https://osherove.com/blog/2009/4/2/altnet-israel-ii-happens-today.md" canonical: "https://osherove.com/blog/2009/4/2/altnet-israel-ii-happens-today.html" published: "2009-04-02T02:23:49" updated: "2009-04-02T02:23:49" tags: ["Agile", "altnetconf", "altnetisrael"] author: "Roy Osherove" description: "Just a quick reminder: ALT.NET Israel II is happening TODAY at 18:30 at SELA. Register on the facebook page , and more details (without needing facebook) here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ALT.NET Israel II happens TODAY By Roy Osherove April 2, 2009 In [Agile](https://osherove.com/blog/category/agile), [altnetconf](https://osherove.com/blog/category/altnetconf), [altnetisrael](https://osherove.com/blog/category/altnetisrael) **Historical article** · Originally published April 2, 2009; technical details may be outdated. Just a quick reminder: ALT.NET Israel II is happening TODAY at 18:30 at SELA. Register [on the facebook page](http://www.facebook.com/event.php?eid=58042408643&ref=ts&nctrct=1238664040596), and [more details  (without needing facebook) here](http://weblogs.asp.net/rosherove/archive/2009/03/17/alt-net-israel-meeting-ii-2d-and-3rd-of-april.aspx). ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Apr 3, 2009 ### [ALT.NET Israel II - Done](https://osherove.com/blog/2009/4/3/altnet-israel-ii-done.html) - Apr 2, 2009 ### [Preview: Placeholder arguments and custom argument checkers](https://osherove.com/blog/2009/4/2/preview-placeholder-arguments-and-custom-argument-checkers.html) - Mar 24, 2009 ### [Geeky T-Shirt ideas](https://osherove.com/blog/2009/3/24/geeky-t-shirt-ideas.html) - Mar 22, 2009 ### [Test Review #3 – Unity](https://osherove.com/blog/2009/3/23/test-review-3-unity.html) --- title: "Geeky T-Shirt ideas" url: "https://osherove.com/blog/2009/3/24/geeky-t-shirt-ideas.md" canonical: "https://osherove.com/blog/2009/3/24/geeky-t-shirt-ideas.html" published: "2009-03-24T17:47:44" updated: "2009-03-24T17:47:44" tags: [".NET", "Agile"] author: "Roy Osherove" description: "Here are a couple of Conference T-Shirt ideas I had that I wanted to make: “Legalize unit testing” “I broke the build” “I Mock You” “I’m Mocking this” “I do B(eer)D(riven)D(evelopment)” “I fail first” “I fail early and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Geeky T-Shirt ideas By Roy Osherove March 24, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published March 24, 2009; technical details may be outdated. Here are a couple of Conference T-Shirt ideas I had that I wanted to make: - “Legalize unit testing” - “I broke the build” - “I Mock You” - “I’m Mocking this” - “I do B(eer)D(riven)D(evelopment)” - “I fail first” - “I fail early and often” - “I like to reflect on private members” got any more? ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Apr 27, 2009 ### [Upcoming travel: SEConf, NDC](https://osherove.com/blog/2009/4/27/upcoming-travel-seconf-ndc.html) - Apr 2, 2009 ### [Preview: Placeholder arguments and custom argument checkers](https://osherove.com/blog/2009/4/2/preview-placeholder-arguments-and-custom-argument-checkers.html) - Mar 22, 2009 ### [Test Review #3 – Unity](https://osherove.com/blog/2009/3/23/test-review-3-unity.html) - Mar 21, 2009 ### [Test Review #2 – ASP.NET MVC Unit Tests](https://osherove.com/blog/2009/3/21/test-review-2-aspnet-mvc-unit-tests.html) --- title: "Test Review #3 – Unity" url: "https://osherove.com/blog/2009/3/23/test-review-3-unity.md" canonical: "https://osherove.com/blog/2009/3/23/test-review-3-unity.html" published: "2009-03-22T23:58:55" updated: "2009-03-22T23:58:55" tags: [".NET", "Agile", "Art Of Unit Testing", "TestReview", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "Watch previous videos: Test Review #1 – NerdDinner Test Review #2 – ASP.NET MVC //TestReviewUnity.mp4 In this video I go over the tests for Microsoft Unity Application Block. Overall the quality of the tests in Unity is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Review \#3 – Unity By Roy Osherove March 22, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [TestReview](https://osherove.com/blog/category/testreview), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 22, 2009; technical details may be outdated. **Watch previous videos:** - [Test Review #1 – NerdDinner](http://weblogs.asp.net/rosherove/archive/2009/03/20/test-review-1-nerddinner.aspx) - [Test Review #2 – ASP.NET MVC](http://weblogs.asp.net/rosherove/archive/2009/03/21/test-review-2-asp-net-mvc-unit-tests.aspx) //TestReviewUnity.mp4 In this video I go over the tests for Microsoft Unity Application Block. Overall the quality of the tests in Unity is pretty good! I could certainly recommend that people look at them as examples of a bunch of tests against a framework, which are mostly very readable and maintainable. **Things I walk through:** - Using \[Ignore\] - exploration testing - magic numbers and strings - un-needed asserts - Stub hard coded behavior - handling config files in tests - Asserts hidden in a utility method - more naming conventions - Separating integration tests - “smart” code that is less readable - Meaningless “isNotNull” tests - cleaner ways of expecting exceptions ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Apr 2, 2009 ### [Preview: Placeholder arguments and custom argument checkers](https://osherove.com/blog/2009/4/2/preview-placeholder-arguments-and-custom-argument-checkers.html) - Mar 24, 2009 ### [Geeky T-Shirt ideas](https://osherove.com/blog/2009/3/24/geeky-t-shirt-ideas.html) - Mar 21, 2009 ### [Test Review #2 – ASP.NET MVC Unit Tests](https://osherove.com/blog/2009/3/21/test-review-2-aspnet-mvc-unit-tests.html) - Mar 20, 2009 ### [Test Review #1 - NerdDinner](https://osherove.com/blog/2009/3/20/test-review-1-nerddinner.html) --- title: "Test Review #2 – ASP.NET MVC Unit Tests" url: "https://osherove.com/blog/2009/3/21/test-review-2-aspnet-mvc-unit-tests.md" canonical: "https://osherove.com/blog/2009/3/21/test-review-2-aspnet-mvc-unit-tests.html" published: "2009-03-21T21:42:38" updated: "2009-03-21T21:42:38" tags: [".NET", ".Net 2.0", ".Net Original", "Agile", "Art Of Unit Testing", "TestReview", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "See other reviews: Review #1: NerdDinner Here’s the second video review of Unit Tests. This is another one written by Microsoft – ASP.NET MVC ( source ). First, it’s important to state how surprised I was by the high…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Review \#2 – ASP.NET MVC Unit Tests By Roy Osherove March 21, 2009 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [.Net Original](https://osherove.com/blog/category/net-original), [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [TestReview](https://osherove.com/blog/category/testreview), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 21, 2009; technical details may be outdated. See other reviews: - [Review #1: NerdDinner](http://weblogs.asp.net/rosherove/archive/2009/03/20/test-review-1-nerddinner.aspx) Here’s the second video review of Unit Tests. This is another one written by Microsoft – [ASP.NET MVC](http://www.codeplex.com/aspnet) ([source](http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471)). First, it’s important to state how surprised I was by the **high quality** of the tests in MVC. The tests are **readable, maintainable and trustworthy,** with very little issues that I could find. whatever Issues I found are rather easy to fix. In any case, if one is looking for examples of systems written in what seems almost entirely in TDD, or at the minimum with very good testing guidance, ASP.NET MVC should be a good stop to look at. [see the video here](https://osherove.com/videos/2009/8/25/test-review-2-aspnet-mvc.html) Issues discussed in this video: - Implementing RowTest with MSTest, and the importance of naming (14:00) - Verify() that is splitted from the mock expectations (17:00) - some naming conventions - Over-specification in tests (mainly more than one mock object per test) - verifying mocks when it’s not required - logic inside tests (concatenation) - test factory methods with too much logic - a very good example of when **multiple asserts** is really bad (11:50) Again – I’m very pleased with the test quality. Now is the time to make sure the things above are fixed. they are still important! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Mar 24, 2009 ### [Geeky T-Shirt ideas](https://osherove.com/blog/2009/3/24/geeky-t-shirt-ideas.html) - Mar 22, 2009 ### [Test Review #3 – Unity](https://osherove.com/blog/2009/3/23/test-review-3-unity.html) - Mar 20, 2009 ### [Test Review #1 - NerdDinner](https://osherove.com/blog/2009/3/20/test-review-1-nerddinner.html) - Mar 17, 2009 ### [ALT.NET Israel – Meeting II 2d and 3rd of April](https://osherove.com/blog/2009/3/17/altnet-israel-meeting-ii-2d-and-3rd-of-april.html) --- title: "Test Review #1 - NerdDinner" url: "https://osherove.com/blog/2009/3/20/test-review-1-nerddinner.md" canonical: "https://osherove.com/blog/2009/3/20/test-review-1-nerddinner.html" published: "2009-03-20T05:45:53" updated: "2009-03-20T05:45:53" tags: [".NET", "Agile", "Art Of Unit Testing", "TestReview", "Unit Testing"] author: "Roy Osherove" description: "I’ve decided to start doing some test reviews of tests that I see in the wild. I figured it’s the best way to show people what I mean when I say they do not have readable, maintainable or trustworthy tests. The first…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Review \#1 - NerdDinner By Roy Osherove March 20, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [TestReview](https://osherove.com/blog/category/testreview), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 20, 2009; technical details may be outdated. I’ve decided to start doing some test reviews of tests that I see in the wild. I figured it’s the best way to show people what I mean when I say they do not have readable, maintainable or trustworthy tests. The first episode is the review of the tests from the [NerdDinner MVC source code](http://nerddinner.codeplex.com/). It’s 30 minutes long. and it was shot at 2AM, so I’m quite cranky. But the tests sure don’t try to ease my mind, and only make me crankier. If you have tests you’d like me to review send an email to Roy AT osherove.com with the subject “Test Review \[project name\]” TestReviewNerdDinner.flv **problems that are dealt with in this video:** - Naming conventions - Magic strings in tests - Hard coded values in hand written stubs - Magic assertions (expecting a value that no one understand why it should be that value) - Lack of tests ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Mar 22, 2009 ### [Test Review #3 – Unity](https://osherove.com/blog/2009/3/23/test-review-3-unity.html) - Mar 21, 2009 ### [Test Review #2 – ASP.NET MVC Unit Tests](https://osherove.com/blog/2009/3/21/test-review-2-aspnet-mvc-unit-tests.html) - Mar 17, 2009 ### [ALT.NET Israel – Meeting II 2d and 3rd of April](https://osherove.com/blog/2009/3/17/altnet-israel-meeting-ii-2d-and-3rd-of-april.html) - Mar 17, 2009 ### [API design values and decision matrix](https://osherove.com/blog/2009/3/17/api-design-values-and-decision-matrix.html) --- title: "ALT.NET Israel – Meeting II 2d and 3rd of April" url: "https://osherove.com/blog/2009/3/17/altnet-israel-meeting-ii-2d-and-3rd-of-april.md" canonical: "https://osherove.com/blog/2009/3/17/altnet-israel-meeting-ii-2d-and-3rd-of-april.html" published: "2009-03-17T12:03:06" updated: "2009-03-17T12:03:06" tags: [".NET", "Agile", "Community", "Community News", "altnet", "altnetconf", "altnetisrael"] author: "Roy Osherove" description: "YOU CAN NOW REGISTER HERE I’ll just repost this in Hebrew: בשעה טובה ומוצלחת אני שמח לבשר על כנס alt.net israel השני מיקום הכנס : כמו בפעם שעברה, יתקיים הכנס בבית קבוצת סלע בבני ברק, ליד קניון אילון. תודה לאנשי קבוצת…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ALT.NET Israel – Meeting II 2d and 3rd of April By Roy Osherove March 17, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Community](https://osherove.com/blog/category/community), [Community News](https://osherove.com/blog/category/community-news), [altnet](https://osherove.com/blog/category/altnet), [altnetconf](https://osherove.com/blog/category/altnetconf), [altnetisrael](https://osherove.com/blog/category/altnetisrael) **Historical article** · Originally published March 17, 2009; technical details may be outdated. [YOU CAN NOW REGISTER HERE](http://altdotnetisrael.eventbrite.com/) I’ll just repost this in Hebrew: בשעה טובה ומוצלחת אני שמח לבשר על **כנס [alt.net](http://alt.net/) israel השני** **מיקום הכנס****:** כמו בפעם שעברה, יתקיים הכנס בבית קבוצת סלע בבני ברק, ליד קניון אילון. תודה לאנשי קבוצת סלע על ההיענות לאירוח. פרטים על סלע כאן: [http://www.sela.co.il/](http://www.sela.co.il/), ומפת הגעה כאן: [http://www.sela.co.il/?CategoryID=1295&ArticleID=642](http://www.sela.co.il/?CategoryID=1295&ArticleID=642) **מה בתוכנית****?** **יום חמישי 02/04 - יום התכנון** 18:30-19:00 התכנסות, רישום וכיבוד קל 19:00-20:30 פגישת תכנון וקביעת הנושאים לדיון ליום הדיונים 20:30-  ... המשך לא פורמלי באחד מבתי הקפה / פאבים באיזור **יום שישי 03/04 - יום הדיונים** 09:00-09:30 התכנסות, רישום וכיבוד קל 09:30-09:40 שיחת פתיחה 09:40-10:50 סבב דיונים ראשון 11:00-12:10 סבב דיונים שני 12:20-13:30 סבב דיונים שלישי 13:30-14:00 ארוחת צהריים 14:10-15:20 סבב דיונים רביעי 15:20-16:30 סבב דיונים חמישי 16:30-17:00 פגישת סיכום 17:00-  ... המשך לא פורמלי באחד מבתי הקפה / פאבים באיזור יתכנו שינויים קלים בשעות הללו, עקב הגמישות של הפורמט. אנא עקבו אחרי רשימת הדיוור הזו ואחרי הבלוגים של המארגנים (רועי אושרוב, ליאור פרידמן וחן אגוזי) על מנת להישאר מעודכנים. [http://imistaken.blogspot.com/](http://imistaken.blogspot.com/) [http://weblogs.asp.net/rosherove/](http://weblogs.asp.net/rosherove/) [http://www.kenegozi.com/blog](http://www.kenegozi.com/blog) **אזהרת מזג אויר:** מפגש התכנון בחמישי בערב יתקיים על גג הבנין. יתכן שיהיה קריר אז מומלץ לבוא בלבוש חם. **כמה מילים על הפורמט****:** הכנס הזה לא דומה לכנסים אחרים שאתם מכירים. לא מדובר בהרצאות פרונטליות, בהן מספר מצומצם של אנשים בא ללמד את המשתתפים, אלא בדיוני "שולחן עגול". התכנים נקבעים על ידי המשתתפים (זה כולנו) ולא על ידי המארגנים בלבד. לכן חשוב להגיע לפגישת התכנון - אז יקבעו תכני הדיונים ליום שישי. מי שרוצה ללמוד עוד על הפורמט מוזמן להיכנס ללינקים שמופיעים בהמשך, ו/או לחפש על [ALT.NET](http://alt.net/) ו [ALT.NET](http://alt.net/) conf במנוע החיפוש החביב עליכם (גוגל, cuil, delver, live, yahoo ושאר החבורה) **תחומי עניין****:** מטרת הכנס והקהילה בכלל היא לעורר שיתוף ידע והתדיינות פתוחה בין חברי הקבוצה. על מנת לסייע בכך, נבקש מכל אחד מהמשתתפים לשלוח לקבוצה הזו (או אלי לדואל) את הפרטים הבאים: 1\. שם המשתמש איתו אתם מזוהים ברשימת הדיוור הזו 2\. שם אמיתי בעברית (או כינוי בו מכירים אתכם - כמו של Ayende Rahien למשל) 3\. כלי פיתוח מעולם ה .net בו יש למשתתף מומחיות מיוחדת ו/או עניין מיוחד (על מנת לעזור ביצירת דיונים סביב נושאים אלו) אנו נשתדל שיופקו מדבקות עם השם ותחומ/י העניין, שכל אחד ידביק על חולצתו במהלך הכנס וכך המשתתפים יוכלו לפנות בשאלות האחד לשני במהלך ההפסקות, בזמן האוכל, בדרך לשירותים או בפקקים בדרך הביתה **עזרה****:** למי שיש ויכול להביא מצלמות לתיעוד האירוע (גם סטילס אבל עדיף וידאו דיגיטלי) זה יהיה מצויין.  המטרה היא להעלות וידאו של כל מפגש ומפגש לאתרי השיתוף השונים.   גם מצלמת סטילס דיגיטלית שיודעת לצלם וידאו סביר על כרטיס הזיכרון באה בחשבון.  **לינקים רלוונטיים****:** [http://altnetpedia.com/OverviewWhatIsIt.ashx](http://altnetpedia.com/OverviewWhatIsIt.ashx) **תיוג****:**למי שכותב בלוג, מסמן לינקים בטקנורטי/דלישס/רדיט/דיגיט/אתר-הלינקים-של-מוישל'ה, נבקש להשתמש בתג alt-net-israel על מנת שנוכל למצוא ברשת מידע alt.net-י בעברית בקלות **פרסום:** נהניתם? ספרו לחברים שלכם. לא נהניתם? חפשו ת'חברים שלכם.  סתאאם. הקהילה מעצם טבעה פתוחה מאוד לביקורת בונה, וכולנו נשמח לשמוע הצעת לייעול / שיפור / שפצור ותחבור. (יש מילה כזו?) ספרו לאנשים שאתם חושבים שזה מעניין אותם על קבוצת הדיוור הזו, ועל הקהילה בכלל. מגיע לכולם להנות, לא? **אז איפה נרשמים? **בימים הקרובים נפרסם קישור להרשמה. שמרו על עין פקוחה והירשמו בהקדם (עם פרסום הקישור) כי מספר המקומות מוגבל בסופו של דבר. אז למי שמגיע לכנס - נתראה שם, ולמי שלא - נתראה בפעם הבאה. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Mar 21, 2009 ### [Test Review #2 – ASP.NET MVC Unit Tests](https://osherove.com/blog/2009/3/21/test-review-2-aspnet-mvc-unit-tests.html) - Mar 20, 2009 ### [Test Review #1 - NerdDinner](https://osherove.com/blog/2009/3/20/test-review-1-nerddinner.html) - Mar 17, 2009 ### [API design values and decision matrix](https://osherove.com/blog/2009/3/17/api-design-values-and-decision-matrix.html) - Mar 16, 2009 ### [Art of unit Testing goes to print in April](https://osherove.com/blog/2009/3/16/art-of-unit-testing-goes-to-print-in-april.html) --- title: "API design values and decision matrix" url: "https://osherove.com/blog/2009/3/17/api-design-values-and-decision-matrix.md" canonical: "https://osherove.com/blog/2009/3/17/api-design-values-and-decision-matrix.html" published: "2009-03-17T08:56:56" updated: "2009-03-17T08:56:56" tags: [".NET", "Agile", "Art Of Unit Testing"] author: "Roy Osherove" description: "We’ve come to a nice way of deciding upon features in the Isolator API. This is what happens when your end product is an API for programmers. First, we realized that we must argue about it . For each type of new feature…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # API design values and decision matrix By Roy Osherove March 17, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published March 17, 2009; technical details may be outdated. We’ve come to a nice way of deciding upon features in the Isolator API. This is what happens when your end product is an API for programmers. First, we realized that we [must argue about it](http://www.elilopian.com/2009/03/12/management-for-geeks-have-a-good-fight/). For each type of new feature in the isolator API, we put up on the white board several version of the API that we can’t seem to decide about, and then ask everyone on the team to say what they think. If everyone agrees, then we ask people to defend the opposite side and explain why an API is not good. We came to several agreed upon values for the C# API, that help us judge the usability of it: - Consistency – is the new API consistent with the other APIs that already exist, or does it go against the regular way things are done? - Discoverability – If a user knew they wanted to do thing X, would they know to use the API without help? simply from intellisense? - Explicitness – we decided early on to be as explicit as possible about the API, so that the least guessing needs to take place by the user - Single point of entry – everything should start from a single point (Isolate.Something()) - Readability for the reader, not the writer (if you didn’t write the test would you find it easy to understand what it does?) - Single way to achieve things – is there more than one way to do a task with the new API? - Backwards compatibility – do we break an existing feature and cause some heartache  for users? We measure the various versions of an API by putting it in a matrix and setting “V” or “X” on each of them (if we can’t agree it’s a V with a line on it). then we have a better idea of what makes more sense. I admit we still haven’t come up with a single set of values for the VB API, but I’ll try to define it here: - Does not require use of Action - Consistent with the way a VBer would use other APIs - Explicit - Readable - Single way to achieve things - Backwards compatible note that “single point of entry” is not included. That was a design decision we made early on. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Mar 20, 2009 ### [Test Review #1 - NerdDinner](https://osherove.com/blog/2009/3/20/test-review-1-nerddinner.html) - Mar 17, 2009 ### [ALT.NET Israel – Meeting II 2d and 3rd of April](https://osherove.com/blog/2009/3/17/altnet-israel-meeting-ii-2d-and-3rd-of-april.html) - Mar 16, 2009 ### [Art of unit Testing goes to print in April](https://osherove.com/blog/2009/3/16/art-of-unit-testing-goes-to-print-in-april.html) - Mar 16, 2009 ### [Creativity Cards in software](https://osherove.com/blog/2009/3/16/creativity-cards-in-software.html) --- title: "Art of unit Testing goes to print in April" url: "https://osherove.com/blog/2009/3/16/art-of-unit-testing-goes-to-print-in-april.md" canonical: "https://osherove.com/blog/2009/3/16/art-of-unit-testing-goes-to-print-in-april.html" published: "2009-03-16T17:33:45" updated: "2009-03-16T17:33:45" tags: [".NET", "Agile", "Agile Related", "Art Of Unit Testing"] author: "Roy Osherove" description: "The book of never ending production is now actually near the end. the projected print date of “Art Of Unit Testing” is now April 30 and I’m happy to see the Amazon page for the book already has one review of the early…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Art of unit Testing goes to print in April By Roy Osherove March 16, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published March 16, 2009; technical details may be outdated. The [book of never ending production](http://www.artofunittesting.com/) is now actually near the end. the projected print date of “Art Of Unit Testing” is now April 30 and I’m happy to see the [Amazon page for the book](https://www.amazon.com/exec/obidos/ASIN/1933988274/iserializable-20) already has one review of the [early access version](http://www.manning.com/affiliate/idevaffiliate.php?id=462_91) (though he [totally destroys my spelling and book formatting abilities](https://www.amazon.com/Must-Have-Books-for-your-shelf/forum/Fx3HZHLJNJKXXLK/Tx23FXJ7W0JBTWI/1/ref=cm_cd_dp_tft_tp?_encoding=UTF8&asin=1933988274&store=books), he likes the content, so I’m happy) [![image](https://osherove.com/img/wb/ab4b38ba_weblogs.asp.net_blogs_rosherove_image_5FC0326C.png)](http://www.manning.com/affiliate/idevaffiliate.php?id=462_91) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Mar 17, 2009 ### [ALT.NET Israel – Meeting II 2d and 3rd of April](https://osherove.com/blog/2009/3/17/altnet-israel-meeting-ii-2d-and-3rd-of-april.html) - Mar 17, 2009 ### [API design values and decision matrix](https://osherove.com/blog/2009/3/17/api-design-values-and-decision-matrix.html) - Mar 16, 2009 ### [Creativity Cards in software](https://osherove.com/blog/2009/3/16/creativity-cards-in-software.html) - Mar 16, 2009 ### [Code Formatter plugin for live writer - updated](https://osherove.com/blog/2009/3/16/code-formatter-plugin-for-live-writer-updated.html) --- title: "Creativity Cards in software" url: "https://osherove.com/blog/2009/3/16/creativity-cards-in-software.md" canonical: "https://osherove.com/blog/2009/3/16/creativity-cards-in-software.html" published: "2009-03-16T17:26:11" updated: "2009-03-16T17:26:11" tags: [".NET"] author: "Roy Osherove" description: "I fully agree that software is a very creative profession. Sometimes the creativity lies in creating things, sometimes it’s about taking things apart to understand them, or restructure them, and sometimes it’s just…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Creativity Cards in software By Roy Osherove March 16, 2009 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published March 16, 2009; technical details may be outdated. I fully agree that software is a very creative profession. Sometimes the creativity lies in creating things, sometimes it’s about taking things apart to understand them, or restructure them, and sometimes it’s just about being creative with your task and time managment. I should totally [give these cards a try](http://andersnoras.com/blogs/anoras/archive/2008/10/15/using-oblique-strategies-for-difficult-refactoring.aspx). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Mar 17, 2009 ### [API design values and decision matrix](https://osherove.com/blog/2009/3/17/api-design-values-and-decision-matrix.html) - Mar 16, 2009 ### [Art of unit Testing goes to print in April](https://osherove.com/blog/2009/3/16/art-of-unit-testing-goes-to-print-in-april.html) - Mar 16, 2009 ### [Code Formatter plugin for live writer - updated](https://osherove.com/blog/2009/3/16/code-formatter-plugin-for-live-writer-updated.html) - Mar 1, 2009 ### [Method\_Missing: Cool Uses](https://osherove.com/blog/2009/3/1/method_missing-cool-uses.html) --- title: "Code Formatter plugin for live writer - updated" url: "https://osherove.com/blog/2009/3/16/code-formatter-plugin-for-live-writer-updated.md" canonical: "https://osherove.com/blog/2009/3/16/code-formatter-plugin-for-live-writer-updated.html" published: "2009-03-16T16:39:59" updated: "2009-03-16T16:39:59" tags: [".NET", "Cool Tools"] author: "Roy Osherove" description: "Looks like the Code Formatter plugin for Live Writer has been updated. Gonna give it a try." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Code Formatter plugin for live writer - updated By Roy Osherove March 16, 2009 In [.NET](https://osherove.com/blog/category/net), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published March 16, 2009; technical details may be outdated. Looks like the [Code Formatter plugin for Live Writer](http://stevedunns.googlepages.com/codeformatterforwindowslivewriter) has been updated. Gonna give it a try. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Mar 16, 2009 ### [Art of unit Testing goes to print in April](https://osherove.com/blog/2009/3/16/art-of-unit-testing-goes-to-print-in-april.html) - Mar 16, 2009 ### [Creativity Cards in software](https://osherove.com/blog/2009/3/16/creativity-cards-in-software.html) - Mar 1, 2009 ### [Method\_Missing: Cool Uses](https://osherove.com/blog/2009/3/1/method_missing-cool-uses.html) - Feb 25, 2009 ### [Adding Method-Missing support to VB.NET using CTru and Typemock Open-AOP](https://osherove.com/blog/2009/2/25/adding-method-missing-support-to-vbnet-using-ctru-and-typemo.html) --- title: "Happy Purim" url: "https://osherove.com/blog/2009/3/10/happy-purim.md" canonical: "https://osherove.com/blog/2009/3/10/happy-purim.html" published: "2009-03-10T15:40:38" updated: "2009-03-10T15:40:38" tags: [] author: "Roy Osherove" description: "the second purim holiday with my little family was awesome. Just wanted you to know that. (yes, that’s a real snake)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Happy Purim By Roy Osherove March 10, 2009 **Historical article** · Originally published March 10, 2009; technical details may be outdated. ![image](https://osherove.com/img/wb/2bb6a686_weblogs.asp.net_blogs_rosherove_image_thumb_7D21B1EC.png) ![image](https://osherove.com/img/wb/c9841ed0_weblogs.asp.net_blogs_rosherove_image_thumb_50D2BF4B.png) the second purim holiday with my little family was awesome. Just wanted you to know that. (yes, that’s a real snake) --- title: "premature-bloggization" url: "https://osherove.com/blog/2009/3/10/premature-bloggization.md" canonical: "https://osherove.com/blog/2009/3/10/premature-bloggization.html" published: "2009-03-10T06:08:34" updated: "2009-03-10T06:08:34" tags: [] author: "Roy Osherove" description: "twitter totally killed my blogging drive. It's like a premature-bloggization enducer trying to get back on the horse.." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # premature-bloggization By Roy Osherove March 10, 2009 **Historical article** · Originally published March 10, 2009; technical details may be outdated. [twitter totally killed](http://twitter.com/royosherove) my blogging drive. It's like a premature-bloggization enducer trying to get back on the horse.. --- title: "What Isolation\\Mocking and unit testing framework are you using?" url: "https://osherove.com/blog/2009/3/9/what-isolationmocking-and-unit-testing-framework-are-you-usi.md" canonical: "https://osherove.com/blog/2009/3/9/what-isolationmocking-and-unit-testing-framework-are-you-usi.html" published: "2009-03-09T14:11:06" updated: "2009-03-09T14:11:06" tags: ["Agile", "Agile Related", "Unit Testing"] author: "Roy Osherove" description: "It’s time to re-examine where things stand in our little niche. This should be interesting, if enough people answer – so please answer (you need flash). Embedded Flash media from the original post is no longer playable.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What Isolation\\Mocking and unit testing framework are you using? By Roy Osherove March 9, 2009 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 9, 2009; technical details may be outdated. It’s time to re-examine where things stand in our little niche. This should be interesting, if enough people answer – so **please answer** (you need flash).

Embedded Flash media from the original post is no longer playable.

Embedded Flash media from the original post is no longer playable.

Embedded Flash media from the original post is no longer playable.

Embedded Flash media from the original post is no longer playable.

## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 17, 2009 ### [API design values and decision matrix](https://osherove.com/blog/2009/3/17/api-design-values-and-decision-matrix.html) - Mar 16, 2009 ### [Art of unit Testing goes to print in April](https://osherove.com/blog/2009/3/16/art-of-unit-testing-goes-to-print-in-april.html) - Mar 4, 2009 ### [We need a new slogan](https://osherove.com/blog/2009/3/4/we-need-a-new-slogan.html) - Mar 2, 2009 ### [True Learning – not comfortable, easy or safe](https://osherove.com/blog/2009/3/2/true-learning-not-comfortable-easy-or-safe.html) --- title: "We need a new slogan" url: "https://osherove.com/blog/2009/3/4/we-need-a-new-slogan.md" canonical: "https://osherove.com/blog/2009/3/4/we-need-a-new-slogan.html" published: "2009-03-04T09:06:55" updated: "2009-03-04T09:06:55" tags: ["Agile", "Community"] author: "Roy Osherove" description: "We’ve been debating this one internally for two weeks now. So I voted that we take this out to the community. Hopefully, you won’t make me look like an Idiot to my boss for suggesting it.. We need your help finding a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # We need a new slogan By Roy Osherove March 4, 2009 In [Agile](https://osherove.com/blog/category/agile), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published March 4, 2009; technical details may be outdated. We’ve been debating this one internally for two weeks now. So I voted that we take this out to the community. Hopefully, you won’t make me look like an Idiot to my boss for suggesting it.. We [need your help finding a new slogan for Typemock](http://blog.typemock.com/2009/03/help-us-find-great-company-slogan.html). You could win stuff, too. (I won’t tell you which of the four proposed is mine… the idea is to come up with your own slogans) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 16, 2009 ### [Art of unit Testing goes to print in April](https://osherove.com/blog/2009/3/16/art-of-unit-testing-goes-to-print-in-april.html) - Mar 9, 2009 ### [What Isolation\\Mocking and unit testing framework are you using?](https://osherove.com/blog/2009/3/9/what-isolationmocking-and-unit-testing-framework-are-you-usi.html) - Mar 2, 2009 ### [True Learning – not comfortable, easy or safe](https://osherove.com/blog/2009/3/2/true-learning-not-comfortable-easy-or-safe.html) - Mar 1, 2009 ### [Alt.Heros – Shanselman, benscheirman](https://osherove.com/blog/2009/3/1/altheros-shanselman-benscheirman.html) --- title: "Password protected RSS? Help needed" url: "https://osherove.com/blog/2009/3/3/password-protected-rss-help-needed.md" canonical: "https://osherove.com/blog/2009/3/3/password-protected-rss-help-needed.html" published: "2009-03-03T02:36:36" updated: "2009-03-03T02:36:36" tags: [] author: "Roy Osherove" description: "A free license of NHibernate goes to the first one who can give me a good *hosted* solution for password-protected RSS feeds and blogs. I’ve been looking everywhere, but was not able to get an PASS protected RSS feed…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Password protected RSS? Help needed By Roy Osherove March 3, 2009 **Historical article** · Originally published March 3, 2009; technical details may be outdated. A free license of NHibernate goes to the first one who can give me a good \*hosted\* solution for password-protected RSS feeds and blogs. I’ve been looking everywhere, but was not able to get an PASS protected RSS feed from either WordPress or Blogger.com what am I missing? What I need is to **setup a blog** that can only be read (online or via RSS) by using a predefined user\\password. --- title: "True Learning – not comfortable, easy or safe" url: "https://osherove.com/blog/2009/3/2/true-learning-not-comfortable-easy-or-safe.md" canonical: "https://osherove.com/blog/2009/3/2/true-learning-not-comfortable-easy-or-safe.html" published: "2009-03-02T01:21:17" updated: "2009-03-02T01:21:17" tags: ["Agile"] author: "Roy Osherove" description: "People seem to have a problem with me “changing lanes”. But that’s the way I learn things. If I totally disagree with something, I accept the fact that I may be doing so because of fear and misunderstanding. The best…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # True Learning – not comfortable, easy or safe By Roy Osherove March 2, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published March 2, 2009; technical details may be outdated. People seem to have a problem with me “changing lanes”. But that’s the way I learn things. If I totally disagree with something, I accept the fact that I may be doing so because of fear and misunderstanding. The best way to get rid of FUD is to give something a shot, and that’s what I do. - I had a problem with **Team System** – I thought it was too much, but I didn’t have all the facts.What was **I** going to do about it? So I started learning it and doing consulting on it. My goal was to become an authority on it so that I can say I’ve been to both sides and now I can decide better based on real knowledge. Today I use svn because it makes more sense for my current team – not because I don’t like TFS (I do, it has lots of good stuff, just like it has bad stuff) - I had a problem with **Typemock** – I thought it was a lousy product, that kills design for testability.. What was **I** going to do about it? So luckily the company resides in the same country where I work, so I got up the nerves and actually started working on the damn product. Now, having been in both sides I can safely decide and answer all questions from both sides, in a more objective manner. Do I **always** use it? no. I use it when it makes sense. I also get to **make it better** in terms of API, usability and vision, so that it fits more into how I think it should be. That’s what I’m doing about it. **What’s next though?** - I have a problem with BDD and spec-related frameworks. What am I going to do about it? (can you guess?) - I have a problem with people who think I’m a sellout – can I do something about that? (accept the fact I can’t control what other people think, and just do what I feel is the right thing – lead by example) - I have a problem with DDD (not getting it). what do I intend to do about it? (can you guess?) - I still don’t get NHibernate well enough. I intend to do something about that. **My point is:** Sometimes real courage means not standing in the sidelines and saying something is bad. Sometimes it means trying something even if you may look like a fool or a sellout, because that’s the only way to learn that something and come out with more knowledge. Sometimes that means you don’t feel as comfortable as you should. TO all the detractors: a little challenge. since you’re so frigging confident in what you do, take a chance and - Develop a full project with VB.NET - Use Typemock on a real project - Use TFS on a real project - Do TDD on a real project at worst you’ll have **actual** things to say why you don’t like them, and you will have learned something. otherwise, get the hell of my lawn. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 9, 2009 ### [What Isolation\\Mocking and unit testing framework are you using?](https://osherove.com/blog/2009/3/9/what-isolationmocking-and-unit-testing-framework-are-you-usi.html) - Mar 4, 2009 ### [We need a new slogan](https://osherove.com/blog/2009/3/4/we-need-a-new-slogan.html) - Mar 1, 2009 ### [Alt.Heros – Shanselman, benscheirman](https://osherove.com/blog/2009/3/1/altheros-shanselman-benscheirman.html) - Mar 1, 2009 ### [What are YOU going to do about it?](https://osherove.com/blog/2009/3/1/what-are-you-going-to-do-about-it.html) --- title: "Are courses\\consultants a waste of money?" url: "https://osherove.com/blog/2009/3/2/are-coursesconsultants-a-waste-of-money.md" canonical: "https://osherove.com/blog/2009/3/2/are-coursesconsultants-a-waste-of-money.html" published: "2009-03-02T01:07:19" updated: "2009-03-02T01:07:19" tags: ["Community"] author: "Roy Osherove" description: "People will pay you to learn – no matter what you do in your developer life, people will pay you to constantly learn. It doesn’t matter if you’re a developer, team lead, manager, consultant, speaker, IT Guy or anything…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Are courses\\consultants a waste of money? By Roy Osherove March 2, 2009 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published March 2, 2009; technical details may be outdated. People will pay you to learn – no matter what you do in your developer life, people will pay you to constantly learn. It doesn’t matter if you’re a developer, team lead, manager, consultant, speaker, IT Guy or anything – whatever you **choose** to do in your career will be a learning experience. The courses I teach on TDD are never the same between instances. Each one if a bettering of the one before it, because things change between them: reality changes, my understanding changes, preconceptions are broken, and new ones are formed. So yeah, people will pay for my mistakes, as they pay for any mistakes we all do during our career. Being afraid of being wrong is not a reason to stop doing something – doing is a way to learn. Can you say that you wasted money on learning VB6 courses a 8 years ago? does it matter? That’s how things just are. If someone teaches a course on TDD, which then turns to a course on BDD – does that mean that you wasted your money on those earlier TDD courses, that you were actually **paying** for that someone’s mistakes in perception? what about the opposite? IF I as a consultant were teaching someone to do X and a year later I realize it should have been Y all along – does that mean I’m a scam artist? or that I took advantage of someone? If so – every developer and consultant on the face of the earth should stop working right now – because we live in a reality that keeps changing as we learn from it. It’s all in the doing. that is where the learning lies. and growth comes from actually being wrong, figuring it out and bettering it. There **are no courses that are always relevant**. at the minimum they need small alterations. not to mention changing in full. ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Mar 17, 2009 ### [ALT.NET Israel – Meeting II 2d and 3rd of April](https://osherove.com/blog/2009/3/17/altnet-israel-meeting-ii-2d-and-3rd-of-april.html) - Mar 4, 2009 ### [We need a new slogan](https://osherove.com/blog/2009/3/4/we-need-a-new-slogan.html) - Nov 17, 2007 ### [CodeBetter without the Bellware - Good or Evil?](https://osherove.com/blog/2007/11/17/codebetter-without-the-bellware-good-or-evil.html) - Nov 15, 2007 ### [Free MS Press books for a 5 minute screencast](https://osherove.com/blog/2007/11/15/free-ms-press-books-for-a-5-minute-screencast.html) --- title: "Alt.Heros – Shanselman, benscheirman" url: "https://osherove.com/blog/2009/3/1/altheros-shanselman-benscheirman.md" canonical: "https://osherove.com/blog/2009/3/1/altheros-shanselman-benscheirman.html" published: "2009-03-01T16:38:55" updated: "2009-03-01T16:38:55" tags: ["Agile", "altnet", "altnetconf"] author: "Roy Osherove" description: "In case you didn’t realize this, whoever Scott Hanselman’s manager is = you should give Scott a raise. He just made ALT.NET fun for people 6000 miles away using Kyte.com, a laptop and a buggy camera. Thanks for being an…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Alt.Heros – Shanselman, benscheirman By Roy Osherove March 1, 2009 In [Agile](https://osherove.com/blog/category/agile), [altnet](https://osherove.com/blog/category/altnet), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published March 1, 2009; technical details may be outdated. In case you didn’t realize this, whoever [Scott Hanselman’s](http://www.hanselman.com/blog/) manager is = you should give Scott a raise. He just made [ALT.NET fun for people 6000 miles away](http://www.kyte.tv/shanselman) using Kyte.com, a laptop and a buggy camera. Thanks for being an ALT.HERO Scott. And thanks Ben, [who was doing the same in parallel sessions](http://kyte.tv/benscheirman). That’s what I mean by “[What are you going to do about it?](http://weblogs.asp.net/rosherove/archive/2009/03/01/what-are-you-going-to-do-about-it.aspx)” Also, [this is another great example](http://www.summerofnhibernate.com/) of such thinking. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 4, 2009 ### [We need a new slogan](https://osherove.com/blog/2009/3/4/we-need-a-new-slogan.html) - Mar 2, 2009 ### [True Learning – not comfortable, easy or safe](https://osherove.com/blog/2009/3/2/true-learning-not-comfortable-easy-or-safe.html) - Mar 1, 2009 ### [What are YOU going to do about it?](https://osherove.com/blog/2009/3/1/what-are-you-going-to-do-about-it.html) - Mar 1, 2009 ### [Awsome idea: TeamCity.CodeBetter.com](https://osherove.com/blog/2009/3/1/awsome-idea-teamcitycodebettercom.html) --- title: "What are YOU going to do about it?" url: "https://osherove.com/blog/2009/3/1/what-are-you-going-to-do-about-it.md" canonical: "https://osherove.com/blog/2009/3/1/what-are-you-going-to-do-about-it.html" published: "2009-03-01T15:19:54" updated: "2009-03-01T15:19:54" tags: ["Agile"] author: "Roy Osherove" description: "At one of the jobs I was working at years back, I was a pretty successful developer. it was a startup and I was having fun. Near the end of its life though, things started falling apart and everyone had to contribute to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What are YOU going to do about it? By Roy Osherove March 1, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published March 1, 2009; technical details may be outdated. At one of the jobs I was working at years back, I was a pretty successful developer. it was a startup and I was having fun. Near the end of its life though, things started falling apart and everyone had to contribute to the effort, including doing things that are not just developer-related, or really annoying things (using lots of notepad… for many kinds of logs and such). I hated that part and kept bitching about it, and one day, the CEO told me I have two weeks to get my act together because people were no longer willing to work with me on things. Two weeks went and I tried. I really tried to be positive, but I eventually got fired from that place. It could have been different, but I see this behavior in many places even today. For me, ALT.NET finally means something I can put into more coherent thoughts: Personal Integrity. And I don’t just mean it in the “you can count on me” sense. I mean it in the “whole” way too. Integrity means following up on what you say, with real action, not just words. you Say you do something, you mean that, and you actually follow through. That’s why the Vote Of No Confidence at the Entity Framework felt so icky to me. It’s just plain whining. There is nothing easier than sitting in the corner and whining about how unfair someone else is, or how they are not taking your thoughts into account and how the world would be a better place if everyone would just shut up and listen to what you have to say and so on.. Well, **what are you going to DO about it?** That is my question to anyone who feels that things could be better, regardless of where they are and what they do at work. Personal integrity is about doing the things that are under **your control** and following through on them. **Examples of integrity moving worlds?** - MonoRail as an implementation of Ruby on Rails MVC for ASP.NET. It proved to be such a nice alternative to mainstream .NET, that MS came out with ASP.NET MVC. Things have moved. - FubuMVC is an alternative implementation of how some ALT.NETtt’ers feels ASP.NET MVC should work out of the box in terms of design guidelines. It turns heads at microsoft and provides a guiding alternative to mainstream ASP MVC guidelines. - NUNit, MbUnit: showed that there is a need for them. MS followed with their own view of things. - XUnit.NET: provides an alternative to to the “mainstream” MSTest, NUnit and MbUnit. Just because. - NInject provides an alternative to mainstream IOC containers. so does StructureMap. - ALT.NET groups and conferences all over the world, arranged by people who are doing something about what they believe. - NHibernate is now gaining lots of momentum as an ORM solution. Books are written about it. What’s common here is that people, instead of bitching and whining, got up and **did** something about it. They didn’t **say,** they **did.** **It’s true = these are all still relative niche projects**. But to get things changing, you need to first provide a path for people to go through. It’s not enough to say things are bad, it’s much better to say “Here’s how I’m doing it and I’ll teach you”. Here’s an example from our work: One of our employees really wanted a coffee machine, but we can’t afford one (being a startup and all). So she figured out places where costs can be cut (getting discounts from a couple of suppliers, purchasing cheaper products and so on..) and got back to our CEO with a detailed report on **how she already saved the amount needed to purchase a coffee machine** in the past month. She didn’t get up and whine, just made it happen. And our coffee machine is on the way. **What can you do today?** **Don’t compromise**  with what’s under your control. - If you’re a team lead and you think testing is important, you can make sure tests are being written and review them. But you can’t control the whole organization. so you can only lead by example: show what it can look like with tests. don’t bend over if someone forces you to do what you don’t like. find a way to make things work as long as they are under your control. - If you are a developer who feels things could be better – don’t complain about it. start making changes in the things under your control. Make yourself an automated build cycle if you think it’s a good idea. run it just for you, but show it to everyone else. You can’t control if they want to use it or not but you can control the fact they you are trying to teach. - If you are a manager who thinks the org. could be more agile, use your control and start asking for agile results: ask to see the list of tests before a release of the application. don’t accept “no” for an answer. Demand bi-weekly demos of the app. there is ALWAYS something you can do. On my first job I was annoyed because everyone had 15” screens. I didn’t want to wait two years to get one, so I got my own screen, in my own money and I had a screen big enough. it’s that simple. What are YOU going to do about it? Starting Tomorrow? ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 2, 2009 ### [True Learning – not comfortable, easy or safe](https://osherove.com/blog/2009/3/2/true-learning-not-comfortable-easy-or-safe.html) - Mar 1, 2009 ### [Alt.Heros – Shanselman, benscheirman](https://osherove.com/blog/2009/3/1/altheros-shanselman-benscheirman.html) - Mar 1, 2009 ### [Awsome idea: TeamCity.CodeBetter.com](https://osherove.com/blog/2009/3/1/awsome-idea-teamcitycodebettercom.html) - Feb 25, 2009 ### [Adding Method-Missing support to VB.NET using CTru and Typemock Open-AOP](https://osherove.com/blog/2009/2/25/adding-method-missing-support-to-vbnet-using-ctru-and-typemo.html) --- title: "read them all" url: "https://osherove.com/blog/2009/3/1/read-them-all.md" canonical: "https://osherove.com/blog/2009/3/1/read-them-all.html" published: "2009-03-01T10:51:06" updated: "2009-03-01T10:51:06" tags: [] author: "Roy Osherove" description: "I should read all of these" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # read them all By Roy Osherove March 1, 2009 **Historical article** · Originally published March 1, 2009; technical details may be outdated. I should read [all of these](http://blog.objectmentor.com/articles/2009/02/26/10-papers-every-programmer-should-read-at-least-twice) --- title: "Method_Missing: Cool Uses" url: "https://osherove.com/blog/2009/3/1/method_missing-cool-uses.md" canonical: "https://osherove.com/blog/2009/3/1/method_missing-cool-uses.html" published: "2009-03-01T10:26:01" updated: "2009-03-01T10:26:01" tags: [".NET"] author: "Roy Osherove" description: "I wrote the other day that I’ve added that ability to use a Method_Missing method in VB. I was also able to get something similar in C# 4 using dynamic types but people keep asking me “why is it useful?” I thought long…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Method\_Missing: Cool Uses By Roy Osherove March 1, 2009 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published March 1, 2009; technical details may be outdated. I wrote the other day that [I’ve added that ability](http://weblogs.asp.net/rosherove/archive/2009/02/25/adding-method-missing-support-to-vb-net-using-ctru-and-typemock-open-aop.aspx) to use a Method\_Missing method in VB. I was also able to get something similar in C# 4 using dynamic types but people keep asking me “why is it useful?” I thought long and hard and the first answer I came up with was “cause it sounds like a cool idea”. Then I started looking up potential uses for this.This feature is used all over the place in [ruby](http://rubylearning.com/satishtalim/ruby_method_missing.html) on rails and such, to have "smart" methods that know what you need without you needing to define it beforehand. good examples here: [http://szeryf.wordpress.com/2008/06/05/eliminating-code-duplication-with-metaprogramming/](http://szeryf.wordpress.com/2008/06/05/eliminating-code-duplication-with-metaprogramming/) [http://szeryf.wordpress.com/2007/07/15/extending-rails-magic-%EF%AC%81nders/](http://szeryf.wordpress.com/2007/07/15/extending-rails-magic-%EF%AC%81nders/) [http://redhanded.hobix.com/inspect/theBestOfMethod\_missing.html](http://redhanded.hobix.com/inspect/theBestOfMethod_missing.html) Today at work I thought of another cool use for such a thing: a proxy to private method invocations When working with a type who has non public methods that you with to invoke, you can easily create a “wrapper” class that you can call those methods directly on, which, when Method\_Missing gets called, will be redirected as reflection invocation calls against that object. Assuming you has method\_missing support in VB and in C# out of the box – what would you use it for? ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Mar 16, 2009 ### [Creativity Cards in software](https://osherove.com/blog/2009/3/16/creativity-cards-in-software.html) - Mar 16, 2009 ### [Code Formatter plugin for live writer - updated](https://osherove.com/blog/2009/3/16/code-formatter-plugin-for-live-writer-updated.html) - Feb 25, 2009 ### [Adding Method-Missing support to VB.NET using CTru and Typemock Open-AOP](https://osherove.com/blog/2009/2/25/adding-method-missing-support-to-vbnet-using-ctru-and-typemo.html) - Dec 31, 2008 ### [The morning brew](https://osherove.com/blog/2008/12/31/the-morning-brew.html) --- title: "Awsome idea: TeamCity.CodeBetter.com" url: "https://osherove.com/blog/2009/3/1/awsome-idea-teamcitycodebettercom.md" canonical: "https://osherove.com/blog/2009/3/1/awsome-idea-teamcitycodebettercom.html" published: "2009-03-01T07:36:51" updated: "2009-03-01T07:36:51" tags: ["Agile"] author: "Roy Osherove" description: "The CodeBetter.com guys stepped up and created TeamCity.CodeBetter.com. open source Continuous Integration hosting using TeamCity (which we use internally). Way to go!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Awsome idea: TeamCity.CodeBetter.com By Roy Osherove March 1, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published March 1, 2009; technical details may be outdated. The [CodeBetter.com guys stepped up](http://codebetter.com/blogs/james.kovacs/archive/2009/02/24/announcing-teamcity-codebetter-com.aspx) and created [TeamCity.CodeBetter.com.](http://teamcity.codebetter.com/) open source Continuous Integration hosting using TeamCity (which we use internally). Way to go! ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 1, 2009 ### [Alt.Heros – Shanselman, benscheirman](https://osherove.com/blog/2009/3/1/altheros-shanselman-benscheirman.html) - Mar 1, 2009 ### [What are YOU going to do about it?](https://osherove.com/blog/2009/3/1/what-are-you-going-to-do-about-it.html) - Feb 25, 2009 ### [Adding Method-Missing support to VB.NET using CTru and Typemock Open-AOP](https://osherove.com/blog/2009/2/25/adding-method-missing-support-to-vbnet-using-ctru-and-typemo.html) - Feb 25, 2009 ### [Introducing SilverUnit](https://osherove.com/blog/2009/2/25/introducing-silverunit.html) --- title: "Adding Method-Missing support to VB.NET using CTru and Typemock Open-AOP" url: "https://osherove.com/blog/2009/2/25/adding-method-missing-support-to-vbnet-using-ctru-and-typemo.md" canonical: "https://osherove.com/blog/2009/2/25/adding-method-missing-support-to-vbnet-using-ctru-and-typemo.html" published: "2009-02-25T17:21:26" updated: "2009-02-25T17:21:26" tags: [".NET", "Agile", "Typemock"] author: "Roy Osherove" description: "I am finding cooler and cooler stuff to achieve using the CThru Engine. A few hours ago I suddenly thought : “CThru intercepts all calls in the system. what happens if they are calls to methods that don’t exist?”…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Adding Method-Missing support to VB.NET using CTru and Typemock Open-AOP By Roy Osherove February 25, 2009 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Typemock](https://osherove.com/blog/category/typemock) **Historical article** · Originally published February 25, 2009; technical details may be outdated. I am finding cooler and cooler stuff to achieve using the CThru Engine. A few hours ago I suddenly thought : “CThru intercepts all calls in the system. what happens if they are calls to methods that don’t exist?” Logically this led me to: - VB.NET supports late bound invocation (with option strict off – great for COM related stuff) - other languages ([like Ruby](http://rubylearning.com/satishtalim/ruby_method_missing.html)) have a feature called “[MethodMissing](http://rubylearning.com/satishtalim/ruby_method_missing.html)” whereby you get an callback when a missing method is invoked in the system, so you can do whatever you want. - Maybe we can have MethodMissing in VB.NET?? So I set out to achieve this. A couple hours later, I can now do this: ![image](https://osherove.com/img/wb/55cc30f5_weblogs.asp.net_blogs_rosherove_image_thumb_16E5FA38.png) Notice that “NonExistingMethod” really does not exist on the current type (nor does it have any extension methods). I simply register to the **MissingMethodCall** event published by **CThruEngine**, so that I can now control its behavior. And here’s how I handle the event: ![image](https://osherove.com/img/wb/7276cb91_weblogs.asp.net_blogs_rosherove_image_thumb_05259E06.png) If I execute “MyMethod” here’s the output: ![image](https://osherove.com/img/wb/03263b7c_weblogs.asp.net_blogs_rosherove_image_thumb_666B61C2.png) Now, imagine the possibilities.. :) How does it work? Well, in VB.NET, there’s a special class called “Microsoft.VisualBasic.CompilerServices.**NewLateBinding**” that has a method “**LateCall**” that gets called for all late bound method calls. Of course, it also returns a value. I simply (well, not quite) intercept the calls to it and before VB throws an exception, I can let the user of the event return whatever value they want from that method, and then I skip it’s actual call and return the value. This will also work with late bound index calls, property values (set and get) and more. [CThru](http://www.codeplex.com/CThru) is an open source engine that sits on top of the Typemock Open-AOP hooks (part of the new 5.2.2 release). To learn more about CThru and get the tests and source code, [go here](http://www.codeplex.com/CThru). **Update:** I’ve updated the implementation so that it is more like Ruby. If the class being called declares a method named “missing\_method” that takes a MissingMethodArgs parameter, that method will be invoked automatically by the CThru engine, without needing to register to an event: ![image](https://osherove.com/img/wb/b69311a5_weblogs.asp.net_blogs_rosherove_image_thumb_671DDE1F.png) It’s also useful to consider that you can implement “missing\_method” in C# based assemblies. As the C# types are called in a late bound manner from VB, it should work exactly the same. Given: ![image](https://osherove.com/img/wb/ad0148f2_weblogs.asp.net_blogs_rosherove_image_thumb_1EDFFC76.png) We can write this in VB: ![image](https://osherove.com/img/wb/f6d56444_weblogs.asp.net_blogs_rosherove_image_thumb_707650FB.png) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Mar 16, 2009 ### [Code Formatter plugin for live writer - updated](https://osherove.com/blog/2009/3/16/code-formatter-plugin-for-live-writer-updated.html) - Mar 1, 2009 ### [Method\_Missing: Cool Uses](https://osherove.com/blog/2009/3/1/method_missing-cool-uses.html) - Dec 31, 2008 ### [The morning brew](https://osherove.com/blog/2008/12/31/the-morning-brew.html) - Dec 3, 2008 ### [Isolation frameworks – lessons from the wild](https://osherove.com/blog/2008/12/3/isolation-frameworks-lessons-from-the-wild.html) --- title: "Introducing SilverUnit" url: "https://osherove.com/blog/2009/2/25/introducing-silverunit.md" canonical: "https://osherove.com/blog/2009/2/25/introducing-silverunit.html" published: "2009-02-25T02:10:29" updated: "2009-02-25T02:10:29" tags: ["Agile"] author: "Roy Osherove" description: "SilverUnit is a new open source Unit Testing framework for SilverLight ( true unit testing, not the Integration style, browser-backed, Async-driven C#-only-friendly, monster of a Test Framework from Microsoft). All the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing SilverUnit By Roy Osherove February 25, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published February 25, 2009; technical details may be outdated. [SilverUnit](http://www.codeplex.com/CThru/Wiki/View.aspx?title=SilverUnit%20examples&referringTitle=Home) is a new open source Unit Testing framework for SilverLight (**true** unit testing, not [the Integration style, browser-backed, Async-driven C#-only-friendly, monster of a Test Framework](http://code.msdn.microsoft.com/silverlightut) from Microsoft). [All the gory details](http://blog.typemock.com/2009/02/silverunit-true-unit-testing-for.html) – [Here](http://blog.typemock.com/2009/02/silverunit-true-unit-testing-for.html). Oh, and it’s written in VB.NET. Let’s see if VBers will step up to contribute to this. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 1, 2009 ### [Awsome idea: TeamCity.CodeBetter.com](https://osherove.com/blog/2009/3/1/awsome-idea-teamcitycodebettercom.html) - Feb 25, 2009 ### [Adding Method-Missing support to VB.NET using CTru and Typemock Open-AOP](https://osherove.com/blog/2009/2/25/adding-method-missing-support-to-vbnet-using-ctru-and-typemo.html) - Feb 22, 2009 ### [How we do TDD – Talk today](https://osherove.com/blog/2009/2/22/how-we-do-tdd-talk-today.html) - Feb 16, 2009 ### [Looking for an Agile developer, again!](https://osherove.com/blog/2009/2/16/looking-for-an-agile-developer-again.html) --- title: "How we do TDD – Talk today" url: "https://osherove.com/blog/2009/2/22/how-we-do-tdd-talk-today.md" canonical: "https://osherove.com/blog/2009/2/22/how-we-do-tdd-talk-today.html" published: "2009-02-22T04:04:03" updated: "2009-02-22T04:04:03" tags: ["Agile"] author: "Roy Osherove" description: "Our fabulous developers Doron Peretz and Dror Helper are giving a presentation on TDD on the 22-Feb-09 (that’s today) at the Israeli .Net Architect user group. That's this Sunday! These most awesome professional people…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How we do TDD – Talk today By Roy Osherove February 22, 2009 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published February 22, 2009; technical details may be outdated. Our fabulous developers Doron Peretz and [Dror Helper](http://blogs.microsoft.co.il/blogs/dhelper/) are giving a [presentation on TDD](http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032405110&culture=he-IL) on the 22-Feb-09 (that’s **today)** at the Israeli .Net Architect user group. That's this Sunday! These most awesome professional people (who are also somewhat modest) will bring examples from our own development process at Typemock, and how TDD and unit testing is general helps - and what it takes. If your speaking the lingo (Hebrew), and want to see how we practice what we preach, come join us on Sunday! I totally forgot to blog about this on the weekend.  :( ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 25, 2009 ### [Adding Method-Missing support to VB.NET using CTru and Typemock Open-AOP](https://osherove.com/blog/2009/2/25/adding-method-missing-support-to-vbnet-using-ctru-and-typemo.html) - Feb 25, 2009 ### [Introducing SilverUnit](https://osherove.com/blog/2009/2/25/introducing-silverunit.html) - Feb 16, 2009 ### [Looking for an Agile developer, again!](https://osherove.com/blog/2009/2/16/looking-for-an-agile-developer-again.html) - Jan 13, 2009 ### [Unit Testing in VB.NET – with Typemock Isolator (with a free license offer)](https://osherove.com/blog/2009/1/13/unit-testing-in-vbnet-with-typemock-isolator-with-a-free-lic.html) --- title: "Looking for an Agile developer, again!" url: "https://osherove.com/blog/2009/2/16/looking-for-an-agile-developer-again.md" canonical: "https://osherove.com/blog/2009/2/16/looking-for-an-agile-developer-again.html" published: "2009-02-16T03:12:59" updated: "2009-02-16T03:12:59" tags: ["Agile", "Typemock"] author: "Roy Osherove" description: "We’re hiring . That’s right. you heard me. In the midst of all this trouble, we’re looking for one great developer that can join our team at Typemock. First, you have to live in Israel. How to submit your CV If you’re…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Looking for an Agile developer, again! By Roy Osherove February 16, 2009 In [Agile](https://osherove.com/blog/category/agile), [Typemock](https://osherove.com/blog/category/typemock) **Historical article** · Originally published February 16, 2009; technical details may be outdated. **We’re hiring**. That’s right. you heard me. In the midst of all this trouble, we’re looking for one great developer that can join our team at Typemock. First, you have to live in Israel.   **How to submit your CV** If you’re an Agile developer with lots of .NET Experience, you’re welcome to send your CV to **royo @Typemock.com**(remove the extra space in the middle) with the subject “Agile developer”. (If you don’t know what an Agile developer means, it’s a sign you should not submit). C++ knowledge is a very big plus. **\*What\* you can expect to be working on** (experience in these specific fields is a plus, but not needed): - Deep .NET Reflection stuff - CLR Profiler APIs (some C++ may be required) - Visual Studio 10 Plugins and Extensibility - Working on an [open source AOP Framework](http://www.codeplex.com/CThru) and it’s subsidiaries - Create great APIs and frameworks for unit testing - many many other things (which I can’t divulge right now) **\*How\* you can expect to be working:** - 1-2 week Iterations (we use ScrumP : XP and Scrum) - Working with lots of whiteboards - two screens for each developer - Pair programming about half of the time - Lots of heated discussions about technology and design - playing lots of foosball - working side by side with [unconventional devices](http://www.woodwardweb.com/gadgets/000434.html) - Having an automated build and continuous Integration process - Lots of Test Driven Development (test first!) - A small company with great people - Working with [task cards board](http://www.infoq.com/articles/agile-kanban-boards) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 25, 2009 ### [Introducing SilverUnit](https://osherove.com/blog/2009/2/25/introducing-silverunit.html) - Feb 22, 2009 ### [How we do TDD – Talk today](https://osherove.com/blog/2009/2/22/how-we-do-tdd-talk-today.html) - Jan 13, 2009 ### [Unit Testing in VB.NET – with Typemock Isolator (with a free license offer)](https://osherove.com/blog/2009/1/13/unit-testing-in-vbnet-with-typemock-isolator-with-a-free-lic.html) - Dec 14, 2008 ### [TDD Case Studies and research](https://osherove.com/blog/2008/12/14/tdd-case-studies-and-research.html) --- title: "Unit Testing in VB.NET – with Typemock Isolator (with a free license offer)" url: "https://osherove.com/blog/2009/1/13/unit-testing-in-vbnet-with-typemock-isolator-with-a-free-lic.md" canonical: "https://osherove.com/blog/2009/1/13/unit-testing-in-vbnet-with-typemock-isolator-with-a-free-lic.html" published: "2009-01-13T11:24:18" updated: "2009-01-13T11:24:18" tags: ["Agile", "Agile Related", "Unit Testing"] author: "Roy Osherove" description: "A move I’ve been pushing for a while now has finally come through today – Helping to bring unit testing into VB.NET. This is something I strongly believe in: VB has been kind of left behind with the range of latest…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing in VB.NET – with Typemock Isolator (with a free license offer) By Roy Osherove January 13, 2009 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published January 13, 2009; technical details may be outdated. A move I’ve been pushing for a while now has finally come through today – Helping to bring unit testing into VB.NET. This is something I strongly believe in: VB has been kind of left behind with the range of latest alt.net related frameworks – mostly because they are C# specific. That means that some of them if not most, that use mambda expressions or anonymous delegates, are less approachable to the larger VB community (VB is missing some key functionality in that space, but even if it did have that functionality, I think the new API we are bringing is easier to grok). [We're announcing today](http://blog.typemock.com/2009/01/get-free-isolator-licnese-for-helping.html) a new version of Typemock Isolator (5.2). One of the coolest features in the new version is the inclusion of a new [VB .NET unit testing API](http://www.typemock.com/vbpage.php). This 'VB friendly' API was designed and written in VB.NET, for VB.NET developers. It uses the strengths of the VB.NET language to allow easy and intuitive use of the isolation API, for easier unit tests on any piece of .NET code. To launch this enhanced VB support we are offering you a **FREE full Typemock Isolator 5.2 personal license** (worth $139 !!!). **How do I get a free license?** Post the text below on your blog (as is, with links) and tell us about it . If you are in the first 25 to mail us after posting, your license will be on its way! If you have a **VB.NET dedicated blog**, you'll get a license automatically (even if more than 25 submit) during the first week of this announcement. A few simple requirements: **(1)** You must own a website, blog space or internet column, older than 2 months, or get permission from the owner of such a site. **(2)** Your post must include the text below (including the links) between **\*Begin\*** and **\*End\***. \_ **\*Begin\*** [Programming Visual Basic](http://www.typemock.com/vbpage.php) applications? Typemock have released a new version of their [unit testing](http://www.typemock.com/) tool, Typemock Isolator 5.2. This version includes a new friendly [VB.NET](http://www.typemock.com/vbpage.php) API which makes Isolator the best Isolation tool for [unit testing A Visual Basic (VB) .NET application](http://www.typemock.com/vbpage.php). Isolator now allows unit testing in VB or C# for many ‘hard to test’ technologies such as [SharePoint](http://typemock.com/sharepointpage.php), ASP.NET MVC, partial support for Silverlight, WPF, LINQ, WF, Entity Framework, [WCF unit testing](http://www.typemock.com/wcfpage.php) and more. Note that the first 25 bloggers who blog this text in their blog and tell us about it, will get a **Free Full Isolator license** (worth $139). If you post this in a **VB.NET dedicated blog**, you'll get a license automatically (even if more than 25 submit) during the first week of this announcement. Go ahead, click the following link for [more information](http://blog.typemock.com/2009/01/get-free-isolator-licnese-for-helping.html) on how to get your free license. \_ **\*End\*** ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 22, 2009 ### [How we do TDD – Talk today](https://osherove.com/blog/2009/2/22/how-we-do-tdd-talk-today.html) - Feb 16, 2009 ### [Looking for an Agile developer, again!](https://osherove.com/blog/2009/2/16/looking-for-an-agile-developer-again.html) - Dec 14, 2008 ### [TDD Case Studies and research](https://osherove.com/blog/2008/12/14/tdd-case-studies-and-research.html) - Dec 3, 2008 ### [lowering the adoption barrier for unit testing: doctest in python](https://osherove.com/blog/2008/12/3/lowering-the-adoption-barrier-for-unit-testing-doctest-in-py.html) --- title: "[Political] The truth about the Palestinian loss of land 1946 to 2000" url: "https://osherove.com/blog/2009/1/5/political-the-truth-about-the-palestinian-loss-of-land-1946.md" canonical: "https://osherove.com/blog/2009/1/5/political-the-truth-about-the-palestinian-loss-of-land-1946.html" published: "2009-01-05T04:12:42" updated: "2009-01-05T04:12:42" tags: [] author: "Roy Osherove" description: "Update 2: Other sources talking about what is wrong with this map: solomonia.com , giyus.org , Jeffrey Goldberg in the Atlantic , Dvar Dea , zionism-israel.com and frontpagemag.com . also here . ( update : I added some…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Political\] The truth about the Palestinian loss of land 1946 to 2000 By Roy Osherove January 5, 2009 **Historical article** · Originally published January 5, 2009; technical details may be outdated. **Update 2:** Other sources talking about what is wrong with this map: [solomonia.com](http://www.solomonia.com/blog/archive/2009/12/protestant-missionaries-the-palestinians/), [giyus.org](http://www.giyus.org/2008/03/the-most-popula.html), Jeffrey Goldberg in [the Atlantic](http://www.theatlantic.com/international/archive/2010/03/andrew-sullivan-revises-history-again/37401/), [Dvar Dea](http://dvardea.blogspot.com/2010/03/palestinian-propaganda-when-honesty.html), [zionism-israel.com](http://zionism-israel.com/ezine/Paletstinian_Land_Loss.htm) and [frontpagemag.com](http://frontpagemag.com/2011/03/23/juan-cole%E2%80%99s-map-of-lies/). [also here](http://www.catholicsforisrael.com/en/articles/israel-today/188-israel-palestine-when-the-map-lies). (**update**: I added some updates about more reasons for the settlements as well as more about the size of israel, and a note about the british rule (with some images)) Apologies to the regular readers of this blog. This is a political post, which I don’t usually do. I live in Israel. I love the fact that technology brings people together, and I have several online friends from countries considered enemies of or hostile to israel (syria, iran, lebanon). With the recent conflicts between Israel and Palestinians in Gaza, You’ve  probably seen this map being thrown around in various forums. ![image](https://osherove.com/img/wb/5b65bc62_weblogs.asp.net_blogs_rosherove_image_thumb_yT35eg.png) It depicts what seems to be a loss of land that was previously Palestinian. It looks pretty horrible without context, I know.As an israeli and as someone who really dislikes dis-information, I though I’d give my point of view, based on what the real facts . I’m writing this so that I can point my friends and those who ask to a place where there is more context and info about this map, and why, even though it may be georgraphically correct, it is a distortion of reality to take it out of context. **A good source of history information about the conflict** a site doesn’t take sides, that has a more or less accurate information [about the dispute can be found here](http://www.mideastweb.org/briefhistory.htm). OK, let’s talk about the maps from left to right (chronological order): **Map 1: 1946** ![WindowClipping (6)](https://osherove.com/img/wb/b535ec4b_weblogs.asp.net_blogs_rosherove_WindowClipping_20_6__thumb_V86nSg.png) The map is NOT graphically correct. Several things are not accurate. First – the **british** had ruled israel. this was not arab land or jewish land. jews and arabs were living in british occupation. Another thing that needs to be said is that the bottom half of the map was unpopulated – it is a desert part in israel, and even today, it has less than 10% of the population living there because of the conditions. so it should not be green or white.  it was largely empty. The arab population in israel was larger than the jewish population, and they were both growing at a large rate.There was a large influx of jews coming in(most of whom were fleeing the increasing persecution in Europe). [There was lots](http://en.wikipedia.org/wiki/1948_Arab-Israeli_War#Background) of [killing](http://en.wikipedia.org/wiki/Riots_in_Palestine_of_1920) [and](http://en.wikipedia.org/wiki/Jaffa_riots) [massacres](http://en.wikipedia.org/wiki/1929_Palestine_riots) against the jews until the UN decided to partition the land (as seen on map 2). **Map 2:** ![WindowClipping (7)](https://osherove.com/img/wb/d9f35ba6_weblogs.asp.net_blogs_rosherove_WindowClipping_20_7__thumb_yiU8Vw.png) The UN decided what the division would be(israel got most of the uninhebited, desert part). arabs got the right part, and lots of the top and parts of the left. For context – the right side of the map borders with Jordan, which means the UN declared the green right part to actually be jordanian terrotory. the top part id bordering with syria and lebanon. the bottom part borders with egypt. **map 3:** ![WindowClipping (8)](https://osherove.com/img/wb/7edf2892_weblogs.asp.net_blogs_rosherove_WindowClipping_20_8__thumb_S9jeFQ.png) The important thing to remember here is that the arabs **did not** accept the UN decision [and instead began to wage war against the israelis](http://en.wikipedia.org/wiki/1948_Arab-Israeli_War) (who wanted to accept it). During this war the israelies had won, and had pushed the arabs back into what is now seen in map 3 (second from the right). Remember, this was **war** and the green zones were attaching the white ones. so green was smaller at the end of the war. in essence, map 2 never came into existence. except in the minds of the UN. that’s how it roughly stayed until 67. **map 4:** ![WindowClipping (9)](https://osherove.com/img/wb/72a0f8d5_weblogs.asp.net_blogs_rosherove_WindowClipping_20_9__thumb_Wb4Gpw.png) so how did we get from map 3 to map 4? in 67, Egypt decided to declare war on Israel (the bottom gray in the map is the start of egypt. They essentially closed all the bottom part of israel and parts which are not seen on this map. Jordan and Syria (to the right and to the top of israel) quickly joined in the war, and israel was now attacked from 3 sides. yes. that includes in inner green part that was actually attacking israel from almost within it. Israel gained victory in that war, pushing back jordan, syria and egypt into what will now look closer to map no. 4 (most right). **the settlement problem** After Israel had won, it could have chosen to do many things – for example negotiate with jordan and leave the places won over to something like the 67’ border.  But it chose, for mostly security, ideological and religious reasons, to stay in those territories and start building settlements there. it built roads that divided the occupied land and basically did lots of things which today there is nothing really good to say about them (and is slowly trying to turn back the wheel on some of them). Still, the security aspect is the one that is the most relevant today. It keeps the other side farther away. if they were closer, their missiles could have easily hit 60% of israel, instead of 30% right now. **A hole we can’t get out of** a lot of what people have a problem with today is the fact that israel as a country supported and still supports parts of the settlements, which are not legal by international law. the reasons, again, are security,ideological and religion (promised land etc..). there is a great divide among the israeli people whether this should continue or not but the situation has now become too problematic to easily solve. Many also believe that the settlements are a security measure that helps to keep the missile attacks farther away from the cities. for example, Israel had actually gotten fully out of part of the territories (gaza for example), but got back missilies and rockets (which is why we see the Israel coming back in – to stop this). there were many negotiations and many agreements that were broken or followed by both on a single side of the conflict, and many believe that there is no one to talk to on the other side. many in israel believe that two states are the end result any way, (something like the 67 borders) but want to make sure that the other state will not try to destroy israel (as it had promised to do, with the backing of iran and syria) many times. a state next to you has to recognize that you have a right to exist, and not try to burn you. **Why we are in gaza now** Israel is in gaza now for the simple reason of stopping the rockets and achieving a ceasefire that will last for a long time. it has started with a 6 month quiet period in which over 400 rockets were fired on israel from gaza with no retaliation. there is no denying that the human situation in gaza sucks. Israel tries to aid in allowing food shipments, money and international aid through passages, but at the end of the day, right now, it is trying to defend itself. nothing more, and nothing less. with force, yes. because nothing else before that has worked. **The size of israel** Israel [is Tiny](http://www.iris.org.il/sizemaps/arabwrld.htm). Seriously. Much smaller than [California](http://www.iris.org.il/sizemaps/calif.htm), [Norway](http://www.iris.org.il/sizemaps/norway.htm) or [Argentina](http://www.iris.org.il/sizemaps/argenti.htm) (see more [places to compare](http://www.iris.org.il/sizemaps.htm)). I can take my car and drive from north to south in about 6-8 hours of non stop driving. Compare [israel to the size of its surrounding countries](http://www.iris.org.il/sizemaps/arabwrld.htm) and you begin to see what “small and surrounded with enemies” feels like. Jews have literally nowhere else to go. Arabs have [lots and lots](http://www.washingtonpac.com/arabworld.htm). yet they insist that Israel be destroyed.  And Israel still has to defend itself from many threats all around. and now, also from within. ![](https://osherove.com/img/ext/www.iris.org.il_images_arabwld3.gif)![](https://osherove.com/img/ext/www.iris.org.il_images_usa.gif)![](https://osherove.com/img/ext/www.iris.org.il_images_france.gif) There is a lot of mis and dis information running around the web right now. I hope that the facts can help sort things out. I hope that I had done justice to the facts. Before writing this, I did some fact checking with a well known middle-east researcher before publishing this, and will update this post on problems or important comments. --- title: "The morning brew" url: "https://osherove.com/blog/2008/12/31/the-morning-brew.md" canonical: "https://osherove.com/blog/2008/12/31/the-morning-brew.html" published: "2008-12-31T13:45:48" updated: "2008-12-31T13:45:48" tags: [".NET"] author: "Roy Osherove" description: "FYI, the morning brew is one of the link blogs that I read on a daily basis too. Thanks for the work! I find that it is a good place to find out what’s going on in the .NET and ALT.NET scene these days." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The morning brew By Roy Osherove December 31, 2008 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published December 31, 2008; technical details may be outdated. FYI, [the morning brew](http://feeds.feedburner.com/~r/ReflectivePerspective/~3/499501573/) is one of the link blogs that I read on a daily basis too. Thanks for the work! I find that it is a good place to find out what’s going on in the .NET and ALT.NET scene these days. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Mar 1, 2009 ### [Method\_Missing: Cool Uses](https://osherove.com/blog/2009/3/1/method_missing-cool-uses.html) - Feb 25, 2009 ### [Adding Method-Missing support to VB.NET using CTru and Typemock Open-AOP](https://osherove.com/blog/2009/2/25/adding-method-missing-support-to-vbnet-using-ctru-and-typemo.html) - Dec 3, 2008 ### [Isolation frameworks – lessons from the wild](https://osherove.com/blog/2008/12/3/isolation-frameworks-lessons-from-the-wild.html) - Nov 26, 2008 ### [Isolation Syntax for VB.NET - Your comments please](https://osherove.com/blog/2008/11/26/isolation-syntax-for-vbnet-your-comments-please.html) --- title: "Unit Testing in silverlight land with Typemock Isolator" url: "https://osherove.com/blog/2008/12/27/unit-testing-in-silverlight-land-with-typemock-isolator.md" canonical: "https://osherove.com/blog/2008/12/27/unit-testing-in-silverlight-land-with-typemock-isolator.html" published: "2008-12-27T14:54:07" updated: "2008-12-27T14:54:07" tags: ["Art Of Unit Testing", "Silverlight", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "I’ve been asked quite a lot recently whether one can write unit tests and isolate logical code that runs inside a silverlight application. Up until today my initial answer was ‘no’ because silverlight runs under…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing in silverlight land with Typemock Isolator By Roy Osherove December 27, 2008 In [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Silverlight](https://osherove.com/blog/category/silverlight), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published December 27, 2008; technical details may be outdated. I’ve been asked quite a lot recently whether one can write unit tests and isolate logical code that runs inside a silverlight application. Up until today my initial answer was  ‘no’ because silverlight runs under different versions of mscorlib.dll. however. Today I actually gave it a try and realized that writing unit tests (not [integration tests, as the silverlight test framework](http://www.jeff.wilcox.name/2008/03/silverlight2-unit-testing/) allows) against silverlight based code is possible and quite easy. Just like any other code that relies on a third party platform (like sharepoint code) the silverlight related code might have various dependencies. I’m going to show how to use [Typemock Isolator](http://www.typemock.com/) to overcome a couple of simple silverlight dependencies (using HtmlPage) and how to setup a test project against a silverlight project (with NUnit or MsTest) **Assumptions:** 1. You have an open solution 2. the solution contains a silverlight class library or silverlight application project **To setup a test project against silverlight using MSTest:** 1. Add a new test project to the solution 2. Remove all the existing classes (Database test, ordered test etc..) so that you are only left with the unit test class (UnitTest1). 3. Remove all useless comments and crud code from the test class so that you are only left with a test method (no comments, not even the TestContext) 4. Add a reference to the silverlight versions of “System.dll”, “System.Windows.dll” to the test project. (usually located under “C:\\Program Files\\Microsoft SDKs\\Silverlight\\v2.0\\Reference Assemblies\\” (remove existing reference to system.dll if you need to first) 5. Add a reference to the project under test 6. You can now write tests against the object model (standard classes) **To setup a test project against silverlight using NUnit or MbUnit:** 1. Add a new class library to the solution as your test project 2. Add a reference to the silverlight versions of “System.dll”, “System.Windows.dll” to the test project. (usually located under “C:\\Program Files\\Microsoft SDKs\\Silverlight\\v2.0\\Reference Assemblies\\” (remove existing reference to system.dll if you need to first) 3. Add a reference to the project under test 4. You can now write tests against the object model (standard classes) **How to break the dependencies** Now, here is a simple example of code that has a silverlight dependency we’d like to test: Let’s say we have a class in the silverlight project called ChatSession (I’m basing this on ScottGu’s Chat demo). but it’s constructor looks like this: ![WindowClipping](https://osherove.com/img/wb/a1766881_weblogs.asp.net_blogs_rosherove_WindowClipping_thumb_qfKb_Q.png) What if we wanted to control during our test whether the page is enabled or disabled? Here’s one way to do it using Isolator: 1. In your test project add two references under the .NET tab: “Typemock Isolator” and “Typemock ArrangeActAssert” 2. Write the following test: ![WindowClipping (2)](https://osherove.com/img/wb/03cf399c_weblogs.asp.net_blogs_rosherove_WindowClipping_20_2__thumb_4mlE_A.png) Using Isolate.WhenCalled() we are able to circumvent any method (static or not) to return whatever we want, or throw an exception. Here’s a more interesting case. Let’s say we have a method that modifies the current page and shows some html to the user in a span tag: ![WindowClipping (3)](https://osherove.com/img/wb/fa3e7bd7_weblogs.asp.net_blogs_rosherove_WindowClipping_20_3__thumb_Bf9WqQ.png) here is one way to write a test that makes sure that the right text is set into the message element in the page, without needing to have a real page present: ![WindowClipping (4)](https://osherove.com/img/wb/670dfa24_weblogs.asp.net_blogs_rosherove_WindowClipping_20_4__thumb_elBN9g.png) There are several things to note here: 1. HtmlElement is **Sealed** has an **internal constructor**, but we can still create a fake instance of it using Isolator. None of the other frameworks can do this. 2. We are returning a fake object from a **method call chain** (HtmlPage.Document.GetElementById ) without needing to create a separate stub for **document**. None of the other frameworks can do this (especially since it is based on a **static** method call to begin with) 3. We assert in the end that the method was indeed called with the correct arguments without needing to change a single piece of code. Granted, I wouldn’t write code like this (I like decoupling!) but sometimes you just don’t have the ability to change existing code. If you are developing an open source silverlight project, it is important to note that there is a free full version of isolator for open source projects with full functionality. These are just the beginning of my journey into silverlight unit testing. I’m looking for good code examples that you might want to test, with various dependencies that need breaking. your comments are appreciated. ## More in Art Of Unit Testing [All posts in Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) - Mar 17, 2009 ### [API design values and decision matrix](https://osherove.com/blog/2009/3/17/api-design-values-and-decision-matrix.html) - Mar 16, 2009 ### [Art of unit Testing goes to print in April](https://osherove.com/blog/2009/3/16/art-of-unit-testing-goes-to-print-in-april.html) - Nov 2, 2008 ### [Isolator Feature Focus: Duck Typing and Isolate.Swap](https://osherove.com/blog/2008/11/2/isolator-feature-focus-duck-typing-and-isolateswap.html) - Oct 11, 2008 ### [Art Of Unit Testing – Book done, Wiki ready](https://osherove.com/blog/2008/10/11/art-of-unit-testing-book-done-wiki-ready.html) --- title: "TDD Case Studies and research" url: "https://osherove.com/blog/2008/12/14/tdd-case-studies-and-research.md" canonical: "https://osherove.com/blog/2008/12/14/tdd-case-studies-and-research.html" published: "2008-12-14T13:02:50" updated: "2008-12-14T13:02:50" tags: ["Agile"] author: "Roy Osherove" description: "I’ve always been looking for real research numbers on the effectiveness of TDD. For future reference, there are several listed here: http://biblio.gdinwiddie.com/biblio/StudiesOfTestDrivenDevelopment" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Case Studies and research By Roy Osherove December 14, 2008 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published December 14, 2008; technical details may be outdated. I’ve always been looking for real research numbers on the effectiveness of TDD. For future reference, there are several listed here: [http://biblio.gdinwiddie.com/biblio/StudiesOfTestDrivenDevelopment](http://biblio.gdinwiddie.com/biblio/StudiesOfTestDrivenDevelopment) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 16, 2009 ### [Looking for an Agile developer, again!](https://osherove.com/blog/2009/2/16/looking-for-an-agile-developer-again.html) - Jan 13, 2009 ### [Unit Testing in VB.NET – with Typemock Isolator (with a free license offer)](https://osherove.com/blog/2009/1/13/unit-testing-in-vbnet-with-typemock-isolator-with-a-free-lic.html) - Dec 3, 2008 ### [lowering the adoption barrier for unit testing: doctest in python](https://osherove.com/blog/2008/12/3/lowering-the-adoption-barrier-for-unit-testing-doctest-in-py.html) - Dec 3, 2008 ### [Isolation frameworks – lessons from the wild](https://osherove.com/blog/2008/12/3/isolation-frameworks-lessons-from-the-wild.html) --- title: "lowering the adoption barrier for unit testing: doctest in python" url: "https://osherove.com/blog/2008/12/3/lowering-the-adoption-barrier-for-unit-testing-doctest-in-py.md" canonical: "https://osherove.com/blog/2008/12/3/lowering-the-adoption-barrier-for-unit-testing-doctest-in-py.html" published: "2008-12-03T15:18:03" updated: "2008-12-03T15:18:03" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "One area that I didn’t know about was brought to me by an attendee in one of the conferences I was in. It’s a simple idea, really: write the tests for a method as part of the method’s documentation. but make them…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # lowering the adoption barrier for unit testing: doctest in python By Roy Osherove December 3, 2008 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published December 3, 2008; technical details may be outdated. One area that I didn’t know about was brought to me by an attendee in one of the conferences I was in. It’s a simple idea, really: write the tests for a method as part of the method’s documentation. but make them executable. In python, they have something called [doctest](http://www.python.org/doc/2.5.2/lib/module-doctest.html) (thanks to Alf Lervåg for the emails!) [here’s a PDF](https://svn.python.org/www/branches/rest2web/pydotorg/pycon/dc2004/papers/4/PyCon2004DocTestUnit.pdf) with more in. With the upcoming WPF editor in VS 2010, we could find a good use for such a thing. I think it might ease adoption of unit testing becuase it’s much easier to accomplish if you can write the test right there where the method you’re writing is. The cons are lack of intellisense, compilation errors and such, but it’s something to look at, indeed. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jan 13, 2009 ### [Unit Testing in VB.NET – with Typemock Isolator (with a free license offer)](https://osherove.com/blog/2009/1/13/unit-testing-in-vbnet-with-typemock-isolator-with-a-free-lic.html) - Dec 14, 2008 ### [TDD Case Studies and research](https://osherove.com/blog/2008/12/14/tdd-case-studies-and-research.html) - Dec 3, 2008 ### [Isolation frameworks – lessons from the wild](https://osherove.com/blog/2008/12/3/isolation-frameworks-lessons-from-the-wild.html) - Nov 26, 2008 ### [Isolation Syntax for VB.NET - Your comments please](https://osherove.com/blog/2008/11/26/isolation-syntax-for-vbnet-your-comments-please.html) --- title: "Isolation frameworks – lessons from the wild" url: "https://osherove.com/blog/2008/12/3/isolation-frameworks-lessons-from-the-wild.md" canonical: "https://osherove.com/blog/2008/12/3/isolation-frameworks-lessons-from-the-wild.html" published: "2008-12-03T13:20:04" updated: "2008-12-03T13:20:04" tags: [".NET", "Agile", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "I’m in the process of teaching another TDD master class in Oslo this week, and in the past two days we went over the major Isolation frameworks in .NET (I refuse to say Mocking frameworks anymore. the “Mock” work is too…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Isolation frameworks – lessons from the wild By Roy Osherove December 3, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published December 3, 2008; technical details may be outdated. I’m in the process of teaching another [TDD master class in Oslo](http://www.programutvikling.no/kurskalenderoversikt.aspx?id=218164) this week, and in the past two days we went over the major Isolation frameworks in .NET (I refuse to say Mocking frameworks anymore. the “Mock” work is too overloaded as it is). We covered NMock, Rhino Mocks, Moq and Typemock , and alos as a start we used hand written mocks and stubs, and NUnit.Mocks for entry level learning. Several things can be gleaned from how students reacted to using these frameworks (in random order of thought) - The verification error messages that all three big frameworks (rhino, typemock and mock) throw could be much clearer (expected X but only got Y) - The AAA (Arrange act assert) model for isolaation framework, whilke much shorter, is still not as easy to grasp as you might think for newcomers. In fact, I’m not sure people found it easier than record-replay. - One of the hardest points was remebering the APIs in rhino and Moq, becuase there is more than one entry point to using the API (Constraints alone in rhino have 4 different “root” classes) - The word “Expect” confuses because it makes you think about “expectations” as in interaction testing, when in fact it can be used for stubbing out things. - Once people realized that “Strict” mocks are causing lots of problems, it was one of the first questions they had about any new framework they learned. NMock2 doesn’t have a way to turn off Strict mocks. weird. - Verification Exceptions can be too easily “swallowed” by inner code so the test seems to pass (false positive). i think Isolator is the only one that will re throw swallowed exceptions). - in AAA, People kept doing Expectations or Stubs method return values when what they meant was they want to veify the method was called - Given an interface IFoo with a boolean property,if people want to make the property return a false value they instinctively write “myFake.Foo=false”. All frameworks should support default “property like behavior” to make this possible. Rhino mocks has this ability. - 2 VB.NET students in the class kept hitting walls with everything that had lambdas in it,(Vb.NET has partial support for anonymous delegates) which means right now VB.NET has to use record-replay. - The fact that Moq needs lambda expression trees and not regular lambdas prevents resharper from generating code signatures using smart intellisense. Moq is not resharper-friendly.. - the Moq syntax for constraints is just too complicated (It.IsAny is OK, but It.Is(s=>s.contains”a”) is just too much code noise and complexity - The rhino AAA way of constraints is also hard to remember, but a bit more friendly (but not by much) : Arg.Matches(Text.Contains(“A”) - Mixing inheritance and frameworks fake objects in the same test is very confusing for beginners.Either use an isolation framework or override virtual methods, but not both. - TestDriven.NET wins hands down against resharper unit test runner - People love RowTest (which seems to have been gone with the new version nunit 2.5 and replaced with \[TestCase(values…)\] ) - the book “Test Driven Development with MS.NET” is hideously outdated by now (given out to students) - People want the ability to define a call-by-call behavior of a stub return value. Feels very much like over-specification - With hand written stubs newcomers will easily make the mistake of adding real functionality into the hand written class instead of into the production code. - Test names **really help** to find misunderstood requirements - 3 frameworks in 1 day could prove to be too much information. 2 could be just enough. - When doing TDD people will actually **forget** that they can debug the test to see why it’s not behaving like it should - People really likes the fluent API design of NMock2, but disliked its strictness - If you use moth Moq and rhino in the same test class, you will see all the extension methods mixed up when you open intellisense on any object. \*shiver\* - Isolator was the only one where people didn’t ask me a single question about what API to use. they did put calls in the wrong place in the test though (AAA is hard to get used to) - AssertWasNotCalled feels like over-specification. - lambdas were easier to get used to than I expected. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Feb 25, 2009 ### [Adding Method-Missing support to VB.NET using CTru and Typemock Open-AOP](https://osherove.com/blog/2009/2/25/adding-method-missing-support-to-vbnet-using-ctru-and-typemo.html) - Dec 31, 2008 ### [The morning brew](https://osherove.com/blog/2008/12/31/the-morning-brew.html) - Nov 26, 2008 ### [Isolation Syntax for VB.NET - Your comments please](https://osherove.com/blog/2008/11/26/isolation-syntax-for-vbnet-your-comments-please.html) - Nov 24, 2008 ### [Announcing Isolator for Sharepoint with a free full license for bloggers](https://osherove.com/blog/2008/11/24/announcing-isolator-for-sharepoint-with-a-free-full-license.html) --- title: "Isolation Syntax for VB.NET - Your comments please" url: "https://osherove.com/blog/2008/11/26/isolation-syntax-for-vbnet-your-comments-please.md" canonical: "https://osherove.com/blog/2008/11/26/isolation-syntax-for-vbnet-your-comments-please.html" published: "2008-11-26T03:15:14" updated: "2008-11-26T03:15:14" tags: [".NET", "Agile", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "I'm working on adding a VB.NET Friendly syntax for Typemock Isolator. If you're into VB, I'd love your input on the usability of this API and how to make it better. We'll start going through several basic scenarios that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Isolation Syntax for VB.NET - Your comments please By Roy Osherove November 26, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published November 26, 2008; technical details may be outdated. **I'm working on adding a VB.NET Friendly syntax for Typemock Isolator. If you're into VB, I'd love your input on the usability of this API and how to make it better.** We'll start going through several basic scenarios that you can do using Typemock Isolator, and show them in VB proposed syntax: - Faking instances of classes or interfaces - Setting Stub return values or errors on methods - Verifying the methods were called - Swapping calls between two types - Swapping future instances - Faking Non Public Members **Faking instances of classes or interfaces** the method Fake() is part of a Module called "Test" so it can be used from the tests easily. You could also write Test.Fake(..) if you wanted. ![image](https://osherove.com/img/wb/afb3fe4b_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_70cfa7951aa0_A7DA_image_thumb.png) **Setting Stub return values or errors on methods** here are three examples of returning a fake result from a method or a bunch of methods (below). ThisCall(s) is located on the Module Test so you can also write Using Test.ThisCall.WillThrow(...) if you wanted to. ![image](https://osherove.com/img/wb/82f962b2_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_70cfa7951aa0_A7DA_image_thumb_1.png) **Verifying that methods were called** This would go at the end of an interaction test ![image](https://osherove.com/img/wb/8bc4aace_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_70cfa7951aa0_A7DA_image_thumb_2.png) **Here's an example of a full Arrange-Act-Assert in a test using VB and fakes:** ![image](https://osherove.com/img/wb/e9ceae9f_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_70cfa7951aa0_A7DA_image_thumb_3.png) **One possible thing I am considering is adding Arrange-Act-Assert "Regions" to the test by taking advantage of the "Using" feature:** ![image](https://osherove.com/img/wb/bba5b7d4_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_70cfa7951aa0_A7DA_image_thumb_4.png) Question #1: What do think about the custom Arrange-act-assert regions? (they are option to use anyway) **Swapping calls between two types** This is the "duck typing" feature we introduced in Isolator: allowing you to make calls on one object be invoked on another, without them sharing the same interface, as long as the method names match. ![image](https://osherove.com/img/wb/4b5730c1_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_70cfa7951aa0_A7DA_image_thumb_5.png) **Swapping future instances** Isolator supports faking the **next** creation of an object type, and replace that with the fake we create: ![image](https://osherove.com/img/wb/4d02ac35_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_70cfa7951aa0_A7DA_image_thumb_6.png) **Faking Non Public Members** ![image](https://osherove.com/img/wb/fa724d9b_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_70cfa7951aa0_A7DA_image_thumb_7.png) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Dec 31, 2008 ### [The morning brew](https://osherove.com/blog/2008/12/31/the-morning-brew.html) - Dec 3, 2008 ### [Isolation frameworks – lessons from the wild](https://osherove.com/blog/2008/12/3/isolation-frameworks-lessons-from-the-wild.html) - Nov 24, 2008 ### [Announcing Isolator for Sharepoint with a free full license for bloggers](https://osherove.com/blog/2008/11/24/announcing-isolator-for-sharepoint-with-a-free-full-license.html) - Nov 2, 2008 ### [Isolator Feature Focus: Faking Collections](https://osherove.com/blog/2008/11/2/isolator-feature-focus-faking-collections.html) --- title: "Announcing Isolator for Sharepoint with a free full license for bloggers" url: "https://osherove.com/blog/2008/11/24/announcing-isolator-for-sharepoint-with-a-free-full-license.md" canonical: "https://osherove.com/blog/2008/11/24/announcing-isolator-for-sharepoint-with-a-free-full-license.html" published: "2008-11-24T12:49:00" updated: "2008-11-24T12:49:00" tags: [".NET", "Agile", "Typemock"] author: "Roy Osherove" description: "Time for a freebie! We’re announcing today about a new product: Isolator for sharepoint – which allows unit testing sharepoint code without needing sharepoint installed. A good article on this can be found here “Huh?”…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Announcing Isolator for Sharepoint with a free full license for bloggers By Roy Osherove November 24, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Typemock](https://osherove.com/blog/category/typemock) **Historical article** · Originally published November 24, 2008; technical details may be outdated. Time for a freebie! We’re announcing today about a new product: [Isolator for sharepoint](http://www.typemock.com/sharepointpage.php) – which allows unit testing sharepoint code without needing sharepoint installed. A good article on this can be found [here](http://www.21apps.com/sharepoint/agile/unit-testing-sharepoint-getting-into-the-object-model) “Huh?” It is almost the same as Typemock Isolator, **but will only work on APIs that are directly connected with sharepoint’s API**. [All the other features](http://weblogs.asp.net/rosherove/archive/tags/FeatureFocus/default.aspx) are the same. That means that if you only need to test sharepoint stuff, you can get a powerful product, for a much cheaper price than the full Isolator (you can always upgrade later if you need to isolate more APIs). How cheap? Isolator for sharepoint is only 99$ during this offer . With this release, we want to gather the power of crowds, by offering you an incentive for blogging about this news: Get A free Typemock Isolator license (the full one) just because you have a blog. [Here are the full rules](http://blog.typemock.com/2008/11/newisolatorforsharepointtoolforunittest.html) on how to get a free License for Typemock Isolator (full). Basically, you just write the following text on your blog (with the links) and tell us about :  **** Typemock are offering their new product for [unit testing SharePoint](http://www.typemock.com/sharepointpage.php) called Isolator For SharePoint, for a special introduction price. it is the only tool that allows you to [unit test SharePoint](http://blog.typemock.com/2008/11/newisolatorforsharepointtoolforunittest.html) without a SharePoint server. To learn more [click here](http://www.typemock.com/sharepointpage.php). **The first 50 bloggers** who blog this text in their blog and tell us about it, will get a Full Isolator license, Free. for rules and info [click here](http://blog.typemock.com/2008/11/newisolatorforsharepointtoolforunittest.html). **** [Here are the full rules](http://blog.typemock.com/2008/11/newisolatorforsharepointtoolforunittest.html) on how to get a free License ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Dec 3, 2008 ### [Isolation frameworks – lessons from the wild](https://osherove.com/blog/2008/12/3/isolation-frameworks-lessons-from-the-wild.html) - Nov 26, 2008 ### [Isolation Syntax for VB.NET - Your comments please](https://osherove.com/blog/2008/11/26/isolation-syntax-for-vbnet-your-comments-please.html) - Nov 2, 2008 ### [Isolator Feature Focus: Faking Collections](https://osherove.com/blog/2008/11/2/isolator-feature-focus-faking-collections.html) - Nov 2, 2008 ### [Isolator Feature Focus: Duck Typing and Isolate.Swap](https://osherove.com/blog/2008/11/2/isolator-feature-focus-duck-typing-and-isolateswap.html) --- title: "Typemock is looking for agile developers" url: "https://osherove.com/blog/2008/11/23/typemock-is-looking-for-agile-developers.md" canonical: "https://osherove.com/blog/2008/11/23/typemock-is-looking-for-agile-developers.html" published: "2008-11-23T02:38:00" updated: "2008-11-23T02:38:00" tags: ["Typemock"] author: "Roy Osherove" description: "It's that time again. We're Hiring. Typemock Is looking for a developer with good .NET skills, and a passion for agile development. You don't have to know TDD, but it's a plus. Knowing some C++ is a must, but most of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Typemock is looking for agile developers By Roy Osherove November 23, 2008 In [Typemock](https://osherove.com/blog/category/typemock) **Historical article** · Originally published November 23, 2008; technical details may be outdated. It's that time again. We're Hiring. [Typemock](http://www.typemock.com/) Is looking for a developer with good .NET skills, and a passion for agile development. You don't have to know TDD, but it's a plus. Knowing some C++ is a must, but most of the work is in managed code, building the next generation of unit test frameworks. Like Threading? Like API design? send me an email to **roy at osherove.com** with your CV.  2 years experience at least, please. and be prepared for an interview that includes you programming a little bit.. Oh, you have to be located in Israel. ## More in Typemock [All posts in Typemock](https://osherove.com/blog/category/typemock) - Nov 26, 2008 ### [Isolation Syntax for VB.NET - Your comments please](https://osherove.com/blog/2008/11/26/isolation-syntax-for-vbnet-your-comments-please.html) - Nov 24, 2008 ### [Announcing Isolator for Sharepoint with a free full license for bloggers](https://osherove.com/blog/2008/11/24/announcing-isolator-for-sharepoint-with-a-free-full-license.html) - Nov 2, 2008 ### [Isolator Feature Focus: Faking Collections](https://osherove.com/blog/2008/11/2/isolator-feature-focus-faking-collections.html) - Nov 2, 2008 ### [Isolator Feature Focus: Duck Typing and Isolate.Swap](https://osherove.com/blog/2008/11/2/isolator-feature-focus-duck-typing-and-isolateswap.html) --- title: "Cute picture of my son" url: "https://osherove.com/blog/2008/11/2/cute-picture-of-my-son.md" canonical: "https://osherove.com/blog/2008/11/2/cute-picture-of-my-son.html" published: "2008-11-02T12:57:44" updated: "2008-11-02T12:57:44" tags: ["Off Topic"] author: "Roy Osherove" description: "My son, Itamar, playing invisible Tennis" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cute picture of my son By Roy Osherove November 2, 2008 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 2, 2008; technical details may be outdated. My son, Itamar,  playing invisible Tennis ![WindowClipping (30)](https://osherove.com/img/wb/1065db5e_weblogs.asp.net_blogs_rosherove_WindowClipping_20_30__thumb_RNTGcg.jpg) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 2, 2010 ### [Converting MOD files to quicktime or mpeg for adobe premiere pro](https://osherove.com/blog/2010/6/2/converting-mod-files-to-quicktime-or-mpeg-for-adobe-premiere.html) - Apr 16, 2010 ### [Funny Volcanic Ash Tweets](https://osherove.com/blog/2010/4/16/funny-volcanic-ash-tweets.html) - Jul 29, 2008 ### [My Son - Itamar the Snake Tamer](https://osherove.com/blog/2008/7/29/my-son-itamar-the-snake-tamer.html) - Jul 20, 2008 ### [Get me an Unlocked IPhone 3G from Italy or Hong Kong](https://osherove.com/blog/2008/7/20/get-me-an-unlocked-iphone-3g-from-italy-or-hong-kong.html) --- title: "Isolator Feature Focus: Faking Collections" url: "https://osherove.com/blog/2008/11/2/isolator-feature-focus-faking-collections.md" canonical: "https://osherove.com/blog/2008/11/2/isolator-feature-focus-faking-collections.html" published: "2008-11-02T05:57:32" updated: "2008-11-02T05:57:32" tags: [".NET", "Agile", "FeatureFocus", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "Another cool feature in Isolator is the ability to fake values that will be returned from custom collections (anything that inherits from IEnumerable as long as it is not in mscorlib - for example - sharepoint lists).…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Isolator Feature Focus: Faking Collections By Roy Osherove November 2, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [FeatureFocus](https://osherove.com/blog/category/featurefocus), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published November 2, 2008; technical details may be outdated. Another cool feature [in Isolator](http://www.typemock.com/commdl.php) is the ability to fake values that will be returned from custom collections (anything that inherits from IEnumerable as long as it is not in mscorlib - for example - sharepoint lists). With the new version you can now do the following with collections: **1) Return a fake value from a specific collection item (even if the collection has not been faked yet)** ![image](https://osherove.com/img/wb/asp.net_blogs_rosherove_WindowsLiveWriter_IsolatorFeatureFocusFakingCollections_D425_image_thumb.png) **2) Return a list of fake values when someone uses the collection** ![image](https://osherove.com/img/wb/p.net_blogs_rosherove_WindowsLiveWriter_IsolatorFeatureFocusFakingCollections_D425_image_thumb_1.png) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 26, 2008 ### [Isolation Syntax for VB.NET - Your comments please](https://osherove.com/blog/2008/11/26/isolation-syntax-for-vbnet-your-comments-please.html) - Nov 24, 2008 ### [Announcing Isolator for Sharepoint with a free full license for bloggers](https://osherove.com/blog/2008/11/24/announcing-isolator-for-sharepoint-with-a-free-full-license.html) - Nov 2, 2008 ### [Isolator Feature Focus: Duck Typing and Isolate.Swap](https://osherove.com/blog/2008/11/2/isolator-feature-focus-duck-typing-and-isolateswap.html) - Oct 28, 2008 ### [PDC 2008 Videos](https://osherove.com/blog/2008/10/28/pdc-2008-videos.html) --- title: "Isolator Feature Focus: Duck Typing and Isolate.Swap" url: "https://osherove.com/blog/2008/11/2/isolator-feature-focus-duck-typing-and-isolateswap.md" canonical: "https://osherove.com/blog/2008/11/2/isolator-feature-focus-duck-typing-and-isolateswap.html" published: "2008-11-02T05:25:00" updated: "2008-11-02T05:25:00" tags: [".NET", "Agile", "Art Of Unit Testing", "FeatureFocus", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "Typemock Isolator 5.1.1 has been released, and this release brings with it some awesome (seriously) features that are unique fro any other framework I've seen. a good overview of features can be found here . The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Isolator Feature Focus: Duck Typing and Isolate.Swap By Roy Osherove November 2, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [FeatureFocus](https://osherove.com/blog/category/featurefocus), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published November 2, 2008; technical details may be outdated. [Typemock Isolator 5.1.1](http://www.typemock.com/commdl.php) has been released, and this release brings with it some awesome (seriously) features that are unique fro any other framework I've seen. a [good overview of features can be found here](http://blog.typemock.com/2008/10/typemock-isolator-511-is-out.html). **The Isolator Swap feature** allows swapping calls between real and fake objects (kind like redirects) so that any relevant calls made against the real object will be redirected and invoked on the fake object. **Here's how you use it:** ![image](https://osherove.com/img/wb/.net_blogs_rosherove_WindowsLiveWriter_IsolatorFeatureFocusDuckTypingandIs.Swap_CC8A_image_thumb.png) Unlike doing a standard "WhenCalled()" on some object method and telling what its custom behavior will be, "Swapping"  objects redirects **all** relevant calls(I'll explain what "relevant" means in a second) to the fake object which you have created.  **Duck Typing Awesomeness** Another cool thing about it is that "Duck" and "Dog" don't have to have a shared interface or base class. The "Swap" feature will redirect a method call if it exists on the "fake" object, but if it does not, it will invoke the original object. This is one interpretation of what's called "[Duck Typing](http://haacked.com/archive/2007/08/19/why-duck-typing-matters-to-c-developers.aspx)". The "CallsOn" and "WithCallsTo" methods take an object type, so you can send in anything you want.  if a method on the fake object matches the signature and name of a called method on the real object, the fake method will be invoked. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 24, 2008 ### [Announcing Isolator for Sharepoint with a free full license for bloggers](https://osherove.com/blog/2008/11/24/announcing-isolator-for-sharepoint-with-a-free-full-license.html) - Nov 2, 2008 ### [Isolator Feature Focus: Faking Collections](https://osherove.com/blog/2008/11/2/isolator-feature-focus-faking-collections.html) - Oct 28, 2008 ### [PDC 2008 Videos](https://osherove.com/blog/2008/10/28/pdc-2008-videos.html) - Oct 15, 2008 ### [Use Reflection to find Methods that implement explicit interfaces](https://osherove.com/blog/2008/10/15/use-reflection-to-find-methods-that-implement-explicit-inter.html) --- title: "PDC 2008 Videos" url: "https://osherove.com/blog/2008/10/28/pdc-2008-videos.md" canonical: "https://osherove.com/blog/2008/10/28/pdc-2008-videos.html" published: "2008-10-28T16:04:34" updated: "2008-10-28T16:04:34" tags: [".NET", "General Software Devel..."] author: "Roy Osherove" description: "I’m not at PDC, and you may not be either. but the session videos are starting to become available. Go to the channel 9 PDC videos sections and look for sessions with the graphic: Sessions I’ve set myself to watch:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # PDC 2008 Videos By Roy Osherove October 28, 2008 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published October 28, 2008; technical details may be outdated. I’m not at PDC, and you may not be either. but the session videos are starting to become available. Go to the [channel 9 PDC videos sections](http://channel9.msdn.com/tags/PDC2008) and look for sessions with the graphic: ![WindowClipping (29)](https://osherove.com/img/wb/28ad1520_weblogs.asp.net_blogs_rosherove_WindowClipping_20_29__thumb_uEPjWA.jpg) Sessions I’ve set myself to watch: - [ASP.NET 4.0 roadmap](http://channel9.msdn.com/pdc2008/PC20/) - [Under the hood: advances in the .net type system](http://channel9.msdn.com/pdc2008/TL02/) - [VS: Bringing out the best in multicore systems](http://channel9.msdn.com/pdc2008/TL19/) - [The future of C#](http://channel9.msdn.com/pdc2008/TL16/) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 2, 2008 ### [Isolator Feature Focus: Faking Collections](https://osherove.com/blog/2008/11/2/isolator-feature-focus-faking-collections.html) - Nov 2, 2008 ### [Isolator Feature Focus: Duck Typing and Isolate.Swap](https://osherove.com/blog/2008/11/2/isolator-feature-focus-duck-typing-and-isolateswap.html) - Oct 15, 2008 ### [Use Reflection to find Methods that implement explicit interfaces](https://osherove.com/blog/2008/10/15/use-reflection-to-find-methods-that-implement-explicit-inter.html) - Oct 12, 2008 ### [SharpMock 0.1 ?](https://osherove.com/blog/2008/10/12/sharpmock-01.html) --- title: "StackOVerflow Notifier" url: "https://osherove.com/blog/2008/10/23/stackoverflow-notifier.md" canonical: "https://osherove.com/blog/2008/10/23/stackoverflow-notifier.html" published: "2008-10-23T02:06:01" updated: "2008-10-23T02:06:01" tags: ["Cool Tools"] author: "Roy Osherove" description: "Dror Helper just created a utility that tracks your StackOverflow ranking. SO, if you're an ego freak, go get it ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # StackOVerflow Notifier By Roy Osherove October 23, 2008 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 23, 2008; technical details may be outdated. Dror Helper [just created a utility](http://blogs.microsoft.co.il/blogs/dhelper/archive/2008/10/22/stackoverflow-notifier.aspx) that tracks your StackOverflow ranking. SO, if you're an ego freak, [go get it](http://blogs.microsoft.co.il/blogs/dhelper/archive/2008/10/22/stackoverflow-notifier.aspx). ![image](https://osherove.com/img/wb/0739570_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_StackOVerflowNotifier_8FC6_image_thumb.png) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 1, 2009 ### [Review: CryptoLicensing for .NET](https://osherove.com/blog/2009/6/1/review-cryptolicensing-for-net.html) - Mar 16, 2009 ### [Code Formatter plugin for live writer - updated](https://osherove.com/blog/2009/3/16/code-formatter-plugin-for-live-writer-updated.html) - Aug 2, 2008 ### [Tools site is down – here is a temporary replacement page](https://osherove.com/blog/2008/8/2/tools-site-is-down-here-is-a-temporary-replacement-page.html) - Aug 2, 2008 ### [Deadlock detectors](https://osherove.com/blog/2008/8/2/deadlock-detectors.html) --- title: "Use Reflection to find Methods that implement explicit interfaces" url: "https://osherove.com/blog/2008/10/15/use-reflection-to-find-methods-that-implement-explicit-inter.md" canonical: "https://osherove.com/blog/2008/10/15/use-reflection-to-find-methods-that-implement-explicit-inter.html" published: "2008-10-15T07:11:40" updated: "2008-10-15T07:11:40" tags: [".NET"] author: "Roy Osherove" description: "update: added a check for IsPrivate based on the comments. so I won't forget: here's how you can iterate over a type definition's methods and see if one of them is an explicit intreface definition: foreach (var info in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Use Reflection to find Methods that implement explicit interfaces By Roy Osherove October 15, 2008 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published October 15, 2008; technical details may be outdated. update: added a check for IsPrivate based on the comments. so I won't forget: here's how you can iterate over a type definition's methods and see if one of them is an explicit intreface definition: ``` foreach (var info in GetType().GetMethods( BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.DeclaredOnly)) { if (info.IsFinal && info.IsPrivate) { Console.WriteLine("Explicit interface implementation: {0}", info.Name); } } ``` this will show only the "Write" method for the following class: ``` public class Class1 : ILogger { public void show() { } void MyMethod() { } void ILogger.Write(string s) { } } ``` ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 2, 2008 ### [Isolator Feature Focus: Duck Typing and Isolate.Swap](https://osherove.com/blog/2008/11/2/isolator-feature-focus-duck-typing-and-isolateswap.html) - Oct 28, 2008 ### [PDC 2008 Videos](https://osherove.com/blog/2008/10/28/pdc-2008-videos.html) - Oct 12, 2008 ### [SharpMock 0.1 ?](https://osherove.com/blog/2008/10/12/sharpmock-01.html) - Oct 11, 2008 ### [Isolator feature focus – Advanced Debugger Support for fakes](https://osherove.com/blog/2008/10/11/isolator-feature-focus-advanced-debugger-support-for-fakes.html) --- title: "SharpMock 0.1 ?" url: "https://osherove.com/blog/2008/10/12/sharpmock-01.md" canonical: "https://osherove.com/blog/2008/10/12/sharpmock-01.html" published: "2008-10-12T15:57:51" updated: "2008-10-12T15:57:51" tags: [".NET", "Agile", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "James, I would love to see you take the idea of “SharpMock” to the next level . If not anything else, it would be an interesting challenge to write about. James took PostSharp and started looking at the possibility of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SharpMock 0.1 ? By Roy Osherove October 12, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 12, 2008; technical details may be outdated. James, I would love [to see you take the idea of “SharpMock” to the next level](http://jamesryangray.blogspot.com/2008/10/stubbing-static-methods-with-postsharp.html). If not anything else, it would be an interesting challenge to write about. James took PostSharp and started looking at the possibility of intercepting static method calls using it’s code weaving API. Nice idea! James, you are totally deserving a free [Typemock Isolator Pro license](http://www.typemock.com/learn_about_typemock_isolator.html) for your efforts. Ping me at royo at Typemock.com and I’ll hook you up! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 28, 2008 ### [PDC 2008 Videos](https://osherove.com/blog/2008/10/28/pdc-2008-videos.html) - Oct 15, 2008 ### [Use Reflection to find Methods that implement explicit interfaces](https://osherove.com/blog/2008/10/15/use-reflection-to-find-methods-that-implement-explicit-inter.html) - Oct 11, 2008 ### [Isolator feature focus – Advanced Debugger Support for fakes](https://osherove.com/blog/2008/10/11/isolator-feature-focus-advanced-debugger-support-for-fakes.html) - Oct 11, 2008 ### [Art Of Unit Testing – Book done, Wiki ready](https://osherove.com/blog/2008/10/11/art-of-unit-testing-book-done-wiki-ready.html) --- title: "Isolator feature focus – Advanced Debugger Support for fakes" url: "https://osherove.com/blog/2008/10/11/isolator-feature-focus-advanced-debugger-support-for-fakes.md" canonical: "https://osherove.com/blog/2008/10/11/isolator-feature-focus-advanced-debugger-support-for-fakes.html" published: "2008-10-11T15:15:36" updated: "2008-10-11T15:15:36" tags: [".NET", "Agile", "FeatureFocus", "Typemock"] author: "Roy Osherove" description: "Two features that Typemock Isolator has make the debugging experience with it very different than any other isolation framework: 1) Highlight fake method during debugging When stepping into a method that is being faked…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Isolator feature focus – Advanced Debugger Support for fakes By Roy Osherove October 11, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [FeatureFocus](https://osherove.com/blog/category/featurefocus), [Typemock](https://osherove.com/blog/category/typemock) **Historical article** · Originally published October 11, 2008; technical details may be outdated. Two features that [Typemock Isolator](http://www.typemock.com/) has make the debugging experience with it very different than any other isolation framework: **1) Highlight fake method during debugging** ![WindowClipping (28)](https://osherove.com/img/wb/570ee04a_weblogs.asp.net_blogs_rosherove_WindowClipping_20_28__thumb_jzCqoA.jpg) When stepping into a method that is being faked by the test, the method will be outlined with a nice purple line around it, notifying the user that the real method will not be called, but instead will be intercepted by Typemock Isolator. **2) Fake method and property evaluation in the debugger does not break the test** With other frameworks, if, during debugging, you evaluate (even by mistake, by opening a watch window for example) the value of a fake property of a method, the isolation framework will treat this action as if it was run from production code, and so you might fail the test or cause unknown behavior from the faked methods or properties. Isolator is smart enough to detect such actions and will do two things: - Return the fake value that was assigned to that method or property to see in the debugger - Ignore this action as if it never happened so the test can continue as is even during debugging ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 15, 2008 ### [Use Reflection to find Methods that implement explicit interfaces](https://osherove.com/blog/2008/10/15/use-reflection-to-find-methods-that-implement-explicit-inter.html) - Oct 12, 2008 ### [SharpMock 0.1 ?](https://osherove.com/blog/2008/10/12/sharpmock-01.html) - Oct 11, 2008 ### [Art Of Unit Testing – Book done, Wiki ready](https://osherove.com/blog/2008/10/11/art-of-unit-testing-book-done-wiki-ready.html) - Oct 6, 2008 ### [Graphic Designer Wanted (and found)](https://osherove.com/blog/2008/10/6/graphic-designer-wanted-and-found.html) --- title: "Art Of Unit Testing – Book done, Wiki ready" url: "https://osherove.com/blog/2008/10/11/art-of-unit-testing-book-done-wiki-ready.md" canonical: "https://osherove.com/blog/2008/10/11/art-of-unit-testing-book-done-wiki-ready.html" published: "2008-10-11T14:46:03" updated: "2008-10-11T14:46:03" tags: [".NET", "Agile", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "I’m happy to report that my book has finally hit the “last review” stone, which means all chapters are done and the book should be in book stores around jan-feb 2009 . If you’d like to read the E-Book version right…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Art Of Unit Testing – Book done, Wiki ready By Roy Osherove October 11, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 11, 2008; technical details may be outdated. [![image](https://osherove.com/img/wb/aad88146_weblogs.asp.net_blogs_rosherove_image_mcgvHw.png)](http://artofunittesting.com/) I’m happy to report that [my book](http://artofunittesting.com/) has finally hit the “last review” stone, which means all chapters are done and the book should be in book stores around **jan-feb 2009**. If you’d like to read the E-Book version right now(PDF) you can purchase that for a lower price at the manning site. I’m also announcing [a Wiki site for the book](http://artofunittesting.com/), with all the chapters listed, along with errata and your comments as time goes by. The site already contains the first paragraph of all chapters, with [Chapter 1 available for free download](http://artofunittesting.com/Chapters/The_Basics_Of_Unit_Testing), and the full text of the “[Tools and frameworks](http://artofunittesting.com/Chapters/Tools_and_frameworks)” appendix. Since its all in a wiki, feel free to add your own tools in there that you think would be valuable, create your own pages that talk about things you think people reading this book should read and more. I hope the site becomes a good place for guidance for beginners and advanced in the field of unit testing (does not have to be in .NET). Oh, and you can see the final book cover on the right. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 12, 2008 ### [SharpMock 0.1 ?](https://osherove.com/blog/2008/10/12/sharpmock-01.html) - Oct 11, 2008 ### [Isolator feature focus – Advanced Debugger Support for fakes](https://osherove.com/blog/2008/10/11/isolator-feature-focus-advanced-debugger-support-for-fakes.html) - Oct 6, 2008 ### [Graphic Designer Wanted (and found)](https://osherove.com/blog/2008/10/6/graphic-designer-wanted-and-found.html) - Oct 6, 2008 ### [Deadlock Challenge](https://osherove.com/blog/2008/10/6/deadlock-challenge.html) --- title: "Graphic Designer Wanted (and found)" url: "https://osherove.com/blog/2008/10/6/graphic-designer-wanted-and-found.md" canonical: "https://osherove.com/blog/2008/10/6/graphic-designer-wanted-and-found.html" published: "2008-10-06T09:55:00" updated: "2008-10-06T09:55:00" tags: [".NET"] author: "Roy Osherove" description: "Update: We have already found a designer. Thanks for sending all those emails! We are looking for a part\\full time graphics designer. the initial need is to create great icons, design logos and such. If that person also…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Graphic Designer Wanted (and found) By Roy Osherove October 6, 2008 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published October 6, 2008; technical details may be outdated. Update: We have already found a designer. Thanks for sending all those emails! [We](http://www.typemock.com/) are looking for a part\\full time graphics designer. the initial need is to create great icons, design logos and such. If that person also has web design skills, all the better, as our site is going to be revamped and redone. We have no problem working with people offshore and online, so if you're interested or know someone who's amazing at this kind of stuff, email me at (already found a designer - sorry!) Update: We have already found a designer. Thanks for sending all those emails! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 11, 2008 ### [Isolator feature focus – Advanced Debugger Support for fakes](https://osherove.com/blog/2008/10/11/isolator-feature-focus-advanced-debugger-support-for-fakes.html) - Oct 11, 2008 ### [Art Of Unit Testing – Book done, Wiki ready](https://osherove.com/blog/2008/10/11/art-of-unit-testing-book-done-wiki-ready.html) - Oct 6, 2008 ### [Deadlock Challenge](https://osherove.com/blog/2008/10/6/deadlock-challenge.html) - Oct 4, 2008 ### [Isolator feature focus: Recursive Fakes](https://osherove.com/blog/2008/10/4/isolator-feature-focus-recursive-fakes.html) --- title: "Deadlock Challenge" url: "https://osherove.com/blog/2008/10/6/deadlock-challenge.md" canonical: "https://osherove.com/blog/2008/10/6/deadlock-challenge.html" published: "2008-10-06T01:38:00" updated: "2008-10-06T01:38:00" tags: [".NET"] author: "Roy Osherove" description: "If you're into multi threading, how about a little deadlock challenge ?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Deadlock Challenge By Roy Osherove October 6, 2008 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published October 6, 2008; technical details may be outdated. If you're into multi threading, [how about a little deadlock challenge](http://blog.typemock.com/2008/10/simple-deadlock-challenge.html)? ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 11, 2008 ### [Art Of Unit Testing – Book done, Wiki ready](https://osherove.com/blog/2008/10/11/art-of-unit-testing-book-done-wiki-ready.html) - Oct 6, 2008 ### [Graphic Designer Wanted (and found)](https://osherove.com/blog/2008/10/6/graphic-designer-wanted-and-found.html) - Oct 4, 2008 ### [Isolator feature focus: Recursive Fakes](https://osherove.com/blog/2008/10/4/isolator-feature-focus-recursive-fakes.html) - Oct 4, 2008 ### [BDD: Behavior vs. Spec Frameworks](https://osherove.com/blog/2008/10/4/bdd-behavior-vs-spec-frameworks.html) --- title: "Isolator feature focus: Recursive Fakes" url: "https://osherove.com/blog/2008/10/4/isolator-feature-focus-recursive-fakes.md" canonical: "https://osherove.com/blog/2008/10/4/isolator-feature-focus-recursive-fakes.html" published: "2008-10-04T15:17:05" updated: "2008-10-04T15:17:05" tags: [".NET", "Agile", "FeatureFocus", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "Here’s another feature Typemock Isolator has that no one else currently has: the ability to return fake objects from properties recursively (without the use of an auto mocking container for such a feat). this saved a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Isolator feature focus: Recursive Fakes By Roy Osherove October 4, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [FeatureFocus](https://osherove.com/blog/category/featurefocus), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 4, 2008; technical details may be outdated. Here’s another feature [Typemock Isolator](http://www.typemock.com/) has that no one else currently has: the ability to return fake objects from properties recursively (without the use of an auto mocking container for such a feat). this saved **a lot** of reperitive test code of creating stubs that return stubs that return some custom result. For example, an object person has a manager which is also a person (which of course also has a manager etc..) here’s how you can use this feature: \[Test,Isolated\] public void test() {     Person person = Isolate.Fake.Instance(Members.ReturnRecursiveFakes);     Assert.IsNotNull(person.Manager.Manager.Manager.Manager); } This test will pass (Manager is null by default. look at the class in question below: class Person    {        public string Name        {            get { return name; }        }        public Person Manager        {            get { return manager; }        }        private string name;        private Person manager;    } Here is how you can return stub results from properties of the stubbed objects: \[Test,Isolated\] public void test() {     Person person = Isolate.Fake.Instance(Members.ReturnRecursiveFakes);     Isolate.WhenCalled(() => person.Manager.Manager.Name)                .WillReturn("roy");     Assert.AreEqual("roy",person.Manager.Manager.Name); } Notice that: - By saying “ReturnRecursiveFakes” we are actually saying “I don’t care who uses this object and how from now on. It will return a fake when needed from all properties and the properties of the stubs as well. - We can still set stub results on the fakes on any level If we wanted to only fake the Manager name and leave everything else intact we could just use a live object in the test like this: \[Test,Isolated\] public void test() {     **Person person = new Person();**     Isolate.WhenCalled(() => person.Manager.Manager.Name)                .WillReturn("roy");     Assert.AreEqual("roy",person.Manager.Manager.Name); } ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 6, 2008 ### [Graphic Designer Wanted (and found)](https://osherove.com/blog/2008/10/6/graphic-designer-wanted-and-found.html) - Oct 6, 2008 ### [Deadlock Challenge](https://osherove.com/blog/2008/10/6/deadlock-challenge.html) - Oct 4, 2008 ### [BDD: Behavior vs. Spec Frameworks](https://osherove.com/blog/2008/10/4/bdd-behavior-vs-spec-frameworks.html) - Oct 3, 2008 ### [Agile Testing tools List](https://osherove.com/blog/2008/10/3/agile-testing-tools-list.html) --- title: "BDD: Behavior vs. Spec Frameworks" url: "https://osherove.com/blog/2008/10/4/bdd-behavior-vs-spec-frameworks.md" canonical: "https://osherove.com/blog/2008/10/4/bdd-behavior-vs-spec-frameworks.html" published: "2008-10-04T14:49:01" updated: "2008-10-04T14:49:01" tags: [".NET", "Agile", "BDD"] author: "Roy Osherove" description: "In my search to understand a little more about BDD and BDD frameworks, one gem that I gleaned is that there is an important distinction between “Spec” and “Behavior” frameworks. “Spec” is intended for the unit level…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BDD: Behavior vs. Spec Frameworks By Roy Osherove October 4, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [BDD](https://osherove.com/blog/category/bdd) **Historical article** · Originally published October 4, 2008; technical details may be outdated. In my search to understand a little more about BDD and BDD frameworks, one gem that I gleaned is that there is an important distinction between “Spec” and “Behavior” frameworks. “Spec” is intended for the unit level granularity (like unit tests) and “Behavior” is intended to relay user stories at the application level. This makes sense to me because in all the BDD discussions I’ve seen I had a hard time understanding why you want to put an application level story on top of a unit level story. it just didn’t make sense. So here’s what I get so far (correct me): **I can use Behavior Frameworks** to create stories that use the same shared language that my customer would understand, at the application level use cases. Most frameworks that support this allow you to “code” this up which still has a lot of friction for most people to read so it’s a problem. **I can use Spec Frameworks** to replace the language I use in my current unit tests so that instead of “testing” I am defining “behavior” of a component at the unit level. this is usually almost a purely syntactical change in nature. Some Frameworks have APIs for both Specs and Behaviors (like RSpec). Some only have APIs for one of them (which ones?) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 6, 2008 ### [Deadlock Challenge](https://osherove.com/blog/2008/10/6/deadlock-challenge.html) - Oct 4, 2008 ### [Isolator feature focus: Recursive Fakes](https://osherove.com/blog/2008/10/4/isolator-feature-focus-recursive-fakes.html) - Oct 3, 2008 ### [Agile Testing tools List](https://osherove.com/blog/2008/10/3/agile-testing-tools-list.html) - Oct 1, 2008 ### [Isolator feature focus: Live objects in unit tests](https://osherove.com/blog/2008/10/1/isolator-feature-focus-live-objects-in-unit-tests.html) --- title: "Agile Testing tools List" url: "https://osherove.com/blog/2008/10/3/agile-testing-tools-list.md" canonical: "https://osherove.com/blog/2008/10/3/agile-testing-tools-list.html" published: "2008-10-03T14:55:00" updated: "2008-10-03T14:55:00" tags: [".NET", "Agile"] author: "Roy Osherove" description: "Update: A full list, with links to the tools, an editable wiki page and more, is now located on the book wiki site . Feel free to add your own tools in there. Working on an appendix for my book , with a list of tools…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Testing tools List By Roy Osherove October 3, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published October 3, 2008; technical details may be outdated. **Update:** A full list, with links to the tools, an editable wiki page and more,  [is now located on the book wiki site](http://www.artofunittesting.com/Chapters/Tools_and_frameworks). Feel free to add your own tools in there. Working on an appendix [for my book](http://www.artofunittesting.com/), with a list of tools and frameworks you should care about. Tell me if I missed anything: · Mock Frameworks > o Moq > > o Rhino Mocks > > o Typemock Isolator > > o NMock > > o NUnit.Mocks · Test Frameworks > o MS Test > > o NUnit > > o MbUnit > > o XUnit > > o Gallio  · Dependency Injection and Ioc Containers > o StructureMap > > o Microsoft Unity > > o Castle Windsor > > o Common IServiceLocator Framework > > o Managed Extensibility Framework > > o Spring.NET > o AutoFac · Database testing > o Use Integration testing > > o MbUnit,NUnit,XUnit Rollback attributes > > o TransactionScope · Web Testing > o Ivonna and Typemock > > o Team System Web Test > > o NUnitASP > > o Watin > > o Watir > > o Selenium · UI Testing > o NUnitForms > > o Project White > > o Team System UI Tests > > o Typemock Isolator · Threading Related Testing > o Microsoft Chess > > o Typemock Racer > o Osherove.ThreadTester · General Testing > o Pex · Acceptance Testing > o Fit & Fitnesse > > o Watin and Watir and selenium ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 4, 2008 ### [Isolator feature focus: Recursive Fakes](https://osherove.com/blog/2008/10/4/isolator-feature-focus-recursive-fakes.html) - Oct 4, 2008 ### [BDD: Behavior vs. Spec Frameworks](https://osherove.com/blog/2008/10/4/bdd-behavior-vs-spec-frameworks.html) - Oct 1, 2008 ### [Isolator feature focus: Live objects in unit tests](https://osherove.com/blog/2008/10/1/isolator-feature-focus-live-objects-in-unit-tests.html) - Oct 1, 2008 ### [Unit Testing decoupled from TDD as well== Adoption](https://osherove.com/blog/2008/10/1/unit-testing-decoupled-from-tdd-as-well-adoption.html) --- title: "Isolator feature focus: Live objects in unit tests" url: "https://osherove.com/blog/2008/10/1/isolator-feature-focus-live-objects-in-unit-tests.md" canonical: "https://osherove.com/blog/2008/10/1/isolator-feature-focus-live-objects-in-unit-tests.html" published: "2008-10-01T22:37:06" updated: "2008-10-01T22:37:06" tags: [".NET", "Agile", "FeatureFocus", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "Here is one feature that sets Typemock Isolator apart from all the other frameworks, that has nothing to do with legacy code: Live Objects. This feature allows you to just “new” up an instance of an object, if you can,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Isolator feature focus: Live objects in unit tests By Roy Osherove October 1, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [FeatureFocus](https://osherove.com/blog/category/featurefocus), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 1, 2008; technical details may be outdated. Here is one feature that sets Typemock Isolator apart from all the other frameworks, that has nothing to do with legacy code: Live Objects. This feature allows you to just “new” up an instance of an object, if you can, and then fake method results on it, and send it somewhere into production code: > ``` > [TestMethod, Isolated] public void DoSomething_LoggerHasFullDisk_NothingHappens() { RealLogger logger = new RealLogger(); Isolate.WhenCalled(()=> logger.IsDiskFull).WillReturn(true); > ``` > ``` > new MyClass(logger).DoSomething();.. } > ``` With any other framework you are forced to “mock” or “stub” the RealLogger class to begin using it. Removing this need makes for clearer more elegant tests. This feature is already available in [Isolator 5.1 that was released this week.](http://blog.typemock.com/2008/09/typemock-isolator-51-released.html) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 4, 2008 ### [BDD: Behavior vs. Spec Frameworks](https://osherove.com/blog/2008/10/4/bdd-behavior-vs-spec-frameworks.html) - Oct 3, 2008 ### [Agile Testing tools List](https://osherove.com/blog/2008/10/3/agile-testing-tools-list.html) - Oct 1, 2008 ### [Unit Testing decoupled from TDD as well== Adoption](https://osherove.com/blog/2008/10/1/unit-testing-decoupled-from-tdd-as-well-adoption.html) - Sep 26, 2008 ### [Unit Testing decoupled from Design == Adoption](https://osherove.com/blog/2008/9/26/unit-testing-decoupled-from-design-adoption.html) --- title: "Unit Testing decoupled from TDD as well== Adoption" url: "https://osherove.com/blog/2008/10/1/unit-testing-decoupled-from-tdd-as-well-adoption.md" canonical: "https://osherove.com/blog/2008/10/1/unit-testing-decoupled-from-tdd-as-well-adoption.html" published: "2008-10-01T06:27:22" updated: "2008-10-01T06:27:22" tags: [".NET", "Agile", "Agile Related", "Art Of Unit Testing"] author: "Roy Osherove" description: "The discussion on the future of unit testing for the masses has shifted from the standard “if they are too stupid to learn it, we don’t want them” to “TDD without good design will make really bad tests”. and this is a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing decoupled from TDD as well== Adoption By Roy Osherove October 1, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published October 1, 2008; technical details may be outdated. The discussion on the future of unit testing for the masses has shifted from the standard “if they are too stupid to learn it, we don’t want them” to “TDD without good design will make really bad tests”. and this is a good thing. it’s a good thing because it secretly implies that if you could write Good Unit Tests, regardless of design, then teaching design as a separate thing should not pose a problem. Discussion so far: - [Unit Testing Decoupled From Design == adoption](http://weblogs.asp.net/rosherove/archive/2008/09/26/unit-testing-decoupled-from-design-adoption.aspx) - [Goodbye mocks, Farewell stubs](http://weblogs.asp.net/rosherove/archive/2008/09/20/goodbye-mocks-farewell-stubs.aspx) But first, let’s make one thing clear: **TDD is NOT Unit Testing.** My previous post was not “TDD decoupled from design==adoption”, it was “Unit testing decoupled from design == adoption TDD is (technically) about **when** you write the unit test. You can still write crappy tests in TDD mode. With good design. Unit Tests deserve a good book about them without TDD in it because the current books about TDD suffer from lack of SRP. On the other hand you can still write good tests, without TDD. The design might make them a little longer, but if you learn to write unit tests well, this should not pose a problem. **Learn [Good Unit Testing](http://www.infoq.com/news/2008/03/cockburn-testing-guts) regardless of TDD and Design** people can start learning unit testing before learning TDD. they learn the silly stuff (the kind udi looks down upon) in an hour, and then they get to the hard stuff : making the tests readable, maintainable and trust worthy.  these are **separate** properties that can be learned to be done regardless of design, since test naming convention, refactoring and correctness can be learned in separate. The only reason it’s really hard to teach in separate today is because as those devs get to test real world code they have to start dealing with real world dependencies and that it the barrier that usually stops most people. having “intermediate” frameworks in place such as JMockit and Typemock Isolator can help in that regard, keeping people focused on the task at hand and deferring the need to learn other types of design for a time that is better. The idea is to let the developer _choose_ when to learn which technique: - Learn how to write good unit tests ([book](http://www.manning.com/osherove/)) - Learn Good Design technique (give me a link to a good starter book!) - Learn Test Driven Development ([book](https://www.amazon.com/exec/obidos/ASIN/0735619484/)) I want a developer to grok each one of those things to a very deep level, but today’s “market” wants them to learn it all in one go. Since each one is its own little art form, are you really surprised to learn that most of the mass population is not there yet? If people think that the only way to write good unit tests that are not worthless is by doing them TDD style with SOLID design, they are showing several things to me: - they don’t get what “good” unit testing is - They don’t “get” what value good tests have outside the context of TDD - they guide a community who reads them down a path of “all or nothing”. which for most people begets “nothing”. **Field notes:** Udi [writes](http://www.udidahan.com/2008/09/30/unit-testing-for-developers-and-managers/): > “If logic is duplicated, if the code is tightly coupled, if there is no separation of concerns, the unit tests will be useless - even if they “test” the class in isolation.” That is wrong in many levels. Let’s start with the fact that a unit test can have a specific value in testing a specific class in isolation, even if the bugs in that class are duplicated on other classes. If Udi does not agree on that, I don’t know what else to say about that. I **wish**  that what he meant was that all these problems were repeating in the tests, since this is usually why people fail when they start out unit testing: they write crappy tests with bugs, code duplication and lack of isolation (this can all be learned). But he’s not.  It feels like a “purist” view that does not reflect the real world. It must be nice living in an echo chamber! Let’s see udi contradict himself in the same post: > “Managers shouldn’t necessarily sacrifice their projects on this altar of learning. Organizations need to find ways for developers to safely practice these techniques as a part of developing their “human resources”. First of all, this needs to be communicated to everyone - that the organization understands the importance of these techniques, the desires of developers to adopt them, and the projects that need to be delivered.” > “…It’s a gradual process.” That’s the problem Udi. It’s **not** possible to do it gradually today, because people keep saying that you can’t do things in little chunks. you have to learn it all together. If we were to help developers learn what good unit testing means they could much more easily learn that stuff, and then learn the other stuff. Casey [writes](http://devlicio.us/blogs/casey/archive/2008/10/01/testing-is-not-technically-hard-it-is-hard-because-it-requires-clear-thought-and-understanding.aspx): > “It is not a technical challenge to write a unit test, any half trained monkey could do it. A few attributes, a couple of classes, a few new() statements, and a few Assert statements. We don't need magic mocking frameworks, we don't need any mocking frameworks for 90% of our tests, we don't need application of 12 GoF principles before we can write a test, honestly. > Testing and writing automated tests is hard because it requires a strong understanding of the user stories that sit behind your code and project, because it requires you to think as a user and not as a developer, and because it requires you to be able to think of multiple conflicting axioms, test cases and class interactions, and how to cover the weaknesses of each individual test with other complementary tests.” Casey preached about what he sees as the “end game” for unit testing, TDD and Design. where everything is in one great ball of goodness. Or did he? Let’s separate these points into better chunks: Design related stuff: - to think of multiple… class interactions Good Test related stuff: - Understanding of the user stories - Think as a user not a developer - think of multiple conflicting axioms (..?) test cases.. - how to cover the weaknesses of each individual test with other complementation tests. TDD related stuff - none So, what I gather from casey’s words is that you want your tests to be : - testing the right thing - be readable and show intent - have good coverage - test or be aware of class interactions (the design related stuff) except the last point which is where most of today’s mock frameworks force you to redesign, there is nothing here you can’t learn separated **from** TDD and SOLID techniques. the interaction stuff is where those other isolation frameworks I mentioned come into place. We need to **decouple Good Unit Testing** from TDD and SOLID. And it seems that not only “noobs”, as a stupid idiot commented thoughtfully on my last post, can benefit from learning this distinction. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 3, 2008 ### [Agile Testing tools List](https://osherove.com/blog/2008/10/3/agile-testing-tools-list.html) - Oct 1, 2008 ### [Isolator feature focus: Live objects in unit tests](https://osherove.com/blog/2008/10/1/isolator-feature-focus-live-objects-in-unit-tests.html) - Sep 26, 2008 ### [Unit Testing decoupled from Design == Adoption](https://osherove.com/blog/2008/9/26/unit-testing-decoupled-from-design-adoption.html) - Sep 20, 2008 ### [Goodbye mocks, Farewell stubs](https://osherove.com/blog/2008/9/20/goodbye-mocks-farewell-stubs.html) --- title: "Unit Testing decoupled from Design == Adoption" url: "https://osherove.com/blog/2008/9/26/unit-testing-decoupled-from-design-adoption.md" canonical: "https://osherove.com/blog/2008/9/26/unit-testing-decoupled-from-design-adoption.html" published: "2008-09-26T13:30:32" updated: "2008-09-26T13:30:32" tags: [".NET", "Agile", "Art Of Unit Testing"] author: "Roy Osherove" description: "In my previous post I started talking in more coherent words about feelings I’ve had lurking in the past year. This post is an expansion of that, after having some great twitter conversations in the past few days with…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing decoupled from Design == Adoption By Roy Osherove September 26, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published September 26, 2008; technical details may be outdated. In [my previous post](http://weblogs.asp.net/rosherove/archive/2008/09/20/goodbye-mocks-farewell-stubs.aspx) I started talking in more coherent words about feelings I’ve had lurking in the past year. This post is an expansion of that, after having some [great twitter conversations](http://twitter.com/royosherove) in the past few days with some great people. Treat this as a stream of consciousness. before that, here’s a short highlight summary of responses to my post in other blogs: - [Steve Freeman thinks I’m pulling the wrong way](http://www.mockobjects.com/2008/09/tdd-killing-messenger.html) - [So does Ayende](http://ayende.com/Blog/archive/2008/09/23/cuddling-is-consider-harmful.aspx) (in a way) - [A goof thread on this in the alt.net mailing list](http://tech.groups.yahoo.com/group/altdotnet/message/15301) there are also plenty of people who picked up the ball (some of them have already done that before I started mumbling on my blog) and continue to make better attempts at bringing knowledge to the masses, in more coherent, newbie friendly manner. - [Rhys shares some hints and gotchas](http://rhysc.blogspot.com/2008/09/tdd-fail-fast.html) - [Ian Cooper gets it](http://codebetter.com/blogs/ian_cooper/archive/2008/09/23/learning-and-crafstmanship.aspx) (even if he doesn’t think he does – I’ll explain later) - [Jeremy is asking important questions](http://codebetter.com/blogs/jeremy.miller/archive/2008/09/22/question-of-the-day.aspx) - [Jimmy has good tips](http://feeds.feedburner.com/~r/GrabBagOfT/~3/399405713/ten-tips-to-maximize-the-return-on-your-tdd-investment.aspx) and the comments on that post are… interesting (some are very expected, though). Let’s make another interesting statement, and this one is indeed product related. **To reach the masses, we need to decouple [S.O.L.I.D](http://www.lostechies.com/blogs/chad_myers/archive/2008/03/07/pablo-s-topic-of-the-month-march-solid-principles.aspx) Design Principles from Unit Testing and TDD** I’m not saying throw out design. I’m saying – it’s important enough to be learnt on its own, and not in the context of tests. in fact, in that context, it inhibits too many people to be practical as a learning tool. so we need to separate forces. **But why?** The wall to start unit testing is too high (for most devs) and will always be too high if you have to know your SOLID in order to even start writing your first test or refactor your code for testability.  This problem only exists in static languages like Java, C# and VB.NET, where in order to replace something you need to have a way to do polymorphism on that class (interface, or inheritance with virtual methods). The reason people love [Test Driven design](http://weblogs.asp.net/rosherove/archive/2007/10/08/the-various-meanings-of-tdd.aspx) so much is because the technique, aided by most of today’s leading mock frameworks, squeezes out all the problematic static coupling that exists in the current design, before it will even let you test something. Can’t decouple that web service dependency from your class? you’re screwed. Redesign and only then you can test it. Have a static method that gets called? you’ll need to jump hoops to override the calls to that method, let alone the method itself. Feel the burn, baby! TDD existed before mocking frameworks existed. what did people do then? SmallTalk was one of the first languages that had people doing TDD with it.  SmallTalk is _testable_ by default in that you can re-define anything to do anything else at runtime. People just _thought about_  their design as they wrote the tests first, and they had no real constraint on what specific design to follow. It still holds today in Ruby, for example. Now, the reason today’s “hardcore” Test Driven Design is even _possible_ is because current mocking frameworks **rely** on static language (and compiler) to tell the developer what can and cannot be done in terms of replacing objects and implementations. That **forces** a specific design methodology that closely matches what SOLID principles stand for, and it’s **great**. you get great code out of it, and nice designs. I repeat – I love the idea of SOLID design and I practice it. So, why do I think that these things should be decoupled? At the end of the day it is a **constraint** that is put upon each developer that wants to start unit testing (not even talking about legacy code right now). That means that each developer that starts tests will hit a brick wall and will **have** to start reading up on all things SOLID, patterns, [or just buy my book](http://www.manning.com/osherove/). There is no “easy” way. and that’s fine and dandy for most of the people reading this blog. And for the past four or five years, it’s been just as fine and dandy for me too. BUT, The adoption rate for TDD and unit testing at all is low, and I suspect that it is indeed this learning curve that makes that possible. And it will **continue** to be low as long as doing _great_ (not OK, _great_!) designs is a prerequisite to doing proper unit testing (or at all). The current mock frameworks (most) enable this notion and embrace it. Today we live in our own little echo chamber where everyone is happy with their “pure” designs and consultant fees, because we are part of a very elite group: those you need to pay in order to learn the “hard stuff” to do something which many people _want_ to do but just can’t. It’s almost like knowing Regular Expressions, except a much larger scope. We’re making it harder _on purpose_ to start doing unit testing, because we believe that it’s someone’s best interest (and in a way, in our best interest) to learn SOLID first. The people I know from the mocking community are amazing, passionate and smart people. They would _never_ do anything they don’t fully believe in, and their value system is almost radically pure. And I love that. but we cannot play judge here. people learn in different ways, and the low adoption rate tells us that it’s not working as well as expected. **Why would decoupling work?** If we were able to **decouple** the requirement of knowing SOLID and just get people to start testing **today** and learn SOLID **later** or in parallel, adoption would be much higher. Why? - People who get test infected soon want to learn SOLID anyway - People who succeed doing one thing, will be more open to adopting other things from the same source of knowledge - It’s less scary, and less time consuming to start doing things. We reduce the barrier to entry into the agile world. - It allows developers in a non-agile environment to do little,incremental steps on the road to a better way of working, without needing to chow down the whole meal in one big bite. - Sucky tests are better than no tests. They also _lead_ to better tests and better understanding of design as people learn and get better at it. **What’s stopping us?** But with the current set of mock frameworks, you can’t do all those things. you technically are not _allowed_ to do that. and that’s why solutions like Rhino, Moq, and NMock will not appeal to the masses, and why solutions that support other types of design decisions (JMockit, Typemock Isolator) will continue to gain popularity as people strive to become more agile under non-agile conditions. they provide that needed stepping stone to learn unit testing without needing to learn SOLID as a requirement. That’s the difference. But the community is actively depressing thoughts about using such tools today because of the belief that TDD and design have to go hand in hand at ALL times. Many of them that will read this are scared that I’m even suggesting this, because they fear a return to darker ages where people didn’t have a clue, and there was nothing to stop them from screwing up the design. But as you’ll see later on, the plan is to get people _on board_ the design stuff, just not as a prerequisite to the unit testing stuff. that’s all. Of course, the big problem here is that I actually _work_ at Typemock, and thus, many people feel that every word that comes out of my mouth is a sales pitch. but the reality is that if Typemock had been an open source project, those people would have read the _words_ that I write, and not try to find a hidden meaning in them. and the truth is I’d write something like this even if I didn’t work there today. I’d quit to say these words with more credibility but I want to have an impact on how those products work and feel, so I’m not going to do that, sorry. **What does the industry need to do?** - Direct people who are reluctant to go through that big learning curve or have a problem with the current frameworks to tools that mitigate those fears (Typemock, JMockit). One is open source, the other has an open source free license. so they are both achievable to use and play with. - When doing so, learning better design techniques should be on the horizon. but it’s important not to discourage use of these frameworks on existing non SOLID design notions. people have a hard time with change as it is. They need to learn one step at a time and we have to let them have the time to grok things separately if they want to. - Decouple the task of teaching unit testing from the task of teaching design. They are both important but are not a requirement of each other. We need more Design material out there with a simple way to reach and find it (we’re on the way today). Unit testing information is already out there and more is going out every day. - Realize that tools that enable different designs are not a problem, but a way to get a foot in the door with developers who wouldn’t walk through that agile door in other ways. it’s a _bigger net_ to catch more fish. These tools allow people to have a bridge to the agile world with less pain involved. This is something that we need to continue talking about, since it can change the future for most devs today. If we shy away from talking about this, and stay in our cozy little submarine underwater, we will sail right beneath all those people lying on the beach, wondering what’s up with all those people in the water, or afraid to take a swimming lesson. (yeah, the world’s worst analogy) Thoughts? Comments? ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 1, 2008 ### [Isolator feature focus: Live objects in unit tests](https://osherove.com/blog/2008/10/1/isolator-feature-focus-live-objects-in-unit-tests.html) - Oct 1, 2008 ### [Unit Testing decoupled from TDD as well== Adoption](https://osherove.com/blog/2008/10/1/unit-testing-decoupled-from-tdd-as-well-adoption.html) - Sep 20, 2008 ### [Goodbye mocks, Farewell stubs](https://osherove.com/blog/2008/9/20/goodbye-mocks-farewell-stubs.html) - Sep 11, 2008 ### [Thread Visualization with Typemock Racer](https://osherove.com/blog/2008/9/11/thread-visualization-with-typemock-racer.html) --- title: "Goodbye mocks, Farewell stubs" url: "https://osherove.com/blog/2008/9/20/goodbye-mocks-farewell-stubs.md" canonical: "https://osherove.com/blog/2008/9/20/goodbye-mocks-farewell-stubs.html" published: "2008-09-20T05:45:59" updated: "2008-09-20T05:45:59" tags: [".NET", "Agile", "Art Of Unit Testing", "General Software Devel..."] author: "Roy Osherove" description: "About 4 years ago I was consulting for one of the largest companies in Israel (about 15,000+ employees) and helping them grok TDD and automated unit testing. I had spent there over a year and a half, on and off, and was…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Goodbye mocks, Farewell stubs By Roy Osherove September 20, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published September 20, 2008; technical details may be outdated. About 4 years ago I was consulting for one of the largest companies in Israel (about 15,000+ employees) and helping them grok TDD and automated unit testing. I had spent there over a year and a half, on and off, and was teaching both .net, C++ and java developers about the techniques and tools they can use. I was consulting for C++, Java and .NET developers. The C++ devs were first. They had plenty of objections to what I was teaching them, because the amount of code refactoring they needed to do in order to make their code testable was almost unrealistic for them. Even writing new code meant writing something on top of old-untestable code, and they had a hard time adjusting to the more interface (pure virtual) based, contract driven TDD approach for new code. C++ devs has a hard time becuase it takes more code to write good testable code, and the coding tools they used (VS on windows and VI and such on UNIX based systems) didnt’ provide a good productive way to make code “bend” easily as they refactored it or created it in the first place. every little change meant a big “search and replace”. every method refactoring meant adding it the declaration in an .h file and thus they tried to have a little to do with changing code as possible. Looking back, today they still don’t have the right infrastructure in place or the right tooling or the willingness to do unit testing or TDD becuase it’s too hard with the current tooling to accomplish it. I had also spent some time with the .NET devs and thought them the same things. Becuase tooling support was better it was a bit easier for them to accept the practices, but still people had a lot of trouble grasping concepts such as dependency injection, inversion of control and designing for testability in general. I found that most people didn’t really have a big problem with the idea of exposing things they didn’t use to expose before, it was more about the concept of learning how to refactor the code in interesting OO ways to make it testable. Making a class non sealed, a method virtual, and then inheriting from that class and testing against the inherited class (“extract and override”) was very much unintuitive for them, and other concepts like containers (spring at the time) didn’t help them get into the groove either. For them it was like drinking water from a fire hose. Consulting for the java devs Java has lots going for it in terms of unit testing, automation and TDD - Java devs have a much longer “heritage” of tooling and unit testing than in the .NET world, and so you’d expect them to be more inclined to do these things. - JUnit is part of any decent java idea so the barrier for entry should be lower, right? - Refactoring was also in most decent java IDE's, so you’d expect them to grok that too. but that wasn’t the case. - class methods in java are virtual by default so you can override what you want as long as the class is not sealed (final)== more testable by default. - Java required a much higher OO learning curve to start with. Good OO knowledge is fundamental for testable designs. Unfortunately, most developers I met didn’t even know how to use the refactoring tools they had available and had a hard time with the same dependecy injection principles that the C++ and .NET devs had. It was just too cumbersome to make the code testable, but eventually the infa team at the company had made the decision to take a couple of weeks and make all the infra stuff replaceable for testing purposes. they did not regret that decision. So the java group had the most success with testable designs, but they still had a hard time doing it. in fact, only the infra team at that group took the plunge. the other (higher level) devs in the java group didn’t grok it. and don’t use it today. Why was this adoption been such a failure? They were willing to learn, but they didn’t like what they learned. It didn’t fit their needs in the real world. Or the way they worked, or the way they knew how to do things. Think what you will ,but 99% of the dev worlds aren’t ready for the “testability” message. and that is a fact that is hard to realize for most of us, which just can’t grasp why isn’t that any sensible human being isn’t willing to do everything much better than they are doing today. Spending the past week running around the Microsoft Campus in Redmond had made several things clearer for me. I’ve been _feeling_ them for a while, but this week these abstract feelings materialized into something that is more coherent that I can talk about. **Why do most developers not write unit tests, still?** Reason #1: Learning curve One of the main reasons most developers **still today** don’t really take to unit testing (and TDD) is the really high learning curve that is forced upon them. That is not to say that learning about mocks, stubs, dependency injection, IoC containers, Extract & override technique, Record\\Replay, AAA and more \-- is not useful, but it is a _big obstacle_ to get people into the habit of doing something which they know is good for them – test their code, verify their assumptions, automate, integrate, be confident, get feedback, define behavior – all those and many other benefits are being thrown away by developers all over the world because the entry fee to this world is too high, for all the wrong reasons. **It’s time to simplify**. Get back to basics. Take a good hard look at the huge spiral that we are leading people into and asking whether removing some things today can lead to those things being accepted and being easier tomorrow. or maybe they weren’t needed at all. **Say Goodbye to “mock” and “stub”** “mock” and “stub” have played their part in us trying to explain to ourselves what it is we are trying to do, to start learning the minute and important differences in the patterns of our test code. They helped us define what it is we are looking to do, in terms that, for lack of anything better, are now the de-facto pattern names for something that should never have been named in the first place for the casual programmer. That’s why in the new version of Isolator we’ve chosen to completely get rid of the words mock and stub, and get back into “fake”ing. You can _fake_ a method or a class instance, and you can _verify_ that something was called. You should not care whether this is a stub or a mock. We need to clean our language: mock, stub, fake, test double: They all mean something in the context of us trying to identify patterns in our test code. But as users mature and start using the frameworks, those same words increase the entry barrier, and effectively block people out. If I’m showing a simple test that fakes some dependency that a class uses to a new dev on my team, I should not have to send them over to read fowler’s “mocks arn’t stubs” article (which is enlightening, but should not be relevant to them) because it misses the point. **Less interaction testing, more state based testing** Most crappy unit tests I’ve seen were _over specified_ in that they asserted on internal interaction with an object way too heavily, which made the tests very fragile. Getting back to basics means making it easy to enable state based testing (assert style checks) and only enabling interaction testing where it makes sense: (when your app does one-way messaging to an external component). _verifying_ that something was called should be the exception to the unit testing rule. The AAA style APis make that a more clear distinction. Record-replay APIs make it too easy to make interaction based tests when you really want a state based one (getting a result vs. checking that something was called) **Use AAA style Apis** As an industry we are learning and changing all the time. The “Arrange-act-assert” pattern in the field of mock frameworks represents us trying to return to basics. Moq did that nicely by showing a way that leads there, and it is being taken gladly by Rhino and Typemock Isolator. It is taking off because we are starting to look beyond our own little echo chamber and seeing what is is that all those other 99% of devs are expecting as guidance, and in what form. AAA is guidance because there was an outcry (a silent, vote of feet) that record-replay is not cutting it – it’s too confusing for non-experts. It’s too technical. and it does not lend itself to the way people want to work. So most people didn’t use it. **Visual Basic Language Support** Everyone screwed up on this one.most VB developers who will try to use one of the current frameworks will not succeed since they required anonymous methods or lambda expressions. Some frameworks use VB specific keywords which makes them VERY awkward to use. If we want broad acceptance of our practices we need to make sure whoever wants to can use the tooling we make. VB is _huge_ and its amazing how we all pretend it does not exist. But I think it’s the key to getting to those people who want to be better but all they see is a high wall instead of an entrance. **Use “Isolate” and “fake” instead of “mock”** Don’t say ‘mock’ frameworks, say “isolation” frameworks. Because ‘Mock’ is an overloaded word it is confusing. Explaining to a developer that you can “isolate” something from its dependencies rather than “mock” its dependencies feels more natural. **Simplify,Simplify,Simplify** Remove APIs instead of adding to them. Have single point of entries to your frameworks because **discoverability** is the key to good framework use. That’s why extension methods are problematic, they mean multiple points of entry. **Be open: Realize that other tools and techniques can act as bridges to the agile world** Design for testability is just one way to get where you want to go. it is not the only way. Sometimes it’s impossible. Discouraging the use of other ways of working (using tools like Typemock Isolator or JMockit) will only make the current echo chamber more closed and feel more un-achievable for those who need to get to the same point with a very different set of constraints than what most of the “loud” voices need to face. By “allowing” other forms of working you enable those who want to, to get a bridge to help them instead of walking by foot the whole way. Any other way would mean that we will all fail in delivering what we believe in to those who have no idea what we’re talking about. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 1, 2008 ### [Unit Testing decoupled from TDD as well== Adoption](https://osherove.com/blog/2008/10/1/unit-testing-decoupled-from-tdd-as-well-adoption.html) - Sep 26, 2008 ### [Unit Testing decoupled from Design == Adoption](https://osherove.com/blog/2008/9/26/unit-testing-decoupled-from-design-adoption.html) - Sep 11, 2008 ### [Thread Visualization with Typemock Racer](https://osherove.com/blog/2008/9/11/thread-visualization-with-typemock-racer.html) - Sep 4, 2008 ### [Finding Deadlocks with ReaderWriterLock and Typemock Racer](https://osherove.com/blog/2008/9/4/finding-deadlocks-with-readerwriterlock-and-typemock-racer.html) --- title: "Thread Visualization with Typemock Racer" url: "https://osherove.com/blog/2008/9/11/thread-visualization-with-typemock-racer.md" canonical: "https://osherove.com/blog/2008/9/11/thread-visualization-with-typemock-racer.html" published: "2008-09-11T08:58:06" updated: "2008-09-11T08:58:06" tags: [".NET", "General Software Devel...", "Threading", "Typemock"] author: "Roy Osherove" description: "Here’s what you can find on the latest typemock racer build. I think it’s pretty cool. Embedded Flash media from the original post is no longer playable." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Thread Visualization with Typemock Racer By Roy Osherove September 11, 2008 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Threading](https://osherove.com/blog/category/threading), [Typemock](https://osherove.com/blog/category/typemock) **Historical article** · Originally published September 11, 2008; technical details may be outdated. Here’s what you can find on the latest [typemock racer](http://typemock.com/requestAlpha.php) build. I think it’s pretty cool. Embedded Flash media from the original post is no longer playable. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Sep 26, 2008 ### [Unit Testing decoupled from Design == Adoption](https://osherove.com/blog/2008/9/26/unit-testing-decoupled-from-design-adoption.html) - Sep 20, 2008 ### [Goodbye mocks, Farewell stubs](https://osherove.com/blog/2008/9/20/goodbye-mocks-farewell-stubs.html) - Sep 4, 2008 ### [Finding Deadlocks with ReaderWriterLock and Typemock Racer](https://osherove.com/blog/2008/9/4/finding-deadlocks-with-readerwriterlock-and-typemock-racer.html) - Aug 27, 2008 ### [Typemock Racer Alpha Available - Deadlock Finder](https://osherove.com/blog/2008/8/27/typemock-racer-alpha-available-deadlock-finder.html) --- title: "Finding Deadlocks with ReaderWriterLock and Typemock Racer" url: "https://osherove.com/blog/2008/9/4/finding-deadlocks-with-readerwriterlock-and-typemock-racer.md" canonical: "https://osherove.com/blog/2008/9/4/finding-deadlocks-with-readerwriterlock-and-typemock-racer.html" published: "2008-09-04T18:06:48" updated: "2008-09-04T18:06:48" tags: [".NET", ".Net 2.0", "General Software Devel...", "Threading", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "This feature was just added to the Racer Alpha . Given the following method: Can you see a potential for deadlock in this method? Here’s the answer . I wonder if it will find this one as well .." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Finding Deadlocks with ReaderWriterLock and Typemock Racer By Roy Osherove September 4, 2008 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Threading](https://osherove.com/blog/category/threading), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 4, 2008; technical details may be outdated. This feature was just added to the [Racer Alpha](http://typemock.com/requestAlpha.php). Given the following method: ![WindowClipping (14)](https://osherove.com/img/wb/rove_WindowsLiveWriter_FindingDeadlockswithReaderWriterLockandT_3920_WindowClipping_20_14__thumb.jpg) Can you see a potential for deadlock in this method?  [Here’s the answer](http://blog.typemock.com/2008/09/finding-deadlocks-with-readerwriterlock.html). I wonder if it will [find this one as well](http://www.ayende.com/Blog/archive/2008/07/05/Challenge-Find-the-deadlock.aspx).. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Sep 20, 2008 ### [Goodbye mocks, Farewell stubs](https://osherove.com/blog/2008/9/20/goodbye-mocks-farewell-stubs.html) - Sep 11, 2008 ### [Thread Visualization with Typemock Racer](https://osherove.com/blog/2008/9/11/thread-visualization-with-typemock-racer.html) - Aug 27, 2008 ### [Typemock Racer Alpha Available - Deadlock Finder](https://osherove.com/blog/2008/8/27/typemock-racer-alpha-available-deadlock-finder.html) - Aug 27, 2008 ### [Visual vs. “Executable” Build Configurations](https://osherove.com/blog/2008/8/27/visual-vs-executable-build-configurations.html) --- title: "Beautiful Norway" url: "https://osherove.com/blog/2008/8/29/beautiful-norway.md" canonical: "https://osherove.com/blog/2008/8/29/beautiful-norway.html" published: "2008-08-29T01:46:15" updated: "2008-08-29T01:46:15" tags: [] author: "Roy Osherove" description: "After finishing a wonderful week and a half in Norway, I can’t wait to get back. Thanks for the great memories ! I’ll be coming back in December for another TDD Master Class Course ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Beautiful Norway By Roy Osherove August 29, 2008 **Historical article** · Originally published August 29, 2008; technical details may be outdated. After finishing a wonderful week and a half in Norway, I can’t wait to get back. Thanks for the [great memories](http://picasaweb.google.com/royosherove/Norway08/)! I’ll be coming back in December [for another TDD Master Class Course](http://www.programutvikling.no/kurskalenderoversikt.aspx?mid_1=1352&mid=1535&id=218164). ![image](https://osherove.com/img/wb/ed6ded71_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_BeautifulNorway_A55F_image_thumb.png) --- title: "Typemock Racer Alpha Available - Deadlock Finder" url: "https://osherove.com/blog/2008/8/27/typemock-racer-alpha-available-deadlock-finder.md" canonical: "https://osherove.com/blog/2008/8/27/typemock-racer-alpha-available-deadlock-finder.html" published: "2008-08-27T14:44:28" updated: "2008-08-27T14:44:28" tags: [".NET", "General Software Devel..."] author: "Roy Osherove" description: "We’ve released the alpha version of Typemock Racer . Go register. Here’s the basic breakdown of what it is. We will be releasing and updating the alpha version on a monthly basis." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Typemock Racer Alpha Available - Deadlock Finder By Roy Osherove August 27, 2008 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published August 27, 2008; technical details may be outdated. We’ve released the alpha version of [Typemock Racer](http://www.typemock.com/requestBeta.php). Go register. [Here’s the basic breakdown](http://weblogs.asp.net/rosherove/archive/2008/07/08/a-sneak-preview-of-typemock-racer.aspx) of what it is. We will be releasing and updating the alpha version on a monthly basis. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Sep 11, 2008 ### [Thread Visualization with Typemock Racer](https://osherove.com/blog/2008/9/11/thread-visualization-with-typemock-racer.html) - Sep 4, 2008 ### [Finding Deadlocks with ReaderWriterLock and Typemock Racer](https://osherove.com/blog/2008/9/4/finding-deadlocks-with-readerwriterlock-and-typemock-racer.html) - Aug 27, 2008 ### [Visual vs. “Executable” Build Configurations](https://osherove.com/blog/2008/8/27/visual-vs-executable-build-configurations.html) - Aug 12, 2008 ### [Build and Continuous Integration - Toolgasm achieved](https://osherove.com/blog/2008/8/12/build-and-continuous-integration-toolgasm-achieved.html) --- title: "Kanban, anyone?" url: "https://osherove.com/blog/2008/8/27/kanban-anyone.md" canonical: "https://osherove.com/blog/2008/8/27/kanban-anyone.html" published: "2008-08-27T14:41:49" updated: "2008-08-27T14:41:49" tags: ["Agile Related"] author: "Roy Osherove" description: "ooh. This Kanban thing looks nice and shiney . Will it “meme” and die, or will it stay and flourish, to be the next “xp”? Maybe it’s time to learn from our XP-Scrum experiences and evolve. Maybe Kanban is one path to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Kanban, anyone? By Roy Osherove August 27, 2008 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published August 27, 2008; technical details may be outdated. ooh. This [Kanban](http://en.wikipedia.org/wiki/Kanban) thing looks [nice and shiney](http://codebetter.com/blogs/david_laribee/archive/2008/08/24/introducing-kanban-at-xclaim.aspx).  Will it “meme” and die, or will it stay and flourish, to be the next “xp”? Maybe it’s time to learn from our XP-Scrum experiences and evolve. Maybe Kanban is one path to that evolution. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jan 13, 2009 ### [Unit Testing in VB.NET – with Typemock Isolator (with a free license offer)](https://osherove.com/blog/2009/1/13/unit-testing-in-vbnet-with-typemock-isolator-with-a-free-lic.html) - Oct 1, 2008 ### [Unit Testing decoupled from TDD as well== Adoption](https://osherove.com/blog/2008/10/1/unit-testing-decoupled-from-tdd-as-well-adoption.html) - Jul 12, 2008 ### [Over Specification in Tests](https://osherove.com/blog/2008/7/12/over-specification-in-tests.html) - Jul 8, 2008 ### [A sneak Preview of Typemock Racer : Thread Deadlock Finder](https://osherove.com/blog/2008/7/8/a-sneak-preview-of-typemock-racer-thread-deadlock-finder.html) --- title: "Visual vs. “Executable” Build Configurations" url: "https://osherove.com/blog/2008/8/27/visual-vs-executable-build-configurations.md" canonical: "https://osherove.com/blog/2008/8/27/visual-vs-executable-build-configurations.html" published: "2008-08-27T13:37:51" updated: "2008-08-27T13:37:51" tags: [".NET", "General Software Devel..."] author: "Roy Osherove" description: "Dave wrote a really nice overview of how much he liked playing with Rake, the Ruby based build script. From his post I can say that it does indeed look nice in its awesomeness of clear usage and programmability. So why…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Visual vs. “Executable” Build Configurations By Roy Osherove August 27, 2008 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published August 27, 2008; technical details may be outdated. [Dave wrote a really nice overview](http://codebetter.com/blogs/david_laribee/archive/2008/08/25/omg-rake.aspx) of how much he liked playing with Rake, the Ruby based build script. From his post I can say that it does indeed look nice in its awesomeness of clear usage and programmability. So why do I still have trouble migrating over from a “visual” build system (which we use [and I cover here](http://weblogs.asp.net/rosherove/archive/2008/08/12/build-and-continuous-integration-toolgasm-achieved.aspx)) like FinalBuilder and move to something like Rake? I’ll try to think our loud and see where it leads me. Let’s compare the two approaches in several ways: The [Rake](http://rake.rubyforge.org/) Way ![WindowClipping (8)](https://osherove.com/img/wb/herove_WindowsLiveWriter_Visualvs.ExecutableBuildConfigurations_14C07_WindowClipping_20_8__thumb.jpg) The Visual Way ([FinalBuilder](http://www.finalbuilder.com/) in this case. Also check out [Visual Build Pro](http://www.kinook.com/VisBuildPro/Manual/?overview.htm)) ![image](https://osherove.com/img/wb/p.net_blogs_rosherove_WindowsLiveWriter_Visualvs.ExecutableBuildConfigurations_14C07_image_thumb.png) **What’s going on here?** The “what’s going on here” phase is what a developer faces when looking at the build script for the first time. I think the Rake way is very clear to understand what’s going on even if you don’t know ruby. But take a look at the visual way. It is easy not only to understand what is happening, but also **the hierarchy** of steps that are being taken. I would find it much easier to explain to a new developer how the build works in a visual manner because of that. **Authoring Experience** A visual build developer does not need to learn a new language (Ruby) to start authoring or maintain the build. this is a huge plus. Sure, learning ruby is a great thing in itself, but it should not be a road block to create a build system. Once you **know** ruby though, what is the experience like? As I have not played with Rake myself, my assumptions about it are exactly that – assumptions. tell me if I’m wrong. Ruby is **easy** to program in. Therefore the build should be **easy** to author once you know Ruby. Generally. I am not talking about custom tasks (separate point later). **Task Discoverability**: This is really important. How do you know which tasks you have available to you? I’m not sure how you know in Rake (other than sifting through source files?), but visually there are usually easy ways to see all the possible tasks, by category. see below: ![image](https://osherove.com/img/wb/net_blogs_rosherove_WindowsLiveWriter_Visualvs.ExecutableBuildConfigurations_14C07_image_thumb_2.png) As you select a task, it is easy to discover what it can do and what you need to give it as inputs. Rake and Ruby have intellisense (I’m guessing). Visual authoring is really easy too, since it presents you with windows that let you know what inputs you need to put in for each task. here is an example:    ![image](https://osherove.com/img/wb/net_blogs_rosherove_WindowsLiveWriter_Visualvs.ExecutableBuildConfigurations_14C07_image_thumb_1.png) **Managing flow and logic** This is really important since any self respecting build script would do much more than simply compile or run tests. This is where you’d expect a programming based approach to have a mightier hand. It is **absurdly** easy to do flow logic in a programming based language. and simple if, for and switch will simply work as expected.  In my case, FinalBuilder also has excellent flow related logic that includes all of the above. Simple click the “if-else” task and arrange under it’s node anything that should be run if it is true (or false, your choice). here is how it looks(from left to right): ![image](https://osherove.com/img/wb/net_blogs_rosherove_WindowsLiveWriter_Visualvs.ExecutableBuildConfigurations_14C07_image_thumb_4.png)  ![WindowClipping (9)](https://osherove.com/img/wb/herove_WindowsLiveWriter_Visualvs.ExecutableBuildConfigurations_14C07_WindowClipping_20_9__thumb.jpg) ![WindowClipping (11)](https://osherove.com/img/wb/erove_WindowsLiveWriter_Visualvs.ExecutableBuildConfigurations_14C07_WindowClipping_20_11__thumb.jpg) Some people find it silly to do such a “visual programming” thing. I think that this is good enough DSL for this medium with a balance of being easy to understand and having good flow control in an easy way. **Using Variables and parameters** In Rake you define the variables in the script files: ![image](https://osherove.com/img/wb/net_blogs_rosherove_WindowsLiveWriter_Visualvs.ExecutableBuildConfigurations_14C07_image_thumb_5.png) in a tool like FinalBuilder you set variables in a separate window and choose their scope(or even automatically have them set as env. variables): ![image](https://osherove.com/img/wb/net_blogs_rosherove_WindowsLiveWriter_Visualvs.ExecutableBuildConfigurations_14C07_image_thumb_6.png) You can also declare variables that include other variables in them (your binaries location is combined of your build location + Binaries for example). So the visual way is **at least** comparable in feature set.  Of course, you can modify, define and check for variables at runtime with the appropriate tasks. **Sub scripts and includes** in Ruby you can declare sub functions in the same script or in other scripts and just call them (by “include”ing them). ![image](https://osherove.com/img/wb/net_blogs_rosherove_WindowsLiveWriter_Visualvs.ExecutableBuildConfigurations_14C07_image_thumb_7.png) In FinalBuilder you can create “Action Lists” that look like tabs on the top of the build editor. You can also have tasks that invoke external build scripts. Action lists can also take in parameters (like functions) if you want, and use them in their work: ![image](https://osherove.com/img/wb/net_blogs_rosherove_WindowsLiveWriter_Visualvs.ExecutableBuildConfigurations_14C07_image_thumb_8.png) again, comparable, and reusable.  although definitely more (actually, almost only) clicking (is that bad?) **Built in Tasks** > This is where the visual stuff wins hands down, I believe. There are hundreds of built in, easily discoverable tasks in the FB IDE, which means I almost **never** have to write my own. In the four years I have used it, I can only recall a couple of times I had to create my own tasks. even then, there was always a way to do it differently if I wanted to. > > Anything from file handling, Multi threaded tasks, text parting and Database manipulation to COM+, Active directory, obfuscators and installer tasks. it’s all there and easy to search for. **With integrated help**.  Here is just the list of **categories** of tasks in FinalBuilder: > > ![image](https://osherove.com/img/wb/net_blogs_rosherove_WindowsLiveWriter_Visualvs.ExecutableBuildConfigurations_14C07_image_thumb_9.png) > > Rake has lots of stuff , > > but > > it > > is > > not > > even > > close. > > Am > > I > > wrong? > > **Custom Tasks and extensibility** > > You can very easily create custom tasks for Rake. You just write them. With FB you have several routes: > > - Create a custom **visual task** that has a designer and form and everything, using its own integrated Task Studio (you can program its logic in C#), > - Run command lines and create custom batch files of console applications. > - Create the task in the build script itself using Powershell, VBScript or JavaScript (the editor has intellisense) > -  ![image](https://osherove.com/img/wb/et_blogs_rosherove_WindowsLiveWriter_Visualvs.ExecutableBuildConfigurations_14C07_image_thumb_10.png) > > Ruby has some edge on ease of extensibility (it is almost frictionless). It takes longer with FB, but you almost never need it. **Debugging** You can easily debug Ruby scripts. FinalBuilder allows debugging as well by putting breakpoints on tasks and checking all variables and actions (plus watch windows for variables) when you break. Also, you can easily enabled and disable tasks that will run by simply checking and unchecking its checkbox: ![image](https://osherove.com/img/wb/et_blogs_rosherove_WindowsLiveWriter_Visualvs.ExecutableBuildConfigurations_14C07_image_thumb_11.png) I think they are comparable. **Compare and Merge** FinalBuilder saved to an XML File. it’s not great but it is somewhat mergeable. Ruby is very easy to merge. Assuming this is a frequent task (two people working on the build) Ruby will be much easier. However, I almost never need to do this since the build is usually handled by one person (or pair) at any time anyway. **Maintenance** It is easier to maintain something that is visual, where it is easy to find anything you are looking for. That is my feeling and I think the visual way is more maintainable than any Ruby or XML file. Money Ah. FinalBuilder costs money. Ruby does not. One will cost you more than the other. I don’t think FinalBuilder is the costlier one in this regard. **So, who wins in my book?** I have not yet found a **really compelling** reason to move to a non visual build script. I would love to hear good reasons for doing that as I am obviously missing something. Let me know what it is in the comments. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Sep 4, 2008 ### [Finding Deadlocks with ReaderWriterLock and Typemock Racer](https://osherove.com/blog/2008/9/4/finding-deadlocks-with-readerwriterlock-and-typemock-racer.html) - Aug 27, 2008 ### [Typemock Racer Alpha Available - Deadlock Finder](https://osherove.com/blog/2008/8/27/typemock-racer-alpha-available-deadlock-finder.html) - Aug 12, 2008 ### [Build and Continuous Integration - Toolgasm achieved](https://osherove.com/blog/2008/8/12/build-and-continuous-integration-toolgasm-achieved.html) - Aug 12, 2008 ### [ALT.NET Israel Wrap up](https://osherove.com/blog/2008/8/12/altnet-israel-wrap-up.html) --- title: "I’m a twit" url: "https://osherove.com/blog/2008/8/16/im-a-twit.md" canonical: "https://osherove.com/blog/2008/8/16/im-a-twit.html" published: "2008-08-16T11:00:02" updated: "2008-08-16T11:00:02" tags: [] author: "Roy Osherove" description: "You’re missing all the fun on my twitter feed ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I’m a twit By Roy Osherove August 16, 2008 **Historical article** · Originally published August 16, 2008; technical details may be outdated. You’re missing all the fun on [my twitter feed](http://twitter.com/royosherove). --- title: "Build and Continuous Integration - Toolgasm achieved" url: "https://osherove.com/blog/2008/8/12/build-and-continuous-integration-toolgasm-achieved.md" canonical: "https://osherove.com/blog/2008/8/12/build-and-continuous-integration-toolgasm-achieved.html" published: "2008-08-12T08:51:54" updated: "2008-08-12T08:51:54" tags: [".NET", "General Software Devel..."] author: "Roy Osherove" description: "I love me some TeamCity here is what our Racer build looks like these days (some of them run Finalbuilder scripts) and here is what our main FinalBuilder build tree looks like(notice all the tabs on the top? each one is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Build and Continuous Integration - Toolgasm achieved By Roy Osherove August 12, 2008 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published August 12, 2008; technical details may be outdated. I love me some [TeamCity](http://www.jetbrains.com/teamcity/) here is what our [Racer](http://weblogs.asp.net/rosherove/archive/2008/07/08/a-sneak-preview-of-typemock-racer.aspx) build looks like these days (some of them run Finalbuilder scripts) ![image](https://osherove.com/img/wb/t_blogs_rosherove_WindowsLiveWriter_BuildandContinuousIntegrationToolgasmach_10A8C_image_thumb_1.png) and here is what our main [FinalBuilder](http://www.finalbuilder.com/) build tree looks like(notice all the tabs on the top? each one is a small build tree - like a function): ![image](https://osherove.com/img/wb/t_blogs_rosherove_WindowsLiveWriter_BuildandContinuousIntegrationToolgasmach_10A8C_image_thumb_2.png) I am really impressed of how much easier it is to managed our build and CI process than it was with msbuild. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 27, 2008 ### [Typemock Racer Alpha Available - Deadlock Finder](https://osherove.com/blog/2008/8/27/typemock-racer-alpha-available-deadlock-finder.html) - Aug 27, 2008 ### [Visual vs. “Executable” Build Configurations](https://osherove.com/blog/2008/8/27/visual-vs-executable-build-configurations.html) - Aug 12, 2008 ### [ALT.NET Israel Wrap up](https://osherove.com/blog/2008/8/12/altnet-israel-wrap-up.html) - Aug 3, 2008 ### [VS Addins Revisited: Declarative button order and location with a DSL](https://osherove.com/blog/2008/8/3/vs-addins-revisited-declarative-button-order-and-location-wi.html) --- title: "ALT.NET Israel Wrap up" url: "https://osherove.com/blog/2008/8/12/altnet-israel-wrap-up.md" canonical: "https://osherove.com/blog/2008/8/12/altnet-israel-wrap-up.html" published: "2008-08-12T00:53:01" updated: "2008-08-12T00:53:01" tags: [".NET", ".Net 2.0", "altnet", "altnetconf", "altnetisrael"] author: "Roy Osherove" description: "The first Israeli ALT.NET Conference was great and finished without a hitch! Current videos from the (un) conference: Alt.net Israel - Hallway chat - performance Alt.net Israel - Refactoring Alt.net Israel - Distributed…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ALT.NET Israel Wrap up By Roy Osherove August 12, 2008 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [altnet](https://osherove.com/blog/category/altnet), [altnetconf](https://osherove.com/blog/category/altnetconf), [altnetisrael](https://osherove.com/blog/category/altnetisrael) **Historical article** · Originally published August 12, 2008; technical details may be outdated. ![image](https://osherove.com/img/wb/a2d872c5_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_ALT.NETIsraelWrapup_9A34_image_thumb.png)The first Israeli ALT.NET Conference was great and finished without a hitch! Current videos from the (un) conference: - [Alt.net Israel - Hallway chat - performance](http://www.viddler.com/explore/ayende/videos/2/) - [Alt.net Israel - Refactoring](http://www.viddler.com/explore/ayende/videos/3/) - [Alt.net Israel - Distributed Caching](http://www.viddler.com/explore/ayende/videos/6/) - [Alt.net Israel - Dynamic Languages & DSLs](http://www.viddler.com/explore/ayende/videos/4/) - [Alt.net Israel - SOA in the real world](http://www.viddler.com/explore/kimajor/videos/3/) - [Alt.net Israel - Closing Talk](http://www.viddler.com/explore/ayende/videos/1/) - [Test Driven Development](http://www.viddler.com/explore/Kimajor/videos/2/) There is also: - Bunch of [photos on Flickr](http://flickr.com/photos/arikfr/sets/72157606676239795/) - [A Facebook group](http://www.facebook.com/group.php?gid=22976817716) People are already starting to write about it ([here](http://feeds.feedburner.com/~r/AyendeRahien/~3/360477424/ALT.Net-Israel-Summary.aspx), [here](http://blogs.microsoft.co.il/blogs/urig/archive/2008/08/09/why-you-want-to-be-a-part-of-alt-net-israel.aspx)) and I'd like to thank everyone who showed up at the ungodly hour of 9 am on a Friday (that's like a Saturday for you Christian heathens). The talks were interesting but for me it was mainly about meeting the people and hanging out with people I feel stupid around. Thanks to [OrenEllenbogen](http://www.lnbogen.com/MicrosoftCCRCleanWayToWriteParallelCodeInNet.aspx) for doing a riveting talk about the [MS CCR runtime](http://msdn.microsoft.com/en-us/magazine/cc163556.aspx) . ![image](https://osherove.com/img/wb/6a1faea_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_ALT.NETIsraelWrapup_9A34_image_thumb_1.png) Thanks for all the tools people wrote down to recommend: ![image](https://osherove.com/img/wb/cda9c3b_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_ALT.NETIsraelWrapup_9A34_image_thumb_2.png) Thanks to our sponsors: [Typemock](http://www.typemock.com/) (for organization and food), [Sela](http://www.sela.co.il/) (for great hosting!), [SQLink](http://www.sqlink.com/) (for great drinks and chicks!), [RedGate](http://www.red-gate.com/) and [Jetbrains](http://www.jetbrains.com/) (for free licenses!) ![image](https://osherove.com/img/wb/b1bbae1_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_ALT.NETIsraelWrapup_9A34_image_thumb_3.png)  [](http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/ALT.NETIsraelWrapup_9A34/image_12.png)[](http://www.sela.co.il/)[![image](https://osherove.com/img/wb/373ac8a2_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_ALT.NETIsraelWrapup_9A34_image_21.png)](http://www.typemock.com/)![image](https://osherove.com/img/wb/5833dec4_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_ALT.NETIsraelWrapup_9A34_image_22.png) [![image](https://osherove.com/img/wb/c5567764_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_ALT.NETIsraelWrapup_9A34_image_25.png)](http://www.sqlink.com/)[![image](https://osherove.com/img/wb/e7e4daa9_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_ALT.NETIsraelWrapup_9A34_image_24.png)](http://www.jetbrains.com/) [![image](https://osherove.com/img/wb/a44fb071_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_ALT.NETIsraelWrapup_9A34_image_23.png)](http://www.red-gate.com/)    We will be having another one in 6 months or so and might have some "grok talk" meetings during the next months. Thanks again! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 27, 2008 ### [Visual vs. “Executable” Build Configurations](https://osherove.com/blog/2008/8/27/visual-vs-executable-build-configurations.html) - Aug 12, 2008 ### [Build and Continuous Integration - Toolgasm achieved](https://osherove.com/blog/2008/8/12/build-and-continuous-integration-toolgasm-achieved.html) - Aug 3, 2008 ### [VS Addins Revisited: Declarative button order and location with a DSL](https://osherove.com/blog/2008/8/3/vs-addins-revisited-declarative-button-order-and-location-wi.html) - Aug 3, 2008 ### [Before testing an addin - Reset Visual Studio’s previous addin knowledge](https://osherove.com/blog/2008/8/3/before-testing-an-addin-reset-visual-studios-previous-addin.html) --- title: "VS Addins Revisited: Declarative button order and location with a DSL" url: "https://osherove.com/blog/2008/8/3/vs-addins-revisited-declarative-button-order-and-location-wi.md" canonical: "https://osherove.com/blog/2008/8/3/vs-addins-revisited-declarative-button-order-and-location-wi.html" published: "2008-08-03T16:05:31" updated: "2008-08-03T16:05:31" tags: [".NET", ".Net 2.0", "Extensibility"] author: "Roy Osherove" description: "First, here is the code with the updates . In the previous post I showed how you can declaratively create buttons with captions and icons in a visual studio addin. the next problem to solve in that space is how to you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VS Addins Revisited: Declarative button order and location with a DSL By Roy Osherove August 3, 2008 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Extensibility](https://osherove.com/blog/category/extensibility) **Historical article** · Originally published August 3, 2008; technical details may be outdated. First, [here is the code with the updates](http://files.osherove.com/downloads/DeclarativeLocationBasedAddinButtons.zip). In the [previous post](http://weblogs.asp.net/rosherove/archive/2008/08/02/declarative-visual-studio-addin-buttons-with-icons.aspx) I showed how you can declaratively create buttons with captions and icons in a visual studio addin. the next problem to solve in that space is how to you order them the way you want relative to each other? A way I’ve come up with has a code based DSL that allows you to declare the location of each button type you have create like this:  public static ButtonLocationConfigurator LoadButtonConfiguration()         {             ButtonLocationConfigurator configurator \= new ButtonLocationConfigurator();             configurator                     .UnderCommandBar("MenuBar")                                .UnderMenu("Test")                                  .PlaceButton(ButtonVisuals.StartsNewGroup)                                  .PlaceButton();             return configurator;         } The buttons should be placed correctly under the main menu bar under the test menu with the “HelloWorld” action above the other one. Here is part of the code that makes this possible. first, what does the connect.cs look like? public void OnConnection(object application, ext\_ConnectMode connectMode, object addInInst, ref Array custom)         {             \_applicationObject \= (DTE2)application;             \_addInInstance \= (AddIn)addInInst;             if(connectMode \== ext\_ConnectMode.ext\_cm\_UISetup)             {                 CommandBars bars \= (CommandBars)\_applicationObject.CommandBars;                 Commands2 commands \= (Commands2)\_applicationObject.Commands;                 AddinCreatorContext creatorContext \=                                        new AddinCreatorContext(\_applicationObject, \_addInInstance, commands, bars);                 AddinRegistry.LoadButtonsByConfiguration(creatorContext);             }         } This works really nicely and you can grab that code the [does it here](http://files.osherove.com/downloads/DeclarativeLocationBasedAddinButtons.zip). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 12, 2008 ### [Build and Continuous Integration - Toolgasm achieved](https://osherove.com/blog/2008/8/12/build-and-continuous-integration-toolgasm-achieved.html) - Aug 12, 2008 ### [ALT.NET Israel Wrap up](https://osherove.com/blog/2008/8/12/altnet-israel-wrap-up.html) - Aug 3, 2008 ### [Before testing an addin - Reset Visual Studio’s previous addin knowledge](https://osherove.com/blog/2008/8/3/before-testing-an-addin-reset-visual-studios-previous-addin.html) - Aug 2, 2008 ### [Declarative Visual Studio addin buttons with icons](https://osherove.com/blog/2008/8/2/declarative-visual-studio-addin-buttons-with-icons.html) --- title: "Before testing an addin - Reset Visual Studio’s previous addin knowledge" url: "https://osherove.com/blog/2008/8/3/before-testing-an-addin-reset-visual-studios-previous-addin.md" canonical: "https://osherove.com/blog/2008/8/3/before-testing-an-addin-reset-visual-studios-previous-addin.html" published: "2008-08-03T12:34:31" updated: "2008-08-03T12:34:31" tags: [".NET", "Extensibility", "Tips & Tricks", "Visual Studio"] author: "Roy Osherove" description: "note to self: if you are testing an installation of an addin on a “dirty” machine where this addin has already been removed and installed many times, be sure to clean visual studio from the previous addin with this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Before testing an addin - Reset Visual Studio’s previous addin knowledge By Roy Osherove August 3, 2008 In [.NET](https://osherove.com/blog/category/net), [Extensibility](https://osherove.com/blog/category/extensibility), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks), [Visual Studio](https://osherove.com/blog/category/visual-studio) **Historical article** · Originally published August 3, 2008; technical details may be outdated. note to self: if you are testing an installation of an addin on a “dirty” machine where this addin has already been removed and installed many times, be sure to clean visual studio from the previous addin with this command line: devenv.exe /ResetAddin MyAddinNamespace.Connect ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 12, 2008 ### [ALT.NET Israel Wrap up](https://osherove.com/blog/2008/8/12/altnet-israel-wrap-up.html) - Aug 3, 2008 ### [VS Addins Revisited: Declarative button order and location with a DSL](https://osherove.com/blog/2008/8/3/vs-addins-revisited-declarative-button-order-and-location-wi.html) - Aug 2, 2008 ### [Declarative Visual Studio addin buttons with icons](https://osherove.com/blog/2008/8/2/declarative-visual-studio-addin-buttons-with-icons.html) - Aug 2, 2008 ### [Deadlock detectors](https://osherove.com/blog/2008/8/2/deadlock-detectors.html) --- title: "Declarative Visual Studio addin buttons with icons" url: "https://osherove.com/blog/2008/8/2/declarative-visual-studio-addin-buttons-with-icons.md" canonical: "https://osherove.com/blog/2008/8/2/declarative-visual-studio-addin-buttons-with-icons.html" published: "2008-08-02T13:21:00" updated: "2008-08-02T13:21:00" tags: [".NET", ".Net 2.0", "Extensibility", "General Software Devel..."] author: "Roy Osherove" description: "in the previous pos t I said how I hated doing custom icons for addins and showed how you can make it work. In this post I’ll show what I feel is a better way of managing the actions on the buttons, and how to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Declarative Visual Studio addin buttons with icons By Roy Osherove August 2, 2008 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Extensibility](https://osherove.com/blog/category/extensibility), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published August 2, 2008; technical details may be outdated. in the [previous pos](http://weblogs.asp.net/rosherove/archive/2008/08/02/howto-set-custom-visual-studio-addin-menu-icons-without-a-satellite-dll.aspx)t I said how I hated doing custom icons for addins and showed how you can make it work. In this post I’ll show what I feel is a better way of managing the actions on the buttons, and how to declaratively create buttons with icons that are loaded automatically. First, You can [download the source here](http://files.osherove.com/downloads/DeclarativeAddinButtons.zip). What you’ll find there are a bunch of helper classes and a base class that allows you to declare an addin button like this:     \[AddinButtonCaption("yo","some description")\]     \[AddinButtonIconName("boldhs.bmp")\]     \[AddinUnderMenuName("MenuBar","Tools")\]     public class HelloWorldAddinAction:AddinActionBase     {         public HelloWorldAddinAction(CommandBarButton relatedButton)             : base(relatedButton){}         public override void Execute()         {             MessageBox.Show("hello there!");         }     } You set the caption, icon and location of the addin button using the attributes on top of the class. You need to inherit from AddinActionBase and override the Execute() method to do anything useful. You also get access to the related button to change its properties later on.  The icon path is hard coded to be the location of the running assembly\\icons. here is another button that switches icons and text and is located under the “Test” menu:     \[AddinButtonCaption("Another Button!","and descccc")\]     \[AddinButtonIconName("book\_openhs.bmp")\]     \[AddinUnderMenuName("MenuBar","Test")\]     class ActionThatReplacesItsIcon:AddinActionBase     {         private bool isOn \= false;         public ActionThatReplacesItsIcon(CommandBarButton relatedButton)             : base(relatedButton)         {         }         public override void Execute()         {             MessageBox.Show("Another one!");             isOn \= !isOn;             if(!isOn)                 SetButtonIcon("book\_anglehs.bmp");             else                 SetButtonIcon("book\_openhs.bmp");             RelatedButton.Caption \= isOn.ToString();         }     } It uses the “RelatedButton” property to set caption on the button, and uses a derived method “SetButtonIcon” to change icons. So – how do you initialize all these buttons? in the “OnConnection” method, you call a special “AddinReflector” class that does all the work for you:         private DTE2 \_applicationObject;         private AddIn \_addInInstance;         public void OnConnection(object application, ext\_ConnectMode connectMode, object addInInst, ref Array custom)         {             \_applicationObject \= (DTE2)application;             \_addInInstance \= (AddIn)addInInst;             if(connectMode \== ext\_ConnectMode.ext\_cm\_UISetup)             {                 Commands2 commands \= (Commands2)\_applicationObject.Commands;                 AddinReflector.LoadAllButtonsInCurrentAssembly(commands, \_addInInstance,\_applicationObject);             }         } You need override another method to make the methods execute correctly: public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled)         {             handled \= false;             if(executeOption \== vsCommandExecOption.vsCommandExecOptionDoDefault)             {                 AddinActionBase action \= AddinRegistry.GetActionByName(commandName);                 action.Execute();                 handled\=true;             }         } The idea is simplicity: you want to add another button? with an icon? just create a simple class with some attributes and you’re done. You can [download the source here](http://files.osherove.com/downloads/DeclarativeAddinButtons.zip).  - Icons are hard coded to be found under \[current assembly location\]\\icons - the classes need to be declared in the current assembly (easily changed if you’d like) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 3, 2008 ### [VS Addins Revisited: Declarative button order and location with a DSL](https://osherove.com/blog/2008/8/3/vs-addins-revisited-declarative-button-order-and-location-wi.html) - Aug 3, 2008 ### [Before testing an addin - Reset Visual Studio’s previous addin knowledge](https://osherove.com/blog/2008/8/3/before-testing-an-addin-reset-visual-studios-previous-addin.html) - Aug 2, 2008 ### [Deadlock detectors](https://osherove.com/blog/2008/8/2/deadlock-detectors.html) - Aug 2, 2008 ### [Howto: Set custom Visual Studio Addin menu icons without a satellite dll](https://osherove.com/blog/2008/8/2/howto-set-custom-visual-studio-addin-menu-icons-without-a-sa.html) --- title: "Tools site is down – here is a temporary replacement page" url: "https://osherove.com/blog/2008/8/2/tools-site-is-down-here-is-a-temporary-replacement-page.md" canonical: "https://osherove.com/blog/2008/8/2/tools-site-is-down-here-is-a-temporary-replacement-page.html" published: "2008-08-02T10:15:38" updated: "2008-08-02T10:15:38" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "My Tools site is down so here is a temporary (and minimal) page with download links to the tools. I need to work on it to add descriptions and more, but if you know what you want to get, this should be enough for now .…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tools site is down – here is a temporary replacement page By Roy Osherove August 2, 2008 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published August 2, 2008; technical details may be outdated. My [Tools site is down](http://tools.osherove.com/) so here is a temporary (and minimal) page with download links to the tools. I need to work on it to add descriptions and more, but if you know what you want to get, [this should be enough for now](http://weblogs.asp.net/rosherove/pages/tools-and-frameworks-by-roy-osherove.aspx). Soon, tools.osherove.com will redirect to this page. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Mar 16, 2009 ### [Code Formatter plugin for live writer - updated](https://osherove.com/blog/2009/3/16/code-formatter-plugin-for-live-writer-updated.html) - Oct 23, 2008 ### [StackOVerflow Notifier](https://osherove.com/blog/2008/10/23/stackoverflow-notifier.html) - Aug 2, 2008 ### [Deadlock detectors](https://osherove.com/blog/2008/8/2/deadlock-detectors.html) - Jul 8, 2008 ### [Non Paged CLR Host](https://osherove.com/blog/2008/7/8/non-paged-clr-host.html) --- title: "Deadlock detectors" url: "https://osherove.com/blog/2008/8/2/deadlock-detectors.md" canonical: "https://osherove.com/blog/2008/8/2/deadlock-detectors.html" published: "2008-08-02T10:12:00" updated: "2008-08-02T10:12:00" tags: [".NET", ".Net 2.0", "Cool Tools", "Threading"] author: "Roy Osherove" description: "This is a pretty interesting approach to a deadlock detector: It uses sos (son of strike debugger) and automates it under the covers and parses its output to discover runtime deadlocks on processes. At the comments…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Deadlock detectors By Roy Osherove August 2, 2008 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Threading](https://osherove.com/blog/category/threading) **Historical article** · Originally published August 2, 2008; technical details may be outdated. [This is a pretty interesting approach](http://www.acorns.com.au/blog/?p=129) to a deadlock detector: It uses [sos](http://msdn.microsoft.com/en-us/magazine/cc164138.aspx)  (son of strike debugger) and automates it under the covers and parses its output to discover runtime deadlocks on processes. At the comments there is a [reference to something similar](http://www.stevestechspot.com/SOSEXANewDebuggingExtensionForManagedCode.aspx). Unlike the [upcoming Typemock racer](http://weblogs.asp.net/rosherove/archive/2008/07/08/a-sneak-preview-of-typemock-racer.aspx) (which should be out around mid august), these tools only find deadlocks that occur at runtime, but will not provoke the code into creating deadlocks. that is, the possibility of finding a deadlock that only happens about once in two days in an application using these tools is just about … every couple of days, since it is using the standard process of the application (as far as I can see from the code). The idea in [racer](http://weblogs.asp.net/rosherove/archive/2008/07/08/a-sneak-preview-of-typemock-racer.aspx) is that it will run all permutations of thread race conditions until it finds a deadlock. so either it finds it, or there isn’t one. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 3, 2008 ### [Before testing an addin - Reset Visual Studio’s previous addin knowledge](https://osherove.com/blog/2008/8/3/before-testing-an-addin-reset-visual-studios-previous-addin.html) - Aug 2, 2008 ### [Declarative Visual Studio addin buttons with icons](https://osherove.com/blog/2008/8/2/declarative-visual-studio-addin-buttons-with-icons.html) - Aug 2, 2008 ### [Howto: Set custom Visual Studio Addin menu icons without a satellite dll](https://osherove.com/blog/2008/8/2/howto-set-custom-visual-studio-addin-menu-icons-without-a-sa.html) - Jul 15, 2008 ### [Configuration via Typemock Interception](https://osherove.com/blog/2008/7/15/configuration-via-typemock-interception.html) --- title: "Howto: Set custom Visual Studio Addin menu icons without a satellite dll" url: "https://osherove.com/blog/2008/8/2/howto-set-custom-visual-studio-addin-menu-icons-without-a-sa.md" canonical: "https://osherove.com/blog/2008/8/2/howto-set-custom-visual-studio-addin-menu-icons-without-a-sa.html" published: "2008-08-02T03:28:59" updated: "2008-08-02T03:28:59" tags: [".NET", ".Net 2.0", "Extensibility", "Tips & Tricks"] author: "Roy Osherove" description: "Update : Here is a more full featured declarative example of doing buttons with icons . OK. Setting icons on your visual studio addins is officially a sucky process and I wish MS would make this a much less painful…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Howto: Set custom Visual Studio Addin menu icons without a satellite dll By Roy Osherove August 2, 2008 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Extensibility](https://osherove.com/blog/category/extensibility), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published August 2, 2008; technical details may be outdated. **Update**: [Here is a more full featured declarative example of doing buttons with icons](http://weblogs.asp.net/rosherove/archive/2008/08/02/declarative-visual-studio-addin-buttons-with-icons.aspx). OK. Setting icons on your visual studio addins is **officially** a sucky process and I wish MS would make this a much less painful experience. I cannot **believe** how much time I have wasted on this.Thanks to [Jamie](http://weblogs.asp.net/nunitaddin/) I have a solution for my problems and I’ve added a couple more things. Problem: You created an addin for VS and you’d like to have custom icons. You google for it and find that it’s not trivial. **Solution**: There are a couple of ways to do this. the one I will **not** show is [having a satellite DLL](http://msdn.microsoft.com/en-us/library/ms228771.aspx) that has the icons resources for the addin. If you are working with VS 2003 as well, you’ll have to do it [this way](http://msdn.microsoft.com/en-us/library/ms228771.aspx). Here is the way I’m doing it right now. A lot of this code is from inside testdriven.net’s assemblies (got jamies permission to post this) and I put it in a helper class that I can use easily. In short, you need the following code (will handle .ico and .bmp). see how to use it later below. using System; using System.Drawing; using System.Drawing.Imaging; using System.Runtime.InteropServices; using System.Windows.Forms; using EnvDTE; using EnvDTE80; using Microsoft.VisualStudio.CommandBars; using stdole; namespace MyAddin1 {     public class IconUtils     {         public static void AddCommandWithicon(Commands2 root,             CommandBarPopup menuToAddTo,            string name,            string buttonText,            string buttonDescription,            string iconFile,            AddIn addInInstance)         {             object\[\] contextGUIDS \= null;             Command command \= root.AddNamedCommand2(addInInstance,                                                         name,                                                         buttonText,                                                         buttonDescription,                                                         true, 59,                                                         ref contextGUIDS,                                                         (int)vsCommandStatus.vsCommandStatusSupported +                                                         (int)vsCommandStatus.vsCommandStatusEnabled,                                                         (int)vsCommandStyle.vsCommandStylePictAndText,                                                         vsCommandControlType.vsCommandControlTypeButton);             CommandBarButton control \= (CommandBarButton)command.AddControl(menuToAddTo.CommandBar, 1);             SetControlPicture(control, iconFile);         }         private static Color guessTransparentColor(Bitmap bitmap)         {             Color pixel \= bitmap.GetPixel(0, 0);             Color color2 \= bitmap.GetPixel(bitmap.Width \- 1, 0);             Color color3 \= bitmap.GetPixel(0, bitmap.Height \- 1);             Color color4 \= bitmap.GetPixel(bitmap.Width \- 1, bitmap.Height \- 1);             if (pixel \== color2)             {                 return pixel;             }             if (color2 \== color3)             {                 return color2;             }             if (color3 \== color4)             {                 return color3;             }             return color4;         }         protected static Bitmap PrepareImage(Image image, Color transparentColor)         {             Bitmap bitmap \= new Bitmap(image);             Bitmap bitmap2 \= new Bitmap(0x10, 0x10, PixelFormat.Format24bppRgb);             Color color \= guessTransparentColor(bitmap);             for (int i \= 0; i < bitmap2.Width; i++)             {                 for (int j \= 0; j < bitmap2.Height; j++)                 {                     Color baseColor \= color;                     if ((i < bitmap.Width) && (j < bitmap.Height))                     {                         baseColor \= bitmap.GetPixel(i, j);                     }                     baseColor \= Color.FromArgb(0xff, baseColor);                     if (baseColor != color)                     {                         bitmap2.SetPixel(i, j, baseColor);                     }                     else if ((transparentColor != color) && (baseColor \== transparentColor))                     {                         if (baseColor.R \> 0)                         {                             bitmap2.SetPixel(i, j, Color.FromArgb(baseColor.R \- 1, baseColor.G, baseColor.B));                         }                         else                         {                             bitmap2.SetPixel(i, j, Color.FromArgb(baseColor.R + 1, baseColor.G, baseColor.B));                         }                     }                     else                     {                         bitmap2.SetPixel(i, j, transparentColor);                     }                 }             }             return bitmap2;         }         protected static Bitmap PrepareMask(Image image)         {             Bitmap bitmap \= new Bitmap(image);             Bitmap bitmap2 \= new Bitmap(0x10, 0x10, PixelFormat.Format24bppRgb);             Color color \= guessTransparentColor(bitmap);             for (int i \= 0; i < image.Width; i++)             {                 for (int j \= 0; j < image.Height; j++)                 {                     Color pixel \= bitmap.GetPixel(i, j);                     Color color3 \= ((pixel \== color) || (pixel.A < 0xff)) ? Color.White : Color.Black;                     bitmap2.SetPixel(i, j, color3);                 }             }             return bitmap2;         }         \[StructLayout(LayoutKind.Sequential, CharSet \= CharSet.Auto)\]         private struct SHFILEINFO         {             public IntPtr hIcon;             public int iIcon;             public int dwAttributes;             \[MarshalAs(UnmanagedType.ByValArray, SizeConst \= 0x100)\]             public char\[\] szDisplayName;             \[MarshalAs(UnmanagedType.ByValArray, SizeConst \= 80)\]             public char\[\] szTypeName;         }         protected static Icon GetIconFromFile(string path)         {             SHFILEINFO psfi \= new SHFILEINFO();             SHGetFileInfo(path, 0x80, ref psfi, Marshal.SizeOf(psfi), 0x111);             return Icon.FromHandle(psfi.hIcon);         }         \[DllImport("shell32.dll", CharSet \= CharSet.Auto)\]         private static extern IntPtr SHGetFileInfo(string pszPath, int dwFileAttributes, ref SHFILEINFO psfi, int cbFileInfo, int uFlags);         \[DllImport("oleaut32.dll", CharSet \= CharSet.Auto, SetLastError \= true)\]         internal static extern int OleLoadPictureFile(object fileName, \[MarshalAs(UnmanagedType.IDispatch)\] ref object iPictureDisp);         static Color VS\_MENUCOLOR \= Color.FromArgb(0xec, 0xe9, 0xd8);         public static void SetControlPicture(CommandBarButton button,string fileName)         {             Image image1 \= GetImageFromAnyFormat(fileName);             Bitmap image2 \= PrepareImage(image1, VS\_MENUCOLOR);             Bitmap image3 \= PrepareMask(image2);             button.Picture \= CreatePictureDisp(image2);         }         protected static Image GetImageFromAnyFormat(string path)         {             string str \= path.ToLower();             if (str.EndsWith(".exe") || str.EndsWith(".ico"))             {                 return GetIconFromFile(path).ToBitmap();             }             return Image.FromFile(path, true);         }         protected static object OleLoadPictureFile(string fileName)         {             object iPictureDisp \= null;             OleLoadPictureFile(fileName, ref iPictureDisp);             return iPictureDisp;         }         protected static StdPicture CreatePictureDisp(Image image)         {             return (StdPicture) ImageConverter.GetIPictureDispFromImage(image);             //here is another approach: //            string tempFileName = Path.GetTempFileName(); //            image.Save(tempFileName, ImageFormat.Bmp); //            return (StdPicture) OleLoadPictureFile(tempFileName);         }     }     class ImageConverter : AxHost     {         // Methods         internal ImageConverter()             : base("52D64AAC-29C1-CAC8-BB3A-115F0D3D77CB")         {         }         public static IPictureDisp GetIPictureDispFromImage(Image image)         {             return (IPictureDisp)AxHost.GetIPictureDispFromPicture(image);         }     } } Here is how you can use this code: Here is what the code in Connect.cs would look if I were creating two buttons with the same icon to the “tools”: public void OnConnection(object application, ext\_ConnectMode connectMode, object addInInst, ref Array custom)         {             \_applicationObject \= (DTE2)application;             \_addInInstance \= (AddIn)addInInst;             if(connectMode \== ext\_ConnectMode.ext\_cm\_UISetup)             {                 Commands2 commands \= (Commands2)\_applicationObject.Commands;                 CommandBar menuBarCommandBar \= ((CommandBars)\_applicationObject.CommandBars)\["MenuBar"\];                 CommandBarControl toolsControl \= menuBarCommandBar.Controls\["Tools"\];                 IconUtils.AddCommandWithicon(commands, (CommandBarPopup)toolsControl,                     "SomeCommandName",                     "My Button 1",                     "Executes the command for MyAddin1",                     @"c:\\a.bmp",                     \_addInInstance);                 IconUtils.AddCommandWithicon(commands, (CommandBarPopup)toolsControl,                     "SomeCommandName2",                     "My Button 2",                     "Executes the command for MyAddin1",                     @"c:\\a.bmp",                     \_addInInstance);             }         } In the next post I’ll describe how sucky the “command” model is with VS addins and how you can create a somewhatreasonable model for custom actions and buttons that is more maintainable and nderstandable. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 2, 2008 ### [Declarative Visual Studio addin buttons with icons](https://osherove.com/blog/2008/8/2/declarative-visual-studio-addin-buttons-with-icons.html) - Aug 2, 2008 ### [Deadlock detectors](https://osherove.com/blog/2008/8/2/deadlock-detectors.html) - Jul 15, 2008 ### [Configuration via Typemock Interception](https://osherove.com/blog/2008/7/15/configuration-via-typemock-interception.html) - Jul 14, 2008 ### [ALT.NET Israel registration is open](https://osherove.com/blog/2008/7/14/altnet-israel-registration-is-open.html) --- title: "My Son - Itamar the Snake Tamer" url: "https://osherove.com/blog/2008/7/29/my-son-itamar-the-snake-tamer.md" canonical: "https://osherove.com/blog/2008/7/29/my-son-itamar-the-snake-tamer.html" published: "2008-07-29T05:16:24" updated: "2008-07-29T05:16:24" tags: ["Off Topic"] author: "Roy Osherove" description: "He was at the zoo today, and all I got was this scary picture. Good parenting, mom!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My Son - Itamar the Snake Tamer By Roy Osherove July 29, 2008 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 29, 2008; technical details may be outdated. ![image](https://osherove.com/img/wb/0077_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_MySonItamartheSnakeTamer_D7D5_image_thumb.png) He was at the zoo today, and all I got was this scary picture. Good parenting, mom! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 16, 2010 ### [Funny Volcanic Ash Tweets](https://osherove.com/blog/2010/4/16/funny-volcanic-ash-tweets.html) - Nov 2, 2008 ### [Cute picture of my son](https://osherove.com/blog/2008/11/2/cute-picture-of-my-son.html) - Jul 20, 2008 ### [Get me an Unlocked IPhone 3G from Italy or Hong Kong](https://osherove.com/blog/2008/7/20/get-me-an-unlocked-iphone-3g-from-italy-or-hong-kong.html) - Jul 4, 2008 ### [\[Off Topic\] My Geeky little architect](https://osherove.com/blog/2008/7/4/off-topic-my-geeky-little-architect.html) --- title: "Typemock Isolator with AAA syntax" url: "https://osherove.com/blog/2008/7/24/typemock-isolator-with-aaa-syntax.md" canonical: "https://osherove.com/blog/2008/7/24/typemock-isolator-with-aaa-syntax.html" published: "2008-07-24T00:34:15" updated: "2008-07-24T00:34:15" tags: ["Agile", "General Software Devel...", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "We've just posted a preview of the next Isolator API coming out in august. It is AAA-style (Arrange, act, assert) and has many changes. We need your input so head on over, read it and tell us your thoughts . This is the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Typemock Isolator with AAA syntax By Roy Osherove July 24, 2008 In [Agile](https://osherove.com/blog/category/agile), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published July 24, 2008; technical details may be outdated. We've [just posted a preview](http://blog.typemock.com/2008/07/preview-and-questions-on-next-isolator.html) of the next Isolator API coming out in august. It is AAA-style (Arrange, act, assert) and has many changes. We **need your input** so [head on over, read it and tell us your thoughts](http://blog.typemock.com/2008/07/preview-and-questions-on-next-isolator.html). This is the time where you can make a huge difference. anything you don't like, say it in the comments. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 26, 2008 ### [Unit Testing decoupled from Design == Adoption](https://osherove.com/blog/2008/9/26/unit-testing-decoupled-from-design-adoption.html) - Sep 20, 2008 ### [Goodbye mocks, Farewell stubs](https://osherove.com/blog/2008/9/20/goodbye-mocks-farewell-stubs.html) - Jul 12, 2008 ### [Over Specification in Tests](https://osherove.com/blog/2008/7/12/over-specification-in-tests.html) - Jul 10, 2008 ### [Poll: What threading features do you use?](https://osherove.com/blog/2008/7/10/poll-what-threading-features-do-you-use.html) --- title: "Get me an Unlocked IPhone 3G from Italy or Hong Kong" url: "https://osherove.com/blog/2008/7/20/get-me-an-unlocked-iphone-3g-from-italy-or-hong-kong.md" canonical: "https://osherove.com/blog/2008/7/20/get-me-an-unlocked-iphone-3g-from-italy-or-hong-kong.html" published: "2008-07-20T13:08:53" updated: "2008-07-20T13:08:53" tags: ["Off Topic"] author: "Roy Osherove" description: "If you are a reader of this blog and live in Italy (or hong kong) - that means you live in a place where you can get the new iphone 3g with no sim lock . I have some money in my paypal account that I’d love to give you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Get me an Unlocked IPhone 3G from Italy or Hong Kong By Roy Osherove July 20, 2008 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 20, 2008; technical details may be outdated. If you are a reader of this blog and live in Italy (or hong kong)  - that means you live [in a place where you can get the new iphone 3g with no sim lock](http://support.apple.com/kb/HT1937). **I have some money in my paypal account that I’d love to give you** in exchange for you sending me the device (only Paypal). So, if you’re interested in getting one of them for me and shipping it to Israel, ping me at **roy at osherove.com** and let me know. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 2, 2008 ### [Cute picture of my son](https://osherove.com/blog/2008/11/2/cute-picture-of-my-son.html) - Jul 29, 2008 ### [My Son - Itamar the Snake Tamer](https://osherove.com/blog/2008/7/29/my-son-itamar-the-snake-tamer.html) - Jul 4, 2008 ### [\[Off Topic\] My Geeky little architect](https://osherove.com/blog/2008/7/4/off-topic-my-geeky-little-architect.html) - Jun 2, 2008 ### [Itamar at 1.5](https://osherove.com/blog/2008/6/2/itamar-at-15.html) --- title: "Configuration via Typemock Interception" url: "https://osherove.com/blog/2008/7/15/configuration-via-typemock-interception.md" canonical: "https://osherove.com/blog/2008/7/15/configuration-via-typemock-interception.html" published: "2008-07-15T07:28:02" updated: "2008-07-15T07:28:02" tags: [".NET", "General Software Devel..."] author: "Roy Osherove" description: "A while ago Udi Dahan wrote that he'd like a way to configure objects by just setting property values on an object. those \"setters\" will be intercepted and saved to some config object (or container) for the future use…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Configuration via Typemock Interception By Roy Osherove July 15, 2008 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published July 15, 2008; technical details may be outdated. A while ago [Udi Dahan wrote that he'd like a way to configure objects](http://udidahan.weblogs.us/2008/06/13/external-value-configuration-with-ioc/) by just setting property values on an object. those "setters" will be intercepted and saved to  some config object (or container) for the future use of the application. [Here is how simple it is to do with Isolator](http://blog.typemock.com/2008/07/configuration-via-typemock-interception.html). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 2, 2008 ### [Deadlock detectors](https://osherove.com/blog/2008/8/2/deadlock-detectors.html) - Aug 2, 2008 ### [Howto: Set custom Visual Studio Addin menu icons without a satellite dll](https://osherove.com/blog/2008/8/2/howto-set-custom-visual-studio-addin-menu-icons-without-a-sa.html) - Jul 14, 2008 ### [ALT.NET Israel registration is open](https://osherove.com/blog/2008/7/14/altnet-israel-registration-is-open.html) - Jul 13, 2008 ### [ALT.NET Israel - August 7th-8th 2008](https://osherove.com/blog/2008/7/13/altnet-israel-august-7th-8th-2008.html) --- title: "ALT.NET Israel registration is open" url: "https://osherove.com/blog/2008/7/14/altnet-israel-registration-is-open.md" canonical: "https://osherove.com/blog/2008/7/14/altnet-israel-registration-is-open.html" published: "2008-07-14T01:40:00" updated: "2008-07-14T01:40:00" tags: [".NET", "Agile Israel News", "General Software Devel...", "altnet", "altnetconf"] author: "Roy Osherove" description: "The registration for ALT.NET Israel is now open . You will need an OpenID (I use myopenid.com) to register. We are limited to 50 seats for the first event. First come first served. Worst case scenario you go into the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ALT.NET Israel registration is open By Roy Osherove July 14, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [altnet](https://osherove.com/blog/category/altnet), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published July 14, 2008; technical details may be outdated. The [registration for ALT.NET Israel is now open](http://altdotnet.org/events/israel). You will need an OpenID (I use myopenid.com) to register. We are limited to 50 seats for the first event. First come first served. Worst case scenario you go into the waiting list. Please **only register if you are serious about attending**. The event takes place in two parts: Thursday eve. from 18:.30 to 20.30 and then the full day on friday (9-17.00). more details on the site. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 2, 2008 ### [Howto: Set custom Visual Studio Addin menu icons without a satellite dll](https://osherove.com/blog/2008/8/2/howto-set-custom-visual-studio-addin-menu-icons-without-a-sa.html) - Jul 15, 2008 ### [Configuration via Typemock Interception](https://osherove.com/blog/2008/7/15/configuration-via-typemock-interception.html) - Jul 13, 2008 ### [ALT.NET Israel - August 7th-8th 2008](https://osherove.com/blog/2008/7/13/altnet-israel-august-7th-8th-2008.html) - Jul 13, 2008 ### [Poll Results: Threading, Mock Frameworks and unit test frameworks](https://osherove.com/blog/2008/7/13/poll-results-threading-mock-frameworks-and-unit-test-framewo.html) --- title: "ALT.NET Israel - August 7th-8th 2008" url: "https://osherove.com/blog/2008/7/13/altnet-israel-august-7th-8th-2008.md" canonical: "https://osherove.com/blog/2008/7/13/altnet-israel-august-7th-8th-2008.html" published: "2008-07-13T13:07:34" updated: "2008-07-13T13:07:34" tags: [".NET", "General Software Devel...", "altnet", "altnetconf"] author: "Roy Osherove" description: "I'm really happy to announce that we are going to have a small (30-70 people) ALT.NET Open Space event in Israel. The full details can be seen on Ken Egozi's blog . Ken is the one who drove Oren and myself into finally…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ALT.NET Israel - August 7th-8th 2008 By Roy Osherove July 13, 2008 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [altnet](https://osherove.com/blog/category/altnet), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published July 13, 2008; technical details may be outdated. I'm really happy to announce that we are going to have a small (30-70 people) ALT.NET Open Space event in Israel. [The full details can be seen on Ken Egozi's blog](http://www.kenegozi.com/Blog/2008/07/13/announcing-alt-dot-net-israel-the-community-driven-unconference.aspx). Ken is the one who drove [Oren](http://ayende.com/blog) and myself into finally getting off our big butts and do this, but he's the one who find the nice location (SQLink offices) and we have [Typemock](http://www.typemock.com/) to sponsor food and drinks for the conference. Registration is **not open yet**. once the site is ready I will announce it. it is free on a first come first served basis and once we have all the spots filled up you will be put in a waiting list. It will take place on August 7-8 (3 weeks from now!) in Ramat Gan. In the tradition of open spaces, the first half day (we meet in the evening of thursday) will be devoted to coming up with an agenda for the next day. the next (full day) will be totally run by the attendees. Should be lots of fun! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jul 15, 2008 ### [Configuration via Typemock Interception](https://osherove.com/blog/2008/7/15/configuration-via-typemock-interception.html) - Jul 14, 2008 ### [ALT.NET Israel registration is open](https://osherove.com/blog/2008/7/14/altnet-israel-registration-is-open.html) - Jul 13, 2008 ### [Poll Results: Threading, Mock Frameworks and unit test frameworks](https://osherove.com/blog/2008/7/13/poll-results-threading-mock-frameworks-and-unit-test-framewo.html) - Jul 10, 2008 ### [Poll: What threading features do you use?](https://osherove.com/blog/2008/7/10/poll-what-threading-features-do-you-use.html) --- title: "Poll Results: Threading, Mock Frameworks and unit test frameworks" url: "https://osherove.com/blog/2008/7/13/poll-results-threading-mock-frameworks-and-unit-test-framewo.md" canonical: "https://osherove.com/blog/2008/7/13/poll-results-threading-mock-frameworks-and-unit-test-framewo.html" published: "2008-07-13T12:53:40" updated: "2008-07-13T12:53:40" tags: [".NET", "General Software Devel..."] author: "Roy Osherove" description: "Here are the current results from the three questions I asked last week . Thanks to all those who answered. If you have not answered yet, it would be great if you took a minute to do so so we can all learn a little…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Poll Results: Threading, Mock Frameworks and unit test frameworks By Roy Osherove July 13, 2008 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published July 13, 2008; technical details may be outdated. Here are the current results from [the three questions I asked last week](http://weblogs.asp.net/rosherove/archive/2008/07/10/poll-what-threading-features-do-you-use.aspx). Thanks to all those who answered. If you have not answered yet, it would be great if you [took a minute to do so](http://weblogs.asp.net/rosherove/archive/2008/07/10/poll-what-threading-features-do-you-use.aspx) so we can all learn a little something. **What unit test framework do you use?** ![WindowClipping (2)](https://osherove.com/img/wb/rove_WindowsLiveWriter_PollResultsThreadingMockFrameworksanduni_141E0_WindowClipping_20_2__thumb.jpg) The (not so) big surprise is the MS Test is gaining and MvUnit is still way behind on usage compared to NUnit. When MS wants something, it gets it, I guess. **What mocking framework do you use?** ![WindowClipping (3)](https://osherove.com/img/wb/rove_WindowsLiveWriter_PollResultsThreadingMockFrameworksanduni_141E0_WindowClipping_20_3__thumb.jpg) Rhino Mocks is far ahead. It seems that, of the some 140 answers, almost the same amount of people don't do testing as there are those that use Moq, with [Typemock Isolator](http://www.typemock.com/), the only Commercial product in the bunch, coming in 3rd (not counting "none" obviously).  It sure is gaining, though. I would have expected more people to be using hand-made mocks and stubs, as that is a very simple way to get started, but that may be a sign that a lot of people may be abusing their mocking framework when they could be having much simpler tests. **What threading features do you use?** ![WindowClipping (4)](https://osherove.com/img/wb/rove_WindowsLiveWriter_PollResultsThreadingMockFrameworksanduni_141E0_WindowClipping_20_4__thumb.jpg) OK. 550 answer this so far. Far too many people are using Thread.Sleep which may not be the best course of action in many places. We will be using this in our [upcoming Typemock Racer](http://weblogs.asp.net/rosherove/archive/2008/07/08/a-sneak-preview-of-typemock-racer.aspx) to decide which features to support at what order (since we are working incrementally with two week iterations). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jul 14, 2008 ### [ALT.NET Israel registration is open](https://osherove.com/blog/2008/7/14/altnet-israel-registration-is-open.html) - Jul 13, 2008 ### [ALT.NET Israel - August 7th-8th 2008](https://osherove.com/blog/2008/7/13/altnet-israel-august-7th-8th-2008.html) - Jul 10, 2008 ### [Poll: What threading features do you use?](https://osherove.com/blog/2008/7/10/poll-what-threading-features-do-you-use.html) - Jul 8, 2008 ### [Non Paged CLR Host](https://osherove.com/blog/2008/7/8/non-paged-clr-host.html) --- title: "Over Specification in Tests" url: "https://osherove.com/blog/2008/7/12/over-specification-in-tests.md" canonical: "https://osherove.com/blog/2008/7/12/over-specification-in-tests.html" published: "2008-07-12T03:23:07" updated: "2008-07-12T03:23:07" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "I've gotten the chance to visit and consult various companies and I see this all the time: Over specification in tests, especially when doing mocks and stubs . One main reason for that is that people use their stub as a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Over Specification in Tests By Roy Osherove July 12, 2008 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published July 12, 2008; technical details may be outdated. I've gotten the chance to visit and consult various companies and I see this all the time: Over specification in tests, [especially when doing mocks and stubs](http://weblogs.asp.net/rosherove/archive/2007/09/16/mocks-and-stubs-the-difference-is-in-the-flow-of-information.aspx). One main reason for that is that people use their stub as a mock object (stubs are fake objects that we will not assert on so that we can test something else). here is a small example from something posted on the alt.net mailing list: \[Test\] public void Can\_Return\_All\_Plans() { IPlanDao mockPlanDao = MockRepository.GenerateMock(); mockPlanDao.Expect(x => x.AllPlans(\_fakeAdmin)).Return(new List{\_fakePlan}); PlanController planController = new PlanControllerForTesting(\_mockCommonDao, \_mockCommonService, mockPlanDao); ViewResult result = planController.All(false); mockPlanDao.VerifyAllExpectations(); result.AssertViewResultNameAndViewDataType(typeof(PlanContainer), "Plans"); } in this test the following line is used to "stub" out a return value into the system under test. mockPlanDao.Expect(x => x.AllPlans(\_fakeAdmin)).Return(new List{\_fakePlan}); no problem here. The problem lies in the last two lines of the test: mockPlanDao.VerifyAllExpectations(); result.AssertViewResultNameAndViewDataType(typeof(PlanContainer), "Plans"); the second line (the assert) is probably the thing you really want to test. but the call to "verifyAllExpectations" is the one that makes the test very fragile. It is "asserting" that someone has actually called "GetAllPlans()" to get the results, when it clearly does not matter how one got the results. all that matters is that: "Given a set of results returned into the application under test, the view in the controller is correct" (the translation of the last line in the test). If by any chance the application later does several more calls to the stubbed out dao, or uses a different method to get results, the test could break, even though the application would still ultimately work with the same end result. It's like me ordering a pizza delivery and then asking the delivery guy "did you get here by car or motorcycle?" . I realy don't care, as long as the end result: PIZZA, is correct. So the general rules for me are: - If you see both "Verify" and "Assert" in the same test, it is usualy a smell of over specified tests - if you see "expect" and "Return" on a fake object, make sure that you name it "stubXX" or "mockXX" so that you can distinguish whether you want to call verify on it later or not(most cases should be "not") - Try to test on the end result or end state rather than verify interactions.  The only time you _absolutely have not choice_ but to test an interaction using verify is when calling _void_ methods on external objects. that is clearly a one-way communication and _is (or part of)the end result_ of what you are trying to accomplish. A lot of people think that adding that extra "verify" just means it is a good thing since they are doing more assert. Well, they sure are testing more things, but they are _internal_ things to the app's behavior and that is usually leading to brittle tests. Try to test on the end result or end state rather than verify interactions. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 20, 2008 ### [Goodbye mocks, Farewell stubs](https://osherove.com/blog/2008/9/20/goodbye-mocks-farewell-stubs.html) - Jul 24, 2008 ### [Typemock Isolator with AAA syntax](https://osherove.com/blog/2008/7/24/typemock-isolator-with-aaa-syntax.html) - Jul 10, 2008 ### [Poll: What threading features do you use?](https://osherove.com/blog/2008/7/10/poll-what-threading-features-do-you-use.html) - Jul 8, 2008 ### [A sneak Preview of Typemock Racer : Thread Deadlock Finder](https://osherove.com/blog/2008/7/8/a-sneak-preview-of-typemock-racer-thread-deadlock-finder.html) --- title: "Poll: What threading features do you use?" url: "https://osherove.com/blog/2008/7/10/poll-what-threading-features-do-you-use.md" canonical: "https://osherove.com/blog/2008/7/10/poll-what-threading-features-do-you-use.html" published: "2008-07-10T14:57:26" updated: "2008-07-10T14:57:26" tags: [".NET", "Agile"] author: "Roy Osherove" description: "As we are working on the next set of features for Typemock Racer, the threading related test framework , I think it will be nice to know what features and thread constructs people use the most in their applications. The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Poll: What threading features do you use? By Roy Osherove July 10, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published July 10, 2008; technical details may be outdated. As we are working on the next set of features for [Typemock Racer, the threading related test framework](http://weblogs.asp.net/rosherove/archive/2008/07/08/a-sneak-preview-of-typemock-racer.aspx), I think it will be nice to know what features and thread constructs people use the most in their applications. The poll below uses flash, if you can't see it. Please fill it in and we'll see what people use the most! While I'm here, I may as well ask you another couple of questions that need re-examining. Which mocking framework (if at all do you use?) and which unit test frameworks do you use? Embedded Flash media from the original post is no longer playable. Embedded Flash media from the original post is no longer playable. Embedded Flash media from the original post is no longer playable. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jul 13, 2008 ### [ALT.NET Israel - August 7th-8th 2008](https://osherove.com/blog/2008/7/13/altnet-israel-august-7th-8th-2008.html) - Jul 13, 2008 ### [Poll Results: Threading, Mock Frameworks and unit test frameworks](https://osherove.com/blog/2008/7/13/poll-results-threading-mock-frameworks-and-unit-test-framewo.html) - Jul 8, 2008 ### [Non Paged CLR Host](https://osherove.com/blog/2008/7/8/non-paged-clr-host.html) - Jun 13, 2008 ### [Unit Testing Interview at TechEd](https://osherove.com/blog/2008/6/13/unit-testing-interview-at-teched.html) --- title: "Non Paged CLR Host" url: "https://osherove.com/blog/2008/7/8/non-paged-clr-host.md" canonical: "https://osherove.com/blog/2008/7/8/non-paged-clr-host.html" published: "2008-07-08T12:36:43" updated: "2008-07-08T12:36:43" tags: [".NET", "Cool Tools"] author: "Roy Osherove" description: "Sasha and Alon have released an open source project called \" Non Paged CLR Host \" which has the following benefits(quoted): Applications will benefit from no paging during normal operation. Even if other applications…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Non Paged CLR Host By Roy Osherove July 8, 2008 In [.NET](https://osherove.com/blog/category/net), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published July 8, 2008; technical details may be outdated. [Sasha](http://blogs.microsoft.co.il/blogs/sasha/) and [Alon](http://blogs.microsoft.co.il/blogs/alon) have [released](http://blogs.microsoft.co.il/blogs/sasha/archive/2008/06/27/non-paging-clr-host.aspx) an open source project called "[Non Paged CLR Host](http://www.codeplex.com/NonPagedCLRHost)" which has the following benefits(quoted): 1. **Applications will benefit from no paging during normal operation.**  Even if other applications are actively allocating memory, allocations performed under the non-paged CLR host will be locked into physical memory. 2. **No paging will occur when the application is idle**, providing a great benefit to low-latency processes such as GUI applications (even if the user has fallen asleep in front of the monitor).  The normal working set management scheme employed by Windows will not affect processes running under the non-paged CLR host. That's Pretty cool. I've had the pleasure of working on a project with both of them, where CLR memory boundaries are constantly challenged. I wonder if it could benefit from such a piece of code! PS If you're not following [sasha's blog](http://www.codeplex.com/NonPagedCLRHost) - you really should. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jul 13, 2008 ### [Poll Results: Threading, Mock Frameworks and unit test frameworks](https://osherove.com/blog/2008/7/13/poll-results-threading-mock-frameworks-and-unit-test-framewo.html) - Jul 10, 2008 ### [Poll: What threading features do you use?](https://osherove.com/blog/2008/7/10/poll-what-threading-features-do-you-use.html) - Jun 13, 2008 ### [Unit Testing Interview at TechEd](https://osherove.com/blog/2008/6/13/unit-testing-interview-at-teched.html) - Jun 9, 2008 ### [Fit/Fitnesse Fixture Gallery -Real world help for FIT and Fitnesse users](https://osherove.com/blog/2008/6/9/fitfitnesse-fixture-gallery-real-world-help-for-fit-and-fitn.html) --- title: "A sneak Preview of Typemock Racer : Thread Deadlock Finder" url: "https://osherove.com/blog/2008/7/8/a-sneak-preview-of-typemock-racer-thread-deadlock-finder.md" canonical: "https://osherove.com/blog/2008/7/8/a-sneak-preview-of-typemock-racer-thread-deadlock-finder.html" published: "2008-07-08T08:42:28" updated: "2008-07-08T08:42:28" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Cool Tools", "General Software Devel...", "Unit Testing"] author: "Roy Osherove" description: "Here's a sneak preview of the upcoming Typemock Racer product, which I'm currently working on. We should be out in private CTP in a couple of weeks I hope. Typemock Racer tries to solve one huge problem for developers…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A sneak Preview of Typemock Racer : Thread Deadlock Finder By Roy Osherove July 8, 2008 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published July 8, 2008; technical details may be outdated. Here's a sneak preview of the upcoming [Typemock](http://www.typemock.com/) Racer product, which I'm currently working on. We should be out in private CTP in a couple of weeks I hope. Typemock Racer tries to solve one huge problem for developers working in multi threaded environments: Detecting code that can result in deadlocks or race conditions. It does this by providing a framework API which you can use in your tests (under NUnit for example), that allows you to execrise your code under test until it finds a deadlock or times out. Here's an example of how you'd use it. Consider the following class which has two methods, that if run by two seperate threads, can result in a deadlock condition: At some point in time the threads could execute such that thread 1 is waiting on resource b, which is held by thread two , which is waiting on resource a, held by thread 1 - a pure deadlock. Given this class we can write a test that looks like this: The ThreadTest class has an "AddThreadAction" method that receives a delegate. you can use it to invoke your own code, it will be invoked in a different thread. IN this example we are creating two threads, each one running a different method on MyClassWithLocks. We can just right click and run the test with TestDriven.NET to recieve the following results: The output states that there is a deadlock that was found, with the exact steps that happened (with line locations) to reproduce this. It currently only works with lock (monitor.Enter\\Exit) but will support all locking constructs in .NET. What if the methods you point to create their own threads? Like this: Here is the output that you'd get if you run this test: ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 12, 2008 ### [Over Specification in Tests](https://osherove.com/blog/2008/7/12/over-specification-in-tests.html) - Jul 10, 2008 ### [Poll: What threading features do you use?](https://osherove.com/blog/2008/7/10/poll-what-threading-features-do-you-use.html) - Jul 6, 2008 ### [Is Moq too poweful?](https://osherove.com/blog/2008/7/6/is-moq-too-poweful.html) - Jul 5, 2008 ### [Extending Depender with your own custom dependency rules](https://osherove.com/blog/2008/7/5/extending-depender-with-your-own-custom-dependency-rules.html) --- title: "Introducing Audibler: Download your audible audio books DRM free (and into Zune as well)" url: "https://osherove.com/blog/2008/7/6/introducing-audibler-download-your-audible-audio-books-drm-f.md" canonical: "https://osherove.com/blog/2008/7/6/introducing-audibler-download-your-audible-audio-books-drm-f.html" published: "2008-07-06T15:21:00" updated: "2008-07-06T15:21:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "When I first heard of Audible.com (in one of the TWiT shows ) I was very excited that I could get lots of stuff to hear on my mp3 player. Then I started using it. And was terribly annoyed . I couldn't use the downloads…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing Audibler: Download your audible audio books DRM free (and into Zune as well) By Roy Osherove July 6, 2008 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published July 6, 2008; technical details may be outdated. When I first heard of [Audible.com](http://www.audible.com/) (in one of the [TWiT shows](http://twit.tv/twit)) I was very excited that I could get lots of stuff to hear on my mp3 player. Then I started using it. And was **terribly annoyed**. - I couldn't use the downloads on my Zune device because of Silly DRM issues - Living in Israel, some audio books (like colbert's book, or Hodgman's book) are blocked for me to purchase. - I can't back up or convert my files or play them freely because of the DRM protection, even though they are _mine_ and I have purchased them fairly. I looked for a long time for a way to get the files DRM free. There was one way but it required to have an old version of the audible software installed. They have fixed that "bug" and not the only way is for people to burn 9 hour books on 11 CDs and then rip them to mp3. and that is a big pain. So, Audible, this is for making me feel a second class net citizen, as well as many others. I finally found a way to get my fully paid for audio files **without DRM** and without needing the bloody audible download manager (which is actually the thing that puts the DRM on the files!). I created a little program that helps you download the files directly to your computer without the audible software. To make sure you understand - you can only download **your own purchased books using this tool** just like the standard way. the only difference is that they will not be with DRM so you can back them up and move them around and convert them as much as you want. If you're interested in how my workaround works (you're a geek) it is in the bottom of this post. **How to download your paid-for DRM free audible books** - [Download my little program](http://shrinkster.com/101q): Audibler.zip and unzip it.  (5k). You need [.NET Framework 2.0 or above](http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en) - Login to the [audible website](http://www.audible.com/) normally and go to "my library" - Go the line where the book you want to download is, and **right click** on the button that says "Download it". The copy the link url in the button to the clipboard. - Run the audibler.exe file that you unzipped earlier. - The link you copied to the clipboard should be shown on the top screen. - ![image](https://osherove.com/img/wb/6f767b15_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_f2ce356a3135_7BE_image_thumb.png) - Click "Translate and start link" to have your default browser start downloading the file directly. - Or you can click "translate" and then copy the URL on the bottom of the dialog to your browser address bar. **How to convert the downloaded .aa files to mp3** you can use your own favorite conversion software from .aa to .mp3. below is how I am doing it. - **Install DbPowerAmp** power pack and the directshow plugin ([http://www.dbpoweramp.com/)](http://www.dbpoweramp.com/) (It seems to work really fast) - [Download and run the Audible Media Player Filter](http://files.osherove.com/downloads/AudibleMediaPlayerFilter.zip) and install it, if you are running the latest version (5.0) of audible manager. - if you are running version 4.0 this is not needed. - after downloading the file you wanted,  right click on the file in windows explorer and choose "covert to" and convert to mp3. - **if you don't see any "convert to" menu,** - You may need to go to "c:\\Documents and Settings\\\[YOUR\_USER\_NAME\]\\Application Data\\dBpoweramp\\directshow.txt and add '.aa' without the quotes as a new line in the middle of the file somewhere. - then go the the start menu and run dbPowerAmp configuration and click OK on the dialog. then try again. **How this works:** To find out what happens behind the scenes I used the free Fiddler2 tool from Microsoft that can trace http communications. When I ran it along side the audible download manager I could see the request to download the special file URL. From there it was a simple matter of looking at the web page, seeing how the links are built, and changing parts of the URL to fit what the Download manager was requesting. It uses a simple regular expression to find out the parts of the URL (let's see how fast they change it..) and then replace them with what the software needs. You can also just open Reflector and look at audibler.exe to see exactly how simple it is. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jul 8, 2008 ### [Non Paged CLR Host](https://osherove.com/blog/2008/7/8/non-paged-clr-host.html) - Jul 8, 2008 ### [A sneak Preview of Typemock Racer : Thread Deadlock Finder](https://osherove.com/blog/2008/7/8/a-sneak-preview-of-typemock-racer-thread-deadlock-finder.html) - Jul 5, 2008 ### [Extending Depender with your own custom dependency rules](https://osherove.com/blog/2008/7/5/extending-depender-with-your-own-custom-dependency-rules.html) - Jul 5, 2008 ### [Introducing Depender - Testability Problem Finder](https://osherove.com/blog/2008/7/5/introducing-depender-testability-problem-finder.html) --- title: "Is Moq too poweful?" url: "https://osherove.com/blog/2008/7/6/is-moq-too-poweful.md" canonical: "https://osherove.com/blog/2008/7/6/is-moq-too-poweful.html" published: "2008-07-06T11:59:28" updated: "2008-07-06T11:59:28" tags: ["Agile", "Agile Related", "Unit Testing"] author: "Roy Osherove" description: "It's interesting to see the other mocking frameworks as they grow into maturity. Especially Moq which has been getting loads of new features recently. The latest one is something which makes me feel a bit weird after…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Is Moq too poweful? By Roy Osherove July 6, 2008 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published July 6, 2008; technical details may be outdated. It's interesting to see the other mocking frameworks as they grow into maturity. Especially Moq [which has been getting loads](http://www.clariusconsulting.net/blogs/kzu/archive/2008/07/05/MockingprotectedmemberswithMoq.aspx) of new features recently. The latest one is something which makes me feel a bit weird after reading all the things people fear in [Typemock Isolator](http://www.typemock.com/):It seems that  [Moq now allows mocking protected fields](http://www.clariusconsulting.net/blogs/kzu/archive/2008/07/05/MockingprotectedmemberswithMoq.aspx). What's really interesting is that Daniel has chosen to actively allow this, and _hide_ the feature at the same time, as well as put it under a strict _optional request_: you have to opt in for each code file where you'd like this ability by adding a special imports statement. So, the questions I have are: - What happened to "if it's not testable it's a design smell"? Is this a compromise or have people figured out that good design can take many forms, with tools being left to do the hard lifting? - If you're going to add powerful "non classic" mocking ability to a framework, does adding it as a special "opt-in" feature make it OK? (this is what we are talking about doing with Typemock Isolator) - If tomorrow Rhino.Mocks were to add the same feature or something even more powerful (statics?) how would people treat that? ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 10, 2008 ### [Poll: What threading features do you use?](https://osherove.com/blog/2008/7/10/poll-what-threading-features-do-you-use.html) - Jul 8, 2008 ### [A sneak Preview of Typemock Racer : Thread Deadlock Finder](https://osherove.com/blog/2008/7/8/a-sneak-preview-of-typemock-racer-thread-deadlock-finder.html) - Jul 5, 2008 ### [Extending Depender with your own custom dependency rules](https://osherove.com/blog/2008/7/5/extending-depender-with-your-own-custom-dependency-rules.html) - Jul 5, 2008 ### [Introducing Depender - Testability Problem Finder](https://osherove.com/blog/2008/7/5/introducing-depender-testability-problem-finder.html) --- title: "Extending Depender with your own custom dependency rules" url: "https://osherove.com/blog/2008/7/5/extending-depender-with-your-own-custom-dependency-rules.md" canonical: "https://osherove.com/blog/2008/7/5/extending-depender-with-your-own-custom-dependency-rules.html" published: "2008-07-05T09:24:17" updated: "2008-07-05T09:24:17" tags: ["Agile", "Cool Tools"] author: "Roy Osherove" description: "In the previous post I introduced Depender , to help find dependency issues in your code (usually for testing). I've added extensibility to it so that you can write your own rules. If you download depender there will…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Extending Depender with your own custom dependency rules By Roy Osherove July 5, 2008 In [Agile](https://osherove.com/blog/category/agile), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published July 5, 2008; technical details may be outdated. In the previous [post I introduced Depender](http://weblogs.asp.net/rosherove/archive/2008/07/05/introducing-depender-testability-problem-finder.aspx), to help find dependency issues in your code (usually for testing). I've added extensibility to it so that you can write your own rules. If [you download depender](http://files.osherove.com/downloads/Depender.zip) there will also be a "src" directory in the zip file, which shows how the current rules it uses were built. it should be really easy to created your own rules. Just : - create your own assembly that has a name ending with ".Rules.dll" - Implement IRule in your class, or, if you want to parse the contents of a method, inherit from MethodParserRule. your rule will be automatically loaded according to the assembly naming convention and its interface. here's how a simple rule looks: public class FindOverridableMethodsRule:IRule {     public void Check(MethodInfo info, Dependency parent)     {         if (!info.IsFinal && (info.IsVirtual || info.IsAbstract))         {             parent.Add(new Dependency(string.Format(" {0}() can be overriden", info.Name)));         }     }     public bool CanCheck(object obj)     {         return obj is MethodInfo;     }     public void Check(object obj, Dependency parent)     {         Check(obj as MethodInfo, parent);     } } and here's a rule that parses the contents of a method: public class FindStaticMethodCallRule : MethodParserRule {     protected override void DoChecks(MethodBase mehodBeingChecked, MethodBodyInfo methodBody, Dependency parent)     {         foreach (ILInstruction instruction in methodBody.Instructions)         {             if (instruction is InlineMethodInstruction)             {                 InlineMethodInstruction line = instruction as InlineMethodInstruction;                 if (line.Method.IsStatic)                 {                     string message =                         string.Format("Static method call {0} on {1}", line.Method.Name,                                       line.Method.ReflectedType.Name);                     parent.Add(new ProblemDependency(message));                 }             }         }     } } ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 8, 2008 ### [A sneak Preview of Typemock Racer : Thread Deadlock Finder](https://osherove.com/blog/2008/7/8/a-sneak-preview-of-typemock-racer-thread-deadlock-finder.html) - Jul 6, 2008 ### [Is Moq too poweful?](https://osherove.com/blog/2008/7/6/is-moq-too-poweful.html) - Jul 5, 2008 ### [Introducing Depender - Testability Problem Finder](https://osherove.com/blog/2008/7/5/introducing-depender-testability-problem-finder.html) - Jul 3, 2008 ### [TDD 5-day course\\workshop in Norway](https://osherove.com/blog/2008/7/3/tdd-5-day-courseworkshop-in-norway.html) --- title: "Introducing Depender - Testability Problem Finder" url: "https://osherove.com/blog/2008/7/5/introducing-depender-testability-problem-finder.md" canonical: "https://osherove.com/blog/2008/7/5/introducing-depender-testability-problem-finder.html" published: "2008-07-05T07:08:25" updated: "2008-07-05T07:08:25" tags: ["Agile", "Art Of Unit Testing", "Cool Tools", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "Update : Here's how you can extend Depender with your own dependency rules Depender is a tool that I created to illustrate several concepts both for my book and both for my training classes. I think it should prove…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing Depender - Testability Problem Finder By Roy Osherove July 5, 2008 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published July 5, 2008; technical details may be outdated. **Update**: [Here's how you can extend Depender](http://weblogs.asp.net/rosherove/archive/2008/07/05/extending-depender-with-your-own-custom-dependency-rules.aspx) with your own dependency rules Depender is a tool that I created to illustrate several concepts both for [my book](http://the.artofunittesting.com/) and both for my training classes. I think it should prove valuable (as it gets more and more features) to anyone who is trying to write tests for existing code. Depender allows you to load an assembly and inspect the types within it according to very simple rules. the main question on my mind and I run it is: "How easy would it be to test class X?". Depender will list all the classes in the assembly and for each one will try to detect possible testability problems (non decoupling) and places where you might be able to "inject" your own implementation (calls to virtual methods, fields that are interfaces or types who are not sealed..etc..) so you can: - see places where you might want to refactor your code or use a tool like [Typemock Isolator](http://www.typemock.com/) - see places where you can already use "seams" to inject behavior into your code without needing to look up the source code manually. here's what the main screen looks like when loading an assembly: the type "RealLogger" is marked in red because it contains calls to static methods. double clicking on the type's node will load a separate window just for this type: I will be adding more rules and also releasing the source so that other people can help develop this. for now I just want to get it out there and see what people think. possible futures: - Make it command line driven so it can run in your CI builds - Make it give "scores" to assemblies or types on testability and decoupling - Make it add "suggestions" on how to fix decoupling issues - Make it create the base diagram for my [test feasibility matrix](http://weblogs.asp.net/rosherove/pages/420425.aspx) Download [Depender from here](http://files.osherove.com/downloads/Depender.zip). ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 6, 2008 ### [Is Moq too poweful?](https://osherove.com/blog/2008/7/6/is-moq-too-poweful.html) - Jul 5, 2008 ### [Extending Depender with your own custom dependency rules](https://osherove.com/blog/2008/7/5/extending-depender-with-your-own-custom-dependency-rules.html) - Jul 3, 2008 ### [TDD 5-day course\\workshop in Norway](https://osherove.com/blog/2008/7/3/tdd-5-day-courseworkshop-in-norway.html) - Jul 3, 2008 ### [Typemock Isolator 4.3 and future syntax](https://osherove.com/blog/2008/7/3/typemock-isolator-43-and-future-syntax.html) --- title: "[Off Topic] My Geeky little architect" url: "https://osherove.com/blog/2008/7/4/off-topic-my-geeky-little-architect.md" canonical: "https://osherove.com/blog/2008/7/4/off-topic-my-geeky-little-architect.html" published: "2008-07-04T14:41:21" updated: "2008-07-04T14:41:21" tags: ["Off Topic"] author: "Roy Osherove" description: "My kid is a geek at 18 months: and also an amazing architect with a sense of (porcupine) humor:" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Off Topic\] My Geeky little architect By Roy Osherove July 4, 2008 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 4, 2008; technical details may be outdated. My kid is a geek at 18 months: and also an amazing architect with a sense of (porcupine) humor: ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 29, 2008 ### [My Son - Itamar the Snake Tamer](https://osherove.com/blog/2008/7/29/my-son-itamar-the-snake-tamer.html) - Jul 20, 2008 ### [Get me an Unlocked IPhone 3G from Italy or Hong Kong](https://osherove.com/blog/2008/7/20/get-me-an-unlocked-iphone-3g-from-italy-or-hong-kong.html) - Jun 2, 2008 ### [Itamar at 1.5](https://osherove.com/blog/2008/6/2/itamar-at-15.html) - Apr 12, 2008 ### [Itamar at 1.3 (movie)](https://osherove.com/blog/2008/4/12/itamar-at-13-movie.html) --- title: "TDD 5-day course\\workshop in Norway" url: "https://osherove.com/blog/2008/7/3/tdd-5-day-courseworkshop-in-norway.md" canonical: "https://osherove.com/blog/2008/7/3/tdd-5-day-courseworkshop-in-norway.html" published: "2008-07-03T08:14:05" updated: "2008-07-03T08:14:05" tags: ["Agile"] author: "Roy Osherove" description: "If you're in norway, this might be of interest to you. I'll be doing two 5-day courses on TDD and Unit Testing in august and december. here are the dates and links to the full course outlines: Courses are currently…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD 5-day course\\workshop in Norway By Roy Osherove July 3, 2008 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published July 3, 2008; technical details may be outdated. If you're in norway, this might be of interest to you. I'll be doing two 5-day courses on TDD and Unit Testing in august and december. here are the dates and links to the full course outlines: Courses are currently limited to 20 attendees and are mainly exercise driven (working in pairs). I'm only planning to do these 1-2 times a year for scheduling reasons. as far as I hear the august course is already half full.  These are hands on, .NET centric classes, with little theory and mostly practice. [Test Driven Development in .NET Master Class](http://www.programutvikling.no/kurskalenderoversikt.aspx?mid_1=1352&mid=1535&id=218164) Date:  August 18 Location: Oslo [Register here](http://www.programutvikling.no/kurs_bestill.aspx?mid_1=1354&step=2&mid=1549&course=218166&type=218164%E2%9F%A8=no) [Test Driven Development in .NET Master Class](http://www.programutvikling.no/kurskalenderoversikt.aspx?mid_1=1352&mid=1535&id=218164) Date:  December 1st Location: Oslo [Register here](http://www.programutvikling.no/kurs_bestill.aspx?mid_1=1354&step=2&mid=1549&course=240573&type=218164%E2%9F%A8=no) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 5, 2008 ### [Extending Depender with your own custom dependency rules](https://osherove.com/blog/2008/7/5/extending-depender-with-your-own-custom-dependency-rules.html) - Jul 5, 2008 ### [Introducing Depender - Testability Problem Finder](https://osherove.com/blog/2008/7/5/introducing-depender-testability-problem-finder.html) - Jul 3, 2008 ### [Typemock Isolator 4.3 and future syntax](https://osherove.com/blog/2008/7/3/typemock-isolator-43-and-future-syntax.html) - Jul 3, 2008 ### [Over-testable systems, and mocks as bad test smells](https://osherove.com/blog/2008/7/3/over-testable-systems-and-mocks-as-bad-test-smells.html) --- title: "Typemock Isolator 4.3 and future syntax" url: "https://osherove.com/blog/2008/7/3/typemock-isolator-43-and-future-syntax.md" canonical: "https://osherove.com/blog/2008/7/3/typemock-isolator-43-and-future-syntax.html" published: "2008-07-03T03:42:47" updated: "2008-07-03T03:42:47" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "We just released Typemock Isolator 4.3 ( here is the blog post with details ). It's an awesome product but I envy the speed and ease with which oren can change his syntax (it's nice to work alone!) . I can tell you that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Typemock Isolator 4.3 and future syntax By Roy Osherove July 3, 2008 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published July 3, 2008; technical details may be outdated. We just released [Typemock Isolator](http://www.typemock.com/) 4.3 ([here is the blog post with details](http://blog.typemock.com/2008/07/isolator-43-released.html)). It's an awesome product but I envy the speed and ease with which oren [can change his syntax](http://www.ayende.com/Blog/archive/2008/07/01/Rhino-Mocks-3.5-RC-1-Refresh.aspx) (it's nice to work alone!) . I can tell you that the next version of Isolator is going to have a new syntax that is more towards the Arrange-act-assert meme (but you could still use the old one if you wanted to) plus lots of cool goodies. the new version has full support for [Ivonna](http://sm-art.biz/Ivonna.aspx) (for ASP.NET webform testing in process) and we have removed .NET 1.1 support. Many other things changed [are listed here](http://blog.typemock.com/2008/07/isolator-43-released.html). ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 5, 2008 ### [Introducing Depender - Testability Problem Finder](https://osherove.com/blog/2008/7/5/introducing-depender-testability-problem-finder.html) - Jul 3, 2008 ### [TDD 5-day course\\workshop in Norway](https://osherove.com/blog/2008/7/3/tdd-5-day-courseworkshop-in-norway.html) - Jul 3, 2008 ### [Over-testable systems, and mocks as bad test smells](https://osherove.com/blog/2008/7/3/over-testable-systems-and-mocks-as-bad-test-smells.html) - Jun 13, 2008 ### [Unit Testing Interview at TechEd](https://osherove.com/blog/2008/6/13/unit-testing-interview-at-teched.html) --- title: "Over-testable systems, and mocks as bad test smells" url: "https://osherove.com/blog/2008/7/3/over-testable-systems-and-mocks-as-bad-test-smells.md" canonical: "https://osherove.com/blog/2008/7/3/over-testable-systems-and-mocks-as-bad-test-smells.html" published: "2008-07-03T02:48:55" updated: "2008-07-03T02:48:55" tags: ["Agile", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "This is an interesting problem I've been running into at work. Sometimes we would try to write a test against the system or a component and we would literally have too many choices of how to write it or where to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Over-testable systems, and mocks as bad test smells By Roy Osherove July 3, 2008 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published July 3, 2008; technical details may be outdated. This is an interesting problem I've been running into at work. Sometimes we would try to write a test against the system or a component and we would literally have too many choices of how to write it or where to "intercept" or "inject" our stubs or mock objects.  In a way, the software is almost "too testable" in that there is usually at least 3 ways to accomplish a similar level of isolation. What it comes down to is the fact that for a real system, there are different "depth" layers where indirection can be injected. For example, Component X needs object Y that relies on object Z. If we were testing component X we could "replace" either Y or Z.  Some would argue that replacing one level too deep is making this an integration test, but as long as its all running in memory I don't see a real problem with that. I gave up on trying to do "pure" unit tests for 100% of the time a long time ago. Many times, it is much more complex than this. For example, replacing object Y instead of Z (at the closes layer to the object under test) can also lead to problems if: - The contracts between X and Y are very chatty, than stubbing out Y could lead to a very hard to read or very fragile test - You are trying to test that _interaction_ occurs between Y and X than that might be an over specified test. If replacing Z would lead to a more state-base test that I'd choose that over replacing X. (shortly: I'd rather use stubs over mocks so that my tests become less fragile. some layers require mocking and some are very simple to just stub out) Here's a thought or two: if you one one layer farther away than the one you are using, and it does not require mocks to test, that try to use that layer and forget the inner layer? If you treat mocks as a smell for over specified tests that will force you to find a way to test the same thing using a stub. I find that sometimes you have no other choice _but_ use mocks (when your app under test has a one way out communication with a component) but in all other cases, I am starting to look at it like a design smell for my tests (over specified tests) getting back to the original problem (too many ways to test the system) I am trying to think if this is a good or bad thing. The only bad here is that someone who is testing the system for the first time has no real guidance on where to replace things (except look at other tests) which can make writing the first few tests really hard to figure out. The fact that we are using [a sort of auto mocking container](http://weblogs.asp.net/rosherove/archive/2008/04/14/creating-a-automockingcontainer-with-microsoft-unity-pretty-darn-simple.aspx) in our tests is both a blessing and a bit of a curse. Currently i find that it saves more time that it takes away. the tests and their dependencies are relatively more readable since we are using a more explicit version of a test container [that requires you to explicitly state what will be replaced](http://weblogs.asp.net/rosherove/archive/2008/04/14/creating-a-automockingcontainer-with-microsoft-unity-pretty-darn-simple.aspx) (it just doesn't tell you who requires that component). I can already hear the pundits say "well that means you have a design smell". The only thing that smells here to me is that because we followed strict DI and interface based injection rules, we ended up with a system that is not just made of lego parts (a good thing), the lego parts or too darn small! ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 3, 2008 ### [TDD 5-day course\\workshop in Norway](https://osherove.com/blog/2008/7/3/tdd-5-day-courseworkshop-in-norway.html) - Jul 3, 2008 ### [Typemock Isolator 4.3 and future syntax](https://osherove.com/blog/2008/7/3/typemock-isolator-43-and-future-syntax.html) - Jun 13, 2008 ### [Unit Testing Interview at TechEd](https://osherove.com/blog/2008/6/13/unit-testing-interview-at-teched.html) - Jun 9, 2008 ### [Fit/Fitnesse Fixture Gallery -Real world help for FIT and Fitnesse users](https://osherove.com/blog/2008/6/9/fitfitnesse-fixture-gallery-real-world-help-for-fit-and-fitn.html) --- title: "How to get good developers" url: "https://osherove.com/blog/2008/6/13/how-to-get-good-developers.md" canonical: "https://osherove.com/blog/2008/6/13/how-to-get-good-developers.html" published: "2008-06-13T18:35:15" updated: "2008-06-13T18:35:15" tags: [] author: "Roy Osherove" description: "Hmm. I'm going to apply just to see what happens. On second thought, I'll just try to solve it in .NET and blog it, so I can prove to all of you that I am a such a bad coder, it's not even funny (which is why I have…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to get good developers By Roy Osherove June 13, 2008 **Historical article** · Originally published June 13, 2008; technical details may be outdated. Hmm. [I'm going to apply](http://dotspots.com/challenges.html) just to see what happens. On second thought, I'll just try to solve it in .NET and blog it, so I can prove to all of you that I am a such a bad coder, it's not even funny (which is why I have unit tests!) I'm going to do that all in TDD now, if only I could figure out what the email is from this: `Y2hhbGxlbmdlQGRvdHNwb3RzLmNvbQo`\= --- title: "Unit Testing Interview at TechEd" url: "https://osherove.com/blog/2008/6/13/unit-testing-interview-at-teched.md" canonical: "https://osherove.com/blog/2008/6/13/unit-testing-interview-at-teched.html" published: "2008-06-13T18:22:13" updated: "2008-06-13T18:22:13" tags: [".NET", "Agile", "Art Of Unit Testing", "Interview"] author: "Roy Osherove" description: "My interview at teched us on advanced unit testing and legacy code can be seen here: http://msdn.microsoft.com/en-us/events/teched/cc676818.aspx or downloaded here We occasionally stop and laugh a bit because \"speaker…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing Interview at TechEd By Roy Osherove June 13, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published June 13, 2008; technical details may be outdated. My interview at teched us on advanced unit testing and legacy code can be seen here: [http://msdn.microsoft.com/en-us/events/teched/cc676818.aspx](http://msdn.microsoft.com/en-us/events/teched/cc676818.aspx "http://msdn.microsoft.com/en-us/events/teched/cc676818.aspx")  or [downloaded here](http://microsofttech.fr.edgesuite.net/TechEdOnline/Videos/08_NA_Dev_techtalk_06_low.wmv) We occasionally stop and laugh a bit because "speaker idol" contest was being held at the booth next to us, which was really _really_ loud.  ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jul 10, 2008 ### [Poll: What threading features do you use?](https://osherove.com/blog/2008/7/10/poll-what-threading-features-do-you-use.html) - Jul 8, 2008 ### [Non Paged CLR Host](https://osherove.com/blog/2008/7/8/non-paged-clr-host.html) - Jun 9, 2008 ### [Fit/Fitnesse Fixture Gallery -Real world help for FIT and Fitnesse users](https://osherove.com/blog/2008/6/9/fitfitnesse-fixture-gallery-real-world-help-for-fit-and-fitn.html) - May 27, 2008 ### [DimeCast.net : 10 minute video tutorials on .NET related matters](https://osherove.com/blog/2008/5/27/dimecastnet-10-minute-video-tutorials-on-net-related-matters.html) --- title: "Make Zune resume your mp3 audio book files when replaying" url: "https://osherove.com/blog/2008/6/10/make-zune-resume-your-mp3-audio-book-files-when-replaying.md" canonical: "https://osherove.com/blog/2008/6/10/make-zune-resume-your-mp3-audio-book-files-when-replaying.html" published: "2008-06-10T19:15:06" updated: "2008-06-10T19:15:06" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "This simple tip really helped me: Simply tag the mp3 file's \"Genre\" tag as \"podcast\" which will enable resume on them through the zune player." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Make Zune resume your mp3 audio book files when replaying By Roy Osherove June 10, 2008 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published June 10, 2008; technical details may be outdated. This simple tip really helped me: Simply tag the mp3 file's "Genre" tag as "podcast" which will enable resume on them through the zune player. ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Aug 3, 2008 ### [Before testing an addin - Reset Visual Studio’s previous addin knowledge](https://osherove.com/blog/2008/8/3/before-testing-an-addin-reset-visual-studios-previous-addin.html) - Aug 2, 2008 ### [Howto: Set custom Visual Studio Addin menu icons without a satellite dll](https://osherove.com/blog/2008/8/2/howto-set-custom-visual-studio-addin-menu-icons-without-a-sa.html) - May 31, 2008 ### [Making Tab mix plus and other firefox addons work with Firefox 3 beta](https://osherove.com/blog/2008/5/31/making-tab-mix-plus-and-other-firefox-addons-work-with-firef.html) - Apr 24, 2008 ### [Parallel Builds with MSBuild](https://osherove.com/blog/2008/4/24/parallel-builds-with-msbuild.html) --- title: "Fit/Fitnesse Fixture Gallery -Real world help for FIT and Fitnesse users" url: "https://osherove.com/blog/2008/6/9/fitfitnesse-fixture-gallery-real-world-help-for-fit-and-fitn.md" canonical: "https://osherove.com/blog/2008/6/9/fitfitnesse-fixture-gallery-real-world-help-for-fit-and-fitn.html" published: "2008-06-09T17:28:40" updated: "2008-06-09T17:28:40" tags: [".NET", "Agile", "Art Of Unit Testing"] author: "Roy Osherove" description: "This great news was just published at the alt.net mailing list. putting it here for future reference. \"Fixture Gallery 2.0 (release 2008-06-09) is now available for download from SourceForge. Fixture Gallery is a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Fit/Fitnesse Fixture Gallery -Real world help for FIT and Fitnesse users By Roy Osherove June 9, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published June 9, 2008; technical details may be outdated. This great news was just published at the alt.net mailing list. putting it here for future reference. "Fixture Gallery 2.0 (release 2008-06-09) is now available for download from SourceForge. Fixture Gallery is a cookbook for FIT/FitNesse tests. It provides developers with a quick overview of the most important fixture types and concepts for agile acceptance testing using the FIT framework. For each fixture type, this document explains the table format and fixture class structure and provides advice when to use and when not to use it. Each example is accompanied by the source code for Java, .NET and Python FIT implementations, in a form that can be easily copied and used as a template for similar fixtures. Version 2.0 brings: \- Python examples for all fixtures and concepts explained in the document. \- Examples for ConstraintFixture, CombinationFixture, CalculateFixture and notes about SetFixture and SubSetFixture. Many thanks to Jens Engel and Mike Stockdale for their contributions to this version. For more information and download links see [http://gojko.net/fitnesse/fixturegallery](http://gojko.net/fitnesse/fixturegallery) \-- gojko adzic [http://gojko.net](http://gojko.net/) " ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jul 8, 2008 ### [Non Paged CLR Host](https://osherove.com/blog/2008/7/8/non-paged-clr-host.html) - Jun 13, 2008 ### [Unit Testing Interview at TechEd](https://osherove.com/blog/2008/6/13/unit-testing-interview-at-teched.html) - May 27, 2008 ### [DimeCast.net : 10 minute video tutorials on .NET related matters](https://osherove.com/blog/2008/5/27/dimecastnet-10-minute-video-tutorials-on-net-related-matters.html) - May 21, 2008 ### [Weird error message](https://osherove.com/blog/2008/5/21/weird-error-message.html) --- title: "Itamar at 1.5" url: "https://osherove.com/blog/2008/6/2/itamar-at-15.md" canonical: "https://osherove.com/blog/2008/6/2/itamar-at-15.html" published: "2008-06-02T14:17:11" updated: "2008-06-02T14:17:11" tags: ["Off Topic"] author: "Roy Osherove" description: "My son, Itamar, is almost a year and a half old. I'm gonna be gone from home for a week, so here are a couple of pictures of him taken yesterday, so you'll all see the cool little dude I'm missing out on:" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Itamar at 1.5 By Roy Osherove June 2, 2008 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 2, 2008; technical details may be outdated. My son, Itamar,  is almost a year and a half old. I'm gonna be gone from home for a week, so here are a couple of pictures of him taken yesterday, so you'll all see the cool little dude I'm missing out on: ![image](https://osherove.com/img/wb/3ed1a012_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_Itamarat1.5_3FF_image_thumb.png) ![image](https://osherove.com/img/wb/7f63543b_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_Itamarat1.5_3FF_image_thumb_1.png) ![image](https://osherove.com/img/wb/f6499d2e_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_Itamarat1.5_3FF_image_thumb_2.png) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 20, 2008 ### [Get me an Unlocked IPhone 3G from Italy or Hong Kong](https://osherove.com/blog/2008/7/20/get-me-an-unlocked-iphone-3g-from-italy-or-hong-kong.html) - Jul 4, 2008 ### [\[Off Topic\] My Geeky little architect](https://osherove.com/blog/2008/7/4/off-topic-my-geeky-little-architect.html) - Apr 12, 2008 ### [Itamar at 1.3 (movie)](https://osherove.com/blog/2008/4/12/itamar-at-13-movie.html) - Mar 9, 2008 ### [Want a Wii? (And learn about Typemock Isolator?)](https://osherove.com/blog/2008/3/9/want-a-wii-and-learn-about-typemock-isolator.html) --- title: "Unit testing vs. Integration Testing : The Restaurant Analogy" url: "https://osherove.com/blog/2008/5/31/unit-testing-vs-integration-testing-the-restaurant-analogy.md" canonical: "https://osherove.com/blog/2008/5/31/unit-testing-vs-integration-testing-the-restaurant-analogy.html" published: "2008-05-31T12:12:31" updated: "2008-05-31T12:12:31" tags: ["Agile", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "Here's an analogy I came up with to explain the difference between unit tests and integration tests. Imagine going to a restaurant with a bunch of your friends. there are some couples there as well as singles. At the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit testing vs. Integration Testing : The Restaurant Analogy By Roy Osherove May 31, 2008 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published May 31, 2008; technical details may be outdated. Here's an analogy I came up with to explain the difference between unit tests and integration tests. Imagine going to a restaurant with a bunch of your friends. there are some couples there as well as singles. At the end of the meal, it is time to pay. Unit testing is like giving a separate bill to each couple or single. Each person knows only what they needs to pay as well as tip, but do not care what anyone else had, or what the total meal amount is. as long as they pay what they need, they can go home peacefully. Integration testing is like giving one big check to the group, with everyone having to calculate on their own how much they need to pay. sometimes everyone things they are good, but in the end the total amount may be too high or too low. There is a lot of interaction going on to decide who pays for what and who has already paid. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 13, 2008 ### [Unit Testing Interview at TechEd](https://osherove.com/blog/2008/6/13/unit-testing-interview-at-teched.html) - Jun 9, 2008 ### [Fit/Fitnesse Fixture Gallery -Real world help for FIT and Fitnesse users](https://osherove.com/blog/2008/6/9/fitfitnesse-fixture-gallery-real-world-help-for-fit-and-fitn.html) - May 19, 2008 ### [Two Faced Commits - how the ALT.NET Community is becoming more and more dogmatic](https://osherove.com/blog/2008/5/19/two-faced-commits-how-the-altnet-community-is-becoming-more.html) - May 18, 2008 ### [Tough Questions about unit testing - Your comments required](https://osherove.com/blog/2008/5/18/tough-questions-about-unit-testing-your-comments-required.html) --- title: "Making Tab mix plus and other firefox addons work with Firefox 3 beta" url: "https://osherove.com/blog/2008/5/31/making-tab-mix-plus-and-other-firefox-addons-work-with-firef.md" canonical: "https://osherove.com/blog/2008/5/31/making-tab-mix-plus-and-other-firefox-addons-work-with-firef.html" published: "2008-05-31T11:56:19" updated: "2008-05-31T11:56:19" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "I installed Firefox 3 beta and the addon I missed the most was Tab Mix Plus (along with IETab , but that works on the beta). Here's how I was able to have Tab Mix Plus working on Firefox 3: 1) Try downloading the latest…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Making Tab mix plus and other firefox addons work with Firefox 3 beta By Roy Osherove May 31, 2008 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published May 31, 2008; technical details may be outdated. I installed Firefox 3 beta and the addon I missed the most was [Tab Mix Plus](https://addons.mozilla.org/en-US/firefox/addon/1122) (along with [IETab](https://addons.mozilla.org/en-US/firefox/addon/1419), but that works on the beta). Here's how I was able to have Tab Mix Plus working on Firefox 3: 1) Try downloading the latest dev build of the addon [from this link](http://saber.kawaii-shoujo.net/Various/tab_mix_plus-0.3.6.0.071228.xpi). 2) If it won't install for security reasons, you can disable the security check and also disable the comparability check [as outlines here](http://lifehacker.com/355973/make-your-extensions-work-with-the-firefox-3-beta). 3) If all else fails, you can install the firefox [nightly tester tools](https://addons.mozilla.org/en-US/firefox/addon/6543) addon, which will allow you to force compatibility of all non compatible extensions. if Firefox won't startup and crash , start it up in safe mode (in the start menu you'll have a firefox safe mode shortcut) and disable all addons. then enable only those who don't cause the the crash. ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Aug 2, 2008 ### [Howto: Set custom Visual Studio Addin menu icons without a satellite dll](https://osherove.com/blog/2008/8/2/howto-set-custom-visual-studio-addin-menu-icons-without-a-sa.html) - Jun 10, 2008 ### [Make Zune resume your mp3 audio book files when replaying](https://osherove.com/blog/2008/6/10/make-zune-resume-your-mp3-audio-book-files-when-replaying.html) - Apr 24, 2008 ### [Parallel Builds with MSBuild](https://osherove.com/blog/2008/4/24/parallel-builds-with-msbuild.html) - Apr 9, 2008 ### [Fix: Cannot copy file 'X' to file 'Y'. The process cannot access the file because it is being used by another process. in Visual Studio 2008](https://osherove.com/blog/2008/4/9/fix-cannot-copy-file-x-to-file-y-the-process-cannot-access-t.html) --- title: "Most informative property description award goes to.." url: "https://osherove.com/blog/2008/5/28/most-informative-property-description-award-goes-to.md" canonical: "https://osherove.com/blog/2008/5/28/most-informative-property-description-award-goes-to.html" published: "2008-05-28T06:45:54" updated: "2008-05-28T06:45:54" tags: ["General Software Devel..."] author: "Roy Osherove" description: "You can tell someone really tried to do the right thing, only to fail by the best intentions: this is from WixEdit ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Most informative property description award goes to.. By Roy Osherove May 28, 2008 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published May 28, 2008; technical details may be outdated. You can tell someone really tried to do the right thing, only to fail by the best intentions: ![image](https://osherove.com/img/wb/p.net_blogs_rosherove_WindowsLiveWriter_Mostinformativepropertydescriptionaward_EB68_image_thumb.png) this is from [WixEdit](http://wixedit.sourceforge.net/). ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Jul 13, 2008 ### [Poll Results: Threading, Mock Frameworks and unit test frameworks](https://osherove.com/blog/2008/7/13/poll-results-threading-mock-frameworks-and-unit-test-framewo.html) - Jul 8, 2008 ### [A sneak Preview of Typemock Racer : Thread Deadlock Finder](https://osherove.com/blog/2008/7/8/a-sneak-preview-of-typemock-racer-thread-deadlock-finder.html) - May 27, 2008 ### [DimeCast.net : 10 minute video tutorials on .NET related matters](https://osherove.com/blog/2008/5/27/dimecastnet-10-minute-video-tutorials-on-net-related-matters.html) - May 27, 2008 ### [Time Saver : Pre-made DVD Images with ALL the windows security updates](https://osherove.com/blog/2008/5/27/time-saver-pre-made-dvd-images-with-all-the-windows-security.html) --- title: "DimeCast.net : 10 minute video tutorials on .NET related matters" url: "https://osherove.com/blog/2008/5/27/dimecastnet-10-minute-video-tutorials-on-net-related-matters.md" canonical: "https://osherove.com/blog/2008/5/27/dimecastnet-10-minute-video-tutorials-on-net-related-matters.html" published: "2008-05-27T14:34:52" updated: "2008-05-27T14:34:52" tags: [".NET", "General Software Devel..."] author: "Roy Osherove" description: "Awesome idea . this will only live if the community contributes, and it should. First videos up are all about unit NUnit, for total beginners. Highly recommended." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # DimeCast.net : 10 minute video tutorials on .NET related matters By Roy Osherove May 27, 2008 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published May 27, 2008; technical details may be outdated. [Awesome idea](http://dimecasts.net/Home). this will only live if the community contributes, and it should. First videos up are all about unit NUnit, for total beginners. Highly recommended. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 13, 2008 ### [Unit Testing Interview at TechEd](https://osherove.com/blog/2008/6/13/unit-testing-interview-at-teched.html) - Jun 9, 2008 ### [Fit/Fitnesse Fixture Gallery -Real world help for FIT and Fitnesse users](https://osherove.com/blog/2008/6/9/fitfitnesse-fixture-gallery-real-world-help-for-fit-and-fitn.html) - May 21, 2008 ### [Weird error message](https://osherove.com/blog/2008/5/21/weird-error-message.html) - May 19, 2008 ### [Two Faced Commits - how the ALT.NET Community is becoming more and more dogmatic](https://osherove.com/blog/2008/5/19/two-faced-commits-how-the-altnet-community-is-becoming-more.html) --- title: "Time Saver : Pre-made DVD Images with ALL the windows security updates" url: "https://osherove.com/blog/2008/5/27/time-saver-pre-made-dvd-images-with-all-the-windows-security.md" canonical: "https://osherove.com/blog/2008/5/27/time-saver-pre-made-dvd-images-with-all-the-windows-security.html" published: "2008-05-27T14:32:13" updated: "2008-05-27T14:32:13" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Oh, this is going to save a whole lot of time when setting up new windows boxes or Virtual machines: A dvd image with all the security updates - so that you won't have to download them the hard way - through windows…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Time Saver : Pre-made DVD Images with ALL the windows security updates By Roy Osherove May 27, 2008 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published May 27, 2008; technical details may be outdated. Oh, [this is going to save a whole lot of time](http://support.microsoft.com/kb/913086) when setting up new windows boxes or Virtual machines: A dvd image with all the security updates - so that you won't have to download them the hard way - through windows update. ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - May 28, 2008 ### [Most informative property description award goes to..](https://osherove.com/blog/2008/5/28/most-informative-property-description-award-goes-to.html) - May 27, 2008 ### [DimeCast.net : 10 minute video tutorials on .NET related matters](https://osherove.com/blog/2008/5/27/dimecastnet-10-minute-video-tutorials-on-net-related-matters.html) - May 19, 2008 ### [More on Duplicity in the Community](https://osherove.com/blog/2008/5/19/more-on-duplicity-in-the-community.html) - May 19, 2008 ### [Two Faced Commits - how the ALT.NET Community is becoming more and more dogmatic](https://osherove.com/blog/2008/5/19/two-faced-commits-how-the-altnet-community-is-becoming-more.html) --- title: "Weird error message" url: "https://osherove.com/blog/2008/5/21/weird-error-message.md" canonical: "https://osherove.com/blog/2008/5/21/weird-error-message.html" published: "2008-05-21T01:21:28" updated: "2008-05-21T01:21:28" tags: [".NET"] author: "Roy Osherove" description: "this is a weird one (while running our build)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Weird error message By Roy Osherove May 21, 2008 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published May 21, 2008; technical details may be outdated. this is a weird one (while running our build) ![image](https://osherove.com/img/wb/e9978044_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_Weirderrormessage_9FFD_image_thumb.png) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 9, 2008 ### [Fit/Fitnesse Fixture Gallery -Real world help for FIT and Fitnesse users](https://osherove.com/blog/2008/6/9/fitfitnesse-fixture-gallery-real-world-help-for-fit-and-fitn.html) - May 27, 2008 ### [DimeCast.net : 10 minute video tutorials on .NET related matters](https://osherove.com/blog/2008/5/27/dimecastnet-10-minute-video-tutorials-on-net-related-matters.html) - May 19, 2008 ### [Two Faced Commits - how the ALT.NET Community is becoming more and more dogmatic](https://osherove.com/blog/2008/5/19/two-faced-commits-how-the-altnet-community-is-becoming-more.html) - May 17, 2008 ### ["Swapping" instead of "Injecting" calls between classes](https://osherove.com/blog/2008/5/17/quotswappingquot-instead-of-quotinjectingquot-calls-between.html) --- title: "More on Duplicity in the Community" url: "https://osherove.com/blog/2008/5/19/more-on-duplicity-in-the-community.md" canonical: "https://osherove.com/blog/2008/5/19/more-on-duplicity-in-the-community.html" published: "2008-05-19T14:42:00" updated: "2008-05-19T14:42:00" tags: ["General Software Devel..."] author: "Roy Osherove" description: "In continuation to my last post about duplicity in the ALT.NET community and around, Eli has a nice post up that basically says \"In other languages where objects can be swapped without Dependency Injection, there is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More on Duplicity in the Community By Roy Osherove May 19, 2008 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published May 19, 2008; technical details may be outdated. In continuation [to my last post about duplicity](http://weblogs.asp.net/rosherove/archive/2008/05/19/two-faced-commits-how-the-alt-net-community-is-becoming-more-and-more-dogmatic.aspx) in the ALT.NET community and around, [Eli has a nice post up](http://www.elilopian.com/2008/05/19/mocking-frameworks-dream-feature/) that basically says > "In [other languages](http://www.ruby-lang.org/en/) where objects can be [swapped](http://www.elilopian.com/2008/05/15/ruby-style-mocking-in-net/) without Dependency Injection, there is no-one, calling these features - Bad Practice, just the opposite. They are called ‘Power features’, because that is what they are." That is a great point. Just because ruby is the new Alt.Sweetheart, and you can hear talks about it all over, people don't refer to it as "too powerful" (as is SmallTalk, BTW). I remember multiple threads in the alt.net mailing lists and from people like [Jeremy](http://codebetter.com/blogs/jeremy.miller/) and [Oren](http://www.ayende.com/) (I might be wrong) saying how cool it would be to have mockability and testability as part of the .NET framework, where things could be easily replaced at whim. Wouldn't that be the same argument that it can hinder good design practices? Isn't there duplicity there? more examples of products (in the alt.net mailing list) being tossed aside for not being "up to par" with the current design principles of people: - Rocky Lhotka's CSLA Framework. A highly successfull and powerful framework used in many production apps and with "different" design features has been treated like it is the single greatest risk to humanity. no "it could be good if.." no "I agree that it serves a good purpose but..." . only bashing. - Microsoft Unity is getting flanked as a container for having attributes. I personally found it much easier to start working with than the other leading containers. (People don't even like to TALK about spring BTW). But Castle ActiveRecord, which also uses attributes is regarded as "OK". LINQ to SQL? "Not OK" for having those attributes (and other reasons) - The "Managed Extensibility framework" from microsoft is getting pooped on with most people openly admitting they haven't even looked at it personally. I can tell you it is innovative and solves a whole bunch of problems. But it is "no" by default  - the exact opposite of what the community is about. ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - May 27, 2008 ### [DimeCast.net : 10 minute video tutorials on .NET related matters](https://osherove.com/blog/2008/5/27/dimecastnet-10-minute-video-tutorials-on-net-related-matters.html) - May 27, 2008 ### [Time Saver : Pre-made DVD Images with ALL the windows security updates](https://osherove.com/blog/2008/5/27/time-saver-pre-made-dvd-images-with-all-the-windows-security.html) - May 19, 2008 ### [Two Faced Commits - how the ALT.NET Community is becoming more and more dogmatic](https://osherove.com/blog/2008/5/19/two-faced-commits-how-the-altnet-community-is-becoming-more.html) - May 6, 2008 ### [Introducing LINQ To Regex](https://osherove.com/blog/2008/5/6/introducing-linq-to-regex.html) --- title: "Two Faced Commits - how the ALT.NET Community is becoming more and more dogmatic" url: "https://osherove.com/blog/2008/5/19/two-faced-commits-how-the-altnet-community-is-becoming-more.md" canonical: "https://osherove.com/blog/2008/5/19/two-faced-commits-how-the-altnet-community-is-becoming-more.html" published: "2008-05-19T03:50:00" updated: "2008-05-19T03:50:00" tags: [".NET", "Agile", "Agile Related", "General Software Devel...", "Unit Testing"] author: "Roy Osherove" description: "disclaimer: I work at Typemock. There is a big trend I am starting to notice in the \"Advanced\" unit testing community. That trend feels more and more like hypocrisy. Take Daniel's post about mocking statics without…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Two Faced Commits - how the ALT.NET Community is becoming more and more dogmatic By Roy Osherove May 19, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published May 19, 2008; technical details may be outdated. disclaimer: I work at Typemock. There is a big trend I am starting to notice in the "Advanced" unit testing community. That trend feels more and more like hypocrisy. Take [Daniel's post about mocking statics without Typemock](http://www.clariusconsulting.net/blogs/kzu/archive/2008/05/18/mock_statics_without_typemock.aspx). (Daniel is the creator of [Moq](http://mockframeworks.com/moq), an open source mocking framework) Granted, it is important to know that you can always refactor things for testability, but just looks at what he writes: "So, don't buy a product just because you're lazy and want to avoid creating a few wrapper classes and interfaces" followed by "Always use the simplest thing that could possibly work." Which is it, community? The idea of being prgamatic is using the right tool for the job. if that tools makes your job easier than not using it "cause you're lazy otherwise" is plain old hypocrisy. The same argument also holds for tools like FinalBuilder vs. Nant\\MsBuild\\Other XML Hell. Tools don't create problems if you use them correctly.  The community (especially the ALT.NET community) is going in a too extreme direction. so extreme that their advice are sometimes skewed too much to be considered pragmatic, sometimes falling into "dogmatic". ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 27, 2008 ### [DimeCast.net : 10 minute video tutorials on .NET related matters](https://osherove.com/blog/2008/5/27/dimecastnet-10-minute-video-tutorials-on-net-related-matters.html) - May 21, 2008 ### [Weird error message](https://osherove.com/blog/2008/5/21/weird-error-message.html) - May 17, 2008 ### ["Swapping" instead of "Injecting" calls between classes](https://osherove.com/blog/2008/5/17/quotswappingquot-instead-of-quotinjectingquot-calls-between.html) - May 15, 2008 ### [Typemock Isolator 4.2.4 is out](https://osherove.com/blog/2008/5/15/typemock-isolator-424-is-out.html) --- title: "Tough Questions about unit testing - Your comments required" url: "https://osherove.com/blog/2008/5/18/tough-questions-about-unit-testing-your-comments-required.md" canonical: "https://osherove.com/blog/2008/5/18/tough-questions-about-unit-testing-your-comments-required.html" published: "2008-05-18T10:30:00" updated: "2008-05-18T10:30:00" tags: ["Agile", "Agile Related", "Art Of Unit Testing"] author: "Roy Osherove" description: "As part of My Book I have a chapter on the challenges of integrating unit testing practices into an organization. One of the sections deals with \"Tough questions and answers\". In short, what are the tough questions you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tough Questions about unit testing - Your comments required By Roy Osherove May 18, 2008 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published May 18, 2008; technical details may be outdated. As part of [My Book](http://the.artofunittesting.com/) I have a chapter on the challenges of integrating unit testing practices into an organization. One of the sections deals with "Tough questions and answers". In short, what are the tough questions you will have to deal with when introducing unit testing. here are the questions I've come across but I'd love to see if there are some that I am missing. Also, I am looking for great answers and references as responses to these questions. Your comments are appreciated: - 1 How much time will this add to the current process? - 2 Will my QA job be at risk because of this? - 3 How do we know this is actually working? - 4 How much time will this add to the current process? - 5 Is there proof that unit testing helps? \- any other tough questions? \- Got good answers? **Comments:** I'm using a beta test of Disqus.com's comments INSIDE this post so please try to respond there: [Discuss this topic on Disqus.](http://iserializable.disqus.com/) [blog comments powered by Disqus](http://disqus.com/) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 31, 2008 ### [Unit testing vs. Integration Testing : The Restaurant Analogy](https://osherove.com/blog/2008/5/31/unit-testing-vs-integration-testing-the-restaurant-analogy.html) - May 19, 2008 ### [Two Faced Commits - how the ALT.NET Community is becoming more and more dogmatic](https://osherove.com/blog/2008/5/19/two-faced-commits-how-the-altnet-community-is-becoming-more.html) - May 17, 2008 ### ["Swapping" instead of "Injecting" calls between classes](https://osherove.com/blog/2008/5/17/quotswappingquot-instead-of-quotinjectingquot-calls-between.html) - May 15, 2008 ### [Typemock Isolator 4.2.4 is out](https://osherove.com/blog/2008/5/15/typemock-isolator-424-is-out.html) --- title: "\"Swapping\" instead of \"Injecting\" calls between classes" url: "https://osherove.com/blog/2008/5/17/quotswappingquot-instead-of-quotinjectingquot-calls-between.md" canonical: "https://osherove.com/blog/2008/5/17/quotswappingquot-instead-of-quotinjectingquot-calls-between.html" published: "2008-05-17T18:01:15" updated: "2008-05-17T18:01:15" tags: [".NET", "Agile", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "Eli Lopian, Typemock CEO and awesome Coder, just created a nice little API wrapper around Typemock Isolator that would allow a very simple and readable \"Swapping\" effect between classes. It would allow you to write code…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # "Swapping" instead of "Injecting" calls between classes By Roy Osherove May 17, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published May 17, 2008; technical details may be outdated. Eli Lopian, [Typemock CEO](http://www.typemock.com/) and awesome Coder, [just created a nice little API wrapper](http://www.elilopian.com/2008/05/15/ruby-style-mocking-in-net/) around [Typemock Isolator](http://www.typemock.com/) that would allow a very simple and readable "Swapping" effect between classes. It would allow you to write code like this:     \[Test\]        public void SwapStatic\_CallsFake()        {            Swap.StaticCalls();            Assert.AreEqual(2, TypeA.StaticReturnOne());            Swap.Rollback();        }        \[TestMethod\]        public void SwapInstance\_CallsFake()        {            Swap.NextNew();            OriginalClass swappedInstance \= new OriginalClass();            Assert.AreEqual(2, swappedInstance.ReturnOne());        } The first test uses the "Swap" class to replace static calls and redirect them to your own class with static methods. The second one is more advanced and will mock all **instance** calls made on the **next instance that will be created of that type.** so the last line on the second test will actually call a method against the FakeClass type. pretty cool and very readable. [download the code and binaries from his post](http://www.elilopian.com/2008/05/15/ruby-style-mocking-in-net). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 21, 2008 ### [Weird error message](https://osherove.com/blog/2008/5/21/weird-error-message.html) - May 19, 2008 ### [Two Faced Commits - how the ALT.NET Community is becoming more and more dogmatic](https://osherove.com/blog/2008/5/19/two-faced-commits-how-the-altnet-community-is-becoming-more.html) - May 15, 2008 ### [Typemock Isolator 4.2.4 is out](https://osherove.com/blog/2008/5/15/typemock-isolator-424-is-out.html) - May 10, 2008 ### [NullObject.For - As simple as it gets, but no simpler](https://osherove.com/blog/2008/5/10/nullobjectforlttgt-as-simple-as-it-gets-but-no-simpler.html) --- title: "Typemock Isolator 4.2.4 is out" url: "https://osherove.com/blog/2008/5/15/typemock-isolator-424-is-out.md" canonical: "https://osherove.com/blog/2008/5/15/typemock-isolator-424-is-out.html" published: "2008-05-15T14:17:12" updated: "2008-05-15T14:17:12" tags: [".NET", "Agile", "Unit Testing"] author: "Roy Osherove" description: "Typemock Isolator 4.2.4 is out with some important fixes . More information here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Typemock Isolator 4.2.4 is out By Roy Osherove May 15, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published May 15, 2008; technical details may be outdated. Typemock Isolator 4.2.4 is out with some important fixes . [More information here](http://blog.typemock.com/2008/05/typemock-isolator-v424-released.html). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 19, 2008 ### [Two Faced Commits - how the ALT.NET Community is becoming more and more dogmatic](https://osherove.com/blog/2008/5/19/two-faced-commits-how-the-altnet-community-is-becoming-more.html) - May 17, 2008 ### ["Swapping" instead of "Injecting" calls between classes](https://osherove.com/blog/2008/5/17/quotswappingquot-instead-of-quotinjectingquot-calls-between.html) - May 10, 2008 ### [NullObject.For - As simple as it gets, but no simpler](https://osherove.com/blog/2008/5/10/nullobjectforlttgt-as-simple-as-it-gets-but-no-simpler.html) - May 6, 2008 ### [Introducing LINQ To Regex](https://osherove.com/blog/2008/5/6/introducing-linq-to-regex.html) --- title: "Sore Throat == Apology" url: "https://osherove.com/blog/2008/5/12/sore-throat-apology.md" canonical: "https://osherove.com/blog/2008/5/12/sore-throat-apology.html" published: "2008-05-12T23:17:50" updated: "2008-05-12T23:17:50" tags: [] author: "Roy Osherove" description: "If you're in devteach toronto and are waiting to hear my session on intro to TDD, I may owe you an apology. it is 2AM here in Toronto and I just woke up with what has been a royal pain in my neck (literally) for 3 days…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Sore Throat == Apology By Roy Osherove May 12, 2008 **Historical article** · Originally published May 12, 2008; technical details may be outdated. If you're in [devteach toronto](http://www.devteach.com/) and are waiting to hear my session on intro to TDD, I may owe you an apology. it is 2AM here in Toronto and I just woke up with what has been a royal pain in my neck (literally) for 3 days now. I have a sore throat which won't go away. I'm hoping it will go away until my session tomorrow morning (7 hours from now) but chances are slim that I'll be able to make it. My apologies. I'm hoping that at least my two last talks on wed. won't be affected by this, or I'd just flown for 17 hours for nothing. Update: it's 6.20 AM and life still sucks. I don't think it's going to happen. --- title: "Agile Rejection Letter" url: "https://osherove.com/blog/2008/5/12/agile-rejection-letter.md" canonical: "https://osherove.com/blog/2008/5/12/agile-rejection-letter.html" published: "2008-05-12T16:51:51" updated: "2008-05-12T16:51:51" tags: ["Agile Related"] author: "Roy Osherove" description: "\"Dear Roy, Thank you for your submission to the Developer Jam stage, entitled \"Advanced Unit Testing Patterns, Tips and Tricks with examples in .NET\". We received a number of great submissions for the stage--more than…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Rejection Letter By Roy Osherove May 12, 2008 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published May 12, 2008; technical details may be outdated. "Dear Roy, Thank you for your submission to the Developer Jam stage, entitled "Advanced Unit Testing Patterns, Tips and Tricks with examples in .NET".  We received a number of great submissions for the stage--more than could fit in the space & time available, of course. To select sessions for inclusion, the Developer Jam review committee (see [http://www.agile2008.org/stage-developers.html](http://www.agile2008.org/stage-developers.html)) used a ranking system to indicate which sessions they would most like to see as part of the stage.   We averaged the numerical rankings from all of the committee members to select the proposals with the most interest. Unfortunately, your submission was not ranked highly enough to be included in the final program." When will I cross the glass ceiling? ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - May 19, 2008 ### [Two Faced Commits - how the ALT.NET Community is becoming more and more dogmatic](https://osherove.com/blog/2008/5/19/two-faced-commits-how-the-altnet-community-is-becoming-more.html) - May 18, 2008 ### [Tough Questions about unit testing - Your comments required](https://osherove.com/blog/2008/5/18/tough-questions-about-unit-testing-your-comments-required.html) - May 10, 2008 ### [NullObject.For - As simple as it gets, but no simpler](https://osherove.com/blog/2008/5/10/nullobjectforlttgt-as-simple-as-it-gets-but-no-simpler.html) - Apr 30, 2008 ### [Unit Testing Denial Pattern #1: Pretending the test is no longer valid](https://osherove.com/blog/2008/4/30/unit-testing-denial-pattern-1-pretending-the-test-is-no-long.html) --- title: "NullObject.For - As simple as it gets, but no simpler" url: "https://osherove.com/blog/2008/5/10/nullobjectforlttgt-as-simple-as-it-gets-but-no-simpler.md" canonical: "https://osherove.com/blog/2008/5/10/nullobjectforlttgt-as-simple-as-it-gets-but-no-simpler.html" published: "2008-05-10T14:19:11" updated: "2008-05-10T14:19:11" tags: [".NET", "Agile", "Agile Related", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "This NullObject Factory from Paul is very nice, simple and clean in its design. I really like it and I can see many uses for it, in parallel with working with your standard mocking framework or IoC Container…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NullObject.For\ - As simple as it gets, but no simpler By Roy Osherove May 10, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published May 10, 2008; technical details may be outdated. [This NullObject Factory](http://www.paulstovell.com/blog/nullobjectfor) from Paul is very nice, simple and clean in its design. I really like it and I can see many uses for it, in parallel with working with your standard [mocking framework](http://www.typemock.com/) or [IoC Container Implementation](http://martinfowler.com/articles/injection.html). here is a little usage example (last line): ``` var controller = new AccountController( // Class I am testing mockCustomerRepository, // Class I am mocking NullObject.For()); // Who cares about logging! ``` ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 17, 2008 ### ["Swapping" instead of "Injecting" calls between classes](https://osherove.com/blog/2008/5/17/quotswappingquot-instead-of-quotinjectingquot-calls-between.html) - May 15, 2008 ### [Typemock Isolator 4.2.4 is out](https://osherove.com/blog/2008/5/15/typemock-isolator-424-is-out.html) - May 6, 2008 ### [Introducing LINQ To Regex](https://osherove.com/blog/2008/5/6/introducing-linq-to-regex.html) - May 1, 2008 ### [Please don't go (work for MS or Google)](https://osherove.com/blog/2008/5/1/please-dont-go-work-for-ms-or-google.html) --- title: "Introducing LINQ To Regex" url: "https://osherove.com/blog/2008/5/6/introducing-linq-to-regex.md" canonical: "https://osherove.com/blog/2008/5/6/introducing-linq-to-regex.html" published: "2008-05-06T17:02:25" updated: "2008-05-06T17:02:25" tags: [".NET", "General Software Devel..."] author: "Roy Osherove" description: "When I first saw Josh Flanagan's Readable Fluent Regex Api , I loved it at first sight. Now I'm working on a demo for the upcoming DevTeach in Toronto , where I'll present how to build custom LINQ providers to various…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing LINQ To Regex By Roy Osherove May 6, 2008 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published May 6, 2008; technical details may be outdated. When I first saw [Josh Flanagan's Readable Fluent Regex Api](http://flimflan.com/blog/ReadableRegularExpressions.aspx), I loved it at first sight. Now I'm working on a demo for the [upcoming DevTeach in Toronto](http://www.devteach.com/), where I'll present how to build custom LINQ providers to various things. I thought it would be interesting to see if using the fluent Regex API Josh created along with a LINQ query syntax would "work" for me, so I set out to create LINQ to Regex. a couple of hours later, I like it pretty much :) **Here's what you can do with it:**   \[Test\]         public void FindEmailUsingPattern()         {             var query \= from match in                RegexQuery.Against("sdlfjsfl43r3490r98\*(\*\[email removed\]\_dakj3j")                         where match.Word.Repeat.AtLeast(1)                             .Literal("@")                             .Word.Repeat.AtLeast(1)                             .Literal(".")                             .Choice.Either(                                  Pattern.With.Literal("com"),                                  Pattern.With.Literal("net"))                             .IsTrue()                         select match;             foreach (var match in query)             {                 Assert.AreEqual("\[email removed\]",match.Value);             }         } you use the Regex.Query.Against(string), and you use the fluent API in the "where" part. but the results you get back are Regular Expression "Match" objects that give you the actual findings of instances that have passes the given criteria along with other data such as their index and such. it also works with grouping and other cool things done in the API. the main work was to be able to parse the full expression tree that is created by the big "where" clause, and translate that into calls against, again, the fluent API classes Josh created. I also needed to add an "IsTrue()" method at the end of the where clause so that the lambda expression can be accepted by the compiler. it always returns true.. **Downloads:** - [Source](http://www.assembla.com/spaces/LinqToRegex/documents/amJ-2sg8yr3znfab7jnrAJ/download/LinqToRegex0.1.src.ZIP) along with tests and the readable regex library port I did - [Binaries in release](http://www.assembla.com/spaces/LinqToRegex/documents/dZ9ytQg8ur3yGPab7jnrAJ/download/LinqToRegex0.1.Bin.ZIP) for the project You can also download both the source and the binaries [from the assembla homepage of this project.](http://www.assembla.com/spaces/LinqToRegex/) **Future possible steps:** - make the underlying regex query a compiled query (run faster) - some API tweaks perhaps? **How you can take part in this project:** I've put the sources on assembla: [http://www.assembla.com/spaces/LinqToRegex/](http://www.assembla.com/spaces/LinqToRegex/ "http://www.assembla.com/spaces/LinqToRegex/")  and if you're interested in contributing to the project send me an email to Roy at osherove.com and I'll add you. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 15, 2008 ### [Typemock Isolator 4.2.4 is out](https://osherove.com/blog/2008/5/15/typemock-isolator-424-is-out.html) - May 10, 2008 ### [NullObject.For - As simple as it gets, but no simpler](https://osherove.com/blog/2008/5/10/nullobjectforlttgt-as-simple-as-it-gets-but-no-simpler.html) - May 1, 2008 ### [Please don't go (work for MS or Google)](https://osherove.com/blog/2008/5/1/please-dont-go-work-for-ms-or-google.html) - Apr 29, 2008 ### [Don't miss out on Spec#](https://osherove.com/blog/2008/4/29/dont-miss-out-on-spec.html) --- title: "Addy Santo Blogs again" url: "https://osherove.com/blog/2008/5/5/addy-santo-blogs-again.md" canonical: "https://osherove.com/blog/2008/5/5/addy-santo-blogs-again.html" published: "2008-05-05T01:07:57" updated: "2008-05-05T01:07:57" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Here's a blog from someone I deeply respect . he just reopened it. let's hope this time Addy will share more of his thoughts with the world. I got to work with Addy when he was still living in Israel. Great guy, lots of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Addy Santo Blogs again By Roy Osherove May 5, 2008 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published May 5, 2008; technical details may be outdated. [Here's a blog from someone I deeply respect](http://blog.addysanto.com/). he just reopened it. let's hope this time Addy will share more of his thoughts with the world. I got to work with Addy when he was still living in Israel. Great guy, lots of knowledge, and you can be sure to expect some deep thoughts about scalability from someone who works as part of the Microsoft Live Services Infrastructure team. ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - May 19, 2008 ### [Two Faced Commits - how the ALT.NET Community is becoming more and more dogmatic](https://osherove.com/blog/2008/5/19/two-faced-commits-how-the-altnet-community-is-becoming-more.html) - May 6, 2008 ### [Introducing LINQ To Regex](https://osherove.com/blog/2008/5/6/introducing-linq-to-regex.html) - May 1, 2008 ### [Please don't go (work for MS or Google)](https://osherove.com/blog/2008/5/1/please-dont-go-work-for-ms-or-google.html) - Apr 11, 2008 ### [TechEd Israel Reflection Slides and Demos + organizational feedback](https://osherove.com/blog/2008/4/11/teched-israel-reflection-slides-and-demos-organizational-fee.html) --- title: "Please don't go (work for MS or Google)" url: "https://osherove.com/blog/2008/5/1/please-dont-go-work-for-ms-or-google.md" canonical: "https://osherove.com/blog/2008/5/1/please-dont-go-work-for-ms-or-google.html" published: "2008-05-01T01:24:51" updated: "2008-05-01T01:24:51" tags: [".NET", "General Software Devel..."] author: "Roy Osherove" description: "Um, kids, Joel needs employees. So don't go to MS or Google , please? Seriously, Joel? When was the last *important* thing you've built that didn't rely on some knowledge that came out of one of those two huge…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Please don't go (work for MS or Google) By Roy Osherove May 1, 2008 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published May 1, 2008; technical details may be outdated. Um, kids, [Joel](http://www.joelonsoftware.com/) needs employees. [So don't go to MS or Google](http://www.joelonsoftware.com/items/2008/05/01.html), please? Seriously, Joel? When was the last \*important\* thing you've built that didn't rely on some knowledge that came out of one of those two huge companies? The nice thing about being an architecture astronaut, is that every once in a while, you solve a real problem while trying to solve a different one. If MS and gogole didn't take on al these huge failing projects, how would the world learn about things like: - Making huge teams scalable (or how \*not\* to) - Creating very scalable architectures - Identity - WS Standards and Security - Parallelism, synchronization - Next generation languages and tools - better tooling for existing languages - Domain specific languages for solving complex and small problems - lots more "little" solutions to many problems People who work there don't work on hopeless projects, they go there to **solve huge technological challenges** that advance our software industry directly or indirectly by letting us know what the limits are in given contexts: - A team of X size becomes a big problem if you manage it wrong (see "[Vista Start menu Fiasco](http://moishelettvin.blogspot.com/2006/11/windows-shutdown-crapfest.html)") - [Agile can work](http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html) on larger teams (as long as you split them to smaller teams!) while people do other things as well - Integrating winforms in the browser can lead to [really bad things](http://www.aivosto.com/visdev/vdmbvis58.html), but [alternatives](http://silverlight.net/) will be found - How do you support [X millions of transactions per minute](http://www.mesh.com/)? ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 10, 2008 ### [NullObject.For - As simple as it gets, but no simpler](https://osherove.com/blog/2008/5/10/nullobjectforlttgt-as-simple-as-it-gets-but-no-simpler.html) - May 6, 2008 ### [Introducing LINQ To Regex](https://osherove.com/blog/2008/5/6/introducing-linq-to-regex.html) - Apr 29, 2008 ### [Don't miss out on Spec#](https://osherove.com/blog/2008/4/29/dont-miss-out-on-spec.html) - Apr 24, 2008 ### [Testing XML serialization attributes](https://osherove.com/blog/2008/4/24/testing-xml-serialization-attributes.html) --- title: "Unit Testing Denial Pattern #1: Pretending the test is no longer valid" url: "https://osherove.com/blog/2008/4/30/unit-testing-denial-pattern-1-pretending-the-test-is-no-long.md" canonical: "https://osherove.com/blog/2008/4/30/unit-testing-denial-pattern-1-pretending-the-test-is-no-long.html" published: "2008-04-30T13:21:26" updated: "2008-04-30T13:21:26" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Testing Guidelines"] author: "Roy Osherove" description: "Today was both a good day for e and a bad day for me. Good day because I managed to get a full suite of tests that were somehow failing to work again after a refactoring that got out of hand. Bad - because out of all…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing Denial Pattern \#1: Pretending the test is no longer valid By Roy Osherove April 30, 2008 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published April 30, 2008; technical details may be outdated. Today was both a good day for e and a bad day for me. Good day because I managed to get a full suite of tests that were somehow failing to work again after a refactoring that got out of hand. Bad - because out of all the tests, one of them failed. Here's the part I'm ashamed of: I was working with a pair, and when we both looked at the failing test, I went out and said "Oh, I think this test is no longer valid. It may just need to be removed". We both knew it was still a valid test, that for some reason was failing. But I was on such a role with making everything work, that test was feeling like a thorn in my thumb that I wanted to get rid of. It was a hard few minutes to convince ourselves to debug through the test and realize what the problem may be So, denial pattern #1: **Forces**: You just want to get on with your code, with only one or two tests that are "ruining the party" **Behavior:** Instead of fixing them debugging them or accepting that you might not have fixed everything, you try to tell yourself that the tests may no longer be valid without actually checking your assumption, which you really wish would be true. **How to avoid**: work in pairs. It's harder to ignore a problem (or at least more awkward) with 4 eyes staring at it. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 15, 2008 ### [Typemock Isolator 4.2.4 is out](https://osherove.com/blog/2008/5/15/typemock-isolator-424-is-out.html) - May 10, 2008 ### [NullObject.For - As simple as it gets, but no simpler](https://osherove.com/blog/2008/5/10/nullobjectforlttgt-as-simple-as-it-gets-but-no-simpler.html) - Apr 25, 2008 ### [Pros and Cons and of using an Auto Mocking container in your tests](https://osherove.com/blog/2008/4/25/pros-and-cons-and-of-using-an-auto-mocking-container-in-your.html) - Apr 14, 2008 ### [Creating a AutoMockingContainer with Microsoft Unity - Pretty darn simple.](https://osherove.com/blog/2008/4/14/creating-a-automockingcontainer-with-microsoft-unity-pretty.html) --- title: "Don't miss out on Spec#" url: "https://osherove.com/blog/2008/4/29/dont-miss-out-on-spec.md" canonical: "https://osherove.com/blog/2008/4/29/dont-miss-out-on-spec.html" published: "2008-04-29T11:26:40" updated: "2008-04-29T11:26:40" tags: [".NET", "altnet", "altnetconf"] author: "Roy Osherove" description: "Hey , you decision makers up there at Microsoft. Maybe you didn't realize this, or maybe you're waiting for the community to let you know. Spec# is one awesome project that needs to become a real product. It allows one…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Don't miss out on Spec\# By Roy Osherove April 29, 2008 In [.NET](https://osherove.com/blog/category/net), [altnet](https://osherove.com/blog/category/altnet), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published April 29, 2008; technical details may be outdated. **Hey**, you decision makers up there at Microsoft. Maybe you didn't realize this, or maybe you're waiting for the community to let you know. [Spec#](http://research.microsoft.com/SpecSharp/) is one awesome project that needs to become a real product. It allows one to verify during compilation lots of things you'd usually write corner-case unit tests for, plus allows you to specify a standard behavioral contract for methods using attributes. Saves lots of time and lots of headaches. **Want To learn more?** - Go to the [Spec# Homepage](http://research.microsoft.com/SpecSharp/) and to read about it and download a working version of it for [VS 2005](http://research.microsoft.com/research/downloads/details/89025c9e-09ca-4462-9373-da28b026085f/details.aspx) or [VS 2008](http://research.microsoft.com/research/downloads/details/8826adb9-8398-40d6-a22d-951923fe2647/details.aspx) - [Here's an interview](http://hanselminutes.com/default.aspx?showID=128) Hanselman did on Spec# - [Here's a video](http://codebetter.com/blogs/gregyoung/archive/2008/04/26/altdotnet-spec-session.aspx) from the Spec# session at Alt.NET Seattle If the community is vocal enough about it, the research project just might become a real product. so if you like it, blog it. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 6, 2008 ### [Introducing LINQ To Regex](https://osherove.com/blog/2008/5/6/introducing-linq-to-regex.html) - May 1, 2008 ### [Please don't go (work for MS or Google)](https://osherove.com/blog/2008/5/1/please-dont-go-work-for-ms-or-google.html) - Apr 24, 2008 ### [Testing XML serialization attributes](https://osherove.com/blog/2008/4/24/testing-xml-serialization-attributes.html) - Apr 24, 2008 ### [Parallel Builds with MSBuild](https://osherove.com/blog/2008/4/24/parallel-builds-with-msbuild.html) --- title: "I'm a wuss" url: "https://osherove.com/blog/2008/4/25/im-a-wuss.md" canonical: "https://osherove.com/blog/2008/4/25/im-a-wuss.html" published: "2008-04-25T14:43:25" updated: "2008-04-25T14:43:25" tags: [] author: "Roy Osherove" description: "No honey. I'm not going on this trip with you. Embedded Flash media from the original post is no longer playable." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm a wuss By Roy Osherove April 25, 2008 **Historical article** · Originally published April 25, 2008; technical details may be outdated. No honey. I'm not going [on this trip](http://www.upgradetravelbetter.com/2008/04/24/video-hikes-im-too-big-a-wuss-for/) with you. Embedded Flash media from the original post is no longer playable. --- title: "Pros and Cons and of using an Auto Mocking container in your tests" url: "https://osherove.com/blog/2008/4/25/pros-and-cons-and-of-using-an-auto-mocking-container-in-your.md" canonical: "https://osherove.com/blog/2008/4/25/pros-and-cons-and-of-using-an-auto-mocking-container-in-your.html" published: "2008-04-25T08:54:18" updated: "2008-04-25T08:54:18" tags: ["Agile", "Art Of Unit Testing", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "In regards to my post about injecting mocks and stubs using a container in your tests, Dave asks in the comments: Why would you want to do this in the first place? Here are the things I can think about right now (pros…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Pros and Cons and of using an Auto Mocking container in your tests By Roy Osherove April 25, 2008 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published April 25, 2008; technical details may be outdated. In regards [to my post about injecting mocks and stubs using a container](http://weblogs.asp.net/rosherove/archive/2008/04/24/injecting-typemock-stubs-and-mocks-using-the-structuremap-container-in-a-unit-test.aspx) in your tests, Dave asks in the comments: Why would you want to do this in the first place? Here are the things I can think about right now (pros and cons). I'd love to hear your thoughts. Pros for using a container in your tests: - Can lead to **easier test maintainability**. You can add new dependencies to object under test without worrying about existing tests that use that object, since those dependencies will usually be automatically stubbed out as part of the object creation process - Allows easier focus on testing interaction. When you have a class that has 3+ dependencies, you'd usually want to have no more than one mock against which you'll test the interaction of the class, while the rest would be stubs.  Since everything is getting stubbed by default, all you need to worry about when writing the test is about the mock's expected interaction and perhaps setting one of the stubs to run using a specific behavior.  In any case, writing the boilerplate stubbing code for **all** the dependencies is spared from you, something which I have struggled with before Cons of using a container: - It could make the **test a little less readable** in terms of understanding what gets injected and what the actual dependencies are. Assuming the reader already knows how to use containers, there is still a very clear separation between setting up the container's mocks and stubs and looks at where they are being used. By design , a container's work is hidden under an abstraction layer, which also makes the test reader not see how the mocks and stubs fit together inside the object under test. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 10, 2008 ### [NullObject.For - As simple as it gets, but no simpler](https://osherove.com/blog/2008/5/10/nullobjectforlttgt-as-simple-as-it-gets-but-no-simpler.html) - Apr 30, 2008 ### [Unit Testing Denial Pattern #1: Pretending the test is no longer valid](https://osherove.com/blog/2008/4/30/unit-testing-denial-pattern-1-pretending-the-test-is-no-long.html) - Apr 14, 2008 ### [Creating a AutoMockingContainer with Microsoft Unity - Pretty darn simple.](https://osherove.com/blog/2008/4/14/creating-a-automockingcontainer-with-microsoft-unity-pretty.html) - Mar 15, 2008 ### [Belgium TechDays Slides and demos, and my travel schedule](https://osherove.com/blog/2008/3/15/belgium-techdays-slides-and-demos-and-my-travel-schedule.html) --- title: "Testing XML serialization attributes" url: "https://osherove.com/blog/2008/4/24/testing-xml-serialization-attributes.md" canonical: "https://osherove.com/blog/2008/4/24/testing-xml-serialization-attributes.html" published: "2008-04-24T19:42:23" updated: "2008-04-24T19:42:23" tags: [".NET", "Agile Related", "Art Of Unit Testing", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "Not sure how I feel about this particular brand of testing syntax . still, it's good that someone thought this problem through - testing xml serialization attributes. [via the morning brew ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Testing XML serialization attributes By Roy Osherove April 24, 2008 In [.NET](https://osherove.com/blog/category/net), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published April 24, 2008; technical details may be outdated. Not sure how I feel about [this particular brand of testing syntax](http://www.sharpregion.com/post/Give-back-to-your-testing-framework.aspx). still, it's good that someone thought this problem through - testing xml serialization attributes. \[via [the morning brew](http://feeds.feedburner.com/~r/ReflectivePerspective/~3/276708890/)\] ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 1, 2008 ### [Please don't go (work for MS or Google)](https://osherove.com/blog/2008/5/1/please-dont-go-work-for-ms-or-google.html) - Apr 29, 2008 ### [Don't miss out on Spec#](https://osherove.com/blog/2008/4/29/dont-miss-out-on-spec.html) - Apr 24, 2008 ### [Parallel Builds with MSBuild](https://osherove.com/blog/2008/4/24/parallel-builds-with-msbuild.html) - Feb 26, 2008 ### [Fluent XML Library - Ultra cool, short and weet](https://osherove.com/blog/2008/2/26/fluent-xml-library-ultra-cool-short-and-weet.html) --- title: "Parallel Builds with MSBuild" url: "https://osherove.com/blog/2008/4/24/parallel-builds-with-msbuild.md" canonical: "https://osherove.com/blog/2008/4/24/parallel-builds-with-msbuild.html" published: "2008-04-24T19:35:26" updated: "2008-04-24T19:35:26" tags: [".NET", "Tips & Tricks"] author: "Roy Osherove" description: "I just learned something new: You can do parallel builds with MsBuild if you have a multi core CPU. awesome." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Parallel Builds with MSBuild By Roy Osherove April 24, 2008 In [.NET](https://osherove.com/blog/category/net), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published April 24, 2008; technical details may be outdated. I just learned something new: [You can do parallel builds with MsBuild](http://www.hanselman.com/blog/FasterBuildsWithMSBuildUsingParallelBuildsAndMulticoreCPUs.aspx) if you have a multi core CPU. awesome. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Apr 29, 2008 ### [Don't miss out on Spec#](https://osherove.com/blog/2008/4/29/dont-miss-out-on-spec.html) - Apr 24, 2008 ### [Testing XML serialization attributes](https://osherove.com/blog/2008/4/24/testing-xml-serialization-attributes.html) - Feb 26, 2008 ### [Fluent XML Library - Ultra cool, short and weet](https://osherove.com/blog/2008/2/26/fluent-xml-library-ultra-cool-short-and-weet.html) - Jan 17, 2008 ### [Debug into the .NET Framework Library Source Code - It's here.](https://osherove.com/blog/2008/1/17/debug-into-the-net-framework-library-source-code-its-here.html) --- title: "Injecting Typemock Stubs and Mocks using the StructureMap container in a unit test" url: "https://osherove.com/blog/2008/4/24/injecting-typemock-stubs-and-mocks-using-the-structuremap-co.md" canonical: "https://osherove.com/blog/2008/4/24/injecting-typemock-stubs-and-mocks-using-the-structuremap-co.html" published: "2008-04-24T16:40:23" updated: "2008-04-24T16:40:23" tags: ["Art Of Unit Testing", "Testing Guidelines", "Typemock", "Unit Testing"] author: "Roy Osherove" description: "Someone asked for examples of how you'd inject stubs and mocks when you'd like your object under test to use a container such as StructureMap . here are a couple of simple tests to show this using Typemock Isolator .…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Injecting Typemock Stubs and Mocks using the StructureMap container in a unit test By Roy Osherove April 24, 2008 In [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Typemock](https://osherove.com/blog/category/typemock), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published April 24, 2008; technical details may be outdated. Someone asked for examples of how you'd inject stubs and mocks when you'd like your object under test to use a container such as [StructureMap](http://structuremap.sourceforge.net/Default.htm). here are a couple of simple tests to show this using [Typemock Isolator](http://www.typemock.com/). the first uses the string based mocks found in the free community version of Typemock Isolator. the second uses the natural style syntax in the enterprise edition: - assume you have ILogger, IEmailer interfaces and a MessageManager class under test that takes both of these in the ctor. - The logic under test is: if calling the emailer throws an exception, the logger should be called with the message that was sent **\[Test, VerifyMocks\] public void** **MessageManager\_FailsEmailing\_LogsMessage\_ReflectiveStructureMap()** {     StructureMapConfiguration.BuildInstancesOf().AddConcreteType();     StructureMapConfiguration.BuildInstancesOf().AddConcreteType();     MockObject emailStub = MockManager.MockObject();     emailStub.AlwaysThrow("Send", new Exception("fake exception"));     MockObject logMock = MockManager.MockObject();     logMock.ExpectCall("Write").Args("could not email message abc");     ObjectFactory.InjectStub(emailStub.MockedInstance);     ObjectFactory.Inject(logMock.MockedInstance);     MessageManager mm = ObjectFactory.GetInstance();     mm.SendMessage("abc"); } \---------------------------------------- **\[Test, VerifyMocks\] public void MessageManager\_FailsEmailing\_LogsMessage\_NaturalStructureMap() **{     StructureMapConfiguration.BuildInstancesOf().AddConcreteType();     StructureMapConfiguration.BuildInstancesOf().AddConcreteType();     IEmailer emailStub = RecorderManager.CreateMockedObject();     ILogger logMock = RecorderManager.CreateMockedObject();     using (RecordExpectations re = RecorderManager.StartRecording())     {         emailStub.Send("", "", "", "");         re.Throw(new Exception("fake exception")).RepeatAlways();         logMock.Write("could not email message abc");     }     ObjectFactory.InjectStub(emailStub);     ObjectFactory.Inject(logMock);     MessageManager mm = ObjectFactory.GetInstance();     mm.SendMessage("abc"); } ## More in Art Of Unit Testing [All posts in Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) - Apr 25, 2008 ### [Pros and Cons and of using an Auto Mocking container in your tests](https://osherove.com/blog/2008/4/25/pros-and-cons-and-of-using-an-auto-mocking-container-in-your.html) - Apr 24, 2008 ### [Testing XML serialization attributes](https://osherove.com/blog/2008/4/24/testing-xml-serialization-attributes.html) - Mar 1, 2008 ### [What is a good example of unit test over specification?](https://osherove.com/blog/2008/3/1/what-is-a-good-example-of-unit-test-over-specification.html) - Feb 14, 2008 ### [Future of Mock Frameworks: AEIS - Abstract Expectations & Isolation Syntax](https://osherove.com/blog/2008/2/14/future-of-mock-frameworks-aeis-abstract-expectations-amp-iso.html) --- title: "Creating a AutoMockingContainer with Microsoft Unity - Pretty darn simple." url: "https://osherove.com/blog/2008/4/14/creating-a-automockingcontainer-with-microsoft-unity-pretty.md" canonical: "https://osherove.com/blog/2008/4/14/creating-a-automockingcontainer-with-microsoft-unity-pretty.html" published: "2008-04-14T07:18:14" updated: "2008-04-14T07:18:14" tags: ["Agile", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "updated : made container more readable Just created a little Auto Mocking Container built on Microsoft Unity. It was very very simple. here's a test that uses it. We tell the container to Returna stub for T because we…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Creating a AutoMockingContainer with Microsoft Unity - Pretty darn simple. By Roy Osherove April 14, 2008 In [Agile](https://osherove.com/blog/category/agile), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published April 14, 2008; technical details may be outdated. **updated**: made container more readable Just created a little Auto Mocking Container built on Microsoft Unity. It was very very simple. here's a test that uses it. We tell the container to Returna stub for T because we will want whoever calls resolve on that interface to get the same mock the we will configure in the record() block. In the record() block we Resolve the interface that returns a mock, and tell the mock what to return. later, "real" code resolves the "Runner" class, which is dependent on our two mocks. \[Test\]         public void MockTwoDependenciesForAConstructor()         {             MockRepository mocks \= new MockRepository();             AutoMockingUnityContainer container \=                            new AutoMockingUnityContainer(mocks);             container.WillReturnAStubFor();             container.WillReturnAStubFor();             using (mocks.Record())             {   //Tell our mock to return true when this method is called                 container.Resolve().IsLogFileFull();                 LastCall.Return(true);             }             //runner class takes both of these mocks in its constructor             Runner runner \= container.Resolve();             Assert.IsNotNull(runner);         } and here's the full code for the container. As you can see it is pretty simple. ContainerControlledLifetimeManager makes sure we have one single instance built for that object during the container's lifetime or until the type is re-registered using the container.      public class AutoMockingUnityContainer : UnityContainer     {         private MockRepository mocks;         public AutoMockingUnityContainer(MockRepository mocks)         {             this.mocks \= mocks;         }         public AutoMockingUnityContainer WillReturnAStubFor() where T : class         {             return (AutoMockingUnityContainer) this.RegisterType(typeof(T), null, null, new StubFactory(typeof(T), mocks,Lifetime.Singleton));         }         public AutoMockingUnityContainer WillCreateMockFor() where T : class         {             return (AutoMockingUnityContainer) this.RegisterType(typeof(T), null, null, new MockFactory(typeof(T),mocks,Lifetime.Singleton));         }         public AutoMockingUnityContainer WillCreatePartialMockFor(Lifetime lifetime) where T : class         {             return (AutoMockingUnityContainer) this.RegisterType(typeof(T), null, null, new PartialMockFactory(typeof(T), mocks, lifetime));         }         private abstract class AbstractFactory : ContainerControlledLifetimeManager         {             protected Type theType;             protected Lifetime lifetime;             protected AbstractFactory(Type theType, MockRepository mocks, Lifetime lifetime)             {                 this.theType \= theType;                 this.lifetime \= lifetime;                 this.mocks \= mocks;             }             protected MockRepository mocks;             protected abstract object GetTheObject(Type type);             public override object GetValue()             {                 object value \= base.GetValue();                 if (lifetime\==Lifetime.NewEveryTime || value \== null)                 {                     value \= GetTheObject(theType);                     SetValue(value);                 }                 return value;             }         }         class MockFactory: AbstractFactory         {             public MockFactory(Type theType, MockRepository mocks, Lifetime lifetime)                 : base(theType, mocks, lifetime)             {             }             protected override object GetTheObject(Type type)             {                 return mocks.CreateMock(type);             }         }         class StubFactory: AbstractFactory         {             public StubFactory(Type theType, MockRepository mocks, Lifetime lifetime)                       : base(theType, mocks, lifetime)             {             }             protected override object GetTheObject(Type type)             {                 return mocks.Stub(type);             }         }         class PartialMockFactory: AbstractFactory         {             public PartialMockFactory(Type theType, MockRepository mocks,                           Lifetime lifetime) : base(theType, mocks, lifetime)             {             }             protected override object GetTheObject(Type type)             {                 return mocks.PartialMock(theType);             }         }     }     public enum Lifetime     {         Singleton,         NewEveryTime     } ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Apr 30, 2008 ### [Unit Testing Denial Pattern #1: Pretending the test is no longer valid](https://osherove.com/blog/2008/4/30/unit-testing-denial-pattern-1-pretending-the-test-is-no-long.html) - Apr 25, 2008 ### [Pros and Cons and of using an Auto Mocking container in your tests](https://osherove.com/blog/2008/4/25/pros-and-cons-and-of-using-an-auto-mocking-container-in-your.html) - Mar 15, 2008 ### [Belgium TechDays Slides and demos, and my travel schedule](https://osherove.com/blog/2008/3/15/belgium-techdays-slides-and-demos-and-my-travel-schedule.html) - Mar 9, 2008 ### [Testing loops?](https://osherove.com/blog/2008/3/9/testing-loops.html) --- title: "Itamar at 1.3 (movie)" url: "https://osherove.com/blog/2008/4/12/itamar-at-13-movie.md" canonical: "https://osherove.com/blog/2008/4/12/itamar-at-13-movie.html" published: "2008-04-12T17:07:46" updated: "2008-04-12T17:07:46" tags: ["Off Topic"] author: "Roy Osherove" description: "It's time to mark my son, Itamar's, one year and 3 months birthday. Here's a little movie to show what my little angel looks like these days:" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Itamar at 1.3 (movie) By Roy Osherove April 12, 2008 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 12, 2008; technical details may be outdated. It's time to mark my son, Itamar's, one year and 3 months birthday. Here's a little movie to show what my little angel looks like these days: ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 4, 2008 ### [\[Off Topic\] My Geeky little architect](https://osherove.com/blog/2008/7/4/off-topic-my-geeky-little-architect.html) - Jun 2, 2008 ### [Itamar at 1.5](https://osherove.com/blog/2008/6/2/itamar-at-15.html) - Mar 9, 2008 ### [Want a Wii? (And learn about Typemock Isolator?)](https://osherove.com/blog/2008/3/9/want-a-wii-and-learn-about-typemock-isolator.html) - Mar 4, 2008 ### [Looking for a PHP programmer](https://osherove.com/blog/2008/3/4/looking-for-a-php-programmer.html) --- title: "TechEd Israel Reflection Slides and Demos + organizational feedback" url: "https://osherove.com/blog/2008/4/11/teched-israel-reflection-slides-and-demos-organizational-fee.md" canonical: "https://osherove.com/blog/2008/4/11/teched-israel-reflection-slides-and-demos-organizational-fee.html" published: "2008-04-11T01:14:03" updated: "2008-04-11T01:14:03" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Teched Israel that took place in Eilat was just done a couple of days ago. Here are my slides and demos from my talk: Slides and Demos - .NET In the mirror a deep reflection session It also includes the lyrics to the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TechEd Israel Reflection Slides and Demos + organizational feedback By Roy Osherove April 11, 2008 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published April 11, 2008; technical details may be outdated. Teched Israel that took place in Eilat was just done a couple of days ago. Here are my slides and demos from my talk: - [Slides and Demos - .NET In the mirror a deep reflection session](http://teamagile.com/Downloads/TechedIL_08_Reflection.zip) It also includes the lyrics to the new song I sang (by Bob Marley) - "Reflection Song". The talk went well except for a little power outage in the middle that caused the talk to stop midway. I whipped out the guitar and played the first half of the song until the power came back. It passed the time nicely :) Someone promised to put the video on on youtube but I hadn't found it yet.. Feedback about Teched's Organization: **The Good:** - overall it seemed to have gone pretty well - The business center with the games and other stuff was pretty cool - Microsoft inviting 25 bloggers on its own dime to come in and blog at the event was extraordinary and was very well planned and executed. way to go! - Continuous live blog coverage of the event at blogs.microsoft.co.il was awesome. - The teched website had lots of "web 2.0"ish features and "Yosi and Lior's broadcasts" was a good idea - I only got to go to a coupe of talks: David Chappell's and Daniel Moth's. They were both good and executed professionally. I can learn a lot from both of these guys. - Mostly Great food, and lots of it. **The Not so good** - **No speaker names on the agenda.** People like to also make decisions based on who the speaker is. Having only talk titles on the little agenda that we were wearing made it really difficult to decide. - **Wifi not available in most conference rooms**. Hey, Microsoft. if you're going to be paying for 25 bloggers to come into teched, you might want to enable them to do live blogging from the sessions the attend... - **Speaker room**: Only had one speaker room in one hotel, while the conference was being held in about 5 different hotels at once. I never even got into the speaker room because it was always too far away and I didn't want to walk all the way over there. If there is one place you usually **want** to be in during conferences, it's the speaker room, since that's the the main information hub for meeting all the other speakers, get refreshed and be able to work on rehearsals, equipment and so on. My suggestion: have a speaker room at each conference hotel. - **The teched staff was invisible by email**. I'm talking about the people organizing the event. Some even had a "we'll be offline for 3 days so only get us by cellphone" messages. - **No Printers**. I needed to quickly print my song lyrics before my talk - and I couldn't find any printer to use at the hotel I was speaking in. I ended up writing them by hand. My suggestion: have a printer at every hotel for general use. - Slowish wifi in many places. **The verging on disaster** - No rehearsal schedule in the room where you speak. No one contacted me on coming to do a rehearsal even once during the conference.  That is a must. - before my talk: There was no one "in charge" of the room I was speaking in. There should always be someone in charge in case things are needed. I had no one to contact 10 minutes before my talk when no image would be shown on the screen from my laptop. - The audio and video staff  - Not the ones from sela, but the ones that actually manipulated the screener and the audio hookups. I heard many complaints about them but for me it was pretty bad as well: I only had 15 minutes between the talk before and my own, and I wanted to check audio and video plus see that my guitar plays well. The video guy  said he can't see my video, but then said "but its ok we still have 10 minutes" and then left the room. I was puzzled and annoyed, plus scared of what might happen. 2 minutes before the talk **another person** came in and  helped fix it but just because I almost begged him to do it. That is not the way to run a conference room. ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - May 5, 2008 ### [Addy Santo Blogs again](https://osherove.com/blog/2008/5/5/addy-santo-blogs-again.html) - May 1, 2008 ### [Please don't go (work for MS or Google)](https://osherove.com/blog/2008/5/1/please-dont-go-work-for-ms-or-google.html) - Mar 16, 2008 ### [Dark Colored Visual Studio Color Scheme](https://osherove.com/blog/2008/3/16/dark-colored-visual-studio-color-scheme.html) - Mar 15, 2008 ### [Looking into VIM and ViEmu.](https://osherove.com/blog/2008/3/15/looking-into-vim-and-viemu.html) --- title: "Fix: Cannot copy file 'X' to file 'Y'. The process cannot access the file because it is being used by another process. in Visual Studio 2008" url: "https://osherove.com/blog/2008/4/9/fix-cannot-copy-file-x-to-file-y-the-process-cannot-access-t.md" canonical: "https://osherove.com/blog/2008/4/9/fix-cannot-copy-file-x-to-file-y-the-process-cannot-access-t.html" published: "2008-04-09T01:21:33" updated: "2008-04-09T01:21:33" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "This just saved me loads of time(especially because it only happened every once in a while): if you encounter the amazingly annoying \"Cannot copy file because it is being used by another process\" when you want to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Fix: Cannot copy file 'X' to file 'Y'. The process cannot access the file because it is being used by another process. in Visual Studio 2008 By Roy Osherove April 9, 2008 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published April 9, 2008; technical details may be outdated. [This just saved](http://forums.asp.net/p/1186574/2032698.aspx) me loads of time(especially because it only happened every once in a while): if you encounter the amazingly annoying "Cannot copy file because it is being used by another process" when you want to rebuild or rerun a project in vs (for me it was always the test project), you can put the following in the pre-build event of the project that is having problems: if exist "$(TargetPath).locked" del "$(TargetPath).locked" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked" for me personally the problem was a specific file that my project was testing against that was locked, so I changed it to be the following: if exist "**SOME\_DLL**.locked" del "**SOME\_DLL**.locked" if not exist "**SOME\_DLL**.locked" move "**SOME\_DLL**" "**SOME\_DLL**.locked" ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - May 31, 2008 ### [Making Tab mix plus and other firefox addons work with Firefox 3 beta](https://osherove.com/blog/2008/5/31/making-tab-mix-plus-and-other-firefox-addons-work-with-firef.html) - Apr 24, 2008 ### [Parallel Builds with MSBuild](https://osherove.com/blog/2008/4/24/parallel-builds-with-msbuild.html) - Feb 4, 2008 ### [Nice little gmail trick](https://osherove.com/blog/2008/2/4/nice-little-gmail-trick.html) - Sep 13, 2007 ### [Tip: Easily change logon settings for all users on your machine](https://osherove.com/blog/2007/9/13/tip-easily-change-logon-settings-for-all-users-on-your-machi.html) --- title: "Interactive MAD Fold-ins - coolness" url: "https://osherove.com/blog/2008/3/31/interactive-mad-fold-ins-coolness.md" canonical: "https://osherove.com/blog/2008/3/31/interactive-mad-fold-ins-coolness.html" published: "2008-03-31T12:27:06" updated: "2008-03-31T12:27:06" tags: [] author: "Roy Osherove" description: "This is awesome, and has nothing to do with tech(found via twitter): Interactive MAD magazine fold-ins from the sixties to today ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Interactive MAD Fold-ins - coolness By Roy Osherove March 31, 2008 **Historical article** · Originally published March 31, 2008; technical details may be outdated. This is awesome, and has nothing to do with tech(found via twitter): [Interactive MAD magazine fold-ins from the sixties to today](http://www.nytimes.com/interactive/2008/03/28/arts/20080330_FOLD_IN_FEATURE.html). --- title: "Twittered" url: "https://osherove.com/blog/2008/3/20/twittered.md" canonical: "https://osherove.com/blog/2008/3/20/twittered.html" published: "2008-03-20T15:35:00" updated: "2008-03-20T15:35:00" tags: [] author: "Roy Osherove" description: "OK. I'm on twitter . see what happens. (BTW, I am unable to post this using live writer, the server returns a bad response. anyone know what's up with weblogs.asp.net?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Twittered By Roy Osherove March 20, 2008 **Historical article** · Originally published March 20, 2008; technical details may be outdated. OK. [I'm on twitter](http://twitter.com//RoyOsherove). see what happens. (BTW, I am unable to post this using live writer, the server returns a bad response. anyone know what's up with weblogs.asp.net? --- title: "Dark Colored Visual Studio Color Scheme" url: "https://osherove.com/blog/2008/3/16/dark-colored-visual-studio-color-scheme.md" canonical: "https://osherove.com/blog/2008/3/16/dark-colored-visual-studio-color-scheme.html" published: "2008-03-16T05:47:08" updated: "2008-03-16T05:47:08" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Someone asked me by email if I can share my VS.NET Color scheme as shown in this video . Well, Here it is ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Dark Colored Visual Studio Color Scheme By Roy Osherove March 16, 2008 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published March 16, 2008; technical details may be outdated. Someone asked me by email if I can share my VS.NET Color scheme [as shown in this video](http://blog.typemock.com/2008/02/video-typemock-basics-2-decorators.html).  Well,  [Here it is](http://teamagile.com/Downloads/RoyDark.zip). [![image](https://osherove.com/img/wb/eblogs.asp.net_blogs_rosherove_WindowsLiveWriter_DarkColoredVisualStudioColorScheme_C21F_image_3.png)](http://teamagile.com/Downloads/RoyDark.zip) ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - May 1, 2008 ### [Please don't go (work for MS or Google)](https://osherove.com/blog/2008/5/1/please-dont-go-work-for-ms-or-google.html) - Apr 11, 2008 ### [TechEd Israel Reflection Slides and Demos + organizational feedback](https://osherove.com/blog/2008/4/11/teched-israel-reflection-slides-and-demos-organizational-fee.html) - Mar 15, 2008 ### [Looking into VIM and ViEmu.](https://osherove.com/blog/2008/3/15/looking-into-vim-and-viemu.html) - Mar 11, 2008 ### [Turn Anonymous Types into IDictionary of values](https://osherove.com/blog/2008/3/11/turn-anonymous-types-into-idictionary-of-values.html) --- title: "Looking into VIM and ViEmu." url: "https://osherove.com/blog/2008/3/15/looking-into-vim-and-viemu.md" canonical: "https://osherove.com/blog/2008/3/15/looking-into-vim-and-viemu.html" published: "2008-03-15T14:10:53" updated: "2008-03-15T14:10:53" tags: ["General Software Devel..."] author: "Roy Osherove" description: "I'm a keyboard junkie. After having seen this little screencast about Vim , I recently installed ViEmu for Visual Studio, Word and Outlook. My final thoughts after a month or so with it: In Visual Studio I felt more…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Looking into VIM and ViEmu. By Roy Osherove March 15, 2008 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published March 15, 2008; technical details may be outdated. I'm a keyboard junkie. After having seen [this little screencast about Vim](http://blog.eleutian.com/2008/01/18/VimScreencast1.aspx), I recently installed [ViEmu](http://www.viemu.com/) for Visual Studio, Word and Outlook. My final thoughts after a month or so with it: - In Visual Studio I felt more productive with Resharper so I removed viEmu from VS. - In Word- I can't live without it, especially when writing while flying. It is a life saver. - In outlook - I don't use outlook much anymore (Gmail!) so its not relevant for me. In Visual Studio, Resharper does a lot of the things that ViEmu is known for: especially navigation. The thing is, Resharper "knows" the code much better than ViEmu (which just knows text - which is why it works magic in word) and thus I felt as productive with both, with some of ViEmu "overriding" resharper's shortcuts a bit annoying. In Word - I have used it for editing and writing [my book](http://the.artofunittesting.com/).  It was much more productive, but the learning curve was hard. I'd continue to use it in Word, since it does make editing text much fater (especially the navigation and search features) For another POV, check out [JPs post](http://codebetter.com/blogs/jean-paul_boodhoo/archive/2008/03/12/gettin-jiggy-with-vim.aspx).  I've also installed gVim instead of notepad. ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Apr 11, 2008 ### [TechEd Israel Reflection Slides and Demos + organizational feedback](https://osherove.com/blog/2008/4/11/teched-israel-reflection-slides-and-demos-organizational-fee.html) - Mar 16, 2008 ### [Dark Colored Visual Studio Color Scheme](https://osherove.com/blog/2008/3/16/dark-colored-visual-studio-color-scheme.html) - Mar 11, 2008 ### [Turn Anonymous Types into IDictionary of values](https://osherove.com/blog/2008/3/11/turn-anonymous-types-into-idictionary-of-values.html) - Mar 4, 2008 ### [Generate an object model from an XML string](https://osherove.com/blog/2008/3/4/generate-an-object-model-from-an-xml-string.html) --- title: "Every Build THEY Break" url: "https://osherove.com/blog/2008/3/15/every-build-they-break.md" canonical: "https://osherove.com/blog/2008/3/15/every-build-they-break.html" published: "2008-03-15T13:44:31" updated: "2008-03-15T13:44:31" tags: ["Songs"] author: "Roy Osherove" description: "Seriously ? Someone liked my \" Every build you break \" song so much that they took a whole bunch of programmers to a real recording studio, made a video, and created their own version of the song? with almost totally…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Every Build THEY Break By Roy Osherove March 15, 2008 In [Songs](https://osherove.com/blog/category/songs) **Historical article** · Originally published March 15, 2008; technical details may be outdated. [Seriously](https://www.youtube.com/watch?v=fVc_VPMsj7A&watch_response)? Someone liked my "[Every build you break](https://www.youtube.com/watch?v=XV5fViOoV_8)" song so much that they took a whole bunch of programmers to a real recording studio, made a video, and created their own version of the song? with almost totally different words? Seriously?? ## More in Songs [All posts in Songs](https://osherove.com/blog/category/songs) - May 19, 2007 ### [It's Time For Violence: A song about Databases](https://osherove.com/blog/2007/5/19/its-time-for-violence-a-song-about-databases.html) --- title: "Belgium TechDays Slides and demos, and my travel schedule" url: "https://osherove.com/blog/2008/3/15/belgium-techdays-slides-and-demos-and-my-travel-schedule.md" canonical: "https://osherove.com/blog/2008/3/15/belgium-techdays-slides-and-demos-and-my-travel-schedule.html" published: "2008-03-15T06:48:40" updated: "2008-03-15T06:48:40" tags: ["Agile"] author: "Roy Osherove" description: "I came back from TechDays in Ghent, Belgium yesterdays, where it's been a quick 3 days for me. I didn't have a lot of time to do any fun stuff, since I was going over all my demos and such (couple of new presentations).…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Belgium TechDays Slides and demos, and my travel schedule By Roy Osherove March 15, 2008 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published March 15, 2008; technical details may be outdated. I came back from TechDays in Ghent, Belgium yesterdays, where it's been a quick 3 days for me. I didn't have a lot of time to do any fun stuff, since I was going over all my demos and such (couple of new presentations). Here are the slides and code from my talks: - **Deep Reflection**: What's cool and hot in Reflection 2.0 and 3.5 ([slides and code](http://teamagile.com/Downloads/TD08_DeepReflection.zip)) - **Unit Testing in .NET 3.5**: From Windows Workflow and WCF to ASP.NET MVC ([Slides and Code](http://teamagile.com/Downloads/TD08_UnitTestingNet35.zip)) - **10 Things to know in .NET 3.5** and what we can learn from them ([slides and code](http://teamagile.com/Downloads/TD08_10ThingInNet35.zip)) Here's my upcoming travel schedule: - **ALT.NET** Gathering in Seattle Apr 17- 21 - **DevTeach** Toronto May 12-16 - **TechEd US** June17 - It's my first time speaking there, yay! I'll do three talks on unit testing and testability. - **Norwegian Developer Conference** June 17-18, smack down on my birthday, It should be a great time to be in norway! - **TechEd Barcelona** in early nov. (no date yet) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Apr 25, 2008 ### [Pros and Cons and of using an Auto Mocking container in your tests](https://osherove.com/blog/2008/4/25/pros-and-cons-and-of-using-an-auto-mocking-container-in-your.html) - Apr 14, 2008 ### [Creating a AutoMockingContainer with Microsoft Unity - Pretty darn simple.](https://osherove.com/blog/2008/4/14/creating-a-automockingcontainer-with-microsoft-unity-pretty.html) - Mar 9, 2008 ### [Testing loops?](https://osherove.com/blog/2008/3/9/testing-loops.html) - Mar 9, 2008 ### [Testing ASP.NET MVC Controllers with Typemock Isolator](https://osherove.com/blog/2008/3/9/testing-aspnet-mvc-controllers-with-typemock-isolator.html) --- title: "Turn Anonymous Types into IDictionary of values" url: "https://osherove.com/blog/2008/3/11/turn-anonymous-types-into-idictionary-of-values.md" canonical: "https://osherove.com/blog/2008/3/11/turn-anonymous-types-into-idictionary-of-values.html" published: "2008-03-11T15:22:37" updated: "2008-03-11T15:22:37" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Hers is one cool use I found for Anonymous Types (stolen from the ASP.NET MVC Framework): Use anonymous types to create and initialize a list of dictionary values which you can pass around: void…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Turn Anonymous Types into IDictionary of values By Roy Osherove March 11, 2008 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published March 11, 2008; technical details may be outdated. Hers is one cool use I found for Anonymous Types (stolen from the ASP.NET MVC Framework): Use anonymous types to create and initialize a list of dictionary values which you can pass around: void CreateADictionaryFromAnonymousType()        {            var dictionary = MakeDictionary(new {Name="Roy",Country="Israel"});            Console.WriteLine(dictionary\["Name"\]);        } private IDictionary MakeDictionary(object withProperties)        {            IDictionary dic = new Dictionary();            var properties = System.ComponentModel.TypeDescriptor.GetProperties(withProperties);            foreach (PropertyDescriptor property in properties)            {                dic.Add(property.Name,property.GetValue(withProperties));            }            return dic;        } ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Mar 16, 2008 ### [Dark Colored Visual Studio Color Scheme](https://osherove.com/blog/2008/3/16/dark-colored-visual-studio-color-scheme.html) - Mar 15, 2008 ### [Looking into VIM and ViEmu.](https://osherove.com/blog/2008/3/15/looking-into-vim-and-viemu.html) - Mar 4, 2008 ### [Generate an object model from an XML string](https://osherove.com/blog/2008/3/4/generate-an-object-model-from-an-xml-string.html) - Feb 27, 2008 ### [Private builds (Gated Checkins) with Team Foundation Server](https://osherove.com/blog/2008/2/27/private-builds-gated-checkins-with-team-foundation-server.html) --- title: "Want a Wii? (And learn about Typemock Isolator?)" url: "https://osherove.com/blog/2008/3/9/want-a-wii-and-learn-about-typemock-isolator.md" canonical: "https://osherove.com/blog/2008/3/9/want-a-wii-and-learn-about-typemock-isolator.html" published: "2008-03-09T07:37:03" updated: "2008-03-09T07:37:03" tags: ["Off Topic"] author: "Roy Osherove" description: "You can watch our webcast and participate in the raffle between attendees , and get a Wii just for listening (We don't even have one in our own office, so you better really want one if you get it..)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Want a Wii? (And learn about Typemock Isolator?) By Roy Osherove March 9, 2008 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 9, 2008; technical details may be outdated. You can [watch our webcast](http://blog.typemock.com/2008/03/upcoming-event-on-march-12.html) and participate in the raffle between attendees , and get a Wii just for listening (We don't even have one in our own office, so you better really want one if you get it..) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 2, 2008 ### [Itamar at 1.5](https://osherove.com/blog/2008/6/2/itamar-at-15.html) - Apr 12, 2008 ### [Itamar at 1.3 (movie)](https://osherove.com/blog/2008/4/12/itamar-at-13-movie.html) - Mar 4, 2008 ### [Looking for a PHP programmer](https://osherove.com/blog/2008/3/4/looking-for-a-php-programmer.html) - Jan 22, 2008 ### [Computer Magic](https://osherove.com/blog/2008/1/22/computer-magic.html) --- title: "Testing loops?" url: "https://osherove.com/blog/2008/3/9/testing-loops.md" canonical: "https://osherove.com/blog/2008/3/9/testing-loops.html" published: "2008-03-09T07:29:49" updated: "2008-03-09T07:29:49" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "Tommy writes in on my book forum : \" Hi, This is an real world example method where I'm confused how to unit test. ------------------8<------------------- public List PrepareCandidates(RuleDescription…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Testing loops? By Roy Osherove March 9, 2008 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 9, 2008; technical details may be outdated. Tommy writes in on [my book forum](http://www.manning-sandbox.com/thread.jspa?messageID=68202#68202): " Hi, This is an real world example method where I'm confused how to unit test. \------------------8<------------------- public List PrepareCandidates(RuleDescription ruleDescription, RuleType ruleType) { List ruleDescTypeList = \_dataAccessor.GetRuleDescriptionTypeList(ruleType); List ruleDescriptionList = new List(); foreach (RuleDescriptionType type in ruleDescTypeList) { ruleDescriptionList.AddRange(\_dataAccessor.GetRuleDescriptionList(type, ruleDescription.Extent)); } return ruleDescriptionList; } \------------------8<------------------- The classes RuleType, RuleDesctiptionType and RuleDescription contains many attributes which some are other complex objects. The method does not contain any real logic, just adding data to lists from a database (through the \_dataAccessor-object). Does that mean that I should not unit test this method? Or does it mean that the method is poorly designed? Can or should I mock the \_dataAccessor-object? Lets say that the method returns 5 elements in the list for given parameters (with say 6 importants attributes in each). That's a lot of data to prepare for a test if I want to write expectations for the return value of the method. I often stumble in to these situations when I'm unit testing where I become overwhelmed by the amount of data I have to insert. I guess I have the wrong approach, but where do I think wrong? /Tommy " Heres my answer: I would test this method as it does contain some form of logic (a loop). There are two ways to test it: - Integration test: Use the real database (data accessor) which forces you to have this data available somewhere and have everything running. - unit test: That is what I'd go for here I think. here is how you could unit test this: - Stub out the data accessor to return only 1-3 values (remember to write the test a simply as possible to prove your point), and only send in 1-3 values to the method, and assert that you get back an expected collection. - What you are testing is: that it loops on all of them, and that is asks for data from the accessor , so your tests need to vary on the nuber of objects being passed in, and the data returned from the stub accessor (at least two or three tests I would think). - when these three pass, you can be certain to a degree that the method does what its supposed to do. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Apr 14, 2008 ### [Creating a AutoMockingContainer with Microsoft Unity - Pretty darn simple.](https://osherove.com/blog/2008/4/14/creating-a-automockingcontainer-with-microsoft-unity-pretty.html) - Mar 15, 2008 ### [Belgium TechDays Slides and demos, and my travel schedule](https://osherove.com/blog/2008/3/15/belgium-techdays-slides-and-demos-and-my-travel-schedule.html) - Mar 9, 2008 ### [Testing ASP.NET MVC Controllers with Typemock Isolator](https://osherove.com/blog/2008/3/9/testing-aspnet-mvc-controllers-with-typemock-isolator.html) - Mar 1, 2008 ### [What is a good example of unit test over specification?](https://osherove.com/blog/2008/3/1/what-is-a-good-example-of-unit-test-over-specification.html) --- title: "Testing ASP.NET MVC Controllers with Typemock Isolator" url: "https://osherove.com/blog/2008/3/9/testing-aspnet-mvc-controllers-with-typemock-isolator.md" canonical: "https://osherove.com/blog/2008/3/9/testing-aspnet-mvc-controllers-with-typemock-isolator.html" published: "2008-03-09T02:28:40" updated: "2008-03-09T02:28:40" tags: ["Agile", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "Scott Hanselman posted his notes and slides (and movies!) from his talk on the ASP.NET MVC framework, where he also mentioned and shows how he's write unit tests for the MVC framework in ASP.NET. Scott has examples both…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Testing ASP.NET MVC Controllers with Typemock Isolator By Roy Osherove March 9, 2008 In [Agile](https://osherove.com/blog/category/agile), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 9, 2008; technical details may be outdated. [Scott Hanselman posted his notes and slides](http://www.hanselman.com/blog/ASPNETMVCSessionAtMix08TDDAndMvcMockHelpers.aspx) (and movies!) from his talk on the ASP.NET MVC framework, where he also mentioned and shows how he's write unit tests for the MVC framework in ASP.NET. Scott has examples both in [Moq](http://code.google.com/p/moq/) and [Rhino.Mocks](http://www.ayende.com/projects/rhino-mocks/downloads.aspx) on how to write these tests, so I created the [parallel thing for Typemock Isolator](http://blog.typemock.com/2008/03/testing-aspnet-mvc-using-typemock.html). If you use Typemock Isolator and want to test ASP.NET MVC - [you can go right here](http://blog.typemock.com/2008/03/testing-aspnet-mvc-using-typemock.html) and use the MvcMockHelpers class. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 15, 2008 ### [Belgium TechDays Slides and demos, and my travel schedule](https://osherove.com/blog/2008/3/15/belgium-techdays-slides-and-demos-and-my-travel-schedule.html) - Mar 9, 2008 ### [Testing loops?](https://osherove.com/blog/2008/3/9/testing-loops.html) - Mar 1, 2008 ### [What is a good example of unit test over specification?](https://osherove.com/blog/2008/3/1/what-is-a-good-example-of-unit-test-over-specification.html) - Feb 27, 2008 ### [Typemock Isolator 4.2 released](https://osherove.com/blog/2008/2/27/typemock-isolator-42-released.html) --- title: "Generate an object model from an XML string" url: "https://osherove.com/blog/2008/3/4/generate-an-object-model-from-an-xml-string.md" canonical: "https://osherove.com/blog/2008/3/4/generate-an-object-model-from-an-xml-string.html" published: "2008-03-04T08:05:50" updated: "2008-03-04T08:05:50" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "Tommy sent me an email: \"I've written a little web application that could come in handy for your many projects. It generates the C# code needed to read and write the given xml (Just past some xml in the textbox). You…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Generate an object model from an XML string By Roy Osherove March 4, 2008 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published March 4, 2008; technical details may be outdated. Tommy sent me an email: > "I've written a little web application that could come in handy for your many projects. It generates the C# code needed to read and write the given xml (Just past some xml in the textbox). You can find it @ [http://xgeneration.tuyware.com/](http://xgeneration.tuyware.com/ "http://xgeneration.tuyware.com/") > It's candidate for a lot of improvements, but it's already usefull. > Enjoy it !" I tried it out with an RSS feed and it generated classes for all the elements in the feed, with the root element being the one you'd start from, calling root.ReadXML(). Very nice! I can see how this could be useful in many scenarios, but be sure not to paste in anything secure, since this is a web application! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jul 5, 2008 ### [Extending Depender with your own custom dependency rules](https://osherove.com/blog/2008/7/5/extending-depender-with-your-own-custom-dependency-rules.html) - Jul 5, 2008 ### [Introducing Depender - Testability Problem Finder](https://osherove.com/blog/2008/7/5/introducing-depender-testability-problem-finder.html) - Feb 26, 2008 ### [Fluent XML Library - Ultra cool, short and weet](https://osherove.com/blog/2008/2/26/fluent-xml-library-ultra-cool-short-and-weet.html) - Feb 21, 2008 ### [Ad hoc Unit Tests with Snippet Compiler](https://osherove.com/blog/2008/2/21/ad-hoc-unit-tests-with-snippet-compiler.html) --- title: "Looking for a PHP programmer" url: "https://osherove.com/blog/2008/3/4/looking-for-a-php-programmer.md" canonical: "https://osherove.com/blog/2008/3/4/looking-for-a-php-programmer.html" published: "2008-03-04T02:58:05" updated: "2008-03-04T02:58:05" tags: ["Off Topic"] author: "Roy Osherove" description: "We need a PHP programmer (remote work is possible) as soon as possible. Close by (Israel) is better, but not a must. If you are one, or know one that needs part time work - send me an email to royo at typemock.com" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Looking for a PHP programmer By Roy Osherove March 4, 2008 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 4, 2008; technical details may be outdated. [We need](http://typemock.com/) a PHP programmer (remote work is possible) as soon as possible. Close by (Israel) is better, but not a must. If you are one, or know one that needs part time work - send me an email to royo at typemock.com ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 12, 2008 ### [Itamar at 1.3 (movie)](https://osherove.com/blog/2008/4/12/itamar-at-13-movie.html) - Mar 9, 2008 ### [Want a Wii? (And learn about Typemock Isolator?)](https://osherove.com/blog/2008/3/9/want-a-wii-and-learn-about-typemock-isolator.html) - Jan 22, 2008 ### [Computer Magic](https://osherove.com/blog/2008/1/22/computer-magic.html) - Jan 17, 2008 ### [\[very off topic\] I can haz a site](https://osherove.com/blog/2008/1/17/very-off-topic-i-can-haz-a-site.html) --- title: "What is a good example of unit test over specification?" url: "https://osherove.com/blog/2008/3/1/what-is-a-good-example-of-unit-test-over-specification.md" canonical: "https://osherove.com/blog/2008/3/1/what-is-a-good-example-of-unit-test-over-specification.html" published: "2008-03-01T14:08:02" updated: "2008-03-01T14:08:02" tags: ["Agile", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "I'm working on chapter 8 of my upcoming book and I need to come up with a good example of over specification in unit tests, that leads to an unmaintainable test in the long run (fragile test). I have my ideas on how to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What is a good example of unit test over specification? By Roy Osherove March 1, 2008 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 1, 2008; technical details may be outdated. I'm working on chapter 8 of [my upcoming book](http://artofunittesting.com/) and I need to come up with a good example of over specification in unit tests, that leads to an unmaintainable test in the long run (fragile test). I have my ideas on how to show it, but I'd love to know what you consider an over specified test, that can be shown with a concise (or even a bit contrived) code example. \- How would you define test over specification? \- how would you show it? \- are there multiple kinds of over specification with different ways to tackle them? ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 9, 2008 ### [Testing loops?](https://osherove.com/blog/2008/3/9/testing-loops.html) - Mar 9, 2008 ### [Testing ASP.NET MVC Controllers with Typemock Isolator](https://osherove.com/blog/2008/3/9/testing-aspnet-mvc-controllers-with-typemock-isolator.html) - Feb 27, 2008 ### [Typemock Isolator 4.2 released](https://osherove.com/blog/2008/2/27/typemock-isolator-42-released.html) - Feb 25, 2008 ### [An Agile phone Number](https://osherove.com/blog/2008/2/25/an-agile-phone-number.html) --- title: "Typemock Isolator 4.2 released" url: "https://osherove.com/blog/2008/2/27/typemock-isolator-42-released.md" canonical: "https://osherove.com/blog/2008/2/27/typemock-isolator-42-released.html" published: "2008-02-27T05:14:24" updated: "2008-02-27T05:14:24" tags: ["Agile"] author: "Roy Osherove" description: "Just a short announcement to tell you that Typemock 4.2 was just released out of beta. Download it here . To make this short, you can find what's new and release notes here:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Typemock Isolator 4.2 released By Roy Osherove February 27, 2008 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published February 27, 2008; technical details may be outdated. Just a short announcement to tell you that Typemock 4.2 was just released out of beta. [Download it here](http://www.typemock.com/Downloads.php). To make this short, you can find what's new and release notes here: [http://www.typemock.com/Docs/UserGuide/index.php?topic=ReleaseNotes42.html](http://www.typemock.com/Docs/UserGuide/index.php?topic=ReleaseNotes42.html) Some of the cool features added: - Highlight mocked methods within the VS Debugger so you know why you're not stepping into them - Ability to evaluate during debugging the value of mocked methods and objects without ruining the test state - Ability to mock direct fields which are not value types (properties were already supported) - Events declared on abstract classes can now be mocked - Events declared in derived interfaces can now be mocked - Extension method on MSCorlib classes can now be mocked inside a chained statement - A generic API for creating mocks is now available in the Community edition - The new release of DotTrace profiler (3.0) is now supported and can be linked to run with Typemock Isolator - more.. Also, we're constantly delivering tutorial videos on [the new Typemock blog](http://blog.typemock.com/) about using typemock Isolator, like [this one about using custom method decorators](http://blog.typemock.com/2008/02/video-typemock-basics-2-decorators.html) to extend your unit tests very easily in 5 minutes. Your comments are appreciated! ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 9, 2008 ### [Testing ASP.NET MVC Controllers with Typemock Isolator](https://osherove.com/blog/2008/3/9/testing-aspnet-mvc-controllers-with-typemock-isolator.html) - Mar 1, 2008 ### [What is a good example of unit test over specification?](https://osherove.com/blog/2008/3/1/what-is-a-good-example-of-unit-test-over-specification.html) - Feb 25, 2008 ### [An Agile phone Number](https://osherove.com/blog/2008/2/25/an-agile-phone-number.html) - Feb 24, 2008 ### [Project White and a cool debugging tip](https://osherove.com/blog/2008/2/24/project-white-and-a-cool-debugging-tip.html) --- title: "Private builds (Gated Checkins) with Team Foundation Server" url: "https://osherove.com/blog/2008/2/27/private-builds-gated-checkins-with-team-foundation-server.md" canonical: "https://osherove.com/blog/2008/2/27/private-builds-gated-checkins-with-team-foundation-server.html" published: "2008-02-27T04:50:30" updated: "2008-02-27T04:50:30" tags: ["General Software Devel..."] author: "Roy Osherove" description: "This is cool and I didn't know it existed: \"OpenGauntlet is a free side-app for Microsoft's Team Foundation Server which mimics a fundamental feature of Microsoft's internal development system (codenamed Gauntlet), also…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Private builds (Gated Checkins) with Team Foundation Server By Roy Osherove February 27, 2008 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published February 27, 2008; technical details may be outdated. [This is cool](http://www.opengauntlet.org/) and I didn't know it existed: "OpenGauntlet is a free side-app for Microsoft's [Team Foundation Server](http://msdn2.microsoft.com/en-us/teamsystem/aa718934.aspx) which mimics a fundamental feature of Microsoft's internal development system (codenamed Gauntlet), also known as "Gated Checkins". It avoids the problems associated with large development teams whereby a single developer will check in non-compiling code, which subsequently causes delays in the development life cycle as the team waits for the issues to be resolved. It can also be configured to disallow check ins if the proposed code changes break the unit tests. The central principle is that users are not allowed to check code directly into source control. Instead, they shelve their changes with a specific naming prefix when they are ready to check some changes in, and OpenGauntlet unshelves their changes into a temporary workspace, checks the changes compile and pass unit tests, and then checks the changes into source control under the requesting developer's username" Essentially, this is like the idea od a "delayed commit" or "private build" as you get with Jetbrains TeamCity. I know past customers who I've consulted too asked for this so it's nice to know TFS users are not left behind. this is another case where I can see exactly how powerful open source projects can be. coolness. ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Mar 11, 2008 ### [Turn Anonymous Types into IDictionary of values](https://osherove.com/blog/2008/3/11/turn-anonymous-types-into-idictionary-of-values.html) - Mar 4, 2008 ### [Generate an object model from an XML string](https://osherove.com/blog/2008/3/4/generate-an-object-model-from-an-xml-string.html) - Feb 27, 2008 ### [My top 21 Most Viewed Blog posts](https://osherove.com/blog/2008/2/27/my-top-21-most-viewed-blog-posts.html) - Feb 26, 2008 ### [How not to compare "body of knowledge"](https://osherove.com/blog/2008/2/26/how-not-to-compare-quotbody-of-knowledgequot.html) --- title: "My top 21 Most Viewed Blog posts" url: "https://osherove.com/blog/2008/2/27/my-top-21-most-viewed-blog-posts.md" canonical: "https://osherove.com/blog/2008/2/27/my-top-21-most-viewed-blog-posts.html" published: "2008-02-27T00:45:29" updated: "2008-02-27T00:45:29" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Here are the top 21 viewed pages on my blog in the past year and a half: Essential Software to install on a new computer Dataset Hell: \"Failed to enable constraints. One or more rows contains values...\" Strip HTML Tags…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My top 21 Most Viewed Blog posts By Roy Osherove February 27, 2008 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published February 27, 2008; technical details may be outdated. Here are the top 21 viewed pages on my blog in the past year and a half: 1. [Essential Software to install on a new computer](http://weblogs.asp.net/rosherove/archive/2007/07/27/essential-software-to-install-on-a-new-computer.aspx) 2. [Dataset Hell: "Failed to enable constraints. One or more rows contains values..."](http://weblogs.asp.net/rosherove/archive/2004/10/03/DataSet-hell-_2D00_-_2200_Failed-to-enable-constraints.-One-or-more-rows--contain-values_2E002E002E002E002200_.aspx) 3. [Strip HTML Tags from a string using regular expressions](http://weblogs.asp.net/rosherove/archive/2003/05/13/6963.aspx)  4. [Convert a DataReader into A Dataset](http://weblogs.asp.net/rosherove/archive/2004/01/22/61541.aspx) 5.  [BackgroundWorker implementation - in c#](http://weblogs.asp.net/rosherove/articles/BackgroundWorker.aspx) 6. [Make your .NET application support scripting - a practical approach](http://weblogs.asp.net/rosherove/articles/dotnetscripting.aspx) 7. [Simplified Database Unit Testing using Enterprise Services](http://weblogs.asp.net/rosherove/articles/dbunittesting.aspx)  8.  [Train to be a keyboard master with Keyboard Jedi](http://weblogs.asp.net/rosherove/archive/2007/06/03/train-to-be-a-keyboard-master-with-keyboard-jedi.aspx) 9. [ALT.NET - Alternative tools and approaches to mainstream .NET](http://weblogs.asp.net/rosherove/archive/2007/06/04/alt-net-alternative-tools-and-approaches-to-mainstream-net.aspx) 10. [MbUnit vs. NUnit vs. Team System Unit Testing - choosing a unit test framework](http://weblogs.asp.net/rosherove/archive/2006/09/24/MbUnit-vs.-NUnit-Vs.-Team-System-Unit-Testing-_2D00_-Choosing-a-unit-test-framework.aspx) 11. [Unlocking an attachment blocked by outlook](http://weblogs.asp.net/rosherove/archive/2004/04/30/123338.aspx) 12. [Testing Guidelines](http://weblogs.asp.net/rosherove/archive/tags/Testing+Guidelines/default.aspx) (Category page of testing guidelines posts from my blog) 13. [Introducing XtUnit:  An Unofficial Unit Testing Extensibility Framework - Add new attributes to NUnit or MbUnit easily!](http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx) 14. [It's Time For Violence: a song about Databases](http://weblogs.asp.net/rosherove/archive/2007/05/19/it-s-time-for-violence-a-song-about-databases.aspx) 15. [Free Sharepoint 2007 book download](http://weblogs.asp.net/rosherove/archive/2006/06/20/FreeSharepoint2007BookDownload.aspx)  16. [Microsoft gets Design For Testability with new MVC framework for ASP.NET- Finally.](http://weblogs.asp.net/rosherove/archive/2007/10/06/microsoft-gets-design-for-testability-with-new-mvc-framework-for-asp-net-finally.aspx)  17. [The 3 ways to create a Thread-Safe GUI with .NET 2.0, with one clear winner.](http://weblogs.asp.net/rosherove/archive/2006/03/01/439309.aspx) (note: [there is even a better way](http://weblogs.asp.net/rosherove/archive/2007/05/19/easier-winform-ui-thread-safe-methods-with-dynamicproxy2-and-osherove-simpleinterception.aspx)) 18. [Understanding the different generic collections in .NET (List, BindingList, Collection)](http://weblogs.asp.net/rosherove/archive/2006/07/18/GenericCollectionsInDotNet.aspx) 19. [Fixing "mapi32.dll is an invalid Extended MAPI Library" and "Mail is not installed on your system" on Windows Server 2003 with Exchange](http://weblogs.asp.net/rosherove/archive/2006/06/13/Fixing-_2200_mapi32.dll-is-an-invalid-Extended-MAPI-Library_2200_-and-_2200_Mail-is-not-installed-on-your-system_2200_-on-Windows-Server-2003-with-Exchange.aspx)  20. [Windows Media Player problem? Here's a very good FAQ Page](http://weblogs.asp.net/rosherove/archive/2004/04/06/108122.aspx) 21. [Choosing a Mock Object Framework](http://weblogs.asp.net/rosherove/archive/2007/04/26/choosing-a-mock-object-framework.aspx) (I need to create a new poll!) There is something to think about when you look at this: - About half of these are more than two years old - two of them are dataset relates - a couple of them have nothing to do with .NET at all What conclusions can we deduct from this little experiment? ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Mar 4, 2008 ### [Generate an object model from an XML string](https://osherove.com/blog/2008/3/4/generate-an-object-model-from-an-xml-string.html) - Feb 27, 2008 ### [Private builds (Gated Checkins) with Team Foundation Server](https://osherove.com/blog/2008/2/27/private-builds-gated-checkins-with-team-foundation-server.html) - Feb 26, 2008 ### [How not to compare "body of knowledge"](https://osherove.com/blog/2008/2/26/how-not-to-compare-quotbody-of-knowledgequot.html) - Feb 26, 2008 ### [Fluent XML Library - Ultra cool, short and weet](https://osherove.com/blog/2008/2/26/fluent-xml-library-ultra-cool-short-and-weet.html) --- title: "How not to compare \"body of knowledge\"" url: "https://osherove.com/blog/2008/2/26/how-not-to-compare-quotbody-of-knowledgequot.md" canonical: "https://osherove.com/blog/2008/2/26/how-not-to-compare-quotbody-of-knowledgequot.html" published: "2008-02-26T19:09:14" updated: "2008-02-26T19:09:14" tags: ["General Software Devel..."] author: "Roy Osherove" description: "If you are faced with two technologies, ideas, or frameworks - how do you compare which has a wider body of knowledge? Specifically - can you tell if X does NOT have a wide body of knowledge? Here's something I think…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How not to compare "body of knowledge" By Roy Osherove February 26, 2008 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published February 26, 2008; technical details may be outdated. If you are faced with two technologies, ideas, or frameworks - how do you compare which has a wider body of knowledge? Specifically - can you tell if X does NOT have a wide body of knowledge? Here's something I think will NOT work for this: Google fight. Example: [Dataset Vs. ORM](http://www.googlefight.com/index.php?lang=en_GB&word1=dataset&word2=ORM) Do the results mean that datasets have a wider body of knowledge?  not really. they (probably) show that more people posted about problems they were having getting datasets to work. Maybe it means "wider body of problems"? maybe not. For example: [NUnit vs. JUnit](http://www.googlefight.com/index.php?lang=en_GB&word1=nunit&word2=junit). JUnit clearly wins, and I am pretty sure it's not because it has more problems but because it has been around longer. so it MIGHT hold true that there is a wide body of knowledge there. but with NUnit having over 1 million results, can't it be said that they BOTH have a wide body of knowledge? so how **do** you decide if something has a body of knowledge and is worth pursuing? ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Feb 27, 2008 ### [Private builds (Gated Checkins) with Team Foundation Server](https://osherove.com/blog/2008/2/27/private-builds-gated-checkins-with-team-foundation-server.html) - Feb 27, 2008 ### [My top 21 Most Viewed Blog posts](https://osherove.com/blog/2008/2/27/my-top-21-most-viewed-blog-posts.html) - Feb 26, 2008 ### [Fluent XML Library - Ultra cool, short and weet](https://osherove.com/blog/2008/2/26/fluent-xml-library-ultra-cool-short-and-weet.html) - Feb 24, 2008 ### [Project White and a cool debugging tip](https://osherove.com/blog/2008/2/24/project-white-and-a-cool-debugging-tip.html) --- title: "Fluent XML Library - Ultra cool, short and weet" url: "https://osherove.com/blog/2008/2/26/fluent-xml-library-ultra-cool-short-and-weet.md" canonical: "https://osherove.com/blog/2008/2/26/fluent-xml-library-ultra-cool-short-and-weet.html" published: "2008-02-26T12:31:36" updated: "2008-02-26T12:31:36" tags: [".NET", "Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "Oh, next time I'm going to generate XML, remind me to use Mark Resmussen's ultra cool XML Fluent Interface library . her'es a killer snippet: XmlOutput xo = new XmlOutput() .XmlDeclaration() .Node(\"root\").Within()…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Fluent XML Library - Ultra cool, short and weet By Roy Osherove February 26, 2008 In [.NET](https://osherove.com/blog/category/net), [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published February 26, 2008; technical details may be outdated. Oh, next time I'm going to generate XML, remind me to use [Mark Resmussen's ultra cool XML Fluent Interface library](http://www.improve.dk/blog/2007/10/20/xmldocument-fluent-interface). her'es a killer snippet: > ``` > XmlOutput xo = new XmlOutput() > .XmlDeclaration() > .Node("root").Within() > .Node("result").Attribute("type", "boolean").InnerText("true"); > ``` ``` [via Glenn] ``` ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Apr 24, 2008 ### [Testing XML serialization attributes](https://osherove.com/blog/2008/4/24/testing-xml-serialization-attributes.html) - Apr 24, 2008 ### [Parallel Builds with MSBuild](https://osherove.com/blog/2008/4/24/parallel-builds-with-msbuild.html) - Jan 17, 2008 ### [Debug into the .NET Framework Library Source Code - It's here.](https://osherove.com/blog/2008/1/17/debug-into-the-net-framework-library-source-code-its-here.html) - Jan 15, 2008 ### [BitDiffer, anyone?](https://osherove.com/blog/2008/1/15/bitdiffer-anyone.html) --- title: "An Agile phone Number" url: "https://osherove.com/blog/2008/2/25/an-agile-phone-number.md" canonical: "https://osherove.com/blog/2008/2/25/an-agile-phone-number.html" published: "2008-02-25T02:40:39" updated: "2008-02-25T02:40:39" tags: ["Agile"] author: "Roy Osherove" description: "We are now using Secret Server at work , and liking it very much (apart from small usability problems it's cool). I just found out something that put a smile on my face - Thycotic - the company who makes this product…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # An Agile phone Number By Roy Osherove February 25, 2008 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published February 25, 2008; technical details may be outdated. We are now using [Secret Server](http://www.thycotic.com/products_secretserver_overview.html) at [work](http://typemock.com/), and liking it very much (apart from small usability problems it's cool). I just found out something that put a smile on my face - [Thycotic](http://www.thycotic.com/) - the company who makes this product and works in an agile fashion has a cool phone number at the bottom of the product intranet portal: ![image](https://osherove.com/img/wb/03c13d0b_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_AnAgilephoneNumber_A478_image_thumb.png) Coolness :) Are these the new agile vanity plates? ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 1, 2008 ### [What is a good example of unit test over specification?](https://osherove.com/blog/2008/3/1/what-is-a-good-example-of-unit-test-over-specification.html) - Feb 27, 2008 ### [Typemock Isolator 4.2 released](https://osherove.com/blog/2008/2/27/typemock-isolator-42-released.html) - Feb 24, 2008 ### [Project White and a cool debugging tip](https://osherove.com/blog/2008/2/24/project-white-and-a-cool-debugging-tip.html) - Feb 24, 2008 ### [Dear Diary, Pair Programming is FUN!](https://osherove.com/blog/2008/2/24/dear-diary-pair-programming-is-fun.html) --- title: "Project White and a cool debugging tip" url: "https://osherove.com/blog/2008/2/24/project-white-and-a-cool-debugging-tip.md" canonical: "https://osherove.com/blog/2008/2/24/project-white-and-a-cool-debugging-tip.html" published: "2008-02-24T13:41:18" updated: "2008-02-24T13:41:18" tags: ["Agile", "General Software Devel..."] author: "Roy Osherove" description: "Some cool stuff happening in the testing world: * Project white seems like a nice takeoff on winforms testing (a la NUnitForms), from the thoughtworks Guys. Bil Simser talks about it some more . * Gregg Miskelly came up…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Project White and a cool debugging tip By Roy Osherove February 24, 2008 In [Agile](https://osherove.com/blog/category/agile), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published February 24, 2008; technical details may be outdated. Some cool stuff happening in the testing world: \* [Project white](http://www.codeplex.com/white) seems like a nice takeoff on winforms testing (a la NUnitForms), from the thoughtworks Guys. [Bil Simser talks about it some more](http://weblogs.asp.net/bsimser/archive/2008/02/21/automated-ui-testing-with-project-white.aspx). \* Gregg Miskelly came up with a brilliant debugging trick on his [blog](http://blogs.msdn.com/greggm/archive/2007/01/17/setting-conditional-breakpoints-using-object-ids.aspx). He shows how to set a breakpoint to stop only on a specific object instance using Object Ids during Debugging. (via [BugSlayer](http://msdn.microsoft.com/msdnmag/issues/07/07/Bugslayer/#S6)) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 27, 2008 ### [Typemock Isolator 4.2 released](https://osherove.com/blog/2008/2/27/typemock-isolator-42-released.html) - Feb 25, 2008 ### [An Agile phone Number](https://osherove.com/blog/2008/2/25/an-agile-phone-number.html) - Feb 24, 2008 ### [Dear Diary, Pair Programming is FUN!](https://osherove.com/blog/2008/2/24/dear-diary-pair-programming-is-fun.html) - Feb 21, 2008 ### [Ad hoc Unit Tests with Snippet Compiler](https://osherove.com/blog/2008/2/21/ad-hoc-unit-tests-with-snippet-compiler.html) --- title: "Dear Diary, Pair Programming is FUN!" url: "https://osherove.com/blog/2008/2/24/dear-diary-pair-programming-is-fun.md" canonical: "https://osherove.com/blog/2008/2/24/dear-diary-pair-programming-is-fun.html" published: "2008-02-24T13:29:18" updated: "2008-02-24T13:29:18" tags: ["Agile"] author: "Roy Osherove" description: "Dear Diary It's been over a year since my last real pair programming exercise, in a real company as part of a real coding job. Today I finally got to do it again, and it felt great. There is nothing like the open…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Dear Diary, Pair Programming is FUN! By Roy Osherove February 24, 2008 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published February 24, 2008; technical details may be outdated. Dear Diary It's been over a year since my last real pair programming exercise, in a real company as part of a real coding job. Today I finally got to do it again, and it felt great. There is nothing like the open discussion and exchange of ideas, on design, coding standards, and other things, with a peer. I hope to bring myself in the coming future into this situation more and more often. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 25, 2008 ### [An Agile phone Number](https://osherove.com/blog/2008/2/25/an-agile-phone-number.html) - Feb 24, 2008 ### [Project White and a cool debugging tip](https://osherove.com/blog/2008/2/24/project-white-and-a-cool-debugging-tip.html) - Feb 21, 2008 ### [Ad hoc Unit Tests with Snippet Compiler](https://osherove.com/blog/2008/2/21/ad-hoc-unit-tests-with-snippet-compiler.html) - Feb 14, 2008 ### [Future of Mock Frameworks: AEIS - Abstract Expectations & Isolation Syntax](https://osherove.com/blog/2008/2/14/future-of-mock-frameworks-aeis-abstract-expectations-amp-iso.html) --- title: "Ad hoc Unit Tests with Snippet Compiler" url: "https://osherove.com/blog/2008/2/21/ad-hoc-unit-tests-with-snippet-compiler.md" canonical: "https://osherove.com/blog/2008/2/21/ad-hoc-unit-tests-with-snippet-compiler.html" published: "2008-02-21T17:21:37" updated: "2008-02-21T17:21:37" tags: ["Agile", "Cool Tools", "Unit Testing"] author: "Roy Osherove" description: "If you're a fan of snippet compiler (if you're not you should seriously check it out)Travis Illig published a little template for writing Typemock Isolator test inside this handy little tool. the reasons you'd need a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ad hoc Unit Tests with Snippet Compiler By Roy Osherove February 21, 2008 In [Agile](https://osherove.com/blog/category/agile), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published February 21, 2008; technical details may be outdated. If you're a fan of [snippet compiler](http://www.sliver.com/dotnet/SnippetCompiler/) (if you're not you should seriously check it out)Travis Illig [published a little template](http://www.paraesthesia.com/archive/2008/02/21/template-for-quick-typemock-testing.aspx) for writing [Typemock Isolator](http://typemock.com/) test inside this handy little tool. the reasons you'd need a specialized template in the first place to write these kinds of tests in snippet compiler: 1) Typemock Isolator uses the .NET profiling APIs to work its magic, so the .net process running your tests need to have a couple of environment variables enabled to work 2) His code template actually creates and runs a new process that triggers nunit-console.exe with the path of the current code you just wrote in snippet compiler allowing you to effecively write and run unit tests in snippet compiler! 3) the nunit-console process will already have the env. vars as mentioned in the first item set to it. Travis' template will work for anything nunit can run, not just typemock isolator tests, which is pretty cool. [Full info and download here.](http://www.paraesthesia.com/archive/2008/02/21/template-for-quick-typemock-testing.aspx) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 24, 2008 ### [Project White and a cool debugging tip](https://osherove.com/blog/2008/2/24/project-white-and-a-cool-debugging-tip.html) - Feb 24, 2008 ### [Dear Diary, Pair Programming is FUN!](https://osherove.com/blog/2008/2/24/dear-diary-pair-programming-is-fun.html) - Feb 14, 2008 ### [Future of Mock Frameworks: AEIS - Abstract Expectations & Isolation Syntax](https://osherove.com/blog/2008/2/14/future-of-mock-frameworks-aeis-abstract-expectations-amp-iso.html) - Feb 4, 2008 ### [Mock vs. MockObject + Typemock Blog: Tips, Tricks and important things to know](https://osherove.com/blog/2008/2/4/mock-vs-mockobject-typemock-blog-tips-tricks-and-important-t.html) --- title: "SharedView might be the remote-collaboration tool I was looking for" url: "https://osherove.com/blog/2008/2/17/sharedview-might-be-the-remote-collaboration-tool-i-was-look.md" canonical: "https://osherove.com/blog/2008/2/17/sharedview-might-be-the-remote-collaboration-tool-i-was-look.html" published: "2008-02-17T12:36:55" updated: "2008-02-17T12:36:55" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "Thanks to Scott I've found out about MS SharedView - which allows you to share your screen with up to 15 users. Currently in beta 2 and free, you can download it here . \"Connect with up to 15 people in different…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SharedView might be the remote-collaboration tool I was looking for By Roy Osherove February 17, 2008 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published February 17, 2008; technical details may be outdated. [Thanks to Scott](http://feeds.feedburner.com/~r/ScottHanselman/~3/236399271/KnowingWhenToAskForHelpMicrosoftSharedView.aspx) I've found out about [MS SharedView](http://www.microsoft.com/downloads/details.aspx?familyid=bbdbd839-9597-4133-9b86-6d440fe9522b&displaylang=en&tm) - which allows you to share your screen with up to 15 users. Currently in beta 2 and free, [you can download it here](http://www.microsoft.com/downloads/details.aspx?familyid=bbdbd839-9597-4133-9b86-6d440fe9522b&displaylang=en&tm). > "Connect with up to 15 people in different locations and get your point across by showing them what's on your screen. Share, review, and update documents with multiple people in real time.A Windows Live ID (Passport, Hotmail, or MSN) is required to start sessions, but not to join sessions. New in Beta2: now even easier to use, with group chat and performance improvements!" ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Feb 26, 2008 ### [Fluent XML Library - Ultra cool, short and weet](https://osherove.com/blog/2008/2/26/fluent-xml-library-ultra-cool-short-and-weet.html) - Feb 21, 2008 ### [Ad hoc Unit Tests with Snippet Compiler](https://osherove.com/blog/2008/2/21/ad-hoc-unit-tests-with-snippet-compiler.html) - Jan 31, 2008 ### [vLite allows you to create a stripped down vista version](https://osherove.com/blog/2008/1/31/vlite-allows-you-to-create-a-stripped-down-vista-version.html) - Jan 15, 2008 ### [BitDiffer, anyone?](https://osherove.com/blog/2008/1/15/bitdiffer-anyone.html) --- title: "Future of Mock Frameworks: AEIS - Abstract Expectations & Isolation Syntax" url: "https://osherove.com/blog/2008/2/14/future-of-mock-frameworks-aeis-abstract-expectations-amp-iso.md" canonical: "https://osherove.com/blog/2008/2/14/future-of-mock-frameworks-aeis-abstract-expectations-amp-iso.html" published: "2008-02-14T16:10:00" updated: "2008-02-14T16:10:00" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "As I was looking back and forward on the changing syntax of testing and mock frameworks, it occurs to me that there are still things that need to be solved in the mocking space. many things. It's hard to choose a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Future of Mock Frameworks: AEIS - Abstract Expectations & Isolation Syntax By Roy Osherove February 14, 2008 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published February 14, 2008; technical details may be outdated. As I was [looking back and forward](http://weblogs.asp.net/rosherove/archive/2008/01/17/the-evolution-of-unit-testing-and-syntax.aspx) on the changing syntax of testing and mock frameworks, it occurs to me that there are still things that need to be solved in the mocking space. many things. - **It's hard to choose** a framework and stick with it because they have different abilities which you are not sure you might need or not later on - Each framework has **different syntax** which is a learning curve and maintainable curve in test code - **You can't change your mind** easily after you choose - There is no specified set of known features to be expected. Each one has what it thinks is best. What if we had an abstract layer on top of our mocking frameworks? Just like ADO.NET is an abstraction layer, and the Data Application block is an abstraction layer, NHibernate is an abstraction layer - Mocking frameworks are infrastructure libraries that, if looked at well enough, are pretty much trying to do the same things in different ways (like databases) Here are the main services a mocking framework can provide(if I miss something tell me): o   Stubs §  Create Canned Answers o   Mocks §  Create Expectations ·         Record-Replay Model ·         Explicit Model ·         Parameter Constraints ·         Custom param constraints §  Partially Implemented Mocks §  Pass-through mocks §  Strict\\non strict §  IoC- Auto mocking containers o   Mocking Abilities §  Strict (Traditional Interface based) §  Non Strict (Typemock,JMockit Stuff) There are two main services here: **Expectation** abilities, and **Creation\\Isolation** abilities. what if there was a framework that would allow you to write code like this: ``` [Test] public void CreateSimpleInterfaceBasedMock() { MockingEngine.Provider = new RhinoMocksProvider(); IMock mockLogger = Represent.Type().AsMock(); ... } ``` **What would the proposed AEIS (Abstract Expectation and Isolation Syntax) look like?** I would consist of a very thin API wrapper that allowed all the different services mocking frameworks do today, but it would not do this functionality on its own. instead it would use a **provider model** that will allow one to write adapters for specific mocking frameworks, forwarding calls and translating the different syntaxes between AEIS and the specific framework. I will also have a rules engine (on the left) that will allow creating custom rules that will run when using various APIs (perhaps using an event driven relay) that will allow to enforce specific usage of specific features. **what would be some of the benefits in something like this?** **You can change mocking frameworks without changing lots of code** There is an investment to be made when choosing a mocking framework today: You spend time learning the syntax, you write tests with that syntax and you plan on not learning a new syntax to do slightly different things. A year later mock framework X comes in and you think that you'd like to use it, but you've already invested so much time and money in the original one that you aren't going to try. You lose valuable features just to avoid the risks. **You can add rules “on top” of the mocking framework** An abstraction layer can have custom code that will allow you to write custom logic that makes sure developers are using the framework in a way that you'd like. for example, you'd like to use Typemock Isolator but you are afraid that people will abuse the ability to write tests for code that isn't "testable" by default (no interfaces etc..) I call that"Strict" mocking policy vs. "loose" mocking policy (or "classic\\traditional vs. modern..."). So the          o    Allow only strict mocking syntax, for example **One syntax to remember and learn for all types of jobs** Simplify and overcome problematic mocking syntax in existing frameworks And there are definitely some around. For example, Typemock Isolator currently has a very confusing Mock() and MockObject() set of methods which sometimes I personally forget what each one does. Sure, we'll change it, but RhinoMocks also has some confusing syntax (PartialMocks() vs. DynamicMock() Vs. Mock()...) Having a top level API can help alleviate and standardize some of these issues. **Provide a recipe for mock framework builders** If you have to build a provider for your mocking framework, you have to have a contract of what you can and cannot provide. this will also help standardize the essential set of services that mocking frameworks provide today or at least, the set of things you need to consider when choosing among them as the underlying engine. It will help avoid religious wars (like design for testability) by allowing you to choose easily and enforce to your standards through the common API. **What about testing frameworks? why not start there?** I think currently most test frameworks (XUnit.net aside) are pretty much interchangeable (Nunit and MbUnit and msTest) so there is less pain there. However, take a look at the next version of MbUnit ,  [running on the Gallio automation platform](http://blog.benhall.me.uk/2007/12/mbunit-v3-and-gallio-automation.html)) which tries to provide a generic test runner model for all test frameworks in .net. I think they are trying to solve the same set of pains and the same set of benefits. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 24, 2008 ### [Dear Diary, Pair Programming is FUN!](https://osherove.com/blog/2008/2/24/dear-diary-pair-programming-is-fun.html) - Feb 21, 2008 ### [Ad hoc Unit Tests with Snippet Compiler](https://osherove.com/blog/2008/2/21/ad-hoc-unit-tests-with-snippet-compiler.html) - Feb 4, 2008 ### [Mock vs. MockObject + Typemock Blog: Tips, Tricks and important things to know](https://osherove.com/blog/2008/2/4/mock-vs-mockobject-typemock-blog-tips-tricks-and-important-t.html) - Feb 4, 2008 ### [Typemock Isolator 4.2 Beta released with cool new features (Previously Typemock.NET)](https://osherove.com/blog/2008/2/4/typemock-isolator-42-beta-released-with-cool-new-features-pr.html) --- title: "June in Norway - The Norwegian Developers Conference" url: "https://osherove.com/blog/2008/2/14/june-in-norway-the-norwegian-developers-conference.md" canonical: "https://osherove.com/blog/2008/2/14/june-in-norway-the-norwegian-developers-conference.html" published: "2008-02-14T13:22:42" updated: "2008-02-14T13:22:42" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Ah, Norway. It's been a long time since I've been there and it's time to go back . I'll be speaking at the Norwegian Developers Conference June 17-18 (which I hear is an amazing time to be in Norway BTW, and I'll be…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # June in Norway - The Norwegian Developers Conference By Roy Osherove February 14, 2008 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published February 14, 2008; technical details may be outdated. Ah, Norway. It's been a long time since I've been there [and it's time to go back](http://www.ndc2008.no/). I'll be speaking at the Norwegian [Developers Conference](http://www.ndc2008.no/) June 17-18 (which I hear is an amazing time to be in Norway BTW, and I'll be bringing along my guitar :) I think its the first one so I was pretty excited that they wanted me to show up along with people who I've always admired as speakers (The [Hanselman](http://hanselman.com/blog), [The Chappell](http://www.davidchappell.com/blog/) and the Agile Guru that is [the Mary](http://www.cutter.com/meet-our-experts/poppendieckm.html)). First day is going to be pure tech and the second on is pure agile. I'll be doing a total of 8 talks - 4 per day. The second day is probably going to be pure unit testing talks and practices and the first day is going to be a mixture of LINQ, Reflection, Threading and more. See you there! ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Feb 24, 2008 ### [Project White and a cool debugging tip](https://osherove.com/blog/2008/2/24/project-white-and-a-cool-debugging-tip.html) - Feb 17, 2008 ### [SharedView might be the remote-collaboration tool I was looking for](https://osherove.com/blog/2008/2/17/sharedview-might-be-the-remote-collaboration-tool-i-was-look.html) - Jan 31, 2008 ### [vLite allows you to create a stripped down vista version](https://osherove.com/blog/2008/1/31/vlite-allows-you-to-create-a-stripped-down-vista-version.html) - Jan 22, 2008 ### [Computer Magic](https://osherove.com/blog/2008/1/22/computer-magic.html) --- title: "ALT.NET Seattle is filling up..." url: "https://osherove.com/blog/2008/2/12/altnet-seattle-is-filling-up.md" canonical: "https://osherove.com/blog/2008/2/12/altnet-seattle-is-filling-up.html" published: "2008-02-12T17:26:13" updated: "2008-02-12T17:26:13" tags: [] author: "Roy Osherove" description: "better hurry up - an hour into the site's opening, half the seats are gone . Hurry up and register (you'll need an Open ID account. I personally use Myopenid.com) Yes. I'm planning to be there, one way or another.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ALT.NET Seattle is filling up... By Roy Osherove February 12, 2008 **Historical article** · Originally published February 12, 2008; technical details may be outdated. better hurry up - an hour into the site's opening, [half the seats are gone](http://altdotnet.org/events/2). Hurry up and [register](http://altdotnet.org/events/2) (you'll need an Open ID account. I personally use Myopenid.com) Yes. I'm planning to be there, one way or another. **Anyone up for a day's consulting from me** while I'm in Seattle?  It'll help pay for the trip. ping me by email to **\[email removed\]** --- title: "Nice little gmail trick" url: "https://osherove.com/blog/2008/2/4/nice-little-gmail-trick.md" canonical: "https://osherove.com/blog/2008/2/4/nice-little-gmail-trick.html" published: "2008-02-04T16:41:50" updated: "2008-02-04T16:41:50" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "I just realized a cool trick in Gmail (and google for domains mail): you can check one message, then go further down or up in the list several messages and shift-click on its check box, and it will work like a regular…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice little gmail trick By Roy Osherove February 4, 2008 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published February 4, 2008; technical details may be outdated. I just realized a cool trick in Gmail (and google for domains mail): you can check one message, then go further down or up in the list several messages and **shift-click** on its check box, and it will work like a regular list box - all the messages in between the two will be selected as well! Unexpected coolness is the best kind. ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Apr 24, 2008 ### [Parallel Builds with MSBuild](https://osherove.com/blog/2008/4/24/parallel-builds-with-msbuild.html) - Apr 9, 2008 ### [Fix: Cannot copy file 'X' to file 'Y'. The process cannot access the file because it is being used by another process. in Visual Studio 2008](https://osherove.com/blog/2008/4/9/fix-cannot-copy-file-x-to-file-y-the-process-cannot-access-t.html) - Sep 13, 2007 ### [Tip: Easily change logon settings for all users on your machine](https://osherove.com/blog/2007/9/13/tip-easily-change-logon-settings-for-all-users-on-your-machi.html) - Jun 25, 2007 ### [Unit Test Tip: Encode test data as part of your test xml comments](https://osherove.com/blog/2007/6/25/unit-test-tip-encode-test-data-as-part-of-your-test-xml-comm.html) --- title: "Mock vs. MockObject + Typemock Blog: Tips, Tricks and important things to know" url: "https://osherove.com/blog/2008/2/4/mock-vs-mockobject-typemock-blog-tips-tricks-and-important-t.md" canonical: "https://osherove.com/blog/2008/2/4/mock-vs-mockobject-typemock-blog-tips-tricks-and-important-t.html" published: "2008-02-04T14:39:38" updated: "2008-02-04T14:39:38" tags: ["Agile"] author: "Roy Osherove" description: "There is now an official Typemock blog over at http://typemock.blogspot.com (and the direct RSS feed ) that will host posts from the developers of Typemock(myself included) about any of these topics: Be a direct open…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mock vs. MockObject + Typemock Blog: Tips, Tricks and important things to know By Roy Osherove February 4, 2008 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published February 4, 2008; technical details may be outdated. There is now an official Typemock blog over at [http://typemock.blogspot.com](http://typemock.blogspot.com/) (and the [direct RSS feed](http://feeds.feedburner.com/Typemock)) that will host posts from the developers of Typemock(myself included) about any of these topics: - Be a direct open channel to developers (other than [the forums](http://typemock.com/)) - upcoming and current product news - explanations of various "hidden" features - Explaining various concepts that Typemock uses - Talking about various unit testing concepts [The first post if by Lior Friedman](http://typemock.blogspot.com/2008/02/creation-of-mocks-on-difference-between_04.html), explaining the difference between two API methods that sound a lot alike: 1. _MockManager.Mock_ 2. _MockManager.MockObject_ The main difference in a nutshell? _MockManager.Mock_ is for mocking _Future_ object instances (that will be created later and maybe out of our control), while _MockManager.Mock_Object will create an _instance_ then and there (just like you'd do it with typemock). [Read Lior's full post for a better explanation](http://typemock.blogspot.com/2008/02/creation-of-mocks-on-difference-between_04.html). Yes. I realize that the naming sucks. Not for long. If you have good suggestions for renaming these methods, do me a favor and leave a comment on the new blog. We'd love to hear it. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 21, 2008 ### [Ad hoc Unit Tests with Snippet Compiler](https://osherove.com/blog/2008/2/21/ad-hoc-unit-tests-with-snippet-compiler.html) - Feb 14, 2008 ### [Future of Mock Frameworks: AEIS - Abstract Expectations & Isolation Syntax](https://osherove.com/blog/2008/2/14/future-of-mock-frameworks-aeis-abstract-expectations-amp-iso.html) - Feb 4, 2008 ### [Typemock Isolator 4.2 Beta released with cool new features (Previously Typemock.NET)](https://osherove.com/blog/2008/2/4/typemock-isolator-42-beta-released-with-cool-new-features-pr.html) - Jan 29, 2008 ### [Extension methods around the Typemock Community Edition](https://osherove.com/blog/2008/1/29/extension-methods-around-the-typemock-community-edition.html) --- title: "Typemock Isolator 4.2 Beta released with cool new features (Previously Typemock.NET)" url: "https://osherove.com/blog/2008/2/4/typemock-isolator-42-beta-released-with-cool-new-features-pr.md" canonical: "https://osherove.com/blog/2008/2/4/typemock-isolator-42-beta-released-with-cool-new-features-pr.html" published: "2008-02-04T06:27:01" updated: "2008-02-04T06:27:01" tags: ["Agile", "Agile Related", "Art Of Unit Testing"] author: "Roy Osherove" description: "We just released the beta of Typemock Isolator 4.2 beta (Previously just named Typemock.NET). You can get it here . Some of the cool new things: Mocked methods will be highlighted in the debugger if you step into them.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Typemock Isolator 4.2 Beta released with cool new features (Previously Typemock.NET) By Roy Osherove February 4, 2008 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published February 4, 2008; technical details may be outdated. We just released the beta of Typemock Isolator 4.2 beta (Previously just named Typemock.NET). [You can get it here](http://www.typemock.com/Downloads.php). Some of the cool new things: - Mocked methods will be highlighted in the debugger if you step into them. in the picture below the "DoSomething()" method is being mocked, so stepping through it means nothing. The line around it signifies this status. - You can evalutate mocked methods in the deibgger and various watch windows without the original test being affected (so if a mocked method should only return "1" on the first call, even if you evaluate it three times in a watch window it will return "1" in the watch window and also will still work in the test and return "1" - You can now mock a non-value type fields on a class (used to be that you could just mock out properties) - Supports running along side DotTrace 3.0 - FinalBuilder Typemock tasks (start,stop, set license + auto deploy) One of the features which people didn't realize are possible with Typemock is [Mock chaining](http://www.typemock.com/Docs/UserGuide/index.php). You could essentially write the following: using (RecordExpectations r = new RecordExpectations())          {              MyComplexFactory.GetSomeObject().Manager.DoSomething("a");              r.Return(false);          } if you were using something like RhinoMocks, you'd have to have several stubs that return other stubs: the factory, the object it return, and the manager that object returns. with Typemock it's as trivial as just writing the full call chain and it will just work on the end object as if you did all of that. You can also write it like this: using (RecordExpectations r = new RecordExpectations())          {              r.ExpectAndReturn(                  MyComplexFactory.GetSomeObject().Manager.DoSomething("a"),                              false);          } ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 14, 2008 ### [Future of Mock Frameworks: AEIS - Abstract Expectations & Isolation Syntax](https://osherove.com/blog/2008/2/14/future-of-mock-frameworks-aeis-abstract-expectations-amp-iso.html) - Feb 4, 2008 ### [Mock vs. MockObject + Typemock Blog: Tips, Tricks and important things to know](https://osherove.com/blog/2008/2/4/mock-vs-mockobject-typemock-blog-tips-tricks-and-important-t.html) - Jan 29, 2008 ### [Extension methods around the Typemock Community Edition](https://osherove.com/blog/2008/1/29/extension-methods-around-the-typemock-community-edition.html) - Jan 25, 2008 ### [Research Finds TDD Boosts Developer Productivity](https://osherove.com/blog/2008/1/25/research-finds-tdd-boosts-developer-productivity.html) --- title: "vLite allows you to create a stripped down vista version" url: "https://osherove.com/blog/2008/1/31/vlite-allows-you-to-create-a-stripped-down-vista-version.md" canonical: "https://osherove.com/blog/2008/1/31/vlite-allows-you-to-create-a-stripped-down-vista-version.html" published: "2008-01-31T11:22:50" updated: "2008-01-31T11:22:50" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "Now, this is interesting . how would you like to cut down the size of a vista install to up to 10% of it's \"full\" size? vLite will create an install image of Vista with your choice of features stripped out of it, from…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # vLite allows you to create a stripped down vista version By Roy Osherove January 31, 2008 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published January 31, 2008; technical details may be outdated. Now, [this is interesting](http://www.rlslog.net/vlite-shrinks-the-size-of-windows-vista-to-10/). how would you like to cut down the size of a vista install to up to 10% of it's "full" size? [vLite](http://www.vlite.net/) will create an install image of Vista with your choice of features stripped out of it, from screensavers to firewall to universal plug and play. you decide what goes into your vista install.  Pretty cool. I can use something like that. Especially on virtual machines! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Feb 21, 2008 ### [Ad hoc Unit Tests with Snippet Compiler](https://osherove.com/blog/2008/2/21/ad-hoc-unit-tests-with-snippet-compiler.html) - Feb 17, 2008 ### [SharedView might be the remote-collaboration tool I was looking for](https://osherove.com/blog/2008/2/17/sharedview-might-be-the-remote-collaboration-tool-i-was-look.html) - Jan 15, 2008 ### [BitDiffer, anyone?](https://osherove.com/blog/2008/1/15/bitdiffer-anyone.html) - Dec 18, 2007 ### [Quick Fix File: Turn Zoom into Scroll on MS Natural Ergonomic 4000 Keyboard](https://osherove.com/blog/2007/12/18/quick-fix-file-turn-zoom-into-scroll-on-ms-natural-ergonomic.html) --- title: "Extension methods around the Typemock Community Edition" url: "https://osherove.com/blog/2008/1/29/extension-methods-around-the-typemock-community-edition.md" canonical: "https://osherove.com/blog/2008/1/29/extension-methods-around-the-typemock-community-edition.html" published: "2008-01-29T13:43:02" updated: "2008-01-29T13:43:02" tags: ["Agile"] author: "Roy Osherove" description: "iridescence posted about his own wrapper API to Typemock community edition , using .net 3.5 extension methods. What this means is that you can now use the community edition of typemock and not resort to use strings in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Extension methods around the Typemock Community Edition By Roy Osherove January 29, 2008 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published January 29, 2008; technical details may be outdated. [iridescence posted about his own wrapper API to Typemock community edition](http://www.iridescence.no/Posts/A-Type-Safe-ExpectCall-Extension-Method-for-Reflective-TypeMocks.aspx), using .net 3.5 extension methods. What this means is that you can now use the community edition of [typemock](http://typemock.com/) and not resort to use strings in your mocks (the enterprise and pro edition do support "natural mocks" which have strong typing support) Coolness. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 4, 2008 ### [Mock vs. MockObject + Typemock Blog: Tips, Tricks and important things to know](https://osherove.com/blog/2008/2/4/mock-vs-mockobject-typemock-blog-tips-tricks-and-important-t.html) - Feb 4, 2008 ### [Typemock Isolator 4.2 Beta released with cool new features (Previously Typemock.NET)](https://osherove.com/blog/2008/2/4/typemock-isolator-42-beta-released-with-cool-new-features-pr.html) - Jan 25, 2008 ### [Research Finds TDD Boosts Developer Productivity](https://osherove.com/blog/2008/1/25/research-finds-tdd-boosts-developer-productivity.html) - Jan 21, 2008 ### [Video: Typemock Basics - Lesson 1 (Dependency breaking 101)](https://osherove.com/blog/2008/1/21/video-typemock-basics-lesson-1-dependency-breaking-101.html) --- title: "Research Finds TDD Boosts Developer Productivity" url: "https://osherove.com/blog/2008/1/25/research-finds-tdd-boosts-developer-productivity.md" canonical: "https://osherove.com/blog/2008/1/25/research-finds-tdd-boosts-developer-productivity.html" published: "2008-01-25T18:19:38" updated: "2008-01-25T18:19:38" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "Thanks to Haacked for posting this one . I haven't yet read it fully, but this IEEE paper shows good results when doing test-first development vs. other methods. \"We found that test-first students on average wrote more…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Research Finds TDD Boosts Developer Productivity By Roy Osherove January 25, 2008 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published January 25, 2008; technical details may be outdated. Thanks to Haacked for [posting this one](http://haacked.com/archive/2008/01/22/research-supports-the-effectiveness-of-tdd.aspx).  I haven't yet read it fully, [but this IEEE paper](http://iit-iti.nrc-cnrc.gc.ca/publications/nrc-47445_e.html) shows good results when doing test-first development vs. other methods. > "We found that test-first students on average wrote more tests and, in turn, students who wrote more tests tended to be more productive. We also observed that the minimum quality increased linearly with the number of programmer tests, independent of the development strategy employed." > "The external validity of the results could be limited since the subjects were students. Runeson \[21\] compared freshmen, graduate, and professional developers and concluded that similar improvement trends persisted among the three groups. Replicated experiments by Porter > and Votta \[22\] and Höst et al. \[23\] suggest that students may provide an adequate model of the professional population." To read a good summary of that paper go to [Phil's post](http://haacked.com/archive/2008/01/22/research-supports-the-effectiveness-of-tdd.aspx) and read it to the end. **Update**: [Jacob rips the report to shreds](http://theruntime.com/blogs/jacob/archive/2008/01/22/tdd-proven-effective-or-is-it.aspx). ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 4, 2008 ### [Typemock Isolator 4.2 Beta released with cool new features (Previously Typemock.NET)](https://osherove.com/blog/2008/2/4/typemock-isolator-42-beta-released-with-cool-new-features-pr.html) - Jan 29, 2008 ### [Extension methods around the Typemock Community Edition](https://osherove.com/blog/2008/1/29/extension-methods-around-the-typemock-community-edition.html) - Jan 21, 2008 ### [Video: Typemock Basics - Lesson 1 (Dependency breaking 101)](https://osherove.com/blog/2008/1/21/video-typemock-basics-lesson-1-dependency-breaking-101.html) - Jan 20, 2008 ### [The Case For Typemock](https://osherove.com/blog/2008/1/20/the-case-for-typemock.html) --- title: "Computer Magic" url: "https://osherove.com/blog/2008/1/22/computer-magic.md" canonical: "https://osherove.com/blog/2008/1/22/computer-magic.html" published: "2008-01-22T03:08:55" updated: "2008-01-22T03:08:55" tags: ["General Software Devel...", "Off Topic"] author: "Roy Osherove" description: "Here's a little trick you can use right now on your fellow developers: Hit Ctrl-Alt-Down Arrow if you're lucky, you'll see magic." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Computer Magic By Roy Osherove January 22, 2008 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 22, 2008; technical details may be outdated. Here's a little trick you can use right now on your fellow developers: **Hit Ctrl-Alt-Down Arrow** if you're lucky, you'll see magic. ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Feb 14, 2008 ### [June in Norway - The Norwegian Developers Conference](https://osherove.com/blog/2008/2/14/june-in-norway-the-norwegian-developers-conference.html) - Jan 31, 2008 ### [vLite allows you to create a stripped down vista version](https://osherove.com/blog/2008/1/31/vlite-allows-you-to-create-a-stripped-down-vista-version.html) - Jan 18, 2008 ### [Trying out Team City - Looks Promising!](https://osherove.com/blog/2008/1/18/trying-out-team-city-looks-promising.html) - Jan 18, 2008 ### [Dependency Injection - Is it relevant beyond unit testing?](https://osherove.com/blog/2008/1/18/dependency-injection-is-it-relevant-beyond-unit-testing.html) --- title: "Video: Typemock Basics - Lesson 1 (Dependency breaking 101)" url: "https://osherove.com/blog/2008/1/21/video-typemock-basics-lesson-1-dependency-breaking-101.md" canonical: "https://osherove.com/blog/2008/1/21/video-typemock-basics-lesson-1-dependency-breaking-101.html" published: "2008-01-21T03:47:00" updated: "2008-01-21T03:47:00" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "Jeremy said he didn't see Typemock examples anywhere, so Here's a short 10 minute screencast I made that shows off some basic features in Typemock, when working with legacy code. it shows off the two possible syntaxes…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: Typemock Basics - Lesson 1 (Dependency breaking 101) By Roy Osherove January 21, 2008 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published January 21, 2008; technical details may be outdated. Jeremy said [he didn't see Typemock examples](http://weblogs.asp.net/rosherove/archive/2008/01/20/the-case-for-typemock.aspx#5626802) anywhere, so  [Here's a short 10 minute screencast](http://www.typemock.com/Multimedia.html) I made that shows off some basic features in Typemock, when working with legacy code. it shows off the two possible syntaxes of working with Typemock: Reflective mocking and "Natural" mocking which is the record replace model you use in Rhino.mocks.  You can see a whole page with [examples over here](http://typemock.com/Docs/HowTo.html). the video is here: http://www.typemock.com/Multimedia.html ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jan 29, 2008 ### [Extension methods around the Typemock Community Edition](https://osherove.com/blog/2008/1/29/extension-methods-around-the-typemock-community-edition.html) - Jan 25, 2008 ### [Research Finds TDD Boosts Developer Productivity](https://osherove.com/blog/2008/1/25/research-finds-tdd-boosts-developer-productivity.html) - Jan 20, 2008 ### [The Case For Typemock](https://osherove.com/blog/2008/1/20/the-case-for-typemock.html) - Jan 20, 2008 ### [TDD Anti Patterns](https://osherove.com/blog/2008/1/20/tdd-anti-patterns.html) --- title: "The Case For Typemock" url: "https://osherove.com/blog/2008/1/20/the-case-for-typemock.md" canonical: "https://osherove.com/blog/2008/1/20/the-case-for-typemock.html" published: "2008-01-20T15:59:53" updated: "2008-01-20T15:59:53" tags: ["Agile", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "I just wrote an email to someone regarding Typemock . We were discussing why they don't think Typemock holds the values that other mocking frameworks hold when I suddenly realized what I've been wanting to say all along…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Case For Typemock By Roy Osherove January 20, 2008 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published January 20, 2008; technical details may be outdated. I just wrote an email to someone regarding [Typemock](http://typemock.com/). We were discussing why they don't think Typemock holds the values that other mocking frameworks hold when I suddenly realized what I've been wanting to say all along about Typemock, and why it's a viable option for organizations _(disclosure - I recently started working at Typemock)_ _Before you read what I wrote,_ you can read posts that say "don't use Typemock" [here](http://www.mockobjects.com/2008/01/just-when-you-thought-it-was-safe-to-go.html), [here](http://codebetter.com/blogs/jeremy.miller/archive/2008/01/18/typemock-isn-t-too-powerful-and-quot-designing-for-testability-quot-is-much-more-than-merely-mocking-anyway.aspx),[here](http://jayflowers.com/WordPress/?p=77) and there are others. Most fear that Typemock will make it easy for you to write non testable code, or that your design will suffer for it. You can read my thoughts on this [here](http://weblogs.asp.net/rosherove/archive/2008/01/17/is-typemock-too-powerful-will-it-kill-design-for-testability.aspx) and [here](http://weblogs.asp.net/rosherove/archive/2008/01/18/dependency-injection-is-it-relevant-beyond-unit-testing.aspx). The following is in argument of people saying that Typemock contradicts the agile values of TDD and unit testing by supplying workarounds for common testability problems. The trick is to look at the bigger picture. sometimes you are looking at details so up close that you lose site of the whole idea behind mocking frameworks to begin with. **Making the team more agile**. **Easier to digest** **Typemock is to Rhino.Mocks as Scrum is to eXtreme Programming**\- one is much easier(less scary) to swallow to the uninitiated than the other,  but they eventually lead to the same overall result - a team that can do a better job with better feedback. It is a business oriented mocking framework. It speaks in a language that managers who don't feel "agile" can understand. It will help them write tests for existing code, it will help them write tests more easily on new code as well. It will be a bigger ROI than the other frameworks because of these benefits. That, in turn, means that Typemock is easier to adopt in non agile\\unit testing organizations, but it still plants that agile seed in there. The developer that today uses it to write tests against their legacy code, will write unit tests with it tomorrow on greenfield code. it  is their choice when to use it, but at least now they have a tool that was "insertable" into the organization which can now be used for more and more agility in the dev team. **A bridge between Agile and Non Agile** Typemock is a "bridge" between the pure, extreme, agile world and the business oriented, manager facing, legacy ridden, agile fearing world that we all love to whine about so much. Because it tries to speak to that world, and to those managers who don't want to give up their existing OO beliefs (designing for testability?), it also feels controversial to the pure agile world. it is neither here nor there. not pure Agile\\Testability but also allows agility through unit testing if you use it right. That means it's also in both worlds - it connects the business and agile world by making writing tests simpler, and the trouble of learning the techniques is easier to explain. **Typemock can help drive change where others can't** Typemock can drive change in non agile organizations sometimes more than other frameworks such as RhinoMocks or NMock, simply because it will cater to needs (such as legacy code, non testable code) that the other frameworks do not make possible. That is what makes it unique, and what makes it so different that the agile world doesn't quite know how to swallow it. **Don't be dogmatic** And if you really feel that you wouldn't recommend Typemock because it doesn't subscribe to the way you think things should be done, aren't you being a little dogmatic? agile is about embracing **what works for a particular team** and Typemock certainly does solve lots of problems for real teams. Just because they don't use concepts we're used to as often, doesn't mean they aren't becoming more and more agile every day. Update: I posted a [10 minute intro video to Typemock](http://weblogs.asp.net/rosherove/archive/2008/01/21/video-typemock-basics-lesson-1-dependency-breaking-101.aspx) here. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jan 25, 2008 ### [Research Finds TDD Boosts Developer Productivity](https://osherove.com/blog/2008/1/25/research-finds-tdd-boosts-developer-productivity.html) - Jan 21, 2008 ### [Video: Typemock Basics - Lesson 1 (Dependency breaking 101)](https://osherove.com/blog/2008/1/21/video-typemock-basics-lesson-1-dependency-breaking-101.html) - Jan 20, 2008 ### [TDD Anti Patterns](https://osherove.com/blog/2008/1/20/tdd-anti-patterns.html) - Jan 18, 2008 ### [Trying out Team City - Looks Promising!](https://osherove.com/blog/2008/1/18/trying-out-team-city-looks-promising.html) --- title: "TDD Anti Patterns" url: "https://osherove.com/blog/2008/1/20/tdd-anti-patterns.md" canonical: "https://osherove.com/blog/2008/1/20/tdd-anti-patterns.html" published: "2008-01-20T05:54:25" updated: "2008-01-20T05:54:25" tags: ["Agile", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "James Carr lists a nice bunch of TDD anti patterns . via Jeremy . Here's one example I run into often: \"The Liar An entire unit test that passes all of the test cases it has and appears valid, but upon closer inspection…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Anti Patterns By Roy Osherove January 20, 2008 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published January 20, 2008; technical details may be outdated. James Carr lists a nice bunch of [TDD anti patterns](http://blog.james-carr.org/?p=44). via [Jeremy](http://codebetter.com/blogs/jeremy.miller/archive/2008/01/18/typemock-isn-t-too-powerful-and-quot-designing-for-testability-quot-is-much-more-than-merely-mocking-anyway.aspx) . Here's one example I run into often: **"The Liar** An entire unit test that passes all of the test cases it has and appears valid, but upon closer inspection it is discovered that it doesn’t really test the intended target at all." ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jan 21, 2008 ### [Video: Typemock Basics - Lesson 1 (Dependency breaking 101)](https://osherove.com/blog/2008/1/21/video-typemock-basics-lesson-1-dependency-breaking-101.html) - Jan 20, 2008 ### [The Case For Typemock](https://osherove.com/blog/2008/1/20/the-case-for-typemock.html) - Jan 18, 2008 ### [Trying out Team City - Looks Promising!](https://osherove.com/blog/2008/1/18/trying-out-team-city-looks-promising.html) - Jan 17, 2008 ### [Is Typemock too powerful? Will it kill design for testability?](https://osherove.com/blog/2008/1/17/is-typemock-too-powerful-will-it-kill-design-for-testability.html) --- title: "Trying out Team City - Looks Promising!" url: "https://osherove.com/blog/2008/1/18/trying-out-team-city-looks-promising.md" canonical: "https://osherove.com/blog/2008/1/18/trying-out-team-city-looks-promising.html" published: "2008-01-18T17:36:17" updated: "2008-01-18T17:36:17" tags: ["Agile", "General Software Devel..."] author: "Roy Osherove" description: "I've been looking both at CI Factory by Jay Flowers , and Team City by JetBrains lately. this has to do with the fact that at Typemock we currently have a Continuous Integration solution that is largely based on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Trying out Team City - Looks Promising! By Roy Osherove January 18, 2008 In [Agile](https://osherove.com/blog/category/agile), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published January 18, 2008; technical details may be outdated. I've been looking both at [CI Factory](http://www.cifactory.org/joomla/) by [Jay Flowers](http://jayflowers.com/), and [Team City by JetBrains](http://www.jetbrains.com/teamcity/) lately. this has to do with the fact that at Typemock we currently have a [Continuous Integration](http://en.wikipedia.org/wiki/Continuous_integration) solution that is largely based on [CruiseControl.NET](http://cruisecontrol.sourceforge.net/) and MSBuild files. It sucks. The MSBuild files are hardly maintainable and the logic for running the build, signing things, obfuscating, licensing, installation, 64 bit versions and more - it's chaos, held by some gum and a couple of strings. Not unlike many other builds I've seen. We're in the process of moving the builds into [FinalBuilder](http://finalbuilder.com/), but I'm also looking for a better CC.NET. CI Factory looks nice in that it is very simple to setup but still requires messing around with MSBuild targets and the like to make your builds work with it. TeamCity looks very promising. I read [this blog post from Elutian](http://blog.eleutian.com/2007/12/22/CruiseControlNETIsDeadLongLiveTeamCity.aspx) about their experience with Team City and wondered what it would be like to work with it against a FinalBuilder script. I installed TeamCity and ran it against SVN and FinalBuilder (like it would run at Typemock) and got it all working in less than 20 minutes. Pretty snazzy and no XML tampering needed to take place, Thank the gods. The killer feature in Team City? [Delayed Commit](http://www.jetbrains.com/teamcity/features/newfeatures.html#Improved_Quality_Maintenance)(also known as private build). It allows you to run the full build with tests on the server as if you checked in all your changes, but **without actually checking in your changes until the build is successful,** so you will know if you're about to break the build before you actually break it. So, I'm thinking, with team city's professional license being **free** for up to 20 developers and 3 build agents, that we'll give it a shot at Typemock HQ and see what happens. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jan 20, 2008 ### [The Case For Typemock](https://osherove.com/blog/2008/1/20/the-case-for-typemock.html) - Jan 20, 2008 ### [TDD Anti Patterns](https://osherove.com/blog/2008/1/20/tdd-anti-patterns.html) - Jan 17, 2008 ### [Is Typemock too powerful? Will it kill design for testability?](https://osherove.com/blog/2008/1/17/is-typemock-too-powerful-will-it-kill-design-for-testability.html) - Jan 17, 2008 ### [The evolution of Unit Testing Syntax and Semantics](https://osherove.com/blog/2008/1/17/the-evolution-of-unit-testing-syntax-and-semantics.html) --- title: "Dependency Injection - Is it relevant beyond unit testing?" url: "https://osherove.com/blog/2008/1/18/dependency-injection-is-it-relevant-beyond-unit-testing.md" canonical: "https://osherove.com/blog/2008/1/18/dependency-injection-is-it-relevant-beyond-unit-testing.html" published: "2008-01-18T14:07:35" updated: "2008-01-18T14:07:35" tags: ["General Software Devel..."] author: "Roy Osherove" description: "\"What do you do if you've spent all this time convincing the powers that be that DI is absolutely essential and now . . . it isn't? That's going to hurt. Much better to just dismiss TypeMock as \"too powerful\" and move…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Dependency Injection - Is it relevant beyond unit testing? By Roy Osherove January 18, 2008 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published January 18, 2008; technical details may be outdated. > "What do you do if you've spent all this time convincing the powers that be that DI is absolutely essential and now . . . it isn't? That's going to hurt. Much better to just dismiss TypeMock as "too powerful" and move on. " This is a quote from Jacob Proffitt's [post on our forum](http://www.typemock.com/community/viewtopic.php?t=694) regarding typemock and design for testability. I urge you to register and comment there if this is interesting to you. The more I read [Jacob's blog](http://theruntime.com/blogs/jacob/), and his (sometimes controversial) thoughts on Dependency injection and good design, the more I like it. He really makes me think and challenge assumptions I've held dear for a long time. For example, is Dependency Injection really necessary when you can write tests against your code without it? Does good design necessarily involve DI? More specifically, do you need DI all over the place, or just in specific places where you know dependencies could be a problem? (I'd recommend [viewing this video](http://crazybob.org/2007/06/introduction-to-guice-video-redux.html) BTW) I can see how DI is useful when you have different teams working on something you depend on, in which case you'd have to have a delayed implementation decision (where the actual implementation of an interface is gotten at runtime), but this can be achieved though a regular factory as well. In this interesting post, Jacob has a matrix of possible Design decisions regarding DI. [Read it](http://theruntime.com/blogs/jacob/archive/2007/08/21/crazy-bob-is-my-hero.aspx). I'm going to go read more of his posts. BTW, Jacob seems to be pro-Typemock to a degree, and that raises good questions as to why. As for the title of this post, yes I do believe DI is relevant beyond unit testing, but it is not the ultimate truth in design just as singletons may have their place, or inheritance has its place. **Will we throw the baby out with the bath water?** The .net world as a whole has been doing great moving towards a world of better design, better practices and more. DI is a relatively new concept in the .NET world for most people (who didn't' come from Java). In that light, it almost _scares_ me to try and dismiss DI or design for testability simply because of all the other good things this thinking represents. Perhaps people aren't ready to say _"yes, we know DI exists, but we know where we don't necessarily need it"_, because they don't know enough in this world. perhaps bringing DI and testability concepts is good, if for no other reason than to teach people what decoupling really means, with "testing" being just the excuse to make it happen. We have put so much effort in making testing and testability drive lots of good design decisions, that, if "unit testing" didn't catch on in the .net world, we'd have a hard time introducing them. Perhaps (being devils advocate) it is too early to dismiss this thinking, or to drive holes in it, for fear of throwing the baby out with the bath water. What do you think? ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Jan 22, 2008 ### [Computer Magic](https://osherove.com/blog/2008/1/22/computer-magic.html) - Jan 18, 2008 ### [Trying out Team City - Looks Promising!](https://osherove.com/blog/2008/1/18/trying-out-team-city-looks-promising.html) - Jan 17, 2008 ### [The evolution of Unit Testing Syntax and Semantics](https://osherove.com/blog/2008/1/17/the-evolution-of-unit-testing-syntax-and-semantics.html) - Jan 15, 2008 ### [BitDiffer, anyone?](https://osherove.com/blog/2008/1/15/bitdiffer-anyone.html) --- title: "[very off topic] I can haz a site" url: "https://osherove.com/blog/2008/1/17/very-off-topic-i-can-haz-a-site.md" canonical: "https://osherove.com/blog/2008/1/17/very-off-topic-i-can-haz-a-site.html" published: "2008-01-17T17:38:33" updated: "2008-01-17T17:38:33" tags: ["Off Topic"] author: "Roy Osherove" description: "On a totally different note, if my blog was designed by an LOL Cat, it would look like this . To make things much nicer, here's how Codebetter.com would look if it was designed by cats LOLCodeBetter . (via TC )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[very off topic\] I can haz a site By Roy Osherove January 17, 2008 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 17, 2008; technical details may be outdated. ![image](https://osherove.com/img/wb/5986_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_veryofftopicIcanhazasite_2521_image_thumb.png) On a totally different note, if my blog was designed by an LOL Cat, [it would look like this](http://lolinator.com/lol/weblogs.asp.net/rosherove).  To make things much nicer, here's how [Codebetter.com](http://codebetter.com/) would look if it was designed by cats [LOLCodeBetter](http://lolinator.com/lol/codebetter.com). (via [TC](http://www.techcrunch.com/2008/01/17/if-techcrunch-was-written-by-cats/)) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 4, 2008 ### [Looking for a PHP programmer](https://osherove.com/blog/2008/3/4/looking-for-a-php-programmer.html) - Jan 22, 2008 ### [Computer Magic](https://osherove.com/blog/2008/1/22/computer-magic.html) - Jan 1, 2008 ### [New Computer Smell](https://osherove.com/blog/2008/1/1/new-computer-smell.html) - Oct 25, 2007 ### [Trading Places](https://osherove.com/blog/2007/10/25/trading-places.html) --- title: "Is Typemock too powerful? Will it kill design for testability?" url: "https://osherove.com/blog/2008/1/17/is-typemock-too-powerful-will-it-kill-design-for-testability.md" canonical: "https://osherove.com/blog/2008/1/17/is-typemock-too-powerful-will-it-kill-design-for-testability.html" published: "2008-01-17T17:23:27" updated: "2008-01-17T17:23:27" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "A couple of days ago, Typemock held a small \"insiders\" web meeting, showing off the new features of the next release. The presentation lasted for about 10 minutes, and we were using Webex to show live screen feed and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Is Typemock too powerful? Will it kill design for testability? By Roy Osherove January 17, 2008 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published January 17, 2008; technical details may be outdated. A couple of days ago, Typemock held a small "insiders" web meeting, showing off the new features of the next release. The presentation lasted for about 10 minutes, and we were using Webex to show live screen feed and chat was also enabled (similar to IRC) Other than some nice feedback we got on what we showed, the most interesting part happened **after** the presentation was done, and we thought we'd give a few minutes for some small chat about various things. Suddenly, a question was raised in the chat room about Typemock and good design (I'm paraphrasing): "What do you say to people who think that Typemock should be avoided because it's **too powerful**?" There were about 4 Typemock employees in the chat , and 7 "insiders", and suddenly the flood of answers and new questions came in, without warning. In the chaos that ensued for about 15 minutes thereafter, one thing became clear to the powers that run Typemock: There is a big problem of FUD(Fear, uncertainty and doubt) about Typemock, that needs to be addressed. **What the FUD?** Many people are calling people who use mocking frameworks to avoid using Typemock because it makes it easy to avoid common design decisions that your tests "flag" as you try to write them. The claim is that Typemock , because of its ability to mock out practically anything, from statics, to LINQ queries to private constructors to sealed classes, makes the job of writing a test lose sight of design decisions about making the code testable in the first place. That could be translated to "You will not design for testability if you use Typemock". But it can also be interpreted as : - I don't trust the people who write the tests enough to give them a tool that makes it easy to avoid design decisions. - People will default to a worst practice just because its easier - "Real" developers who write "real" tests will never need Typemock if they follow the TDD rules So, let me try and address some of the concerns relating to design for testability and using Typemock: **1\. You can still design for testability and use [Typemock](http://typemock.com/)** It may sound weird, but just because you're using a tool that **allows** you to mock out static methods, doesn't mean you should go ahead and sprinkle statics as far as the eye can see. If your car lets you drive 200mph does that mean you'll choose to do that in a crowded street? Test Driven Development has three main steps, and the first one is about writing a test that fails, even before the code under test is written. you can **choose** to write that piece of code under test in any design you like, and you can still do it with interfaces, Dependency injection and IoC principles. For new, greenfield code, you can use TypeMock just like you could use Rhino.Mocks.  I know I've said other things in the past, but since I've been "inside" I've been using Typemock more and more and it really doesn't prevent you from doing anything you'd have done before. **2\. If you were doing bad design before, the tool won't help you, just the technique.** Using TDD to get good design is still possible with TypeMock, especially if you use the Natural Mocks syntax (Record-replay, much like Rhino.Mocks). Choosing a framework based on it having **more constraints** is not a good idea. Why? Because you can still write poorly testable code with Rhino.Mocks if you weren't doing it TDD style. **3\. Sometimes you just can't refactor your legacy code into testability.** Will you avoid testing it just because using non Typemock frameworks isn't possible? Or will you be pragmatic about it and do the thing that helps you write tests for code that is currently untestable? I would rather have a framework that gives me the choice of having a hammer and not using it, than not having it at all. **4\. Pair Programming, Test reviews and Design reviews trump any tool** If you don't trust people to do good design, review the code with them.l use Agile techniques. If I write code with someone else, if I review tests that other people have written, and if I review designs other people came up with, I can tell on the spot what is poorly designed, what is not testable, not extensible etc.. If you're working alone and all you have is your framework to save you, you don't have much anyway. And it won't save you, it will just make it harder for you to write the code you want to write, with the design you want to use **5\. If you're not sure how you'd design something and test it, you can always ask!** That's why god invented forums, mailing lists and the like. you can start at [our new forum about techniques and best practices with unit testing](http://www.typemock.com/community/viewforum.php?f=16). **I'll be monitoring it personally** and would love to start a conversation there or on this blog. whatever you like. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jan 20, 2008 ### [TDD Anti Patterns](https://osherove.com/blog/2008/1/20/tdd-anti-patterns.html) - Jan 18, 2008 ### [Trying out Team City - Looks Promising!](https://osherove.com/blog/2008/1/18/trying-out-team-city-looks-promising.html) - Jan 17, 2008 ### [The evolution of Unit Testing Syntax and Semantics](https://osherove.com/blog/2008/1/17/the-evolution-of-unit-testing-syntax-and-semantics.html) - Jan 15, 2008 ### [Typemock Snippets and future](https://osherove.com/blog/2008/1/15/typemock-snippets-and-future.html) --- title: "Debug into the .NET Framework Library Source Code - It's here." url: "https://osherove.com/blog/2008/1/17/debug-into-the-net-framework-library-source-code-its-here.md" canonical: "https://osherove.com/blog/2008/1/17/debug-into-the-net-framework-library-source-code-its-here.html" published: "2008-01-17T04:45:58" updated: "2008-01-17T04:45:58" tags: [".NET"] author: "Roy Osherove" description: "Debug into the .NET Framework. It's here . Here's how you configure VS 2008 to use it for debugging. \"Specifically, you can now browse and debug the source code for the following .NET Framework libraries: .NET Base…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Debug into the .NET Framework Library Source Code - It's here. By Roy Osherove January 17, 2008 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published January 17, 2008; technical details may be outdated. Debug into the .NET Framework. [It's here](http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx).  Here's [how you configure](http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx) VS 2008 to use it for debugging. > "Specifically, you can now browse and debug the source code for the following .NET Framework libraries: - .NET Base Class Libraries (including System, System.CodeDom, System.Collections, System.ComponentModel, System.Diagnostics, System.Drawing, System.Globalization, System.IO, System.Net, System.Reflection, System.Runtime, System.Security, System.Text, System.Threading, etc). - ASP.NET (System.Web, System.Web.Extensions) - Windows Forms (System.Windows.Forms) - Windows Presentation Foundation (System.Windows) - ADO.NET and XML (System.Data and System.Xml) " This is **_huge_**. Good going! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Apr 24, 2008 ### [Parallel Builds with MSBuild](https://osherove.com/blog/2008/4/24/parallel-builds-with-msbuild.html) - Feb 26, 2008 ### [Fluent XML Library - Ultra cool, short and weet](https://osherove.com/blog/2008/2/26/fluent-xml-library-ultra-cool-short-and-weet.html) - Jan 15, 2008 ### [BitDiffer, anyone?](https://osherove.com/blog/2008/1/15/bitdiffer-anyone.html) - Nov 29, 2007 ### [IL Debug Visualizer for Compiled Lambda Expressions, MethodBase and DynamicMethod](https://osherove.com/blog/2007/11/29/il-debug-visualizer-for-compiled-lambda-expressions-methodba.html) --- title: "The evolution of Unit Testing Syntax and Semantics" url: "https://osherove.com/blog/2008/1/17/the-evolution-of-unit-testing-syntax-and-semantics.md" canonical: "https://osherove.com/blog/2008/1/17/the-evolution-of-unit-testing-syntax-and-semantics.html" published: "2008-01-17T04:21:59" updated: "2008-01-17T04:21:59" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "General Software Devel...", "Unit Testing", "altnetconf"] author: "Roy Osherove" description: "The semantics of how you write a unit test, the basic syntax, or Domain Specific language of how we write them, has been relatively stale for quite some years now. But under the covers, the syntax revolution seems to be…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The evolution of Unit Testing Syntax and Semantics By Roy Osherove January 17, 2008 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Unit Testing](https://osherove.com/blog/category/unit-testing), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published January 17, 2008; technical details may be outdated. The semantics of how you write a unit test, the basic syntax, or Domain Specific language of how we write them, has been relatively stale for quite some years now.  But under the covers, the syntax revolution seems to be brewing, as people try to come up with newer, hopefully better and more readable syntaxes for tests and specifications that become more and more complex as the current Agile community struggles to accept best practices in this arena. I'm guilty of that too, but a recent post by Jeremy Miller prompted me to try and list all the different syntax variations I've come across in the .net and some in java world (not necessarily in chronological order). Most ofthese didn't necessarily catch on as de facto standards, but are real world attempts to make a better world or explore new horizons. **POUT (Plain Old Unit Test) Syntax** - JUnit initial syntax - **Attributes:** NUnit with attribute syntax, removing inheritance and test naming requirements - **Extensibility**: MbUnit is extensible testing framework with lots of powerful attributes. - [Naming conventions](http://weblogs.asp.net/rosherove/archive/2005/04/03/TestNamingStandards.aspx) for unit tests seem to be something people are actively looking for. - **Simplicity** is back: [XUnit](http://www.codeplex.com/xunit) tries to go back to basics: No setup\\teardown, different attribute names.   - **Fluent**: My implementation of [NRehersal](http://weblogs.asp.net/rosherove/archive/2008/01/09/scala-nrehersal-and-fluent-test-interfaces.aspx) uses delegates and a more fluent interface for tests **Mocking** - **Mocks Vs. Stubs**: The Difference is [explored](http://martinfowler.com/articles/mocksArentStubs.html) ([here](http://martinfowler.com/articles/mocksArentStubs.html) too) and makes its way into some of the mock frameworks (NMock, JMock, Rhino.Mocks) - **Explicit** (reflection based) mocking statements such as (New DynamicMock(typeof(Interface), mock.Expect(...)) - **Record-replay** syntax from Rhino.Mocks, EasyMock, TypeMock and others - **fluent mocking** APIs into our tests ([NMock2](http://weblogs.asp.net/rosherove/archive/2005/06/18/413577.aspx)) - **Auto Mocking** Containers (introduced by [Elutian](http://blog.eleutian.com/CommentView,guid,762249da-e25a-4503-8f20-c6d59b1a69bc.aspx)) will use RhinoMocks and Ioc Containers under the test covers (back to base classes) - **Mocking the Un-Mockable**: [TypeMock](http://typemock.com/) (and [JMockIt](https://jmockit.dev.java.net/) on the java side) introduce the possibility of mocking production code that is currently untestable without needing to refactor it. **BDD, Specifications and other Domain Specific Languages** - Ruby [SpecUnit](http://spec-unit.rubyforge.org/), [RBehave](http://dannorth.net/2007/06/introducing-rbehave) and [RSpec](http://rspec.rubyforge.org/) make a dent in the .NET community and stuff start showing up in our world: - Extension Methods: Scott bellware comes up with the idea of using [C# 3.0 extension methods for an easier expectation syntax](http://exceptionz.wordpress.com/2006/09/13/rspec-specifications-in-c/). - [NUnit.Behave](http://www.lostechies.com/blogs/joe_ocampo/archive/2007/06/28/introducing-nunit-behave-or-insert-what-ever-other-catchy-name.aspx), [NBehave](http://nbehave.org/), [NSpec](http://nspec.tigris.org/) , [NSpecify](http://nspecify.sourceforge.net/) try to use DSLs and fluent interfaces to express BDD specs. - Jeremy [shows off his version](http://codebetter.com/blogs/jeremy.miller/archive/2008/01/17/spiking-a-new-syntax-for-integration-tests-whaddaya-think.aspx) of a more fluent and natural spec syntax by taking the auto mocking container idea, using [structuremap](http://structuremap.sourceforge.net/Default.htm) under the covers and creating something that tries to be much more declarative and understandable at the same time. He uses delegates a lot as well. I'm probably forgetting a few here, so let me know in the comments. So, we see a nice evolution from beginner style to bdd and spec style. lots of work on the syntax is done, but there is currently lots of chaos. Think Blue-Day Vs. HD-DVD, only with about 5 main competitors. The nice thing about this: The community will decide what worls, so it would be interesting to see where we are one year or a two years from now in relation to this list! ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jan 18, 2008 ### [Trying out Team City - Looks Promising!](https://osherove.com/blog/2008/1/18/trying-out-team-city-looks-promising.html) - Jan 17, 2008 ### [Is Typemock too powerful? Will it kill design for testability?](https://osherove.com/blog/2008/1/17/is-typemock-too-powerful-will-it-kill-design-for-testability.html) - Jan 15, 2008 ### [Typemock Snippets and future](https://osherove.com/blog/2008/1/15/typemock-snippets-and-future.html) - Jan 12, 2008 ### [Unit Testing at TechEd Israel 08 - Which talk would you choose?](https://osherove.com/blog/2008/1/12/unit-testing-at-teched-israel-08-which-talk-would-you-choose.html) --- title: "BitDiffer, anyone?" url: "https://osherove.com/blog/2008/1/15/bitdiffer-anyone.md" canonical: "https://osherove.com/blog/2008/1/15/bitdiffer-anyone.html" published: "2008-01-15T14:34:57" updated: "2008-01-15T14:34:57" tags: [".NET", "Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "Note to self: check out BitDiffer . Looks pretty awesome. \"Ever wonder what really changed in that DLL you are about to release to production? Would you like to check a 3rd party library for breaking changes before…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BitDiffer, anyone? By Roy Osherove January 15, 2008 In [.NET](https://osherove.com/blog/category/net), [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published January 15, 2008; technical details may be outdated. Note to self: check out [BitDiffer](http://www.bitwidgets.com/). Looks pretty awesome. > "Ever wonder what really changed in that DLL you are about to release to production? Would you like to check a 3rd party library for breaking changes before referencing it? Would it be helpful to integrate an automatically generated change report - at the assembly binary level - in your deployment and migration process? > BitDiffer allows you to compare multiple versions of assemblies for all types of changes and drill down to find the smallest changes, public or private." Anyone used it? know any comparable tools? update: I found this one on [Jeremy Miller's blog](http://codebetter.com/blogs/jeremy.miller/). it has a Lunge ad on the top left (codebetter.com actually has it). Hmm. Perhaps Typemock should be [advertising over at the lounge](http://www.infozerk.com/thelounge/) too...hmm? ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Feb 26, 2008 ### [Fluent XML Library - Ultra cool, short and weet](https://osherove.com/blog/2008/2/26/fluent-xml-library-ultra-cool-short-and-weet.html) - Jan 17, 2008 ### [Debug into the .NET Framework Library Source Code - It's here.](https://osherove.com/blog/2008/1/17/debug-into-the-net-framework-library-source-code-its-here.html) - Nov 29, 2007 ### [IL Debug Visualizer for Compiled Lambda Expressions, MethodBase and DynamicMethod](https://osherove.com/blog/2007/11/29/il-debug-visualizer-for-compiled-lambda-expressions-methodba.html) - Nov 19, 2007 ### [Debug Into the .NET Framework Source Code](https://osherove.com/blog/2007/11/19/debug-into-the-net-framework-source-code.html) --- title: "Typemock Snippets and future" url: "https://osherove.com/blog/2008/1/15/typemock-snippets-and-future.md" canonical: "https://osherove.com/blog/2008/1/15/typemock-snippets-and-future.html" published: "2008-01-15T00:39:44" updated: "2008-01-15T00:39:44" tags: ["Agile"] author: "Roy Osherove" description: "Paulo Morgado just released a set of Visual Studio Code snippets for common Typemock usages. Coolness. On a related note, we're set to release a cool new version of TypeMock in the coming weeks with some features I'm…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Typemock Snippets and future By Roy Osherove January 15, 2008 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published January 15, 2008; technical details may be outdated. [Paulo Morgado just released](http://msmvps.com/blogs/paulomorgado/archive/2008/01/13/typemock-snippets-for-visual-studio.aspx) a set of Visual Studio Code snippets for common Typemock usages. Coolness. On a related note, we're set to release a cool new version of TypeMock in the coming weeks with some features I'm excited about, but can't talk about yet. Once I can, watch this blog for them. [Here's one example](http://www.elilopian.com/2007/12/26/debugging-mocked-methods/) of the new features. as a hint. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jan 17, 2008 ### [Is Typemock too powerful? Will it kill design for testability?](https://osherove.com/blog/2008/1/17/is-typemock-too-powerful-will-it-kill-design-for-testability.html) - Jan 17, 2008 ### [The evolution of Unit Testing Syntax and Semantics](https://osherove.com/blog/2008/1/17/the-evolution-of-unit-testing-syntax-and-semantics.html) - Jan 12, 2008 ### [Unit Testing at TechEd Israel 08 - Which talk would you choose?](https://osherove.com/blog/2008/1/12/unit-testing-at-teched-israel-08-which-talk-would-you-choose.html) - Jan 9, 2008 ### [Scala, NRehersal and Fluent Test Interfaces](https://osherove.com/blog/2008/1/9/scala-nrehersal-and-fluent-test-interfaces.html) --- title: "Unit Testing at TechEd Israel 08 - Which talk would you choose?" url: "https://osherove.com/blog/2008/1/12/unit-testing-at-teched-israel-08-which-talk-would-you-choose.md" canonical: "https://osherove.com/blog/2008/1/12/unit-testing-at-teched-israel-08-which-talk-would-you-choose.html" published: "2008-01-12T14:09:58" updated: "2008-01-12T14:09:58" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "Looks like I'll be presenting at TechEd Israel this year! Currently it appears that I will be doing at least two talks. One of them will be About \"Deep Reflection\", a 400 level session that will go deep into the bowls…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing at TechEd Israel 08 - Which talk would you choose? By Roy Osherove January 12, 2008 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published January 12, 2008; technical details may be outdated. Looks like I'll be presenting at [TechEd Israel](http://www.microsoft.com/israel/teched2008/index.aspx) this year! Currently it appears that I will be doing at least two talks. One of them will be About "Deep Reflection", a 400 level session that will go deep into the bowls of reflection and back again. It's a very updated version of a talk I did a couple years ago, with all the new stuff added in .net 3.5. The second talk will be on the subject of Unit Testing. Either beginner or advanced concepts. Here's a little poll. If you live in Israel, and were going to TechEd Israel, please answer this quick poll to help us decide(don't choose other unless you seriously think neither of these fits into TechEd: Embedded Flash media from the original post is no longer playable. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jan 17, 2008 ### [The evolution of Unit Testing Syntax and Semantics](https://osherove.com/blog/2008/1/17/the-evolution-of-unit-testing-syntax-and-semantics.html) - Jan 15, 2008 ### [Typemock Snippets and future](https://osherove.com/blog/2008/1/15/typemock-snippets-and-future.html) - Jan 9, 2008 ### [Scala, NRehersal and Fluent Test Interfaces](https://osherove.com/blog/2008/1/9/scala-nrehersal-and-fluent-test-interfaces.html) - Dec 31, 2007 ### [Joining TypeMock](https://osherove.com/blog/2007/12/31/joining-typemock.html) --- title: "Refactoring private methods is like...?" url: "https://osherove.com/blog/2008/1/12/refactoring-private-methods-is-like.md" canonical: "https://osherove.com/blog/2008/1/12/refactoring-private-methods-is-like.html" published: "2008-01-12T07:40:10" updated: "2008-01-12T07:40:10" tags: ["Art Of Unit Testing"] author: "Roy Osherove" description: "I'm still struggling away with my book, and was wondering what you thought about this analogy. I am referring to the problem of testing private\\public method, and in that regard I refer to the ease of changeability of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Refactoring private methods is like...? By Roy Osherove January 12, 2008 In [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published January 12, 2008; technical details may be outdated. I'm still struggling away with [my book,](http://artofunittesting.com/) and was wondering what you thought about this analogy. I am referring to the problem of testing private\\public method, and in that regard I refer to the ease of changeability of private vs. public methods and the contracts they assume of the interacting party (reader\\developer\\code) Refactoring methods is like refactoring a book chapter. In a way, changing a **private** method is like changing a few sentences in a book chapter. The full chapter still may read exactly the same, but the way it is being delivered may change. Changing a **public** method is like changing the chapter’s title I the book. You really want to make sure that you’re not hurting the overall feel and content of the reader. It feels OK to me, perhaps a bit contrived, but what do you think? what is refactoring private\\public methods analogous to? ## More in Art Of Unit Testing [All posts in Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) - Jan 20, 2008 ### [TDD Anti Patterns](https://osherove.com/blog/2008/1/20/tdd-anti-patterns.html) - Jan 17, 2008 ### [The evolution of Unit Testing Syntax and Semantics](https://osherove.com/blog/2008/1/17/the-evolution-of-unit-testing-syntax-and-semantics.html) - Dec 18, 2007 ### [Basic Guidelines for using RowTest and data driven tests](https://osherove.com/blog/2007/12/18/basic-guidelines-for-using-rowtest-and-data-driven-tests.html) - Dec 18, 2007 ### [\[RowTest\] for NUnit, File System Interfaces for unit testing](https://osherove.com/blog/2007/12/18/rowtest-for-nunit-file-system-interfaces-for-unit-testing.html) --- title: "Scala, NRehersal and Fluent Test Interfaces" url: "https://osherove.com/blog/2008/1/9/scala-nrehersal-and-fluent-test-interfaces.md" canonical: "https://osherove.com/blog/2008/1/9/scala-nrehersal-and-fluent-test-interfaces.html" published: "2008-01-09T08:50:59" updated: "2008-01-09T08:50:59" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "This post by Ian cooper triggered my interest in Scala , a new object oriented, functional, programming language that is very accessible for java developers. From the looks of it, it seems very accessible for C#…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scala, NRehersal and Fluent Test Interfaces By Roy Osherove January 9, 2008 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published January 9, 2008; technical details may be outdated. [This post by Ian cooper](http://codebetter.com/blogs/ian_cooper/archive/2008/01/07/c-futures-diminishing-returns-and-the-scala-parachute.aspx) triggered my interest in [Scala](http://en.wikipedia.org/wiki/Scala_%28programming_language%29), a new object oriented, functional, programming language that is very accessible for java developers.  From the looks of it, it seems very accessible for C# developers as well. Scouring around related links for a while I came across [the Rehersal project,](http://rehersal.sourceforge.net/documentation.shtml) which is a unit testing framework for Scala(which already has a built in SUnit test framework very muich like JUnit), that tries to make things "less cumbersome" for developers, such as giving test names with spaces, etc. **Here's an example of a** [**Rehersal**](http://rehersal.sourceforge.net/) **test class:** ``` package examplesimport rehersal._import rehersal.TestCategories._class SkeletonTests extends Tests(UnitTesting){ test("Example of a test that will fail")( ()=> { fail() }) test("Example of expected exceptions that will pass", classOf[IndexOutOfBoundsException])( ()=> { throw new IndexOutOfBoundsException() })   //and this is how you implement test setup and teardown : onceBefore = () => { note("Run once before all tests in this object") } onceAfter = () => { note("Run once after all tests in this object, unless onceBefore failed") } before = () => { note("Run before each test unless the test is a duplicate") } after = () => { note("Run after each test, unless before failed") } } ``` At first look I thought it looked a lot like lambda expressions in C# 3.5 so I went ahead a did a little implementation of something I call NRehersal, which tries to mimic the same style of the Rehersal framework. As I was working on it it occured to me that what's really interesting to me is the fact that the tests, if implemented as regular method calls, can be implemented in a more _fluent_ syntax, so I came up with something that looks like this: public class NRehersalTestSimple : RehersalBase {public override void TheTests()     {         onceBeforeEachTest=delegate             {                 Console.WriteLine("before each TEST");             };         onceBeforeAllTests=delegate             {                 Console.WriteLine("before all tests");             };         TEST("This is a TEST", delegate         {             Console.WriteLine("in TEST");         });         TEST("This is a TEST with an expected exception")             .ExpectException()             .Execute(delegate                          {                              throw new OutOfMemoryException("whatever");                          });     }} **Things to note here:** - There is one big method called 'TheTests" that we override - We call "test" for each test case. - that means all tests will **always** run. you can't run just part of the tests by default. - **setup** and **teardown** are implemented by replacing delegates on the base class - you could use lambda syntax instead of the word delegate ( ()=> ) **Extensibility** But then I got to thinking, how extensibility can be taken care of, for example. what happens if I want to add a repeatable test ability? This is achieved using the .NET 3.5 features: an Extension method to the interface returned by the test method, and a customized delegate that can be changed at runtime for the test runner itself. here is what it would look like: - **Create a custom class that inherits from TestData that will implement new features  (a Times(int) method)** internal class RepeatSupportingTestData : TestData    {        private int timesToRun = 2;        public int TimesToRun        {            get { return timesToRun; }            set { timesToRun = value; }        }        public RepeatSupportingTestData(TestData data)            : base(data.Code,data.Name)        {        }    } - **Add an extension to the interface named ITestInvocation so you can use this new feature in your tests** static class TestExtensions {     public static ITestInvocation Times(this ITestInvocation exp, int time)     {         RepeatSupportingTestData data = exp.Data as RepeatSupportingTestData;         data.TimesToRun = time;         return exp;     } } - **Replace the delegates for creating TestData and for running a test with your own code** public class NRehersalExtensions : RehersalBase     {         private static Action originalSingleTestRunner;         public NRehersalExtensions()         {             //save the original single test runner to be run in a loop later             originalSingleTestRunner = TestOverrides.SingleTestRunMethod;             //change the single test runner to our own repeat runner             TestOverrides.SingleTestRunMethod = RepeatTestMethod;             //change the test data factory to out own so we can return our own test             //type that adds the repeat time property.             TestOverrides.TestDataFactory = CreateRepeatableTestData;         }         private static TestData CreateRepeatableTestData(TestData data)         {             return new RepeatSupportingTestData(data);         }         private static void RepeatTestMethod(TestData test, RehersalBase testClass)         {             RepeatSupportingTestData data = test as RepeatSupportingTestData;             for (int i = 0; i < data.TimesToRun; i++)             {                 originalSingleTestRunner(data, testClass);             }         }         public override void TheTests()         {             TEST("repeat TEST").Times(3)                 .Execute(()=>                              {                                  Console.WriteLine("Executing repeat TEST");                              });         }     } [You can get the code and zip file here at the google project page](http://code.google.com/p/nrehersal/). This is just something I threw together to see what it would fee like. it is still not implementing the various Asserts and expectations, which is a trivial matter of adding these methods to the RehersalBase class. Your thoughts are welcome. Personally I'm not sure what I feel about this syntax, but I like the fluent test interface that can be made with it, and the ease of extensibility. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jan 15, 2008 ### [Typemock Snippets and future](https://osherove.com/blog/2008/1/15/typemock-snippets-and-future.html) - Jan 12, 2008 ### [Unit Testing at TechEd Israel 08 - Which talk would you choose?](https://osherove.com/blog/2008/1/12/unit-testing-at-teched-israel-08-which-talk-would-you-choose.html) - Dec 31, 2007 ### [Joining TypeMock](https://osherove.com/blog/2007/12/31/joining-typemock.html) - Dec 18, 2007 ### [How uTest will destroy your Quality Assurance](https://osherove.com/blog/2007/12/18/how-utest-will-destroy-your-quality-assurance.html) --- title: "About the ALT.NET mailing lists" url: "https://osherove.com/blog/2008/1/3/about-the-altnet-mailing-lists.md" canonical: "https://osherove.com/blog/2008/1/3/about-the-altnet-mailing-lists.html" published: "2008-01-03T04:18:44" updated: "2008-01-03T04:18:44" tags: ["altnet", "altnetconf"] author: "Roy Osherove" description: "What he said ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About the ALT.NET mailing lists By Roy Osherove January 3, 2008 In [altnet](https://osherove.com/blog/category/altnet), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published January 3, 2008; technical details may be outdated. [What he said](http://altnetpursefight.blogspot.com/2008/01/this-is-why-we-cant-have-anything-nice.html). ## More in altnet [All posts in altnet](https://osherove.com/blog/category/altnet) - Jul 13, 2008 ### [ALT.NET Israel - August 7th-8th 2008](https://osherove.com/blog/2008/7/13/altnet-israel-august-7th-8th-2008.html) - Apr 29, 2008 ### [Don't miss out on Spec#](https://osherove.com/blog/2008/4/29/dont-miss-out-on-spec.html) - Dec 18, 2007 ### [Basic Guidelines for using RowTest and data driven tests](https://osherove.com/blog/2007/12/18/basic-guidelines-for-using-rowtest-and-data-driven-tests.html) - Dec 18, 2007 ### [ALT.NET Purse Fights Blog](https://osherove.com/blog/2007/12/18/altnet-purse-fights-blog.html) --- title: "Wanna join me at TypeMock?" url: "https://osherove.com/blog/2008/1/1/wanna-join-me-at-typemock.md" canonical: "https://osherove.com/blog/2008/1/1/wanna-join-me-at-typemock.html" published: "2008-01-01T12:32:55" updated: "2008-01-01T12:32:55" tags: [] author: "Roy Osherove" description: "The good news for TypeMock is that we (yes, \"we\" instead of \"they\") have secured a 1.5M$ Investment. More details here . The better news is that we are actively looking for great .NET developers here in Israel. If…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Wanna join me at TypeMock? By Roy Osherove January 1, 2008 **Historical article** · Originally published January 1, 2008; technical details may be outdated. The good news for [TypeMock](http://typemock.com/) is that we (yes, "we" instead of "they") have secured a 1.5M$ Investment. [More details here](http://www.elilopian.com/2008/01/01/typemock-ltd-has-secured-15m/). The better news is that we are actively looking for great .NET developers here in Israel. If you're hardcore about unit testing, or just a hardcore C# developer who'd like to get into this area, send us your resume . Specifically, send it to me: **Roy at osherove.com** and I will make sure to forward them and get things done. If you're good, we'll do our best to get you in the door. So far I can tell you that the people here are pretty cool and geeky. just the way I like it. They all have families too so the hours are reasonable and we're assembling an Agile development team to work the way we all wanted to but never had the chance. --- title: "New Computer Smell" url: "https://osherove.com/blog/2008/1/1/new-computer-smell.md" canonical: "https://osherove.com/blog/2008/1/1/new-computer-smell.html" published: "2008-01-01T08:32:11" updated: "2008-01-01T08:32:11" tags: ["Off Topic"] author: "Roy Osherove" description: "Ah, the smell of a new machine in a new company . Windows XP 64 bit. Quad Core. And windows live writer decides it does not want to install. Turns out, I can just install it on a 32 bit machine, and then copy the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Computer Smell By Roy Osherove January 1, 2008 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 1, 2008; technical details may be outdated. Ah, the smell of a new machine in a [new company](http://typemock.com/). Windows XP 64 bit. Quad Core. And windows live writer decides it does not want to install. Turns out, I can just install it on a 32 bit machine, and then copy the "writer" folder to my new 64 bit machine, and it works perfectly. lovely. Tomorrow - code base, here I come. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 22, 2008 ### [Computer Magic](https://osherove.com/blog/2008/1/22/computer-magic.html) - Jan 17, 2008 ### [\[very off topic\] I can haz a site](https://osherove.com/blog/2008/1/17/very-off-topic-i-can-haz-a-site.html) - Oct 25, 2007 ### [Trading Places](https://osherove.com/blog/2007/10/25/trading-places.html) - Oct 12, 2007 ### [Google Mail For Domains Premium just got bigger storage](https://osherove.com/blog/2007/10/12/google-mail-for-domains-premium-just-got-bigger-storage.html) --- title: "Joining TypeMock" url: "https://osherove.com/blog/2007/12/31/joining-typemock.md" canonical: "https://osherove.com/blog/2007/12/31/joining-typemock.html" published: "2007-12-31T13:46:48" updated: "2007-12-31T13:46:48" tags: ["Agile", "Agile Related"] author: "Roy Osherove" description: "Happy new year :) A new year is a great time to start off new things, or to renew old commitments that have been somehow left behind. I'm excited to announce that starting Jan 1 I will start working at TypeMock as a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Joining TypeMock By Roy Osherove December 31, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published December 31, 2007; technical details may be outdated. Happy new year :) A new year is a great time to start off new things, or to renew old commitments that have been somehow left behind. [![image](https://osherove.com/img/wb/4bdc749a_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_JoiningTypeMock_14052_image_5.png)](http://typemock.com/)I'm excited to announce that starting Jan 1 I will start working at [TypeMock](http://typemock.com/) as a senior developer. I will help create the next generation of unit testing tools for .NET developers focusing on new and exciting areas in the unit/integration testing world that have yet to be fully addressed at the developer testing level. I will continue to speak and train on my favorite topics (so send an email through the blog if you need something) but the majority of my time I will get back to basics: real code on a real product, not just consulting to other teams. **Why?** I feel I have grown too far from real world work and in the long run that makes me less relevant to real developers as a consultant. That's why it's time to get back to being a real developer so I can face some real world scenarios once again and learn better ways to do things. **But why TypeMock? Aren't you contradicting yourself?** In the past I've let my feelings about [using TypeMock known](http://weblogs.asp.net/rosherove/archive/2007/03/02/testable-designs-round-2-tooling-design-smells-and-bad-analogies.aspx). mostly I said that I think using TypeMock for new code is making it way to easy for developers to shoot themselves in the foot later with bad design. Eli, the founder of TypeMock, [disagreed with my views on design for testability on his blog](http://www.elilopian.com/2007/03/04/design-and-testability-yagni/). I still hold the same views, but in the same breath I will say that TypeMock is great for many other scenarios where a regular Mocking framework just doesn't have any way of helping. Mostly, I'm talking about Legacy code that is hard or unrealistic to refactor into testability, or when using testability-disabling frameworks such as WCF, WF and even [LINQ Queries](http://weblogs.asp.net/rosherove/archive/2007/11/17/mocking-linq-queries-extension-methods-and-anonymous-types.aspx). It's ability to isolate a class from its dependencies is second to none (it's the only tool I've seen that does this, and does it well). Even if TypeMock is "too" powerful to be used everywhere, I would much rather have a choice by having it when I need it than not have it at all. These differences in opinion between me and Eli are, what I think, will eventually make the company and the product better. A company like TypeMock cannot afford to sit in its own echo chamber, but instead be made of multiple views and opinions to make a better product. **What will I do exactly?** I will work on a future product which I cannot discuss yet. Also, I will start doing some TypeMock support work so I learn the product better, and contribute from my thoughts and vision into its next versions and design. All the while I am continuing with my quest to finish [the never ending book of Unit Testing](http://the.artofunittesting.com/). Here's to me finishing it in the next few months. (BTW, In my book I still use Rhino.Mocks for examples, since TypeMock is a commercial product) **Will you blog about it?** yep. I hope that my little blogging "break" in the past few months will fade away now that I will have more things to write about. One of the reasons I haven't been writing a lot to the blog is because I was too busy doing things that I eventually found drew me away from what I really love doing - coding and technology. Now, I'll have something to write home about. Here's to making a difference. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jan 12, 2008 ### [Unit Testing at TechEd Israel 08 - Which talk would you choose?](https://osherove.com/blog/2008/1/12/unit-testing-at-teched-israel-08-which-talk-would-you-choose.html) - Jan 9, 2008 ### [Scala, NRehersal and Fluent Test Interfaces](https://osherove.com/blog/2008/1/9/scala-nrehersal-and-fluent-test-interfaces.html) - Dec 18, 2007 ### [How uTest will destroy your Quality Assurance](https://osherove.com/blog/2007/12/18/how-utest-will-destroy-your-quality-assurance.html) - Dec 18, 2007 ### [Basic Guidelines for using RowTest and data driven tests](https://osherove.com/blog/2007/12/18/basic-guidelines-for-using-rowtest-and-data-driven-tests.html) --- title: "[OT] Returning the spam favor" url: "https://osherove.com/blog/2007/12/20/ot-returning-the-spam-favor.md" canonical: "https://osherove.com/blog/2007/12/20/ot-returning-the-spam-favor.html" published: "2007-12-20T00:23:22" updated: "2007-12-20T00:23:22" tags: [] author: "Roy Osherove" description: "someone was just kind enough to spam me. I'd like to return the favor. here is their email: [email removed] . spam scraping bots - have fun." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] Returning the spam favor By Roy Osherove December 20, 2007 **Historical article** · Originally published December 20, 2007; technical details may be outdated. someone was just kind enough to spam me. I'd like to return the favor. here is their email: \[email removed\] . spam scraping bots - have fun. --- title: "How uTest will destroy your Quality Assurance" url: "https://osherove.com/blog/2007/12/18/how-utest-will-destroy-your-quality-assurance.md" canonical: "https://osherove.com/blog/2007/12/18/how-utest-will-destroy-your-quality-assurance.html" published: "2007-12-18T17:47:44" updated: "2007-12-18T17:47:44" tags: ["Agile"] author: "Roy Osherove" description: "I just read on TechCrunch an article by Roi Carthy that UTest will allow \"Crowd Sourced\" QA solutions, where companies pay per bug and get QA done by many anonymous QA people around the web. I'm not sure what scares me…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How uTest will destroy your Quality Assurance By Roy Osherove December 18, 2007 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published December 18, 2007; technical details may be outdated. I just [read on TechCrunch](http://www.techcrunch.com/2007/12/18/utest-gets-17m-for-crowd-sourced-quality-assurance/)  an article by [Roi Carthy](http://www.roicarthy.com/) that [UTest](http://www.utest.com/) will allow "Crowd Sourced" QA solutions, where companies pay per bug and get QA done by many anonymous QA people around the web.  I'm not sure what scares me more. let's begin with one comment on this article that reads: > "who would give their unfinished product to strangers before it rolls out ? > > do they have hte business knowledge to do so?" Great question indeed. to which some QA person responded in the comments(bolded by me): > "It happens all the time. **QA is not a very high priority in most companies**. I work for a company that does outsourced QA for other companies. **Most companies provide us with no knowledge about how their product is supposed to work** except for the product itself. **We do the best we can** and help them make a better product, **ideally they would provide us with more information, but they don’t want to spend the time and money** so we make do with the situation. We test a few hundred software apps a year like this for various companies and are located in the US. Most of the apps are not programmed in the US and have silly errors that you would not have, were they written by an American or someone working on site with the company with the program idea." So, this is chaos all over again. Not only will uTest not benefit the sate of software quality by lowering the bar for low quality quality assurance, but they will let companies think that this is a good thing! The problem is most companies think QA is such a problem that can't be solved anyway, they may as well spend even **less** money on it instead of changing the way they work. **Problems that won't be solved:** - QA will only find minute and superficial bugs. - Repeating test cases will still be a problem since it will not be automated. - automation will be a problem because there is no model of "pay per automation" or better yet "pay per bug reproduction automatically" - Like smoking "lite" cigarettes, companies will find that re-teaching the product to new anonymous QAs every time will actually cost them more instead of getting one solid QA team that **knows** it - Communication is something which cannot be thrown away.  If it is, companies will find that the product quality level will actually be lower, while quality **expectation** will be higher. **Note**: I have sent a membership request to uTest so that I can explore the things I could do as a company wanting testers, so I can get a fuller picture.. The problem isn't uTest. They will make lots of money of the backs of companies who think testing is something you do at the end of development and costs less than development. The problem is the reality is perpetuates - a reality where testing is shoved aside. Can you imagine a company doing the same anonymous type of outsourcing to its development process? Oh wait, this happens too. [The results are quite distressing](http://www.intelligententerprise.com/showArticle.jhtml?articleID=189600721). **What can you do?** - Get a proper **serious** QA team (people that also know programming) - have them be part of the development team (tester per team at least) - Automate as much as possible - Every penny you save on your QA is a dollar you lose on quality later on. - Get some serious [Consulting](http://www.exampler.com/blog/) to help you. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jan 9, 2008 ### [Scala, NRehersal and Fluent Test Interfaces](https://osherove.com/blog/2008/1/9/scala-nrehersal-and-fluent-test-interfaces.html) - Dec 31, 2007 ### [Joining TypeMock](https://osherove.com/blog/2007/12/31/joining-typemock.html) - Dec 18, 2007 ### [Basic Guidelines for using RowTest and data driven tests](https://osherove.com/blog/2007/12/18/basic-guidelines-for-using-rowtest-and-data-driven-tests.html) - Dec 18, 2007 ### [\[RowTest\] for NUnit, File System Interfaces for unit testing](https://osherove.com/blog/2007/12/18/rowtest-for-nunit-file-system-interfaces-for-unit-testing.html) --- title: "Basic Guidelines for using RowTest and data driven tests" url: "https://osherove.com/blog/2007/12/18/basic-guidelines-for-using-rowtest-and-data-driven-tests.md" canonical: "https://osherove.com/blog/2007/12/18/basic-guidelines-for-using-rowtest-and-data-driven-tests.html" published: "2007-12-18T16:28:32" updated: "2007-12-18T16:28:32" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Testing Guidelines", "Unit Testing", "altnet"] author: "Roy Osherove" description: "I took a look at the code that was used to create the NUnit RowTest Extension (which is pretty neat) and found this in one of the samples: The highlighted areas in the code show something which I feel is problematic and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Basic Guidelines for using RowTest and data driven tests By Roy Osherove December 18, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing), [altnet](https://osherove.com/blog/category/altnet) **Historical article** · Originally published December 18, 2007; technical details may be outdated. I took a look at the code that was used to create the [NUnit RowTest Extension](http://www.andreas-schlapsi.com/projects/rowtest-extension-for-nunit/) (which is pretty neat) and found this in one of the samples: ![image](https://osherove.com/img/wb/f072d669_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_a177d915a4ab_1383_image_thumb.png) The highlighted areas in the code show something which I feel is problematic and is the manifestation of a unit test anti-pattern which the XUnit book calls "Interacting tests". basically, there is a dependency that is created by the first and second row, in which the second row cannot run individually. **Bad Naming once again leads to confusion** I'm not saying that this test is bad, because perhaps that is what they author was **trying** to test - that the class level members are not destroyed between each row. I guess we'll never know because the naming of the test is problematic - it doesn't say what the expected behavior is, or what the scenario\\context is. just what the general object being test is (and I'm not even sure about that). Still, it makes for a nice example for your own tests. **The symptoms of interacting row tests** Back to the issue at hand, the symptoms detailed below are caused by the wrong usage (in my mind) of the RowTest facility. The second argument in the RowTest is provided for the sole purpose of changing the behavior of the class under test (changing s\_classMember) so that the **next** row will be able to assert on the string. Now this prevents you from doing the following without going into annoying routines of code replacements: - You can't remove a row test without making sure you don't break any other rows - You can't just insert a row test randomly in between without possible breaking another row - You have to read the code in the test to understand what the row test is doing. Introducing dependencies between row test essentially makes the specific test method unmaintainable to a large degree. Since row-tests and data driven tests are a fairly new syntax for most of us, here are a few guidelines I try to follow: **Some Basic Guidelines** - Treat each test row as if it will be the only one on the test method (so that you don't feel the need to interact with other rows). - Test rows must be a simple as possible to understand - that is - have no logic. In this case we **do** have logic int he test row (pertaining to the next row) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Dec 31, 2007 ### [Joining TypeMock](https://osherove.com/blog/2007/12/31/joining-typemock.html) - Dec 18, 2007 ### [How uTest will destroy your Quality Assurance](https://osherove.com/blog/2007/12/18/how-utest-will-destroy-your-quality-assurance.html) - Dec 18, 2007 ### [\[RowTest\] for NUnit, File System Interfaces for unit testing](https://osherove.com/blog/2007/12/18/rowtest-for-nunit-file-system-interfaces-for-unit-testing.html) - Nov 28, 2007 ### [Data Layer Testing: Test Inheritance Patterns](https://osherove.com/blog/2007/11/28/data-layer-testing-test-inheritance-patterns.html) --- title: "[RowTest] for NUnit, File System Interfaces for unit testing" url: "https://osherove.com/blog/2007/12/18/rowtest-for-nunit-file-system-interfaces-for-unit-testing.md" canonical: "https://osherove.com/blog/2007/12/18/rowtest-for-nunit-file-system-interfaces-for-unit-testing.html" published: "2007-12-18T03:37:44" updated: "2007-12-18T03:37:44" tags: ["Agile", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "Two small things of note in the unit testing field for me today: 1) There is am implementation of the [RowTest] Attribute available for NUnit, created using the NUnit Addin model (which you probably didn't know…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[RowTest\] for NUnit, File System Interfaces for unit testing By Roy Osherove December 18, 2007 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published December 18, 2007; technical details may be outdated. Two small things of note in the unit testing field for me today: 1) There is am [implementation of the \[RowTest\]](http://weblogs.asp.net/nunitaddin/archive/2007/12/17/testdriven-net-2-11-parameterized-nunit-tests.aspx) Attribute available for NUnit, created using the NUnit Addin model (which you probably didn't know existed). Using this extension you can write tests like this: ![RunRowTest](https://osherove.com/img/wb/t_blogs_nunitaddin_WindowsLiveWriter_TestDriven.Net.11ParameterizedNUnitTests_136DC_RunRowTest_3.png) Accordingly there is now an Update for TestDriven.NET that allows running this RowTest extension on NUnit tests (used to support only MbUnit for this style). For more information, download and install instructions, [go to Jamie's post.](http://weblogs.asp.net/nunitaddin/archive/2007/12/17/testdriven-net-2-11-parameterized-nunit-tests.aspx) 2) [Bil SImser released](http://weblogs.asp.net/bsimser/archive/2007/12/17/file-and-file-container-wrapper-library-on-codeplex.aspx) a simple but effective File and FIleContainer wrappers that will help your unit testing needs. it's essentially a couple of interfaces with existing underlying implementations for the File System and ZIP files. Nice, simple, clean. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Dec 18, 2007 ### [How uTest will destroy your Quality Assurance](https://osherove.com/blog/2007/12/18/how-utest-will-destroy-your-quality-assurance.html) - Dec 18, 2007 ### [Basic Guidelines for using RowTest and data driven tests](https://osherove.com/blog/2007/12/18/basic-guidelines-for-using-rowtest-and-data-driven-tests.html) - Nov 28, 2007 ### [Data Layer Testing: Test Inheritance Patterns](https://osherove.com/blog/2007/11/28/data-layer-testing-test-inheritance-patterns.html) - Nov 21, 2007 ### [\[Songs\] Every Build You Break, Reflection](https://osherove.com/blog/2007/11/21/songs-every-build-you-break-reflection.html) --- title: "ALT.NET Purse Fights Blog" url: "https://osherove.com/blog/2007/12/18/altnet-purse-fights-blog.md" canonical: "https://osherove.com/blog/2007/12/18/altnet-purse-fights-blog.html" published: "2007-12-18T02:22:58" updated: "2007-12-18T02:22:58" tags: ["altnet", "altnetconf"] author: "Roy Osherove" description: "Yep. Weird name. This blog captures some of the egos and internal rumblings going on at the ALT.NET mailing list. I'm mostly a spectator these days but the blog is a great way to have a roundup that won't take you all…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ALT.NET Purse Fights Blog By Roy Osherove December 18, 2007 In [altnet](https://osherove.com/blog/category/altnet), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published December 18, 2007; technical details may be outdated. Yep. Weird name. [This blog captures](http://altnetpursefight.blogspot.com/) some of the egos and internal rumblings going on at the [ALT.NET mailing list.](http://tech.groups.yahoo.com/group/altnetconf/) I'm mostly a spectator these days but the blog is a great way to have a roundup that won't take you all day to read and still be able to catch up on the list. I think it's a good sign for a mailing list, when it has its own blog that details interesting stuff happening in it. The blog is anonymous which makes its author(s?) able to sound of pretty stingy (sometimes well deserved) remarks. [Subscribed](http://altnetpursefight.blogspot.com/feeds/posts/default). **Update**: I just realized it would be the greatest twist in the history of twists if the writer behind this blog was [The Bellware himself](http://codebetter.com/blogs/scott.bellware/).  I wonder... ## More in altnet [All posts in altnet](https://osherove.com/blog/category/altnet) - Jan 3, 2008 ### [About the ALT.NET mailing lists](https://osherove.com/blog/2008/1/3/about-the-altnet-mailing-lists.html) - Dec 18, 2007 ### [Basic Guidelines for using RowTest and data driven tests](https://osherove.com/blog/2007/12/18/basic-guidelines-for-using-rowtest-and-data-driven-tests.html) - Nov 17, 2007 ### [Mocking LINQ Queries, Extension methods and Anonymous Types](https://osherove.com/blog/2007/11/17/mocking-linq-queries-extension-methods-and-anonymous-types.html) - Oct 26, 2007 ### [My homework for the next year](https://osherove.com/blog/2007/10/26/my-homework-for-the-next-year.html) --- title: "Quick Fix File: Turn Zoom into Scroll on MS Natural Ergonomic 4000 Keyboard" url: "https://osherove.com/blog/2007/12/18/quick-fix-file-turn-zoom-into-scroll-on-ms-natural-ergonomic.md" canonical: "https://osherove.com/blog/2007/12/18/quick-fix-file-turn-zoom-into-scroll-on-ms-natural-ergonomic.html" published: "2007-12-18T02:13:57" updated: "2007-12-18T02:13:57" tags: ["Cool Tools"] author: "Roy Osherove" description: "Like Oren , I like my MS Keyboard, but I hate it having this useless, oh so very useless, zoom key in the center of it. I also found out about this hack on how to get the zoom key to be scroll up-down key , but it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Quick Fix File: Turn Zoom into Scroll on MS Natural Ergonomic 4000 Keyboard By Roy Osherove December 18, 2007 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published December 18, 2007; technical details may be outdated. Like [Oren](http://feeds.feedburner.com/~r/AyendeRahien/~3/201782996/Changing-the-Zoom-Function-for-Microsoft-Natural-Keyboard-4000.aspx), I like my MS Keyboard, but I hate it having this useless, oh so very useless, zoom key in the center of it. I also found out about this hack on [how to get the zoom key to be  scroll up-down key](http://oliiscool.blogspot.com/2006/11/hacking-microsoft-natural-ergonomic.html), but it involves doing xsl work etc.. so this post is for you if you have the MS natural 4000 keyboard and all you want is to have the zoom turned to scroll in less than 1 minute. - [Download this zip file](https://osherove.com/s/ZoomToScroll.zip) that I made. - unzip it into "c:\\Program Files\\Microsoft IntelliType Pro\\" - run the ZoomToScroll.bat file. you should be done. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jan 31, 2008 ### [vLite allows you to create a stripped down vista version](https://osherove.com/blog/2008/1/31/vlite-allows-you-to-create-a-stripped-down-vista-version.html) - Jan 15, 2008 ### [BitDiffer, anyone?](https://osherove.com/blog/2008/1/15/bitdiffer-anyone.html) - Nov 29, 2007 ### [IL Debug Visualizer for Compiled Lambda Expressions, MethodBase and DynamicMethod](https://osherove.com/blog/2007/11/29/il-debug-visualizer-for-compiled-lambda-expressions-methodba.html) - Sep 27, 2007 ### [Pimp My Visual Studio](https://osherove.com/blog/2007/9/27/pimp-my-visual-studio.html) --- title: "The American\\Israeli Culture Dictionary" url: "https://osherove.com/blog/2007/12/4/the-americanisraeli-culture-dictionary.md" canonical: "https://osherove.com/blog/2007/12/4/the-americanisraeli-culture-dictionary.html" published: "2007-12-04T07:01:07" updated: "2007-12-04T07:01:07" tags: [] author: "Roy Osherove" description: "Itay Braun does it again with another interesting post. this time he has a short dictionary when interacting between Israelis and Americans. Reading it I highly agree with 99% of it, except the \"blaming\" part where if I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The American\\Israeli Culture Dictionary By Roy Osherove December 4, 2007 **Historical article** · Originally published December 4, 2007; technical details may be outdated. [Itay Braun does it again](http://blogs.microsoft.co.il/blogs/itaybraun/archive/2007/12/04/working-in-microsoft-uk-what-they-think-about-the-israelis.aspx) with another interesting post. this time he has a short dictionary when interacting between Israelis and Americans. Reading it I highly agree with 99% of it, except the "blaming" part where if I say "you did this" I'm not necessarily saying "It wasn't my fault".. --- title: "Is this how Israelis are perceived?" url: "https://osherove.com/blog/2007/11/29/is-this-how-israelis-are-perceived.md" canonical: "https://osherove.com/blog/2007/11/29/is-this-how-israelis-are-perceived.html" published: "2007-11-29T13:25:16" updated: "2007-11-29T13:25:16" tags: [] author: "Roy Osherove" description: "Itai Braun, who works for Microsoft UK(but is an Israeli) shared some of the \"advice\" he got from MS Corp. before traveling to Israel. I found it a bit funny and somewhat hypocritical in some cases, as I'll note below(…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Is this how Israelis are perceived? By Roy Osherove November 29, 2007 **Historical article** · Originally published November 29, 2007; technical details may be outdated. Itai Braun, who works for Microsoft UK(but is an Israeli) shared some of the "advice" he got from MS Corp. before traveling to Israel. I found it a bit funny and somewhat hypocritical in some cases, as I'll note below([full list is here](http://blogs.microsoft.co.il/blogs/itaybraun/archive/2007/11/29/working-in-microsoft-uk-what-do-they-think-about-israel.aspx)): - **Conversation in Israel is candid, informal, and forthright**. If asked a question you would rather not answer, give a vague but polite response. (isn't that the opposite of candid and forthright? - how insulting. just say "I'd rather not, or can't answer that now") - Any gesture displaying an extended thumb is offensive throughout the Middle East. For hitchhiking, the extender index is used. (not sure why it would be offensive here) - **Though punctuality is not a key value in Israel, foreigners should arrive to appointments on time**. (aw, now my feelings are hurt, but it's pretty much correct) - **Business dress is less formal than Westerners are accustomed to at home.** Men should wear slacks with a shirt and tie, while women are expected to wear a blouse with either slacks or a skirt. (we like it when people from abroad come all dressed up while we're in jeans. it makes us feel important) - Business operates at a slower pace in Israel than it does in the West. (I have something to say about that, but it'll have to wait for tomorrow) - Relationships matter in Israel's business world; if asked out for dinner or to visit someone's home, you should try to accept the offer. (now I won't invite any guests to shabbat dinner because people told them "Accept it no matter what"- thanks Microsoft!) oh, there's also [a wikipedia article](http://en.wikipedia.org/wiki/Israelis) about us.. --- title: "IL Debug Visualizer for Compiled Lambda Expressions, MethodBase and DynamicMethod" url: "https://osherove.com/blog/2007/11/29/il-debug-visualizer-for-compiled-lambda-expressions-methodba.md" canonical: "https://osherove.com/blog/2007/11/29/il-debug-visualizer-for-compiled-lambda-expressions-methodba.html" published: "2007-11-29T02:07:36" updated: "2007-11-29T02:07:36" tags: [".NET", "CLR", "Cool Tools"] author: "Roy Osherove" description: "Mark Watts just emailed me with cool news. He took the Dynamic Method visualizers I worked on and created a version of them that will also work and show the IL on Lambda Expressions. here's the full list of changes he…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # IL Debug Visualizer for Compiled Lambda Expressions, MethodBase and DynamicMethod By Roy Osherove November 29, 2007 In [.NET](https://osherove.com/blog/category/net), [CLR](https://osherove.com/blog/category/clr), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 29, 2007; technical details may be outdated. Mark Watts just emailed me with cool news. He took the [Dynamic Method visualizers I worked on](http://weblogs.asp.net/rosherove/archive/2007/11/02/debugger-visualizers-for-methodinfo-dynamicmethod-and-methodbase.aspx) and created a version of them that will also work and show the IL on Lambda Expressions. here's the full list of changes he did to the source code: 1) Solution and projects all coverted over to VS2008 2) References to Microsoft.VisualStudio.DebuggerVisualizers updated to version 9 3) M3 and M4 methods added in the test project to demonstrate how to use the new functionality 4) MethodBodyVisualizer added DebuggerVisualizer attribute to target Delegates - not 100% certain this is safe but there is a lot of spelunking around where the brave fear to tread in this project. :) 5) ILReader project     \* Updated ILReaderFactory.GetReader to attempt to recognize when the target is a lamda expression and retrieve the correct MethodBase for it.     \* Updated DynamicScopeTokenResolver to handle GenericFieldInfo - Compiled Expressions store strings and the like in a global generic field array that is part of the delegate and is of type GenericFieldInfo. \* [Download available here](http://teamagile.com/Downloads/MethodVisualizers08_Src.zip) - Install: \- take the dlls from the bin directory \- put them under my documents\\visual studio\\visualizers. \- if the directory does not exist, create it. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jan 17, 2008 ### [Debug into the .NET Framework Library Source Code - It's here.](https://osherove.com/blog/2008/1/17/debug-into-the-net-framework-library-source-code-its-here.html) - Jan 15, 2008 ### [BitDiffer, anyone?](https://osherove.com/blog/2008/1/15/bitdiffer-anyone.html) - Nov 19, 2007 ### [Debug Into the .NET Framework Source Code](https://osherove.com/blog/2007/11/19/debug-into-the-net-framework-source-code.html) - Nov 17, 2007 ### [Mocking LINQ Queries, Extension methods and Anonymous Types](https://osherove.com/blog/2007/11/17/mocking-linq-queries-extension-methods-and-anonymous-types.html) --- title: "Data Layer Testing: Test Inheritance Patterns" url: "https://osherove.com/blog/2007/11/28/data-layer-testing-test-inheritance-patterns.md" canonical: "https://osherove.com/blog/2007/11/28/data-layer-testing-test-inheritance-patterns.html" published: "2007-11-28T18:56:51" updated: "2007-11-28T18:56:51" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Testing Guidelines", "Unit Testing", "altnetconf"] author: "Roy Osherove" description: "I'm preparing for my tutorial on Database and Data Layer unit testing that I will be giving at the Agile Practices Conference next week. It's always nice to have a full 3 hours to get pretty deep into something. 75…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Data Layer Testing: Test Inheritance Patterns By Roy Osherove November 28, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published November 28, 2007; technical details may be outdated. I'm preparing for my tutorial on Database and Data Layer unit testing that I will be giving at the Agile Practices Conference  next week. It's always nice to have a full 3 hours to get pretty deep into something. 75 minutes just isn't enough to grasp a concept deeply enough, just to graze it around the edges. When writing data layer tests, there are several patterns I've noticed, especially around the notion of inheritance within the test classes (Abstract test class pattern).  I've observed at least three different patterns emerging from inheritance that I've personally used, all relating to data layer testing, but could be used elsewhere: **Abstract Utility Class** ![image](https://osherove.com/img/wb/p.net_blogs_rosherove_WindowsLiveWriter_DataLayerTestingTestInheritancePatterns_3770_image_thumb.png) This class will usually be a base class for tests written for data layer objects. it would contain "facilities" such as database helper classes, setup and teardown methods that would automatically rollback any test and anything else a derived base class that was testing a data layer object would need (helper methods for asserting complex stuff, for example). This is a classic "Abstract test class" pattern, and the next two are built on top of it. **Template Test Class** ![image](https://osherove.com/img/wb/net_blogs_rosherove_WindowsLiveWriter_DataLayerTestingTestInheritancePatterns_3770_image_thumb_1.png)The template test class will contain _abstract_ methods as unit tests, which any derived class would have to override and perform. That means that if you are always testing the same things against a data layer object (insert returns different IDs, update works etc...) test authors on new data layer classes who derive from this class will never forget to implement at least these basic tests. they would also get the facilities for doing assertions and other things from the base class, as depicted in the previous pattern. makes sure you don't forget tests, saves some time on the infrastructure. **Abstract Driver Test Class** ![image](https://osherove.com/img/wb/net_blogs_rosherove_WindowsLiveWriter_DataLayerTestingTestInheritancePatterns_3770_image_thumb_2.png) This class will have _non abstract_ test case methods inside it that will always run the same way. these test methods will call (using abstract methods) to the derived class' implementation of type specific actions (insert specific for a category, or update specific to person) . That leaves the derived class to only implement very basic things such as insert (and return the ID), update, or delete (by ID). the test methods in the base class will do the rest of the work. derived classes don't need to implement any tests unless they want to add type specific tests which don't belong on the base class. in the image to the left the green methods are tests that the base class runs, and the yellow ones are type specific helpers that the derived class has to implement. this makes writing tests for a new data layer object (as long as its interface is the same) very simple by inheriting a test class and implementing a few methods. all the test permutations in the base class will then run on the data layer object. saves lots of time and forgetting tests. What patterns have you come across? ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Dec 18, 2007 ### [Basic Guidelines for using RowTest and data driven tests](https://osherove.com/blog/2007/12/18/basic-guidelines-for-using-rowtest-and-data-driven-tests.html) - Dec 18, 2007 ### [\[RowTest\] for NUnit, File System Interfaces for unit testing](https://osherove.com/blog/2007/12/18/rowtest-for-nunit-file-system-interfaces-for-unit-testing.html) - Nov 21, 2007 ### [\[Songs\] Every Build You Break, Reflection](https://osherove.com/blog/2007/11/21/songs-every-build-you-break-reflection.html) - Nov 17, 2007 ### [Mocking LINQ Queries, Extension methods and Anonymous Types](https://osherove.com/blog/2007/11/17/mocking-linq-queries-extension-methods-and-anonymous-types.html) --- title: "Style Macros for technical authors working in Word" url: "https://osherove.com/blog/2007/11/26/style-macros-for-technical-authors-working-in-word.md" canonical: "https://osherove.com/blog/2007/11/26/style-macros-for-technical-authors-working-in-word.html" published: "2007-11-26T16:19:23" updated: "2007-11-26T16:19:23" tags: ["Art Of Unit Testing"] author: "Roy Osherove" description: "One of the things you do as an author of a book working in MS Word, is do a lot of formatting on the text that you write. When working with the manning word templates, for example, you are expected to use a list of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Style Macros for technical authors working in Word By Roy Osherove November 26, 2007 In [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published November 26, 2007; technical details may be outdated. One of the things you do as an [author of a book](http://the.artofunittesting.com/) working in MS Word, is do a lot of formatting on the text that you write. When working with the manning word templates, for example, you are expected to use a list of built in text styles that manning created, with names such as ".body" and "code" for formatting different elements in your text. It's quite tedious to use the mouse to set styles on text selections, and as a keyboard junky it bothered me that you can't have specific shortcuts to set the style of the selection. A solution to this can be made by creating custom macros in word, each setting the selection to a different style, and then attaching a special keyboard shortcut to each of these macros. this process in itself is quite tedious and time consuming, but I've done it. now you don't have to. I've even automated the creation of the special keybaord shortcuts. Steps to make: 1. In word, press ALT-F11 or open the macros editor 2. Paste in the code for the macros in VBA as shown below. 3. Customize the styles names that each "formatXX" method sets to match the styles you'd like. 4. Customize the letters for the shortcuts as you wish in the "InstallAllMacros" method (it's Ctrl-Alt-\[letter\]) 5. Put the cursor inside the method named "InstallAllMacros" and press F5 to run it. when it has finished running you will have shortcuts as written in the method for the specific styles. The shortcuts are all in the form of Ctrl+Alt+\[letter\] which is shown in the method you just ran. 6. You can now get back to work. VBA Code for settings styles automatically: **Sub InstallAllMacros()     Call InstallMacro("FormatBody", wdKeyB)     Call InstallMacro("FormatCodeChar", wdKeyH)     Call InstallMacro("FormatCode", wdKeyC)     Call InstallMacro("FormatHeader1", wdKey1)     Call InstallMacro("FormatHeader2", wdKey2)     Call InstallMacro("FormatHeader3", wdKey3)     Call InstallMacro("FormatFigure", wdKeyF) End Sub** **Sub FormatCodeChar()     Call FormatSel(".Code Char") End Sub Sub FormatFigure()     Call FormatSel(".Figure") End Sub** **Sub FormatHeader1()     Call FormatSel(".Head 1") End Sub** **Sub FormatHeader2()     Call FormatSel(".Head 2") End Sub** **Sub FormatHeader3()     Call FormatSel(".Head 3") End Sub** **Sub FormatCode()     Call FormatSel(".Code")     Selection.ParagraphFormat.Alignment = wdAlignParagraphLeftEnd End Sub Sub FormatBody()     Call FormatSel(".Body") End Sub** **Sub InstallMacro(CommandName As String, Key1 As WdKey)     CustomizationContext = NormalTemplate     KeyBindings.Add wdKeyCategoryCommand, CommandName, BuildKeyCode(Key1, wdKeyAlt, wdKeyControl) End Sub** **Sub FormatSel(StyleName As String)     Selection.Style = ActiveDocument.Styles(StyleName) End Sub** Have fun. Hope this saves you as much time as it did for me. ## More in Art Of Unit Testing [All posts in Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) - Dec 18, 2007 ### [\[RowTest\] for NUnit, File System Interfaces for unit testing](https://osherove.com/blog/2007/12/18/rowtest-for-nunit-file-system-interfaces-for-unit-testing.html) - Nov 28, 2007 ### [Data Layer Testing: Test Inheritance Patterns](https://osherove.com/blog/2007/11/28/data-layer-testing-test-inheritance-patterns.html) - Nov 17, 2007 ### [Mocking LINQ Queries, Extension methods and Anonymous Types](https://osherove.com/blog/2007/11/17/mocking-linq-queries-extension-methods-and-anonymous-types.html) - Oct 8, 2007 ### [The various meanings of TDD](https://osherove.com/blog/2007/10/8/the-various-meanings-of-tdd.html) --- title: "Winner of \"Our OS is even more stupid\" award" url: "https://osherove.com/blog/2007/11/25/winner-of-quotour-os-is-even-more-stupidquot-award.md" canonical: "https://osherove.com/blog/2007/11/25/winner-of-quotour-os-is-even-more-stupidquot-award.html" published: "2007-11-25T18:23:39" updated: "2007-11-25T18:23:39" tags: [] author: "Roy Osherove" description: "This one wins my \"Stupidest OS Design of the year award, and it's not even Vista related. it's actual Mac OS Related. yep! \"Perhaps the most troublesome of the problems has been a data loss issue caused by Finder, which…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Winner of "Our OS is even more stupid" award By Roy Osherove November 25, 2007 **Historical article** · Originally published November 25, 2007; technical details may be outdated. [This one](http://www.tomsguide.com/us/2007/11/22/more_leopard_problems_plague_apple/) wins my "Stupidest OS Design of the year award, and it's not even Vista related. it's actual Mac OS Related. yep! > "Perhaps the most troublesome of the problems has been a data loss issue caused by Finder, which performs a function on Macs similar to that of Explorer in Windows. In Leopard, when Finder moves a file from one drive to another, **it deletes the file from the originating hard drive, without first checking to see if the file arrived safely on the destination hard drive**. If anything goes wrong during the file transfer, such as a momentary power glitch on the destination hard drive, the file would then be destroyed on both hard drives." Lovely. **Update**: To all those who think this issue was fixed - here's the quote from the article: > "Leopard users hoped that a free maintenance update (OSX 10.5.1), released on Thursday, November 15, would fix the issue, but Apple's [statement accompanying the update](http://docs.info.apple.com/article.html?artnum=306907) is too vague to give a definitive answer. With regard to data loss, it states that "... a potential data loss issue when moving files across **partitions** ..." has been fixed, but moving files across hard drives is not addressed. Personally, I wouldn't want to bet my important data on that statement." --- title: "RikMigrations: Good start on the road to .NET DB Management DSLs?" url: "https://osherove.com/blog/2007/11/25/rikmigrations-good-start-on-the-road-to-net-db-management-ds.md" canonical: "https://osherove.com/blog/2007/11/25/rikmigrations-good-start-on-the-road-to-net-db-management-ds.html" published: "2007-11-25T14:19:00" updated: "2007-11-25T14:19:00" tags: [] author: "Roy Osherove" description: "Here's a library I think could be useful for database management tasks in .NET: RikMigrations . It's based on the idea of Ruby On Rails MIgrations which, since I don't know ruby, is only something I know of from other…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # RikMigrations: Good start on the road to .NET DB Management DSLs? By Roy Osherove November 25, 2007 **Historical article** · Originally published November 25, 2007; technical details may be outdated. Here's a library I think could be useful for database management tasks in .NET: [RikMigrations](http://www.rikware.com/page/RikMigrations-Tutorial.aspx). It's based on the idea of [Ruby On Rails MIgrations](http://wiki.rubyonrails.org/rails/pages/UnderstandingMigrations) which, since I don't know ruby, is only something I know of from other people. > "RikMigrations is a database migration library for .NET based on the migrations facility provided by Ruby on Rails. It allows simple upgrading and downgrading of databases using .NET code (such as VB or C#) either from the command line or built into your application. Unlike many other migration frameworks, RikMigrations is a stand-alone library which does not rely on a large surrounding framework." Things still missing from this? no view or Stored procedure support yet. I hope there will be soon. \[via [vidmar](http://vidmar.net/weblog/archive/2007/11/25/links-of-the-week-12-week-472007.aspx)\] [Here are a couple of code samples](http://www.rikware.com/page/RikMigrations-Tutorial.aspx) on how to implement DB Migrations in .NET and RikMigrations. I can see myself building full DSLs for my DBs based on this framework, including versioning and setup\\teardown dor full deployments\\system tests. --- title: "VS 2008 Install & Crash Reports" url: "https://osherove.com/blog/2007/11/23/vs-2008-install-amp-crash-reports.md" canonical: "https://osherove.com/blog/2007/11/23/vs-2008-install-amp-crash-reports.html" published: "2007-11-23T00:04:43" updated: "2007-11-23T00:04:43" tags: ["Community News"] author: "Roy Osherove" description: "Update : Looks like it was a bad behaving version of Visual SVN that caused the crash. Thanks for the update, JP! I think I'm going to stay with my VS 2008 Beta Install for now. Sorry JP , it's this kind of thing that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VS 2008 Install & Crash Reports By Roy Osherove November 23, 2007 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published November 23, 2007; technical details may be outdated. **Update**: Looks like it was a [bad behaving version of Visual SVN](http://codebetter.com/blogs/jean-paul_boodhoo/archive/2007/11/23/update-to-vs2008-issue.aspx) that caused the crash. Thanks for the update, JP! I think I'm going to stay with my VS 2008 Beta  Install for now. [Sorry JP](http://codebetter.com/blogs/jean-paul_boodhoo/archive/2007/11/22/vs2008-bringing-attention-to-an-issue.aspx), it's this kind of thing that makes me wonder what on earth is Microsoft doing up there that they can't even get these small(big) things right. isn't this what CTPs are for? ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - May 31, 2009 ### [Daily news blogs about .NET and related creatures](https://osherove.com/blog/2009/5/31/daily-news-blogs-about-net-and-related-creatures.html) - Mar 17, 2009 ### [ALT.NET Israel – Meeting II 2d and 3rd of April](https://osherove.com/blog/2009/3/17/altnet-israel-meeting-ii-2d-and-3rd-of-april.html) - Nov 21, 2007 ### [\[Songs\] Every Build You Break, Reflection](https://osherove.com/blog/2007/11/21/songs-every-build-you-break-reflection.html) - Nov 15, 2007 ### [Free MS Press books for a 5 minute screencast](https://osherove.com/blog/2007/11/15/free-ms-press-books-for-a-5-minute-screencast.html) --- title: "[Songs] Every Build You Break, Reflection" url: "https://osherove.com/blog/2007/11/21/songs-every-build-you-break-reflection.md" canonical: "https://osherove.com/blog/2007/11/21/songs-every-build-you-break-reflection.html" published: "2007-11-21T17:39:58" updated: "2007-11-21T17:39:58" tags: ["Agile", "Community News"] author: "Roy Osherove" description: "This guy just posted a youtube video with the song I did from my session on continuous Integration during Teched Barcelona. I wrote a song (along with Sting and the Police) called \"Every Build You Break\". Here's the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Songs\] Every Build You Break, Reflection By Roy Osherove November 21, 2007 In [Agile](https://osherove.com/blog/category/agile), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published November 21, 2007; technical details may be outdated. [This guy just posted](http://rgabostyle.com/archives/2007/11/05/Agile_Development_with_Team_System_-_ARC202/) a youtube video with the song I did from my session on continuous Integration during Teched Barcelona. I wrote a song (along with Sting and the Police) called "Every Build You Break". Here's the video. enjoy! Also check out the video below it for my Reflection song [![](https://osherove.com/img/video/yt-XV5fViOoV_8.jpg)Play videoRoy Osherove singing](https://www.youtube.com/watch?v=XV5fViOoV_8) And this is the song I sang about Reflection in my session "Deep Reflection": [![](https://osherove.com/img/video/yt-JpU61iIUlUM.jpg)Play videoTeched2007 - Deep Reflection by Roy Osherove](https://www.youtube.com/watch?v=JpU61iIUlUM) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Dec 18, 2007 ### [\[RowTest\] for NUnit, File System Interfaces for unit testing](https://osherove.com/blog/2007/12/18/rowtest-for-nunit-file-system-interfaces-for-unit-testing.html) - Nov 28, 2007 ### [Data Layer Testing: Test Inheritance Patterns](https://osherove.com/blog/2007/11/28/data-layer-testing-test-inheritance-patterns.html) - Nov 17, 2007 ### [Mocking LINQ Queries, Extension methods and Anonymous Types](https://osherove.com/blog/2007/11/17/mocking-linq-queries-extension-methods-and-anonymous-types.html) - Oct 18, 2007 ### [Organization Problems - Sounds Familiar?](https://osherove.com/blog/2007/10/18/organization-problems-sounds-familiar.html) --- title: "Debug Into the .NET Framework Source Code" url: "https://osherove.com/blog/2007/11/19/debug-into-the-net-framework-source-code.md" canonical: "https://osherove.com/blog/2007/11/19/debug-into-the-net-framework-source-code.html" published: "2007-11-19T14:23:07" updated: "2007-11-19T14:23:07" tags: [".NET"] author: "Roy Osherove" description: "Best thing I've read in a while about VS 2008 (from Scott GU about the release of VS 2008 ): \" Browsing the .NET Framework Library Source using Visual Studio As I blogged a few weeks ago, we will be releasing a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Debug Into the .NET Framework Source Code By Roy Osherove November 19, 2007 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published November 19, 2007; technical details may be outdated. Best thing I've read in a while about VS 2008 (from [Scott GU about the release of VS 2008](http://weblogs.asp.net/scottgu/archive/2007/11/19/visual-studio-2008-and-net-3-5-released.aspx)): "**Browsing the .NET Framework Library Source using Visual Studio** > As I [blogged](http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx) a few weeks ago, we will be releasing a reference version of the .NET Framework library source code as part of this release.  Visual Studio 2008 has built-in debugger support to automatically step-into and debug this code on demand (VS 2008 can pull down the source for the appropriate .NET Framework library file automatically for you). > We are deploying the source servers to enable this right now, and will be publishing the steps to turn this feature on in the next few weeks. " Awesome. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jan 15, 2008 ### [BitDiffer, anyone?](https://osherove.com/blog/2008/1/15/bitdiffer-anyone.html) - Nov 29, 2007 ### [IL Debug Visualizer for Compiled Lambda Expressions, MethodBase and DynamicMethod](https://osherove.com/blog/2007/11/29/il-debug-visualizer-for-compiled-lambda-expressions-methodba.html) - Nov 17, 2007 ### [Mocking LINQ Queries, Extension methods and Anonymous Types](https://osherove.com/blog/2007/11/17/mocking-linq-queries-extension-methods-and-anonymous-types.html) - Nov 15, 2007 ### [\[Security\] Microsoft unveils Code Protection suite of tools](https://osherove.com/blog/2007/11/15/security-microsoft-unveils-code-protection-suite-of-tools.html) --- title: "How to create the Super Ego Search RSS Feed for yourself" url: "https://osherove.com/blog/2007/11/17/how-to-create-the-super-ego-search-rss-feed-for-yourself.md" canonical: "https://osherove.com/blog/2007/11/17/how-to-create-the-super-ego-search-rss-feed-for-yourself.html" published: "2007-11-17T18:47:05" updated: "2007-11-17T18:47:05" tags: [] author: "Roy Osherove" description: "Use Yahoo Pipes , of course. The nice thing about Pipes , is that you can \"massage\" the data you recieve to get it just how you like it. for me that means: gather the search feed on many terms from many different…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to create the Super Ego Search RSS Feed for yourself By Roy Osherove November 17, 2007 **Historical article** · Originally published November 17, 2007; technical details may be outdated. Use [Yahoo Pipes](http://pipes.yahoo.com/pipes/pipe.info?_id=ZLdOH3aV3BGuIcc_JxOy0Q), of course. The nice thing about [Pipes](http://pipes.yahoo.com/), is that you can "massage" the data you recieve to get it just how you like it. for me that means: - gather the search feed on many terms from many different sources - Sort by date - remove redundant posts about the same post (unique by link) - remove the posts that are from my own blog (filter by link) [so that's what I did right here](http://pipes.yahoo.com/osheroveego/page). you can have pipes create an RSS feed for that, and then wrap that up with FeedBurner for easy access at all times. For me that is: [http://feeds.feedburner.com/Osherove](http://feeds.feedburner.com/Osherove "http://feeds.feedburner.com/Osherove") --- title: "CodeBetter without the Bellware - Good or Evil?" url: "https://osherove.com/blog/2007/11/17/codebetter-without-the-bellware-good-or-evil.md" canonical: "https://osherove.com/blog/2007/11/17/codebetter-without-the-bellware-good-or-evil.html" published: "2007-11-17T18:12:52" updated: "2007-11-17T18:12:52" tags: ["Community"] author: "Roy Osherove" description: "I thought this was quite funny. Scott Bellware managed to piss someone (Scott K)off so much with his posts , that they went ahead and created a yahoo pipe that shows the CodeBetter.Com RSS feed with Scott Bellware's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CodeBetter without the Bellware - Good or Evil? By Roy Osherove November 17, 2007 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published November 17, 2007; technical details may be outdated. I thought this was quite funny. Scott Bellware managed to piss someone (Scott K)off so much [with his posts](http://codebetter.com/blogs/scott.bellware/archive/2007/11/12/170768.aspx), that they went ahead [and created  a yahoo pipe](http://pipes.yahoo.com/pipes/pipe.info?_id=SLCLOaHw2xGbCcD_yjUFzw) that shows the CodeBetter.Com RSS feed with Scott Bellware's feed **filtered out**: for some reason they also didn't like Jay Kimble so he's filtered out as well. Just for laughs, if you like the CodeBetter, but want to hold the Bellwarisms, [here's an RSS feed for ya](http://pipes.yahoo.com/pipes/pipe.run?_id=SLCLOaHw2xGbCcD_yjUFzw&_render=rss)  :) As to my opinion - I don't like the way he puts things, he makes me angry sometimes, and riles me up, but he keeps me honest, and it's good to have an "edge" that you can look at to know when you've drawn too close to. If the world didn't have bellwares, how would we know to appreciate [the JPs](http://www.jpboodhoo.com/blog/) in it? and who'd tell us to our face if we screwed up? (they may be wrong sometime, but it's those times they are right that are the important ones) ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Mar 4, 2009 ### [We need a new slogan](https://osherove.com/blog/2009/3/4/we-need-a-new-slogan.html) - Mar 2, 2009 ### [Are courses\\consultants a waste of money?](https://osherove.com/blog/2009/3/2/are-coursesconsultants-a-waste-of-money.html) - Nov 15, 2007 ### [Free MS Press books for a 5 minute screencast](https://osherove.com/blog/2007/11/15/free-ms-press-books-for-a-5-minute-screencast.html) - Aug 23, 2007 ### [Ask An ASP.NET Expert Live](https://osherove.com/blog/2007/8/23/ask-an-aspnet-expert-live.html) --- title: "Mocking LINQ Queries, Extension methods and Anonymous Types" url: "https://osherove.com/blog/2007/11/17/mocking-linq-queries-extension-methods-and-anonymous-types.md" canonical: "https://osherove.com/blog/2007/11/17/mocking-linq-queries-extension-methods-and-anonymous-types.html" published: "2007-11-17T14:47:14" updated: "2007-11-17T14:47:14" tags: [".NET", ".Net 2.0", "Agile", "Agile Related", "Art Of Unit Testing", "General Software Devel...", "Testing Guidelines", "Unit Testing", "altnet", "altnetconf"] author: "Roy Osherove" description: "One of the things I wanted to show at my Interactive session on unit testing tips and tricks at TechEd this year was how you can \"Stub\" out results from LINQ Queries, or mock\\stub Extension methods in .NET 3.5 ( what's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mocking LINQ Queries, Extension methods and Anonymous Types By Roy Osherove November 17, 2007 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing), [altnet](https://osherove.com/blog/category/altnet), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published November 17, 2007; technical details may be outdated. One of the things I wanted to show at my Interactive session on unit testing tips and tricks at TechEd this year was how you can "Stub" out results from LINQ Queries, or mock\\stub Extension methods in .NET 3.5 ([what's the difference](http://weblogs.asp.net/rosherove/archive/2007/09/16/mocks-and-stubs-the-difference-is-in-the-flow-of-information.aspx) between mocks and stubs?) The only mocking framework in existence that can truly stub out LINQ queries and extension methods is [TypeMock.NET](http://www.typemock.com/).  Another option, if you use LINQ to SQL, is to be able to mock out the DataContext and the IOrderedQueriable interface, [as outlined here](http://aabs.wordpress.com/2007/06/26/using-mock-objects-when-testing-linq-code/), to return a custom query result set.  I'll talk about the first option in this post, since it is much easier to read and understand. I may touch on the second one in a later post. TypeMock, I've [talked about](http://weblogs.asp.net/rosherove/archive/2006/09/27/TypeMock-has-a-blog.aspx) it [before](http://weblogs.asp.net/rosherove/archive/2005/03/20/395261.aspx), is a very powerful mocking framework. much more so than Rhino Mocks or NMock, because it allows isolating static methods, private methods, constructors, and basically anything you can do in IL, because it uses the .NET Profiler APIs to intercept method calls and do whatever it wants with them.  In that regard, it is almost **too** powerful because it rids of of the need to actually design your code for testability, and just test it as is (how you actually write the tests is another matter for another post). But I'd rather have the argument whether TypeMock is good or bad, than not have TypeMock on the scene at all, simply because it's just too damn valuable as is (disclosure: TypeMock is owned by a friend of mine). It's the only real framework that can deal with real untestable legacy code and still allow you to isolate classes enough to test them without changing the code under test itself. It's the only framework that allows to write unit tests for code that is based on .NET 3.5 and uses LINQ Queries and extension methods, allowing to isolate these two types of code and thus be able to separate things from their dependencies. Here are some examples I wanted to show (takes fro the examples that come with the TypeMock download: **Example: Stubbing out LINQ Query Results** First, we're going to create one fake result to return (array) from the LINQ query, and also introduce the real data source from qhich to query (realCustomerList). note that the customer list has 3 entries, and the fake list has only two entries. ``` 1: ///Two Customer instances used as fake values 2: private static Customer fakeCustomer1 = new Customer { Id = 0, Name = "Fake1", City = "SF" }; 3: private static Customer fakeCustomer2 = new Customer { Id = 1, Name = "Fake2", City = "Redmond" }; 4:   5: /// A fake list used as return value in the tests 6: private List fakeCustomers 7: = new List {fakeCustomer1,fakeCustomer2 }; 8:   9: /// A list containing 3 cusotmer use as the "real data" 10: private List realCustomerList = new List { 11: new Customer{ Id = 1, Name="Dave", City="Sarasota" }, 12: new Customer{ Id = 2, Name="John", City="Tampa" }, 13: new Customer{ Id = 3, Name="Abe", City="Miami" } 14: }; ``` Here's how the unit test looks: ``` 1: [TestMethod] 2: public void MockSimpleQuery() 3: { 4: using (RecordExpectations r = new RecordExpectations()) 5: { 6: var answer = from c in realCustomerList select c; 7: r.Return(fakeCustomers); 8: } 9:   10: var actual = from c in realCustomerList select c; 11: 12: Assert.AreEqual(2, actual.Count()); 13: Assert.IsTrue(actual.Contains(fakeCustomer1)); 14: Assert.IsTrue(actual.Contains(fakeCustomer2)); 15: } ``` **Line 6** is the one that tells the TypeMock record what LINQ query to intercept. **Line 7** tells TypeMock what value to return when this query is intercepted. that means the query will never really take place. finally, we assert that what we got from the query is the fake list of customers. Pretty darn easy. But is this a good test? Not really. this is only a demo of what you code intercept with typeMock. a real unit test will actually test a piece of code that runs this query, and, instead of providing it with a list of objects to query, will just provide it with the fake return value to receive **Example: Test that an anonymous type is created correctly** ``` 1: [TestMethod] 2: [VerifyMocks] 3: public void MockAnonymousTypeTest() 4: { 5: using (RecordExpectations rec = new RecordExpectations()) 6: { 7: //Mock the creation of the Anonymous Type 8: var p1 = new { Name = "A", Price = 3 }; 9: rec.CheckArguments(); 10:   11: //fake the value of the Name Property 12: rec.ExpectAndReturn(p1.Name, "John"); 13: } 14: //if creation will be done diffrently an exception will be thrown. 15: var target = new { Name = "B", Price = 3 }; 16: //verify that the fake value is returned 17: Assert.AreEqual("John", target.Name); 18: } ``` **Line 8** tells the typemock recorder that this is the anonymous type creation we'd like to intercept. **Line 9** tell it to assert internally that the anonymous type is indeed created with the correct "Name" property value and the correct "Price" property value. so if I later initialize the anonymous type with the wrong values, I will get a test exception based on the expected values. Pretty neat. **Line 12** is just an example of how you can also intercept and retun whatever value you'd like from the property of an anonymous type. in this case the name will always return "John" even though it may have been initialized differently. **Example: Mocking Extension Methods** Extension methods are static methods, which means you can't replace them with a different method instance. there are ways to design yoru code so that the calls to the static methods are testable, but assuming you're testing code that cannot be changed, or that is hard to redesign, intercepting the method call itself is almost the only choice. assume you've extended the Point class by adding this extension method: ``` 1: public static class Extend 2: { 3: public static Point Multiply(this Point extendedInstance, int scalar) 4: { 5: extendedInstance.X *= scalar; 6: extendedInstance.Y *= scalar; 7: return extendedInstance; 8: } 9:   10: } ``` ``` Now you can write a test like this: ``` ``` 1: [TestMethod] 2: [VerifyMocks] 3: public void MockExtensionMethod() 4: { 5: using (RecordExpectations rec = new RecordExpectations()) 6: { 7: Point mocked = new Point(7, 9); 8: mocked.Multiply(6); 9: rec.Return(new Point(5, 5)); 10: } 11:   12: Point target = new Point(7, 9); 13: Point actual = target.Multiply(6); 14:   15: //Verify the returned vcalues 16: Assert.AreEqual(5, actual.X); 17: Assert.AreEqual(5, actual.Y); 18: } ``` in line 7 we're actually using the extension method as part of our recorder, and telling the record to return a specific value. then we later use that value in our code under test (like 13) and assert that we god the mocked value instead of the real one (the extension method is not executed). **What about other technologies?** could you use this to test code that relies on other non testable technologies, like windows workflow, WCF etc? the answer is a big yes. the same principles apply, and most of these frameworks were not built with testability in mind. it's in those cases where people ask "how can I test such code where everything is sealed, private and static?" that I tell them that, currently, TypeMock is the only framework that solves this problem at a satisfactory result. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 29, 2007 ### [IL Debug Visualizer for Compiled Lambda Expressions, MethodBase and DynamicMethod](https://osherove.com/blog/2007/11/29/il-debug-visualizer-for-compiled-lambda-expressions-methodba.html) - Nov 19, 2007 ### [Debug Into the .NET Framework Source Code](https://osherove.com/blog/2007/11/19/debug-into-the-net-framework-source-code.html) - Nov 15, 2007 ### [\[Security\] Microsoft unveils Code Protection suite of tools](https://osherove.com/blog/2007/11/15/security-microsoft-unveils-code-protection-suite-of-tools.html) - Nov 15, 2007 ### [Free MS Press books for a 5 minute screencast](https://osherove.com/blog/2007/11/15/free-ms-press-books-for-a-5-minute-screencast.html) --- title: "[Security] Microsoft unveils Code Protection suite of tools" url: "https://osherove.com/blog/2007/11/15/security-microsoft-unveils-code-protection-suite-of-tools.md" canonical: "https://osherove.com/blog/2007/11/15/security-microsoft-unveils-code-protection-suite-of-tools.html" published: "2007-11-15T17:26:02" updated: "2007-11-15T17:26:02" tags: [".NET", "General Software Devel...", "Security"] author: "Roy Osherove" description: "about a year ago Microsoft bought a small Israeli Company called Secured Dimensions. They had an interesting solution to the problem of protecting your .NET code. Basically they would help you choose which parts of the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Security\] Microsoft unveils Code Protection suite of tools By Roy Osherove November 15, 2007 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Security](https://osherove.com/blog/category/security) **Historical article** · Originally published November 15, 2007; technical details may be outdated. about a year ago [Microsoft bought a small Israeli Company](http://microsoft.blognewschannel.com/archives/2007/01/17/microsoft-buys-israeli-data-protection-firm-secured-dimensions/) called Secured Dimensions. They had an interesting solution to the problem of protecting your .NET code. Basically they would help you choose which parts of the code you'd like to protect and then run those parts of hte code in a special virtual machine encrypted environment (in memory). Recently [Microsoft released a set of products that seems to be based on SD's technology](http://www.microsoft.com/SLPS/products.aspx), and that's a good thing. There aren't many good solutions to protect .NET code. SD's solution is closer to protecting real IP as it gets as far as I can see. \[via [vitaly](http://vitalygorn.com/blog/)\] - (BTW, Vitaly- you have a configuration bug in your blog. just try accessing a specific [post by url and you get a nasty error](http://vitalygorn.com/blog/post/2007/11/New-code-protection-and-licensing-solution-from-Microsoft.aspx)) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 19, 2007 ### [Debug Into the .NET Framework Source Code](https://osherove.com/blog/2007/11/19/debug-into-the-net-framework-source-code.html) - Nov 17, 2007 ### [Mocking LINQ Queries, Extension methods and Anonymous Types](https://osherove.com/blog/2007/11/17/mocking-linq-queries-extension-methods-and-anonymous-types.html) - Nov 15, 2007 ### [Free MS Press books for a 5 minute screencast](https://osherove.com/blog/2007/11/15/free-ms-press-books-for-a-5-minute-screencast.html) - Nov 14, 2007 ### [Cool demo of Visual Web GUI](https://osherove.com/blog/2007/11/14/cool-demo-of-visual-web-gui.html) --- title: "Free MS Press books for a 5 minute screencast" url: "https://osherove.com/blog/2007/11/15/free-ms-press-books-for-a-5-minute-screencast.md" canonical: "https://osherove.com/blog/2007/11/15/free-ms-press-books-for-a-5-minute-screencast.html" published: "2007-11-15T16:42:33" updated: "2007-11-15T16:42:33" tags: [".NET", "Community", "Community News", "General Software Devel..."] author: "Roy Osherove" description: "Justin Angel is giving away free MS Press books as part of a 5 minute developer screencast competition he's judging in, along with Guy Burstein and Oren Eini (Ayende) . I'd say that's pretty cool! Submission phase seems…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free MS Press books for a 5 minute screencast By Roy Osherove November 15, 2007 In [.NET](https://osherove.com/blog/category/net), [Community](https://osherove.com/blog/category/community), [Community News](https://osherove.com/blog/category/community-news), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published November 15, 2007; technical details may be outdated. [Justin Angel](http://blogs.microsoft.co.il/blogs/justinangel/) is giving away free MS Press books as part of a 5 minute developer screencast competition he's judging in, along with [Guy Burstein](http://blogs.microsoft.co.il/blogs/bursteg/) and [Oren Eini (Ayende)](http://www.ayende.com/blog). I'd say that's pretty cool! Submission phase seems to be until the end of this month (his post did not specificy an end date - Justin -fix it...) [Here's the full rundown of what to do](http://blogs.microsoft.co.il/blogs/justinangel/archive/2007/11/07/israeli-developer-screencast-competition.aspx) (in Hebrew). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 17, 2007 ### [Mocking LINQ Queries, Extension methods and Anonymous Types](https://osherove.com/blog/2007/11/17/mocking-linq-queries-extension-methods-and-anonymous-types.html) - Nov 15, 2007 ### [\[Security\] Microsoft unveils Code Protection suite of tools](https://osherove.com/blog/2007/11/15/security-microsoft-unveils-code-protection-suite-of-tools.html) - Nov 14, 2007 ### [Cool demo of Visual Web GUI](https://osherove.com/blog/2007/11/14/cool-demo-of-visual-web-gui.html) - Oct 25, 2007 ### [What's IoC good for, Really?](https://osherove.com/blog/2007/10/25/whats-ioc-good-for-really.html) --- title: "Cool demo of Visual Web GUI" url: "https://osherove.com/blog/2007/11/14/cool-demo-of-visual-web-gui.md" canonical: "https://osherove.com/blog/2007/11/14/cool-demo-of-visual-web-gui.html" published: "2007-11-14T22:39:28" updated: "2007-11-14T22:39:28" tags: [".NET"] author: "Roy Osherove" description: "The guys over at VisualWebGui sent over a demo of an application built with their winform-to-web technology. Pretty damn awesome, that's all I can say." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool demo of Visual Web GUI By Roy Osherove November 14, 2007 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published November 14, 2007; technical details may be outdated. The guys over at [VisualWebGui](http://www.visualwebgui.com/) sent over a [demo of an application](http://www.ivaluesuite.com/infernodemo.html) built with their winform-to-web technology. Pretty damn awesome, that's all I can say. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 15, 2007 ### [\[Security\] Microsoft unveils Code Protection suite of tools](https://osherove.com/blog/2007/11/15/security-microsoft-unveils-code-protection-suite-of-tools.html) - Nov 15, 2007 ### [Free MS Press books for a 5 minute screencast](https://osherove.com/blog/2007/11/15/free-ms-press-books-for-a-5-minute-screencast.html) - Oct 25, 2007 ### [What's IoC good for, Really?](https://osherove.com/blog/2007/10/25/whats-ioc-good-for-really.html) - Oct 23, 2007 ### [Dave Platt In Israel - CAB Fans Prepare yourself](https://osherove.com/blog/2007/10/23/dave-platt-in-israel-cab-fans-prepare-yourself.html) --- title: "Cool Online Backup Service - Carbonite" url: "https://osherove.com/blog/2007/11/13/cool-online-backup-service-carbonite.md" canonical: "https://osherove.com/blog/2007/11/13/cool-online-backup-service-carbonite.html" published: "2007-11-13T17:03:29" updated: "2007-11-13T17:03:29" tags: [] author: "Roy Osherove" description: "Based on David Platt's talk \"Why Software Sucks\" (Which was easily one of the best and funniest at TechEd Barcelona this year), I went ahead and registered 3 of my home machines to the online backup service called…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool Online Backup Service - Carbonite By Roy Osherove November 13, 2007 **Historical article** · Originally published November 13, 2007; technical details may be outdated. Based on [David Platt's](http://www.rollthunder.com/) talk "Why Software Sucks" (Which was easily one of the best and funniest at TechEd Barcelona this year), I went ahead and registered 3 of my home machines to the online backup service called [Carbonite](http://www.carbonite.com/raf/signup.aspx?RAFUserUID=206786&a=0) (If you use this link to sign up I get free months on my subscription - FYI) . so far I find it very simple to use and a true no brainer. Just like backup should be. (Here's [a longer review](http://suckbusters2.blogspot.com/2007/01/disk-backup-that-just-works.html)) It has unlimited storage size and you just right click on a folder or file and say "backup this". it all happens in the background and invisibly. The only thing I'd change is that when backing up my photos and videos on my media center machine, I need to specifically say for each folder to also backup videos, which, I'd except to be able to do by default (though I see the point of lots of people accidentally backing up huge videos by mistake) . restore is also a breeze and I really needed a way to have simple easy backup for my machines. at 50$ a year per machine this is rather a good deal, especially for the removal of hassle involved. --- title: "Fix: PowerPoint 2007 Very Slow Text Editing" url: "https://osherove.com/blog/2007/11/3/fix-powerpoint-2007-very-slow-text-editing.md" canonical: "https://osherove.com/blog/2007/11/3/fix-powerpoint-2007-very-slow-text-editing.html" published: "2007-11-03T16:37:19" updated: "2007-11-03T16:37:19" tags: [] author: "Roy Osherove" description: "I was cursing at my Powerpoint 2007 the past few days, wondering if I should just go back to Office 200. Text editing in Powerpoint was dog slow and I was cursing every word I was writing in there. It was a big problem.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Fix: PowerPoint 2007 Very Slow Text Editing By Roy Osherove November 3, 2007 **Historical article** · Originally published November 3, 2007; technical details may be outdated. I was cursing at my Powerpoint 2007 the past few days, wondering if I should just go back to Office 200. Text editing in Powerpoint was dog slow and I was cursing every word I was writing in there. It was a big problem. Then I found [this helpful page](http://www.pptfaq.com/FAQ00850.htm)  which essentially says that any problems related to slow text editing are probably due to a bad printer driver or an old installation of the printer driver. **Solution: Make sure your printer driver is installed correctly** I checked my printer driver and indeed, it was not installed correctly. I quickly installed the latest version and voila - Powerpoint 2007 now works like a champ. It seems weird and very annoying to me that PowerPoint performs slowly even if you don't fo any printing on it, just editing. Very weird, and very annoying. --- title: "Debugger Visualizers for MethodInfo, DynamicMethod, and MethodBase" url: "https://osherove.com/blog/2007/11/2/debugger-visualizers-for-methodinfo-dynamicmethod-and-method.md" canonical: "https://osherove.com/blog/2007/11/2/debugger-visualizers-for-methodinfo-dynamicmethod-and-method.html" published: "2007-11-02T18:32:44" updated: "2007-11-02T18:32:44" tags: [] author: "Roy Osherove" description: "Oren's post about DynamicMethods in Reflection is a great \"advanced\" intro to the idea of DyamicMethod (a method you can create on the fly and then cache to execute many times - great of optimization scenarios over…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Debugger Visualizers for MethodInfo, DynamicMethod, and MethodBase By Roy Osherove November 2, 2007 **Historical article** · Originally published November 2, 2007; technical details may be outdated. [Oren's post](http://www.ayende.com/Blog/archive/2007/10/29/Dynamic-Methods.aspx) about [DynamicMethods](http://msdn2.microsoft.com/en-us/library/system.reflection.emit.dynamicmethod.aspx) in Reflection is a great "advanced" intro to the idea of DyamicMethod (a method you can create on the fly and then cache to execute many times - great of optimization scenarios over multiple objects). My last talk at TechEd Europe this year will be about "Deep Reflection". It is a variant of a session I did at TechEd Israel and one of the topics I cover there is the use of DyanmicMethods. One of the things that I also show there is how you may be able to create a DyamicMethod and MethodInfo Visualizer, that shows you the IL produced in the method as you create it. Very powerful if you want to debug code generated at runtime. Here's a screenshot of the visualizer at work over a MethodInfo object. It will work just as well on a DynamicMethod object: You can download the visualizers for these here: - [DynamicMethod and MethodInfo visualizers](http://teamagile.com/Downloads/DmVis.zip) (VS 2005 and VS 2008 bin versions) - [The original post](http://weblogs.asp.net/rosherove/archive/2006/04/25/MethodsVisualizer.aspx) that also has links to the source code \* possible cool thing you can do: Use [RunSharp](http://www.codeproject.com/dotnet/runsharp.asp) when generating the IL inside a DynamicMethod. I'm not sure it's possible but I'll check and maybe present this. --- title: "VS2008 VPCs Expiring November 1st - Have a nice day!" url: "https://osherove.com/blog/2007/10/27/vs2008-vpcs-expiring-november-1st-have-a-nice-day.md" canonical: "https://osherove.com/blog/2007/10/27/vs2008-vpcs-expiring-november-1st-have-a-nice-day.html" published: "2007-10-27T02:48:41" updated: "2007-10-27T02:48:41" tags: ["Team System"] author: "Roy Osherove" description: "\"We recently discovered that the VPCs we distributed as part of the VS2008 Beta2 release will expire on Thursday, November 1, 2007, much earlier than we had originally expected. Since the timeout is at the OS level, we…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VS2008 VPCs Expiring November 1st - Have a nice day! By Roy Osherove October 27, 2007 In [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published October 27, 2007; technical details may be outdated.  ![image](https://osherove.com/img/wb/.net_blogs_rosherove_WindowsLiveWriter_VS2008VPCsExpiringNovember1stHaveaniceda_9802_image_thumb.png) > "We recently discovered that the VPCs we distributed as part of the VS2008 Beta2 release will expire on Thursday, November 1, 2007, much earlier than we had originally expected.  Since the timeout is at the OS level, we cannot automatically extend the timeout period.  As such we are currently in the process of reissuing the VPCs and expect to make them available early next week. " > > (full post about [this and what you might want to do here](http://blogs.msdn.com/jeffbe/archive/2007/10/25/vs2008-beta2-vpcs-expiring-prematurely.aspx)) Great! Three days before I leave to speak at TechEd, using the VS 2008 VPC with Team System On it, you pull the rug from under me. Thanks! ## More in Team System [All posts in Team System](https://osherove.com/blog/category/team-system) - Sep 17, 2007 ### [Synchronize Team System and ClearCase with the TFS Migration & Synchronization Tool](https://osherove.com/blog/2007/9/17/synchronize-team-system-and-clearcase-with-the-tfs-migration.html) - Jun 19, 2007 ### [Get latest version on checkout with team system source control](https://osherove.com/blog/2007/6/19/get-latest-version-on-checkout-with-team-system-source-contr.html) --- title: "My homework for the next year" url: "https://osherove.com/blog/2007/10/26/my-homework-for-the-next-year.md" canonical: "https://osherove.com/blog/2007/10/26/my-homework-for-the-next-year.html" published: "2007-10-26T17:54:02" updated: "2007-10-26T17:54:02" tags: ["General Software Devel...", "altnet", "altnetconf"] author: "Roy Osherove" description: "Here are the things that are burning in my head these days, screaming at me to go through them and grok them to a point where I don't feel stupid talking about them too much: NHibernate+ ActiveRecord and LLBLGen Try to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My homework for the next year By Roy Osherove October 26, 2007 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [altnet](https://osherove.com/blog/category/altnet), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published October 26, 2007; technical details may be outdated. Here are the things that are burning in my head these days, screaming at me to go through them and grok them to a point where _I_ don't feel stupid talking about them too much: ![image](https://osherove.com/img/wb/ec0c_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_Myhomeworkforthenextyear_1AB3_image_thumb.png) - [NHibernate+ ActiveRecord](http://www.castleproject.org/) and [LLBLGen](http://www.llblgen.com/) - Try to see if you can implement [Hibernate Shards](http://www.hibernate.org/414.html) in NHibernate - [Spring.NET](http://www.springframework.net/) - [BOO and Boo DSLs](http://boo.codehaus.org/) - [Windsor Containers](http://www.castleproject.org/) - [MVC](http://en.wikipedia.org/wiki/Model-view-controller) and [MVP](http://martinfowler.com/eaaDev/ModelViewPresenter.html) patterns implemented in .NET - [Ruby](http://www.ruby-lang.org/) and [IronRuby](http://www.iunknown.com/2007/04/introducing_iro.html)\\[Ruby in Steel](http://www.sapphiresteel.com/) (whatever works for .NET) - Take a good look at [RetLang](http://code.google.com/p/retlang/)\\[Erlang](http://www.erlang.org/) - [F#](http://research.microsoft.com/fsharp/) - [Pex](http://research.microsoft.com/Pex/) (when it comes out) - WCF\\WPF in depth ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Nov 15, 2007 ### [\[Security\] Microsoft unveils Code Protection suite of tools](https://osherove.com/blog/2007/11/15/security-microsoft-unveils-code-protection-suite-of-tools.html) - Nov 15, 2007 ### [Free MS Press books for a 5 minute screencast](https://osherove.com/blog/2007/11/15/free-ms-press-books-for-a-5-minute-screencast.html) - Oct 23, 2007 ### [Dave Platt In Israel - CAB Fans Prepare yourself](https://osherove.com/blog/2007/10/23/dave-platt-in-israel-cab-fans-prepare-yourself.html) - Oct 21, 2007 ### [The ALT.NET Mailing list is a great place to have a conversation](https://osherove.com/blog/2007/10/21/the-altnet-mailing-list-is-a-great-place-to-have-a-conversat.html) --- title: "Gmail does IMAP" url: "https://osherove.com/blog/2007/10/26/gmail-does-imap.md" canonical: "https://osherove.com/blog/2007/10/26/gmail-does-imap.html" published: "2007-10-26T15:23:15" updated: "2007-10-26T15:23:15" tags: [] author: "Roy Osherove" description: "It's finally here: IMAP ( better than POP ) Access from Gmail and Google Apps for Domains:" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Gmail does IMAP By Roy Osherove October 26, 2007 **Historical article** · Originally published October 26, 2007; technical details may be outdated. It's finally here: IMAP ([better than POP](http://www.ust.hk/itsc/email/tips/imap-or-pop.html)) Access from Gmail and Google Apps for Domains: ![image](https://osherove.com/img/wb/7066923e_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_GmaildoesIMAP_148D6_image_thumb.png) --- title: "Trading Places" url: "https://osherove.com/blog/2007/10/25/trading-places.md" canonical: "https://osherove.com/blog/2007/10/25/trading-places.html" published: "2007-10-25T18:04:38" updated: "2007-10-25T18:04:38" tags: ["Off Topic"] author: "Roy Osherove" description: "You may have heard rumors about me. They're all true, but this one is a new one, and it's true as well. I'll be leaving my place at SELA group on January. It was a great time being there and I learned a lot ,but I feel…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Trading Places By Roy Osherove October 25, 2007 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 25, 2007; technical details may be outdated. You may have heard rumors about me. They're all true, but this one is a new one, and it's true as well. I'll be leaving my place at [SELA group](http://www.sela.co.il/) on January. It was a great time being there and I learned a lot ,but I feel that I need to do different things and get my hands dirty more as part of my job. That why I've also finished my current work at [Mainsoft](http://www.mainsoft.com/) (I had a contract there for 4 months). **What will I do?** I'm not sure yet. I'm considering a lot of interesting ideas to do with my time. If you think you have a great place that I could fit into with my knowledge areas (or even something I don't know that much about but could learn) I'm always interested in listening. **possible things I'm considering:** \- get to have enough time to finish my [never ending story](http://the.artofunittesting.com/) while still having a good job \- Join forces with a company I've known for a long time and love their products \- Join forces with old friends who do consulting gigs \- stay on my own (as I did before SELA) \- Go abroad and live there for a year or two with my wife and kid - adventures is a thing I never regret. \- Open my own startup - I have a great idea. Could be a great adventure. \- Find a great company with a great agile team I can be part of \- Be a CTO in some company that would pay me well and let me do my own thing after hours (yes I have a big ego, but an offer like this is on the table..) \- Maybe you have a place I could fit into? (I don't have a US Work Visa, nor a degree - So if you're there you'll have to help me get a visa to work there...) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 17, 2008 ### [\[very off topic\] I can haz a site](https://osherove.com/blog/2008/1/17/very-off-topic-i-can-haz-a-site.html) - Jan 1, 2008 ### [New Computer Smell](https://osherove.com/blog/2008/1/1/new-computer-smell.html) - Oct 12, 2007 ### [Google Mail For Domains Premium just got bigger storage](https://osherove.com/blog/2007/10/12/google-mail-for-domains-premium-just-got-bigger-storage.html) - Aug 22, 2007 ### [World's Funniest Youtube Video](https://osherove.com/blog/2007/8/22/worlds-funniest-youtube-video.html) --- title: "What's IoC good for, Really?" url: "https://osherove.com/blog/2007/10/25/whats-ioc-good-for-really.md" canonical: "https://osherove.com/blog/2007/10/25/whats-ioc-good-for-really.html" published: "2007-10-25T05:12:51" updated: "2007-10-25T05:12:51" tags: [".NET", ".Net 2.0", "Architecture", "altnet", "altnetconf"] author: "Roy Osherove" description: "Oren has one of the best one liners about the benefits of Inversion Of Control Containers in a project in this post : \"Other people on my team keep adding components, and they aren't even aware that they have IoC there.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What's IoC good for, Really? By Roy Osherove October 25, 2007 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Architecture](https://osherove.com/blog/category/architecture), [altnet](https://osherove.com/blog/category/altnet), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published October 25, 2007; technical details may be outdated. Oren has one of the best one liners about the benefits of [Inversion Of Control](http://martinfowler.com/articles/injection.html) Containers in a project [in this post](http://www.ayende.com/Blog/archive/2007/10/20/Dependency-Injection-doesnt-cut-it-anymore.aspx): "Other people on my team keep adding components, and they aren't even aware that they have IoC there. **They just know that if they put the IFooService in the ctor, they will get it when the code is running**. And if they add IBarService and BarServiceImpl, they will be available to any component that uses them." [Here's a quick "Getting Started"](http://castleproject.org/container/gettingstarted/part1/index.html) if you've never seen this before, using the Castle Windsor Container Framework for .NET. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 15, 2007 ### [Free MS Press books for a 5 minute screencast](https://osherove.com/blog/2007/11/15/free-ms-press-books-for-a-5-minute-screencast.html) - Nov 14, 2007 ### [Cool demo of Visual Web GUI](https://osherove.com/blog/2007/11/14/cool-demo-of-visual-web-gui.html) - Oct 23, 2007 ### [Dave Platt In Israel - CAB Fans Prepare yourself](https://osherove.com/blog/2007/10/23/dave-platt-in-israel-cab-fans-prepare-yourself.html) - Oct 21, 2007 ### [The ALT.NET Mailing list is a great place to have a conversation](https://osherove.com/blog/2007/10/21/the-altnet-mailing-list-is-a-great-place-to-have-a-conversat.html) --- title: "Dave Platt In Israel - CAB Fans Prepare yourself" url: "https://osherove.com/blog/2007/10/23/dave-platt-in-israel-cab-fans-prepare-yourself.md" canonical: "https://osherove.com/blog/2007/10/23/dave-platt-in-israel-cab-fans-prepare-yourself.html" published: "2007-10-23T02:09:01" updated: "2007-10-23T02:09:01" tags: [".NET", ".Net 2.0", "C#", "General Software Devel..."] author: "Roy Osherove" description: "Dave Platt just pinged me to tell me that he'll be doing a 4 day Composite Application Block Workshop over at Idag in Israel . Dave is seriously one of the funniest and most knowledgeable speakers I've met (got to meet…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Dave Platt In Israel - CAB Fans Prepare yourself By Roy Osherove October 23, 2007 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [C#](https://osherove.com/blog/category/c), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published October 23, 2007; technical details may be outdated. ![image](https://osherove.com/img/wb/p.net_blogs_rosherove_WindowsLiveWriter_DavePlattInIsraelCABFansPrepareyourself_8E96_image_thumb.png) Dave Platt just pinged me to tell me that he'll be doing a [4 day Composite Application Block Workshop](http://www.rollthunder.com/DotNetTraining/CABPublicSyllabus.htm) over at [Idag in Israel](http://www.idag.co.il/About/HotNews200709.htm). Dave is seriously one of the funniest and most knowledgeable speakers I've met (got to meet him a couple of years back when he was Speaking at TechEd Europe). He wanted me to help pass on the word about his course, and since I know this guy to be pretty darn good at what he does, I have no problem saying that this should be an interesting course to go to (if you can spring out your wallet, that it..) Tell them Roy Sent you. Oh, you should be interested in a couple of books he's written:

Programming Microsoft Composite UI Application Block and Smart Client Software Factory (Pro-Best Practices)


Why Software Sucks...and What You Can Do About It

While you're at it, here are a couple of good resources to learn about the Composite UI application block and the next version named "Acropolis": You should check the Acropolis team blog [http://blogs.msdn.com/acropolis/default.aspx](http://blogs.msdn.com/acropolis/default.aspx) and Glen Block’s blog at [http://blogs.msdn.com/gblock/](http://blogs.msdn.com/gblock/) [ ](https://www.amazon.com/exec/obidos/ASIN/0735624143/iserializable-20) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 14, 2007 ### [Cool demo of Visual Web GUI](https://osherove.com/blog/2007/11/14/cool-demo-of-visual-web-gui.html) - Oct 25, 2007 ### [What's IoC good for, Really?](https://osherove.com/blog/2007/10/25/whats-ioc-good-for-really.html) - Oct 21, 2007 ### [The ALT.NET Mailing list is a great place to have a conversation](https://osherove.com/blog/2007/10/21/the-altnet-mailing-list-is-a-great-place-to-have-a-conversat.html) - Oct 8, 2007 ### [ALT.NET - Rule of Tool Composition](https://osherove.com/blog/2007/10/8/altnet-rule-of-tool-composition.html) --- title: "The ALT.NET Mailing list is a great place to have a conversation" url: "https://osherove.com/blog/2007/10/21/the-altnet-mailing-list-is-a-great-place-to-have-a-conversat.md" canonical: "https://osherove.com/blog/2007/10/21/the-altnet-mailing-list-is-a-great-place-to-have-a-conversat.html" published: "2007-10-21T12:52:49" updated: "2007-10-21T12:52:49" tags: [".NET", "General Software Devel...", "altnet", "altnetconf"] author: "Roy Osherove" description: "This is how much conversation there is on the ALT.NET Mailing list in the past couple of days: Very good content, great people. It's been a while since I've had a list keep me so busy so long." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The ALT.NET Mailing list is a great place to have a conversation By Roy Osherove October 21, 2007 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [altnet](https://osherove.com/blog/category/altnet), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published October 21, 2007; technical details may be outdated. This is how much conversation there is on [the ALT.NET Mailing](http://tech.groups.yahoo.com/group/altnetconf/) list in the past couple of days: ![image](https://osherove.com/img/wb/net_blogs_rosherove_WindowsLiveWriter_The.NETMailinglistisagreatplacetohaveaco_12592_image_thumb.png) Very good content, great people. It's been a while since I've had a list keep me so busy so long. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 25, 2007 ### [What's IoC good for, Really?](https://osherove.com/blog/2007/10/25/whats-ioc-good-for-really.html) - Oct 23, 2007 ### [Dave Platt In Israel - CAB Fans Prepare yourself](https://osherove.com/blog/2007/10/23/dave-platt-in-israel-cab-fans-prepare-yourself.html) - Oct 8, 2007 ### [ALT.NET - Rule of Tool Composition](https://osherove.com/blog/2007/10/8/altnet-rule-of-tool-composition.html) - Oct 6, 2007 ### [Microsoft gets Design For Testability with new MVC framework for ASP.NET- Finally.](https://osherove.com/blog/2007/10/6/microsoft-gets-design-for-testability-with-new-mvc-framework.html) --- title: "Organization Problems - Sounds Familiar?" url: "https://osherove.com/blog/2007/10/18/organization-problems-sounds-familiar.md" canonical: "https://osherove.com/blog/2007/10/18/organization-problems-sounds-familiar.html" published: "2007-10-18T07:08:03" updated: "2007-10-18T07:08:03" tags: ["Agile", "General Software Devel...", "altnet", "altnetconf"] author: "Roy Osherove" description: "I just finished a summary of a company's review about work modes and problems before we can start doing something about it. I'm posting part of it as anonymous because I think this seems to relate to many other…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Organization Problems - Sounds Familiar? By Roy Osherove October 18, 2007 In [Agile](https://osherove.com/blog/category/agile), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [altnet](https://osherove.com/blog/category/altnet), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published October 18, 2007; technical details may be outdated. I just finished a summary of a company's review about work modes and problems before we can start doing something about it. I'm posting part of it as anonymous because I think this seems to relate to many other companies out there: > "**The QA Department** seems to be the main gripe of most of the departments in the company. The main issues are of it being staffed with personnel who does not really understand the application aspects of what they are testing, and so don’t really know **what** to test in the application. Another main issue is the lack of knowledge about proper QA methods. Each QA department seems to be reinventing the wheel and creating its own methods. This also leads to the face that most tests are not automated and most tests don’t even get repeated for regressions after each release, which leads to an overall lower quality in the product. > > ... > > **The Marketing division** seems to be a large source of problems. Most of these come from the fact that Marketing people also serve as Product Managers in the company (Those who should be truly representing the client’s real needs), setting feature priorities and agenda for the next release with ultimate decision power. Because there is a conflict of interest between the role of marketing and role of Product manager, many of the things that are requested from other departments such as Customer Support are considered haphazardly if at all, which leads to a product that contains features a real customer might not need, but misses features the customer really does need. Add in a true product manager role into the company can help alleviate many of these issues as well as the partial amount of time that marketing has of actually communicating with all relevant departments as a customer. > > ... > > **The X group** is highly motivated in implementing agile practices such as unit testing, and are suffering from lack of automation in the group, “islands” of knowledge and lack of code reviews. > > ... > > **Management** has a big role in creating the current conditions for problems. The lack of CTO, and the fact that the CEO is the one who is “acting CEO” lead to lack of real technical leadership (lack of time to handle things) and no clear “head” to turn to and get quick good answers. Management can help by supporting practices such as unit testing and automation and getting and hiring good people into the missing roles in the company (Product managers, CTO) and by allowing for real time extensions to projects that would like to implement them. > > ... > > Generally speaking, there are various “pain points” that currently prohibit the departments from either getting the full data they need, influence the current releases so they contain the correct feature set or be more productive in their work. A main example is the big confusion about the various issue management software: which is reported to be almost unusable and there is no clear sync between that and X and Y issue management software also used in the other departments. Also the fact that developers aren’t really aware of what the application is used for in the field leads to believe that more time spent with the customer can help. Overall many “small” things can make for a large difference in the organization’s ability to create quality software and get better communication between the departments more quickly. > > " ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Nov 21, 2007 ### [\[Songs\] Every Build You Break, Reflection](https://osherove.com/blog/2007/11/21/songs-every-build-you-break-reflection.html) - Nov 17, 2007 ### [Mocking LINQ Queries, Extension methods and Anonymous Types](https://osherove.com/blog/2007/11/17/mocking-linq-queries-extension-methods-and-anonymous-types.html) - Oct 12, 2007 ### [Four Resources to learn about BDD](https://osherove.com/blog/2007/10/12/four-resources-to-learn-about-bdd.html) - Oct 10, 2007 ### [Agile Dev Center on MSDN](https://osherove.com/blog/2007/10/10/agile-dev-center-on-msdn.html) --- title: "Unit Testing in VS 2008 - Still not there" url: "https://osherove.com/blog/2007/10/16/unit-testing-in-vs-2008-still-not-there.md" canonical: "https://osherove.com/blog/2007/10/16/unit-testing-in-vs-2008-still-not-there.html" published: "2007-10-16T19:34:21" updated: "2007-10-16T19:34:21" tags: ["Unit Testing"] author: "Roy Osherove" description: "I'm starting to take a look at VS 2008 and writing down some things that are still \"not there\": Renaming a class using the \"Rename\" refactoring still does not change the file name. Are you kidding me? using \"prop\"…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing in VS 2008 - Still not there By Roy Osherove October 16, 2007 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 16, 2007; technical details may be outdated. I'm starting to take a look at VS 2008 and writing down some things that are still "not there": - Renaming a class using the "Rename" refactoring **still** does not change the file name. Are you kidding me? - using "prop" snippet produces the shorthand syntax for properties. Nice. - This is still all the refactoring we have by default in VS 2008: ![image](https://osherove.com/img/wb/logs.asp.net_blogs_rosherove_WindowsLiveWriter_UnitTestinginVS2008Stillnotthere_322F_image_thumb.png) Are you kidding me? - You can finally do [test inheritance](http://blogs.msdn.com/nnaderi/archive/2007/05/11/new-unit-testing-features-in-orcas-part-1.aspx) (and many other small blessings. someone is listening) - You **Still** have to using anything that derives from Exception but not the "Exception" type in the "Expected Exception" attribute. Truly silly. - the \[ExpectedException\] attribute is still broken!! This test should fail due to a wrong exception message, but passes: ![image](https://osherove.com/img/wb/gs.asp.net_blogs_rosherove_WindowsLiveWriter_UnitTestinginVS2008Stillnotthere_322F_image_thumb_1.png) - No easy extensibility mechanism. - No ability to run NUnit tests. Someone is not paying enough attention, or has their priorities screwed up. ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Nov 28, 2007 ### [Data Layer Testing: Test Inheritance Patterns](https://osherove.com/blog/2007/11/28/data-layer-testing-test-inheritance-patterns.html) - Nov 17, 2007 ### [Mocking LINQ Queries, Extension methods and Anonymous Types](https://osherove.com/blog/2007/11/17/mocking-linq-queries-extension-methods-and-anonymous-types.html) - Oct 8, 2007 ### [The various meanings of TDD](https://osherove.com/blog/2007/10/8/the-various-meanings-of-tdd.html) - Sep 24, 2007 ### [Slides and Demos for My Talk: Testing Data Access Code Pragmatically](https://osherove.com/blog/2007/9/24/slides-and-demos-for-my-talk-testing-data-access-code-pragma.html) --- title: "Four Resources to learn about BDD" url: "https://osherove.com/blog/2007/10/12/four-resources-to-learn-about-bdd.md" canonical: "https://osherove.com/blog/2007/10/12/four-resources-to-learn-about-bdd.html" published: "2007-10-12T10:35:17" updated: "2007-10-12T10:35:17" tags: ["Agile"] author: "Roy Osherove" description: "Jason Meridth just posted this on the alt.NET list and I thought this shoudl be of general interest: \"The 4 best blogs that I read to continually try to grok BDD: Joe Ocampo http://blog.agilejoe.com Scott Bellware…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Four Resources to learn about BDD By Roy Osherove October 12, 2007 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published October 12, 2007; technical details may be outdated. [Jason Meridth](http://www.lostechies.com/blogs/jason_meridth/) just posted this on the alt.NET list and I thought this shoudl be of general interest: "The 4 best blogs that I read to continually try to grok BDD: Joe Ocampo [http://blog.agilejoe.com](http://blog.agilejoe.com/) Scott Bellware [http://www.codebetter.com/blogs/scott.bellware](http://www.codebetter.com/blogs/scott.bellware) Jimmy Bogard [http://grabbagoft.blogspot.com/](http://grabbagoft.blogspot.com/) Dan North [http://www.dannorth.net](http://www.dannorth.net/) and specifically for him: [http://dannorth.net/introducing-bdd](http://dannorth.net/introducing-bdd) " I find that BDD still means many things to many people, even more so than TDD since it can mean quite a fine line from what many call TDD. When I've gathered my thoughts more on this, I'll post what I think the various meanings are. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Nov 17, 2007 ### [Mocking LINQ Queries, Extension methods and Anonymous Types](https://osherove.com/blog/2007/11/17/mocking-linq-queries-extension-methods-and-anonymous-types.html) - Oct 18, 2007 ### [Organization Problems - Sounds Familiar?](https://osherove.com/blog/2007/10/18/organization-problems-sounds-familiar.html) - Oct 10, 2007 ### [Agile Dev Center on MSDN](https://osherove.com/blog/2007/10/10/agile-dev-center-on-msdn.html) - Oct 10, 2007 ### [Database and data layer testing techniques at ALT.NET - slides and code](https://osherove.com/blog/2007/10/10/database-and-data-layer-testing-techniques-at-altnet-slides.html) --- title: "Google Mail For Domains Premium just got bigger storage" url: "https://osherove.com/blog/2007/10/12/google-mail-for-domains-premium-just-got-bigger-storage.md" canonical: "https://osherove.com/blog/2007/10/12/google-mail-for-domains-premium-just-got-bigger-storage.html" published: "2007-10-12T10:31:55" updated: "2007-10-12T10:31:55" tags: ["Off Topic"] author: "Roy Osherove" description: "I was just checking my google apps for domains (I use a premium account which gives me 10Gigs of storage) and saw something interesting at the bottom of the page: Coolness." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Google Mail For Domains Premium just got bigger storage By Roy Osherove October 12, 2007 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 12, 2007; technical details may be outdated. I was just checking my google apps for domains (I use a premium account which gives me 10Gigs of storage) and saw something interesting at the bottom of the page: ![image](https://osherove.com/img/wb/t_blogs_rosherove_WindowsLiveWriter_GoogleMailForDomainsPremiumjustgotbigger_10494_image_thumb_1.png) Coolness. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 1, 2008 ### [New Computer Smell](https://osherove.com/blog/2008/1/1/new-computer-smell.html) - Oct 25, 2007 ### [Trading Places](https://osherove.com/blog/2007/10/25/trading-places.html) - Aug 22, 2007 ### [World's Funniest Youtube Video](https://osherove.com/blog/2007/8/22/worlds-funniest-youtube-video.html) - Aug 8, 2007 ### [10 Great Conference Talk Titles (and one that's just ok)](https://osherove.com/blog/2007/8/8/10-great-conference-talk-titles-and-one-thats-just-ok.html) --- title: "Agile Dev Center on MSDN" url: "https://osherove.com/blog/2007/10/10/agile-dev-center-on-msdn.md" canonical: "https://osherove.com/blog/2007/10/10/agile-dev-center-on-msdn.html" published: "2007-10-10T05:05:57" updated: "2007-10-10T05:05:57" tags: ["Agile"] author: "Roy Osherove" description: "Did you know that MSDN has an Agile Related dev center ? well, not really dev center, but its part of the architecture center (for some reason). I only learned that on the MSDN related session at ALT.NET. Freaky." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Dev Center on MSDN By Roy Osherove October 10, 2007 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published October 10, 2007; technical details may be outdated. Did you **know** that [MSDN has an Agile Related dev center](http://msdn2.microsoft.com/en-us/architecture/bb404166.aspx)? well, not really dev center, but its part of the architecture center (for some reason). I only learned that on the MSDN related session at ALT.NET. Freaky. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Oct 18, 2007 ### [Organization Problems - Sounds Familiar?](https://osherove.com/blog/2007/10/18/organization-problems-sounds-familiar.html) - Oct 12, 2007 ### [Four Resources to learn about BDD](https://osherove.com/blog/2007/10/12/four-resources-to-learn-about-bdd.html) - Oct 10, 2007 ### [Database and data layer testing techniques at ALT.NET - slides and code](https://osherove.com/blog/2007/10/10/database-and-data-layer-testing-techniques-at-altnet-slides.html) - Oct 8, 2007 ### [The various meanings of TDD](https://osherove.com/blog/2007/10/8/the-various-meanings-of-tdd.html) --- title: "ALT.NET == Pragmatic.NET" url: "https://osherove.com/blog/2007/10/10/altnet-pragmaticnet.md" canonical: "https://osherove.com/blog/2007/10/10/altnet-pragmaticnet.html" published: "2007-10-10T04:56:14" updated: "2007-10-10T04:56:14" tags: ["altnet"] author: "Roy Osherove" description: "During the ALT.NET conference people were clamoring for a different name simply because it creates lots of confusion and some people think it's divisive. I'm not sure about that, but I went ahead and proposed the name…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ALT.NET == Pragmatic.NET By Roy Osherove October 10, 2007 In [altnet](https://osherove.com/blog/category/altnet) **Historical article** · Originally published October 10, 2007; technical details may be outdated. During the [ALT.NET](http://altnetconf.com/) conference people were clamoring for a different name simply because it creates lots of confusion and some people think it's divisive. I'm not sure about that, but I went ahead and proposed the name Pragmatic.NET or Pragma.NET (PragmaNet?). In a sense this is the same idea behind the community, where you search for alternatives if you need to get better results, or compose an alternative solution from multiple tools. I don't think this name will stick because ALT.NET has already caught on. But maybe I'm wrong. BTW - if you'd like to join the ALT.NET yahoo mailing group: [here it is](http://tech.groups.yahoo.com/group/altnetconf/). ## More in altnet [All posts in altnet](https://osherove.com/blog/category/altnet) - Oct 21, 2007 ### [The ALT.NET Mailing list is a great place to have a conversation](https://osherove.com/blog/2007/10/21/the-altnet-mailing-list-is-a-great-place-to-have-a-conversat.html) - Oct 18, 2007 ### [Organization Problems - Sounds Familiar?](https://osherove.com/blog/2007/10/18/organization-problems-sounds-familiar.html) - Oct 10, 2007 ### [Database and data layer testing techniques at ALT.NET - slides and code](https://osherove.com/blog/2007/10/10/database-and-data-layer-testing-techniques-at-altnet-slides.html) - Oct 8, 2007 ### [ALT.NET - Rule of Tool Composition](https://osherove.com/blog/2007/10/8/altnet-rule-of-tool-composition.html) --- title: "Database and data layer testing techniques at ALT.NET - slides and code" url: "https://osherove.com/blog/2007/10/10/database-and-data-layer-testing-techniques-at-altnet-slides.md" canonical: "https://osherove.com/blog/2007/10/10/database-and-data-layer-testing-techniques-at-altnet-slides.html" published: "2007-10-10T04:39:36" updated: "2007-10-10T04:39:36" tags: ["Agile", "altnet", "altnetconf"] author: "Roy Osherove" description: "I contributed some material to the session about Database and data layer testing techniques at ALT.NET. The slides and code I used at ALT.NET are the same ones I used at DevTeach, so you can download them here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Database and data layer testing techniques at ALT.NET - slides and code By Roy Osherove October 10, 2007 In [Agile](https://osherove.com/blog/category/agile), [altnet](https://osherove.com/blog/category/altnet), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published October 10, 2007; technical details may be outdated. I contributed some material to the session about Database and data layer testing techniques at ALT.NET. The slides and code I used at ALT.NET are the same ones I used at DevTeach, so [you can download them here](http://weblogs.asp.net/rosherove/archive/2007/05/15/slides-and-demos-for-talk-techniques-for-testing-data-access-code.aspx). ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Oct 12, 2007 ### [Four Resources to learn about BDD](https://osherove.com/blog/2007/10/12/four-resources-to-learn-about-bdd.html) - Oct 10, 2007 ### [Agile Dev Center on MSDN](https://osherove.com/blog/2007/10/10/agile-dev-center-on-msdn.html) - Oct 8, 2007 ### [The various meanings of TDD](https://osherove.com/blog/2007/10/8/the-various-meanings-of-tdd.html) - Sep 27, 2007 ### [Things I learned at JAOO 2007](https://osherove.com/blog/2007/9/27/things-i-learned-at-jaoo-2007.html) --- title: "The various meanings of TDD" url: "https://osherove.com/blog/2007/10/8/the-various-meanings-of-tdd.md" canonical: "https://osherove.com/blog/2007/10/8/the-various-meanings-of-tdd.html" published: "2007-10-08T19:49:57" updated: "2007-10-08T19:49:57" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "Update : more on this here and here , and Jim has a whole article on this here . Now that I'm having some real time to write something I thought I'd try to write down my thoughts starting all the way back from JAOO and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The various meanings of TDD By Roy Osherove October 8, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 8, 2007; technical details may be outdated. **Update**: more on this [here](http://community.ative.dk/blogs/ative/archive/2007/09/28/the-tdd-controversy-jaoo-2007.aspx) and [here](http://sadekdrobi.com/category/jaoo/), and Jim has [a whole article on this here](http://www.artima.com/weblogs/viewpost.jsp?thread=216434). Now that I'm having some real time to write something I thought I'd try to write down my thoughts starting all the way back from [JAOO and what I learned from it.](http://weblogs.asp.net/rosherove/archive/2007/09/27/things-i-learned-at-jaoo-2007.aspx) Specifically the whole notion of TDD, and what does TDD mean to different people. "TDD will deteriorate your design". that was the sentence I heard coming out from the mouth of [Jim Coplien](http://www.rcn.com/users/jcoplien/), a speaker at JAOO and a well respected guru in the software industry in many levels. I tried to grasp what he was saying again, so I repeated the sentence in my head. "TDD will deteriorate your design, so don't do it". Yes. I heard correctly.  It was lined throughout the discussion Jim was having about Scrum and Architecture and was just one small point he made which he didn't even take the time to review fully. "Will deteriorate your design" and then nothing. Someone from the crowd of about 400 challenged him and Jim was starting to quote a couple of research papers which I don't have a link to so I have not read them.  Jim was kind enough to leave a comment on my [previous post](http://weblogs.asp.net/rosherove/archive/2007/09/27/things-i-learned-at-jaoo-2007.aspx) about JAOO but that did not include any links to those research papers. Could anyone leave a comment here with a link to them? When Jim walked out of the hall I started talking to him for what ended up to be about 40 minutes of intense rhetorical debate of what does TDD really mean and then what benefit if at all does it have. I'll weave points from that in but first I need to say that I realized something: TDD is not a clear enough concept so people see it in different light depending on who you ask. **What are the possible meanings of TDD?** - **1) Test Driven** Development: the idea of writing your code in a **test first** manner. You may already have an existing design in place. - **2) Test Oriented** Development: Having unit tests of integration tests in your code and write them out either before or after our write the code. Your code has lots of tests. You recognize the value of tests but you don't necessarily write them before you write the code. Design probably exists before you write the code - **3)** Test Driven **Design(**the eXtreme Programming way):  The idea of using a test-first approach as a fully fledged design technique, where tests are a bonus but the idea is to drive full design from **little to no design** whatsoever. You design as you go. - **4)** Test Driven **Development and Design**: using the test-first technique to drive new code and changes, while also allowing it to change and evolve your design as an added bonus. You may already have some design in place before starting to code, but it could very well change because the tests point out various smells. It's important to realize the distinction between these four perceived notions of what TDD could mean because when Jim said "don't do TDD" he meant one of these. Unfortunately he didn't really explain which one he meant (maybe he hadn't realized they exist) so the message he gave out was essentially "Whatever you think TDD is, don't do it". Which of these notions corresponds to what you think TDD is? which do you think I would choose? From my conversations with Jim it would seem that he think about TDD as option number 3 - Test Driven Design. He was saying that if you do it the XP was where you let the tests drive all of your architecture you're bound to get into trouble so leave it alone. I'm leaving the argument of whether pure test driven design works or not  for later. Right now I want to make sure we're all on the same line. **If you're going to say TDD doesn't work - explain what you mean by TDD** or be prepared to be bombarded with questions which you may feel have no connection with what you're talking about.   My notion of TDD is #4 - Test Driven development which can also help evolve and better your design. I always start with some sort of design, even a basic one. Sometimes so basic it's all in my head or on a whiteboard, but there's some skeleton there I use to guide me. I also let it change if my tests point out that there might be some testability problem here and there. I'm not saying pure Test Driven Design does not work. I'm sure it works for people, and I'm sure if failed others. **The Alpha Architect and Test Driven Design** One interesting thing that came up in that conversation (which many people assembled and chipped in with their on thoughts in) was the idea of the "Alpha Architect". There seemed to be agreement that the people who can do pure test driven design (like [Ron Jefferies](http://www.xprogramming.com/Blog/Page.aspx?display=HotNeedleOfInquiry)) probably already hold all the design they need in their head, so they don't get why other people can't do the same thing. These "Alpha Architects" are pretty unique and perhaps live in some sort of bubble where things like TDDesign feel much easier and simpler.  I'm not sure that's the case but I can understand the idea and willing to agree that it's possible. So, is Test Driven Design only good for teams with Alpha Architects in them? not sure, but it's a question worth asking. **So, is TDD Bad?** Are the rest of the notions of TDD bad? In our talks Jim agreed that unit tests or integration tests might not be a bad idea after all as long as they don't kill your design. When he said "but I was saying TDD kills design I said it because that's what people think TDD is!". The only reply to that is that by telling them that you are only reinforcing their belief that they know what TDD is, and not even questioning their assumption (or yours) that it could be a good thing. I think that TDDAD(Development and Design) is a good thing. I'd love for my assumptions to be challenged. I'm still waiting to get the links to the two research articles mentioned. your comments are appreciated. _possible topics for the future posts:_ - _Things I realized about XUnit from talking to Brad and Jim_ - _BDD vagueness and tooling_ - _Ruby coolness_ - _The ALT.NET Conference roundup_ ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Oct 10, 2007 ### [Agile Dev Center on MSDN](https://osherove.com/blog/2007/10/10/agile-dev-center-on-msdn.html) - Oct 10, 2007 ### [Database and data layer testing techniques at ALT.NET - slides and code](https://osherove.com/blog/2007/10/10/database-and-data-layer-testing-techniques-at-altnet-slides.html) - Sep 27, 2007 ### [Things I learned at JAOO 2007](https://osherove.com/blog/2007/9/27/things-i-learned-at-jaoo-2007.html) - Sep 26, 2007 ### [The Art Of Unit Testing - Available to Purchase Online Now](https://osherove.com/blog/2007/9/26/the-art-of-unit-testing-available-to-purchase-online-now.html) --- title: "ALT.NET - Rule of Tool Composition" url: "https://osherove.com/blog/2007/10/8/altnet-rule-of-tool-composition.md" canonical: "https://osherove.com/blog/2007/10/8/altnet-rule-of-tool-composition.html" published: "2007-10-08T19:02:36" updated: "2007-10-08T19:02:36" tags: [".NET", ".Net 2.0", "General Software Devel...", "altnet", "altnetconf"] author: "Roy Osherove" description: "There is much discussion about What ALT.NET really stands for. Most of the things discussed were very \"fluffy\" in their description and mostly meant some state of mind and openness. Here's another possible explanation:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ALT.NET - Rule of Tool Composition By Roy Osherove October 8, 2007 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [altnet](https://osherove.com/blog/category/altnet), [altnetconf](https://osherove.com/blog/category/altnetconf) **Historical article** · Originally published October 8, 2007; technical details may be outdated. There is much discussion about What [ALT.NET](http://www.altnetconf.com/) really stands for. Most of the things discussed were very "fluffy" in their description and mostly meant some state of mind and openness. Here's another possible explanation: We are uncovering better ways to develop software as Microsoft oriented developers: **The Rule of Composition** - Compose your development tool set with just enough tools to make your job easier - Always check to see if you can enhance your productivity, quality of work or confidence in your work by adding to or replacing a tool your are working with. - Tools are not an end. they are a means to an end. - Languages can also be considered as tools - Do not stay still in your knowledge. In the end, a composition of tools can provide a better X for you or your team where X could mean: - Maintainability - Quality - Readability - Confidence - understanding - productivity - Communication De-Composition can also lead to a better X. Removing a tool that prevents you from doing your job or replacing it is advisable if you feel that is what's needed. In  any case, always challenge your assumptions about how productive, confident or good your are as a coder. Reach out and read, learn and try other options. Tools can also be frameworks, plugins, languages, knowledge, patterns and approaches to existing problems. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 23, 2007 ### [Dave Platt In Israel - CAB Fans Prepare yourself](https://osherove.com/blog/2007/10/23/dave-platt-in-israel-cab-fans-prepare-yourself.html) - Oct 21, 2007 ### [The ALT.NET Mailing list is a great place to have a conversation](https://osherove.com/blog/2007/10/21/the-altnet-mailing-list-is-a-great-place-to-have-a-conversat.html) - Oct 6, 2007 ### [Microsoft gets Design For Testability with new MVC framework for ASP.NET- Finally.](https://osherove.com/blog/2007/10/6/microsoft-gets-design-for-testability-with-new-mvc-framework.html) - Sep 27, 2007 ### [Pimp My Visual Studio](https://osherove.com/blog/2007/9/27/pimp-my-visual-studio.html) --- title: "Microsoft gets Design For Testability with new MVC framework for ASP.NET- Finally." url: "https://osherove.com/blog/2007/10/6/microsoft-gets-design-for-testability-with-new-mvc-framework.md" canonical: "https://osherove.com/blog/2007/10/6/microsoft-gets-design-for-testability-with-new-mvc-framework.html" published: "2007-10-06T18:53:33" updated: "2007-10-06T18:53:33" tags: [".NET", ".Net 2.0", "ASP.NET", "General Software Devel..."] author: "Roy Osherove" description: "The big news out of the ALT.NET Conference so far are from Scott Guthrie , who did a full hour on introducing the new MVP Framework for ASP.NET. My take away - finally they get it. I wish there were more guthries out…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft gets Design For Testability with new MVC framework for ASP.NET- Finally. By Roy Osherove October 6, 2007 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [ASP.NET](https://osherove.com/blog/category/asp-net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published October 6, 2007; technical details may be outdated. The big news out of the [ALT.NET Conference](http://www.altnetconf.com/) so far are from [Scott Guthrie](http://weblogs.asp.net/scottgu/), who did a full hour on introducing the new MVP Framework for ASP.NET. My take away - finally they get it. I wish there were more guthries out there in the b0rg. The framework if built and designed with testability in mind, which also means it is extensible and pluggable. It could well be a MonoRail killer and the semantics are very easy to use and understand.  Jeffery has more [technical info on it here](http://codebetter.com/blogs/jeffrey.palermo/archive/2007/10/05/altnetconf-scott-guthrie-announces-asp-net-mvc-framework-at-alt-net-conf.aspx). It also allows plugging in existing Dependency injection frameworks like Spring and Windsor and there are interfaces for all the important objects that present dependencies (Request, response etc..). he even showed unit tests with Nunit that ran against controllers. I like it. I was secretly thinking of asking whether people from the P&P team helped with this, but didn't. I later found out that indeed, a couple of P7P guys helped with the design. that makes me happy because it means things may be starting to change for the better in way of testability and listneing to the community. This is the best conference I've ever been to.  I'll have a full post on it later. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 21, 2007 ### [The ALT.NET Mailing list is a great place to have a conversation](https://osherove.com/blog/2007/10/21/the-altnet-mailing-list-is-a-great-place-to-have-a-conversat.html) - Oct 8, 2007 ### [ALT.NET - Rule of Tool Composition](https://osherove.com/blog/2007/10/8/altnet-rule-of-tool-composition.html) - Sep 27, 2007 ### [Pimp My Visual Studio](https://osherove.com/blog/2007/9/27/pimp-my-visual-studio.html) - Sep 17, 2007 ### [Synchronize Team System and ClearCase with the TFS Migration & Synchronization Tool](https://osherove.com/blog/2007/9/17/synchronize-team-system-and-clearcase-with-the-tfs-migration.html) --- title: "Pimp My Visual Studio" url: "https://osherove.com/blog/2007/9/27/pimp-my-visual-studio.md" canonical: "https://osherove.com/blog/2007/9/27/pimp-my-visual-studio.html" published: "2007-09-27T18:47:13" updated: "2007-09-27T18:47:13" tags: [".NET", ".Net 2.0", "Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "I'll have to check out this list of things to make a Visual Studio Usable system (that is, what you should really install after you have Visual Studio installed to make you more productive). Basic stuff like unit…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Pimp My Visual Studio By Roy Osherove September 27, 2007 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published September 27, 2007; technical details may be outdated. ![image](https://osherove.com/img/wb/4bcadc20_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_PimpMyVisualStudio_272D_image_thumb_1.png) I'll have to check out [this list of things](http://www.dotnetjunkies.com/WebLog/mlorengo/archive/2007/02/21/200057.aspx) to make a Visual Studio Usable system (that is, what you should really install after you have Visual Studio installed to make you more productive). Basic stuff like unit testing frameworks is there but also lots of possible extensions and addins you can use. Bookmarked. Did I miss it or is Resharper not there? I guess he only lists free stuff. that's also cool. _\[via_ [_David_](http://www.geekzone.co.nz/dmw/3414)_\]_ ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 8, 2007 ### [ALT.NET - Rule of Tool Composition](https://osherove.com/blog/2007/10/8/altnet-rule-of-tool-composition.html) - Oct 6, 2007 ### [Microsoft gets Design For Testability with new MVC framework for ASP.NET- Finally.](https://osherove.com/blog/2007/10/6/microsoft-gets-design-for-testability-with-new-mvc-framework.html) - Sep 17, 2007 ### [Synchronize Team System and ClearCase with the TFS Migration & Synchronization Tool](https://osherove.com/blog/2007/9/17/synchronize-team-system-and-clearcase-with-the-tfs-migration.html) - Aug 23, 2007 ### [Ask An ASP.NET Expert Live](https://osherove.com/blog/2007/8/23/ask-an-aspnet-expert-live.html) --- title: "Things I learned at JAOO 2007" url: "https://osherove.com/blog/2007/9/27/things-i-learned-at-jaoo-2007.md" canonical: "https://osherove.com/blog/2007/9/27/things-i-learned-at-jaoo-2007.html" published: "2007-09-27T05:37:57" updated: "2007-09-27T05:37:57" tags: ["Agile", "Agile Related", "CLR", "Community News", "General Software Devel..."] author: "Roy Osherove" description: "Martin Fowler may be one of the great minds of our engineering age, but his accent sounds a lot like MR. Bean. He's also not a great social figure and also sems to speak when spoken to. Eccentric. Robert C. Martin is a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Things I learned at JAOO 2007 By Roy Osherove September 27, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [CLR](https://osherove.com/blog/category/clr), [Community News](https://osherove.com/blog/category/community-news), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published September 27, 2007; technical details may be outdated. **[![image](https://osherove.com/img/wb/84e90ae_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_ThingsIlearnedatJAOO2007_117FF_image_1.png)](http://jaoo.dk/)** 1. **[Martin Fowler](http://www.martinfowler.com/)** may be one of the great minds of our engineering age, but his accent sounds a lot like MR. Bean. He's also not a great social figure and also sems to speak when spoken to. Eccentric. 2. **[Robert C. Martin](http://www.objectmentor.com/omTeam/martin_r.html)** is a good Drummer. He played the drums for me while I was doing some of my songs at the first ever JAOO Jam Session.  He's also working on a new book called "Clean Code". I suggested he might want to take a look at **[Code Craft](https://www.amazon.com/exec/obidos/ASIN/1593271190/iserializable-20)** so that he has some differentiators from it. I still don't get why people call him uncle bob, but he says a friend of his called him that once and it stuck. From now on just call me Uncle Roy. 3. **[Jim Coplien](http://users.rcn.com/jcoplien/)** seems to bring out the worst in me. In his session about Scrum and Architecture he publicly denounced TDD and said (quoting) "TDD will deteriorate your architecture" and spoke loudly against using it. Him outspokenness seems to have hit me where it hurts because it led to a full hour of me and him going at each other outside the lecture hall with people gathering around as if it was a boxing match. The day after that I decided to go to the Open Spaces sessions at JAOO and open up a new topic called "TDD+Scrum=Good?". about 12 people showed up and Jim was one of them. For more than an hour we all exchanged ideas and some back and forth took place (lots of banter). I'll have a whole separate post about this discussion later on. The bottom line is - TDD can be misunderstood which can lead to people saying "don't use it" which can lead to people actually listening to this very bad advice which can lead to world chaos and the eventual death of the world. So don't listen to Jim. 4. **[Mark Polack](http://www.interface21.com/people/mpollack.html)** is a great guy to talk to and is the main driving force behind [Spring.NET](http://www.springframework.net/). Spring.NET is much more powerful than I initially thought. He's working hard on V 1.1 of that these days. He did a session on Spring.NET at JAOO. He doesn't blog enough. In fact, I can't even find his blog. 5. **[Hamilton Verissimo](http://hammett.castleproject.org/)** is the main force behind the [Castle Project](http://castleproject.org/) and is a very smart and shy person. he also is a good listener and thinks twice before saying anything. I would love to talk to him more but I always fear I will say the wrong thing next to him (he feels so polite!). He's the opposite of the Israeli state of mind. 6. The Danish crowed is just as quite and polite as the Tech-Ed Europe crowd or the DevDays Belgium Crowd. 7. I really like the voting system on the sessions. As you leave you get the choice of taking a yellow, green or red note. you pick one and drop it in a big bucket as you leave the room. then they count the reds greens and yellows. very agile although I suspect they may be missing some important specific feedback this way. 8. A Guitar that starts out with you as flight baggage will not necessarily find its way through 3 connection flights. It may arrive 3 days later as you prepare to leave back home. 9. There are some great people at JAOO and I got to play with some of them at the JAM session. great idea! 10. Free wi-fi in your hotel room will allow you to run [utorrent](http://www.utorrent.vom/) so that when you leave back home you will have downloaded lots of nice TV shows to view on the place ride back home. 11. **[Erlang](http://www.erlang.org/)** is making a comeback. It's been there 20 years mainly used by the telecom industry for parallel high volume stuff. now it's the talk of the conference as the answer to multi-core and scalable application programming. I don't remember who told me this nice sentence but it went like this: "I guess its true what they say. Everything has already been invented 20 years ago". true. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Oct 10, 2007 ### [Database and data layer testing techniques at ALT.NET - slides and code](https://osherove.com/blog/2007/10/10/database-and-data-layer-testing-techniques-at-altnet-slides.html) - Oct 8, 2007 ### [The various meanings of TDD](https://osherove.com/blog/2007/10/8/the-various-meanings-of-tdd.html) - Sep 26, 2007 ### [The Art Of Unit Testing - Available to Purchase Online Now](https://osherove.com/blog/2007/9/26/the-art-of-unit-testing-available-to-purchase-online-now.html) - Sep 24, 2007 ### [Slides and Demos for My Talk: Testing Data Access Code Pragmatically](https://osherove.com/blog/2007/9/24/slides-and-demos-for-my-talk-testing-data-access-code-pragma.html) --- title: "The Art Of Unit Testing - Available to Purchase Online Now" url: "https://osherove.com/blog/2007/9/26/the-art-of-unit-testing-available-to-purchase-online-now.md" canonical: "https://osherove.com/blog/2007/9/26/the-art-of-unit-testing-available-to-purchase-online-now.html" published: "2007-09-26T09:49:42" updated: "2007-09-26T09:49:42" tags: ["Agile", "Agile Related", "Community News", "Free book chapters", "General Software Devel...", "Testing Guidelines"] author: "Roy Osherove" description: "I'm happy to announce that you can now purchase my book The Art Of Unit Testing through the Manning Early Access Program. Currently, the first five chapters are available, but when you purchase the MEAP version you get…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Art Of Unit Testing - Available to Purchase Online Now By Roy Osherove September 26, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Community News](https://osherove.com/blog/category/community-news), [Free book chapters](https://osherove.com/blog/category/free-book-chapters), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published September 26, 2007; technical details may be outdated. [![image](https://osherove.com/img/wb/.asp.net_blogs_rosherove_WindowsLiveWriter_TheArtOfUnitTestingAvailabletoPurchaseOn_FAB2_image_1.png)](http://www.manning.com/affiliate/idevaffiliate.php?id=462_91) I'm happy to announce that you can now purchase my book [The Art Of Unit Testing](http://www.manning.com/affiliate/idevaffiliate.php?id=462_91) through the Manning Early Access Program. Currently, the first five chapters are available, but when you purchase the MEAP version you get the new chapters as they come in, before anyone else. Also, you can help make the book better and more accurate as a MEAP reader since the author forum can be used to discuss book topics you find interesting and I will be reading it at least twice a week (hopefully daily). (If you plan on purchasing it or sending this to someone else, [please use this special affiliate link](http://www.manning.com/affiliate/idevaffiliate.php?id=462_91) so that I can know how many transactions occurred as well as generate a few dollars on every sale through the MEAP program) - **What's with the ugly cover art?** I'm working on it. We had to have something to start putting this online. The final print will have something which I can actually stand behind. - What are the first five chapters about? The way I see it, the book is divided into several parts. the first part (chapters 1-5) are about the basic tools you need to know to start writing unit tests in the real world. Everything from working with NUnit and the basic attributes of unit tests, and up to using fake, stub and Mock objects. There is also quite a full reference for using the Rhino.Mocks framework. The idea is that you can take someone with no unit testing experience whatsoever in .NET, and have them read those five chapters. then they have the basic knowledge to actually know what you're talking about when you say "Mocks" or "integration testing". They may even be able to write some real world tests using these chapters, even interaction tests. **Part I Getting started**  **1.** [The basics of unit testing](http://www.manning-source.com/books/osherove/osherove_meapch1.pdf) - FREE  **2.** The first unit test - AVAILABLE **Part II Core techniques**  **3.** Using Stubs to break dependencies - AVAILABLE  **4.** Interaction testing Using Mock Objects - AVAILABLE  **5.** Mock Object frameworks - AVAILABLE ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Oct 8, 2007 ### [The various meanings of TDD](https://osherove.com/blog/2007/10/8/the-various-meanings-of-tdd.html) - Sep 27, 2007 ### [Things I learned at JAOO 2007](https://osherove.com/blog/2007/9/27/things-i-learned-at-jaoo-2007.html) - Sep 24, 2007 ### [Slides and Demos for My Talk: Testing Data Access Code Pragmatically](https://osherove.com/blog/2007/9/24/slides-and-demos-for-my-talk-testing-data-access-code-pragma.html) - Sep 22, 2007 ### [Code-Reuse in unit tests is more important than you think](https://osherove.com/blog/2007/9/22/code-reuse-in-unit-tests-is-more-important-than-you-think.html) --- title: "Slides and Demos for My Talk: Testing Data Access Code Pragmatically" url: "https://osherove.com/blog/2007/9/24/slides-and-demos-for-my-talk-testing-data-access-code-pragma.md" canonical: "https://osherove.com/blog/2007/9/24/slides-and-demos-for-my-talk-testing-data-access-code-pragma.html" published: "2007-09-24T11:01:41" updated: "2007-09-24T11:01:41" tags: ["Agile", "Agile Related", "Unit Testing"] author: "Roy Osherove" description: "You can download the slides and demos for my talk at Jaoo here: Talk: Testing Data Access Code Pragmatically Slides Code My guitar didn't make it through the flights over here, so someone was kind enough to lend me…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Slides and Demos for My Talk: Testing Data Access Code Pragmatically By Roy Osherove September 24, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 24, 2007; technical details may be outdated. You can download the slides and demos for my talk at [Jaoo](http://jaoo.dk/conference/) here: **Talk: Testing Data Access Code Pragmatically** - [Slides](http://files.osherove.com/downloads/jaoo_data_ppt.zip) - [Code](http://files.osherove.com/downloads/jaoo.Data.Demos.zip) My guitar didn't make it through the flights over here, so someone was kind enough to lend me their personal guitar. Thanks! Someone. The song I sang: [It's Time for Violence](http://weblogs.asp.net/rosherove/archive/2007/05/19/it-s-time-for-violence-a-song-about-databases.aspx) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 27, 2007 ### [Things I learned at JAOO 2007](https://osherove.com/blog/2007/9/27/things-i-learned-at-jaoo-2007.html) - Sep 26, 2007 ### [The Art Of Unit Testing - Available to Purchase Online Now](https://osherove.com/blog/2007/9/26/the-art-of-unit-testing-available-to-purchase-online-now.html) - Sep 22, 2007 ### [Code-Reuse in unit tests is more important than you think](https://osherove.com/blog/2007/9/22/code-reuse-in-unit-tests-is-more-important-than-you-think.html) - Sep 21, 2007 ### [XUnit.NET aims to be the Next NUnit, but it's too soon](https://osherove.com/blog/2007/9/21/xunitnet-aims-to-be-the-next-nunit-but-its-too-soon.html) --- title: "Do you like Boobs?" url: "https://osherove.com/blog/2007/9/22/do-you-like-boobs.md" canonical: "https://osherove.com/blog/2007/9/22/do-you-like-boobs.html" published: "2007-09-22T16:52:44" updated: "2007-09-22T16:52:44" tags: ["General Software Devel..."] author: "Roy Osherove" description: "That is, do you like the new Boo Build System ? Ayende blogged about it, but I loved the name so much I just have to learn Boo now. Freaking awesome. If this was a Microsoft product, I wonder what the name would be..." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Do you like Boobs? By Roy Osherove September 22, 2007 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published September 22, 2007; technical details may be outdated. That is, do you like the new [Boo Build System](http://code.google.com/p/boo-build-system/)?  Ayende [blogged](http://ayende.com/Blog/archive/2007/09/22/Introducing-Boobs-Boo-Build-System.aspx) about it, but I loved the name so much I just **have** to learn [Boo](http://boo.codehaus.org/) now. Freaking awesome. If this was a Microsoft product, I wonder what the name would be... ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Sep 27, 2007 ### [Things I learned at JAOO 2007](https://osherove.com/blog/2007/9/27/things-i-learned-at-jaoo-2007.html) - Sep 26, 2007 ### [The Art Of Unit Testing - Available to Purchase Online Now](https://osherove.com/blog/2007/9/26/the-art-of-unit-testing-available-to-purchase-online-now.html) - Sep 17, 2007 ### [Synchronize Team System and ClearCase with the TFS Migration & Synchronization Tool](https://osherove.com/blog/2007/9/17/synchronize-team-system-and-clearcase-with-the-tfs-migration.html) - Sep 13, 2007 ### [Tip: Easily change logon settings for all users on your machine](https://osherove.com/blog/2007/9/13/tip-easily-change-logon-settings-for-all-users-on-your-machi.html) --- title: "Code-Reuse in unit tests is more important than you think" url: "https://osherove.com/blog/2007/9/22/code-reuse-in-unit-tests-is-more-important-than-you-think.md" canonical: "https://osherove.com/blog/2007/9/22/code-reuse-in-unit-tests-is-more-important-than-you-think.html" published: "2007-09-22T04:51:06" updated: "2007-09-22T04:51:06" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "Scott Bellware mentions how he really likes the new ideas in XUnit.NET , especially the lack of [Setup] and [TearDown] methods. (Brad Wilson wrote in the comments to my post about XUnit.NET that you can mimic this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Code-Reuse in unit tests is more important than you think By Roy Osherove September 22, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 22, 2007; technical details may be outdated. Scott Bellware mentions how [he really likes the new ideas in XUnit.NET](http://codebetter.com/blogs/scott.bellware/archive/2007/09/21/168390.aspx), especially the lack of \[Setup\] and \[TearDown\] methods. (Brad Wilson wrote in the comments to my [post about XUnit.NET](http://weblogs.asp.net/rosherove/archive/2007/09/21/xunit-net-aims-to-be-the-next-nunit-but-it-s-too-soon.aspx) that you can mimic this behavior by using the constructor of the test class and the IDisposable.Dispose() method of the class -just implement IDisposable) . He especially says this: > "I think that Jim is on the right track, but I'm the kind of guy that feels that a test class's greatest responsibility is to document behavior in the clearest possible way, even if that means sacrificing **design qualities best reserved for functional code - like reuse**." (emphasis mine) That's silly. Scott tries to write "pure" TDD tests by saying that tests are 100% different than functional code, but they are not. Proof -- Tests that don't have code re-use in the form of setup and teardown or various specialized factory methods will be harder to maintain because every time you change some semantic aspect of your production code (constructors, initialization phases etc..) many of your tests will break and you'll have to fix them all one by one because you don't have re-use for object creation in your tests. Pretty soon you'll just stop maintaining your tests and that means you'll stop writing new ones. Ta-da! mission accomplished. If we don't all realize that in the **real world** tests have to be as maintainable (or even more so) as production code, we won't come out of the middle ages of unit testing. he then goes on to say some rules he has about Setup methods. one of which is: > "Don't put anything in a setup method that doesn't pertain to every test method in the test class" I completely agree with this. You NEED to have re-use but you also need to make sure you don't abuse these abilities. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 26, 2007 ### [The Art Of Unit Testing - Available to Purchase Online Now](https://osherove.com/blog/2007/9/26/the-art-of-unit-testing-available-to-purchase-online-now.html) - Sep 24, 2007 ### [Slides and Demos for My Talk: Testing Data Access Code Pragmatically](https://osherove.com/blog/2007/9/24/slides-and-demos-for-my-talk-testing-data-access-code-pragma.html) - Sep 21, 2007 ### [XUnit.NET aims to be the Next NUnit, but it's too soon](https://osherove.com/blog/2007/9/21/xunitnet-aims-to-be-the-next-nunit-but-its-too-soon.html) - Sep 18, 2007 ### [The Art Of Unit Testing - Help me choose a book cover](https://osherove.com/blog/2007/9/18/the-art-of-unit-testing-help-me-choose-a-book-cover.html) --- title: "XUnit.NET aims to be the Next NUnit, but it's too soon" url: "https://osherove.com/blog/2007/9/21/xunitnet-aims-to-be-the-next-nunit-but-its-too-soon.md" canonical: "https://osherove.com/blog/2007/9/21/xunitnet-aims-to-be-the-next-nunit-but-its-too-soon.html" published: "2007-09-21T17:48:38" updated: "2007-09-21T17:48:38" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "Update 1 : Brad answers some of my concerns on his blog. Too bad you can't write comments on his posts... Another update : There's a syntax comparison matrix between NUnit, XUnit and MbUnit. James Newkirk , one of the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # XUnit.NET aims to be the Next NUnit, but it's too soon By Roy Osherove September 21, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 21, 2007; technical details may be outdated. **Update 1**: [Brad answers some of my concerns](http://www.agileprogrammer.com/dotnetguy/archive/2007/09/21/23415.aspx) on his blog. Too bad you can't write comments on his posts... **Another update**: There's a [syntax comparison matrix](http://www.codeplex.com/xunit/Wiki/View.aspx?title=Comparisons&referringTitle=HowToUse) between NUnit, XUnit and MbUnit. [James Newkirk](http://jamesnewkirk.typepad.com/), one of the original creators of [NUnit](http://www.nunit.org/), which is currently the most popular Unit Testing framework for .NET (he now works for Microsoft at the patterns and practices team if I'm not mistaken) has [announced on his blog](http://jamesnewkirk.typepad.com/posts/2007/09/announcing-xuni.html) that together with [Brad Wilson](http://www.agileprogrammer.com/dotnetguy) (also a Microsoftie) a new Unit Testing framework which is open source (it is hosted on the Microsoft CodePlex site under the Microsoft Permissive License. [the new Unit Testing framework's name is XUnit.NET.](http://www.codeplex.com/xunit) James lists some of the reasons for creating this framework as his feeling (and Brad's) that is' time to re-codify some of the rules that had become more apparent in the past year or so about Unit testing and TDD DOs and Donts that they feel are important. some of the main differentiating properties James lists are: - **Single Object Instance per Test Method** - **No \[SetUp\] or \[TearDown\].** - **No \[ExpectedException\].** - **Reducing the Number of Custom Attributes.** - **Use of Generics and** **Anonymous Delegates.** - **Assert extensibility.** - **Test method extensibility.** - **Test class extensibility.** I took a rather quick glance and a shot at using the new framework, and wrote some points down so you get a deeper sense of what's changed if you're familiar with NUnit: **some things James did not mention you should know or I'd like to expand on:** **Update 2:** The lack of setup and teardown methods is not that bad because you can still get the same behavior: just use the class constructor and implement IDisposable and use the Dispose method as your "TearDown" method. This is more of a design thing than a "Removed feature" although it will still break many tests you have that have this attribute.  There is also a \[RunWithNUnit\] attribute which I'm not sure how it is used yet. - There is no **Assert.Fail** (overlooked? I find this very usable in some instances) - **Data Driven Testing using the TheoryAttribute** and DataViaXX attributes - this is a really cool feature whis feels like the MbUnit's \[RowTest\] with extensibility to declare where the rows will come from. It already has "providers" for SQL, OleDB and more. I was able to put together a text file based Data Driven test in less than 5 minutes without any documentatoin. the framework API is very usable especially if you look at the source code. see example of how I did this at the bottom of this post - It's easy to add a **special test attribute** that does something before or after the test by by inheriting from a special **BeforeAfterTestAttribute** - There is currently only a console runner - But there is already **shipping TestDriven.NET support** as part of the download! just run **xunit.tdnet.installer.exe**  that is next to the xunit.framework.dll - **Assert.Equals is deprecated** and ou are instructed to use a generic version of Assert.Equal (without the 's') / I think this is a problem because generics make the Assert code longer to write and read while giving little contribution to the developer of the tests. You could "omit" the initial generic type declaration from the Assert.Equal (so Assert.Equal("a","b") works like Assert.Equal("a","b")) but if you miss on the type of the parameter you get a less than understandable compilation error in the form of "argument type string not assignable to parameter type T" - There is no built in Mocking framework (NUnit had Nunit.Mocks though most people didn't even know it existed until they've read this) - Assert.Equal on two strings, if it fails, does not add that nice little touch of visual that Nunit has that shwos you with an ascii arrow "----^" where the strings differ first (it tells you the char index but that's less understandable) - instead of TestFixtureSetup and TestFixtureTearDown, you need to implement an ITestFixture interface with an "BeforeAllTests" and "AfterAllTests" methods. - There is no Setup and teardown. I'm not sure that's such a cool idea even though James [thinks it is](http://jamesnewkirk.typepad.com/posts/2007/09/why-you-should-.html). Like it our not it does give a nice place to store and reuse code. yes, you can abuse it, but does that mean C# shouldn't support anonymous delegates because people could abuse it?) .  At least give us a Setupand Teardown as part of ITestFixture! - Extensibility and creating custom test attributes is pretty easy and straightforward and I like the thinking around the API. it's usable. There is still no solution for what happens if multiple custom test attributes need to be run in a specific order. - No Expected exception attribute. use try-catch or Assert.Throws, I find that less readable. James' explanation of why isn't convincing to me. I never came across a case where that attribute failed on the WRONG exception (especially if you set the expected message attribute on it) - If you take a look at the tests for XUnit and XUnit.Extensions (part of the src download) you'll see that the naming conventions the use is lacking to my taste. Example: a test called "TheoryWithoutData" - it fills two out of my three required parts of a name: what are you testing, and under what scenario are you testing it under?, but the third one - What is the expected behavior under that scenario? that is missing so you have to read the test code to find out, and that sucks. - From looking at the source code, it should be able to also run NUnit tests (backwards compatible) **Can XUnit.NET be the Next NUnit?** XUnit has some big things going for it: it is built by the original creator of NUnit who has a LOT of influence in the .NET world. Personally I really get the feeling that I should start using this framework now simply because of who built it. but that is a mistake, and I explain shortly.  the other big things which it has: - A nice and simple API and extensibility model - The idea of data driven tests - hmm.. that's more or less the big stuff. now that I think about it. It COULD be. but it's not there. simply because the user base is non existent. and what about the developers? are there only 2? how much time do they have on their hands? **Why not contribute to an existing framework?** I don't know why they had gone and built their own. perhaps it's an Ego thing. perhaps they couldn't come to grips with Charlie Poole (the current chief maintainer of Nunit) about what features go in and especially removing some of the existing features. maybe its a microsoft thing where you can't contribute to an outside open source project. perhaps James or Brad can shed some light on this. **Should you start using XUnit?** The short answer is no. If you have an existing project with NUnit or MbUnit tests, I wouldn't recommend it until there is either feature parity or until you decide you can live **without** some of the features that don't exist in XUnit (Setup and teardown, test fixture setup and teardown, assembly related attributes and more. Also not that some people tend to have the tests rely on the fact that the same class fixture instance is used to run all the tests in that class so they \*share\* data between tests in the class (that's a mistake, but if you rely on this you'd be in a world of trouble to move). **Don't move an existing project because it will take a lot of effort!** If you have a new project you should not consider using it. it's still risky since it's a new project and may not be too stable yet. the larger the user base, the more stable it is.  unless it's a proof of concept kind of thing, or if you're just testing the waters , it may be OK. right now, I think it's premature. **Example: Data Driven tests with the Theory attribute** ``` //The test that reads lines from a text file [Theory] [DataViaTextFile("..\\..\\logicdata.txt")] public void SimpleTest(string s) { Console.WriteLine(s); } //My custom data reader attribute: class DataViaTextFileAttribute:DataAttribute { private string file; public string FileName { get { return file; } set { file = value; } } public DataViaTextFileAttribute(string file) { this.file = file; } public override DataTable GetDataTable(Type typeUnderTest) { DataTable dt = new DataTable(); dt.Columns.Add("text", typeof (string)); string[] lines = File.ReadAllLines(file); foreach (string line in lines) { dt.Rows.Add(line); } return dt; } } ``` ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 24, 2007 ### [Slides and Demos for My Talk: Testing Data Access Code Pragmatically](https://osherove.com/blog/2007/9/24/slides-and-demos-for-my-talk-testing-data-access-code-pragma.html) - Sep 22, 2007 ### [Code-Reuse in unit tests is more important than you think](https://osherove.com/blog/2007/9/22/code-reuse-in-unit-tests-is-more-important-than-you-think.html) - Sep 18, 2007 ### [The Art Of Unit Testing - Help me choose a book cover](https://osherove.com/blog/2007/9/18/the-art-of-unit-testing-help-me-choose-a-book-cover.html) - Sep 18, 2007 ### [TDD Pattern: Composite Logic Development and Testing](https://osherove.com/blog/2007/9/18/tdd-pattern-composite-logic-development-and-testing.html) --- title: "The Art Of Unit Testing - Help me choose a book cover" url: "https://osherove.com/blog/2007/9/18/the-art-of-unit-testing-help-me-choose-a-book-cover.md" canonical: "https://osherove.com/blog/2007/9/18/the-art-of-unit-testing-help-me-choose-a-book-cover.html" published: "2007-09-18T17:50:34" updated: "2007-09-18T17:50:34" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "Here's a question for those of you who are interested in my upcoming book . You can influence my decision on choosing the book cover design. The book will be available for purchase as part of the Manning Early Access…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Art Of Unit Testing - Help me choose a book cover By Roy Osherove September 18, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 18, 2007; technical details may be outdated. Here's a question for those of you who are interested in [my upcoming book](http://the.artofunittesting.com/). You can influence my decision on choosing the book cover design. The book will be available for purchase as part of the Manning Early Access Program ([MEAP](http://www.manning.com/about/meap.html)) which means you can purchase and get the chapters as I write them (currently five exist). I'll present 6 possible designs (We can come up with more if none of these are well liked) and a short poll where you choose your favorite ones:
Osherove1

Image 1
Osherove2
Image 2
Osherove3
Image 3
Osherove4
Image 4
Osherove5
Image 5
Osherove6
Image 6
Now please answer which are your favorites (you can select more than one): **Poll:** Embedded Flash media from the original post is no longer playable. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 22, 2007 ### [Code-Reuse in unit tests is more important than you think](https://osherove.com/blog/2007/9/22/code-reuse-in-unit-tests-is-more-important-than-you-think.html) - Sep 21, 2007 ### [XUnit.NET aims to be the Next NUnit, but it's too soon](https://osherove.com/blog/2007/9/21/xunitnet-aims-to-be-the-next-nunit-but-its-too-soon.html) - Sep 18, 2007 ### [TDD Pattern: Composite Logic Development and Testing](https://osherove.com/blog/2007/9/18/tdd-pattern-composite-logic-development-and-testing.html) - Sep 16, 2007 ### [Mocks and Stubs - The difference is in the flow of information](https://osherove.com/blog/2007/9/16/mocks-and-stubs-the-difference-is-in-the-flow-of-information.html) --- title: "TDD Pattern: Composite Logic Development and Testing" url: "https://osherove.com/blog/2007/9/18/tdd-pattern-composite-logic-development-and-testing.md" canonical: "https://osherove.com/blog/2007/9/18/tdd-pattern-composite-logic-development-and-testing.html" published: "2007-09-18T06:32:26" updated: "2007-09-18T06:32:26" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "Here's a video I made that captures my current thoughts on writing complex business rules which have lots of validation logic. Here's the scenario I show in the video: A Validate method on an object actually uses lots…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Pattern: Composite Logic Development and Testing By Roy Osherove September 18, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 18, 2007; technical details may be outdated. Here's a video I made that captures my current thoughts on writing complex business rules which have lots of validation logic. Here's the scenario I show in the video: ![image](https://osherove.com/img/wb/et_blogs_rosherove_WindowsLiveWriter_TDDPatternCompositeLogicDevelopmentandTe_CC70_image_thumb_2.png) A Validate method on an object actually uses lots of smaller methods to return a result. The idea is to actually write separate tests for the underlying helper methods (which are actually individual rule checks) and a separate test for the overall logic driver (the Validate method. **Different from traditional TDD technique** This is different from the traditional way I would do TDD in that in the traditional sense, in TDD you probably would not have these helper methods but would actually write all that logic inside the validate method, and only later you would refactor the code into separate smaller methods. - TDD: Start with a simple method and refactor it into smaller methods if and when you need to while making the tests pass. - This method (Composite Logic TDD - CLTDD???): drive the creation of the separate rules as part of the TDD effort (part of the initial design). But why? Because every time I tried to accomplish the same thing with the traditional way I came up with problems thinking about my next tests. every time I would add another rules to the implementation it would break my existing tests because they had to account for my new rule. In the new method I gain full control over what the rules actually return so that I can tell the validate method - "Assume that all the rules pass, except this one". then I can go on and test things separately. here's what I mean: ![image](https://osherove.com/img/wb/et_blogs_rosherove_WindowsLiveWriter_TDDPatternCompositeLogicDevelopmentandTe_CC70_image_thumb_4.png) So the video details how you would write all this in a test driven manner. I'm personally not entirely happy with it and i think the technique is still rough around the edges (takes time to learn, not very intuitive etc..) but it's currently the only way I could come up with to test the logical driven separately from the individual rules it uses. **Separation of concerns** The thing I like about the end result is that the individual rules methods (HasDIgit() etc..) can be coded and tested independently from the logic that uses them. much like separating a call to a web service from the actual web service implementation and testing them separately. **Your input is welcome. I'm looking for:** - Giving a proper name for this technique\\pattern (the XUNit test patterns book calls the pattern "Test Specific Subclass" with the variation of "Behavior changing subclass"   but what I'm doing is a pattern for TDD that tests a composite logic piece of code. what should we call this technique? - Tell me where I'm missing something in the technique that could lead to potential problems - tell me if you think you have a better way of accomplishing this (in TDD or not)  Here's the video, 44 minutes.(the demo of the validate method starts at minute 21) Embedded Flash media from the original post is no longer playable. in the video(you can also [download it 57 MB](http://files.osherove.com/downloads/video/TDDConstraintTesting.wmv)): - understanding the problem - the different kinds of tests for this problem - a simple demo of the extract and override pattern - the full demo of using the Validate method [here are the slides](http://files.osherove.com/downloads/Video/TDDCompositeRules.zip) for this video. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 21, 2007 ### [XUnit.NET aims to be the Next NUnit, but it's too soon](https://osherove.com/blog/2007/9/21/xunitnet-aims-to-be-the-next-nunit-but-its-too-soon.html) - Sep 18, 2007 ### [The Art Of Unit Testing - Help me choose a book cover](https://osherove.com/blog/2007/9/18/the-art-of-unit-testing-help-me-choose-a-book-cover.html) - Sep 16, 2007 ### [Mocks and Stubs - The difference is in the flow of information](https://osherove.com/blog/2007/9/16/mocks-and-stubs-the-difference-is-in-the-flow-of-information.html) - Sep 13, 2007 ### [Throw-Away Tests Vs. Tests that Last](https://osherove.com/blog/2007/9/13/throw-away-tests-vs-tests-that-last.html) --- title: "Synchronize Team System and ClearCase with the TFS Migration & Synchronization Tool" url: "https://osherove.com/blog/2007/9/17/synchronize-team-system-and-clearcase-with-the-tfs-migration.md" canonical: "https://osherove.com/blog/2007/9/17/synchronize-team-system-and-clearcase-with-the-tfs-migration.html" published: "2007-09-17T15:45:11" updated: "2007-09-17T15:45:11" tags: [".NET", "General Software Devel...", "Team System", "Visual Studio"] author: "Roy Osherove" description: "It's about time! Just got this in the mail: TFS Migration & Synchronization Tool For ClearCase Released Yesterday we released a new tool that will help customers who use both Microsoft Visual Studio Team Foundation…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Synchronize Team System and ClearCase with the TFS Migration & Synchronization Tool By Roy Osherove September 17, 2007 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Team System](https://osherove.com/blog/category/team-system), [Visual Studio](https://osherove.com/blog/category/visual-studio) **Historical article** · Originally published September 17, 2007; technical details may be outdated. It's about time! Just got this in the mail: #### TFS Migration & Synchronization Tool For ClearCase Released Yesterday we released a new tool that will help customers who use both Microsoft Visual Studio Team Foundation Server and ClearCase or are migrating from ClearCase to TFS.  It is available for [download](http://www.microsoft.com/downloads/details.aspx?FamilyId=999220ED-3D11-411A-BB54-71DDDB724E15&displaylang=en) today at no additional charge for licensed users of TFS (server and CALs).  We are hoping to release some updates to TFS licensing soon that will simplify it for people using tools like this to synchronize TFS with other SCM systems.  For now read our [licensing whitepaper](http://www.microsoft.com/downloads/details.aspx?FamilyID=1FA86E00-F0A3-4290-9DA9-6E0378A3A3C5&displaylang=en) to understand the requirements. This new ClearCase -> TFS migration and synchronization tool provides the ability to migrate ClearCase data to TFS, and it also provides a service that will keep items in sync between TFS and ClearCase.  Together, these features will make the process of migrating from ClearCase to TFS much simpler, and far more automated.  It enables you to make a one time switch and preserve your data and history or it allows a longer term cooexistance by allowing different people or teams to use ClearCase and TFS while ensuring that all of the data and history is available to all users. A quick summary of the features of the tool: - Supports migration of base ClearCase VOBs - Migrate a snapshot of source control to TFS - Migrate files to Team Foundation Server while preserving history - Migrate branches to Team Foundation Server retaining the branching structure/hierarchy - Bidirectional synchronization of data between TFS and ClearCase You can get forum support at [http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=478&SiteID=1](http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=478&SiteID=1) if you have questions or need help.  We're also working to arrange official CSS phone support. In concert with releasing this new ClearCase -> TFS migration and synchronization tool, we have launched a new [web page](http://msdn2.microsoft.com/en-us/teamsystem/bb840033.aspx) to serve as a hub of information about integration of TFS with other SCM products.  This includes information both on our own offerings and on third party offerings.  If you see any that are missing, please let me know and we'll make sure to get them added.  I already know of a couple of missing things - our own ClearQuest conversion tool and the offerings from [http://www.componentsoftware.com](http://www.componentsoftware.com/) Also, if you want to stay up to date on the latest news, you can follow that [TFS migration blog](http://blogs.msdn.com/tfs_migration/). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 6, 2007 ### [Microsoft gets Design For Testability with new MVC framework for ASP.NET- Finally.](https://osherove.com/blog/2007/10/6/microsoft-gets-design-for-testability-with-new-mvc-framework.html) - Sep 27, 2007 ### [Pimp My Visual Studio](https://osherove.com/blog/2007/9/27/pimp-my-visual-studio.html) - Aug 23, 2007 ### [Ask An ASP.NET Expert Live](https://osherove.com/blog/2007/8/23/ask-an-aspnet-expert-live.html) - Aug 8, 2007 ### [Source control hosting heats up: Dynamsoft introduces SourceAnywhere](https://osherove.com/blog/2007/8/8/source-control-hosting-heats-up-dynamsoft-introduces-sourcea.html) --- title: "Mocks and Stubs - The difference is in the flow of information" url: "https://osherove.com/blog/2007/9/16/mocks-and-stubs-the-difference-is-in-the-flow-of-information.md" canonical: "https://osherove.com/blog/2007/9/16/mocks-and-stubs-the-difference-is-in-the-flow-of-information.html" published: "2007-09-16T15:26:55" updated: "2007-09-16T15:26:55" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "In class today when explaining the difference between stubs and mocks, I realized a simple explanation to this: Stubs and mocks may seem the same but the flow of information from each is very different. Stubs provide…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mocks and Stubs - The difference is in the flow of information By Roy Osherove September 16, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 16, 2007; technical details may be outdated. In class today when explaining the difference between stubs and mocks, I realized a simple explanation to this: Stubs and mocks may seem the same but the flow of information from each is very different. - Stubs provide input for the application under test so that the test can be performed on something else. - Mocks provide input to the test to decide on pass\\fail. the opposite direction. The following diagram shows the flow of critical information: ![image](https://osherove.com/img/wb/t_blogs_rosherove_WindowsLiveWriter_MocksandStubsThedifferenceisintheflowofi_149B8_image_thumb_1.png) The red arrows signify the "critical" flow of information that is used to decide if the test had passed. A stub can never fail a test, so there is no flow of information back to the test. the mock records things and then tells our test if it's expectations have been met according to its recording. A stub is application facing, and a mock is test facing. [Here's a more in depth overview of the two](http://martinfowler.com/articles/mocksArentStubs.html), but I haven't seen this explained as I just did anywhere. It's important to know and distinguish the two since many frameworks for mocking use these terms for different kinds of objects. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 18, 2007 ### [The Art Of Unit Testing - Help me choose a book cover](https://osherove.com/blog/2007/9/18/the-art-of-unit-testing-help-me-choose-a-book-cover.html) - Sep 18, 2007 ### [TDD Pattern: Composite Logic Development and Testing](https://osherove.com/blog/2007/9/18/tdd-pattern-composite-logic-development-and-testing.html) - Sep 13, 2007 ### [Throw-Away Tests Vs. Tests that Last](https://osherove.com/blog/2007/9/13/throw-away-tests-vs-tests-that-last.html) - Sep 11, 2007 ### [Scrum is not enough. Try ScrumP](https://osherove.com/blog/2007/9/11/scrum-is-not-enough-try-scrump.html) --- title: "Tip: Easily change logon settings for all users on your machine" url: "https://osherove.com/blog/2007/9/13/tip-easily-change-logon-settings-for-all-users-on-your-machi.md" canonical: "https://osherove.com/blog/2007/9/13/tip-easily-change-logon-settings-for-all-users-on-your-machi.html" published: "2007-09-13T17:38:47" updated: "2007-09-13T17:38:47" tags: ["General Software Devel...", "Tips & Tricks"] author: "Roy Osherove" description: "OK, I did not know this one, but it's so simple: Click Start , click Run , and type \" control userpasswords2\" . more here (by Doug Knox )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tip: Easily change logon settings for all users on your machine By Roy Osherove September 13, 2007 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published September 13, 2007; technical details may be outdated. OK, I did not know this one, but it's so simple: Click **Start**, click **Run**, and type  "**control userpasswords2"**. [more here](http://www.microsoft.com/windowsxp/using/setup/learnmore/tips/knox2.mspx) (by [Doug Knox](http://www.dougknox.com/)) ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Sep 22, 2007 ### [Do you like Boobs?](https://osherove.com/blog/2007/9/22/do-you-like-boobs.html) - Sep 17, 2007 ### [Synchronize Team System and ClearCase with the TFS Migration & Synchronization Tool](https://osherove.com/blog/2007/9/17/synchronize-team-system-and-clearcase-with-the-tfs-migration.html) - Jul 29, 2007 ### [If you make it in this game, you could be a good developer](https://osherove.com/blog/2007/7/29/if-you-make-it-in-this-game-you-could-be-a-good-developer.html) - Jul 28, 2007 ### [Visual Web GUI Helps me Write in Winform and run as ASP.NET](https://osherove.com/blog/2007/7/28/visual-web-gui-helps-me-write-in-winform-and-run-as-aspnet.html) --- title: "Throw-Away Tests Vs. Tests that Last" url: "https://osherove.com/blog/2007/9/13/throw-away-tests-vs-tests-that-last.md" canonical: "https://osherove.com/blog/2007/9/13/throw-away-tests-vs-tests-that-last.html" published: "2007-09-13T16:01:23" updated: "2007-09-13T16:01:23" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "TATs - That's what I call the tests people write when they are writing unit tests for the first time on a real project. Those tests usually don't last more that a few months before they either get deleted or ignored…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Throw-Away Tests Vs. Tests that Last By Roy Osherove September 13, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 13, 2007; technical details may be outdated. TATs  - That's what I call the tests people write when they are writing unit tests for the first time on a real project. Those tests usually don't last more that a few months before they either get deleted or ignored completely because it takes too much time to maintain them, or no one understands what they are trying to test, or no one understands why they keep failing when the code seems fine, or all of the above combined. What's the difference between **TATs** and **TTLs** (Tests That Last)? **TTLs** are: - **Maintainable** \- Maintaining your production code when you have unit tests should not take much longer than maintaining it if you didn't have tests. for example - Assume a class that has 50 tests and suddenly you decide to change the constructor signature for that class. how long would it take you to make sure all the 50 tests for that class run again (or even compile)? - **Readable** \- Can you understand the test that somebody else wrote? Do you have to debug it to understand what it's testing? can you tell the intention just by looking at the test name? if it failed, will you know where the problem is? - **Trust-worthy** \- When you finish writing a feature, how comfortable do you feel just running all the tests and seeing them all pass? Does your test test the right thing? Do you have tests that keep failing but you think it's a normal behavior that they fail?  Do you have tests that seem to only pass if run in a specific order? Do you have tests that run other tests? Take any one of these away and the others crumble as quickly as I do when my wife asks me to take the garbage out. As a bonus I can tell you that you  what you have if even one of these is true is a **TAT**, not a **TTL**. Have **you** ever written **TATs**?  Were you able to make the move to **TTL**? If not, why? ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 18, 2007 ### [TDD Pattern: Composite Logic Development and Testing](https://osherove.com/blog/2007/9/18/tdd-pattern-composite-logic-development-and-testing.html) - Sep 16, 2007 ### [Mocks and Stubs - The difference is in the flow of information](https://osherove.com/blog/2007/9/16/mocks-and-stubs-the-difference-is-in-the-flow-of-information.html) - Sep 11, 2007 ### [Scrum is not enough. Try ScrumP](https://osherove.com/blog/2007/9/11/scrum-is-not-enough-try-scrump.html) - Sep 4, 2007 ### [Video: Agile Israel - Introduction to Agile, Scrum Planning](https://osherove.com/blog/2007/9/4/video-agile-israel-introduction-to-agile-scrum-planning.html) --- title: "Scrum is not enough. Try ScrumP" url: "https://osherove.com/blog/2007/9/11/scrum-is-not-enough-try-scrump.md" canonical: "https://osherove.com/blog/2007/9/11/scrum-is-not-enough-try-scrump.html" published: "2007-09-11T04:46:44" updated: "2007-09-11T04:46:44" tags: ["Agile", "Agile Related"] author: "Roy Osherove" description: "I'm a firm believer in the idea that a good development methodology always has two parts intertwined. The first part is the Process . That's basically everything that has to do with the customer, requirements,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scrum is not enough. Try ScrumP By Roy Osherove September 11, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published September 11, 2007; technical details may be outdated. I'm a firm believer in the idea that a good development methodology **always** has two parts intertwined. The first part is the **Process**. That's basically everything that has to do with the customer, requirements, iterations, planning etc.. . A process like Scrum is a perfect fit for this part. But the second part is the **technical supporting practices**. Things like Unit testing. continuous Integration, TDD, Pair programming and basically anything that states how developers work on a day to day basis is part of that. Following a process like Scrum is a good start, but if you take a look at the ideas behind Agile Development you quickly find that process is not enough.  Something technical has to be there to make sure the process is indeed feasible.  **Example: Handle requirements that keep changing (Embrace Change)** It doesn't really matter how well you work with scrum, how short your iterations are and how simple your backlog is. When you need to change a part of your code because something has changes in the requirements or your understanding of them, you're faced with the prospect of breaking existing code. If you break existing code and don't know that you did, it won't be long before your iterations and changes wreak havoc in your code base and your development time per feature will slow down considerably because you keep bumping into unexpected bugs during testing (hopefully!). Unit tests are a great example of a technical practice that supports an Agile process. If you had unit tests on that project you could change the code and see the places where you broke something and fix them quickly. you'd have a much easier time going into the code base and start messing with it knowing that you know the consequences of your actions. **Embracing change over time without unit tests is next to impossible,** no matter how small your iterations are. **What about continuous integration?** THe idea is to get feedback quickly that you broke something in the code base. If it takes you a month to find out you broke someone else's code or it won't compile at all, that's a lot of code under the bridge that you need to sift through to find the problem. If your iterations are short you can't really afford to have such a lengthy integration phase. it needs to be every day or you risk finding yourself between a rock and a hard place soon. (Automated build with [FinalBuilder](http://www.finalbuilder.com/)) **Smaller iterations are next to impossible without a good integration\\testing\\build cycle.** Jeremey Miller posted [that people seem to like Scrum over XP](http://codebetter.com/blogs/jeremy.miller/archive/2007/09/08/scrum-is-fine-but-don-t-leave-the-xp-at-home.aspx). People need to realize that Scrum and XP are two sides of the same coin. Successfull companies I've seen implemented parts of **both,** or a variation of them. I like to call these hybrid processes **ScrumP** (Scrum-pee but in a good way!) as the combination of both of these methodologies and the idea of combining process and technical practices. BTW, in the comments to Jeremy's post [Dave Woods](http://blogs.solidhouse.com/david.woods) suggests that people like Scrum of XP since it's a easier Sell. I wholeheartedly agree. Managers really don't like to hear the word 'Extreme" when all they want is for people to just work better. But I think "selling" Scrum and then adding in parts of XP without doing this officially is a much more suitable solution since everyone feels more comfortable doing it, especially the managers. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 16, 2007 ### [Mocks and Stubs - The difference is in the flow of information](https://osherove.com/blog/2007/9/16/mocks-and-stubs-the-difference-is-in-the-flow-of-information.html) - Sep 13, 2007 ### [Throw-Away Tests Vs. Tests that Last](https://osherove.com/blog/2007/9/13/throw-away-tests-vs-tests-that-last.html) - Sep 4, 2007 ### [Video: Agile Israel - Introduction to Agile, Scrum Planning](https://osherove.com/blog/2007/9/4/video-agile-israel-introduction-to-agile-scrum-planning.html) - Aug 29, 2007 ### [Reminder: Agile Israel meets TODAY](https://osherove.com/blog/2007/8/29/reminder-agile-israel-meets-today.html) --- title: "Video: Agile Israel - Introduction to Agile, Scrum Planning" url: "https://osherove.com/blog/2007/9/4/video-agile-israel-introduction-to-agile-scrum-planning.md" canonical: "https://osherove.com/blog/2007/9/4/video-agile-israel-introduction-to-agile-scrum-planning.html" published: "2007-09-04T05:30:58" updated: "2007-09-04T05:30:58" tags: ["Agile", "Agile Israel News", "Agile Related"] author: "Roy Osherove" description: "If you'd like to be notified of future meetings, please register as a user at http://agileisrael.org (you can also open a blog there if you'd like). The last Agile Israel meeting was A BLAST! I personally had lots of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: Agile Israel - Introduction to Agile, Scrum Planning By Roy Osherove September 4, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published September 4, 2007; technical details may be outdated. If you'd like to be notified of future meetings, please register as a user at [http://agileisrael.org](http://agileisrael.org/) (you can also open a blog there if you'd like). The last [Agile Israel](http://www.agileisrael.org/) meeting was A BLAST! I personally had lots of fun, and [so did Danko](http://agileisrael.org/cs/blogs/danko/archive/2007/08/30/agile-israel-conference-yesterday.aspx). I was also very excited to host it once again after such a long time.  It took lots of time to also upload the video of that meeting (in Hebrew), so it is split into two parts. We had over 40 people attending, and it was a great 3 hour long conversation: **Audio:** - [Part 1 : Introduction to Agile Development](http://teamagile.com/downloads/agileisrael/august07/AgileIsraelPart1.mp3) - [Part 2:  Scrum Planning](http://teamagile.com/downloads/agileisrael/august07/AgileIsraelPart2.mp3) **Video:** **Part 1: Introduction to Agile Development, by myself**  Embedded Flash media from the original post is no longer playable. **Part 2: Scrum Planning by** [**Danko**](http://agileisrael.org/blogs/danko)**:** Embedded Flash media from the original post is no longer playable. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 13, 2007 ### [Throw-Away Tests Vs. Tests that Last](https://osherove.com/blog/2007/9/13/throw-away-tests-vs-tests-that-last.html) - Sep 11, 2007 ### [Scrum is not enough. Try ScrumP](https://osherove.com/blog/2007/9/11/scrum-is-not-enough-try-scrump.html) - Aug 29, 2007 ### [Reminder: Agile Israel meets TODAY](https://osherove.com/blog/2007/8/29/reminder-agile-israel-meets-today.html) - Aug 20, 2007 ### [Be sure to Register for Agile Israel August meeting](https://osherove.com/blog/2007/8/20/be-sure-to-register-for-agile-israel-august-meeting.html) --- title: "Team System Unit Testing May finally be \"OK\"" url: "https://osherove.com/blog/2007/8/29/team-system-unit-testing-may-finally-be-quotokquot.md" canonical: "https://osherove.com/blog/2007/8/29/team-system-unit-testing-may-finally-be-quotokquot.html" published: "2007-08-29T13:15:05" updated: "2007-08-29T13:15:05" tags: [] author: "Roy Osherove" description: "All I can say is, It's about time . I'm getting tired of apologizing for the Microsoft Team System Unit Testing framework , or ranting on it . Perhaps now it can be truly usable without the aid of external helpers such…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Team System Unit Testing May finally be "OK" By Roy Osherove August 29, 2007 **Historical article** · Originally published August 29, 2007; technical details may be outdated. ![image](https://osherove.com/img/wb/.asp.net_blogs_rosherove_WindowsLiveWriter_TeamSystemUnitTestingMayfinallybeOK_146D6_image_thumb.png) All I can say is, [It's about time](http://www.peterprovost.org/archive/2007/08/28/23214.aspx). I'm getting tired of [apologizing for the Microsoft Team System Unit Testing framework](http://weblogs.asp.net/rosherove/archive/2006/09/24/MbUnit-vs.-NUnit-Vs.-Team-System-Unit-Testing-_2D00_-Choosing-a-unit-test-framework.aspx), or [ranting on it](http://weblogs.asp.net/rosherove/archive/2006/01/25/436414.aspx). Perhaps now it can be truly usable without the aid of external helpers such as TestDriven.NET, or be at least on par with NUnit in terms of... not having so many bugs. Peter Provost posted about upcoming features and fixes in the orcas (VS 2008) product: > " > > 1. Better Execution Times > 2. Run Tests Context Menus > 3. Short cut keys to run tests (WOOT!) > 4. Disable the "test deployment" icki-ness > 5. Support for the Abstract Test Pattern via Test inheritance (boo!) > 6. Click thru to the point of failure" --- title: "Reminder: Agile Israel meets TODAY" url: "https://osherove.com/blog/2007/8/29/reminder-agile-israel-meets-today.md" canonical: "https://osherove.com/blog/2007/8/29/reminder-agile-israel-meets-today.html" published: "2007-08-29T02:08:33" updated: "2007-08-29T02:08:33" tags: ["Agile", "Agile Israel News", "Agile Related"] author: "Roy Osherove" description: "There are still 12 places left. If you have a video camera tripod, please bring it, we need one. More details here Confirm your arrival here. Two books will be raffled: Agile Project Management with Scrum (Microsoft…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Reminder: Agile Israel meets TODAY By Roy Osherove August 29, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published August 29, 2007; technical details may be outdated. There are still 12 places left. **If you have a video camera tripod, please bring it, we need one.** - [More details here](http://agileisrael.org/cs/blogs/news/archive/2007/08/05/august-2007-agile-israel.aspx) - [Confirm your arrival here.](http://agileisrael.eventwax.com/august-2007--agile-israel/register) [![image](https://osherove.com/img/wb/405_weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_ReminderAgileIsraelmeetsTODAY_AABD_image_1.png)](http://agileisrael.org/) Two books will be raffled: [![](https://osherove.com/img/wb/3c01664b_ec1.images-amazon.com_images_I_21NM9NP68ML.jpg) Agile Project Management with Scrum (Microsoft Professional)](https://www.amazon.com/exec/obidos/ASIN/073561993X/iserializable-20) [ Test-Driven Development in Microsoft .NET (Microsoft Professional)](https://www.amazon.com/exec/obidos/ASIN/0735619484/iserializable-20) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 11, 2007 ### [Scrum is not enough. Try ScrumP](https://osherove.com/blog/2007/9/11/scrum-is-not-enough-try-scrump.html) - Sep 4, 2007 ### [Video: Agile Israel - Introduction to Agile, Scrum Planning](https://osherove.com/blog/2007/9/4/video-agile-israel-introduction-to-agile-scrum-planning.html) - Aug 20, 2007 ### [Be sure to Register for Agile Israel August meeting](https://osherove.com/blog/2007/8/20/be-sure-to-register-for-agile-israel-august-meeting.html) - Aug 19, 2007 ### [Get Agile with Nintendo Wii (Craig Larman's London Course)](https://osherove.com/blog/2007/8/19/get-agile-with-nintendo-wii-craig-larmans-london-course.html) --- title: "Social Chat Experiment with XPanity Chat Widget" url: "https://osherove.com/blog/2007/8/28/social-chat-experiment-with-xpanity-chat-widget.md" canonical: "https://osherove.com/blog/2007/8/28/social-chat-experiment-with-xpanity-chat-widget.html" published: "2007-08-28T07:56:00" updated: "2007-08-28T07:56:00" tags: [] author: "Roy Osherove" description: "This post is part of a beta Chat Experiment, using XPanity's Chat widget ( http://www.xpanity.com ) You should see a chat window on the left sidebar of this blog if you view this page inside a browser. (update: sounds…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Social Chat Experiment with XPanity Chat Widget By Roy Osherove August 28, 2007 **Historical article** · Originally published August 28, 2007; technical details may be outdated. This post is part of a beta Chat Experiment, using [XPanity's](http://www.xpanity.com/) Chat widget ([http://www.xpanity.com](http://www.xpanity.com/ "http://www.xpanity.com")) You should see a chat window [on the left sidebar of this blog](https://osherove.com/rosherove) if you view this page inside a browser. (update: sounds have been muted to stop the annoying "joined" sound) (See full syntax and usage of the widget [over here](http://communityhacker.com/syntax-for-using-xpanitys-chat-widget/)) --- title: "Upcoming Talks Update: August 2007" url: "https://osherove.com/blog/2007/8/27/upcoming-talks-update-august-2007.md" canonical: "https://osherove.com/blog/2007/8/27/upcoming-talks-update-august-2007.html" published: "2007-08-27T02:33:48" updated: "2007-08-27T02:33:48" tags: ["Community News"] author: "Roy Osherove" description: "It's going to be a busy end of year. I have the following talks in the following conferences: ALT.NET Open Space Conference It's open space, not prescheduled talks, but I have some ideas + a guitar JAOO, Denmark Testing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Upcoming Talks Update: August 2007 By Roy Osherove August 27, 2007 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published August 27, 2007; technical details may be outdated. It's going to be a busy end of year. I have the following talks in the following conferences: ![image](https://osherove.com/img/wb/weblogs.asp.net_blogs_rosherove_WindowsLiveWriter_UpcomingTalksUpdateAugust2007_B06C_image_thumb.png) - [**ALT.NET Open Space Conference**](http://www.altnetconf.com/) -      It's open space, not prescheduled talks, but I have some ideas + a guitar - [**JAOO, Denmark**](http://www.jaoo.dk/)  -      Testing Data Access Related Code Pragmatically - **[TechEd Developers, Barcelona](https://www.mseventseurope.com/teched/07/Developers/Content/Pages/About.aspx)** -      Unit Testing Tips and Tricks -      Continuous Integration with Team System -      Deep Reflection: Things you really need to know about Reflection 2.0 - [**Better Software Agile Practices Conference, Orlando**](http://www.sqe.com/agiledevpractices/) -      .NET And Java  - Bridging the Interop Gap -      Database Unit Testing ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Sep 27, 2007 ### [Things I learned at JAOO 2007](https://osherove.com/blog/2007/9/27/things-i-learned-at-jaoo-2007.html) - Sep 26, 2007 ### [The Art Of Unit Testing - Available to Purchase Online Now](https://osherove.com/blog/2007/9/26/the-art-of-unit-testing-available-to-purchase-online-now.html) - Aug 27, 2007 ### [ALT.NET Conference is open for registration](https://osherove.com/blog/2007/8/27/altnet-conference-is-open-for-registration.html) - Aug 26, 2007 ### [Video: In memory of David Boschmans](https://osherove.com/blog/2007/8/26/video-in-memory-of-david-boschmans.html) --- title: "ALT.NET Conference is open for registration" url: "https://osherove.com/blog/2007/8/27/altnet-conference-is-open-for-registration.md" canonical: "https://osherove.com/blog/2007/8/27/altnet-conference-is-open-for-registration.html" published: "2007-08-27T02:17:39" updated: "2007-08-27T02:17:39" tags: ["Community News"] author: "Roy Osherove" description: "The ALT.NET Open Space Conference is now open for registration , so you should register yourself (free) as soon as possible, only 100 people can fit in.. the rest get into a waiting list. I'll personally be there, and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ALT.NET Conference is open for registration By Roy Osherove August 27, 2007 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published August 27, 2007; technical details may be outdated. The [ALT.NET Open Space Conference is now open for registration](http://www.altnetconf.com/), so you should register yourself (free) as soon as possible, only 100 people can fit in.. the rest get into a waiting list. ![image](https://osherove.com/img/wb/sp.net_blogs_rosherove_WindowsLiveWriter_ALT.NETConferenceisopenforregistration_ACC4_image_thumb.png) I'll personally be there, and so will some of my favorite people to talk to, plus some semi vertical celebrities like [James Newkirk](http://blogs.msdn.com/jamesnewkirk/) ( The artist previously known as the maintainer of NUnit), [Martin Fowler](http://www.martinfowler.com/) (needs no introduction..) and others. Should be fun! ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Sep 26, 2007 ### [The Art Of Unit Testing - Available to Purchase Online Now](https://osherove.com/blog/2007/9/26/the-art-of-unit-testing-available-to-purchase-online-now.html) - Aug 27, 2007 ### [Upcoming Talks Update: August 2007](https://osherove.com/blog/2007/8/27/upcoming-talks-update-august-2007.html) - Aug 26, 2007 ### [Video: In memory of David Boschmans](https://osherove.com/blog/2007/8/26/video-in-memory-of-david-boschmans.html) - Aug 23, 2007 ### [Ask An ASP.NET Expert Live](https://osherove.com/blog/2007/8/23/ask-an-aspnet-expert-live.html) --- title: "Video: In memory of David Boschmans" url: "https://osherove.com/blog/2007/8/26/video-in-memory-of-david-boschmans.md" canonical: "https://osherove.com/blog/2007/8/26/video-in-memory-of-david-boschmans.html" published: "2007-08-26T13:14:10" updated: "2007-08-26T13:14:10" tags: ["Community News"] author: "Roy Osherove" description: "A little while ago I wrote about the passing away of David Boschmans , whom I got to meet during TechEd and DevDays. There is a Flickr photo group of David's photos and I thought I'd create a little montage of the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: In memory of David Boschmans By Roy Osherove August 26, 2007 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published August 26, 2007; technical details may be outdated. A little while ago I wrote about [the passing away of David Boschmans](http://weblogs.asp.net/rosherove/archive/2007/08/10/david-boschmans-you-will-be-missed.aspx), whom I got to meet during TechEd and DevDays. There is a [Flickr photo group](http://www.flickr.com/groups/davidboschmans) of David's photos and I thought I'd create a little montage of the photos people put in, as my appreciation for david's work and life. I put it on video, as you can see in this post. This is for you, David. Embedded Flash media from the original post is no longer playable. It makes me wonder [what happens to your blog when you're gone?](http://communityhacker.com/what-will-happen-to-your-blog-when-you-die/) ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Aug 27, 2007 ### [Upcoming Talks Update: August 2007](https://osherove.com/blog/2007/8/27/upcoming-talks-update-august-2007.html) - Aug 27, 2007 ### [ALT.NET Conference is open for registration](https://osherove.com/blog/2007/8/27/altnet-conference-is-open-for-registration.html) - Aug 23, 2007 ### [Ask An ASP.NET Expert Live](https://osherove.com/blog/2007/8/23/ask-an-aspnet-expert-live.html) - Aug 10, 2007 ### [David Boschmans - You will be missed](https://osherove.com/blog/2007/8/10/david-boschmans-you-will-be-missed.html) --- title: "Auto forward emails from exchange to your gmail (or other) email accounts" url: "https://osherove.com/blog/2007/8/23/auto-forward-emails-from-exchange-to-your-gmail-or-other-ema.md" canonical: "https://osherove.com/blog/2007/8/23/auto-forward-emails-from-exchange-to-your-gmail-or-other-ema.html" published: "2007-08-23T16:14:05" updated: "2007-08-23T16:14:05" tags: [] author: "Roy Osherove" description: "I work with various clients and some of them have internal email aliases for me. What I usually do is have them automatically forward all my email messages for the internal account to my google email account where it is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Auto forward emails from exchange to your gmail (or other) email accounts By Roy Osherove August 23, 2007 **Historical article** · Originally published August 23, 2007; technical details may be outdated. I work with various clients and some of them have internal email aliases for me. What I usually do is have them automatically forward all my email messages for the internal account to my google email account where it is indexed, searchable and I can reply through there. Some admins don't know how to set up exchange to automaticlaly forward any internal emails  to your external account, so I asked [Daniel Petri](http://www.petri.co.il/), who is a god for sysadmins everywhere. here is his reply, for future reference: > Hi Roy, > > You can do that by creating a contact for your external email (gmail), then, on the user's properties tabs in Active Directory users and computers, go to **Exchange General > Mail Delivery**, and add that contact as a forwarding address. > > Daniel --- title: "Ask An ASP.NET Expert Live" url: "https://osherove.com/blog/2007/8/23/ask-an-aspnet-expert-live.md" canonical: "https://osherove.com/blog/2007/8/23/ask-an-aspnet-expert-live.html" published: "2007-08-23T15:59:20" updated: "2007-08-23T15:59:20" tags: [".NET", "Community", "Community News"] author: "Roy Osherove" description: "If you're interested in having a live chat with some experts on .NET. here's your chance (right now as I'm posting it's starting in about an hour) Ask An ASP.NET Expert Live The Strong Coders Community will be hosting…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ask An ASP.NET Expert Live By Roy Osherove August 23, 2007 In [.NET](https://osherove.com/blog/category/net), [Community](https://osherove.com/blog/category/community), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published August 23, 2007; technical details may be outdated. If you're interested in having a live chat with some experts on .NET. [here's your chance (right now as I'm posting it's starting in about an hour)](http://community.strongcoders.com/blogs/ryan/archive/2007/07/24/august-23-2007-ask-an-expert-live-chat.aspx) **Ask An ASP.NET Expert Live** The Strong Coders Community will be hosting its monthly Ask An Expert Live chat on Thursday, August 23, 2007 at 5:00 PM PDT. Get your tough development questions answered by Microsoft MVPs, ASPInsiders, Regional Directors, and other industry experts. Experts will be on hand to answer your .NET- and Visual Studio-related questions. No off topic questions please. Please note that this chat is not being hosted by Microsoft and as such questions regarding upcoming products and future product specs may not be answered. Thursday, August 23, 2007 5:00 - 6:00 P.M. Pacific Time 8:00 - 9:00 P.M. Eastern Time 00:00 - 01:00 GMT Join the chat room on the day of the chat: MSDN: [www.microsoft.com/communities/chats/chatrooms/msdn.aspx](http://www.microsoft.com/communities/chats/chatrooms/msdn.aspx) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Sep 27, 2007 ### [Pimp My Visual Studio](https://osherove.com/blog/2007/9/27/pimp-my-visual-studio.html) - Sep 17, 2007 ### [Synchronize Team System and ClearCase with the TFS Migration & Synchronization Tool](https://osherove.com/blog/2007/9/17/synchronize-team-system-and-clearcase-with-the-tfs-migration.html) - Aug 8, 2007 ### [Source control hosting heats up: Dynamsoft introduces SourceAnywhere](https://osherove.com/blog/2007/8/8/source-control-hosting-heats-up-dynamsoft-introduces-sourcea.html) - Jul 29, 2007 ### [ALT.NET Conference Announced](https://osherove.com/blog/2007/7/29/altnet-conference-announced.html) --- title: "World's Funniest Youtube Video" url: "https://osherove.com/blog/2007/8/22/worlds-funniest-youtube-video.md" canonical: "https://osherove.com/blog/2007/8/22/worlds-funniest-youtube-video.html" published: "2007-08-22T15:28:58" updated: "2007-08-22T15:28:58" tags: ["Off Topic"] author: "Roy Osherove" description: "I. just. couldn't. stop. laughing. Can you ?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # World's Funniest Youtube Video By Roy Osherove August 22, 2007 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 22, 2007; technical details may be outdated. I. just. couldn't. stop. laughing.  [Can you](http://communityhacker.com/worlds-funniest-dad/)? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 25, 2007 ### [Trading Places](https://osherove.com/blog/2007/10/25/trading-places.html) - Oct 12, 2007 ### [Google Mail For Domains Premium just got bigger storage](https://osherove.com/blog/2007/10/12/google-mail-for-domains-premium-just-got-bigger-storage.html) - Aug 8, 2007 ### [10 Great Conference Talk Titles (and one that's just ok)](https://osherove.com/blog/2007/8/8/10-great-conference-talk-titles-and-one-thats-just-ok.html) - Jul 31, 2007 ### [World's Largest Task Manager](https://osherove.com/blog/2007/7/31/worlds-largest-task-manager.html) --- title: "Be sure to Register for Agile Israel August meeting" url: "https://osherove.com/blog/2007/8/20/be-sure-to-register-for-agile-israel-august-meeting.md" canonical: "https://osherove.com/blog/2007/8/20/be-sure-to-register-for-agile-israel-august-meeting.html" published: "2007-08-20T09:02:36" updated: "2007-08-20T09:02:36" tags: ["Agile", "Agile Israel News", "Agile Related"] author: "Roy Osherove" description: "The Agile Israel user group is coming up end of this Month. Wendy alerted me to EventWax , so I'm going to use them to help manage registration. Find more details about this event here. Register yourself (free) for this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Be sure to Register for Agile Israel August meeting By Roy Osherove August 20, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published August 20, 2007; technical details may be outdated. The [Agile Israel](http://www.agileisrael.org/) user group is coming up end of this Month. [Wendy](http://wundasworld.blogspot.com/) alerted me to [EventWax](http://www.eventwax.com/), so I'm going to use them to help manage registration. [Find more details about this event here.](http://agileisrael.org/cs/blogs/news/archive/2007/08/05/august-2007-agile-israel.aspx) [Register yourself (free) for this event here.](http://agileisrael.eventwax.com/august-2007--agile-israel/register) We have a limit of 70 people. it's already half full. I hope to see you there! ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 4, 2007 ### [Video: Agile Israel - Introduction to Agile, Scrum Planning](https://osherove.com/blog/2007/9/4/video-agile-israel-introduction-to-agile-scrum-planning.html) - Aug 29, 2007 ### [Reminder: Agile Israel meets TODAY](https://osherove.com/blog/2007/8/29/reminder-agile-israel-meets-today.html) - Aug 19, 2007 ### [Get Agile with Nintendo Wii (Craig Larman's London Course)](https://osherove.com/blog/2007/8/19/get-agile-with-nintendo-wii-craig-larmans-london-course.html) - Aug 7, 2007 ### [Speaking at: Agile Development Practices Conference](https://osherove.com/blog/2007/8/7/speaking-at-agile-development-practices-conference.html) --- title: "Get Agile with Nintendo Wii (Craig Larman's London Course)" url: "https://osherove.com/blog/2007/8/19/get-agile-with-nintendo-wii-craig-larmans-london-course.md" canonical: "https://osherove.com/blog/2007/8/19/get-agile-with-nintendo-wii-craig-larmans-london-course.html" published: "2007-08-19T12:23:48" updated: "2007-08-19T12:23:48" tags: ["Agile", "Agile Related"] author: "Roy Osherove" description: "I recently got this email from Skill Matter, and quoting it here entirely, with emphasis of my on on the interesting bits for you readers, who are close enough to London to attend: \"We were wondering if any of your blog…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Get Agile with Nintendo Wii (Craig Larman's London Course) By Roy Osherove August 19, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published August 19, 2007; technical details may be outdated. I recently got this email from Skill Matter, and quoting it here entirely, with emphasis of my on on the interesting bits for you readers, who are close enough to London to attend: > "We were wondering if any of your blog readers would be interested in taking **Craig Larman's Agile Project Management course: Applying Agile and Iterative Practices to project management**. It takes place on **September 11th in London at Skills Matter**. > Craig recently successfully completed managing the world’s largest Agile Project, which was a multi-shore project and entirely managed using Agile principles. Craig will be bringing this experience, combined with over 20 years of experience in Agile & Iterative Project Management, Development, OO Analysis and Design to the class room this September. > Craig is also a popular speaker at many conferences and industry events and the forthcoming courses on Agile Project Management, Test Driven Development and Design Patterns really offer a unique opportunity to learn from Craig in a very intimate setting with plenty of room for discussion and questions and a strong emphasis on practical exercises. > Craig only comes to the UK once per year, to teach this course uniquely with Skills Matter, so if you think this would be of interest to you and your members, please just let us know and we will send you some additional information. **We would also like to offer your readers a free Nintendo Wii if they register before August 27th** when quoting **SKIL-PTC671**.  Also, for every 5th booking that comes from your blog we will offer you a **free space on the course to giveaway or use for yourself**. > Feel free to contact me with any questions. > I look forward to hearing from you! > Best Regards, > Joanna Go | Marketing Executive > [Skills Matter](http://www.skillsmatter.com/) > > \[email removed\] > > " If I get one free space I'll give that one away on my blog. If I get two free spaces - the **second** one will be for me. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Aug 29, 2007 ### [Reminder: Agile Israel meets TODAY](https://osherove.com/blog/2007/8/29/reminder-agile-israel-meets-today.html) - Aug 20, 2007 ### [Be sure to Register for Agile Israel August meeting](https://osherove.com/blog/2007/8/20/be-sure-to-register-for-agile-israel-august-meeting.html) - Aug 7, 2007 ### [Speaking at: Agile Development Practices Conference](https://osherove.com/blog/2007/8/7/speaking-at-agile-development-practices-conference.html) - Aug 5, 2007 ### [August 2007 @ Agile Israel](https://osherove.com/blog/2007/8/5/august-2007-agile-israel.html) --- title: "David Boschmans - You will be missed" url: "https://osherove.com/blog/2007/8/10/david-boschmans-you-will-be-missed.md" canonical: "https://osherove.com/blog/2007/8/10/david-boschmans-you-will-be-missed.html" published: "2007-08-10T09:59:07" updated: "2007-08-10T09:59:07" tags: ["Community News"] author: "Roy Osherove" description: "David Boschmans passed away last week. I personally knew him from two conferences I spoke at, TechEd Europe and DevDays Belgium. David was a great guy, and great to work with. He was the one who'd arrange for stuff to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # David Boschmans - You will be missed By Roy Osherove August 10, 2007 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published August 10, 2007; technical details may be outdated. [David Boschmans](http://blogs.msdn.com/davbosch/default.aspx) passed away last week.  I personally knew him from two conferences I spoke at, TechEd Europe and DevDays Belgium. David was a great guy, and great to work with. He was the one who'd arrange for stuff to happen, get the speakers, and manage tracks at the conferences. He was in his 30s I think, around my age, and he passed away due to a heart condition. I had no idea and I was in a little show when I read the email announcing it. [Here's the official page](http://david.vsdotnet.be/default.aspx) for David, where you can leave a comment. My deepest condolences for the family, and for the Microsoft group which lost a great guy. I will personally miss him at TechEd europe, as I'm sure many others will. I'd like to propose a small, informal event during TechEd Europe this November, for those who knew David. Perhaps go out for a drink to talk aboud David and to remember him. If anyone's up for it, let's do it. ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Aug 26, 2007 ### [Video: In memory of David Boschmans](https://osherove.com/blog/2007/8/26/video-in-memory-of-david-boschmans.html) - Aug 23, 2007 ### [Ask An ASP.NET Expert Live](https://osherove.com/blog/2007/8/23/ask-an-aspnet-expert-live.html) - Jul 22, 2007 ### [Introducing CommunityHacker.Com : Tips on Building online communities and blogs](https://osherove.com/blog/2007/7/22/introducing-communityhackercom-tips-on-building-online-commu.html) - Jul 9, 2007 ### [Danko On Agile and the Agile Israel Community](https://osherove.com/blog/2007/7/9/danko-on-agile-and-the-agile-israel-community.html) --- title: "GeekCon and the Noknok project" url: "https://osherove.com/blog/2007/8/10/geekcon-and-the-noknok-project.md" canonical: "https://osherove.com/blog/2007/8/10/geekcon-and-the-noknok-project.html" published: "2007-08-10T09:10:22" updated: "2007-08-10T09:10:22" tags: [] author: "Roy Osherove" description: "I'll be taking part at the upcoming GeekCon (here's a list of current projects that will be built there). It's my first time there. It takes place over two days, at the wingate institute. the idea is to work,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # GeekCon and the Noknok project By Roy Osherove August 10, 2007 **Historical article** · Originally published August 10, 2007; technical details may be outdated. I'll be taking part at the upcoming [GeekCon](http://www.geekcon.org/) (here's a [list of current projects](http://www.geekcon.org/projects) that will be built there). It's my first time there. It takes place over two days, at the wingate institute. the idea is to work, uninterrupted, in a geek-enabling environment and at the end of the second da show what you were able to build. > "The GeekCon get-together is an invitation-only creative gathering happening the third year in a row. Our goal is to form a critical mass of technically oriented creative talented people that will think up, create and deploy ideas. Or it's a short summer camp for geeks...  Take your pick." My own project: ##### KnockNock - Tap Your password! **KnockNock** project - Passwords recognized as tapping with your fingers on the laptop. The project will use the accelerometers found in various IBM ThinkPads to collect data from the user. It's first use will be to allow the user to enter passwords as a series of taps on the laptop. instead of remembering random characters , the user will just have to remember and tap their favorite short tune. Knocknock will be able to distinguish different users tapping the same tune based on tap strength and angle(hopefully). --- title: "10 Great Conference Talk Titles (and one that's just ok)" url: "https://osherove.com/blog/2007/8/8/10-great-conference-talk-titles-and-one-thats-just-ok.md" canonical: "https://osherove.com/blog/2007/8/8/10-great-conference-talk-titles-and-one-thats-just-ok.html" published: "2007-08-08T03:02:47" updated: "2007-08-08T03:02:47" tags: ["Off Topic"] author: "Roy Osherove" description: "Shoot me, but I'd like to attend one of these presentations at DevTeach Vancouver this year. If only: one of them was accepted, and I was actually going :(" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 10 Great Conference Talk Titles (and one that's just ok) By Roy Osherove August 8, 2007 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 8, 2007; technical details may be outdated. Shoot me, but I'd like to [attend one of these presentations](http://graysmatter.codivation.com/WhatDevTeach2007IsMissingAtDevTeach2007.aspx) at DevTeach Vancouver this year. **If only:** one of them was accepted, and I was actually going :( ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 12, 2007 ### [Google Mail For Domains Premium just got bigger storage](https://osherove.com/blog/2007/10/12/google-mail-for-domains-premium-just-got-bigger-storage.html) - Aug 22, 2007 ### [World's Funniest Youtube Video](https://osherove.com/blog/2007/8/22/worlds-funniest-youtube-video.html) - Jul 31, 2007 ### [World's Largest Task Manager](https://osherove.com/blog/2007/7/31/worlds-largest-task-manager.html) - Jul 19, 2007 ### [Can you spot the Phishing Scam?](https://osherove.com/blog/2007/7/19/can-you-spot-the-phishing-scam.html) --- title: "Source control hosting heats up: Dynamsoft introduces SourceAnywhere" url: "https://osherove.com/blog/2007/8/8/source-control-hosting-heats-up-dynamsoft-introduces-sourcea.md" canonical: "https://osherove.com/blog/2007/8/8/source-control-hosting-heats-up-dynamsoft-introduces-sourcea.html" published: "2007-08-08T02:02:28" updated: "2007-08-08T02:02:28" tags: [".NET"] author: "Roy Osherove" description: "It's usually aimed at the open source crowed with sites like Assembla , SourceForge and others, but now it seems that a new player is in town. Can they make it where others don't charge anything? Kevin Gao from…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Source control hosting heats up: Dynamsoft introduces SourceAnywhere By Roy Osherove August 8, 2007 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published August 8, 2007; technical details may be outdated. It's usually aimed at the open source crowed with sites like [Assembla](http://www.assembla.com/), [SourceForge](http://www.sourceforge.net/) and others, but now it seems that a new player is in town. Can they make it where others don't charge anything? Kevin Gao from [Dynamsoft](http://www.dynamsoft.com/) pinged me by email to tell me that they have a [hosted solution for source control](http://www.dynamsoft.com/Products/SAWhosted_Overview.aspx) which uses SQL server (kinda like [SourceGear Vault](http://www.sourcegear.com/vault/) only hosted). It's interesting to see another player in this space. [Here's what they list](http://www.dynamsoft.com/Products/SAWhosted_Features.aspx) on the features side: "**Key features** - SaaS (Software as a Service) delivery mode - Fully managed service: support, maintenance, backup and disaster recovery all included - High availability: hosted in a N+1 redundant data center - High SourceSafe GUI similarity - High reliability: SQL Server is used to ensure your data integrity - High performance: sign up today and experience it - High security: SSL, password policy - Cross platform: Windows, Linux, Mac, Solaris and any Java compatible platforms - IDE integration: Visual Studio, Eclipse, Dreamweaver plug-in **Key benefits** - Simplify your IT infrastructure - Lower your total cost of ownership and increase your cost predictability - Improve the productivity of your development team - Help your team focus on what you do best - developing your leading applications " It also looks exactly like SourceSafe: ![](https://osherove.com/img/ext/www.dynamsoft.com_help_SAW_20Hosted_Client_Images_Client_20Window.gif) Interesting. Has anyone had any experience with this yet? ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Sep 17, 2007 ### [Synchronize Team System and ClearCase with the TFS Migration & Synchronization Tool](https://osherove.com/blog/2007/9/17/synchronize-team-system-and-clearcase-with-the-tfs-migration.html) - Aug 23, 2007 ### [Ask An ASP.NET Expert Live](https://osherove.com/blog/2007/8/23/ask-an-aspnet-expert-live.html) - Jul 29, 2007 ### [ALT.NET Conference Announced](https://osherove.com/blog/2007/7/29/altnet-conference-announced.html) - Jul 28, 2007 ### [Visual Web GUI Helps me Write in Winform and run as ASP.NET](https://osherove.com/blog/2007/7/28/visual-web-gui-helps-me-write-in-winform-and-run-as-aspnet.html) --- title: "Speaking at: Agile Development Practices Conference" url: "https://osherove.com/blog/2007/8/7/speaking-at-agile-development-practices-conference.md" canonical: "https://osherove.com/blog/2007/8/7/speaking-at-agile-development-practices-conference.html" published: "2007-08-07T09:38:10" updated: "2007-08-07T09:38:10" tags: ["Agile", "Agile Related"] author: "Roy Osherove" description: "I'll be speaking at the upcoming Better Software Agile Development Practices Conference Taking place December 3-6 in Orlando, FL this year. I'll be speaking about: Design for Testability Database Unit Testing (Half day…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Speaking at: Agile Development Practices Conference By Roy Osherove August 7, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published August 7, 2007; technical details may be outdated. I'll be speaking at the upcoming [Better Software Agile Development Practices Conference](http://www.sqe.com/agiledevpractices/) Taking place December 3-6 in Orlando, FL this year. I'll be speaking about: - Design for Testability - Database Unit Testing (Half day Tutorial) - Java & .NET Interop - Bridging the gap (half day tutorial) Should be exciting! Never been to Florida before, and I get to meet lots of very well known Agile folks (Mike Cohn, Johanna Rothman, Esther Derby, Mary Poppendieck and more). ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Aug 20, 2007 ### [Be sure to Register for Agile Israel August meeting](https://osherove.com/blog/2007/8/20/be-sure-to-register-for-agile-israel-august-meeting.html) - Aug 19, 2007 ### [Get Agile with Nintendo Wii (Craig Larman's London Course)](https://osherove.com/blog/2007/8/19/get-agile-with-nintendo-wii-craig-larmans-london-course.html) - Aug 5, 2007 ### [August 2007 @ Agile Israel](https://osherove.com/blog/2007/8/5/august-2007-agile-israel.html) - Aug 3, 2007 ### [ClassTester - Test automatically all the stuff you don't bother testing with hand written tests](https://osherove.com/blog/2007/8/3/classtester-test-automatically-all-the-stuff-you-dont-bother.html) --- title: "August 2007 @ Agile Israel" url: "https://osherove.com/blog/2007/8/5/august-2007-agile-israel.md" canonical: "https://osherove.com/blog/2007/8/5/august-2007-agile-israel.html" published: "2007-08-05T04:06:08" updated: "2007-08-05T04:06:08" tags: ["Agile", "Agile Israel News", "Agile Related"] author: "Roy Osherove" description: "It's my pleasure to re-announce the Agile Israel user group. See the full announcement (with maps) over here on the agile news blog . When? August 29, 2007, 18:00- 21:00 Where? Ohel Shem Ramat Gan, Eshkol Hapais ( more…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # August 2007 @ Agile Israel By Roy Osherove August 5, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published August 5, 2007; technical details may be outdated. It's my pleasure to re-announce the Agile Israel user group. **See the full announcement**(with maps) over here on [the agile news blog](http://agileisrael.org/cs/blogs/news/archive/2007/08/05/august-2007-agile-israel.aspx). When? August 29, 2007, 18:00- 21:00 Where? Ohel Shem Ramat Gan, Eshkol Hapais ([more info](http://www.ohel-shem.com/subjects/eshkol/main/)) What do we eat? Cookies and coffee.. **18:00 - 19:15 Introduction to Agile Methodologies and Concepts** _by [Roy Osherove](http://www.iserializable.com/), Agile Lead, Sela_ **19:30 - 20:45 Scrum Planning** _by [Danny Kovatch](http://agileisrael.org/blogs/danko) (Danko), Agile Coach, Sela_ If you are planning to show up, PLEASE send an email to \[email removed\] and let us know. We need to plan for seating. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Aug 19, 2007 ### [Get Agile with Nintendo Wii (Craig Larman's London Course)](https://osherove.com/blog/2007/8/19/get-agile-with-nintendo-wii-craig-larmans-london-course.html) - Aug 7, 2007 ### [Speaking at: Agile Development Practices Conference](https://osherove.com/blog/2007/8/7/speaking-at-agile-development-practices-conference.html) - Aug 3, 2007 ### [ClassTester - Test automatically all the stuff you don't bother testing with hand written tests](https://osherove.com/blog/2007/8/3/classtester-test-automatically-all-the-stuff-you-dont-bother.html) - Jul 29, 2007 ### [ALT.NET Conference Announced](https://osherove.com/blog/2007/7/29/altnet-conference-announced.html) --- title: "Behave# enables Behavior Driven Testing, raises some interesting questions" url: "https://osherove.com/blog/2007/8/4/behave-enables-behavior-driven-testing-raises-some-interesti.md" canonical: "https://osherove.com/blog/2007/8/4/behave-enables-behavior-driven-testing-raises-some-interesti.html" published: "2007-08-04T04:51:46" updated: "2007-08-04T04:51:46" tags: [] author: "Roy Osherove" description: "Update: More on BDD and Behave# from AgileJoe here . AgileJoe pinged me with an email about Behave#, a Behavior-Driven-Development verification API (think NUnit syntax with a more real-world feel of behavior…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Behave\# enables Behavior Driven Testing, raises some interesting questions By Roy Osherove August 4, 2007 **Historical article** · Originally published August 4, 2007; technical details may be outdated. _Update: More on BDD and Behave# from AgileJoe_ [_here_](http://www.lostechies.com/blogs/joe_ocampo/archive/2007/08/07/attempting-to-demystify-behavior-driven-development.aspx)_._ [AgileJoe](http://www.lostechies.com/blogs/joe%5Focampo/) pinged me with an email about [Behave#, a Behavior-Driven-Development verification API](http://www.codeplex.com/BehaveSharp) (think NUnit syntax with a more real-world feel of behavior descriptions). Here's what a "test" might look like using this API: ``` 1: [Test] 2: public void Transfer_to_cash_account() 3: { 4: 5: Account savings = null; 6: Account cash = null; 7: 8: Story transferStory = new Story("Transfer to cash account"); 9: 10: transferStory 11: .AsA("savings account holder") 12: .IWant("to transfer money from my savings account") 13: .SoThat("I can get cash easily from an ATM"); 14: 15: transferStory 16: .WithScenario("Savings account is in credit") 17: 18: .Given("my savings account balance is", 100, delegate(int accountBalance) { savings = new Account(accountBalance); }) 19: .And("my cash account balance is", 10, delegate(int accountBalance) { cash = new Account(accountBalance); }) 20: .When("I transfer to cash account", 20, delegate(int transferAmount) { savings.TransferTo(cash, transferAmount); }) 21: .Then("my savings account balance should be", 80, delegate(int expectedBalance) { Assert.AreEqual(expectedBalance, savings.Balance); }) 22: .And("my cash account balance should be", 30, delegate(int expectedBalance) { Assert.AreEqual(expectedBalance, cash.Balance); }) 23: 24: //Reuse the declarations and associated actions from before 25: .Given("my savings account balance is", 400) 26: .And("my cash account balance is", 100) 27: .When("I transfer to cash account", 100) 28: .Then("my savings account balance should be", 300) 29: .And("my cash account balance should be", 200) 30: 31: transferStory 32: .WithScenario("Savings account is overdrawn") 33: 34: .Given("my savings account balance is", -20) 35: .And("my cash account balance is", 10) 36: .When("I transfer to cash account", 20) 37: .Then("my savings account balance should be", -20) 38: .And("my cash account balance should be", 10); 39: 40: } ``` How it seems to work: - The initial story initialization (lines 8-14) is there to be read by the test reader and to be written to the console. It is the backdrop of this story. - There can be several scennarios run inside a single NUnit test - There can be several tests for a single scenario (the first scenario here has two tests) - When you use a "Given" and "And" you also declare the associated delegate, or actions, that the code should perform. you're basically mapping a piece of test to an action. Later you can reuse that piece of text without needing to declare that action again (see lines 18 and then 25 and then 34). This is essentially creating a DSL (Domain specific language) to be used in the scenario tests. - The full test and its output [can be seen here](http://www.codeplex.com/BehaveSharp). the output is very detailed. I'm not sure if you see it also when the tests pass or only if they fail. In any case, it's very verbose and I think should show only when failing. My notes(and Joe's answers to them in [a newly posted entry)](http://www.lostechies.com/blogs/joe_ocampo/archive/2007/08/07/attempting-to-demystify-behavior-driven-development.aspx): - Would be nice to incorporate this into other frameworks like RhinoMocks, or even to non test-related frameworks, to make them self-testing. - This is a nice API for any behavior-driven code. I'd use it in some sort of a rules engine (some modified version of it) for basic readable rule declaration. - You actually write your own DSL here, which is nice, but it's still developer facing. customers can't deal with this. too technical. I can't hel pbut think that this is exacly the kind of DSL that is enabled by using [Fitnesse along with the DoFixture](http://codebetter.com/blogs/jeremy.miller/archive/2006/07/15/147400.aspx). I'm not sure duplicainog is a good thing here but I'm willing to live with the two in separate until something better that unites them comes along. - Would be nice to have a way to declare some sort of "initalizationTest" where you place all the strings with related delgates into. Wait, there is - use \[SetUp\]. But still feels clunky. - Many strings also means ability to fail in use the right string: maybe use consts but then, that would defeat the purpose... not sure what the best solution here. - I'm not sure that using delegates is the right way to go here. Maybe using actual method references instead of anonymous delegates is better (they are utility methods anyway. Still not sure which would be more readable. - using "then" and "And" means you can have multiple "Asserts" on a given scenario test. I think that also means you get [the problem associated with using multiple asserts in a single test](http://www.google.com/url?sa=t&ct=res&cd=1&url=http%3A%2F%2Fweblogs.asp.net%2Frosherove%2Farchive%2F2005%2F04%2F14%http://weblogs.asp.net/rosherove/archive/2005/04/14/AvoidMultipleAsserts.aspx). I'm not sure if the frameworks helps "swallow" exceptions and moves on to the next asserts or if each exception blows up the entire test. ( so if line 21 throws an exception , will line 22 ever execute?) - I think this syntax will be largely unreadable in VB.NET, which is much more verbose. - Maybe there cold be a tool who would let you write these sentences in excel and then "transfer" them into c# code. that'd be awesome. especially if it was automatic. that might be the bridge to fitnesse I'm looking for. Over all I think the API is very nice. Readable. I like how it "behaves" if you will. It is still rough around the edges, but assuming its already usable and no seious bugs, the only real possible problem may be the "multiple asserts" thing, which I'm not sure is really a problem. But what might inhibit a team fro using it? - Developers who are already used to the NUnit syntax might dislike this syntax or "not get it" - People might think that these tests are not instead of other unit tests - "More tests to write??" - People may not know when to use Behave# over regular unit tests - there should be some simple guidelines on when to use which. - Still today, many developers are not comfortable with using anonymous delegates. - afraid to use it since its so new and only one developer supports it. I think this is a good opportunity to start a real conversation about BDD. - Is BDD testing just unit testing with a more "natural" syntax? Right now it seems to be. - Should BDD separate into developer-facing and customer-facing tests? (behave# vs. fitnesse) - If not, how do we combine these? - it seems that BDD can be used bot for unit testing and integration testing. It blurs the lines between traditional unit testing concepts and integration tests, or, just gives some sort of unified language to do both. it's still up to us to decide what kind of test we'd like to write. - What types of tests is BDD **not** good for? - What other questions should we be asking? --- title: "ClassTester - Test automatically all the stuff you don't bother testing with hand written tests" url: "https://osherove.com/blog/2007/8/3/classtester-test-automatically-all-the-stuff-you-dont-bother.md" canonical: "https://osherove.com/blog/2007/8/3/classtester-test-automatically-all-the-stuff-you-dont-bother.html" published: "2007-08-03T09:12:03" updated: "2007-08-03T09:12:03" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "A dude named Josh sent me an email about a Class Tester he's developed, available here . The idea is to take care of all the things I usually avoid writing unit tests for because it takes too much effort for too little…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ClassTester - Test automatically all the stuff you don't bother testing with hand written tests By Roy Osherove August 3, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published August 3, 2007; technical details may be outdated. A dude named Josh sent me an email about a Class Tester he's developed, [available here](http://www.thejoyofcode.com/Automatically_Unit_Test_your_Model.aspx). The idea is to take care of all the things I usually avoid writing unit tests for because it takes too much effort for too little benefit: > ##### "What it can do: > > - Automatically test properties, spotting any miswired getters or setters > - Increase code coverage, reaching parts manual tests don't even try to > - Supports ignoring specified properties if you have any funky logic in there that needs a manual test > - Tests for **PropertyChanged** events if your class implements **INotifyPropertyChanged** > - Tests constructors and that they map parameters to properties " Looks pretty cool, and might make a fine addition to the unit testing tool set. Thanks Josh! ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Aug 7, 2007 ### [Speaking at: Agile Development Practices Conference](https://osherove.com/blog/2007/8/7/speaking-at-agile-development-practices-conference.html) - Aug 5, 2007 ### [August 2007 @ Agile Israel](https://osherove.com/blog/2007/8/5/august-2007-agile-israel.html) - Jul 29, 2007 ### [ALT.NET Conference Announced](https://osherove.com/blog/2007/7/29/altnet-conference-announced.html) - Jul 19, 2007 ### [Test Driven Development Public Course is open](https://osherove.com/blog/2007/7/19/test-driven-development-public-course-is-open.html) --- title: "Slashdotted, I Mean, StumbledUpon" url: "https://osherove.com/blog/2007/7/31/slashdotted-i-mean-stumbledupon.md" canonical: "https://osherove.com/blog/2007/7/31/slashdotted-i-mean-stumbledupon.html" published: "2007-07-31T13:21:40" updated: "2007-07-31T13:21:40" tags: [] author: "Roy Osherove" description: "Ah, nothing like being Slashdotted (or, should I say, StumbledUpon) to make your day a little bit better. I've already written about it on my community related blog, so I won't repeat. More info here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Slashdotted, I Mean, StumbledUpon By Roy Osherove July 31, 2007 **Historical article** · Originally published July 31, 2007; technical details may be outdated. Ah, nothing like being Slashdotted (or, should I say, StumbledUpon) to make your day a little bit better.  I've already written about it on my community related blog, so I won't repeat. [More info here](http://communityhacker.com/the-slashdot-effect/). --- title: "World's Largest Task Manager" url: "https://osherove.com/blog/2007/7/31/worlds-largest-task-manager.md" canonical: "https://osherove.com/blog/2007/7/31/worlds-largest-task-manager.html" published: "2007-07-31T03:47:03" updated: "2007-07-31T03:47:03" tags: ["Off Topic"] author: "Roy Osherove" description: "Oh, hilarious. Check out the world's largest Task Manager ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # World's Largest Task Manager By Roy Osherove July 31, 2007 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 31, 2007; technical details may be outdated. Oh, hilarious. Check out the [world's largest Task Manager](http://blogs.microsoft.co.il/blogs/urig/archive/2007/07/29/World_2700_s-Biggest-Task-Manager_2100_.aspx). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 22, 2007 ### [World's Funniest Youtube Video](https://osherove.com/blog/2007/8/22/worlds-funniest-youtube-video.html) - Aug 8, 2007 ### [10 Great Conference Talk Titles (and one that's just ok)](https://osherove.com/blog/2007/8/8/10-great-conference-talk-titles-and-one-thats-just-ok.html) - Jul 19, 2007 ### [Can you spot the Phishing Scam?](https://osherove.com/blog/2007/7/19/can-you-spot-the-phishing-scam.html) - Jul 12, 2007 ### [iPhone is an Israeli Brand originally](https://osherove.com/blog/2007/7/12/iphone-is-an-israeli-brand-originally.html) --- title: "Hire me for a day: Two Opportunities" url: "https://osherove.com/blog/2007/7/29/hire-me-for-a-day-two-opportunities.md" canonical: "https://osherove.com/blog/2007/7/29/hire-me-for-a-day-two-opportunities.html" published: "2007-07-29T13:57:02" updated: "2007-07-29T13:57:02" tags: ["Other"] author: "Roy Osherove" description: "I'm looking for consulting or course gigs in two places so I can get where I want to go. If you're interested in me working with you for a day or two, drop me a line to my contact form . Opportunity #1: Austin, Texas,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hire me for a day: Two Opportunities By Roy Osherove July 29, 2007 In [Other](https://osherove.com/blog/category/other) **Historical article** · Originally published July 29, 2007; technical details may be outdated. I'm looking for consulting or course gigs in two places so I can get where I want to go. If you're interested in me working with you for a day or two, drop me a line to [my contact form](https://osherove.com/contact) . Opportunity #1: **Austin, Texas, before or after October 5-7.** (So I can go [here](http://weblogs.asp.net/rosherove/archive/2007/07/29/alt-net-conference-announced.aspx)) Opportunity #2: **Vancouver, Canada, before or after November 26-30** (So I can go [here](http://devteach.com/)) More about what I can help with [here](http://sela.co.il/agile) and [here](http://teamagile.com/). Basically, I can consult for a day or two on anything Agile, unit testing or tdd related (also about .NET internals if you're interested). Also, A 3 day TDD course in .NET or Java is possible. I'll even bring my guitar! ## More in Other [All posts in Other](https://osherove.com/blog/category/other) - Jun 4, 2013 ### [Ugly Code Means Your Product Used to be Successful](https://osherove.com/blog/2013/6/4/ugly-code-means-your-product-used-to-be-successful.html) - Jun 1, 2007 ### [Why I won't be switching to Google RSS Reader](https://osherove.com/blog/2007/6/1/why-i-wont-be-switching-to-google-rss-reader.html) - Jan 22, 2007 ### [New Job - Looking for New People!](https://osherove.com/blog/2007/1/22/new-job-looking-for-new-people.html) --- title: "ALT.NET Conference Announced" url: "https://osherove.com/blog/2007/7/29/altnet-conference-announced.md" canonical: "https://osherove.com/blog/2007/7/29/altnet-conference-announced.html" published: "2007-07-29T13:49:47" updated: "2007-07-29T13:49:47" tags: [".NET", "Agile"] author: "Roy Osherove" description: "Scott Bellware recently announced the ALT.NET Conference , which he's organizing.( What's ALT.NET? ) When? October 5-7, 2007 Where? Austin, Texas (that's all I know for now) The conference will run in the open spaces…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ALT.NET Conference Announced By Roy Osherove July 29, 2007 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published July 29, 2007; technical details may be outdated. Scott Bellware recently [announced the ALT.NET Conference](http://codebetter.com/blogs/scott.bellware/archive/2007/07/24/166002.aspx), which he's organizing.([What's ALT.NET?](http://laribee.com/blog/2007/04/10/altnet/)) When? October 5-7, 2007 Where? Austin, Texas (that's all I know for now) The conference will run in the [open spaces style](http://www.openspaceworld.org/cgi/wiki.cgi?AboutOpenSpace) which means that no one is a speaker, and everyone can speak and organize their own little topic to talk about(as far as I understand). I'm part of the organizing committee (not sure what that means yet either..) along with Ayende, Jeremey,JP and more: - [Jeremy Miller](http://codebetter.com/blogs/jeremy.miller/archive/2007/07/25/announcing-the-alt-net-open-spaces-event.aspx) - [Ayende Rahien](http://www.ayende.com/Blog/) - [Hamilton Verissimo](http://hammett.castleproject.org/) - [Bret Pettichord](http://www.io.com/%7Ewazmo/blog/) - [Jean-Paul Boodhoo](http://www.jpboodhoo.com/blog/) - [David Lareebee](http://laribee.com/blog/) - [James Kovacs](http://www.jameskovacs.com/blog/) - [Raymond Lewallen](http://codebetter.com/blogs/raymond.lewallen/) - [Wendy Friedlander](http://wundasworld.blogspot.com/) It's limited to 100 people, so you better register quick by [listening in to Scott's blog posts](http://codebetter.com/blogs/scott.bellware/rss.aspx) and finding out the moment registration opens. Personally, I'm trying really hard to get there. Since this is free, I'm trying to find a way to finance my trip over there. I've already got a one day consulting gig if I get there, but if anyone want's me to sit with them for a day to consult about anything agile, unit testing, tdd, continuous Integration or .NET internals, I'd be happy to work something out. The people there are the same people that made DevTeach such a unique experience. As it seems right now, I'm not going to made it to DevTeach Vancouver this year(unless you can find me a course you want me to run while I'm there that could pay for my trip over) so this is the closest I can get to this great bunch of people. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 23, 2007 ### [Ask An ASP.NET Expert Live](https://osherove.com/blog/2007/8/23/ask-an-aspnet-expert-live.html) - Aug 8, 2007 ### [Source control hosting heats up: Dynamsoft introduces SourceAnywhere](https://osherove.com/blog/2007/8/8/source-control-hosting-heats-up-dynamsoft-introduces-sourcea.html) - Jul 28, 2007 ### [Visual Web GUI Helps me Write in Winform and run as ASP.NET](https://osherove.com/blog/2007/7/28/visual-web-gui-helps-me-write-in-winform-and-run-as-aspnet.html) - Jul 28, 2007 ### [Hotfix request Web Submission form could be a life saver](https://osherove.com/blog/2007/7/28/hotfix-request-web-submission-form-could-be-a-life-saver.html) --- title: "If you make it in this game, you could be a good developer" url: "https://osherove.com/blog/2007/7/29/if-you-make-it-in-this-game-you-could-be-a-good-developer.md" canonical: "https://osherove.com/blog/2007/7/29/if-you-make-it-in-this-game-you-could-be-a-good-developer.html" published: "2007-07-29T11:39:44" updated: "2007-07-29T11:39:44" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Here's a game that totally feels like software development. Can you tell why? Play Triangles" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # If you make it in this game, you could be a good developer By Roy Osherove July 29, 2007 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published July 29, 2007; technical details may be outdated. Here's a game that totally feels like software development. Can you tell why? [Play Triangles](http://www.gamershood.com/flashgames/3723) ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Sep 17, 2007 ### [Synchronize Team System and ClearCase with the TFS Migration & Synchronization Tool](https://osherove.com/blog/2007/9/17/synchronize-team-system-and-clearcase-with-the-tfs-migration.html) - Sep 13, 2007 ### [Tip: Easily change logon settings for all users on your machine](https://osherove.com/blog/2007/9/13/tip-easily-change-logon-settings-for-all-users-on-your-machi.html) - Jul 28, 2007 ### [Visual Web GUI Helps me Write in Winform and run as ASP.NET](https://osherove.com/blog/2007/7/28/visual-web-gui-helps-me-write-in-winform-and-run-as-aspnet.html) - Jun 24, 2007 ### [Regionerate - Free Code Layout Addin for VS.NET](https://osherove.com/blog/2007/6/24/regionerate-free-code-layout-addin-for-vsnet.html) --- title: "Visual Web GUI Helps me Write in Winform and run as ASP.NET" url: "https://osherove.com/blog/2007/7/28/visual-web-gui-helps-me-write-in-winform-and-run-as-aspnet.md" canonical: "https://osherove.com/blog/2007/7/28/visual-web-gui-helps-me-write-in-winform-and-run-as-aspnet.html" published: "2007-07-28T08:33:48" updated: "2007-07-28T08:33:48" tags: [".NET", "General Software Devel..."] author: "Roy Osherove" description: "If you know me well enough you'll know that I'm not a big fan of website development. I just hate the idea that you need to learn about 17 different languages and paradigms to be able to show a simple progress bar when…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Visual Web GUI Helps me Write in Winform and run as ASP.NET By Roy Osherove July 28, 2007 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published July 28, 2007; technical details may be outdated. If you know me well enough you'll know that I'm not a big fan of website development. I just hate the idea that you need to learn about 17 different languages and paradigms to be able to show a simple progress bar when doing a long running action. I'm a winforms guy. always been. That's not to say I can't program my way out of a non-scalable server, but when it comes to **web user interfaces** I just suck. Everything is much harder than it should be. I dislike JavaScript, Html, Ajax and all that goes with them. That's why I'm happy to write About [Visual Web Gui](http://www.visualwebgui.com/LinkClick.aspx?link=314&tabid=330&mid=834), as part of an [ad campaign on this blog](http://weblogs.asp.net/rosherove/pages/Advertise.aspx), which only involves software that I think is worthwhile to begin with. Wanna see it in action and then read about it? [click here to see what it can do](http://samples.visualwebgui.com/MainForm.wgx). [Visual Web GUI](http://www.visualwebgui.com/LinkClick.aspx?link=314&tabid=330&mid=834) developed a solution that basically allows you to code your program in winforms, and then,at compilation time, it is transformed into an ASP.NET application which behaves exactly as the winforms application does. They provide their own project templates for control library, Visual Web GUI(VWG)  application and a VWG client project for winform deployment. [Here's a movie](http://www.visualwebgui.com/LinkClick.aspx?link=314&tabid=330&mid=834) that shows this in action. The main idea is that if you know your way around windows forms, but not around ASP.NET, you shouldn't have to invest a lot of time to use your knowledge to build ajax-enabled web sites that look and behave in a professional manner. They created a list of predefined Visual Web GUI controls (and you can create your own) that map to normal windos forms controls. So instead of creating a Form, I create a VWG form. Instead of adding a textbox, I add a VWG textbox and so on. At build time, the controls are "translated" into ASP.NET code and JavaScript code, and the forms are run under _FormName.wgx_ extensions (which you map in IIS to the ASP.NET runtime). The nice thing about it is that scenarios such as long running actions, progress bars and async notifications become a breeze. For example, to fill a list box on a web page in an async manner, I started a thread that fills it slowly. then, to make sure the form was refreshing to show the new items, I just added a timer to my form and enabled it for 1 second intervals. When I ran it as a web application, it just worked, which to me is a big win. Another feature of this (which you may or may not like) is that the resulting web applications have the same look and feel of winform applications. Here's a screenshot from a project based on VWG called "[Enterprise manager](http://www.visualwebgui.com/Community/Projects/VisualWebGuiProjectVEM/ScreenShots/tabid/180/Default.aspx).   [Take a look](http://www.visualwebgui.com/Community/Projects/VisualWebGuiProjectVEM/ScreenShots/tabid/180/ctl/View/mid/628/ItemID/3/Default.aspx). It's really easy to create modal dialogs, get data between them, and it sure looks like a winform in a browser. Fortunately, you don't have to have a desktop look, [as noted in their blog](http://www.visualwebgui.com/Community/Blogs/tabid/167/EntryID/4/Default.aspx), because VWG supports themes and flavors. The most interesting thing about it: **It's open source**! When you download the VWG SDK, you download it [directly from sourceforge](http://sourceforge.net/projects/visualwebgui). THE SDK comes with the predefined controls. I'm not sure what the business model is for this company, but this is one cool piece of work. Visual Web GUI can help change the web development world and make it more usable,reachable and easier than ever. Whether people catch on to it, or add their own controls to it remains to be seen. Meanwhile, it's definitely cutting edge in my book. Update: **Guy Peled** from Visual Web Gui has this to reply on the comments to this post: > "Visual WebGui is fully server based, which means that data access should, by default, be done in the server level. When for example you handle a button click event, the event handler is executed in the server which provides you as a developer with the ability to access your data and update the UI according. Visual WebGui then will automatically update the browser to reflect the changes that you made in the UI. This architecture makes Visual WebGui secured as plain old [ASP.NET](http://asp.net/) applications before the AJAX era, but with the UI behavior expected from a modern AJAX based application. Visual WebGui has many customization mechanisms that allow to divert from the default behavior but in most cases you should not do that." ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 8, 2007 ### [Source control hosting heats up: Dynamsoft introduces SourceAnywhere](https://osherove.com/blog/2007/8/8/source-control-hosting-heats-up-dynamsoft-introduces-sourcea.html) - Jul 29, 2007 ### [ALT.NET Conference Announced](https://osherove.com/blog/2007/7/29/altnet-conference-announced.html) - Jul 28, 2007 ### [Hotfix request Web Submission form could be a life saver](https://osherove.com/blog/2007/7/28/hotfix-request-web-submission-form-could-be-a-life-saver.html) - Jul 12, 2007 ### [Watching your computer breath using FileSystemWatcher](https://osherove.com/blog/2007/7/12/watching-your-computer-breath-using-filesystemwatcher.html) --- title: "Hotfix request Web Submission form could be a life saver" url: "https://osherove.com/blog/2007/7/28/hotfix-request-web-submission-form-could-be-a-life-saver.md" canonical: "https://osherove.com/blog/2007/7/28/hotfix-request-web-submission-form-could-be-a-life-saver.html" published: "2007-07-28T00:21:46" updated: "2007-07-28T00:21:46" tags: [".NET", ".Net 2.0"] author: "Roy Osherove" description: "If Stefano is right , than this form by Microsoft should save plenty of time for people who just need the damn hotfix, yesterday . Microsoft Hotfix request Web Submission form (Request, get hotfix link direct by email…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hotfix request Web Submission form could be a life saver By Roy Osherove July 28, 2007 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published July 28, 2007; technical details may be outdated. If [Stefano is right](http://demiliani.com/blog/archive/2007/07/26/6421.aspx), than this form by Microsoft should save plenty of time for people who just need the damn hotfix, **yesterday**. [Microsoft Hotfix request Web Submission form](https://support.microsoft.com/contactus2/emailcontact.aspx?scid=sw;en;1410&WS=hotfix) (Request, get hotfix link direct by email the day after, no hassle) \[via [Larkware](http://www.larkware.com/dg8/TheDailyGrind1195.aspx)\] ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jul 29, 2007 ### [ALT.NET Conference Announced](https://osherove.com/blog/2007/7/29/altnet-conference-announced.html) - Jul 28, 2007 ### [Visual Web GUI Helps me Write in Winform and run as ASP.NET](https://osherove.com/blog/2007/7/28/visual-web-gui-helps-me-write-in-winform-and-run-as-aspnet.html) - Jul 12, 2007 ### [Watching your computer breath using FileSystemWatcher](https://osherove.com/blog/2007/7/12/watching-your-computer-breath-using-filesystemwatcher.html) - Jun 29, 2007 ### [Israeli .NET Bloggers Update](https://osherove.com/blog/2007/6/29/israeli-net-bloggers-update.html) --- title: "Essential Software to Install on a new computer" url: "https://osherove.com/blog/2007/7/27/essential-software-to-install-on-a-new-computer.md" canonical: "https://osherove.com/blog/2007/7/27/essential-software-to-install-on-a-new-computer.html" published: "2007-07-27T17:01:32" updated: "2007-07-27T17:01:32" tags: ["Cool Tools"] author: "Roy Osherove" description: "Update : Be sure to check out the comments on this post as well. Some good recommendations there (aside from the regular \"just use linux\" trolls) I recently got a new laptop. here's what I installed in the first couple…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Essential Software to Install on a new computer By Roy Osherove July 27, 2007 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published July 27, 2007; technical details may be outdated. **Update**: Be sure to check out the **comments** on this post as well. Some good recommendations there (aside from the regular "just use linux" trolls) I recently got a new laptop. here's what I installed in the first couple of days: Installed: \- Office 2007 \- [FireFox](http://getfirefox.com/) (with addons below) > o [TabMix Plus](http://addons.mozilla.org/firefox/addon/1122) (Control tabs in firefox better) > o [AdBlock](https://addons.mozilla.org/firefox/addon/10) (Block any annoying ad forever from showing on your browser) > o [IE Tab](https://addons.mozilla.org/firefox/addon/1419) (Allows using IE inside firefox for those "special" sites out there \- [MemInfo tray](http://www.carthagosoft.net/meminfo.htm) (Shows memory usage in tray icon) \- [Free Download Manager](http://www.freedownloadmanager.org/) (As the name says) \- [BsPlayer](http://www.bsplayer.org/) (Great player, I have the pro version. Beats VLC and Media Player Classic for my taste). **Note**: the free version contains ads! \- [KLite codec pack](http://www.free-codecs.com/download/K_Lite_Codec_Pack.htm) (Codecs to watch every type of movie format out there) \- [Total Commander](http://www.ghisler.com/) (The best file manager out there for my taste, though [there are others people like](http://weblogs.asp.net/rosherove/archive/2006/12/21/total-commander-the-ultimate-file-manager.aspx)) \- [Notepad2](http://www.flos-freeware.ch/notepad2.html) (Fast, free notepad replacement with syntax highlighting and not much else) \- [IrfanView](http://www.irfanview.com/) (Blazing Fast, free picture viewing program) \- [DirectFolders](http://www.directfolders.com/) (not free, but awesome extension for explorer which makes file and folder dialogs in windows **actually usable**) \- QuickTime (And remove all the crap that it installs using Autoruns from sysinternals) \- [SysInternals Suite](http://www.microsoft.com/technet/sysinternals/utilities/sysinternalssuite.mspx) (best free set of tools for admins and developers to find out system info and do system things you never thought possible) > o Use autoruns to remove all the crap \- [Camtasia](http://www.techsmith.com/camtasia.asp) (Great software for recording screen movies. You might also want to see if [windows media encoder](http://www.microsoft.com/windows/windowsmedia/9series/encoder/default.aspx) would work for you, as it's free) \- [SnagIt](http://www.techsmith.com/screen-capture.asp) (Quickly and easily take snapshots of the screen, from the same company who brought you Camtasia. lots of [free alternatives](http://www.hanselman.com/blog/ScottHanselmans2006UltimateDeveloperAndPowerUsersToolListForWindows.aspx) for this out there) \- [CoolEdit pro](http://www.syntrillium.com/) (old version of now Adobe's audio editing tool) \- [WinRar](http://win-rar.com/) \- [TortoiseSVN](http://tortoisesvn.net/) ( Free and open source source control client for subversion) \- [AnyDVD](http://www.slysoft.com/anydvd.html) (So I can see DVDs from ANY region on my DVD drive. I can't believe I need such software at all, but reality sucks) \- [Keepass](http://keepass.info/) (For keeping my passwords safe) \- [LiveWriter](http://writer.live.com/) (blog posting client from microsoft) \- Live Messenger (with addons below) > o [Insert code from visual studio](http://gallery.live.com/liveItemDetail.aspx?li=1f57bd9b-a692-4593-9e9e-e2962d9c0eee&bt=9&pl=8) > o [Enable Spelling](http://weblogs.asp.net/rosherove/archive/2007/06/03/utility-launch-windows-live-writer-with-spelling-enabled.aspx) (this seems to be no longer needed on my latest install of live writer. cool!) \- [Google Desktop Search](http://desktop.google.com/) (I can't live without my Ctrl-Ctrl shortcut anymore. This also replaces any start-run replacements out there) \- VS 2005 > o [Resharper](http://www.jetbrains.com/resharper) (Best VS 2005 addin since [CodeSmart for VB6](http://axtools.com/)) \- [FolderShare](https://www.foldershare.com/) (Sync files and folders automatically on multiple machines) [\- MS Virtual PC](http://www.microsoft.com/windows/products/winfamily/virtualpc/default.mspx) \- [VMWare](http://www.vmware.com/) (what MS Virtual PC wants to be when it grows up) [\- Omea reader](http://www.jetbrains.com/omea/reader/)(Great rss and news reader from the people who brought you resharper) Am I missing something? ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Nov 29, 2007 ### [IL Debug Visualizer for Compiled Lambda Expressions, MethodBase and DynamicMethod](https://osherove.com/blog/2007/11/29/il-debug-visualizer-for-compiled-lambda-expressions-methodba.html) - Sep 27, 2007 ### [Pimp My Visual Studio](https://osherove.com/blog/2007/9/27/pimp-my-visual-studio.html) - Jun 24, 2007 ### [Regionerate - Free Code Layout Addin for VS.NET](https://osherove.com/blog/2007/6/24/regionerate-free-code-layout-addin-for-vsnet.html) - Jun 19, 2007 ### [Get latest version on checkout with team system source control](https://osherove.com/blog/2007/6/19/get-latest-version-on-checkout-with-team-system-source-contr.html) --- title: "Introducing CommunityHacker.Com : Tips on Building online communities and blogs" url: "https://osherove.com/blog/2007/7/22/introducing-communityhackercom-tips-on-building-online-commu.md" canonical: "https://osherove.com/blog/2007/7/22/introducing-communityhackercom-tips-on-building-online-commu.html" published: "2007-07-22T14:54:52" updated: "2007-07-22T14:54:52" tags: ["Community News"] author: "Roy Osherove" description: "It seems that these days I've been doing a lot around community rather than just plain coding or managing teams. I'm even helping a company create its own community and things seem to be going well. Combine that with…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing CommunityHacker.Com : Tips on Building online communities and blogs By Roy Osherove July 22, 2007 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published July 22, 2007; technical details may be outdated. It seems that these days I've been doing a lot around community rather than just plain coding or managing teams. I'm even helping a company [create its own community](http://blog.mainsoft.com/) and things seem to be going well. Combine that with the fact that many people keep asking me about blogging strategies, software, techniques, best practices and creating online communities, and you'll get the notion that maybe there's a whole section of life out there that I'm starting to get pretty invested in - Creating online communities. There's a lot I've been learning about, and that I want to share, but I feel like this blog is not the right place for it, because it's just way off topic, and there's a lot of stuff to say. So I've started a new blog. It's called [Community Hacker](http://communityhacker.com/). It's going to be my writing pad for everything that has to do with creating communities, buzz and conversations online from what I've learned so far. There's already some stuff out there, and I feel like there's a lot still left for me to write. [ Subscribe to community hacker](http://feeds.communityhacker.com/communityhacker) **Why would someone want to read it?** - You are planning to start an online community for your company to create some buzz around your products, but you have no idea where to start. - You'd like to open a blog and are looking for tips on what makes for good blogs. - You have an existing blog and would like to learn how to make some money off of it. I'll have tips on that. - You'd like to see your blog get more popular, but not sure why no one knows it exists. I'll give examples. - You build online communities for a living, and would like to learn stuff you didn't think about (or teach me stuff through the comments) -  I'm actually open to suggestions. The blog engines supports multiple authors, so if you're interested in contributing some content to the blog, I'm up to try this :) **Here are my reasons:** - have one place I can point people who seek blogging and community advice - A place for me to keep stuff so I don't lose them later (tips, special plugins, cool stories..) - Add a new definition to my online persona, that of a community hacker (as in "hacking away to create a community") - A very deep trial of WordPress, one of the coolest blogging engines I've encountered, and miles ahead of Community Server's features. - My very own brain dump, when I have stuff I just have to share but don't have the right channel for it. - The area of community and messing with online sites and configuring them is simply fun for me. I love mucking around with the site, and playing god with my little studio designs. the site keeps changing and breaking every other day due to my stupid mistakes, but I learn a lot from it. **Aren't there already sites like this?** Not a lot. [ProBlogger.NET](http://problogger.net/) is one of the most famous ones that deals directly with the topics I mention here, but I don't know many that do. Besides, the blog is about me talking about how I see things, sometimes with a very different spin. If nothing else, it will be an experiment for me, getting out of my comfort zone and trying on some new shoes (if you're into bad analogies). ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Aug 23, 2007 ### [Ask An ASP.NET Expert Live](https://osherove.com/blog/2007/8/23/ask-an-aspnet-expert-live.html) - Aug 10, 2007 ### [David Boschmans - You will be missed](https://osherove.com/blog/2007/8/10/david-boschmans-you-will-be-missed.html) - Jul 9, 2007 ### [Danko On Agile and the Agile Israel Community](https://osherove.com/blog/2007/7/9/danko-on-agile-and-the-agile-israel-community.html) - Jul 8, 2007 ### [Introducing Agile Israel Community and blogs site](https://osherove.com/blog/2007/7/8/introducing-agile-israel-community-and-blogs-site.html) --- title: "Can you spot the Phishing Scam?" url: "https://osherove.com/blog/2007/7/19/can-you-spot-the-phishing-scam.md" canonical: "https://osherove.com/blog/2007/7/19/can-you-spot-the-phishing-scam.html" published: "2007-07-19T17:12:58" updated: "2007-07-19T17:12:58" tags: ["Off Topic", "Security"] author: "Roy Osherove" description: "I thought I had it beat, but I only got 9 out of 10 in the \" recognize the phishing scam \" quiz. Interesting! If you don't know what Phishing is, I suggest you take this quiz to find out! [via Amit ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Can you spot the Phishing Scam? By Roy Osherove July 19, 2007 In [Off Topic](https://osherove.com/blog/category/off-topic), [Security](https://osherove.com/blog/category/security) **Historical article** · Originally published July 19, 2007; technical details may be outdated. I thought I had it beat, but I only got 9 out of 10 in the "[recognize the phishing scam](http://www.siteadvisor.com/quizzes/phishing_0707/)" quiz. Interesting! If you don't know what Phishing is, I suggest you take this quiz to find out! \[via [Amit](http://labnol.blogspot.com/2007/07/how-good-are-you-at-recognizing-fake.html)\] ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 8, 2007 ### [10 Great Conference Talk Titles (and one that's just ok)](https://osherove.com/blog/2007/8/8/10-great-conference-talk-titles-and-one-thats-just-ok.html) - Jul 31, 2007 ### [World's Largest Task Manager](https://osherove.com/blog/2007/7/31/worlds-largest-task-manager.html) - Jul 12, 2007 ### [iPhone is an Israeli Brand originally](https://osherove.com/blog/2007/7/12/iphone-is-an-israeli-brand-originally.html) - Jun 1, 2007 ### [Why I won't be switching to Google RSS Reader](https://osherove.com/blog/2007/6/1/why-i-wont-be-switching-to-google-rss-reader.html) --- title: "Test Driven Development Public Course is open" url: "https://osherove.com/blog/2007/7/19/test-driven-development-public-course-is-open.md" canonical: "https://osherove.com/blog/2007/7/19/test-driven-development-public-course-is-open.html" published: "2007-07-19T14:21:01" updated: "2007-07-19T14:21:01" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "I'm happy to announce a public course about Test Driven Development in .NET, being run by Oren Ellenbogen , a personal TDD student of mine who's become quite a master on his own when it comes to TDD and unit testing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven Development Public Course is open By Roy Osherove July 19, 2007 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published July 19, 2007; technical details may be outdated. I'm happy to announce a public course about Test Driven Development in .NET, being run by [Oren Ellenbogen](http://www.lnbogen.com/), a personal TDD student of mine who's become quite a master on his own when it comes to TDD and unit testing techniques. the course takes place in Israel, but let me know if you're interested in having me or Oren fly out somewhere to teach it. I like traveling :) As part of the [Sela Agile](http://www.sela.co.il/Agile) team offerings, [The TDD course](http://sela.co.il/syl/syllabus.aspx?CourseCode=TDDdn3&CategoryID=165) is 3 days long and takes place on the following dates: - 9.9.07 - day 1 (Unit Testing and TDD Basics with NUnit and TestDriven.NET) - 10.9.07 - day 2 (Mock Objects, Interaction Testing, NMock2, manual mocks and more) - 17.9.07 - day 3 (Testing legacy code, integration-unit testing, Fit and Fitnesse and more) For more info and registration (this is open for all!) [see the course details](http://sela.co.il/syl/syllabus.aspx?CourseCode=TDDdn3&CategoryID=165). > "Bring your development team up to par with some of the most productive and successful software development teams in the world. Companies such as Google, Microsoft and that BBC have already realized the potential that lies in Test Driven Development. It’s time you do the same for your team. Use TDD techniques to reduce the amount of bugs in your software, make your developers more productive and your software more stable. Learn how to use frameworks such as NUnit, NMock and Fit\\Fitnesse to help write professional and quality software" And of course, [this fits right in](http://www.theserverside.net/tt/cartoons/10000Lines/10000Lines_archive.html). ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Aug 3, 2007 ### [ClassTester - Test automatically all the stuff you don't bother testing with hand written tests](https://osherove.com/blog/2007/8/3/classtester-test-automatically-all-the-stuff-you-dont-bother.html) - Jul 29, 2007 ### [ALT.NET Conference Announced](https://osherove.com/blog/2007/7/29/altnet-conference-announced.html) - Jul 10, 2007 ### [Wanted: C++ Trainers for Test Driven Development](https://osherove.com/blog/2007/7/10/wanted-c-trainers-for-test-driven-development.html) - Jul 9, 2007 ### [Danko On Agile and the Agile Israel Community](https://osherove.com/blog/2007/7/9/danko-on-agile-and-the-agile-israel-community.html) --- title: "Video Hosting Services: How TechSmith could lose a potential customer" url: "https://osherove.com/blog/2007/7/15/video-hosting-services-how-techsmith-could-lose-a-potential.md" canonical: "https://osherove.com/blog/2007/7/15/video-hosting-services-how-techsmith-could-lose-a-potential.html" published: "2007-07-15T23:29:26" updated: "2007-07-15T23:29:26" tags: [] author: "Roy Osherove" description: "I'm setting up a client with some blogging abilities and screencast abilities, and I've hit a an unexpected snag: I can't find a good video hosting service. By video hosting service I mean I need: Ability to save high…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video Hosting Services: How TechSmith could lose a potential customer By Roy Osherove July 15, 2007 **Historical article** · Originally published July 15, 2007; technical details may be outdated. I'm setting up a client with some blogging abilities and screencast abilities, and I've hit a an unexpected snag: I can't find a good video hosting service. By video hosting service I mean I need: - Ability to save high quality video that can be watched in full screen (wmv is ideal) - Will not be compressed on the server - Will provide me with the ability to embed the video in HTML - The embedded video will "just work" on both IE and FireFox. - The embedded video will "just work" on the most popular blogging engines (Community Server, WordPress etc..) The only thing that comes close is [TechSmith's Screencast.com](http://www.screencast.com/) , which does all the points I mentioned except the last one:  I can't successfully embed their videos in WordPress and watch them on IE Or FireFox.  To top this off, the customer service and sales department isn't being bery attentive: a couple of emails since last week have not yet been answered, which worries me a lot.. Even more worrying: Screencast.com is the only place I could find which meets even half of my needs. Does anyone know something that has the same features? Is anyone from TechSmith reading this? I love SnagIt and Camtasia, but what the hell is up with Screencast.com? --- title: "Watching your computer breath using FileSystemWatcher" url: "https://osherove.com/blog/2007/7/12/watching-your-computer-breath-using-filesystemwatcher.md" canonical: "https://osherove.com/blog/2007/7/12/watching-your-computer-breath-using-filesystemwatcher.html" published: "2007-07-12T13:07:35" updated: "2007-07-12T13:07:35" tags: [".NET", ".Net 2.0", ".Net Original"] author: "Roy Osherove" description: "Breath is the only word that came to mind to describe the regular second to second operations your computer does just to keep itself in the current state while preparing for the next states (in terms of temporary files,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Watching your computer breath using FileSystemWatcher By Roy Osherove July 12, 2007 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 12, 2007; technical details may be outdated. _Breath_ is the only word that came to mind to describe the regular second to second operations your computer does just to keep itself in the current state while preparing for the next states (in terms of temporary files, background processes and more). Here's a nice exercise you can do: - Create a new console application - Paste in this code for the Main() method: ``` static void Main(string[] args) { FileSystemWatcher watcher = new FileSystemWatcher("c:\\"); watcher.IncludeSubdirectories = true; watcher.Changed+=delegate(object sender, FileSystemEventArgs e) { string file = Path.GetFileName(e.FullPath); string dir = Path.GetDirectoryName(e.FullPath); Console.WriteLine("{0} was {1} in {2}",file,e.ChangeType,dir); }; watcher.EnableRaisingEvents = true; Console.Read(); } ``` Press Ctrl+F5 and just watch the screen. Yeah, you have fancier tools([this](http://www.microsoft.com/technet/sysinternals/FileAndDisk/Filemon.mspx) or [this](http://www.microsoft.com/technet/sysinternals/SystemInformation/processmonitor.mspx)) to do this job better, but it's nice to have this kind of ability built into the framework, and it's an eye opener just how much stuff goes on when you don't do _anything_ on your computer. If you're interested in some tips on better usage with the FileSystemWatcher, [take a look here](http://weblogs.asp.net/ashben/archive/2003/10/14/31773.aspx). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jul 28, 2007 ### [Visual Web GUI Helps me Write in Winform and run as ASP.NET](https://osherove.com/blog/2007/7/28/visual-web-gui-helps-me-write-in-winform-and-run-as-aspnet.html) - Jul 28, 2007 ### [Hotfix request Web Submission form could be a life saver](https://osherove.com/blog/2007/7/28/hotfix-request-web-submission-form-could-be-a-life-saver.html) - Jun 29, 2007 ### [Israeli .NET Bloggers Update](https://osherove.com/blog/2007/6/29/israeli-net-bloggers-update.html) - Jun 21, 2007 ### [Blow to open source on VS.NET: VSIP License forbids Open Source](https://osherove.com/blog/2007/6/21/blow-to-open-source-on-vsnet-vsip-license-forbids-open-sourc.html) --- title: "iPhone is an Israeli Brand originally" url: "https://osherove.com/blog/2007/7/12/iphone-is-an-israeli-brand-originally.md" canonical: "https://osherove.com/blog/2007/7/12/iphone-is-an-israeli-brand-originally.html" published: "2007-07-12T01:05:11" updated: "2007-07-12T01:05:11" tags: ["Off Topic"] author: "Roy Osherove" description: "Huh! the iPhone brand was actually invented in Israel . That's interesting to know, in a \"we rule\" kind of way. Then again, if you look at the original iPhone picture on that page then.. not so much ruling." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # iPhone is an Israeli Brand originally By Roy Osherove July 12, 2007 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 12, 2007; technical details may be outdated. Huh! the iPhone brand was actually [invented in Israel](http://coheda.typepad.com/israel/2007/01/the_original_ip.html). That's interesting to know, in a "we rule" kind of way. Then again, if you look at the original iPhone picture on that page then.. not so much ruling. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 31, 2007 ### [World's Largest Task Manager](https://osherove.com/blog/2007/7/31/worlds-largest-task-manager.html) - Jul 19, 2007 ### [Can you spot the Phishing Scam?](https://osherove.com/blog/2007/7/19/can-you-spot-the-phishing-scam.html) - Jun 1, 2007 ### [Why I won't be switching to Google RSS Reader](https://osherove.com/blog/2007/6/1/why-i-wont-be-switching-to-google-rss-reader.html) - May 3, 2007 ### [Pretty amazing demo of 3D sound on your headphones](https://osherove.com/blog/2007/5/3/pretty-amazing-demo-of-3d-sound-on-your-headphones.html) --- title: "Wanted: C++ Trainers for Test Driven Development" url: "https://osherove.com/blog/2007/7/10/wanted-c-trainers-for-test-driven-development.md" canonical: "https://osherove.com/blog/2007/7/10/wanted-c-trainers-for-test-driven-development.html" published: "2007-07-10T09:09:19" updated: "2007-07-10T09:09:19" tags: ["Agile", "Agile Related"] author: "Roy Osherove" description: "You don't have to be a TDD guru to be considered, but you should have the passion to learn what TDD is, besides being a very good C++ developer and living in Israel. Good presentation skills are also nice to have. (we…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Wanted: C++ Trainers for Test Driven Development By Roy Osherove July 10, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 10, 2007; technical details may be outdated. You don't have to be a TDD guru to be considered, but you should have the passion to learn what TDD is, besides being a very good C++ developer and living in Israel. Good presentation skills are also nice to have. (we can always make them better, don't worry) If you're interested, [we're](http://sela.co.il/agile) hiring. Send an email to **royo at sela.co.il** and I'd love to talk to you. If you get in, I will personally train you and make sure you are the best trainer for TDD in C++ in the business (not that there are a lot out there..). ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 29, 2007 ### [ALT.NET Conference Announced](https://osherove.com/blog/2007/7/29/altnet-conference-announced.html) - Jul 19, 2007 ### [Test Driven Development Public Course is open](https://osherove.com/blog/2007/7/19/test-driven-development-public-course-is-open.html) - Jul 9, 2007 ### [Danko On Agile and the Agile Israel Community](https://osherove.com/blog/2007/7/9/danko-on-agile-and-the-agile-israel-community.html) - Jul 8, 2007 ### [Introducing Agile Israel Community and blogs site](https://osherove.com/blog/2007/7/8/introducing-agile-israel-community-and-blogs-site.html) --- title: "Danko On Agile and the Agile Israel Community" url: "https://osherove.com/blog/2007/7/9/danko-on-agile-and-the-agile-israel-community.md" canonical: "https://osherove.com/blog/2007/7/9/danko-on-agile-and-the-agile-israel-community.html" published: "2007-07-09T13:24:19" updated: "2007-07-09T13:24:19" tags: ["Agile", "Agile Israel News", "Community", "Community News"] author: "Roy Osherove" description: "It was lovely watching Danko (Danny Kovatch) speak at the ALM user group this evening. Danko talked about Scrum, planning, teams and managing requirements. He kept the audience wanting more and had great funny movies to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Danko On Agile and the Agile Israel Community By Roy Osherove July 9, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Community](https://osherove.com/blog/category/community), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published July 9, 2007; technical details may be outdated. It was lovely watching [Danko](http://agileisrael.org/blogs/danko) (Danny Kovatch) speak at the [ALM user group](http://www.microsoft.com/israel/communities/usergroups/alm.mspx) this evening. Danko talked about Scrum, planning, teams and managing requirements. He kept the audience wanting more and had great funny movies to show. I'm happy to announce here publicly that we (at Sela) were able to convince Danko to Join our [Sela Agile Group](http://sela.co.il/Agile), where he will work as a **Scrum coach, trainer and consultant**. Danko is also the first official blogger on the new [Agile Israel Community Si](http://agileisrael.org/)te, and his blog can be found [here](http://agileisrael.org/blogs/danko). He writes in Hebrew which is a good thing because there aren't a lot of agile blogs in Hebrew. If you're interested in opening your own blog on Agile Israel, send me an email to **Roy at agileisrael.org**. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 19, 2007 ### [Test Driven Development Public Course is open](https://osherove.com/blog/2007/7/19/test-driven-development-public-course-is-open.html) - Jul 10, 2007 ### [Wanted: C++ Trainers for Test Driven Development](https://osherove.com/blog/2007/7/10/wanted-c-trainers-for-test-driven-development.html) - Jul 8, 2007 ### [Introducing Agile Israel Community and blogs site](https://osherove.com/blog/2007/7/8/introducing-agile-israel-community-and-blogs-site.html) - Jun 25, 2007 ### [Implementing Unit Test MetaData using XtUnit custom attributes](https://osherove.com/blog/2007/6/25/implementing-unit-test-metadata-using-xtunit-custom-attribut.html) --- title: "Introducing Agile Israel Community and blogs site" url: "https://osherove.com/blog/2007/7/8/introducing-agile-israel-community-and-blogs-site.md" canonical: "https://osherove.com/blog/2007/7/8/introducing-agile-israel-community-and-blogs-site.html" published: "2007-07-08T23:49:19" updated: "2007-07-08T23:49:19" tags: ["Agile", "Community", "Community News"] author: "Roy Osherove" description: "I'm happy to introduce the Agile Israel Community site. It has blogs, forums, files and more. The site is located at : www.Agileisrael.org . It will also contain group meeting announcements, agile development news,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing Agile Israel Community and blogs site By Roy Osherove July 8, 2007 In [Agile](https://osherove.com/blog/category/agile), [Community](https://osherove.com/blog/category/community), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published July 8, 2007; technical details may be outdated. I'm happy to introduce the Agile Israel Community site. It has blogs, forums, files and more. The site is located at : [www.Agileisrael.org](http://www.agileisrael.org/) . It will also contain group meeting announcements, agile development news, agile conferences announcements and more. But its mostly about you. If you'd like to share your agile experiences, things you learned the hard way, resources, slides, and whatever else you'd like, you can freely open a blog there and start writing **today**. If you'd like to open a blog at [Agile Israel](http://agileisrael.org/), do the following: - Register as [a new user](http://agileisrael.org/cs/user/CreateUser.aspx?ReturnUrl=) on this site - Send an email to \[email removed\]  with - Your new user name - requested blog title and blog url (/blogs/blogurl) - Mention if you'd like the blog in hebrew or not (we are still working out the kinks of right-to-left stuff, but it will work for both browsers well eventually!) You can also simply register as a new user and get write access to the forums. let me know if you're interested in managing one of the forums, or have a forum suggestion. Roy. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 10, 2007 ### [Wanted: C++ Trainers for Test Driven Development](https://osherove.com/blog/2007/7/10/wanted-c-trainers-for-test-driven-development.html) - Jul 9, 2007 ### [Danko On Agile and the Agile Israel Community](https://osherove.com/blog/2007/7/9/danko-on-agile-and-the-agile-israel-community.html) - Jun 25, 2007 ### [Implementing Unit Test MetaData using XtUnit custom attributes](https://osherove.com/blog/2007/6/25/implementing-unit-test-metadata-using-xtunit-custom-attribut.html) - Jun 25, 2007 ### [Unit Test Tip: Encode test data as part of your test xml comments](https://osherove.com/blog/2007/6/25/unit-test-tip-encode-test-data-as-part-of-your-test-xml-comm.html) --- title: "Wanna work at TypeMock?" url: "https://osherove.com/blog/2007/7/2/wanna-work-at-typemock.md" canonical: "https://osherove.com/blog/2007/7/2/wanna-work-at-typemock.html" published: "2007-07-02T12:25:31" updated: "2007-07-02T12:25:31" tags: [] author: "Roy Osherove" description: "The TypeMock crew is looking for new people to join the team. Here's Eli's blog post about it. I'd say if you're a .NET or C++ developer who knows what unit testing is and what mock objects are, and are pretty darn good…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Wanna work at TypeMock? By Roy Osherove July 2, 2007 **Historical article** · Originally published July 2, 2007; technical details may be outdated. The [TypeMock](http://www.typemock.com/) crew is looking for new people to join the team. [Here's Eli's blog post](http://www.elilopian.com/2007/07/02/typemock-is-expanding/) about it. I'd say if you're a .NET or C++ developer who knows what unit testing is and what mock objects are, and are pretty darn good at what you do, this job might be a cool job to have.. --- title: "Israeli .NET Bloggers Update" url: "https://osherove.com/blog/2007/6/29/israeli-net-bloggers-update.md" canonical: "https://osherove.com/blog/2007/6/29/israeli-net-bloggers-update.html" published: "2007-06-29T16:30:24" updated: "2007-06-29T16:30:24" tags: [".NET", "Community", "Community News"] author: "Roy Osherove" description: "There are several .NET related Israeli bloggers out there who provide good content but sometimes get missed from people's RSS readers for lack of.. well, knowledge that these blogs exist. Some of them I come accross…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israeli .NET Bloggers Update By Roy Osherove June 29, 2007 In [.NET](https://osherove.com/blog/category/net), [Community](https://osherove.com/blog/category/community), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published June 29, 2007; technical details may be outdated. There are several .NET related Israeli bloggers out there who provide good content but sometimes get missed from people's RSS readers for lack of.. well, knowledge that these blogs exist. Some of them I come accross when I look through my referrer links, some I find by looking at comments on other people's blogs, and some I know personally or have been reading for a long time. Here's a list of israeli .NET bloggers to keep an eye on(most write in english. I've noted who writes in hebrew): - [Ken Egozi](http://www.kenegozi.com/blog/) - mainly ASP.NET content, but also some Castle, MonoRail and ActiveRecord related posts. - [Eran Nachum](http://www.eranachum.com/) - found him thorugh Ken Egozi's blog (as a comment). mostly ASP.NET content. - O[Oren Eini (Ayende)](http://ayende.com/blog) - from high level architecture stuff  to very low level NHibernate specification and code. Sometimes he "writes too fast" for people to understand, but he writes so much you're bound to find something you'd like. - [Justin Angel](http://blogs.microsoft.co.il/blogs/justinangel/) - lots of .NET for newbies stuff, ansering forum questions, and lots of .NET content. this is a real community dude. (Hebrew) - [Arnon Roten Gal Oz](http://www.rgoarchitects.com/blog) - high level architecture and SOA stuff, author of an upcoming SOA book, SOA patterns. - [Udi Dahan](http://udidahan.weblogs.us/) - If you like blogs like Arnon's blog (previous link, you'll like Udi's as well. Same kind of content) - [Guy Burstein](http://blogs.microsoft.co.il/blogs/bursteg/default.aspx) - Great .NET 3.0 and 3.5 content (WCF, WPF, WF, Biztalk etc..). anything cutting edge seems ot find its way into guy's blog. Subscribe to keep updated on the latest .NET technologies.. - [Microsfot Israel User Group News](http://blogs.microsoft.co.il/blogs/usergroups/default.aspx) - A blog managed by guy burstein which has all the news about upcoming user group meetings in israel, downloads and more. Great initiative by guy. - [Shani Rabba (Human Debugger)](http://www.human-debugger.net/) - Lots of .NET debugging and low level stuff I really need to clean my blogroll on the blog main page. it's outdated and most people there have not survived with their blog for any amount of time :( ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jul 28, 2007 ### [Hotfix request Web Submission form could be a life saver](https://osherove.com/blog/2007/7/28/hotfix-request-web-submission-form-could-be-a-life-saver.html) - Jul 12, 2007 ### [Watching your computer breath using FileSystemWatcher](https://osherove.com/blog/2007/7/12/watching-your-computer-breath-using-filesystemwatcher.html) - Jun 21, 2007 ### [Blow to open source on VS.NET: VSIP License forbids Open Source](https://osherove.com/blog/2007/6/21/blow-to-open-source-on-vsnet-vsip-license-forbids-open-sourc.html) - Jun 20, 2007 ### [HTTPSimulator - Simulating HTTP Requests for unit testing made easier](https://osherove.com/blog/2007/6/20/httpsimulator-simulating-http-requests-for-unit-testing-made.html) --- title: "Ubuntu's #1 bug report" url: "https://osherove.com/blog/2007/6/25/ubuntus-1-bug-report.md" canonical: "https://osherove.com/blog/2007/6/25/ubuntus-1-bug-report.html" published: "2007-06-25T17:22:11" updated: "2007-06-25T17:22:11" tags: [] author: "Roy Osherove" description: "Ubuntu's #1 bug report is funny and interesting, in that if it's a joke, it's a cool community. If it's for real, it's an even cooler community. Read some comments while you're there. [via Yosi ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ubuntu's \#1 bug report By Roy Osherove June 25, 2007 **Historical article** · Originally published June 25, 2007; technical details may be outdated. [Ubuntu's #1 bug report](https://bugs.launchpad.net/ubuntu/+bug/1) is funny and interesting, in that if it's a joke, it's a cool community. If it's for real, it's an even cooler community. Read some comments while you're there. \[via [Yosi](http://blogs.microsoft.co.il/blogs/yosit/archive/2007/06/26/16542.aspx)\] --- title: "Implementing Unit Test MetaData using XtUnit custom attributes" url: "https://osherove.com/blog/2007/6/25/implementing-unit-test-metadata-using-xtunit-custom-attribut.md" canonical: "https://osherove.com/blog/2007/6/25/implementing-unit-test-metadata-using-xtunit-custom-attribut.html" published: "2007-06-25T17:10:23" updated: "2007-06-25T17:10:23" tags: ["Agile", "Art Of Unit Testing", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "Regarding my last post on xml comments used inside a unit test Here's how you can implement the same \"metadata on a test\" equivalent using XtUnit custom attributes (note that you need to inhering from a custom class for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Implementing Unit Test MetaData using XtUnit custom attributes By Roy Osherove June 25, 2007 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published June 25, 2007; technical details may be outdated. Regarding my last post on [xml comments used inside a unit test](http://weblogs.asp.net/rosherove/archive/2007/06/25/unit-test-tip-encode-test-data-as-part-of-your-test-xml-comments.aspx) Here's how you can implement the same "metadata on a test" equivalent using [XtUnit custom attributes](http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx) (note that you need to inhering from a custom class for this): ``` using NUnit.Framework; using XtUnit.Framework.Internal; [TestFixture] public class CustomDataAttributes:TestFixtureBase { [Test] [Data("sql","Select * from categories")] public void useCustomDataAttributes() { string actual = DataAttribute.items["sql"]; string expected = "Select * from categories"; Assert.AreEqual(expected,actual); } } [AttributeUsage(AttributeTargets.Method)] class DataAttribute:ProcessingAttributeBase { private readonly string data = string.Empty; private readonly string name = string.Empty; public string Name {get { return name; }} public string Data { get { return data; } } public DataAttribute(string name, string data) { this.data = data; this.name = name; } public static readonly Dictionary items = new Dictionary(); public static Dictionary Items {get { return items; } } protected override void OnPreProcess() { items[name] = data; } protected override void OnPostProcess() { } } ``` ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 9, 2007 ### [Danko On Agile and the Agile Israel Community](https://osherove.com/blog/2007/7/9/danko-on-agile-and-the-agile-israel-community.html) - Jul 8, 2007 ### [Introducing Agile Israel Community and blogs site](https://osherove.com/blog/2007/7/8/introducing-agile-israel-community-and-blogs-site.html) - Jun 25, 2007 ### [Unit Test Tip: Encode test data as part of your test xml comments](https://osherove.com/blog/2007/6/25/unit-test-tip-encode-test-data-as-part-of-your-test-xml-comm.html) - Jun 25, 2007 ### [ThreadTester with new Ability: StopWhenTrue() and thread polling](https://osherove.com/blog/2007/6/25/threadtester-with-new-ability-stopwhentrue-and-thread-pollin.html) --- title: "Unit Test Tip: Encode test data as part of your test xml comments" url: "https://osherove.com/blog/2007/6/25/unit-test-tip-encode-test-data-as-part-of-your-test-xml-comm.md" canonical: "https://osherove.com/blog/2007/6/25/unit-test-tip-encode-test-data-as-part-of-your-test-xml-comm.html" published: "2007-06-25T15:59:07" updated: "2007-06-25T15:59:07" tags: ["Agile", "Art Of Unit Testing", "Tips & Tricks", "Unit Testing"] author: "Roy Osherove" description: "What a cool idea, and simple too. You can encode various test data as XML comments on your test, and then use them in your test by parsing the XML file generated by the compiler. More details here . Lars Thurop wrote…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Test Tip: Encode test data as part of your test xml comments By Roy Osherove June 25, 2007 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published June 25, 2007; technical details may be outdated. What a cool idea, and simple too. You can encode various test data as XML comments on your test, and then use them in your test by parsing the XML file generated by the compiler. [More details here](http://www.bestbrains.dk/dansk.aspx/Artikler/Using_Files_In_Unit_Tests). Lars Thurop wrote the [CommentReader](http://www.bestbrains.dk/dansk.aspx/Artikler/Using_Files_In_Unit_Tests) which can enable a test that looks like this: ``` /// /// create table Orders ( id int, customer int ); /// [Test] public void TestNonXmlComment() { string content = CommentReader.GetElement("sample"); Assert.AreEqual(@"create table Orders ( id int, customer int );", content.Trim()); } ``` ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 8, 2007 ### [Introducing Agile Israel Community and blogs site](https://osherove.com/blog/2007/7/8/introducing-agile-israel-community-and-blogs-site.html) - Jun 25, 2007 ### [Implementing Unit Test MetaData using XtUnit custom attributes](https://osherove.com/blog/2007/6/25/implementing-unit-test-metadata-using-xtunit-custom-attribut.html) - Jun 25, 2007 ### [ThreadTester with new Ability: StopWhenTrue() and thread polling](https://osherove.com/blog/2007/6/25/threadtester-with-new-ability-stopwhentrue-and-thread-pollin.html) - Jun 24, 2007 ### [Agile Israel Conference 2007 - Call For Speakers](https://osherove.com/blog/2007/6/24/agile-israel-conference-2007-call-for-speakers.html) --- title: "ThreadTester with new Ability: StopWhenTrue() and thread polling" url: "https://osherove.com/blog/2007/6/25/threadtester-with-new-ability-stopwhentrue-and-thread-pollin.md" canonical: "https://osherove.com/blog/2007/6/25/threadtester-with-new-ability-stopwhentrue-and-thread-pollin.html" published: "2007-06-25T11:34:34" updated: "2007-06-25T11:34:34" tags: ["Agile", "Tips & Tricks", "Unit Testing"] author: "Roy Osherove" description: "I've updated The ThreadTester Library with a new ability: StopWhenTrue(). It allows you to periodically poll while all the threads are running (and the test is blocking) and either assert stuff or stop the run midway…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ThreadTester with new Ability: StopWhenTrue() and thread polling By Roy Osherove June 25, 2007 In [Agile](https://osherove.com/blog/category/agile), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published June 25, 2007; technical details may be outdated. I've updated The [ThreadTester](http://weblogs.asp.net/rosherove/archive/2007/06/22/multi-threaded-unit-tests-with-osherove-threadtester.aspx) Library with a new ability: StopWhenTrue(). It allows you to periodically poll while all the threads are running (and the test is blocking) and either assert stuff or stop the run midway when some condition is true.  - Download [source](http://files.osherove.com/downloads/ThreadTester.src.zip) and [binary](http://files.osherove.com/downloads/Osherove.ThreadTester.zip). - Here's the [source in SVN](http://tools.assembla.com/svn/NTestEx). Here's a test that shows how this is possible with the new API: ``` [Test] public void StopWhenTrue_ReturnTrueWhenCountOver1000_AllThreadsStopImmediately() { Counter c = new Counter(); ThreadTester tt = new ThreadTester(); tt.RunBehavior=ThreadRunBehavior.RunForSpecificTime; tt.AddThreadAction(delegate { for (int j = 0; j < 103; j++) { c.Increment(); } Thread.Sleep(50); }); tt.StopWhenTrue(delegate { // you can also assert stuff here Console.WriteLine("currently at " + c.Count); return c.Count > 1000; },100);// check every 100ms //this test will end in less than a second because of our added functionality tt.StartAllThreads(10000); Assert.Greater(c.Count,1000); Assert.Less(c.Count,1050); } ``` ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 25, 2007 ### [Implementing Unit Test MetaData using XtUnit custom attributes](https://osherove.com/blog/2007/6/25/implementing-unit-test-metadata-using-xtunit-custom-attribut.html) - Jun 25, 2007 ### [Unit Test Tip: Encode test data as part of your test xml comments](https://osherove.com/blog/2007/6/25/unit-test-tip-encode-test-data-as-part-of-your-test-xml-comm.html) - Jun 24, 2007 ### [Agile Israel Conference 2007 - Call For Speakers](https://osherove.com/blog/2007/6/24/agile-israel-conference-2007-call-for-speakers.html) - Jun 22, 2007 ### [Multi Threaded Unit Tests with Osherove.ThreadTester](https://osherove.com/blog/2007/6/22/multi-threaded-unit-tests-with-osherovethreadtester.html) --- title: "Cool site: Sound Search" url: "https://osherove.com/blog/2007/6/24/cool-site-sound-search.md" canonical: "https://osherove.com/blog/2007/6/24/cool-site-sound-search.html" published: "2007-06-24T12:14:00" updated: "2007-06-24T12:14:00" tags: [] author: "Roy Osherove" description: "This has nothing to do with anything, but it's cool: You can search sound on the net and get back results with a visual preview of the wav file" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool site: Sound Search By Roy Osherove June 24, 2007 **Historical article** · Originally published June 24, 2007; technical details may be outdated. This has nothing to do with anything, but it's cool: You can [search sound](http://www.findsounds.com/ISAPI/search.dll) on the net and get back results with a visual preview of the wav file --- title: "Agile Israel Conference 2007 - Call For Speakers" url: "https://osherove.com/blog/2007/6/24/agile-israel-conference-2007-call-for-speakers.md" canonical: "https://osherove.com/blog/2007/6/24/agile-israel-conference-2007-call-for-speakers.html" published: "2007-06-24T02:33:06" updated: "2007-06-24T02:33:06" tags: ["Agile", "Community News"] author: "Roy Osherove" description: "This is a public call for speakers for the first Agile Conference in Israel - Agile Israel 2007. We don't have a site yet, but the current date for the conference is (mark your calendars): December 16 2007. The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Israel Conference 2007 - Call For Speakers By Roy Osherove June 24, 2007 In [Agile](https://osherove.com/blog/category/agile), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published June 24, 2007; technical details may be outdated. This is a public call for speakers for the first Agile Conference in Israel - Agile Israel 2007.  We don't have a site yet, but the current date for the conference is (mark your calendars): December 16 2007. The conference will be 2 days long with a pre-conference track and we're considering adding a post-conference track as well. We (as in Myself and Sela, who is helping to organize and sponsor this) are bringing in several speakers from abroad as well as well known Agile folks from Israel. However, I'm looking for speakers for two types of sessions: 1) Breakout sessions - 75 minute sessions 2) Whiteboard sessions (also called Chalk & Talk) - No slides, just you and the audience If you think you can contribute to such a conference and you'd like to talk about anything that's somehow related to Agile development (methodologies, techniques etc..) ping me by email to **Roy at Osherove.com** Also, expect news about the Agile Israel user group, which should be coming soon! ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 25, 2007 ### [Unit Test Tip: Encode test data as part of your test xml comments](https://osherove.com/blog/2007/6/25/unit-test-tip-encode-test-data-as-part-of-your-test-xml-comm.html) - Jun 25, 2007 ### [ThreadTester with new Ability: StopWhenTrue() and thread polling](https://osherove.com/blog/2007/6/25/threadtester-with-new-ability-stopwhentrue-and-thread-pollin.html) - Jun 22, 2007 ### [Multi Threaded Unit Tests with Osherove.ThreadTester](https://osherove.com/blog/2007/6/22/multi-threaded-unit-tests-with-osherovethreadtester.html) - Jun 21, 2007 ### [Que Sera Sera - A song about Agile Development](https://osherove.com/blog/2007/6/21/que-sera-sera-a-song-about-agile-development.html) --- title: "Regionerate - Free Code Layout Addin for VS.NET" url: "https://osherove.com/blog/2007/6/24/regionerate-free-code-layout-addin-for-vsnet.md" canonical: "https://osherove.com/blog/2007/6/24/regionerate-free-code-layout-addin-for-vsnet.html" published: "2007-06-24T00:57:39" updated: "2007-06-24T00:57:39" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "Omer Rauchwerger is a reader of this blog. A while ago he sent me an email about a new addin for visual studio he created called Regionerate which was in private beta at the time. Unfortunately it ended up in my spam…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Regionerate - Free Code Layout Addin for VS.NET By Roy Osherove June 24, 2007 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 24, 2007; technical details may be outdated. [Omer Rauchwerger](http://blog.rauchy.net/) is a reader of this blog. A while ago he sent me an email about a new addin for visual studio he created called [Regionerate](http://www.rauchy.net/regionerate) which was in private beta at the time. Unfortunately it ended up in my spam box and I couldn't find it until today. Now [Regionerate](http://www.rauchy.net/regionerate) is public (and open source) and seems like a cool addin to have in your tool box if you're a neat freak who likes their code to look exactly like they want it too. Here's the [tool site](http://www.rauchy.net/regionerate), and here's the [tool's blog](http://blog.regionerate.net/). It even has a [#Develop](http://www.icsharpcode.net/OpenSource/SD/Default.aspx) plugin, cool! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Sep 27, 2007 ### [Pimp My Visual Studio](https://osherove.com/blog/2007/9/27/pimp-my-visual-studio.html) - Jul 27, 2007 ### [Essential Software to Install on a new computer](https://osherove.com/blog/2007/7/27/essential-software-to-install-on-a-new-computer.html) - Jun 19, 2007 ### [Get latest version on checkout with team system source control](https://osherove.com/blog/2007/6/19/get-latest-version-on-checkout-with-team-system-source-contr.html) - Jun 12, 2007 ### [Real time data on your blog pages visitors](https://osherove.com/blog/2007/6/12/real-time-data-on-your-blog-pages-visitors.html) --- title: "Looking for open source contributors to my projects" url: "https://osherove.com/blog/2007/6/23/looking-for-open-source-contributors-to-my-projects.md" canonical: "https://osherove.com/blog/2007/6/23/looking-for-open-source-contributors-to-my-projects.html" published: "2007-06-23T15:28:57" updated: "2007-06-23T15:28:57" tags: ["Community News", "General Software Devel..."] author: "Roy Osherove" description: "I've been thinking a lot about doing some active open source development, mainly sharing and getting contributions on my various code and tools from people in the community, and providing them as full open sourced…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Looking for open source contributors to my projects By Roy Osherove June 23, 2007 In [Community News](https://osherove.com/blog/category/community-news), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 23, 2007; technical details may be outdated. I've been thinking a lot about doing some active open source development, mainly sharing and getting contributions on my various code and tools from people in the community, and providing them as full open sourced pieces of code. So I went out and started looking for subversion hosting solutions. [this post has a lot of nice options](http://snook.ca/archives/servers/hosted_subversion/). In finally went with hosting it all on [Assembla](http://www.assembla.com/), which freely gives out both subversion and trac support (source control and bug management) with practically no limit on disk space. I've [set up a page](http://weblogs.asp.net/rosherove/pages/roy-s-open-source-projects.aspx) detailing all my open-source ventures, and I'm looking for people to contribute and help make these projects better!  Open Source Projects I am Involved in (red ones are good candidates to get involved in): (Let me know if you'**re interested in contributing** to one of these projects by email to **Roy at osherove.com** )  **1) NTestEx** This project is comprised of several sub projects with different abilities. The source code is hosted via svn at: [http://tools.assembla.com/svn/NTestEx](http://tools.assembla.com/svn/NTestEx)  The projects in it are: \- XtUnit – ([More Info](http://tools.osherove.com/)) \- ThreadTester ([More Info](http://weblogs.asp.net/rosherove/archive/2007/06/22/multi-threaded-unit-tests-with-osherove-threadtester.aspx)) \- FxCopUnit ([More Info](http://tools.osherove.com/)) 2) RegexTools Hosted via svn at : [http://tools.assembla.com/svn/RegexTools](http://tools.assembla.com/svn/RegexTools) contains: \- Regulazy ([More Info](http://tools.osherove.com/)) \- The Regulator ([More Info](http://tools.osherove.com/))       o Old version (2004)      o New version (only source code, was never released) \- Regex Visualizers for VS 2005 ([More Info](http://tools.osherove.com/)) 3) Keyboard Jedi ([more info](http://weblogs.asp.net/rosherove/archive/2007/06/03/train-to-be-a-keyboard-master-with-keyboard-jedi.aspx))          Hosted via svn at: [http://tools.assembla.com/svn/KeyboardJedi](http://tools.assembla.com/svn/KeyboardJedi) 43) Amazoner ([more info](https://osherove.com/))          Hosted via svn at:  http://tools.assembla.com/svn/Amazoner [](http://tools.assembla.com/svn/KeyboardJedi) ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Jun 29, 2007 ### [Israeli .NET Bloggers Update](https://osherove.com/blog/2007/6/29/israeli-net-bloggers-update.html) - Jun 24, 2007 ### [Agile Israel Conference 2007 - Call For Speakers](https://osherove.com/blog/2007/6/24/agile-israel-conference-2007-call-for-speakers.html) - Jun 21, 2007 ### [Blow to open source on VS.NET: VSIP License forbids Open Source](https://osherove.com/blog/2007/6/21/blow-to-open-source-on-vsnet-vsip-license-forbids-open-sourc.html) - Jun 12, 2007 ### [Real time data on your blog pages visitors](https://osherove.com/blog/2007/6/12/real-time-data-on-your-blog-pages-visitors.html) --- title: "Multi Threaded Unit Tests with Osherove.ThreadTester" url: "https://osherove.com/blog/2007/6/22/multi-threaded-unit-tests-with-osherovethreadtester.md" canonical: "https://osherove.com/blog/2007/6/22/multi-threaded-unit-tests-with-osherovethreadtester.html" published: "2007-06-22T09:28:55" updated: "2007-06-22T09:28:55" tags: ["Agile", "Art Of Unit Testing", "General Software Devel..."] author: "Roy Osherove" description: "The title says \"unit tests\" but they are really integration tests, since we rely on the cpu and the context switching mechanisms of the OS to do the work for us, but still ,this tries to solve a scenario many people…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Multi Threaded Unit Tests with Osherove.ThreadTester By Roy Osherove June 22, 2007 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 22, 2007; technical details may be outdated. The title says "unit tests" but they are really integration tests, since we rely on the cpu and the context switching mechanisms of the OS to do the work for us, but still ,this tries to solve a scenario many people have been asking me about. The ThreadTester library helps create tests that use multiple threads. It’s main use is to synchronize and “block” the running test until all the threads have finished their job, or a timeout has occurred. It is designed to make the test developer's life easier with a simple API that is readable and quick to use. It's part of the code I'm developing for [my upcoming book](http://the.artofunittesting.com/). **Download:** [Binaries in zip file](http://files.osherove.com/downloads/Osherove.ThreadTester.zip) [Source code in zip file](http://files.osherove.com/downloads/ThreadTester.src.zip) Source code from svn repository(one of several test libraries there I created): [http://tools.assembla.com/svn/NTestEx](http://tools.assembla.com/svn/NTestEx) Here is the basic usage of this class: 1) add a reference to Osherove.threadtester into your test project. 2) Write a test that looks like this: ``` [Test] public void TwoThreads() { Counter c = new Counter(); ThreadTester tt = new ThreadTester(); tt.AddThreadAction( delegate { for (int i = 0; i < 100; i++) { c.Increment(); Thread.Sleep(15); } }); tt.AddThreadAction( delegate { for (int i = 0; i < 100; i++) { c.Increment(); Thread.Sleep(100); } }); tt.StartAllThreads(22500); } ``` the test above starts two threads and will block until both of them finish their job. The Counter class is a simple class that we'd like to test that only has a count property and an increment method. We want to make sure it is thread safe. Here's a test that starts up 100 threads against counter: ``` [Test] public void HundredThreads() { Counter c = new Counter(); ThreadTester tt = new ThreadTester(); for (int i = 0; i < 100; i++) { tt.AddThreadAction(delegate { for (int j = 0; j < 10; j++) { c.Increment(); Thread.Sleep(new Random(j+1).Next(100,300)); } }); } //this test will run for 22.5 seconds tt.RunBehavior=ThreadRunBehavior.RunForSpecificTime; tt.StartAllThreads(22500); }   ``` #### **ThreadTester** works by getting a delegate from the developer which will be run in a separate thread. You can add as many separate delegates as you’d like. Each one will be run in a separate thread when you call ThreadTester.StartAllThreads(). **AddThreadAction:** Takes a delegate with a void return value and no parameters. In the delegate you write code that would do something that a separate thread would do to your object (like call a method. **RunBehavior:** There are two run behaviors: > **RunUntilAllThreadsFinish**: For each delegate passed in, a thread will be created that will execute that delegate exactly once. When all threads have finished or if a timeout occurs, the ThreadTester will stop blocking it’s “StartAllThreads()” method. > > This behavior is good if you'd like to test your object for a known amount of times. > **RunForSpecificTime**: For each delegate passed in, a thread will be created that will execute that delegate exactly once. When that thread is finished, a **new thread** will be created which will execute that delegate again. This behavior will continue until the timeout specified in the **StartAllThreads**() method has been reached. Then ThreadTester will stop blocking. > > This behavior is good if you'd like to stress test your object for a known amount of elapsed time. Even if all threads finish, they will re-run until the time has elapsed. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 25, 2007 ### [ThreadTester with new Ability: StopWhenTrue() and thread polling](https://osherove.com/blog/2007/6/25/threadtester-with-new-ability-stopwhentrue-and-thread-pollin.html) - Jun 24, 2007 ### [Agile Israel Conference 2007 - Call For Speakers](https://osherove.com/blog/2007/6/24/agile-israel-conference-2007-call-for-speakers.html) - Jun 21, 2007 ### [Que Sera Sera - A song about Agile Development](https://osherove.com/blog/2007/6/21/que-sera-sera-a-song-about-agile-development.html) - Jun 20, 2007 ### [HTTPSimulator - Simulating HTTP Requests for unit testing made easier](https://osherove.com/blog/2007/6/20/httpsimulator-simulating-http-requests-for-unit-testing-made.html) --- title: "Que Sera Sera - A song about Agile Development" url: "https://osherove.com/blog/2007/6/21/que-sera-sera-a-song-about-agile-development.md" canonical: "https://osherove.com/blog/2007/6/21/que-sera-sera-a-song-about-agile-development.html" published: "2007-06-21T13:49:19" updated: "2007-06-21T13:49:19" tags: ["Agile", "General Software Devel..."] author: "Roy Osherove" description: "It's been a while since my last developer song , so I recorded another one that I did during some of my recent talks. This is a song about Agile Development, to the music of \"Que Sera Sera\". Here's the MP3. (2.6 MB)…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Que Sera Sera - A song about Agile Development By Roy Osherove June 21, 2007 In [Agile](https://osherove.com/blog/category/agile), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 21, 2007; technical details may be outdated. It's been a while since [my last developer song](http://weblogs.asp.net/rosherove/archive/2007/05/19/it-s-time-for-violence-a-song-about-databases.aspx), so I recorded another one that I did during some of my recent talks. This is a song about Agile Development, to the music of "Que Sera Sera". [Here's the MP3.](http://files.osherove.com/songs/que_sera_sera_agile.mp3) (2.6 MB) _(Please do not link directly to the mp3 file, but to the url of this post, thanks)_ Other songs I recorded: - [It's Time for Violence - A song about Databases](http://weblogs.asp.net/rosherove/archive/2007/05/19/it-s-time-for-violence-a-song-about-databases.aspx) The lyrics: **Que Sera Sera - A song about Agile Development** _Lyrics by Roy Osherove_ When I was just a new team lead One of the clients came to me Will we succeed? How much will it cost? Can you do it in half the time? **Yes, of course we can** **Whatever you ask will be** **The future is known to me** **What you ask will be** The 2nd week the project ran the client called and asked me this I changed my mind, we need something! Can you do it? You're the man! **Yes... I .. think we can** **If we work really hard we will** **We'll work nights and ignore the pain** **Please don't change your mind again.** On the 10th month the client called and said that he's moving the project.. abroad We're running too late we're doing it wrong it seems like this is our fate **Que sera sera** **Whatever will be will be** **The project moved overseas** **Que sera sera** ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 24, 2007 ### [Agile Israel Conference 2007 - Call For Speakers](https://osherove.com/blog/2007/6/24/agile-israel-conference-2007-call-for-speakers.html) - Jun 22, 2007 ### [Multi Threaded Unit Tests with Osherove.ThreadTester](https://osherove.com/blog/2007/6/22/multi-threaded-unit-tests-with-osherovethreadtester.html) - Jun 20, 2007 ### [HTTPSimulator - Simulating HTTP Requests for unit testing made easier](https://osherove.com/blog/2007/6/20/httpsimulator-simulating-http-requests-for-unit-testing-made.html) - Jun 19, 2007 ### [Art Of Unit Testing Book Available Shortly](https://osherove.com/blog/2007/6/19/art-of-unit-testing-book-available-shortly.html) --- title: "Blow to open source on VS.NET: VSIP License forbids Open Source" url: "https://osherove.com/blog/2007/6/21/blow-to-open-source-on-vsnet-vsip-license-forbids-open-sourc.md" canonical: "https://osherove.com/blog/2007/6/21/blow-to-open-source-on-vsnet-vsip-license-forbids-open-sourc.html" published: "2007-06-21T02:52:27" updated: "2007-06-21T02:52:27" tags: [".NET", "Community News", "General Software Devel..."] author: "Roy Osherove" description: "Microsoft - why can't you feel his pain ? \"For those of you not in the know (AKA, everybody) they recently switched back to the old distribution EULA, which essentially says, 'sorry, no open source' among other inane…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blow to open source on VS.NET: VSIP License forbids Open Source By Roy Osherove June 21, 2007 In [.NET](https://osherove.com/blog/category/net), [Community News](https://osherove.com/blog/category/community-news), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 21, 2007; technical details may be outdated. Microsoft - why can't you [feel his pain](http://codebetter.com/blogs/scott.bellware/archive/2007/06/20/164492.aspx)? > "For those of you not in the know (AKA, everybody) they recently switched back to the old distribution EULA, which essentially says, 'sorry, no open source' among other inane restrictions. " > Gee, thanks Microsoft.  I almost accidentally got productive there for a second.  You really helped me dodge a bullet there! > > Now I get to ship product to my customers who license the source code with the caveat, "Oh, and don't forget that your developers will also need [SharpDevelop](http://sourceforge.net/projects/sharpdevelop/) on their computers to work with the developer test suite." **Update**: Looks like I spoke too soon, as did Scott. See [here](http://blogs.msdn.com/dotnetinterop/archive/2006/01/27/517578.aspx) and [here](http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=810974&SiteID=1) for clarification, as well as in [the comments on Scott's post.](http://codebetter.com/blogs/scott.bellware/archive/2007/06/20/164492.aspx) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jul 12, 2007 ### [Watching your computer breath using FileSystemWatcher](https://osherove.com/blog/2007/7/12/watching-your-computer-breath-using-filesystemwatcher.html) - Jun 29, 2007 ### [Israeli .NET Bloggers Update](https://osherove.com/blog/2007/6/29/israeli-net-bloggers-update.html) - Jun 20, 2007 ### [HTTPSimulator - Simulating HTTP Requests for unit testing made easier](https://osherove.com/blog/2007/6/20/httpsimulator-simulating-http-requests-for-unit-testing-made.html) - Jun 5, 2007 ### [Running Matlab, Python and Tcl scripts from .NET](https://osherove.com/blog/2007/6/5/running-matlab-python-and-tcl-scripts-from-net.html) --- title: "HTTPSimulator - Simulating HTTP Requests for unit testing made easier" url: "https://osherove.com/blog/2007/6/20/httpsimulator-simulating-http-requests-for-unit-testing-made.md" canonical: "https://osherove.com/blog/2007/6/20/httpsimulator-simulating-http-requests-for-unit-testing-made.html" published: "2007-06-20T13:20:40" updated: "2007-06-20T13:20:40" tags: [".NET", "Agile", "Agile Related", "Unit Testing"] author: "Roy Osherove" description: "Phill Haack just released HTTPSimulator - a class to help with running tests against a simulated Http Context, to help simulate requests and more without resorting to needing a web server running for the tests. [via DNK…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # HTTPSimulator - Simulating HTTP Requests for unit testing made easier By Roy Osherove June 20, 2007 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published June 20, 2007; technical details may be outdated. Phill Haack just [released HTTPSimulator](http://haacked.com/archive/2007/06/19/unit-tests-web-code-without-a-web-server-using-httpsimulator.aspx) - a class to help with running tests against a simulated Http Context, to help simulate requests and more without resorting to needing a web server running for the tests. \[via [DNK](http://www.dotnetkicks.com/unittesting/Unit_Test_Web_Code_Without_A_Web_Server_Using_HttpSimulator)\] I like this approach but I also like Phil's comments at the end. Read them. He's right. Also noted: > "originally tried to do all this by using the public APIs. Unfortunately, so many classes are internal or sealed that I had to get my hands dirty and resort to using reflection. Doing so freed me up to finally get certain features working that I could not before." This again goes to the [Testable Object Oriented Design](http://weblogs.asp.net/rosherove/archive/2007/02/25/why-you-should-think-about-ootp-object-oriented-testable-programming.aspx) ([TOOD](http://weblogs.asp.net/rosherove/archive/2007/02/25/why-you-should-think-about-ootp-object-oriented-testable-programming.aspx)) idea that I wrote about. Testable design might mean two categories: - A Test Enableing\\Disabling design (Sealed classes, high coupling etc. is preventing us from writing tests that simulate or stub out parts of the design) - A testable\\non testable design - meaning you can easily or not easily test the parts in the code you'd like to test. In this case the HTTP related classes are test-disablers in that we cannot easily stub out their features to test something that relies on them. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 29, 2007 ### [Israeli .NET Bloggers Update](https://osherove.com/blog/2007/6/29/israeli-net-bloggers-update.html) - Jun 21, 2007 ### [Blow to open source on VS.NET: VSIP License forbids Open Source](https://osherove.com/blog/2007/6/21/blow-to-open-source-on-vsnet-vsip-license-forbids-open-sourc.html) - Jun 5, 2007 ### [Running Matlab, Python and Tcl scripts from .NET](https://osherove.com/blog/2007/6/5/running-matlab-python-and-tcl-scripts-from-net.html) - May 19, 2007 ### [Easier Winform UI Thread Safe Methods with DynamicProxy2 and Osherove.SimpleInterception](https://osherove.com/blog/2007/5/19/easier-winform-ui-thread-safe-methods-with-dynamicproxy2-and.html) --- title: "Art Of Unit Testing Book Available Shortly" url: "https://osherove.com/blog/2007/6/19/art-of-unit-testing-book-available-shortly.md" canonical: "https://osherove.com/blog/2007/6/19/art-of-unit-testing-book-available-shortly.html" published: "2007-06-19T13:04:49" updated: "2007-06-19T13:04:49" tags: ["Agile", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "Parts of it, at least. My upcoming book, The Art Of Unit Testing , has just gone in to the first review cycle, on the 1\\3 complete mark (five chapters complete so far, we want to review and get feedback).I'm excited!…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Art Of Unit Testing Book Available Shortly By Roy Osherove June 19, 2007 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published June 19, 2007; technical details may be outdated. Parts of it, at least. My upcoming book, [The Art Of Unit Testing](http://the.artofunittesting.com/), has just gone in to the first review cycle, on the 1\\3 complete mark (five chapters complete so far, we want to review and get feedback).I'm excited!  It's already been sent out, and I'm sorry to say that the reviewer list is closed already. The good news is that soon, in the coming weeks you should be able to buy the book in parts using Manning's Early Access program, where you can read the book chapters as they come out, talk about things regarding it on the forums, and basically learn with me as I get the book done. The first five chapters will talk about the basic techniques of unit testing with stubs, mock objects, and mock frameworks, with an introduction to all the concepts, using NUnit and Rhino.Mocks as the tools for the samples. Here's an example of a book already available in meap (manning early access program) : - [Arnon'](http://www.rgoarchitects.com/blog/PermaLink,guid,6d682d1b-03d0-4fb4-87fe-6bb74f532424.aspx)s [SOA Patterns book](http://www.manning.com/rotem/) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 21, 2007 ### [Que Sera Sera - A song about Agile Development](https://osherove.com/blog/2007/6/21/que-sera-sera-a-song-about-agile-development.html) - Jun 20, 2007 ### [HTTPSimulator - Simulating HTTP Requests for unit testing made easier](https://osherove.com/blog/2007/6/20/httpsimulator-simulating-http-requests-for-unit-testing-made.html) - Jun 13, 2007 ### [Microsoft eScrum Version 1.0?](https://osherove.com/blog/2007/6/13/microsoft-escrum-version-10.html) - Jun 10, 2007 ### [Tips for Testable code and for testing legacy code](https://osherove.com/blog/2007/6/10/tips-for-testable-code-and-for-testing-legacy-code.html) --- title: "Get latest version on checkout with team system source control" url: "https://osherove.com/blog/2007/6/19/get-latest-version-on-checkout-with-team-system-source-contr.md" canonical: "https://osherove.com/blog/2007/6/19/get-latest-version-on-checkout-with-team-system-source-contr.html" published: "2007-06-19T12:50:03" updated: "2007-06-19T12:50:03" tags: ["Cool Tools", "General Software Devel...", "Team System"] author: "Roy Osherove" description: "The TFS team over at Sela , spearheaded by Tal Gur Arie, had developed a little addin that solves the issue with not getting the latest version of a source file when checking it out. They have their reasons for doing it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Get latest version on checkout with team system source control By Roy Osherove June 19, 2007 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published June 19, 2007; technical details may be outdated. The TFS team over at [Sela](http://www.sela.co.il/) , spearheaded by Tal Gur Arie,  [had developed a little addin](http://sela.co.il/?CategoryID=975&ArticleID=501&Page=1) that solves the issue with not getting the latest version of a source file when checking it out. They [have their reasons for doing it](http://blogs.msdn.com/buckh/archive/2005/08/20/454140.aspx), and there are a couple [other](http://blogs.microsoft.co.il/blogs/srlteam/archive/2007/03/24/TFS-GetLatest-version-on-check_2D00_out-Add_2D00_In.aspx) Addins that do this, but this is the only one i know that asks the user if they actually want this to happen: > "How does it work? When a user checks out files, the Add-in checks if the file version is the latest, if not - a popup message notifies the user that the current file is out of date and if enquires whether he/she would like to perform a "get last version" action. If the user selects _Yes_ the Add-in will perform get last version automatically. " > > [More information here](http://sela.co.il/?CategoryID=975&ArticleID=501&Page=1) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jul 27, 2007 ### [Essential Software to Install on a new computer](https://osherove.com/blog/2007/7/27/essential-software-to-install-on-a-new-computer.html) - Jun 24, 2007 ### [Regionerate - Free Code Layout Addin for VS.NET](https://osherove.com/blog/2007/6/24/regionerate-free-code-layout-addin-for-vsnet.html) - Jun 12, 2007 ### [Real time data on your blog pages visitors](https://osherove.com/blog/2007/6/12/real-time-data-on-your-blog-pages-visitors.html) - Jun 10, 2007 ### [Tips for Testable code and for testing legacy code](https://osherove.com/blog/2007/6/10/tips-for-testable-code-and-for-testing-legacy-code.html) --- title: "Microsoft eScrum Version 1.0?" url: "https://osherove.com/blog/2007/6/13/microsoft-escrum-version-10.md" canonical: "https://osherove.com/blog/2007/6/13/microsoft-escrum-version-10.html" published: "2007-06-13T12:49:51" updated: "2007-06-13T12:49:51" tags: ["Agile", "Agile Related", "General Software Devel..."] author: "Roy Osherove" description: "This looks interesting: Microsoft eScrum Version 1.0 You know, I really hate Microsoft naming conventions. How uncool do they make this sound? I wonder if it has anything to do with Scrum For Team System or is it a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft eScrum Version 1.0? By Roy Osherove June 13, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 13, 2007; technical details may be outdated. This looks interesting: [Microsoft eScrum Version 1.0](http://www.microsoft.com/downloads/details.aspx?familyid=55a4bde6-10a7-4c41-9938-f388c1ed15e9&displaylang=en&tm) You know, I really hate Microsoft naming conventions. How uncool do they make this sound? I wonder if it has anything to do with [Scrum For Team System](http://scrumforteamsystem.com/) or is it a separate endeavor? **Update: From [adamga's blog](http://blogs.msdn.com/adamga/archive/2007/06/13/microsoft-escrum-version-1-0.aspx):** >  Not to be confused with the [Conchango](http://www.conchango.com/Web/Public/Content/Home.aspx) offering, this is eScrum that was developed internally at Microsoft for our internal use, and is now being made available to the public. Included is a process template for Team Foundation Server. \[via [Mike](http://www.larkware.com/dg8/TheDailyGrind1163.aspx)\] ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 20, 2007 ### [HTTPSimulator - Simulating HTTP Requests for unit testing made easier](https://osherove.com/blog/2007/6/20/httpsimulator-simulating-http-requests-for-unit-testing-made.html) - Jun 19, 2007 ### [Art Of Unit Testing Book Available Shortly](https://osherove.com/blog/2007/6/19/art-of-unit-testing-book-available-shortly.html) - Jun 10, 2007 ### [Tips for Testable code and for testing legacy code](https://osherove.com/blog/2007/6/10/tips-for-testable-code-and-for-testing-legacy-code.html) - Jun 7, 2007 ### [List of Unit Testing Frameworks](https://osherove.com/blog/2007/6/7/list-of-unit-testing-frameworks.html) --- title: "Google Search annoys me with useless links" url: "https://osherove.com/blog/2007/6/13/google-search-annoys-me-with-useless-links.md" canonical: "https://osherove.com/blog/2007/6/13/google-search-annoys-me-with-useless-links.html" published: "2007-06-13T12:42:20" updated: "2007-06-13T12:42:20" tags: [] author: "Roy Osherove" description: "I tried to search a great book in google. I got the result I wanted. I right clicked and copied the link. here's what I copied:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Google Search annoys me with useless links By Roy Osherove June 13, 2007 **Historical article** · Originally published June 13, 2007; technical details may be outdated. I tried to search a great book in google. I got the result I wanted. I right clicked and copied the link. here's what I copied: [http://www.google.com/url?sa=t&ct=res&cd=1&url=http%3A%2F%2Fwww.amazon.com%2FWorking-Effectively-Legacy-Robert-Martin%2Fdp%2F0131177052&ei=QkdwRublHpaWQbvXlKED&usg=AFQjCNEFklighJ3ilFfGC7AVeyVuNW6Dfw&sig2=yge94gaRSL3due7FzIPQvw](http://www.google.com/url?sa=t&ct=res&cd=1&url=http%3A%2F%2Fwww.amazon.com%2FWorking-Effectively-Legacy-Robert-Martin%2Fdp%2F0131177052&ei=QkdwRublHpaWQbvXlKED&usg=AFQjCNEFklighJ3ilFfGC7AVeyVuNW6Dfw&sig2=yge94gaRSL3due7FzIPQvw "http://www.google.com/url?sa=t&ct=res&cd=1&url=http%3A%2F%2Fwww.amazon.com%2FWorking-Effectively-Legacy-Robert-Martin%2Fdp%2F0131177052&ei=QkdwRublHpaWQbvXlKED&usg=AFQjCNEFklighJ3ilFfGC7AVeyVuNW6Dfw&sig2=yge94gaRSL3due7FzIPQvw") instead of: [http://www.amazon.com/Working-Effectively-Legacy-Robert-Martin/dp/0131177052](https://www.amazon.com/Working-Effectively-Legacy-Robert-Martin/dp/0131177052 "http://www.amazon.com/Working-Effectively-Legacy-Robert-Martin/dp/0131177052") The reason: I was signed into google to check mail, and when you sign in. google tracks what you search and record it, so they also turn all the links into useless garbage. I actually have to select the link text underneath the search result to get the real link, which sucks big time. Google really can be annoying sometimes. --- title: "Real time data on your blog pages visitors" url: "https://osherove.com/blog/2007/6/12/real-time-data-on-your-blog-pages-visitors.md" canonical: "https://osherove.com/blog/2007/6/12/real-time-data-on-your-blog-pages-visitors.html" published: "2007-06-12T13:49:55" updated: "2007-06-12T13:49:55" tags: ["Community", "Community News", "Cool Tools", "Cool sites"] author: "Roy Osherove" description: "I really like http://whos.amung.us It shows real time data on who's on your site\\blog right now by simply using a little gif file on each page (in the blog template, for example. here are the real time stats for my…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Real time data on your blog pages visitors By Roy Osherove June 12, 2007 In [Community](https://osherove.com/blog/category/community), [Community News](https://osherove.com/blog/category/community-news), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published June 12, 2007; technical details may be outdated. I really like [http://whos.amung.us](http://whos.amung.us/) It shows real time data on who's on your site\\blog right now by simply using a little gif file on each page (in the blog template, for example. here are the real time stats for my blog: [http://whos.amung.us/popular/2baujzs9](http://whos.amung.us/popular/2baujzs9 "http://whos.amung.us/popular/2baujzs9") plus you can see a little gif image on the left of each page that shows how many people are reading this page right now.. very nice! \[via [Amit](http://labnol.blogspot.com/2007/06/know-articles-that-visitors-are.html)\] ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Jul 8, 2007 ### [Introducing Agile Israel Community and blogs site](https://osherove.com/blog/2007/7/8/introducing-agile-israel-community-and-blogs-site.html) - Jun 29, 2007 ### [Israeli .NET Bloggers Update](https://osherove.com/blog/2007/6/29/israeli-net-bloggers-update.html) - May 20, 2007 ### [CodeBetter.Com to win best community award](https://osherove.com/blog/2007/5/20/codebettercom-to-win-best-community-award.html) - May 19, 2007 ### [Impressions from DevTeach - Wow!](https://osherove.com/blog/2007/5/19/impressions-from-devteach-wow.html) --- title: "Debug your Application using a Wiimote" url: "https://osherove.com/blog/2007/6/10/debug-your-application-using-a-wiimote.md" canonical: "https://osherove.com/blog/2007/6/10/debug-your-application-using-a-wiimote.html" published: "2007-06-10T15:10:21" updated: "2007-06-10T15:10:21" tags: [] author: "Roy Osherove" description: "The guys an MainSoft are insanely cool. They developed a product (has a free version) that allows compiling .NET to Java , basically allowing you to have VS 2005 and .NET (VB or C# ) as the front end development…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Debug your Application using a Wiimote By Roy Osherove June 10, 2007 **Historical article** · Originally published June 10, 2007; technical details may be outdated. The guys an [MainSoft](http://dev.mainsoft.com/) are insanely cool. They developed a product (has a free version)[that allows compiling .NET to Java](http://dev.mainsoft.com/Default.aspx?tabid=130), basically allowing you to have VS 2005 and .NET (VB or C# ) as the front end development environment for real Java applications that can run on J2EE servers (that includes full interop with Java from the .NET point of view such as adding Jar References and such). But that's not why I'm talking about them right now. [Rafael Mizrahi](http://rafaelmizrahi.blogspot.com/), the QA Lead at Mainsoft, who's [also a known GarageGeek here in Israel](http://www.garagegeeks.org/), plays true to his nickname, and hacked together a Wiimote powered Visual Studio Debugger. So the same remote that allows you to play Virtual Tennis in Nintendo Wii can now be used to debug and step into your .NET code, and of course, your Java code from .NET using [GrassHopper](http://dev.mainsoft.com/Default.aspx?tabid=130), their application framework). here is the video [he released](http://rafaelmizrahi.blogspot.com/2007/06/wii-debugging-visual-studio-2005-and.html): [![](https://osherove.com/img/video/yt-Y2598d7Pxlk.jpg)Play videoWiimote Debugging in VS2005 & Running .NET on Linux](https://www.youtube.com/watch?v=Y2598d7Pxlk) **P.S** I might start working with Mainsoft in the coming days, should be a lot of fun! --- title: "Tips for Testable code and for testing legacy code" url: "https://osherove.com/blog/2007/6/10/tips-for-testable-code-and-for-testing-legacy-code.md" canonical: "https://osherove.com/blog/2007/6/10/tips-for-testable-code-and-for-testing-legacy-code.html" published: "2007-06-10T13:09:28" updated: "2007-06-10T13:09:28" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Cool Tools", "Unit Testing"] author: "Roy Osherove" description: "I was consulting for a project today, and I was helping the team figure out how to test a method inside their business logic. Here's the thing - it was one of the least testable method's I've seen. It took me about 4 -5…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tips for Testable code and for testing legacy code By Roy Osherove June 10, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published June 10, 2007; technical details may be outdated. I was consulting for a project today, and I was helping the team figure out how to test a method inside their business logic. Here's the thing - it was one of the least testable method's I've seen. It took me about 4 -5 hours to refactor the code to make it testable,and in the end it pretty much looked horrible. We tested and and saw all the tests pass, but the feeling wasn't very good. This was legacy code at its most glorified being. Hard to test, hard to follow, and lots of dependencies sprinkled around. I ended up make a couple of methods static on the class, make them take lots of parameters and send in lots of stubs (we used Rhino.Mocks). It worked, but we all felt kinda dirty in the end. The thing that really kept coming up in my thoughts (and words) was how [TypeMock](http://www.typemock.com/) could have easily solved the problems in this scenario.  It would have taken less than 15 minutes to figure out how to test that thing with TypeMock. And yes, I wholeheartedly agree that using a powerfull such as TypeMock can help you 'forget' to do proper design, but in the end its about using the right tool for the right job. For messy legacy situations, TypeMock will beat out any other mocking framework I know hands down because it allows  simply to mess around with the internals of a system without changing its code base. That's a powerful thing for legacy scenarios, and as such it is a perfect fit. I'll be going there next week and plan on showing them some of this tool's wonders. Still, some interesting thoughts about what they can do next when they write the code, to make sure it's more testable: - **Don't inherit from classes you can't control. Encapsulate and wrap it up**. They inherited from a lot of ESRI stuff and it was impossible to instantiate many of the classes involved because the constructors kept on taking problematic dependencies to be created. Had they wrapped the dependencies instead of derive from them, it would be much easier to use ["Extract & Override"](http://weblogs.asp.net/rosherove/articles/DependencyIssues.aspx) on the code to make it testable. - **Make methods virtual by default**. The Java way. That makes it easy for tools such as Rhino.Mocks to create stubs and mocks from your real classes and override those virtual methods easily (making it much more easily testable because you can override any method that does something problematic like talk to a web service). - **Don't use 'Sealed' unless you really have to**. And then _still_ don't use it unless it's a security issue. Sealed means you can't inherit from that class, and that leads to ugly stuff like I did today. - **Make Singletons Testable**. - **Add a setter** to the singleton instance, or make the factory that creates it configurable to create your own instance. - Make sure a singleton **always return an interface** rather than a concrete class. It's easier to stub or mock an interface than to do the same with a class you'll need to inherit from.  It also creates less complications down the road. - **Use _internal_ keyword** and the \[assembly:internalsVisibleTo()\] attribute to hide those setters from production code, but still make them visible to test code. - If possible, **create an interface per class**. You never know when you're gonna need it. - If possible, **write the code in a test driven manner**. That's the best way to ensure code coverage,having real tests for the code and having the code testable by default. - Read [this article about design for testability](http://weblogs.asp.net/rosherove/articles/Design4Tesatbility1.aspx) **Some general testing tips:** - In [Rhino.Mocks](http://www.ayende.com/projects/rhino-mocks.aspx), using MockRepository.Stub() cane create an object that can have its properties be set and get freely on it, with no extra line of code. [More on this here](http://ayende.com/Wiki/\(S\(rak01h45dgeosu45hlg5f345\)\)/Default.aspx?Page=Rhino%20Mocks%20-%20Stubs). - [TypeMock](http://www.typemock.com/) is a lifesaver when it comes to Legacy code. - Writing interaction tests (using mocks and stubs) will help you (force you) know the code your testing intimately. Sometimes a little too much, actually. - If you're planning to test the web UI, have a look at [Selenium](http://www.google.com/search?q=selenium+testing), [Fit](http://www.google.com/search?q=Fitnesse+Testing) and [Watin](http://www.google.com/search?hl=iw&q=Watin+testing&lr=) - If you're planning to test database related code, [look here](http://weblogs.asp.net/rosherove/articles/dbunittesting.aspx). - Some jobs are better left for the QA Department, such as visual testing (that something is drawn correctly for example), load testing, and sometimes data driven inputs for tests. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 19, 2007 ### [Art Of Unit Testing Book Available Shortly](https://osherove.com/blog/2007/6/19/art-of-unit-testing-book-available-shortly.html) - Jun 13, 2007 ### [Microsoft eScrum Version 1.0?](https://osherove.com/blog/2007/6/13/microsoft-escrum-version-10.html) - Jun 7, 2007 ### [List of Unit Testing Frameworks](https://osherove.com/blog/2007/6/7/list-of-unit-testing-frameworks.html) - Jun 7, 2007 ### [Chapter 5 - Mock Object Frameworks - Done](https://osherove.com/blog/2007/6/7/chapter-5-mock-object-frameworks-done.html) --- title: "Utilities and apps to look at" url: "https://osherove.com/blog/2007/6/10/utilities-and-apps-to-look-at.md" canonical: "https://osherove.com/blog/2007/6/10/utilities-and-apps-to-look-at.html" published: "2007-06-10T12:38:39" updated: "2007-06-10T12:38:39" tags: ["Cool Tools"] author: "Roy Osherove" description: "List of apps I'd like to remember, courtesy of DonationCoder's lively forums Toddler Keys - Makes your keyboard \"child friendly\" LaunchBar Commander Dialog Extender Utilities : Already found my favorite, and bought it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Utilities and apps to look at By Roy Osherove June 10, 2007 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published June 10, 2007; technical details may be outdated. List of apps I'd like to remember, courtesy of [DonationCoder's lively forums](http://www.donationcoder.com/Forums/bb/index.php) [Toddler Keys](http://tk.ms11.net/) - Makes your keyboard "child friendly" [LaunchBar Commander](http://www.donationcoder.com/Software/Mouser/LaunchBarCommander/index.html) [Dialog Extender Utilities](http://www.donationcoder.com/Reviews/Archive/DialogExtenders/index.html) : Already found my favorite, and bought it already: [Direct Folders is awesome](http://www.directfolders.com/). [AllSnap](http://ca.geocities.com/[email removed]/) - make all windows snap [KatMouse](http://www.code-scout.net/katmouse/) - Mouse wheel enhancement [AutoHotKey](http://www.autohotkey.com/) - free, open-source utility to automate keystokes and shortcut manager [WhatPulse](http://whatpulse.org/) - Measures your clicks and keystrokes (I'm planning the same idea, but different for [Keyboard Jedi](http://weblogs.asp.net/rosherove/archive/2007/06/03/train-to-be-a-keyboard-master-with-keyboard-jedi.aspx)) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 12, 2007 ### [Real time data on your blog pages visitors](https://osherove.com/blog/2007/6/12/real-time-data-on-your-blog-pages-visitors.html) - Jun 10, 2007 ### [Tips for Testable code and for testing legacy code](https://osherove.com/blog/2007/6/10/tips-for-testable-code-and-for-testing-legacy-code.html) - Jun 3, 2007 ### [Train to be a Keyboard Master with Keyboard Jedi](https://osherove.com/blog/2007/6/3/train-to-be-a-keyboard-master-with-keyboard-jedi.html) - May 19, 2007 ### [Easier Winform UI Thread Safe Methods with DynamicProxy2 and Osherove.SimpleInterception](https://osherove.com/blog/2007/5/19/easier-winform-ui-thread-safe-methods-with-dynamicproxy2-and.html) --- title: "List of Unit Testing Frameworks" url: "https://osherove.com/blog/2007/6/7/list-of-unit-testing-frameworks.md" canonical: "https://osherove.com/blog/2007/6/7/list-of-unit-testing-frameworks.html" published: "2007-06-07T17:19:49" updated: "2007-06-07T17:19:49" tags: ["Agile", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "Update : The site seems to be alive and kicking. Great list there. Check it out! There used to be a great list of unit test frameworks at http://www.xprogramming.com/software.htm . The site seems to be dead now. I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # List of Unit Testing Frameworks By Roy Osherove June 7, 2007 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published June 7, 2007; technical details may be outdated. **Update**: The site seems to be alive and kicking. Great list there. Check it out! There used to be a great list of unit test frameworks at [http://www.xprogramming.com/software.htm](http://www.xprogramming.com/software.htm "http://www.xprogramming.com/software.htm") . The site seems to be dead now. I wonder what happened. It's a sad thing when good resources suddenly "die". There's another list (I think it's not as extensive as the one that died) over here on wikipedia: [http://en.wikipedia.org/wiki/List\_of\_unit\_testing\_frameworks](http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks "http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks") ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 13, 2007 ### [Microsoft eScrum Version 1.0?](https://osherove.com/blog/2007/6/13/microsoft-escrum-version-10.html) - Jun 10, 2007 ### [Tips for Testable code and for testing legacy code](https://osherove.com/blog/2007/6/10/tips-for-testable-code-and-for-testing-legacy-code.html) - Jun 7, 2007 ### [Chapter 5 - Mock Object Frameworks - Done](https://osherove.com/blog/2007/6/7/chapter-5-mock-object-frameworks-done.html) - Jun 6, 2007 ### [Scrum - What it looks like in the real world](https://osherove.com/blog/2007/6/6/scrum-what-it-looks-like-in-the-real-world.html) --- title: "31 Days of Resharper" url: "https://osherove.com/blog/2007/6/7/31-days-of-resharper.md" canonical: "https://osherove.com/blog/2007/6/7/31-days-of-resharper.html" published: "2007-06-07T15:15:49" updated: "2007-06-07T15:15:49" tags: ["General Software Devel..."] author: "Roy Osherove" description: "I just found this nice article : 31 days of Resharper , which takes you through the basics and into advanced areas of Using Resharper , well on your way to being a Resharper Jedi! [found via Sam ] I was thinking of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 31 Days of Resharper By Roy Osherove June 7, 2007 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 7, 2007; technical details may be outdated. I just found this nice article : [31 days of Resharper](http://excastle.com/blog/archive/2007/01/31/13141.aspx), which takes you through the basics and into advanced areas of Using [Resharper](http://www.jetbrains.com/resharper), well on your way to being a Resharper Jedi! \[found via [Sam](http://codebetter.com/blogs/sam.gentile/archive/2007/06/07/it-s-now-resharper.aspx)\] I was thinking of doing a couple of screencasts with Resharper and [Key Jedi](http://weblogs.asp.net/rosherove/archive/2007/06/03/train-to-be-a-keyboard-master-with-keyboard-jedi.aspx) running, but maybe this guys should do it instead. ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Jun 19, 2007 ### [Get latest version on checkout with team system source control](https://osherove.com/blog/2007/6/19/get-latest-version-on-checkout-with-team-system-source-contr.html) - Jun 13, 2007 ### [Microsoft eScrum Version 1.0?](https://osherove.com/blog/2007/6/13/microsoft-escrum-version-10.html) - Jun 6, 2007 ### [API Usability vs Backwards Compatibility](https://osherove.com/blog/2007/6/6/api-usability-vs-backwards-compatibility.html) - Jun 6, 2007 ### [Scrum - What it looks like in the real world](https://osherove.com/blog/2007/6/6/scrum-what-it-looks-like-in-the-real-world.html) --- title: "Chapter 5 - Mock Object Frameworks - Done" url: "https://osherove.com/blog/2007/6/7/chapter-5-mock-object-frameworks-done.md" canonical: "https://osherove.com/blog/2007/6/7/chapter-5-mock-object-frameworks-done.html" published: "2007-06-07T00:22:36" updated: "2007-06-07T00:22:36" tags: ["Agile", "Art Of Unit Testing"] author: "Roy Osherove" description: "Last night I finally Finished chapter five in my upcoming book about unit testing . Chapter five was all about Mock Object frameworks and was the longest and hardest to write so far. Some of the reasons it was hard to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Chapter 5 - Mock Object Frameworks - Done By Roy Osherove June 7, 2007 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published June 7, 2007; technical details may be outdated. Last night I finally Finished chapter five in my [upcoming book about unit testing](http://artofunittesting.com/). Chapter five was all about Mock Object frameworks and was the longest and hardest to write so far. Some of the reasons it was hard to write this: - It took me a long time to decide which mock framework I'll be using for my examples. I ended up choosing [Rhino.Mocks](http://www.ayende.com/projects/rhino-mocks.aspx) after running [this little survey on my blog](http://weblogs.asp.net/rosherove/archive/2007/04/26/choosing-a-mock-object-framework.aspx). The truth is, the Mocking framework scene in .NET is not as great as it could be (I.e it sucks). Most of the big free frameworks are not being actively developed (EasyMock, NMock and NMock2), and the ones who are active are basically a one person army which is also bad (Rhino.Mocks is that). The only good framework that would fit the book in terms of both features and _long_ lasting supportability security is [TypeMock](http://www.typemock.com/) which is commercial so I did not want to use it. Rhino Mocks came a close second with feature set and active development, but it's still  a one person show for now which makes it dangerous to use in a book (who knows where it will be in a year). - It took me a long time to figure out how to really explain my thoughts on mock frameworks vs. hand written mocks and stub, and what features I should cover vs. what features I should leave out. The most important features are there, but I am leaving a "hardcore" review of RhinoMocks itself for an appendix chapter that will be written by Ayende himself. - Taking care of a new baby and doing full time work can be challenging even without writing a book. That meant the book writing kept getting delayed. - The chapter is long for what I've had so far (23 word pages). I've seen longer chapters, but for me it's been a struggle with all these problems, and I kept pushing it further and further. - Now starts an even harder part - I get to review all the editing comments on all five of the chapters from my editors. It's a time taking labor of very tiny things, and it really bruises you ego when you encounter it for the first time, because it shows yo hundreds of problems with your writing, or it forces you to sometimes rewrite parts that were (to your mind) perfect. I have to get used to this. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 10, 2007 ### [Tips for Testable code and for testing legacy code](https://osherove.com/blog/2007/6/10/tips-for-testable-code-and-for-testing-legacy-code.html) - Jun 7, 2007 ### [List of Unit Testing Frameworks](https://osherove.com/blog/2007/6/7/list-of-unit-testing-frameworks.html) - Jun 6, 2007 ### [Scrum - What it looks like in the real world](https://osherove.com/blog/2007/6/6/scrum-what-it-looks-like-in-the-real-world.html) - May 30, 2007 ### [Automating web tests with FitNesse and Selenium](https://osherove.com/blog/2007/5/30/automating-web-tests-with-fitnesse-and-selenium.html) --- title: "API Usability vs Backwards Compatibility" url: "https://osherove.com/blog/2007/6/6/api-usability-vs-backwards-compatibility.md" canonical: "https://osherove.com/blog/2007/6/6/api-usability-vs-backwards-compatibility.html" published: "2007-06-06T05:55:57" updated: "2007-06-06T05:55:57" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Here's an interesting issue. At what point in the life of an API do you decide that it's better to keep a less than perfect API convention but keep backwards compatibility to a maximum, than to change or add new…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # API Usability vs Backwards Compatibility By Roy Osherove June 6, 2007 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 6, 2007; technical details may be outdated. Here's an interesting issue. At what point in the life of an API do you decide that it's better to **keep** a less than perfect API convention but keep backwards compatibility to a maximum, than to change or add new overloads of methods that are more self expressive and understandable? [Rhino.Mocks](http://www.ayende.com/projects/rhino-mocks) is a good example of just such a scenario. Rhino.Mocks contains several ways to create a Mock Object: - MockRepository.CreateMock(type) - mockRepository.DynamicMock(type) - MockReposity.PartialMock(type) Looking at the method names you might wonder what is the difference between the first two. Without telling you that, what if we changes the method names to these: - MockRepository.CreateStrictMock(type) - mockRepository.CreateNonStrictMock(type) - MockReposity.PartialNonStrictMock(type) A strict mock means that you can't call any of the methods that were not explicitly expected. If you do, you get an exception from the mock object. A non strict mock will let you call anything you want, as long as what you expected to happen to it also happens. A partial mock will mock only part of a concrete class. Better yet: - MockRepository.CreateMock(type,StrictOptions.Strict\\NonStrict) - MockReposity.PartialMock(type) (non strict is implied) When I contacted Oren (Ayende) with this he said that it may be a nice idea but he would rather keep things as they are and conserve backwards compatability (that it would even be too ugly to use \[Obsolete\] on the older methods. Personally I don't think that I agree with this. You could easily search and replace your existing tests from CreateMock to CreateMock(nonStrict,type), just as an example. But hte readability benefit and ease of use I think grows on many levels because of this change. What do you think? ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Jun 13, 2007 ### [Microsoft eScrum Version 1.0?](https://osherove.com/blog/2007/6/13/microsoft-escrum-version-10.html) - Jun 7, 2007 ### [31 Days of Resharper](https://osherove.com/blog/2007/6/7/31-days-of-resharper.html) - Jun 6, 2007 ### [Scrum - What it looks like in the real world](https://osherove.com/blog/2007/6/6/scrum-what-it-looks-like-in-the-real-world.html) - Jun 5, 2007 ### [Running Matlab, Python and Tcl scripts from .NET](https://osherove.com/blog/2007/6/5/running-matlab-python-and-tcl-scripts-from-net.html) --- title: "Scrum - What it looks like in the real world" url: "https://osherove.com/blog/2007/6/6/scrum-what-it-looks-like-in-the-real-world.md" canonical: "https://osherove.com/blog/2007/6/6/scrum-what-it-looks-like-in-the-real-world.html" published: "2007-06-06T01:37:18" updated: "2007-06-06T01:37:18" tags: ["Agile", "General Software Devel..."] author: "Roy Osherove" description: "Here's a great example of an Israeli Company called Oblicore that does the full Scrum cycle. They made a cool video which shows their passion. I'd like to work in such a company. Play video End of Service Release 1 (The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scrum - What it looks like in the real world By Roy Osherove June 6, 2007 In [Agile](https://osherove.com/blog/category/agile), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 6, 2007; technical details may be outdated. Here's a great example of an Israeli Company called [Oblicore](http://www.oblicore.com/) that does the full Scrum cycle. They made a [cool video](https://www.youtube.com/watch?v=dKvi1RJ6Yeo) which shows their passion. I'd like to work in such a company. [![](https://osherove.com/img/video/yt-dKvi1RJ6Yeo.jpg)Play videoEnd of Service Release 1 (The SCRUM way!)](https://www.youtube.com/watch?v=dKvi1RJ6Yeo) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 7, 2007 ### [List of Unit Testing Frameworks](https://osherove.com/blog/2007/6/7/list-of-unit-testing-frameworks.html) - Jun 7, 2007 ### [Chapter 5 - Mock Object Frameworks - Done](https://osherove.com/blog/2007/6/7/chapter-5-mock-object-frameworks-done.html) - May 30, 2007 ### [Automating web tests with FitNesse and Selenium](https://osherove.com/blog/2007/5/30/automating-web-tests-with-fitnesse-and-selenium.html) - May 16, 2007 ### [NDemo - Demo Driven Development?](https://osherove.com/blog/2007/5/16/ndemo-demo-driven-development.html) --- title: "Running Matlab, Python and Tcl scripts from .NET" url: "https://osherove.com/blog/2007/6/5/running-matlab-python-and-tcl-scripts-from-net.md" canonical: "https://osherove.com/blog/2007/6/5/running-matlab-python-and-tcl-scripts-from-net.html" published: "2007-06-05T01:56:07" updated: "2007-06-05T01:56:07" tags: [".NET", "C#", "General Software Devel..."] author: "Roy Osherove" description: "Someone asked me about ways they can execute Scripts from MatLab , Python and Tcl from .NET. Here are three interesting links I found on these: Matlab and .NET:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Running Matlab, Python and Tcl scripts from .NET By Roy Osherove June 5, 2007 In [.NET](https://osherove.com/blog/category/net), [C#](https://osherove.com/blog/category/c), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 5, 2007; technical details may be outdated. Someone asked me about ways they can execute Scripts from [MatLab](http://www.mathworks.com/products/matlab/), [Python](http://www.python.org/) and [Tcl](http://en.wikipedia.org/wiki/Tcl) from .NET. Here are three interesting links I found on these: Matlab and .NET: [http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=12987&objectType=file](http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=12987&objectType=file) python: [http://www.velocityreviews.com/forums/t358105-starting-some-python-script-from-c.html](http://www.velocityreviews.com/forums/t358105-starting-some-python-script-from-c.html) Tcl (pronounced "tickle"): [http://forge.novell.com/modules/xfmod/project/?ticklesharp](http://forge.novell.com/modules/xfmod/project/?ticklesharp) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 21, 2007 ### [Blow to open source on VS.NET: VSIP License forbids Open Source](https://osherove.com/blog/2007/6/21/blow-to-open-source-on-vsnet-vsip-license-forbids-open-sourc.html) - Jun 20, 2007 ### [HTTPSimulator - Simulating HTTP Requests for unit testing made easier](https://osherove.com/blog/2007/6/20/httpsimulator-simulating-http-requests-for-unit-testing-made.html) - May 19, 2007 ### [Easier Winform UI Thread Safe Methods with DynamicProxy2 and Osherove.SimpleInterception](https://osherove.com/blog/2007/5/19/easier-winform-ui-thread-safe-methods-with-dynamicproxy2-and.html) - Mar 4, 2007 ### [Code Generation using LINQ Expression Trees and .NET 3.0](https://osherove.com/blog/2007/3/4/code-generation-using-linq-expression-trees-and-net-30.html) --- title: "ALT.NET - Alternative tools and approaches to mainstream .NET" url: "https://osherove.com/blog/2007/6/4/altnet-alternative-tools-and-approaches-to-mainstream-net.md" canonical: "https://osherove.com/blog/2007/6/4/altnet-alternative-tools-and-approaches-to-mainstream-net.html" published: "2007-06-04T06:50:55" updated: "2007-06-04T06:50:55" tags: ["General Software Devel..."] author: "Roy Osherove" description: "There's starting to be a lot of talk lately about working in an alternative way than the \"mainstream\" prescribed ways which most .NET and MS developers use in their day to day work. I'm still working out on my own what…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ALT.NET - Alternative tools and approaches to mainstream .NET By Roy Osherove June 4, 2007 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 4, 2007; technical details may be outdated. There's starting to be a lot of talk lately about working in an alternative way than the "mainstream" prescribed ways which most .NET and MS developers use in their day to day work. I'm still working out on my own what does it mean, and the difference facets in this concept, but one thing is for sure - there is \*something\* out there which people are getting a hold of, and MS seems to be missing great deals of it. here are some points(Some overlaps, for sure): **Update and clarifications:** - I don't necessarily **agree** with the list here. It is what I **see** in other people. I'll post my thoughts on this later. - Some items are grouped and compared not on a technical level, but on a logical or categorized level. For example, _comparing open source, SourceForge to Application Blocks and codeplex_ -the two are both open source in one way or another, but the ones on the right are MS-oriented, the left are not. So the right isn't necessarily **the inverse** of what's on the left. It may just as well be the same idea. Just seems to me it is less "hot" than the one on the right.
HotNot
Castle, ActiveRecord,
NHibernate
DataSets, Dataset Designer, Entity Framework, MS Application Blocks
MVC,NUnit,MonoRailWeb Forms, SCSF, VSTS, MSTest
XP, TDD, ScrumMSF Agile, MSF For CMMI
Evolutionary Design and DevelopmentBig Design Up Front
Ruby + IronRuby, Python + IronPyton, DLR, Silverlight(?)?
OR\M (NHibernate, LLBLGen  etc..)DLinq, Data Access Block, DataSets, Plain ADO. NET
Open Source (Mono, SourceForge)Application Blocks, CodePlex
MVC and MVP (RoR, MonoRail..)Web Forms, CAB, Smart Client Factory
CVS, SVNVSS, VSTS Source Control
Build Automation and CI
(CI Factory, NAnt, FinalBuilder, CruiseControl..)
Team Build
TDD and Unit Testing
NUnit, MbUnit, RhinoMocks, NMock, TypeMock
MSTest for unit testing, VSTS
Subtext, DasBlog, WordPress, TypePad, Blogger, FeedBurnerMicrosoft MSN Spaces, Community Server(?)
Simplicity in DesignP&P
Working at GoogleWorking at MS
Google GearsSmart Client, MS Ajax
.NET 3.X (WF, WPF. Silverlight).NET 2.0
DI, IoC, Spring for .NETObject Builder
Conferences:
OSCon, RubyCon, Code Camps, DevTeach..
VSLive, TechEd, DevConnections..
Am I missing something? ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Jun 6, 2007 ### [Scrum - What it looks like in the real world](https://osherove.com/blog/2007/6/6/scrum-what-it-looks-like-in-the-real-world.html) - Jun 5, 2007 ### [Running Matlab, Python and Tcl scripts from .NET](https://osherove.com/blog/2007/6/5/running-matlab-python-and-tcl-scripts-from-net.html) - Jun 4, 2007 ### [Is Google Gears a Disaster Waiting to Happen?](https://osherove.com/blog/2007/6/4/is-google-gears-a-disaster-waiting-to-happen.html) - Jun 3, 2007 ### [Train to be a Keyboard Master with Keyboard Jedi](https://osherove.com/blog/2007/6/3/train-to-be-a-keyboard-master-with-keyboard-jedi.html) --- title: "Is Google Gears a Disaster Waiting to Happen?" url: "https://osherove.com/blog/2007/6/4/is-google-gears-a-disaster-waiting-to-happen.md" canonical: "https://osherove.com/blog/2007/6/4/is-google-gears-a-disaster-waiting-to-happen.html" published: "2007-06-04T06:50:36" updated: "2007-06-04T06:50:36" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Google Came out with Google Gears , a set of APIS you can use from JavaScript to persist your web app's Data into a local database (SQLite). The idea is awesome, but I'm worried, and I'm not sure if I'm missing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Is Google Gears a Disaster Waiting to Happen? By Roy Osherove June 4, 2007 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 4, 2007; technical details may be outdated. Google Came out [with Google Gears](http://gears.google.com/), a set of APIS you can use from JavaScript to persist your web app's Data into a local database (SQLite). The idea is awesome, but I'm worried, and I'm not sure if I'm missing something here: - You'll now have complex application logic and persistence logic in **full JavaScript** syntax. Feels like we're lookin at a big maintenance nightmare - How secure can your web app really be if all data access is open for anyone with "view source"? ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Jun 5, 2007 ### [Running Matlab, Python and Tcl scripts from .NET](https://osherove.com/blog/2007/6/5/running-matlab-python-and-tcl-scripts-from-net.html) - Jun 4, 2007 ### [ALT.NET - Alternative tools and approaches to mainstream .NET](https://osherove.com/blog/2007/6/4/altnet-alternative-tools-and-approaches-to-mainstream-net.html) - Jun 3, 2007 ### [Train to be a Keyboard Master with Keyboard Jedi](https://osherove.com/blog/2007/6/3/train-to-be-a-keyboard-master-with-keyboard-jedi.html) - May 26, 2007 ### [OR/M Smackdown - Ayende Vs. Ted Neward](https://osherove.com/blog/2007/5/26/orm-smackdown-ayende-vs-ted-neward.html) --- title: "Tips For Better User Group Meetings" url: "https://osherove.com/blog/2007/6/4/tips-for-better-user-group-meetings.md" canonical: "https://osherove.com/blog/2007/6/4/tips-for-better-user-group-meetings.html" published: "2007-06-04T06:50:14" updated: "2007-06-04T06:50:14" tags: [] author: "Roy Osherove" description: "Yesterday I went to a User Group Leaders meeting at Microsoft HQ in Ra'anana. Some of the things we talked about were how to make the groups more interactive, what should be better etc. here's a short list of important…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tips For Better User Group Meetings By Roy Osherove June 4, 2007 **Historical article** · Originally published June 4, 2007; technical details may be outdated. Yesterday I went to a User Group Leaders meeting at Microsoft HQ in Ra'anana. Some of the things we talked about were how to make the groups more interactive, what should be better etc. here's a short list of important topics you might want to consider for your user groups as well: - Have a site that contains a **speaker roster** where you could search for and sign up for speakers and speaking engagements. It's very hard to find speakers on a monthly basis. In Israel I usually find that here are about 10 speakers who appear in almost all the MS user groups.. - Have **a competition** (Speaker Idol or something like that) where you can detect and fins=d new speakers. They can then be speaking at user group events and larger events such as teched. - A speaker at a user group **might start their talk with saying why they are speaking there**, and what benefits they get out of this. A lot of people would talk if they knew the benefits: more experience, recognition, speaking at bigger events.. - **Have a good feedback form** that can tell you a little bit about the attendee background and what future talks they would like to see. - Use interesting stories presented by attendees as **case studies** for the company (MS in this case) - Have a [unified RSS feed and site that holds all the data](https://osherove.com/blog/2007/6/4/blogs.microsoft.co.il/blogs/usergroups) about all the user groups including categories. [There is a usergroup blog for the groups in Israel](https://osherove.com/blog/2007/6/4/blogs.microsoft.co.il/blogs/usergroups) that has started not long ago which you should register to. It's a great idea! - **Record your sessions!** Use Camtasia and lapel microphones to record it. The problem is you still need to sync up the audio with the video, but if you do a lot of people will find value in this. --- title: "Utility: Launch Windows Live Writer with Spelling Enabled" url: "https://osherove.com/blog/2007/6/3/utility-launch-windows-live-writer-with-spelling-enabled.md" canonical: "https://osherove.com/blog/2007/6/3/utility-launch-windows-live-writer-with-spelling-enabled.html" published: "2007-06-03T12:30:43" updated: "2007-06-03T12:30:43" tags: [] author: "Roy Osherove" description: "Windows Live Writer with Spelling Launcher can be downloaded here (13k). I too, like Oren, found that my spell checker was not working with Windows Live writer, simply because my system was not configured to use the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Utility: Launch Windows Live Writer with Spelling Enabled By Roy Osherove June 3, 2007 **Historical article** · Originally published June 3, 2007; technical details may be outdated. Windows Live Writer with Spelling Launcher can be [downloaded here](http://files.osherove.com/downloads/WLWLauncher.zip) (13k). I too, like Oren, found that my spell checker was not working with Windows Live writer, simply because my system was not configured to use the en-US culture. [Alex](http://www.buayacorp.com/) posted [some code on Oren's blog comments](http://ayende.com/Blog/archive/2007/06/02/9380.aspx#16033) to enable launching Live Writer Beta 2 with spelling enables by launching it from an AppDomain that has an en-US thread culture. it worked, and I simply created a very simple console mode launcher that : - detects the system special folder called Program files - attaches "\\Windows Live Writer\\WindowsLiveWriter.exe" to the end - launches it with the correct culture. **How to use:** Simply unzip and run this from anywhere on your machine. It should just work. Thanks [Alex](http://www.buayacorp.com/)! _\[let's hope_ _Microsoft won't [pull a Jamie](http://weblogs.asp.net/nunitaddin/archive/2007/05/31/microsoft-vs-testdriven-net-31-may-2007.aspx) on me__!\]_ _PS, I changed the code a bit to look like this:_ ``` string progs = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); string exe = progs + @"\Windows Live Writer\WindowsLiveWriter.exe"; ``` Another annoying thing about the recent beta of WLW: When you get an existing post to edit it, it wipes out the categories that you previously associated with it (I think it just neglects to "get" the categories as it retrieves the existing post item from the blog). Beware! When re-publishing an item, make sure to re-set the categories on the blog post. --- title: "Train to be a Keyboard Master with Keyboard Jedi" url: "https://osherove.com/blog/2007/6/3/train-to-be-a-keyboard-master-with-keyboard-jedi.md" canonical: "https://osherove.com/blog/2007/6/3/train-to-be-a-keyboard-master-with-keyboard-jedi.html" published: "2007-06-03T12:18:26" updated: "2007-06-03T12:18:26" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "Key Jedi allows learning and training to use keyboard shortcuts. It can be used in presentations, screencasts and videos, as well as when working with someone else on the same machine to teach new shortcuts. It shows a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Train to be a Keyboard Master with Keyboard Jedi By Roy Osherove June 3, 2007 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 3, 2007; technical details may be outdated. Key Jedi allows learning and training to use keyboard shortcuts. It can be used in presentations, screencasts and videos, as well as when working with someone else on the same machine to teach new shortcuts. It shows a visual list of shortcuts as you type them, no matter what application you work in. It is free, simple and quick to use. ![](https://osherove.com/img/wb/5a7c8e46_files.osherove.com_images_keyjedi.jpg) [Download Here (with source code on github)](https://osherove.com/tools/) Version 1.5 is out, and this one has some major new abilities: - Force yourself to only use the keyboard on a specific application Press Ctrl-Shift-Alt-F12 when in any application, and KJ will confine the mouse cursor to its own window, as long as that other application is active. this will force you to go “Mouseless” just for that specific application. Press Ctrl-Shift-Alt-F12 again to stop this. - When showing someone cool keyboard tricks, you can attach “memos” to shortcuts you pressed Just double click on a list item inside Key Jedi, and you can add a short line to remember what that shortcut does. Later you can right click in the KJ list, and save all the memos to the clipboard, so you can paste them into a document and print them for later memorization - Enable or disable special keys from being shown In the config file, you can enable showing tabs, enter, page up and pagedown, or to set it to work with Visual Studio only. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 10, 2007 ### [Tips for Testable code and for testing legacy code](https://osherove.com/blog/2007/6/10/tips-for-testable-code-and-for-testing-legacy-code.html) - Jun 10, 2007 ### [Utilities and apps to look at](https://osherove.com/blog/2007/6/10/utilities-and-apps-to-look-at.html) - May 19, 2007 ### [Easier Winform UI Thread Safe Methods with DynamicProxy2 and Osherove.SimpleInterception](https://osherove.com/blog/2007/5/19/easier-winform-ui-thread-safe-methods-with-dynamicproxy2-and.html) - Mar 17, 2007 ### [UDPixel - repairs Dead Pixel on TFT Screens](https://osherove.com/blog/2007/3/17/udpixel-repairs-dead-pixel-on-tft-screens.html) --- title: "Why I won't be switching to Google RSS Reader" url: "https://osherove.com/blog/2007/6/1/why-i-wont-be-switching-to-google-rss-reader.md" canonical: "https://osherove.com/blog/2007/6/1/why-i-wont-be-switching-to-google-rss-reader.html" published: "2007-06-01T14:33:24" updated: "2007-06-01T14:33:24" tags: ["Off Topic", "Other"] author: "Roy Osherove" description: "Google Reader is a great RSS reader, in the browser. However, if I try to figure out the ways in which it benefits me than my current reader - Omea , I get quite annoyed with missing functionality in Google Reader: No…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why I won't be switching to Google RSS Reader By Roy Osherove June 1, 2007 In [Off Topic](https://osherove.com/blog/category/off-topic), [Other](https://osherove.com/blog/category/other) **Historical article** · Originally published June 1, 2007; technical details may be outdated. [Google Reader](http://reader.google.com/) is a great RSS reader, in the browser. However, if I try to figure out the ways in which it benefits me than my current reader - [Omea](http://www.jetbrains.com/omea/reader/), I get quite annoyed with missing functionality in Google Reader: - **No Search in google reader??** This is truly weird. If anything, that would have been the killer feature to make me move to the browser. Am I missing something? - No ability to add comments to a post Sure, now Google reader uses [Google Gears](https://osherove.com/blog/2007/6/1/gears.google.com/) to save an offline cache of the read items, but how's that better than Omea or any other "smart client" app? The only differece is that the "read" status on feed items is shared between machines, which for me is not that big a deal since I mostly use just my laptop. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 19, 2007 ### [Can you spot the Phishing Scam?](https://osherove.com/blog/2007/7/19/can-you-spot-the-phishing-scam.html) - Jul 12, 2007 ### [iPhone is an Israeli Brand originally](https://osherove.com/blog/2007/7/12/iphone-is-an-israeli-brand-originally.html) - May 3, 2007 ### [Pretty amazing demo of 3D sound on your headphones](https://osherove.com/blog/2007/5/3/pretty-amazing-demo-of-3d-sound-on-your-headphones.html) - Apr 27, 2007 ### [How I stopped kicking myself and started using Google Apps For Domains](https://osherove.com/blog/2007/4/27/how-i-stopped-kicking-myself-and-started-using-google-apps-f.html) --- title: "Windows Live Writer Beta 2 direct download link" url: "https://osherove.com/blog/2007/5/31/windows-live-writer-beta-2-direct-download-link.md" canonical: "https://osherove.com/blog/2007/5/31/windows-live-writer-beta-2-direct-download-link.html" published: "2007-05-31T08:00:46" updated: "2007-05-31T08:00:46" tags: [] author: "Roy Osherove" description: "Windows Live writer a 2 is out , with lots of new features, only they posted a link that only works for US based customers: http://writer.live.com . If you live in Israel, like me, this actually takes you to a download…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Windows Live Writer Beta 2 direct download link By Roy Osherove May 31, 2007 **Historical article** · Originally published May 31, 2007; technical details may be outdated. [Windows Live writer a 2 is out](http://windowslivewriter.spaces.live.com/blog/cns!D85741BB5E0BE8AA!1272.entry#comment), with lots of new features, only they posted a link that only works for US based customers: [http://writer.live.com](http://writer.live.com/) . If you live in Israel, like me, this actually takes you to a download of the windows live messenger! Would anyone be kind enough to post in the comments the direct download link for the installer? Thanks, Microsoft! **Update:** The direct link is: [http://download.microsoft.com/download/1/e/c/1ecbf3be-298b-467c-84d8-6f86f01478d7/en-us/Install\_WLWriter.exe](http://download.microsoft.com/download/1/e/c/1ecbf3be-298b-467c-84d8-6f86f01478d7/en-us/Install_WLWriter.exe) or, in TinyUrl : **[http://tinyurl.com/2peqal](http://tinyurl.com/2peqal)** Thanks for the comments! --- title: "Automating web tests with FitNesse and Selenium" url: "https://osherove.com/blog/2007/5/30/automating-web-tests-with-fitnesse-and-selenium.md" canonical: "https://osherove.com/blog/2007/5/30/automating-web-tests-with-fitnesse-and-selenium.html" published: "2007-05-30T03:36:08" updated: "2007-05-30T03:36:08" tags: ["Agile", "Art Of Unit Testing"] author: "Roy Osherove" description: "Here's a nice article details to little known tools in the \"mainstream\" developer community: Selenium, a browser and web automation framework, and Fitnesse, an acceptance and integration automation solution that uses a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Automating web tests with FitNesse and Selenium By Roy Osherove May 30, 2007 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published May 30, 2007; technical details may be outdated. [Here's a nice article](http://gojko.net/2007/05/20/automating-web-tests-with-fitnesse-and-selenium) details to little known tools in the "mainstream" developer community: Selenium, a browser and web automation framework, and Fitnesse, an acceptance and integration automation solution that uses a Wiki style for managing the tests and data. To be clear, these are pure integration tests, and not unit tests. They might be using some sort of a unit test framework to do their bidding, but they are testing integrated parts of a full running application, they require configuration of some sort, they take much longer to run, and basically do not meet the the idea of unit tests.  \[via [.NET Kicks](http://www.dotnetkicks.com/unittesting/Automating_web_tests_with_FitNesse_and_Selenium)\] ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 7, 2007 ### [Chapter 5 - Mock Object Frameworks - Done](https://osherove.com/blog/2007/6/7/chapter-5-mock-object-frameworks-done.html) - Jun 6, 2007 ### [Scrum - What it looks like in the real world](https://osherove.com/blog/2007/6/6/scrum-what-it-looks-like-in-the-real-world.html) - May 16, 2007 ### [NDemo - Demo Driven Development?](https://osherove.com/blog/2007/5/16/ndemo-demo-driven-development.html) - May 3, 2007 ### [Tips for a successful team lead](https://osherove.com/blog/2007/5/3/tips-for-a-successful-team-lead.html) --- title: "Shut Up I Hack you" url: "https://osherove.com/blog/2007/5/29/shut-up-i-hack-you.md" canonical: "https://osherove.com/blog/2007/5/29/shut-up-i-hack-you.html" published: "2007-05-29T09:01:40" updated: "2007-05-29T09:01:40" tags: [] author: "Roy Osherove" description: "I read this one a while but yesterday a friend forwarded the link to me again, and I smiled as I read it again. Here's how to be a real hacker" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Shut Up I Hack you By Roy Osherove May 29, 2007 **Historical article** · Originally published May 29, 2007; technical details may be outdated. I read this one a while but yesterday a friend forwarded the link to me again, and I smiled as I read it again. [Here's how to be a real hacker](http://www.electric-escape.net/node/1475) --- title: "Key Jedi 1.03 (Renamed from ShortWatcher)" url: "https://osherove.com/blog/2007/5/29/key-jedi-103-renamed-from-shortwatcher.md" canonical: "https://osherove.com/blog/2007/5/29/key-jedi-103-renamed-from-shortwatcher.html" published: "2007-05-29T01:05:37" updated: "2007-05-29T01:05:37" tags: [] author: "Roy Osherove" description: "Update : Latest version van be found here . It occurred to me that the previous name for this tool had kind of a nasty meaning for some people, and, although it may have brought me more google search links for \"watching…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Key Jedi 1.03 (Renamed from ShortWatcher) By Roy Osherove May 29, 2007 **Historical article** · Originally published May 29, 2007; technical details may be outdated. **Update**: [Latest version van be found here](http://weblogs.asp.net/rosherove/archive/2007/06/03/train-to-be-a-keyboard-master-with-keyboard-jedi.aspx). It occurred to me that [the previous name](http://weblogs.asp.net/rosherove/archive/2007/05/28/introducing-shortcut-watcher-show-your-keyboard-magic-while-presenting.aspx) for this tool had kind of a nasty meaning for some people, and, although it may have brought me more google search links for "watching shorts", it's definitely not what I meant. So, Here's a whole new name and version for this application, inspired by the notion of "Resharper Jedi". ![](https://osherove.com/img/wb/5a7c8e46_files.osherove.com_images_keyjedi.jpg) Key Jedi will list keyboard shortcuts as you use them. It is a global keyboard hook that will work with ANY application you use. It might be useful for presenters and screencasts, where you want people to know what keyboard shortcuts you've been using in the application as they see it live. The latest version has some changes: - Only one version of the application exists. By default it will monitor ALL applications. You can make it only watch Visual Studio by changing the config file. See BasicUsage.txt in the zip file for more info. - The name change, of course. **The new download is found here:** - [~Key Jedi 1.0.3~](http://files.osherove.com/downloads/KeyJedi.103.zip) ~(39k ZIP file)~ - [Latest version is here](http://weblogs.asp.net/rosherove/archive/2007/06/03/train-to-be-a-keyboard-master-with-keyboard-jedi.aspx) **Basic Usage:** 1\. Double click the program exe file 2\. adjust the opacity by using the slider at the bottom 3\. as you click keyboard shortcuts, the last shortcut will appear at the top. **\*\*\*Mouseless Mode\[optional\]\*\*\*** 4\. Key Jedi **can help you overcome your fear of the keyboard** by disabling the mouse for the currently active application. Pressing the special "Mouseless" global key (default is ctrl-shift-alt-F12) will make sure the mouse can never leave the confines of Key Jedi window as long as the application which was selected when the key was pressed is still active. For example: \- Open Visual Studio when Key Jedi is running. Make vs the active app. \- Press Ctrl-shift-alt-f12 \- Key Jedi will tell you you are in Mouseless mode for vs. \- your mouse will be "help prisoner" in the bounds of Key Jedi. \- you will only be able to use your keyboard to operate VS. Use this mode to force yourself to learn keyboard shortcuts instead of using the mouse. \- If you alt-tab to a different application your mouse will be free. \- if you alt-tab back to VS, your mouse will lock again. \- press ctrl-alt-shift-f12 again to regain mouse control. --- title: "Introducing ShortWatcher: Show your keyboard magic while presenting" url: "https://osherove.com/blog/2007/5/27/introducing-shortwatcher-show-your-keyboard-magic-while-pres.md" canonical: "https://osherove.com/blog/2007/5/27/introducing-shortwatcher-show-your-keyboard-magic-while-pres.html" published: "2007-05-27T23:56:38" updated: "2007-05-27T23:56:38" tags: [] author: "Roy Osherove" description: "Update : There is a new version of this tool , which has been renamed to \"Key Jedi\". More information here . -------------------------------------------- This is a quick a dirty solution to something we thought about…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing ShortWatcher: Show your keyboard magic while presenting By Roy Osherove May 27, 2007 **Historical article** · Originally published May 27, 2007; technical details may be outdated. **Update**: There is [a new version of this tool](http://weblogs.asp.net/rosherove/archive/2007/06/03/train-to-be-a-keyboard-master-with-keyboard-jedi.aspx), which has been renamed to "Key Jedi". [More information here](http://weblogs.asp.net/rosherove/archive/2007/06/03/train-to-be-a-keyboard-master-with-keyboard-jedi.aspx). \-------------------------------------------- This is a quick a dirty solution to something we thought about during DevTeach. Wouldn't it be cool if there was a tool that would show in real time any shortcut keys that were pressed in your favorite application? that way, in your presentations and screencasts, people could follow up on your important keystrokes and learn how to use keyboard-power-tools such as Resharper. - Please [see the NEW Version announcement](http://weblogs.asp.net/rosherove/archive/2007/06/03/train-to-be-a-keyboard-master-with-keyboard-jedi.aspx) for download details. - ~_So I made ShortcutWatcher._~ [~_You can download it from here_~](http://files.osherove.com/downloads/shortwatch10.zip) ~_(34k)._~ - ~_There is a second version that will capture keystrokes in **all applications**._~ [~_here it is_~](http://files.osherove.com/downloads/shortwatch10All.zip)~_._~ It uses a global keyhook and a lot of code is borrowed [from this CodeProject article](http://www.codeproject.com/csharp/GlobalSystemHook.asp). Also, this tool will only show shortcuts when Visual Studio is active, with a [little code borrowed from here](http://www.c-sharpcorner.com/UploadFile/satisharveti/ActiveApplicationWatcher01252007024921AM/ActiveApplicationWatcher.aspx). My main work was to create a simple state class that knows when a shortcut has been pressed with a regular key, not just regular keystrokes. - You can control the opacity - it's hard coded for visual studio only , unless you download the "all" version above - ~should I make a version that listens to all applications?~ --- title: "Team Build Ticker for your system tray" url: "https://osherove.com/blog/2007/5/26/team-build-ticker-for-your-system-tray.md" canonical: "https://osherove.com/blog/2007/5/26/team-build-ticker-for-your-system-tray.html" published: "2007-05-26T04:06:20" updated: "2007-05-26T04:06:20" tags: ["Team System"] author: "Roy Osherove" description: "I've been asked what is this nice tool that I have that notifies me of finished Team Builds from VSTS. It's free and simple, and called \"Build Ticker:. You can grab it here:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Team Build Ticker for your system tray By Roy Osherove May 26, 2007 In [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published May 26, 2007; technical details may be outdated. I've been asked what is this nice tool that I have that notifies me of finished Team Builds from VSTS. It's free and simple, and called "Build Ticker:. You can grab it here: [http://blogs.msdn.com/abhinaba/archive/2006/08/09/693234.aspx](http://blogs.msdn.com/abhinaba/archive/2006/08/09/693234.aspx) ![](https://osherove.com/img/wb/ff8e03f9_www.abhinaba.members.winisp.net_Blog_Images_BuildTicker.jpg) ## More in Team System [All posts in Team System](https://osherove.com/blog/category/team-system) - Sep 17, 2007 ### [Synchronize Team System and ClearCase with the TFS Migration & Synchronization Tool](https://osherove.com/blog/2007/9/17/synchronize-team-system-and-clearcase-with-the-tfs-migration.html) - Jun 19, 2007 ### [Get latest version on checkout with team system source control](https://osherove.com/blog/2007/6/19/get-latest-version-on-checkout-with-team-system-source-contr.html) - Apr 29, 2007 ### [What Source Control tool do you use? And more on TFS Vs. Open Source tools](https://osherove.com/blog/2007/4/29/what-source-control-tool-do-you-use-and-more-on-tfs-vs-open.html) - Apr 29, 2007 ### [TFS or not? Being a perfectionist in a realistic world](https://osherove.com/blog/2007/4/29/tfs-or-not-being-a-perfectionist-in-a-realistic-world.html) --- title: "OR/M Smackdown - Ayende Vs. Ted Neward" url: "https://osherove.com/blog/2007/5/26/orm-smackdown-ayende-vs-ted-neward.md" canonical: "https://osherove.com/blog/2007/5/26/orm-smackdown-ayende-vs-ted-neward.html" published: "2007-05-26T01:36:24" updated: "2007-05-26T01:36:24" tags: ["General Software Devel..."] author: "Roy Osherove" description: "The \"Object Relational Mapping\" Smackdown show between Ayende and Ted Neward has hit the blogsphere, recorded on .NET Rocks . I've listened to it live, and have not listened to the edited version, but judging from the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # OR/M Smackdown - Ayende Vs. Ted Neward By Roy Osherove May 26, 2007 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published May 26, 2007; technical details may be outdated. The "Object Relational Mapping" Smackdown show between [Ayende](http://www.ayende.com/) and [Ted Neward](http://blogs.tedneward.com/) has hit the blogsphere, [recorded on .NET Rocks](http://www.dotnetrocks.com/default.aspx?showNum=240). I've listened to it live, and have not listened to the edited version, but judging [from the comments on Oren's blog post](http://ayende.com/Blog/archive/2007/05/24/The-ORM-Smackdown-at-DotNetRocks.aspx) about this, it seems that many people are taking Ted to task on how he argued for his side of things. some random quotes from the comments: "Ted really lost the plot, however, when he started advocating db4o as a good solution.." "Ted used a fair few cheap debating tricks, which I would have called him up on very quickly..." "You were too nice to Ted, Oren :) He made a lot of bold claims but you didn't ask him to back them up one by one" and more. I would have loved to see Ted post on his blog about this. I find that doing a _written_ debate can result in a more clarified and backed up explanation of things, because it gives you more time to think about each point. In any case, you should definitely listen to it. Some of the topics covered: - Using Logic in sprocs - sprocs vs. dynamic SQL - object databases - modeling the database first or the object model first ? - more ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Jun 4, 2007 ### [Is Google Gears a Disaster Waiting to Happen?](https://osherove.com/blog/2007/6/4/is-google-gears-a-disaster-waiting-to-happen.html) - Jun 3, 2007 ### [Train to be a Keyboard Master with Keyboard Jedi](https://osherove.com/blog/2007/6/3/train-to-be-a-keyboard-master-with-keyboard-jedi.html) - May 19, 2007 ### [It's Time For Violence: A song about Databases](https://osherove.com/blog/2007/5/19/its-time-for-violence-a-song-about-databases.html) - May 16, 2007 ### [Learning new technologies: Is C# a XAML for the CLR?](https://osherove.com/blog/2007/5/16/learning-new-technologies-is-c-a-xaml-for-the-clr.html) --- title: "CodeBetter.Com to win best community award" url: "https://osherove.com/blog/2007/5/20/codebettercom-to-win-best-community-award.md" canonical: "https://osherove.com/blog/2007/5/20/codebettercom-to-win-best-community-award.html" published: "2007-05-20T17:41:39" updated: "2007-05-20T17:41:39" tags: ["Community", "Community News"] author: "Roy Osherove" description: "If there was one, that is. I didn't say it earlier, but I want to extend a big big thanks to the folks over at CodeBetter.Com . They literally chipped in and helped finance bringing the Israeli gang over to Canada for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CodeBetter.Com to win best community award By Roy Osherove May 20, 2007 In [Community](https://osherove.com/blog/category/community), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published May 20, 2007; technical details may be outdated. If there was one, that is. I didn't say it earlier, but I want to extend a big big thanks to the [folks over at CodeBetter.Com](http://www.codebetter.com/). They literally chipped in and helped finance bringing the Israeli gang over to Canada for [DevTeach](http://www.devteach.com/). That's one hack of a community, and truly feels like these are the people who are driving the community, and pointing to how a real community should behave in the face of hard-to-solve problems. Thanks Guys! It's been truly an awesome experience which would not have happened without you! ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Jun 29, 2007 ### [Israeli .NET Bloggers Update](https://osherove.com/blog/2007/6/29/israeli-net-bloggers-update.html) - Jun 12, 2007 ### [Real time data on your blog pages visitors](https://osherove.com/blog/2007/6/12/real-time-data-on-your-blog-pages-visitors.html) - May 19, 2007 ### [Impressions from DevTeach - Wow!](https://osherove.com/blog/2007/5/19/impressions-from-devteach-wow.html) - Feb 3, 2007 ### [Feedback on the Israel Microsoft Developer Academy?](https://osherove.com/blog/2007/2/3/feedback-on-the-israel-microsoft-developer-academy.html) --- title: "Impressions from DevTeach - Wow!" url: "https://osherove.com/blog/2007/5/19/impressions-from-devteach-wow.md" canonical: "https://osherove.com/blog/2007/5/19/impressions-from-devteach-wow.html" published: "2007-05-19T16:13:29" updated: "2007-05-19T16:13:29" tags: ["Community", "Community News"] author: "Roy Osherove" description: "I've my my share of rest from DevTeach , and now, as I prepare for next week (going to Edmonton and Winnipeg for user group talks), I have some time to reflect about the past week, and tell you some of my thoughts about…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Impressions from DevTeach - Wow! By Roy Osherove May 19, 2007 In [Community](https://osherove.com/blog/category/community), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published May 19, 2007; technical details may be outdated. I've my my share of rest from [DevTeach](http://www.devteach.com/), and now, as I prepare for next week (going to Edmonton and Winnipeg for user group talks), I have some time to reflect about the past week, and tell you some of my thoughts about this wonderful, wonderful conference. First thing is first - This is by far the most fun conference I've been to both as a speaker and as attendee. Because less than 500 attended (I think), it was really easy to interact with a  lot of people at the conference, including geek dinners on a daily basis, lunches, and true interactive sessions in the Agile Track. On that, I'd like to give a big, big shout out to [Scott Bellware](http://codebetter.com/blogs/scott.bellware/), the dude who made the whole idea of a **full agile track** possible at all, and for bringing 3 Israelis from far far away only to talk there. It was a big risk, but I think everyone agrees that is paid off (which I'll elaborate on later in this post) It was pretty amazing to watch as [Oren (Ayende)](http://ayende.com/) was accepted as a full on rock star into the conference. His open source work and blog have made him a celebrity, and Oren was fulfilling that role quite superbly by giving cool, demo-filled presentations, where he showed his true Resharper-Jedi strengths. Oren came into the conference a celebrity, but he walked away a rock star. I've heard so many names for him. anything from "The Gentle Giant" to "Resharper Jedi" to "That guy who doesn't sleep". They're all true. And I think he was quite surprised by such a warm welcome. Heck, I was starting to be a bit jealous myself! One of the nice highlights of the conference was during the evening after all the talks were over. Oren was invited to do an "OR/M Smackdown" session along with [Ted Neward](http://blogs.tedneward.com/) with the [.NET Rocks guys](http://www.dotnetrocks.com/). It was done in a theatre complex at the hotel, and was one of the most intense back and forth I've seen. If you don't know, Ted Neward can be quite an opinionated guy, but Oren sure as hell gave Ted something to fight about. [![](https://osherove.com/img/ext/farm1.static.flickr.com_205_501700922_62f641efd9_t.jpg)](http://www.flickr.com/photos/tags/devteach/?page=3) The day after that we had long long evening of a geek dinner, which was finished off by a piano, Carl Franklin's guitar and geeks running around with their laptops. It was so much fun. Jazz was playing and we were all talking and having so much fun. **CodeBetter** It' was quite a treat to get together with the [CodeBetter bloggers](http://www.codebetter.com/). If anything, it's safe to say that each and everyone of them was so different than I expected. [Jeremy](http://codebetter.com/blogs/jeremy.miller/) looks nothing like his picture on his blog, and seems to be a much more calm and reserves person, yet very smart, intuitive and full of great thirst for knowledge. [Scott](http://codebetter.com/blogs/scott.bellware/) is by far the craziest of the bunch, with hilarious comebacks. We were bantering for the whole week, with some sentences which I hope never see the light of the blogsphere ;) [JP Boodhoo](http://www.jpboodhoo.com/blog/) is clearly a Resharper Jedi in his own right, and so much into TDD that we had a lot of common language. I also sat on in a TDD workshop that he and Scott were doing and got a lot of interesting pointers! It was like meeting old friends from 20 years ago, and they all changes physically, but mentally we were all still little kids playing and joking with each other. :) There's going to be another [DevTeach in Vancouver this November 26-30](http://www.devteach.com/). I wish I could be there, but it looks like there won't be a budget to get me there (maybe Ayende will make it, who knows). If it's even half the fun we had this week, I'd highly suggest going there. Worth every single Canadian dollar, Eh? ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Jun 12, 2007 ### [Real time data on your blog pages visitors](https://osherove.com/blog/2007/6/12/real-time-data-on-your-blog-pages-visitors.html) - May 20, 2007 ### [CodeBetter.Com to win best community award](https://osherove.com/blog/2007/5/20/codebettercom-to-win-best-community-award.html) - Feb 3, 2007 ### [Feedback on the Israel Microsoft Developer Academy?](https://osherove.com/blog/2007/2/3/feedback-on-the-israel-microsoft-developer-academy.html) - Jan 29, 2007 ### [Catch me speaking at DevTeach](https://osherove.com/blog/2007/1/29/catch-me-speaking-at-devteach.html) --- title: "It's Time For Violence: A song about Databases" url: "https://osherove.com/blog/2007/5/19/its-time-for-violence-a-song-about-databases.md" canonical: "https://osherove.com/blog/2007/5/19/its-time-for-violence-a-song-about-databases.html" published: "2007-05-19T15:31:00" updated: "2007-05-19T15:31:00" tags: ["General Software Devel...", "SQL Server", "Songs"] author: "Roy Osherove" description: "It's my pleasure to introduce the first \"production\" of one of my developer songs, which I've also sung at the awesome DevTeach conference. The song talks about my experiences working with a database on a project not…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # It's Time For Violence: A song about Databases By Roy Osherove May 19, 2007 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [SQL Server](https://osherove.com/blog/category/sql-server), [Songs](https://osherove.com/blog/category/songs) **Historical article** · Originally published May 19, 2007; technical details may be outdated. It's my pleasure to introduce the first "production" of one of my developer songs, which I've also sung at the awesome DevTeach conference. The song talks about my experiences working with a database on a project not too long ago.. I hope you find it... familiar. This was done with CoolEdit pro, with about 6 tracks of audio, each recorded on my laptop, with a special Guitar to USB Cable I purchased. It's hardly production quality, but I think it's "listenable" enough for people to enjoy. [Embedded content](https://w.soundcloud.com/player/?visual=true&url=https%3A%2F%2Fapi.soundcloud.com%2Fplaylists%2F477257040&show_artwork=true&callback=YUI.Env.JSONP.yui_3_17_2_1_1553293375316_2614&wmode=opaque) **Time For Violence** _A Song about Databases_ _Lyrics By Roy Osherove_ Hello DB My old friend I need to work with you again That stored procedure aint lookin' well Who wrote that trigger should go to jail and that index, It is slower than a snail What the hell **I guess it's time** **For violence** Man whoever wrote this code That bastard's gonna hit the road Now the customer is gonna sue Instead of red my face are turning blue and it seems like there is no way out of this there's just a hiss **I guess it's time** **for violence** I'm angry and I want a name That DBA should be ashamed What's that you're saying? It's ME to blame? That database was MY OWN sick game? Oh that's right it was me who did the design It was mine **I guess it's time** **For silence** ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Jun 3, 2007 ### [Train to be a Keyboard Master with Keyboard Jedi](https://osherove.com/blog/2007/6/3/train-to-be-a-keyboard-master-with-keyboard-jedi.html) - May 26, 2007 ### [OR/M Smackdown - Ayende Vs. Ted Neward](https://osherove.com/blog/2007/5/26/orm-smackdown-ayende-vs-ted-neward.html) - May 16, 2007 ### [Learning new technologies: Is C# a XAML for the CLR?](https://osherove.com/blog/2007/5/16/learning-new-technologies-is-c-a-xaml-for-the-clr.html) - May 3, 2007 ### [Tips for a successful team lead](https://osherove.com/blog/2007/5/3/tips-for-a-successful-team-lead.html) --- title: "Easier Winform UI Thread Safe Methods with DynamicProxy2 and Osherove.SimpleInterception" url: "https://osherove.com/blog/2007/5/19/easier-winform-ui-thread-safe-methods-with-dynamicproxy2-and.md" canonical: "https://osherove.com/blog/2007/5/19/easier-winform-ui-thread-safe-methods-with-dynamicproxy2-and.html" published: "2007-05-19T01:16:47" updated: "2007-05-19T01:16:47" tags: [".NET", ".Net 2.0", "C#", "Cool Tools"] author: "Roy Osherove" description: "Wouldn't it be cool if you could write something like this in your winform apps? : [RunInUIThread] protected virtual void DoSomeUIStuff() { this.Text = \"hey\" } Download the binary files from here. (here are the source…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Easier Winform UI Thread Safe Methods with DynamicProxy2 and Osherove.SimpleInterception By Roy Osherove May 19, 2007 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [C#](https://osherove.com/blog/category/c), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 19, 2007; technical details may be outdated. Wouldn't it be cool if you could write something like this in your winform apps? : **\[RunInUIThread\] _protected virtual void DoSomeUIStuff() { this.Text = "hey" }_** **Download** [the binary files](http://files.osherove.com/downloads/osherove.ThreadSafeUI.bin.zip) from here. (here [are the source files](http://files.osherove.com/downloads/osherove.ThreadSafeUI.Src.zip)) _**\-----------------**_ _**Update**:  Hammet notes that [such a facility exists in Castle](http://svn.castleproject.org:8080/svn/castle/trunk/Facilities/Synchronize/), also here's [a thread about it](http://forum.castleproject.org/viewtopic.php?p=6738&sid=21332bdb29a662f345788d0ae7fa60b5). I feel that it is too verbose and not lightwhegith enough for me, and not as easily extensible as my version, but it's good to know that such a thing already exists!_ _\---------------------------_ Inspired by [Ayende's](http://ayende.com/) talk at [devTeach](http://devteach.com/) where he showed using [Castle Windsor](http://www.castleproject.org/), I decided to take a closer look at how to implement a UI-Thread-Safe solution for winforms, based on his talk. With a little help from Oren, it took about 5 minutes to implement the basics using the wonderful framework known as **DynamicProxy2**, part of the Castle project. During the past couple of days I've refactored this into a more general framework for adding custom attributes which intercept method calls on any object, and allow you to easily create your own attributes with such interception abilities. The only catches are that for this to work - the methods you intercept should be marked as **virtual**. - the objects which contain these methods should not be created directly, but through a special factory class which generates a proxy that does the hard interception work. Here's how simple it is to implement a UI-Thread safe method in a Winform application: 1. **Download** [the binary files](http://files.osherove.com/downloads/osherove.ThreadSafeUI.bin.zip) from here. (here [are the source files](http://files.osherove.com/downloads/osherove.ThreadSafeUI.Src.zip)) 2. unzip the 3 dll files (osherove.simpleinterception, Castle.Core and Castle.DynamicProxy2) into a folder 3. Create a new winform project and add a reference only to **osherove.SimpleInterception.dll**. 4. Add a method named "virtual void **whatever**()" to Form1 class that looks like this with the new **RunInUIThread** attribute from the dll you just referenced: **\[RunInUIThread\] protected virtual void Whatever() { this.Text = "hey" }** 1. Add a button to the form and in its event handler start a new thread which calls the whatever() method like this: **protected virtual void button1\_Click(object sender, EventArgs e) { Thread test = new Thread(new ThreadStart(Whatever)); test.Start(); }** 1. Change the code in the Main() method under program.cs to create the form using the special factory: **Form f = AOPFactory.Create(); Application.Run(f);** That's it! The **Whatever**() method will always run in the UI thread, no matter what thread calls it. Here's how easy it is to add your own intercepting Attribute: Simply derive from AOPAttributeBase: > **\[AttributeUsage(AttributeTargets.Method)\] > public class CustomLoggingAttribute:AOPAttributeBase > { >    protected override void InvokeBefore(AOPInvocation invocation) >    { >      Console.WriteLine("before method {0}...", invocation.Method.Name); >    }** >    **protected override void InvokeAfter(AOPInvocation invocation) >    { >     Console.WriteLine("after method {0}...", invocation.Method.Name); >    } > }** **Download** [the binary files](http://files.osherove.com/downloads/osherove.ThreadSafeUI.bin.zip) from here. (here [are the source files](http://files.osherove.com/downloads/osherove.ThreadSafeUI.Src.zip)) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 20, 2007 ### [HTTPSimulator - Simulating HTTP Requests for unit testing made easier](https://osherove.com/blog/2007/6/20/httpsimulator-simulating-http-requests-for-unit-testing-made.html) - Jun 5, 2007 ### [Running Matlab, Python and Tcl scripts from .NET](https://osherove.com/blog/2007/6/5/running-matlab-python-and-tcl-scripts-from-net.html) - Mar 4, 2007 ### [Code Generation using LINQ Expression Trees and .NET 3.0](https://osherove.com/blog/2007/3/4/code-generation-using-linq-expression-trees-and-net-30.html) - Feb 25, 2007 ### [FxCop is heading in the wrong direction - No testability whatsoever](https://osherove.com/blog/2007/2/25/fxcop-is-heading-in-the-wrong-direction-no-testability-whats.html) --- title: "Learning new technologies: Is C# a XAML for the CLR?" url: "https://osherove.com/blog/2007/5/16/learning-new-technologies-is-c-a-xaml-for-the-clr.md" canonical: "https://osherove.com/blog/2007/5/16/learning-new-technologies-is-c-a-xaml-for-the-clr.html" published: "2007-05-16T06:28:55" updated: "2007-05-16T06:28:55" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Oren's way of learning new things seems to be radically different than mine . Learning WPF, for example. I currently have 3 books on WPF: Adam Nathan's book (the one with all the pretty colors and XAML examples…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Learning new technologies: Is C\# a XAML for the CLR? By Roy Osherove May 16, 2007 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published May 16, 2007; technical details may be outdated. Oren's [way of learning new things seems to be radically different than mine](http://ayende.com/Blog/archive/2007/05/16/Reflctoring--Learning.aspx). Learning WPF, for example. I currently have 3 books on WPF: - Adam Nathan's book (the one with all the pretty colors and XAML examples ("XAMLPES" ?) [ Windows Presentation Foundation Unleashed (WPF) (Unleashed)](https://www.amazon.com/exec/obidos/ASIN/0672328917/iserializable-20) - Petzold's book (the one who [was dissed in CodingHorror](http://www.codinghorror.com/blog/archives/000846.html)) [![](https://osherove.com/img/wb/bc3bbd7d_ec1.images-amazon.com_images_I_21szDVyFB_L.jpg) Applications = Code + Markup: A Guide to the Microsoft Windows Presentation Foundation (Pro - Developer)](https://www.amazon.com/exec/obidos/ASIN/0735619573/iserializable-20) - Sells & Anderson's book (haven't read it yet) [ Essential Windows Presentation Foundation (WPF) (Microsoft .NET Development Series)](https://www.amazon.com/exec/obidos/ASIN/0321374479/iserializable-20) <>  <>I started Adam Nathan's book and indeed the colors make a lot of difference when trying to understand XAML. However, XAML is not what I'm interested in! XAML for me is just the pretty "uber" coating on top of the APIS. XAML is a static design technique and I'm to create dynamic applications with design that changes and create new controls at runtime, custom controls and so on.  having "just enough" low level to understand why XAML works, is not enough. <>When I started reading Petzold's book, I got exactly what I need. Sure, the book definitely lacks enough diagrams, but it does a very important thing: it takes you from the basic "Hello World" in WPF upto a full scale application without even mentioning the word "XAML".  Exactly what I needed. The second part of the book is then dedicated to what XAML is. Now that you **know** how things work, XAML is just a layer of "bureaucracy" on top of that model. Cool. <>I think that Oren [got it wrong](http://ayende.com/Blog/archive/2007/05/16/Reflctoring--Learning.aspx) when he said: > <>"From Roy's perspective, Adam's book is too high level, not giving all the details that Roy feels he should know in order to be a great WPF developer. I don't agree with that approach, personally. I like Adam's book because it talks about the concepts, and it has just enough low level details so I can grasp the _how_ without getting lost in the details. > From Roy's perspective, Adam's book is too high level, not giving all the details that Roy feels he should know in order to be a great WPF developer. I don't agree with that approach, personally. I like Adam's book because it talks about the concepts, and it has just enough low level details so I can grasp the _how_ without getting lost in the details." On the contrary. I feel that XAML is too "low level" a detail, that distracts from the high level picture of how WPF actually works. Once you know how it works, all the "little details" like "How would I design this with WPF" become insignificant. because you can translate them from what you already know about the model. Here's an analogy that fits, I think: When you start programming in .NET, the language syntax that you use is separate from the abilities of the underlying CLR and base class library. It's just a coating on the really important things that .NET can do. I'm pretty sure Oren would not get a book that is on C# with "Just enough" material on why stuff works underneath, rather than get a book of "CLR under the covers". To me, C# or VB.NET - they are the XAML of the Common Language runtime and the base class library. ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - May 26, 2007 ### [OR/M Smackdown - Ayende Vs. Ted Neward](https://osherove.com/blog/2007/5/26/orm-smackdown-ayende-vs-ted-neward.html) - May 19, 2007 ### [It's Time For Violence: A song about Databases](https://osherove.com/blog/2007/5/19/its-time-for-violence-a-song-about-databases.html) - May 3, 2007 ### [Tips for a successful team lead](https://osherove.com/blog/2007/5/3/tips-for-a-successful-team-lead.html) - Apr 29, 2007 ### [What build tool do you use? And TFS Vs. Open Source Round 3](https://osherove.com/blog/2007/4/29/what-build-tool-do-you-use-and-tfs-vs-open-source-round-3.html) --- title: "NDemo - Demo Driven Development?" url: "https://osherove.com/blog/2007/5/16/ndemo-demo-driven-development.md" canonical: "https://osherove.com/blog/2007/5/16/ndemo-demo-driven-development.html" published: "2007-05-16T06:05:20" updated: "2007-05-16T06:05:20" tags: ["Agile", "Agile Related"] author: "Roy Osherove" description: "One of the people I met in DevTeach yesterday was Ben Monro. I'm pretty sure this is his blog . Ben asked me if I've heard of NDemo (same concept as JDemo which I've also never heard of). No I didn't. But it sounded…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NDemo - Demo Driven Development? By Roy Osherove May 16, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published May 16, 2007; technical details may be outdated. One of the people I met in DevTeach yesterday was Ben Monro. I'm [pretty sure this is his blog](http://www.benmonro.com/Blog/). Ben asked me if I've heard of [NDemo](http://www.ndemo.net/) (same concept as [JDemo](http://www.jdemo.de/) which I've also never heard of). No I didn't. But it sounded cool! Ben is the creator of [NDemo](http://www.ndemo.net/), and here's what the site has to say about it: > "NDemo is an open source framework for creating automated testable demonstrations in .NET.  With NDemo, .NET developers can create automated demos in much the same way they create NUnit tests.  With these automated demos, screenshots and walk-thru's can be generated from the real working application. > At the current moment, NDemo is still in the early stages of development.  Although this project uses [JDemo](http://www.jdemo.de/) as an influence, the framework is being built from the ground up in C#.  This project came in part from my frustration with documentation and always having to keep screenshots up to date.  Why not have a tool that generates them for you, and as a side effect, ends up providing cursory level tests on the GUI.?" Ben [has an interesting post on how he views a technique he calls Demo Driven Development](http://www.benmonro.com/Blog/PermaLink,guid,fe63b91b-48a3-4dc3-95ab-f43eb40c9518.aspx), and how it fits in with Agile development. Here's another demo taken seamlessly from that site: The Following example shows a hello world in NDemo.  The syntax is intended to be similar to NUnit.  Notice how the Demo methods return a Demonstrator object.  This object will be used by the demo runner when it runs the demo. ``` using NDemo.Framework; namespace NDemo.Sample.Demos { [DemoFixture] public class HelloWorldFixture { [Demo] public Demonstrator HelloWorld() { HelloWorldForm form = new HelloWorldForm(); FormDemonstrator demo = new FormDemonstrator(form); demo.ClickOn("btnHello").Show("First Click on the Hello Button"); demo.Highlight("lblWorld").Show("World will then appear here."); return demo; } } }   ``` The Demo Runner (the GUI Runner) will actually show screenshots of the UI with the objects highlighted and with the specific annotations on top of these images. That way you could, for example, create automatic testing steps for your QA, even if your UI changes, the screenshots change with it (this can be automated as part of a daily build. It's also a good way to create visual use cases of the application for customers. It's an interesting approach. When I showed this to [Oren(Ayende)](http://www.ayende.com/) he asked whether it only works on winforms.I wasn't sure but I think so. It's built on top of [NUnitForms](http://nunitforms.sourceforge.net/), if I'm not mistaken. Oren was excited to see that the site has a cool "Tested with RhinoMocks" graphic as well :) Cool work Ben! I'd love to see real life demos (no pun intended!) of this thing. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 6, 2007 ### [Scrum - What it looks like in the real world](https://osherove.com/blog/2007/6/6/scrum-what-it-looks-like-in-the-real-world.html) - May 30, 2007 ### [Automating web tests with FitNesse and Selenium](https://osherove.com/blog/2007/5/30/automating-web-tests-with-fitnesse-and-selenium.html) - May 3, 2007 ### [Tips for a successful team lead](https://osherove.com/blog/2007/5/3/tips-for-a-successful-team-lead.html) - Apr 30, 2007 ### [VersionOne is one serious Agile management software](https://osherove.com/blog/2007/4/30/versionone-is-one-serious-agile-management-software.html) --- title: "Slides and demos for talk: Techniques for testing Data Access Code" url: "https://osherove.com/blog/2007/5/15/slides-and-demos-for-talk-techniques-for-testing-data-access.md" canonical: "https://osherove.com/blog/2007/5/15/slides-and-demos-for-talk-techniques-for-testing-data-access.html" published: "2007-05-15T12:47:44" updated: "2007-05-15T12:47:44" tags: [] author: "Roy Osherove" description: "DevTeach Day 1 is almost finished. I just finished my second talk today at DevTeach, and it was a blast! People were participating and asking questions, and laughing, and my \"Hello DB my old friend\" song went rather…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Slides and demos for talk: Techniques for testing Data Access Code By Roy Osherove May 15, 2007 **Historical article** · Originally published May 15, 2007; technical details may be outdated. [DevTeach](http://www.devteach.com/) Day 1 is almost finished. I just finished my second talk today at DevTeach, and it was a blast! People were participating and asking questions, and laughing, and my "Hello DB my old friend" song went rather well too. **Slides and demos for "Techniques for testing Data Access Code"** [Here are the slides](http://files.osherove.com/devteach/DevTeach_DataTesting_osherove_slides.zip) [Here are the demos](http://files.osherove.com/devteach/DevTeach_DataTesting_osherove_code.zip) [Here's a short clip](http://blogs.solidhouse.com/david.woods/PermaLink,guid,134c0429-5e83-4792-9555-a72160a61b37.aspx) from the first talk I did today (ok, just the song in the end) Haven't gotten to see Montreal just yet, as I've gotten from my flights late last night, went to sleep and woke up to do a talk at 9.30 this morning. 16 hours in the air does not go down easy, let me say that. Still, I'm glad I'm here. This weekend It looks like I'll have until Monday here in Montreal before I go to Edmonton. Geek Dinner on Friday anyone? --- title: "Pretty amazing demo of 3D sound on your headphones" url: "https://osherove.com/blog/2007/5/3/pretty-amazing-demo-of-3d-sound-on-your-headphones.md" canonical: "https://osherove.com/blog/2007/5/3/pretty-amazing-demo-of-3d-sound-on-your-headphones.html" published: "2007-05-03T13:24:48" updated: "2007-05-03T13:24:48" tags: ["Off Topic"] author: "Roy Osherove" description: "If haven't heard this yet, you just have to! A friend sent this one to me. Put on your headphones (it's designed especially for that), and listen to true 3D sound as you take your virtual haircut ! Here's another…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Pretty amazing demo of 3D sound on your headphones By Roy Osherove May 3, 2007 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 3, 2007; technical details may be outdated. If haven't heard this yet, you just **have** to! A friend sent this one to me. Put on your headphones (it's designed especially for that), and listen to true 3D sound [as you take your virtual haircut](http://media.putfile.com/Virtual-Barbershop)! Here's [another holophonic demo of matches around your head](http://gprime.net/flash.php/soundimmersion).(what's [holophonic](http://www.sound-ideas.com/holophonic.html)?) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 12, 2007 ### [iPhone is an Israeli Brand originally](https://osherove.com/blog/2007/7/12/iphone-is-an-israeli-brand-originally.html) - Jun 1, 2007 ### [Why I won't be switching to Google RSS Reader](https://osherove.com/blog/2007/6/1/why-i-wont-be-switching-to-google-rss-reader.html) - Apr 27, 2007 ### [How I stopped kicking myself and started using Google Apps For Domains](https://osherove.com/blog/2007/4/27/how-i-stopped-kicking-myself-and-started-using-google-apps-f.html) - Apr 24, 2007 ### [How I got over my Ego](https://osherove.com/blog/2007/4/24/how-i-got-over-my-ego.html) --- title: "Tips for a successful team lead" url: "https://osherove.com/blog/2007/5/3/tips-for-a-successful-team-lead.md" canonical: "https://osherove.com/blog/2007/5/3/tips-for-a-successful-team-lead.html" published: "2007-05-03T13:03:07" updated: "2007-05-03T13:03:07" tags: ["Agile", "General Software Devel..."] author: "Roy Osherove" description: "Embedded Flash media from the original post is no longer playable. A few days ago I gave a talk in front of a crowd at Intel Israel. It was actually three talks, and the first was about project management and Team…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tips for a successful team lead By Roy Osherove May 3, 2007 In [Agile](https://osherove.com/blog/category/agile), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published May 3, 2007; technical details may be outdated.

Embedded Flash media from the original post is no longer playable.

A few days ago I gave a talk in front of a crowd at Intel Israel. It was actually three talks, and the first was about project management and Team System.

I specifically took that talk into a bit of a different direction, and besides showing off VSTS, I also gave some tips for being a successful team and project lead.

Here’s a partial list of those tips. Some of them can be seen in various “Agile” methodologies, but taken as simply tips, they can improve the quality of your project-life without needing to work with any specific methodology.

Heck, just call it “Osherothology”

  • 40 hour weeks

It may sound crazy, but making sure that your team does not overwork itself is one of the simplest things you can do. As a rule people should not have to work over 8-9 hours per day, even if they want to. There are peaks where I find that people do allow themselves to do this, but you have to make sure it’s not the rule, but the exception. Otherwise you’ll find people starting to “burn” themselves, coming to work late, less productive, and taking long vacations. Eventually, you’ll lose them.

  • Lots of automation

One of the keys to a successful project which can keep up with changing realities is the ability to automate almost everything. Have an automated build cycle at least once a day, if not several times per day. Automate deployment to test and staging machines. Automate testing using unit tests and other types of tests, automate code generation for part of the project that could use it. Automation saves you precious time, while making sure you don’t miss any tedious steps in the process. That way you can try out things, see what happens, and revert back if you find a problem.

- **Get lots of feedback** - **Daily meetings** Get info from your team on what’s going on right now. A daily meeting of 5-10 minutes where you ask three questions: “What did you do yesterday, what will you do today, and what problems do you have?” each person on your team answers these. Weekly meetings are less helpful because as a team lead you might miss out on a problem you could have solved 4 days ago. Daily meetings also free the team from unneeded meetings about status. - **Customer Demos** Try to have some kind of demo to your client or client representative (could be the product manager). As simple as a command line or a UI that shows features you managed to finish by now. Get feedback about the direction you’re heading in. You’ll find that you made a mistake, but instead of waiting 6 months to find out about it, you only lost a month. - **Acceptance tests** If you can manage getting the customer to run acceptance tests on your product, you’re in luck. When they all pass, it means you’re done! - **Regression tests** Without some form of automated testing, you can’t check if you broke an existing feature in your work on other features(called a ‘regression’). Have as much as you can of these and run them during your automated build. - **Don’t compromise on the best tools** The difference between a team working with the right tools to do their work and one that doesn’t even know that the “right” tools exist can be as big as the difference between using Notepad to program instead of Visual Studio. Huge. It can be as simple as buying bigger screens for your team to work in (I once worked at a place that to this day still has some 15” monitors for developers) As a lead, it’s your job to stay ahead of the game and find out about new tools and addons that can help make your team more productive. Checkout [SharpToolbox](http://sharptoolbox.com/) for a list of tools in many categories. - **Do code reviews** I can’t stress enough the importance of this. Have at least a weekly code review with each person in your team (or have other people in your team do it). The quality of the code can go miles up , and you can find hidden bugs and non-standard usage of libraries in your code. Most importantly, you’re letting your developers know that you care about what they write, and you’re passionate about teaching them how to do it better. - **Test Reviews are even better than code reviews** If your developers are writing unit tests, do a “test review” on a weekly or even a daily basis. The thing about reading people’s tests is that it takes considerably less time to go over it and understand it (about 10th of the time it takes to review the actual method being tested). Reviewing people’s tests lets you: - understand what feature they were trying to write - make sure the tests are high quality and readable - allow you to find logical errors in the method under tests due to the declarative nature of unit tests (A test that makes sure a method throws an exception given some value may tell you that the developer did not understand that you meant that method never to throw an exception) - **Have a whiteboard** And I **don’t** mean a cork board (they have a nasty habit of being filled up with pictures and non related papers that never get thrown away for years). A whiteboard is a way to have a visual conversation in an ad-hoc manner. To do quick design sessions, or even to have your daily meeting in front of, checking boxes and showing overall progress on this week’s or iteration’s tasks. It’s an “[information Radiator](http://www.agileadvice.com/archives/2005/05/information_rad.html)”, that radiates information to whoever’s in the room. **Got any tips of your own?** I’d love to hear them! ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 30, 2007 ### [Automating web tests with FitNesse and Selenium](https://osherove.com/blog/2007/5/30/automating-web-tests-with-fitnesse-and-selenium.html) - May 16, 2007 ### [NDemo - Demo Driven Development?](https://osherove.com/blog/2007/5/16/ndemo-demo-driven-development.html) - Apr 30, 2007 ### [VersionOne is one serious Agile management software](https://osherove.com/blog/2007/4/30/versionone-is-one-serious-agile-management-software.html) - Apr 27, 2007 ### [See you At the DevTeach Agile Track!](https://osherove.com/blog/2007/4/27/see-you-at-the-devteach-agile-track.html) --- title: "VersionOne is one serious Agile management software" url: "https://osherove.com/blog/2007/4/30/versionone-is-one-serious-agile-management-software.md" canonical: "https://osherove.com/blog/2007/4/30/versionone-is-one-serious-agile-management-software.html" published: "2007-04-30T14:30:13" updated: "2007-04-30T14:30:13" tags: ["Agile", "Agile Related"] author: "Roy Osherove" description: "I'm seriously impressed by the new TaskBoard in the new VersionOne product. Here's a cool demo of it. It's beginning to be a nice time for Agile teams when 3rt party commercial tool are popping up with very good…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VersionOne is one serious Agile management software By Roy Osherove April 30, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published April 30, 2007; technical details may be outdated. I'm seriously impressed by the new TaskBoard in the new VersionOne product. [Here's a cool demo](http://demos.versionone.net/video/taskboard/taskboard.html) of it. It's beginning to be a nice time for Agile teams when 3rt party commercial tool are popping up with very good offerings. [ScrumForTeamSystem.Com](http://scrumforteamsystem.com/) is the current offering for the team system crowd, but it's still far away from the usability aspects in a product like [VersionOne](http://www.versionone.com/LatestRelease/) or [TargetProcess](http://www.targetprocess.com/). What Agile software do **you** use, if at all? ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 16, 2007 ### [NDemo - Demo Driven Development?](https://osherove.com/blog/2007/5/16/ndemo-demo-driven-development.html) - May 3, 2007 ### [Tips for a successful team lead](https://osherove.com/blog/2007/5/3/tips-for-a-successful-team-lead.html) - Apr 27, 2007 ### [See you At the DevTeach Agile Track!](https://osherove.com/blog/2007/4/27/see-you-at-the-devteach-agile-track.html) - Apr 27, 2007 ### [Poll: What Mock Frameworks do you use?](https://osherove.com/blog/2007/4/27/poll-what-mock-frameworks-do-you-use.html) --- title: "What build tool do you use? And TFS Vs. Open Source Round 3" url: "https://osherove.com/blog/2007/4/29/what-build-tool-do-you-use-and-tfs-vs-open-source-round-3.md" canonical: "https://osherove.com/blog/2007/4/29/what-build-tool-do-you-use-and-tfs-vs-open-source-round-3.html" published: "2007-04-29T14:34:34" updated: "2007-04-29T14:34:34" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Embedded Flash media from the original post is no longer playable. Ah, Oren. You amuse me yet again , you OSS guru you ;) (he replied about my earlier post regarding using TFS Vs. Open source tools) (No I don't have…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What build tool do you use? And TFS Vs. Open Source Round 3 By Roy Osherove April 29, 2007 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published April 29, 2007; technical details may be outdated.

Embedded Flash media from the original post is no longer playable.

Ah, Oren. You amuse me yet again, you OSS guru you ;) (he replied about my earlier post regarding using TFS Vs. Open source tools)

(No I don't have shares in Microsoft)

(I also do consulting on TFS)

(I also do Consulting for Configuration management using open source and commercial tools, many times connecting tools from both worlds together)

Oren:

"Let me put it in the simplest terms that I can, TFS puts me out of the zone. That is simply unacceptable, period. If I need to be aware of "Don't go near the Team Explorer Tab, it will hung VS for 5 seconds", I am not in the zone. If I am not in the zone, I rarely get to code well"

Aha, my dear colleague. Yet you continue to use Visual Studio .NET, which, even without team system, has it's share of usability problems for you, I'm Sure. Why not use notepad or eclipse for writing the code, then running a command line to compile it, then use an XML Editor to change the config files? Why are you using a suite of integrated tools to develop code, in an environment which you probably aren't that crazy over?

Seeing the bigger picture perhaps? There is some value to it after all.

And don't get me started on the "zone" thing. You develop on a windows machine, right? your "zone" gets disrupted a million times a day by tiny little operating system mishaps, dialogs, crashes and what not, yet you continue to use it and not another operating system. I guess sometimes you compromise to get what you need. And how about working with **people**? People sometimes take me out of the "zone", and cellphones too. Gosh, I should just program in a cave with a rock and a wall in front of me. Oh, wait, there are **advantages** to doing the opposite. Resharper has it's slow moments inside VS.NET. It sometimes makes you **aware that it is working**. Yet I still use it. Sum is great than thee parts etc.. Oren said: > "And it is another story yet again when to say, "I know a different solution, which can give me all that I need/want, so I don't have to _deal_ with those shortcoming." The bigger picture as I see it is that I get everything that I want, and don't have to waste my time on patching holes in the tools that I use. Tools should be transperant, not road blocks" I'm wondering if the word "I" is to blame here. Yes, for **you** you get all that you want, while still paying the price of configuration, forking, patching, learning curve etc. What about "**us"? Would it be just as easy for an entire team** or an full dev group to do such a move? Assuming that this magical suite of OSS tools that provide exactly what you could get in TFS exists (yes, I'm sure you can make it happen, Oren), what is the cost of: - Learning that you can actually do something like this without having an OSS guru in the house? (Solution Discoverability) - Writing the documentation of how you did it and keeping it all as one big happy maintainable system? Again,  not for **you** personally, but for an organization? My main point is that, yes, both systems, the closed one and the open one, need care and attention. At the end of the day, it is the system that can last longer in the real world, which is discoverable, supported and more usable, that will gain more popularity. That's the same percentage you see with Windows and Linux adoption,  That's the reason Mock Object frameworks are still considered somewhat of a "black magic" for lots of people still. that's why Castle and Active Record are still now as well known as the documented and commercial ORM tools out there (and they are considered to be top notch when it comes to documentation) TFS may not be **your** thing, but it sure as hell saves lots of time for lots of people who learn to work with what they have and optimize it, extend it, and not go and work on something that may be the "perfect" thing for them, but less perfect for other people. If you plan on saying "just say no" you should at least know that people might find out that what they turned down actually has **more value** than the little things that annoy you. **When you aim wide, you have to aim a little lower. I think that's just the way it is.** Smaller or one men shops may find it easier to use open source tools. larger ones usually still aim for something with a little more support. (Linux is not an example because it has also turned into a money-making model and so gets support, updates, documentation, consulting etc..) I'm not ashamed to say that I've used VSS and still use it today in some cases, along with svn, and I still find VSS' experience to be better in terms of usability .Yeah, it's kind of a crappy product in many ways, but the bar is so low it's just easy to work with and integrated everywhere (yes, so does svn... I know I know) So, am I a heretic who should be shot because I tend to flow into the path of least resistance? You are doing the same thing, only you are looking at a **different kind of resistance**. Adoption resistance is just as important. _( I may sound a bit harsh, but this is all in a good mood. I respect and like Oren very much, and much beer will be had together at_ _[DevTeach](http://weblogs.asp.net/rosherove/archive/2007/04/27/see-you-at-the-devteach-agile-track.aspx)_ _next month!)_ ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - May 16, 2007 ### [Learning new technologies: Is C# a XAML for the CLR?](https://osherove.com/blog/2007/5/16/learning-new-technologies-is-c-a-xaml-for-the-clr.html) - May 3, 2007 ### [Tips for a successful team lead](https://osherove.com/blog/2007/5/3/tips-for-a-successful-team-lead.html) - Apr 29, 2007 ### [What Source Control tool do you use? And more on TFS Vs. Open Source tools](https://osherove.com/blog/2007/4/29/what-source-control-tool-do-you-use-and-more-on-tfs-vs-open.html) - Apr 29, 2007 ### [TFS or not? Being a perfectionist in a realistic world](https://osherove.com/blog/2007/4/29/tfs-or-not-being-a-perfectionist-in-a-realistic-world.html) --- title: "What Source Control tool do you use? And more on TFS Vs. Open Source tools" url: "https://osherove.com/blog/2007/4/29/what-source-control-tool-do-you-use-and-more-on-tfs-vs-open.md" canonical: "https://osherove.com/blog/2007/4/29/what-source-control-tool-do-you-use-and-more-on-tfs-vs-open.html" published: "2007-04-29T09:26:49" updated: "2007-04-29T09:26:49" tags: ["General Software Devel...", "Team System"] author: "Roy Osherove" description: "Embedded Flash media from the original post is no longer playable. Regarding my last post , Oren (Ayende) points out that regarding TFS's features, he can either find a match for them in open source land, or he doesn't…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What Source Control tool do you use? And more on TFS Vs. Open Source tools By Roy Osherove April 29, 2007 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published April 29, 2007; technical details may be outdated.

Embedded Flash media from the original post is no longer playable.

Regarding my last post, Oren (Ayende) points out that regarding TFS's features, he can either find a match for them in open source land, or he doesn't really care about them.

What bugs me is whether, assuming you can find and create such a solution out of a package of open source applications working together that operate with the same level of integration as TFS, can you still handle the things that matter to the organization using your solution:

  • Maintainability: Granted, it's not easy to maintain a TFS installation, but it sure as hell just as hard if not harder to maintain a full range of open source tools, each one from a different publisher, different versions and compatibilities, documentation and support services (if at all).
  • Learning curve: I have no doubt that 9 times out of 10, it is harder to get up to speed on an open source product than a commercial one (there are always exceptions). Double that by the number of different products you are using and see what you get. Usually the documentation is not as good, and the support contract (if exists) is very poor as well. The efforts to maintain the source code and create your own version might actually be higher than what you are trying to save. And no, I don't think it will still be less that the cost of a commercial product (TFS or otherwise)
  • Ease of use: Usually I find that Open source products tend to be less usable than commercial ones. Money does matter. Yes, there are always exceptions. Actually, Eclipse is an IDE I find more usable than VS.NET. But then again, Eclipse's community is funded as far as I know. Money matters.
  • If you found subversion to be working too slow for you, what are the odds you'd go hack the code for yourself to get a better version? then update it with every new drop? what would be the cost of that?
I do realize that many of my points here are actually related to the Open source thing as a whole, but it does matter when the product and solution you are trying to install is to be delivered in an organization with lots of things at stake. I think that even in small groups VSTS can win out over OSS solutions by pure integration, but usability wise it may still be lacking. There are always workarounds for this kind of thing (like using [TestDriven.NET](http://testdriven.net/) when running tests in VSTS IDE), so what I think I'm saying is, well, don't discount something just because one thing is not perfect. If you do, it (in this case) is purely a matter of individual preference. Just like I hate editing XML files. At an organizational level I do realize that to get the good you sometimes need to get a little bad, and find ways to minimize it. It's quite easy to say "I'm not using this because of X,Y,Z". It's quite a different story to say "I know it has it's problems, but looking at the **bigger picture** I owe it to myself to see if I can find a way to work with it **despite** of the shortcomings" And no, I don't advise you to drop source control integration, but learn to live with it to accept the other benefits. I agree that taking source control or work items out of the picture it becomes a much less relevant product. that's why I think working with all of them is the only way you will find true value in such a product. As a pragmatist, I don't necessarily use products just because they are Microsoft oriented. I do believe in the best tool for the job. I have no problem acknowledging TFS's problems as well as its advantages, while still looking at many other tools to see if they fit the job better. I didn't see anything that really comes close, with all the hiccups it does have. Working with a tool like [CI Factory](http://www.cifactory.org/) or [TFS Integrator](http://notgartner.wordpress.com/2006/09/18/getting-started-with-tfs-integrator/) is always something I'm looking at because they bring value to places where TFS is lacking. But slamming on a tool just because some parts of it are not the fastest is just wrong. the Source control is still one of the strongest ones I've seen in terms of features. discounting it would mean underestimating a product that actually has much value. ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - May 3, 2007 ### [Tips for a successful team lead](https://osherove.com/blog/2007/5/3/tips-for-a-successful-team-lead.html) - Apr 29, 2007 ### [What build tool do you use? And TFS Vs. Open Source Round 3](https://osherove.com/blog/2007/4/29/what-build-tool-do-you-use-and-tfs-vs-open-source-round-3.html) - Apr 29, 2007 ### [TFS or not? Being a perfectionist in a realistic world](https://osherove.com/blog/2007/4/29/tfs-or-not-being-a-perfectionist-in-a-realistic-world.html) - Mar 16, 2007 ### [Remote Pair Programming with collaborative text editors](https://osherove.com/blog/2007/3/16/remote-pair-programming-with-collaborative-text-editors.html) --- title: "TFS or not? Being a perfectionist in a realistic world" url: "https://osherove.com/blog/2007/4/29/tfs-or-not-being-a-perfectionist-in-a-realistic-world.md" canonical: "https://osherove.com/blog/2007/4/29/tfs-or-not-being-a-perfectionist-in-a-realistic-world.html" published: "2007-04-29T01:02:27" updated: "2007-04-29T01:02:27" tags: ["General Software Devel...", "Team System"] author: "Roy Osherove" description: "Oren pointed out that he would run away from TFS because it’s not a “zero friction tool”. He does have some valid points, mostly about the length of time some of the source control actions might take, though personally…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TFS or not? Being a perfectionist in a realistic world By Roy Osherove April 29, 2007 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published April 29, 2007; technical details may be outdated. Oren pointed out [that he would run away from TFS](http://ayende.com/Blog/archive/2007/04/29/Passonaite-at-Team-System-Depending-on-which-direction.aspx) because it’s not a “zero friction tool”. He does have some valid points, mostly about the length of time some of the source control actions might take, though personally I haven’t found this to be much of a problem. I'd usually say "stay clear of all-or-nothing recommendations" but Oren's is a special case because I know him and respect his opinion on many matters. However, I think that Oren is making one big mistake: he's throwing the baby out with the bath water. Just because the **source control** is not as zero-friction as some open source alternatives, does not mean that TFS is not a valuable suite of tools, with more added value than most open source tools that I know of. - The ability to associate a work item with a check-in action is very powerful in determining and reporting “delta” between failing builds - Builds are also connected to checkin, and build history allows you to ‘drill down” to see all the source differences between the last success build and the current failing one - The ability to use “workspaces”, which map current source control into local directories is powerful because it allows you to work concurrently on multiple versions of the same product, and switching between them in a couple of clicks from the IDE - Powerful automated reporting - Distributed and extensible build capabilities - Task and bug management I mean, Oren, c’mon! You don’t like a part of a part of team system – the source control aspect is not perfect for you, but what alternative do you have for a suite of tools that works together so powerfully? Also, it’s still a version 1.0 product, and you **know** that version 3.0 is usually the one to remember, but as a version 1.0 product, and compared to most OSS tools (working together), VSTS gives me something that I find hard to get anywhere else – true collaboration. There are parts of TFS that I personally still have problems with: - The build management and maintenance could be far better. So I turn to [3rd party tools](http://www.finalbuilder.com/) and integrate them in to solve my problem. - Unit Testing has some bugs and is generally slower. But it still works just fine and I’d use it in **combination** with other testing products to get what I need. I’m not even going to discuss how annoyed I am that unit testing is not part of all VS.NET SKUs - Lacking ability to do GUI testing. 3rd party tools again. - Requirement management solution is not enough for some organizations. Again, [3rd party tools](http://info.borland.com/techpubs/caliber_rm/mvs/EN/Install.htm) if you need them None of these means I’m giving up using VSTS when it makes sense, and for many organizations, it makes a lot of sense. Especially compared to what they currently have. Take an organization using ClearCase and have them move to VSTS Source Control, then ask them about zero friction. It’s a matter of perspective. Giving up a full range of possibilities just because one of them is not perfect is kind of narrow minded – the total is greater than the sum of all of it’s parts in this case. A slower moving source control system is not enough justification for me. Being a **perfectionist** is problematic when talking about system tools. **Realistic** is much more likely to solve more problems. ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Apr 29, 2007 ### [What build tool do you use? And TFS Vs. Open Source Round 3](https://osherove.com/blog/2007/4/29/what-build-tool-do-you-use-and-tfs-vs-open-source-round-3.html) - Apr 29, 2007 ### [What Source Control tool do you use? And more on TFS Vs. Open Source tools](https://osherove.com/blog/2007/4/29/what-source-control-tool-do-you-use-and-more-on-tfs-vs-open.html) - Mar 16, 2007 ### [Remote Pair Programming with collaborative text editors](https://osherove.com/blog/2007/3/16/remote-pair-programming-with-collaborative-text-editors.html) - Mar 16, 2007 ### [The 46 Best-ever Freeware Utilities - By DonationCoder.Com](https://osherove.com/blog/2007/3/16/the-46-best-ever-freeware-utilities-by-donationcodercom.html) --- title: "We're hiring Team System People - Are you passionate enough?" url: "https://osherove.com/blog/2007/4/28/were-hiring-team-system-people-are-you-passionate-enough.md" canonical: "https://osherove.com/blog/2007/4/28/were-hiring-team-system-people-are-you-passionate-enough.html" published: "2007-04-28T16:05:11" updated: "2007-04-28T16:05:11" tags: [] author: "Roy Osherove" description: "It's that time of the year again. Our Team System team at Sela is looking for good people with (hopefully) existing skills regarding Visual Studio Team System, but definitely .NET programmers who aren't afraid to work…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # We're hiring Team System People - Are you passionate enough? By Roy Osherove April 28, 2007 **Historical article** · Originally published April 28, 2007; technical details may be outdated. It's that time of the year again. Our Team System team at [Sela](http://www.sela.co.il/) is looking for good people with (hopefully) existing skills regarding Visual Studio Team System, but definitely .NET programmers who aren't afraid to work alone on cutting edge integration and IT projects involving team system for our clients. If you - Have at least 1 year .NET programming experience - Worked with Team System before - like to work with clients - like to program - Have a passion for Configuration management (Automated builds, Continuous Integration, Version Management Schemes) - Live in Israel We might work together soon! Contact Tal Gur Arie at Sela : _TalG **AT** Sela.co.il_ or me, _Royo **AT** Sela.co.il_ with your CV. --- title: "See you At the DevTeach Agile Track!" url: "https://osherove.com/blog/2007/4/27/see-you-at-the-devteach-agile-track.md" canonical: "https://osherove.com/blog/2007/4/27/see-you-at-the-devteach-agile-track.html" published: "2007-04-27T16:18:40" updated: "2007-04-27T16:18:40" tags: ["Agile"] author: "Roy Osherove" description: "I'll be speaking at the upcoming DevTeach in Canada on the 15th Of May on the following topics: Agile Development Q & A Techniques for testing Data Access Code Continuous Integration Tools in .NET Panel: Open Source in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # See you At the DevTeach Agile Track! By Roy Osherove April 27, 2007 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published April 27, 2007; technical details may be outdated. I'll be speaking at the upcoming [DevTeach](http://www.devteach.com/) in Canada on the 15th Of May on the following topics: - [Agile Development Q & A](http://www.devteach.com/wconnect/wc.dll?FournierTransformation~1,5,1,667) - [Techniques for testing Data Access Code](http://www.devteach.com/wconnect/wc.dll?FournierTransformation~1,5,1,659) - [Continuous Integration Tools in .NET](http://www.devteach.com/wconnect/wc.dll?FournierTransformation~1,5,1,657) - [Panel: Open Source in the Microsoft Community](http://www.devteach.com/BonusSession.aspx#Bonus) And yes, I'll be bringing my guitar along for a small song at the end of each session! I'll also be joined by two other Israeli bloggers in the Agile Track, organized by noted blogger [Scott Bellware](http://codebetter.com/blogs/scott.bellware/): [Oren Eini](http://ayende.com/) (Ayende), creator of RhinoMocks and many other cool projects, and [Udi Dahan](http://udidahan.com/), The software Simplist, SOA Specialist and all around noted .NET architect. **User Group Tour** The Week After that I'll be doing a user group tour across Canada(not finalized, but 99% chance this is the final one): - Edmonton – Tuesday   22nd - Winnipeg – Wednesday   23rd - Toronto – Thursday   24th I'm still not sure what the talk topics will be, but I'm pretty sure it may have something to do with Agile Development, regular Expressions or other .NET topics. **Any special requests?** ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - May 3, 2007 ### [Tips for a successful team lead](https://osherove.com/blog/2007/5/3/tips-for-a-successful-team-lead.html) - Apr 30, 2007 ### [VersionOne is one serious Agile management software](https://osherove.com/blog/2007/4/30/versionone-is-one-serious-agile-management-software.html) - Apr 27, 2007 ### [Poll: What Mock Frameworks do you use?](https://osherove.com/blog/2007/4/27/poll-what-mock-frameworks-do-you-use.html) - Apr 26, 2007 ### [Choosing a Mock Object Framework](https://osherove.com/blog/2007/4/26/choosing-a-mock-object-framework.html) --- title: "How I stopped kicking myself and started using Google Apps For Domains" url: "https://osherove.com/blog/2007/4/27/how-i-stopped-kicking-myself-and-started-using-google-apps-f.md" canonical: "https://osherove.com/blog/2007/4/27/how-i-stopped-kicking-myself-and-started-using-google-apps-f.html" published: "2007-04-27T15:47:50" updated: "2007-04-27T15:47:50" tags: ["Off Topic"] author: "Roy Osherove" description: "It took me long enough, but I think I finally figures out a nice solution for my emailing needs. Up to now I hosted my mail at an exchange hosting company (MyHostedExchange.com) so that I can access it online and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How I stopped kicking myself and started using Google Apps For Domains By Roy Osherove April 27, 2007 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 27, 2007; technical details may be outdated. It took me long enough, but I think I finally figures out a nice solution for my emailing needs. Up to now I hosted my mail at an exchange hosting company (MyHostedExchange.com) so that I can access it online and mobile'ish in an easy manner. But I also had to take care of my growing spam problem (over 200 spam emails per day, much more on weekends, not counting blog comment email spam). So I paid SpamStopsHere.com their monthly due as well. I also had a gmail account, hotmail account and several others. And I hated every second of it. A few weeks ago I got into [Google Apps For Domains](http://www.google.com/a/help/intl/en/admins/editions_spe.html). I've started using their free service (2 GB Email. with your own domain name) and have moved **all** of my current emailing aliases into that email service. I haven't looked back since (if only to be amazed at how better off I am now). The spam filtering is awesome (_but you can always use_ [_10minuteMail.com_](http://10minutemail.com/) _if you need as disposable email address)_, and the search capabilities are, well, Googlishious. No more need to pay for exchange hosting or spam filtering, and I get access from my mobile with [Google mobile](http://mail.google.com/mail/help/intl/en/about_mobile.html). I imported all my existing gmail emails by using Google's cool ability to check multiple POP3 accounts from within your email account (by going to settings->accounts->get mail from other accounts), and actually adding my gmail account in there. I find that the web interface is very easy to use, and sometimes I even prefer it to outlook. Of course I can access my emails with pop3 from outlook, so no problem getting a "hard copy" of my emails offline. **Calendar too!** I also am managing my calendar and syncing it up with Google Calendar. I have an account at [scheduleworld.com](http://scheduleworld.com/) and I have a syncing application that syncs outlook with scheduleworld. Then, ScheduleWorld knows how to sync up with Google Calendar, so I'm all set! ([here's a link that takes you step by step](http://engtech.wordpress.com/2006/08/11/the-holy-grail-of-synchronization-how-to-synchronize-microsoft-outlook-multiple-locations-google-calendar-gmail-ipod-and-mobile-phone-with-funambol-scheduleworld/) in doing this) Funnily enough, a few days after doing the switch, I find out that [Hanselminutes has a podcast on exactly these kinds of matters](http://www.hanselminutes.com/default.aspx?showID=75). It's like we're connected in a magical geeky way! There are only several possible drawbacks: - No easy way to import existing outlook emails into gmail - This is much more suitable for 1-5 people teams than anything. You can upgrade to a premium account (50$ per user per year) but besides getting a 10GB box, there [are many complaints about this program](http://groups.google.com/group/apps-features/topics?tsc=1) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 1, 2007 ### [Why I won't be switching to Google RSS Reader](https://osherove.com/blog/2007/6/1/why-i-wont-be-switching-to-google-rss-reader.html) - May 3, 2007 ### [Pretty amazing demo of 3D sound on your headphones](https://osherove.com/blog/2007/5/3/pretty-amazing-demo-of-3d-sound-on-your-headphones.html) - Apr 24, 2007 ### [How I got over my Ego](https://osherove.com/blog/2007/4/24/how-i-got-over-my-ego.html) - Mar 2, 2007 ### [Building a home media center - Here's my parts list](https://osherove.com/blog/2007/3/2/building-a-home-media-center-heres-my-parts-list.html) --- title: "Poll: What Mock Frameworks do you use?" url: "https://osherove.com/blog/2007/4/27/poll-what-mock-frameworks-do-you-use.md" canonical: "https://osherove.com/blog/2007/4/27/poll-what-mock-frameworks-do-you-use.html" published: "2007-04-27T15:11:56" updated: "2007-04-27T15:11:56" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "I've been looking for a good way to add simple polls to my blog for a while now, and then I came across this blog post which reviews 12 free online poll sites (some of them actually dedicated to bloggers). I chose…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Poll: What Mock Frameworks do you use? By Roy Osherove April 27, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published April 27, 2007; technical details may be outdated. I've been looking for a good way to add simple polls to my blog for a while now, and then I came across [this blog post which reviews 12 free online poll sites](http://www.churchcommunicationspro.com/2007/01/21/12-free-web-poll-survey-services-reviewed-working-examples-included/) (some of them actually dedicated to bloggers). I chose [PollDaddy](http://www.polldaddy.com/)(they also have [a blog](http://blog.polldaddy.com/)) and you can now take a short poll (no registration or redirect!) about what [mocking frameworks](http://en.wikipedia.org/wiki/Mock_Object) you use at your workplace or at your home. (it's the same poll that I put [on my previous blog post](http://weblogs.asp.net/rosherove/archive/2007/04/26/choosing-a-mock-object-framework.aspx), so feel free to answer just one of them - it's the same one) I'd also like to know if this is something you'd be willing to answer every once in a while, or do you find it annoying. (maybe I should do a poll about that as well? :) ) (it's flash based) Embedded Flash media from the original post is no longer playable. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Apr 30, 2007 ### [VersionOne is one serious Agile management software](https://osherove.com/blog/2007/4/30/versionone-is-one-serious-agile-management-software.html) - Apr 27, 2007 ### [See you At the DevTeach Agile Track!](https://osherove.com/blog/2007/4/27/see-you-at-the-devteach-agile-track.html) - Apr 26, 2007 ### [Choosing a Mock Object Framework](https://osherove.com/blog/2007/4/26/choosing-a-mock-object-framework.html) - Mar 16, 2007 ### [Remote Pair Programming with collaborative text editors](https://osherove.com/blog/2007/3/16/remote-pair-programming-with-collaborative-text-editors.html) --- title: "Choosing a Mock Object Framework" url: "https://osherove.com/blog/2007/4/26/choosing-a-mock-object-framework.md" canonical: "https://osherove.com/blog/2007/4/26/choosing-a-mock-object-framework.html" published: "2007-04-26T15:10:16" updated: "2007-04-26T15:10:16" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "Update : I've added a simple Poll at the bottom of this post which you can answer on your most used frameworks. ----------------------- My upcoming book is going forward ever so slowly, mostly due to my beautiful new…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Choosing a Mock Object Framework By Roy Osherove April 26, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published April 26, 2007; technical details may be outdated. **Update**: I've added a simple Poll at the bottom of this post which you can answer on your most used frameworks. \----------------------- My [upcoming book](http://www.artofunittesting.com/) is going forward ever so slowly, mostly due to my beautiful new son, Itamar, which seems to be changing everyone's priorities, by simply being the cutest little person that he is (at 4 months). Still, I'm struggling to bring myself to write more, and it's a tough job. I simply feel less strongly about everything technical these days, but it's slowly coming back to me. I'm currently struggling with Chapter 5, which is currently titled "Mock Object Frameworks". My current dilemma is a pretty important one, so I thought maybe you guys can help me with directions on my decision. **My question to you**: Which [Mock Object](http://en.wikipedia.org/wiki/Mock_Object) framework should I use for Mocking examples in my book? There are my current candidates: **1\.** [**NUnit.Mocks**](http://nunit.org/) **(yes, there is such a thing!** [**here's an example**](http://www.socialanimal.com/2005/07/05/nunit-mocks/)**)** Simple, Easy, and straightforward, this feels like the perfect framework to start the novice Mocker off with, especially since NUnit plays a role earlier in the book. However, I'd also like to show later on more advanced stuff that NUnit.Mocks does _not_ support like events, generics etc, which other frameworks do. I'm not sure how great I feel about changing the mock framework from underneath the reader's nose mid way... what do you think? **2\.** [**NMock**](http://nmock.org/nmock1-documentation.html) This is one of the "standard" frameworks for mocking in .NET, and many people use it, but it's getting old. It has a new version Nmock2, which I'm considering, but that hasn't been updated in over a year (see next bullet) **3\.** [**NMock2**](http://nmock.org/index.html) Looks very promising, and sounds great, but the Downloads section of SourceForge seems to only have a version from May 2006, a year ago! Does _anyone_ know what' sup with this framework's code? Is it actively maintained? It has [a continuous build cycle](http://ccnetlive.thoughtworks.com/ccnet/server/local/project/NMock/ViewProjectReport.aspx), I know, but is it actually progressing somewhere? I wouldn't want to write about a framework that's on it's way out one way or another. Thoughts? **4\.** [**EasyMock**](http://sourceforge.net/projects/easymocknet/) One of the "Standards". I like it. it's nice and easy, but some things are missing (that I'm missing from it, at least. Maybe they are there?) - Support for checking parameters with custom matchers (assert that the parameter passed in contains some string, for example, or check a property value on a passed in object).  Plus, it's latest version is very old from 2004. **5\.** [**Rhino Mocks**](http://www.ayende.com/projects/rhino-mocks.aspx) [Oren Eini](http://www.ayende.com/) is doing a great job with this framework, and I think it's the only one that seems to be keeping up with the latest features in .NET, other than TypeMock. Plus, it's totally free to use (as are all the previous ones). It's also the only one _other than TypeMock_ which does not require you to input strings for method names you'd like to mock, which is cool. It's compelling to use it but the project is currently maintained by just one person. If Oren decides to drop it, or for any reason stop working on it, the book might turn out outdated quite quickly. Plus, it's not very widely used, though it seems to be gaining in popularity. **6\.** [**TypeMock**](http://www.typemock.com/) Great framework, with lots of features. _No need to use strings for method names like in RhinoMocks._ Also, not very widely known, but gaining in popularity quickly, mainly because of it's ability to mock _anything_ including statics, privates and events, without even requiring you to inherit or implement any interfaces or virtual methods. It's almost magical in that sense(or even too powerful), but it also support the "traditional" way of mocking objects, just like all the others. Sadly, it's Commercial, and I'm not sure how well that would be received by my readers. What do you guys think? What framework is a good fit for a book about Unit Testing and Mock Objects? Write a comment, or take this quick Poll: Embedded Flash media from the original post is no longer playable. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Apr 27, 2007 ### [See you At the DevTeach Agile Track!](https://osherove.com/blog/2007/4/27/see-you-at-the-devteach-agile-track.html) - Apr 27, 2007 ### [Poll: What Mock Frameworks do you use?](https://osherove.com/blog/2007/4/27/poll-what-mock-frameworks-do-you-use.html) - Mar 16, 2007 ### [Remote Pair Programming with collaborative text editors](https://osherove.com/blog/2007/3/16/remote-pair-programming-with-collaborative-text-editors.html) - Mar 13, 2007 ### [Test Reviews Vs. Code Reviews - Some Helpful Tips](https://osherove.com/blog/2007/3/13/test-reviews-vs-code-reviews-some-helpful-tips.html) --- title: "How I got over my Ego" url: "https://osherove.com/blog/2007/4/24/how-i-got-over-my-ego.md" canonical: "https://osherove.com/blog/2007/4/24/how-i-got-over-my-ego.html" published: "2007-04-24T03:11:18" updated: "2007-04-24T03:11:18" tags: ["Off Topic"] author: "Roy Osherove" description: "A few days ago I got an email from a friend who was watching a talk that I did earlier this year. It had been recorded, and he was anxious to tell me about various notes he wrote during my talk. When he asked if I’d be…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How I got over my Ego By Roy Osherove April 24, 2007 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 24, 2007; technical details may be outdated. A few days ago I got an email from a friend who was watching a talk that I did earlier this year. It had been recorded, and he was anxious to tell me about various notes he wrote during my talk. When he asked if I’d be interested in reading his thoughts on the presentation, I replied “sure!”, but I didn’t know that he was referring to notes about my presentation style, not technical content. I started reading his notes, and the first thing he had to say was about a slide that I had, with way too much text on it. He then went on to explain why that was a bad idea and what an audience member might think. He was actually telling me all the things that I had already knew about presentations, and the Dos and DONTs about doing them. My first reaction was the wrong one. I started thinking, “who’s this guy to tell me how to do presentations?? I’ve been presenting for the past several years with some good scores, and I’m a good presenter, so why should I even listen to him?” I have a big ego. You see. Big enough that it sometimes clouds my judgment. I tool a breath and said to myself “Roy, you are starting to believe your own hype. Get over yourself and read why this guy is telling you. Put ego aside, and LEARN something.” It was quite hard, I admit. But reading through his email I realized that all his pots were dead on. I was definitely doing some DONTs in my talk, and even though the talk went along fine, there were points that I could definitely learn from for the next talk. My lesson for today: Get over yourself. Everyday you can learn something from people, even if you think you already know it. Always say “yes” when someone asks if they can give you some pointers, and shut the hell up until the said everything. Say “Thanks” and then process it all on your own, in the comfort of your own ego. Give it time, and it will sink in – you are not as amazing as you think, but you can get better by listening. Here are some pointers to presentation tips: - [http://www.venkatarangan.com/blog/PermaLink.aspx?guid=dab57735-2976-40d7-a5d0-2e641ddea515](http://www.venkatarangan.com/blog/PermaLink.aspx?guid=dab57735-2976-40d7-a5d0-2e641ddea515) - [http://www.hanselman.com/blog/content/radiostories/2003/01/22/scottHanselmansTipsForASuccessfulMsftPresentation.html](http://www.hanselman.com/blog/content/radiostories/2003/01/22/scottHanselmansTipsForASuccessfulMsftPresentation.html) - [http://particletree.com/notebook/powerpoint-and-presentation-tips/](http://particletree.com/notebook/powerpoint-and-presentation-tips/) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 3, 2007 ### [Pretty amazing demo of 3D sound on your headphones](https://osherove.com/blog/2007/5/3/pretty-amazing-demo-of-3d-sound-on-your-headphones.html) - Apr 27, 2007 ### [How I stopped kicking myself and started using Google Apps For Domains](https://osherove.com/blog/2007/4/27/how-i-stopped-kicking-myself-and-started-using-google-apps-f.html) - Mar 2, 2007 ### [Building a home media center - Here's my parts list](https://osherove.com/blog/2007/3/2/building-a-home-media-center-heres-my-parts-list.html) - Feb 25, 2007 ### [Why the Wii is selling like hotcakes](https://osherove.com/blog/2007/2/25/why-the-wii-is-selling-like-hotcakes.html) --- title: "I screwed up with a client - was it worth posting about?" url: "https://osherove.com/blog/2007/3/30/i-screwed-up-with-a-client-was-it-worth-posting-about.md" canonical: "https://osherove.com/blog/2007/3/30/i-screwed-up-with-a-client-was-it-worth-posting-about.html" published: "2007-03-30T23:52:15" updated: "2007-03-30T23:52:15" tags: [] author: "Roy Osherove" description: "A while ago I posted quite a revealing and personal post titled : \" I screwed up with a client, here's what I've learned \". It talks about, well, how I screwed up with a client regarding scheduling, took on too much…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I screwed up with a client - was it worth posting about? By Roy Osherove March 30, 2007 **Historical article** · Originally published March 30, 2007; technical details may be outdated. A while ago I posted quite a revealing and personal post titled : "[I screwed up with a client, here's what I've learned](http://weblogs.asp.net/rosherove/archive/2006/12/06/i-screwed-up-with-a-client-here-s-what-i-ve-learned.aspx)". It talks about, well, how I screwed up with a client regarding scheduling, took on too much work, and fond out too late in the process that I can't perform the job, with the customer ending up very unhappy. I got a question on that post which I'd like to answer: > "I read this post not long after it was first published and it caught my eye. Not many people will admit to their mistakes, especially in such a public and revealing manner. > > In a field where reputation is very important I am wondering what long-term effect this had. > > How did it effect your relationship with your clients? Do you still think it was a good idea?" **How did it effect my relationship with the client?** The short answer is - it didn't. I'm pretty sure they haven't read that post at all, or if they had, they said nothing. I'd like to think that me owning up to my mistakes publicly would look as a good thing to my customers, and not a bad one. Still, many of my clients don't actually read my blog (at least not the ones who do the negotiation and contracts - the ones who are truly upset if I pull something like that ever again). **Was it a good idea?** I think it was. I've gotten some great feedback directly from blog readers and existing customers about that post, saying they really appreciate the way I talked about it. We're all human and tend to make mistakes. Every consultant out there had made  mistakes with clients. But speaking from a purely marketing point of view, as a customer, I'd go for those who both have the skills, and talk about their mistakes - it means that they are aware of what they are doing, and I get more visibility into their thought process. If I never worked with a consultant before, this is something I would find highly interesting. I haven't lost any existing clients, or potential ones due to that post (maybe this post will change that situation :) ) but even if I did, I'm not sure I would regret writing it. If there's one thing a consultant needs to absolutely have its integrity. That also means owning up to mistakes. Blogging about them, is my personal way of owning up to them so that I try not to repeat them, ever. I ended up giving that customer a big discount on the course they finally did take from me, but we have not worked together since. Still, we ended on a good note, as they seemed interested in more future courses I am creating these days (FIT and Fitnesse for example) --- title: "Microsoft acquired TeamPlain web client for TFS - Get your free download today" url: "https://osherove.com/blog/2007/3/27/microsoft-acquired-teamplain-web-client-for-tfs-get-your-fre.md" canonical: "https://osherove.com/blog/2007/3/27/microsoft-acquired-teamplain-web-client-for-tfs-get-your-fre.html" published: "2007-03-27T11:49:30" updated: "2007-03-27T11:49:30" tags: ["Team System"] author: "Roy Osherove" description: "This is the news of the day and you might have seen it in other blogs & news posts. Brian's blog talks in detail with screenshots at http://blogs.msdn.com/bharry/archive/2007/03/26/microsoft-acquires-teamplain.aspx .…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft acquired TeamPlain web client for TFS - Get your free download today By Roy Osherove March 27, 2007 In [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published March 27, 2007; technical details may be outdated. This is the news of the day and you might have seen it in other blogs & news posts. Brian's blog talks in detail with screenshots at [http://blogs.msdn.com/bharry/archive/2007/03/26/microsoft-acquires-teamplain.aspx](http://blogs.msdn.com/bharry/archive/2007/03/26/microsoft-acquires-teamplain.aspx) . Effective today, TeamPlain is available, at no additional charge, to users who own a Team Foundation Server and can be downloaded from [here](http://www.devbiz.com/downloads.aspx) \[via [Narend](http://blogs.msdn.com/narend/archive/2007/03/27/microsoft-acquired-teamplain-web-client-for-tfs-get-your-free-download-today.aspx)\] ## More in Team System [All posts in Team System](https://osherove.com/blog/category/team-system) - Apr 29, 2007 ### [What Source Control tool do you use? And more on TFS Vs. Open Source tools](https://osherove.com/blog/2007/4/29/what-source-control-tool-do-you-use-and-more-on-tfs-vs-open.html) - Apr 29, 2007 ### [TFS or not? Being a perfectionist in a realistic world](https://osherove.com/blog/2007/4/29/tfs-or-not-being-a-perfectionist-in-a-realistic-world.html) - Jan 28, 2007 ### [Using TFS Integrator to manage complex project dependencies](https://osherove.com/blog/2007/1/28/using-tfs-integrator-to-manage-complex-project-dependencies.html) - Dec 20, 2006 ### [Team Data and the Database publishing wizard](https://osherove.com/blog/2006/12/20/team-data-and-the-database-publishing-wizard.html) --- title: "Truly Awesome Talk by Guy Kawasaki" url: "https://osherove.com/blog/2007/3/25/truly-awesome-talk-by-guy-kawasaki.md" canonical: "https://osherove.com/blog/2007/3/25/truly-awesome-talk-by-guy-kawasaki.html" published: "2007-03-25T19:13:01" updated: "2007-03-25T19:13:01" tags: [] author: "Roy Osherove" description: "Guy Kawasaki is an awesome speaker . I need to find a way to make him invest in me." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Truly Awesome Talk by Guy Kawasaki By Roy Osherove March 25, 2007 **Historical article** · Originally published March 25, 2007; technical details may be outdated. Guy Kawasaki [is an awesome speaker](http://blog.guykawasaki.com/2006/06/the_art_of_the_.html). I need to find a way to make him invest in me. --- title: "Ghent Geek Dinner - You are welcome!" url: "https://osherove.com/blog/2007/3/25/ghent-geek-dinner-you-are-welcome.md" canonical: "https://osherove.com/blog/2007/3/25/ghent-geek-dinner-you-are-welcome.html" published: "2007-03-25T08:26:51" updated: "2007-03-25T08:26:51" tags: [] author: "Roy Osherove" description: "Looks like there's a geek dinner in Ghent this evening! Klaas is coming over to my hotel (The Sofitel hotel, located smack dab in the centre of Ghent), and a few other geek friends might show up as well. From there we…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ghent Geek Dinner - You are welcome! By Roy Osherove March 25, 2007 **Historical article** · Originally published March 25, 2007; technical details may be outdated. Looks like there's a geek dinner in Ghent this evening! [Klaas](http://blog.ict-blue.be/ardonio/) is coming over to my hotel (The Sofitel hotel, located smack dab in the centre of Ghent), and a few other geek friends might show up as well. From there we are considering going to a near by spare ribs joint, or just take a stroll to the restaurant area and see what we like. You are more than welcome to join us, just let me know in advance - by email at RoyOsherove at gmail.com. We are meeting at 19:45 at the lobby of [Sofitel Hotel in Ghent](http://www.sofitel.com/sofitel/fichehotel/fr/sof/1673/fiche_hotel.shtml). --- title: "Leaving for Developer Days 2007 in Belgium - Geek Dinner Anyone?" url: "https://osherove.com/blog/2007/3/24/leaving-for-developer-days-2007-in-belgium-geek-dinner-anyon.md" canonical: "https://osherove.com/blog/2007/3/24/leaving-for-developer-days-2007-in-belgium-geek-dinner-anyon.html" published: "2007-03-24T08:19:34" updated: "2007-03-24T08:19:34" tags: ["Community News"] author: "Roy Osherove" description: "In less than 12 hours I'll be sitting on a plane heading for Belgium. I'll be speaking at the upcoming Developer & IT Pro Days 2007 7 conference in Ghent, starting on the 28-29. The subjects I'll be covering: Regular…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Leaving for Developer Days 2007 in Belgium - Geek Dinner Anyone? By Roy Osherove March 24, 2007 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published March 24, 2007; technical details may be outdated. In less than 12 hours I'll be sitting on a plane heading for Belgium. I'll be speaking at the upcoming [Developer & IT Pro Days 2007](http://www.microsoft.com/belux/devitprodays/)7 conference in Ghent, starting on the 28-29. The subjects I'll be covering: - [Regular Expressions, The hidden power language](http://www.microsoft.com/belux/devitprodays/agenda/sessions1.aspx) - [FIT Acceptance testing- beyond Unit testing and TDD](http://www.microsoft.com/belux/devitprodays/agenda/sessions2.aspx) - [Continuous Integration with & without Team System](http://www.microsoft.com/belux/devitprodays/agenda/sessions2.aspx) - [DataDude - Team System for DB Pros - stuff you wish you had yesterday](http://www.microsoft.com/belux/devitprodays/agenda/sessions1.aspx) I'm leaving so early because it was nearly impossible to get a flight out of Israel - the combination of the upcoming holidays and pending strikes in the airports made ticket prices soar and seats nearly impossible to find. I had to leave 2 days earlier and one day later than expected - 4 days more away from my new kid - Itamar. **Thanks to** [**David Boschmans**](http://blogs.msdn.com/davbosch) for helping to make this trip possible still - it almost got canceled, but he made it possible for me to come to Belgium. Anyways, I'm landing at the morning of Sunday the 25th in Brussels, and from there directly to Ghent. I'd be happy to join in on any geek dinner on the 25th if there is one, or we could arrange for one if you're interested and are located in Ghent. Ping me via RoyOsherove @ Gmail.com ! ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - May 20, 2007 ### [CodeBetter.Com to win best community award](https://osherove.com/blog/2007/5/20/codebettercom-to-win-best-community-award.html) - May 19, 2007 ### [Impressions from DevTeach - Wow!](https://osherove.com/blog/2007/5/19/impressions-from-devteach-wow.html) - Feb 3, 2007 ### [Feedback on the Israel Microsoft Developer Academy?](https://osherove.com/blog/2007/2/3/feedback-on-the-israel-microsoft-developer-academy.html) - Jan 29, 2007 ### [Catch me speaking at DevTeach](https://osherove.com/blog/2007/1/29/catch-me-speaking-at-devteach.html) --- title: "UDPixel - repairs Dead Pixel on TFT Screens" url: "https://osherove.com/blog/2007/3/17/udpixel-repairs-dead-pixel-on-tft-screens.md" canonical: "https://osherove.com/blog/2007/3/17/udpixel-repairs-dead-pixel-on-tft-screens.html" published: "2007-03-17T14:44:55" updated: "2007-03-17T14:44:55" tags: ["Cool Tools"] author: "Roy Osherove" description: "This program helps to locate and fix LCD screens dead pixels. You can fix the stuck pixels by calling them to do rapid changes. You need to run this program for a couple of hours. There is no warranty on the result, but…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # UDPixel - repairs Dead Pixel on TFT Screens By Roy Osherove March 17, 2007 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published March 17, 2007; technical details may be outdated. This program helps to locate and fix LCD screens dead pixels. You can fix the stuck pixels by calling them to do rapid changes. You need to run this program for a couple of hours. There is no warranty on the result, but you don't really have anything to lose trying it out. Good luck. [http://udpix.free.fr/](http://udpix.free.fr/) ![Thmbsup](https://osherove.com/img/wb/9f95909e_www.donationcoder.com_Forums_bb_Smileys_fun_Thmbsup.gif) \[via [DonationCoder\]](http://www.donationcoder.com/Forums/bb/index.php?topic=7796.msg55046#msg55046) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 3, 2007 ### [Train to be a Keyboard Master with Keyboard Jedi](https://osherove.com/blog/2007/6/3/train-to-be-a-keyboard-master-with-keyboard-jedi.html) - May 19, 2007 ### [Easier Winform UI Thread Safe Methods with DynamicProxy2 and Osherove.SimpleInterception](https://osherove.com/blog/2007/5/19/easier-winform-ui-thread-safe-methods-with-dynamicproxy2-and.html) - Mar 16, 2007 ### [Remote Pair Programming with collaborative text editors](https://osherove.com/blog/2007/3/16/remote-pair-programming-with-collaborative-text-editors.html) - Mar 16, 2007 ### [The 46 Best-ever Freeware Utilities - By DonationCoder.Com](https://osherove.com/blog/2007/3/16/the-46-best-ever-freeware-utilities-by-donationcodercom.html) --- title: "Remote Pair Programming with collaborative text editors" url: "https://osherove.com/blog/2007/3/16/remote-pair-programming-with-collaborative-text-editors.md" canonical: "https://osherove.com/blog/2007/3/16/remote-pair-programming-with-collaborative-text-editors.html" published: "2007-03-16T17:49:03" updated: "2007-03-16T17:49:03" tags: ["Agile", "Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "Pair Programming when working with remote teams is somewhat of a problem, until you start counting in the fact that Collaborative Text Editing between remote location is supported in some text editors as a primary…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Remote Pair Programming with collaborative text editors By Roy Osherove March 16, 2007 In [Agile](https://osherove.com/blog/category/agile), [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published March 16, 2007; technical details may be outdated. Pair Programming when working with remote teams is somewhat of a problem, until you start counting in the fact that Collaborative Text Editing between remote location is supported in some text editors as a primary feature. [Gobby](http://gobby.0x539.de/trac/) and [MoonEdit](http://moonedit.com/indexen.htm) are two that I know about, but when will we see something like this for Visual Studio .NET? I'm pretty sure the latest version of [SlickEdit](http://www.slickedit.com/content/view/73/60/) has something like this as well, right? Know any good add-ons or tools that will allow remote Pair Programming with .NET? ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Apr 27, 2007 ### [Poll: What Mock Frameworks do you use?](https://osherove.com/blog/2007/4/27/poll-what-mock-frameworks-do-you-use.html) - Apr 26, 2007 ### [Choosing a Mock Object Framework](https://osherove.com/blog/2007/4/26/choosing-a-mock-object-framework.html) - Mar 13, 2007 ### [Test Reviews Vs. Code Reviews - Some Helpful Tips](https://osherove.com/blog/2007/3/13/test-reviews-vs-code-reviews-some-helpful-tips.html) - Mar 9, 2007 ### [Adobe uses Agile Development Successfully to build Photoshop CS3 product](https://osherove.com/blog/2007/3/9/adobe-uses-agile-development-successfully-to-build-photoshop.html) --- title: "The 46 Best-ever Freeware Utilities - By DonationCoder.Com" url: "https://osherove.com/blog/2007/3/16/the-46-best-ever-freeware-utilities-by-donationcodercom.md" canonical: "https://osherove.com/blog/2007/3/16/the-46-best-ever-freeware-utilities-by-donationcodercom.html" published: "2007-03-16T17:34:06" updated: "2007-03-16T17:34:06" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "The guys over at DonationCoder.com are doing a great job of keeping the spirit of \"I'm a geek who loves to hoard and try every kind of software that ever existed, hopefully free\" alive. As one of those \"I'm a geek who…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The 46 Best-ever Freeware Utilities - By DonationCoder.Com By Roy Osherove March 16, 2007 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published March 16, 2007; technical details may be outdated. The guys over at [DonationCoder.com](http://www.donationcoder.com/) are doing a great job of keeping the spirit of "I'm a geek who loves to hoard and try every kind of software that ever existed, hopefully free" alive. As one of those "I'm a geek who loves to hoard and try every kind of software that ever existed, hopefully free" People (IAGWLTHATEKOSTEEHF-ish for short?), I find that not only the [free software that is freely downloadable from their site pretty cool](http://www.donationcoder.com/Software/index.html) in its own right, but also the discussion boards are lively and a good place to lurk and discover cool free and not free stuff. They recently released the list of "[The 46 Best-ever Freeware Utilities](http://www.techsupportalert.com/best_46_free_utilities.htm#index)". It's pretty interesting, if not only for the fact that almost half of it is dominated by security, malware and spam protection tools. They sure know their crowd! I suggest you register [for the forum RSS feed](http://www.donationcoder.com/Forums/bb/index.php?type=rss;action=.xml). It's always alive and it's nice to peek every once in a while discover something you didn't know about. Like [FreeCommander](http://www.freecommander.com/), or [Gobby](http://gobby.0x539.de/trac/) and [MoonEdit](http://moonedit.com/indexen.htm). ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Mar 17, 2007 ### [UDPixel - repairs Dead Pixel on TFT Screens](https://osherove.com/blog/2007/3/17/udpixel-repairs-dead-pixel-on-tft-screens.html) - Mar 16, 2007 ### [Remote Pair Programming with collaborative text editors](https://osherove.com/blog/2007/3/16/remote-pair-programming-with-collaborative-text-editors.html) - Feb 5, 2007 ### [NDepend 2.0 - Beast, not Beauty](https://osherove.com/blog/2007/2/5/ndepend-20-beast-not-beauty.html) - Dec 21, 2006 ### [Total Commander - The Ultimate File Manager?](https://osherove.com/blog/2006/12/21/total-commander-the-ultimate-file-manager.html) --- title: "Writing A book Is Like Developing Software" url: "https://osherove.com/blog/2007/3/13/writing-a-book-is-like-developing-software.md" canonical: "https://osherove.com/blog/2007/3/13/writing-a-book-is-like-developing-software.html" published: "2007-03-13T01:12:57" updated: "2007-03-13T01:12:57" tags: ["Art Of Unit Testing", "General Software Devel..."] author: "Roy Osherove" description: "I'm in the process of writing my upcoming book: The Art Of Unit Testing , and it's proving to be a big challenge. Bigger than I imagined. ( Here's the first sample chapter - PDF ) Book == Software Development. The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Writing A book Is Like Developing Software By Roy Osherove March 13, 2007 In [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published March 13, 2007; technical details may be outdated. I'm in the process of writing my upcoming book: [The Art Of Unit Testing](http://the.artofunittesting.com/), and it's proving to be a big challenge. Bigger than I imagined. ([Here's the first sample chapter - PDF](http://www.manning.com/osherove/free.html)) Book == Software Development. The Comparison might seem a bit weird at first, but my experience so far seems to be compatible with this. Some examples: - Creating the Table Of Contents == Big Design Up Front When submitting your book proposal to your publisher(I work with Manning on this book), they'll ask you to provide a TOC for the book including chapter length, sub sections in each chapter etc. Whatever you write there is at best a guess. As I wrote the first 2 chapters of the book I realized that the TOC I had was all wrong, and that I was doing it all wrong. So I rewrote the TOC because I suddenly realized that half the subject I wanted to talk about in the last half of the book, actually belong in the first few chapters, and that 3 chapters from the rest can be combined, and that some of the stuff I wrote is simply not going to be relevant, as a specific chapter, that is. Kinda like design, where you realize you designed something wrong the minute you try to implement the design. - You learn as you go Like software, you realize what you actually want to say in the book as you are writing it, so the design needs to keep changing, and your thoughts about what's good and what's not keep changing as well. - It's always more complicated than you initially thought Nothing to add here. Have you ever written a book? Feel the same way? ## More in Art Of Unit Testing [All posts in Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) - Apr 27, 2007 ### [Poll: What Mock Frameworks do you use?](https://osherove.com/blog/2007/4/27/poll-what-mock-frameworks-do-you-use.html) - Apr 26, 2007 ### [Choosing a Mock Object Framework](https://osherove.com/blog/2007/4/26/choosing-a-mock-object-framework.html) - Mar 13, 2007 ### [Test Reviews Vs. Code Reviews - Some Helpful Tips](https://osherove.com/blog/2007/3/13/test-reviews-vs-code-reviews-some-helpful-tips.html) - Mar 2, 2007 ### [Testable Designs - Round 2: Tooling, Design Smells and Bad Analogies](https://osherove.com/blog/2007/3/2/testable-designs-round-2-tooling-design-smells-and-bad-analo.html) --- title: "Test Reviews Vs. Code Reviews - Some Helpful Tips" url: "https://osherove.com/blog/2007/3/13/test-reviews-vs-code-reviews-some-helpful-tips.md" canonical: "https://osherove.com/blog/2007/3/13/test-reviews-vs-code-reviews-some-helpful-tips.html" published: "2007-03-13T00:48:12" updated: "2007-03-13T00:48:12" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "One of the things that I like to show people during my TDD courses, is how much easier it is to do a test review rather than a simple code review. A code review is like literally debugging the code with your eyes,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Reviews Vs. Code Reviews - Some Helpful Tips By Roy Osherove March 13, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 13, 2007; technical details may be outdated. One of the things that I like to show people during my TDD courses, is how much easier it is to do a _test review_ rather than a simple _code review._ A _code review_ is like literally debugging the code with your eyes, trying to understand not only how it works, but what it's trying to do. The latter is much harder to understand from reading code, because understanding _why_ things are the way they are requires looking at the _meta_ level of the code. Stuff like "oh, so you're looping here and your throwing there because it's illegal for _any_ of these variables to be null" are _functional demands_ which the code executes, but you need to figure them out from reading the code and talking to the person who wrote it. That's fine, but it can be very time consuming, and most developers don't write code that automatically lends itself to understanding its functional requirements or easy to understand at all. most code written on the face of this planet is mostly unreadable, if my travels between different code bases is of any value whatsoever. But when you have _unit tests_ you can use those unit tests not only as a way to make sure stuff isn't breaking, but also as a way to understand and review the functional details of what the developer has written. Unit tests can be used both as good API documentation (assuming they are written in a readable manner, using naming standards), but are also great, as I've found, for _code reviews_. I call them _test reviews_ because the process of the review starts with the reviewer looking at the tests that developer has written instead of starting at the actual code level. Some of the benefits in a _test review:_ - _Tests_ reveal the _intention_ behind the code much better than the code itself. That means it's easier to discover _logical_ bugs in the code by reading a test. "Why are you testing that it throws an exception when it should always simply log errors?" - Tests are declarative by default - the developer declares what the code is supposed to be accomplishing, but the test itself is usually very easy to read (or at least should be). - Tests are faster and shorter to read and understand. I can review a test in 10th the amount of time it takes me to review code. I'll usually flip between the test and the code only if I need to, but I can usually find logical errors in a test case in less than a minute or so, without even looking at the code. that saves plenty of time for everyone. - Reviewing tests is also a good idea to keep the quality of the test up - making sure it's [readable, maintainable etc..](http://weblogs.asp.net/rosherove/archive/tags/Testing+Guidelines/default.aspx?p=3) Here's stuff you should be doing as part of a test review: - If there are any new tests whatsoever relating to the new code base, you need to read them before even looking at the code. - Make sure all the tests pass. - Verify test [naming conventions](http://weblogs.asp.net/rosherove/archive/2005/04/03/TestNamingStandards.aspx) and [readability and maintainability](http://weblogs.asp.net/rosherove/archive/tags/Testing+Guidelines/default.aspx?p=3) (promote code-reuse in tests and remove code duplication in the test class as much as possible without hurting readability) - if the tests for a piece of code all seem ok, you can move on to that piece of code - When review the piece of code, you can also verify the test coverage if you feel there isn't enough using this technique, or by using [NCover](http://ncover.org/) or Visual Studio Test Coverage tools. - Review the code as you did always (most people never review code, so at least settle for review the tests..) Are there any steps that you like to do when reviewing code at _your_ company? ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Apr 26, 2007 ### [Choosing a Mock Object Framework](https://osherove.com/blog/2007/4/26/choosing-a-mock-object-framework.html) - Mar 16, 2007 ### [Remote Pair Programming with collaborative text editors](https://osherove.com/blog/2007/3/16/remote-pair-programming-with-collaborative-text-editors.html) - Mar 9, 2007 ### [Adobe uses Agile Development Successfully to build Photoshop CS3 product](https://osherove.com/blog/2007/3/9/adobe-uses-agile-development-successfully-to-build-photoshop.html) - Mar 7, 2007 ### [JUnit 4 feels like NUnit with attribute-like syntax](https://osherove.com/blog/2007/3/7/junit-4-feels-like-nunit-with-attribute-like-syntax.html) --- title: "Adobe uses Agile Development Successfully to build Photoshop CS3 product" url: "https://osherove.com/blog/2007/3/9/adobe-uses-agile-development-successfully-to-build-photoshop.md" canonical: "https://osherove.com/blog/2007/3/9/adobe-uses-agile-development-successfully-to-build-photoshop.html" published: "2007-03-09T09:04:51" updated: "2007-03-09T09:04:51" tags: ["Agile", "Agile Related"] author: "Roy Osherove" description: "What if you read a news story that the new Adobe CS3 product was developed using Agile Development Techniques? Here it is . A notable quote (my highlighting for interesting points): \" Did it change the way you put out…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Adobe uses Agile Development Successfully to build Photoshop CS3 product By Roy Osherove March 9, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published March 9, 2007; technical details may be outdated. What if you read a news story that the new Adobe CS3 product was developed using Agile Development Techniques? [Here it is](http://www.regdeveloper.co.uk/2007/03/08/adobe_cs3_development/). A notable quote (my highlighting for interesting points): > "**Did it change the way you put out betas?** > > **An automatic process builds the program every night** and runs a set of tests before posting the build on our internal servers for QE to test. We could take **almost any of those daily builds and use them for demos**. > > **The public beta was basically just "whatever build is ready on date X".** There were only a couple of "we really gotta fix _this_ before we send out the public beta" bugs. With past versions, we couldn't have done a public beta at all that far ahead of release - there would have been far too many bugs. > > We weren't swamped with a pile of bugs from the hundreds of thousands of people who downloaded - it really was in the good shape we thought it was. With several hundred thousand downloads, there were fewer than 25 new bugs found. > > **Overall, did you end up with fewer bugs, more bugs, the same number of bugs fixed faster? Did you have to sacrifice features to work this way?** > > **Some people feared this would mean fewer features. That hasn't been the case**. We certainly had **far fewer bugs overall** and fewer during mid-cycle (about a third less in total last time I checked). **Better quality, plenty of features, fewer nights and weekends**: what's not to like?" \[Via [Jeffery](http://codebetter.com/blogs/jeffrey.palermo/archive/2007/03/09/Adobe_2700_s-Photoshop-CS3-developed-using-Agile-_2D00_-level-200.aspx)\] ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 16, 2007 ### [Remote Pair Programming with collaborative text editors](https://osherove.com/blog/2007/3/16/remote-pair-programming-with-collaborative-text-editors.html) - Mar 13, 2007 ### [Test Reviews Vs. Code Reviews - Some Helpful Tips](https://osherove.com/blog/2007/3/13/test-reviews-vs-code-reviews-some-helpful-tips.html) - Mar 7, 2007 ### [JUnit 4 feels like NUnit with attribute-like syntax](https://osherove.com/blog/2007/3/7/junit-4-feels-like-nunit-with-attribute-like-syntax.html) - Mar 2, 2007 ### [Testable Designs - Round 2: Tooling, Design Smells and Bad Analogies](https://osherove.com/blog/2007/3/2/testable-designs-round-2-tooling-design-smells-and-bad-analo.html) --- title: "JUnit 4 feels like NUnit with attribute-like syntax" url: "https://osherove.com/blog/2007/3/7/junit-4-feels-like-nunit-with-attribute-like-syntax.md" canonical: "https://osherove.com/blog/2007/3/7/junit-4-feels-like-nunit-with-attribute-like-syntax.html" published: "2007-03-07T16:07:11" updated: "2007-03-07T16:07:11" tags: ["Agile", "Unit Testing"] author: "Roy Osherove" description: "I'm doing Test-Driven-Development with Java course, after having not done one for a long time, and I was browsing through my samples and online to see if anything interesting in JUnit land has happened since last time.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # JUnit 4 feels like NUnit with attribute-like syntax By Roy Osherove March 7, 2007 In [Agile](https://osherove.com/blog/category/agile), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 7, 2007; technical details may be outdated. I'm doing Test-Driven-Development with Java course, after having not done one for a long time, and I was browsing through my samples and online to see if anything interesting in JUnit land has happened since last time. And there sure is! JUnit 4 is out and allows using Java Annotations (Java's version of .NET Attributes if you will) to write tests. No need for inheritance anymore, or to begin test names with 'test". simply use annotations: Here is an example takes from [this blog](http://java-x.blogspot.com/2007/01/unit-testing-with-junit-40.html), which has a more elaborate list of changes with examples: **Test Annotations:** ``` @Test public void emptyTest() { stack = new Stack(); assertTrue(stack.isEmpty()); } ``` (I'm using the cool [Code formatter live writer plugin](http://dunnhq.com/codeformatterforwindowslivewriter) ) Also, you get matching annotations for **setup and teardown**: ``` public class OutputTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testSomethingWithFile() { ... } } ``` For some weird reason, it's possible to put this annotation on multiple methods in the same test fixture, and they will all run in an unknown order. Not sure why that is useful, or at all contributes to readability.. **You also get to test for expected exceptions more easily:** ``` @Test(expected=IndexOutOfBoundsException.class) public void testIndexOutOfBoundsException() { ArrayList emptyList = new ArrayList(); Object o = emptyList.get(0); } ``` **Parameterized Tests** One feature I was pretty surprised to see, but rather glad that I saw it, the fact that, a bit like in [MbUnit](http://www.mbunit.com/), JUnit 4 has support for tests that can take parameters, and thus being able to run the test multiple times with different inputs. Differently than JUnit though, you need to create a class for each Parameterized test you'd like to create, and put annotations on the class, and on the source of the parameters (data source, if you will). this allows a more data-driven-testing kind of way, which is a bit like what you can find in VSTS Unit Testing support. ``` @RunWith(value = Parameterized.class) public class StackTest { Stack stack; private int number; public StackTest(int number) { this.number = number; } @Parameters public static Collection data() { Object[][] data = new Object[][] { { 1 }, { 2 }, { 3 }, { 4 } }; return Arrays.asList(data); } ... } ``` **Test Suites** Creating Test Suites with JUnit 4 is rather a weird task. You create an empty class with the sole takes of carrying annotations that point to the class list to run: ``` @RunWith(Suite.class) @Suite.SuiteClasses({StackTest.class}) public class AllTests { } ``` ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 13, 2007 ### [Test Reviews Vs. Code Reviews - Some Helpful Tips](https://osherove.com/blog/2007/3/13/test-reviews-vs-code-reviews-some-helpful-tips.html) - Mar 9, 2007 ### [Adobe uses Agile Development Successfully to build Photoshop CS3 product](https://osherove.com/blog/2007/3/9/adobe-uses-agile-development-successfully-to-build-photoshop.html) - Mar 2, 2007 ### [Testable Designs - Round 2: Tooling, Design Smells and Bad Analogies](https://osherove.com/blog/2007/3/2/testable-designs-round-2-tooling-design-smells-and-bad-analo.html) - Feb 25, 2007 ### [Why you should think about TOOP- Testable Object Oriented Programming](https://osherove.com/blog/2007/2/25/why-you-should-think-about-toop-testable-object-oriented-pro.html) --- title: "Code Generation using LINQ Expression Trees and .NET 3.0" url: "https://osherove.com/blog/2007/3/4/code-generation-using-linq-expression-trees-and-net-30.md" canonical: "https://osherove.com/blog/2007/3/4/code-generation-using-linq-expression-trees-and-net-30.html" published: "2007-03-04T06:41:41" updated: "2007-03-04T06:41:41" tags: [".NET", ".Net 2.0", "C#"] author: "Roy Osherove" description: "via this thread on theServerSide I found this very interesting blog which talks a lot about C# 3.0 news features, including deep hacks and tricks using LINQ and Expression trees in .NET 3.0. For example, he shows how to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Code Generation using LINQ Expression Trees and .NET 3.0 By Roy Osherove March 4, 2007 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [C#](https://osherove.com/blog/category/c) **Historical article** · Originally published March 4, 2007; technical details may be outdated. via [this thread](http://www.theserverside.net/news/thread.tss?thread_id=44332) on theServerSide I found this [very interesting blog](http://themechanicalbride.blogspot.com/index.html) which talks a lot about C# 3.0 news features, including deep hacks and tricks using LINQ and Expression trees in .NET 3.0. For example, he shows how [to do code generation](http://themechanicalbride.blogspot.com/2007/02/do-you-know-linq-fu.html) using the Expression tree API instead of using IL, CodeDOM or anything else. Very interesting! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 5, 2007 ### [Running Matlab, Python and Tcl scripts from .NET](https://osherove.com/blog/2007/6/5/running-matlab-python-and-tcl-scripts-from-net.html) - May 19, 2007 ### [Easier Winform UI Thread Safe Methods with DynamicProxy2 and Osherove.SimpleInterception](https://osherove.com/blog/2007/5/19/easier-winform-ui-thread-safe-methods-with-dynamicproxy2-and.html) - Feb 25, 2007 ### [FxCop is heading in the wrong direction - No testability whatsoever](https://osherove.com/blog/2007/2/25/fxcop-is-heading-in-the-wrong-direction-no-testability-whats.html) - Feb 24, 2007 ### [Introducing FxCopUnit - A framework for integrated FxCop rule testing](https://osherove.com/blog/2007/2/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule.html) --- title: "Testable Designs - Round 2: Tooling, Design Smells and Bad Analogies" url: "https://osherove.com/blog/2007/3/2/testable-designs-round-2-tooling-design-smells-and-bad-analo.md" canonical: "https://osherove.com/blog/2007/3/2/testable-designs-round-2-tooling-design-smells-and-bad-analo.html" published: "2007-03-02T16:35:38" updated: "2007-03-02T16:35:38" tags: ["Agile", "Agile Related", "Architecture", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "Eli Lopian , the guy who runs TypeMock.NET (An amazing Mocking product, BTW - a bit too powerful for it's own good, perhaps) and myself share what seem to be conflicting views on how \"Testable\" object Oriented…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Testable Designs - Round 2: Tooling, Design Smells and Bad Analogies By Roy Osherove March 2, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Architecture](https://osherove.com/blog/category/architecture), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published March 2, 2007; technical details may be outdated. [Eli Lopian](http://www.elilopian.com/), the guy who runs [TypeMock.NET](http://www.typemock.com/)_(An amazing Mocking product, BTW - a bit too powerful for it's own good, perhaps)_ and myself share what **seem** to be conflicting views on how "Testable" object Oriented applications should be out of the box  that is, should or shouldn't you be considering Testability when designing your software, and how much would you let Testability considerations change your design (add interfaces, exposes some methods, allow polymorphism etc..). - I suggested [creating "TOOD" instead of simple "OOP"](http://weblogs.asp.net/rosherove/archive/2007/02/25/why-you-should-think-about-ootp-object-oriented-testable-programming.aspx) (Testable Object Oriented Design) - Eli Responded with "[You must be out of your mind](http://www.elilopian.com/2007/02/26/object-oriented-testable-designed-you-must-be-out-of-your-mind/#comments)" (you might also like the comments on his post) **Eli: Testable designs are harder to read and maintain** From Eli: > "We all have have seen testable code. The code is **hard to maintain** and **understand**. A Testable code, will have many interfaces that have no real design value, that will just **confuse developers**. Have you ever tried to **browse a code with loads of interfaces**, it take ages because you have to keep finding the concrete implementation, and the place where the instance was created" > > ... > > "Using [TypeMock.NET](http://www.typemock.com/) your code can be encapsulated (OOD) and Testable at the same time" **Eli says: "Tooling can save you from testable designs"** You know, it's quite ironic. On one hand, Eli's claim is that with TypeMock, you get the automated tooling support you need to check a system without changing it's design. Which means you no longer have to "design for testability", just design, and later just use TypeMock to check it. Eli is not wrong - TypeMock is a powerful product that would allow such scenarios. Scary, isn't it? :) **I Say: Tooling can save you from un-testable designs too!** But then Eli claims that one of the side effects of Testable designs is many interfaces which make the code harder to browse and thus maintain.  Ironically, this same problem can also be solved by tooling today, using Addins for Visual Studio like Resharper, that allow navigating and finding an interface or a method's **real implementations** with a single keyboard shortcut or mouse click. (I admit that without Resharper, or tools like Eclipse or IntelliJ for Java, browsing a highly decoupled and Object Oriented code base can be a daunting task at first). **Eli: When interfaces and objects share the exact same contract - it's a design smell** So assuming that the "browsing code is harder" problem goes away with the correct tooling inside your favorite editor, is there still  a problem with testable designs ? Eli thinks there is because they create bad interfaces: > "Think about this code smell: When you find that an interface and implementation have **exactly the same public methods**, it is a sign that the interface is not exposing a **trait** of the object but the **Object** itself. This is what happens when your code is Designed for Testability, you do have a safety net, but the design is flawed." To begin with, when you think about testability, adding an interface-per-object is one way to go, but not the only one. Adding interfaces which represent "traits" of objects is a design decision. As long as an object can be replaced by sending in something that mimics the same public contract as that object, you're good. In fact, it's not a bad thing for an object to expose multiple interfaces, each only doing small things: an object can be both ISerializable and IList, it can be both IPerson and IConfigurationObject or it could just as well be IDataObject and IRule (you may find that you know systems with such interfaces....) What I'm trying to say is that having an interface per object type is a design decision, not a testable design decision. You can create testable designs that use interfaces designed well, with objects that implement many interfaces, or you could have a testable design that has one interface that all objects implement and nothing else. Yes, you can have a testable system with a less than perfect design, and you can have a well designed system with no testability. The beauty is combining the best of both worlds. Eli's fear is that testability will come instead of good design decisions -I say that it does not have to. Consider an object that takes an IDataObject interface into one of it's methods: bool IsValidForSave(IDataObject data);  in the **production** code, what gets sent to that object could be some class that looks like this: public class MyPersonData:IDataObject, IConfigurationHolder, ISerializable ... Is MyPersonData exactly the same is IDataObject? hardly. Is the IsValidForSave method testable? much more that it would have been if it took exactly a MyPersonData object.  In fact, in many systems, MypersonData would look like this: public abstract class DataObjectBase:IDataObject, IConfigurationHolder, ISerializable public class MyPersonData:DataObjectBase ... Still, this does not change a thing for testability. It's just a design issue. Testability and OO design can go hand in hand, it's just a matter of figuring out where they can go in parallel, and where only one of them can make a decision. I think Eli has come across one of the issues that easily belongs into the first camp. **Eli's Analogy of "Testability" when referring to a TV Set** In the comments to Eli's post, In response to a question, Eli tries to make an analogy to a TV set(bold by me): > "Making your code testable, is like creating a **modular TV Set**, with an opening at the back of the set that you can easily open (without screws) put your hand through, dislodge the Remote Receiver (which you can switch with a mock Remote and test the TV), same goes with the volume controls, speakers etc. etc. > This is great and now you can sell the Modular TV Set to the world. > The thing is that it is **more _expensive_ to make** (in code this means that the code is more complex) and there is **no real business value**. Who wants to **pay more for a modular TV set**? > Of course you can say that the TV set have been tested and this has value. But then with **TypeMock you can do the same and lower the price of the TV set because you don’t have to make it modular**. " **A TV set is not modular?** 1. **Not modular:** TV Sets (like PC internals) **are** modular. They are so modular that many parts in the TV belong to different manufacturers. Yes, there is a limit to the modularity, but the very fact that you can **repair** a TV by changing one of it's parts for a new one without replacing the whole TV makes a big case exactly for modularity. 2. **More expensive to make:** I'm not so sure. Because it is modular, the TV is made of pluggable parts, some are very cheap to buy and put in, thus making the process much less costly (do you know of a TV maker who makes **all** the parts of their TV in house? much like PCs - that's not a cost effective option anymore - that's why "made in Taiwan" parts can be found in practically every piece of electronics on the earth). 3. **No real business value:** Hardly true. It's relatively cheap to repair, build and make newer models based on the same structure with better parts (i.e high-end models) with very little investment in more design if at all. 4. Pay more for a modular TV set: Again - consumers today pay much more for electronic items which are specifically design to work only with their own parts(luxury items) - That's like buying a high end Sony TV in which replacing or repair costs 3 times as much as any other TV on the market simply because it's not "generic" 5. **With TypeMock you don't have to make it modular**: I'm not sure how this fits the analogy. perhaps Eli was referring to the way the TV has been tested for quality. Still, even if it ha cost less to test the TV somehow, the consumer would be getting a beast that has no replaceable parts - just one big black box that, in the event of a problem, takes longer and is costlier to fix, it would seem. **The issues I'd like to refer to in the next posts are:** - Perhaps I was talking about making your design a "Test-Enabler", rather than "Testable" - allowing you to test your own code that uses that Test-Enabler system (FxCop is a good example of the opposite of a test enabler) - If you are creating a framework: you want to avoid the framework from being a "Test-inhibitor", so that people using it can test the code that is based on your framework without problems - SDKs are hard to test even if you had TypeMock, because you would need to know exactly which internal implementation to override. You'll have to dig in undocumented territory to do this. FxCop is a good example: how would I test my FxCop rules using TypeMock? How readable would those tests be? - there are two sides to testability: - Internal testability: How easy is it to test your own software, - external testability: how easy is it for others writing code against your APIs to test their own code. - (Client vs. server testability) - Every server is also a "client" in a way of testability. even the simplest class is a client of the .NET Framework. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 9, 2007 ### [Adobe uses Agile Development Successfully to build Photoshop CS3 product](https://osherove.com/blog/2007/3/9/adobe-uses-agile-development-successfully-to-build-photoshop.html) - Mar 7, 2007 ### [JUnit 4 feels like NUnit with attribute-like syntax](https://osherove.com/blog/2007/3/7/junit-4-feels-like-nunit-with-attribute-like-syntax.html) - Feb 25, 2007 ### [Why you should think about TOOP- Testable Object Oriented Programming](https://osherove.com/blog/2007/2/25/why-you-should-think-about-toop-testable-object-oriented-pro.html) - Feb 25, 2007 ### [FxCop is heading in the wrong direction - No testability whatsoever](https://osherove.com/blog/2007/2/25/fxcop-is-heading-in-the-wrong-direction-no-testability-whats.html) --- title: "Building a home media center - Here's my parts list" url: "https://osherove.com/blog/2007/3/2/building-a-home-media-center-heres-my-parts-list.md" canonical: "https://osherove.com/blog/2007/3/2/building-a-home-media-center-heres-my-parts-list.html" published: "2007-03-02T02:34:18" updated: "2007-03-02T02:34:18" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm starting to put together the next version of my home Media Center. If you're living in the U.S the following list may sound a bit of a \"that's all\"-ish, but consider the following: Electrics in Israel cost mostly as…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Building a home media center - Here's my parts list By Roy Osherove March 2, 2007 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 2, 2007; technical details may be outdated. I'm starting to put together the next version of my home Media Center. If you're living in the U.S the following list may sound a bit of a "that's all"-ish, but consider the following: - Electrics in Israel cost mostly as at least double than they do in the US (very high import taxes) - Our living room only provides a 3.3 meter viewing distance from the TV 1. TV: [32" AOC](http://www.ivory.co.il/product.asp?productid=129&CatCode=96), HD Ready, 6.5 MS, 1:1200 Machine: Main points: - I'm building it from scratch with the following parts - The goal is to achieve a receiver like look and a very very quiet system that does not interfere while watching a movie in the living room (this will be sitting next to the TV) - Should run Vista with Media Center; Games- not that much. - I'm looking for feedback on this list 1. Casing: [ThermalTake VC4001SNS Mozart](http://www.thermaltake.com/product/Chassis/desktop/mozart/vc4001sns.asp) With Media Lab Silver (has a remote and a scrolling VFD panel so it looks like a receiver). 2. CPU: INTEL P-D LGA775 2.8GHZ 820 800MHZ FSB 2\*1Mb DUAL CORE BOX 3Y 3. Memory: 2 X DDR2 KINGSTON 512MB 667MHZ NON-ECC CL5 4. Motherboard: [ASUS P5B-E](http://www.neoseeker.com/Articles/Hardware/Reviews/asus_p5b-e/) P-4/P-D/Core 2 Duo P965 DUAL DDR2 GIGA LAN 3Y (because it supports a coaxial 8 channel audio out) 5. CPU Fan: [ARCTIC COOLING AC-FREEZER-7-PRO](http://www.futurelooks.com/399-Arctic-Cooling-Freezer-7-Pro-Vs--CoolerMaster-Hyper-TX-for-Socket-LGA775.html) FOR INTEL 775 6. Hard Drive: SEAGATE Barracuda 160GB SATA2 NCQ 7200RPM 8MB 5Y (Already have an existing 120GB Hard driven which I will  add) 7. Graphics Card: [GIGABYTE GV-NX73T256P](http://www.hardwarezone.com/articles/view.php?cid=0&id=1970)\-RH GF 7300GT PCI-E 256MB GDDR2 DVI+TV-OUT 3Y (So I can run Vista Easily) 8. Speaker system: [CREATIVE I-TRIGUE 3600SE BLACK](http://www.creative.com/products/product.asp?category=4&subcategory=27&product=10735) (can't find a good review for this anywhere - thoughts? will it fit a living room? strong enough?) Your thoughts are welcome. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 27, 2007 ### [How I stopped kicking myself and started using Google Apps For Domains](https://osherove.com/blog/2007/4/27/how-i-stopped-kicking-myself-and-started-using-google-apps-f.html) - Apr 24, 2007 ### [How I got over my Ego](https://osherove.com/blog/2007/4/24/how-i-got-over-my-ego.html) - Feb 25, 2007 ### [Why the Wii is selling like hotcakes](https://osherove.com/blog/2007/2/25/why-the-wii-is-selling-like-hotcakes.html) - Jan 6, 2007 ### [Five things you didn't know about me](https://osherove.com/blog/2007/1/6/five-things-you-didnt-know-about-me.html) --- title: "Why you should think about TOOP- Testable Object Oriented Programming" url: "https://osherove.com/blog/2007/2/25/why-you-should-think-about-toop-testable-object-oriented-pro.md" canonical: "https://osherove.com/blog/2007/2/25/why-you-should-think-about-toop-testable-object-oriented-pro.html" published: "2007-02-25T15:36:06" updated: "2007-02-25T15:36:06" tags: ["Agile", "Agile Related", "Architecture", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "Update: Mark has a point - Using \"TOOP\" and \"TOOD\" are catchier acronyms - I've changed them accordingly. I think it's time that Object Oriented Design\\Programming got a little face lift. We live in interesting times,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why you should think about TOOP- Testable Object Oriented Programming By Roy Osherove February 25, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Architecture](https://osherove.com/blog/category/architecture), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published February 25, 2007; technical details may be outdated. _Update: Mark_ [_has a point_](http://blogs.msdn.com/ploeh/archive/2007/02/28/ToodToop.aspx) _- Using "TOOP" and "TOOD" are catchier acronyms - I've changed them accordingly._ I think it's time that Object Oriented Design\\Programming got a little face lift. We live in interesting times, where quality and the quest for testability and continuous integration are starting to sprout all over the development world. It's in these times that one needs to think about one simple fact - in many ways, **pure** object oriented design does not go well hand in hand with the notion of **[testable design](http://weblogs.asp.net/rosherove/articles/Design4Tesatbility1.aspx)**. I wrote [about a classic example of this in this post](http://weblogs.asp.net/rosherove/archive/2007/02/25/fxcop-is-heading-in-the-wrong-direction-no-testability-whatsoever.aspx) - FxCop is removing Testability features in favor of object oriented pureness. here are some examples for this dissonance in which OOP\\OOD usually says "hide" while Testable design guidelines dictate "Expose": - **OOD**:  Do not expose any private members or methods that are not needed by the developer using your API . - **Testable**: Find a way to expose or replace private instances of objects using interfaces, injection patterns, public setters and more. - **OOD**: Seal classes to inheritance by default unless you explicitly mean for others to extend them - **Testable**: Don't seal by default (unless it's a security risk) so that others can reuse your code and override what they need in their tests. - **OOD**: only make methods virtual explicitly (in java methods are virtual by default which is an interesting strategy which I very much like) when you want others to override them. - **Testable**: when possible, make virtual the default so that inheritors can override them to break any dependencies found in their tests. - **OOD**: Use singletons to make sure only one instance exists. do not allow anyone to touch that private instance. - **Testable**: Allow others to replace Singleton instances to break any dependencies in their tests. - **OOD**: make types private or internal by default unless you want to expose them specifically. - **Testable**: Think about and expose types that you know would help the testability of your API - **OOD**: Don't add unnecessary APIs - **Testable**: Add special APIs like methods, interfaces and types especially for testability purposes. These **are** necessary. What if we added the word "Testability" into the OOD paradigm? "Testable Object Oriented Design: **TOOD**" "Testable Object Oriented Programming: **TOOP**" This paradigm would take into account the testability factor of each design, and will allow for specific design issues to be solved with testability as the winner. In many ways you can't have a truly testable design without the proper (and heavy) use of some of the object oriented principles (polymorphism is as ubiquitous in testable designs as [Falafel](http://en.wikipedia.org/wiki/Falafel) in Israel - everywhere you look there's another corner offering it). Combining the values of both paradigms will lead to a better and more solid future for software quality for all of us. But where do we start? ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Mar 7, 2007 ### [JUnit 4 feels like NUnit with attribute-like syntax](https://osherove.com/blog/2007/3/7/junit-4-feels-like-nunit-with-attribute-like-syntax.html) - Mar 2, 2007 ### [Testable Designs - Round 2: Tooling, Design Smells and Bad Analogies](https://osherove.com/blog/2007/3/2/testable-designs-round-2-tooling-design-smells-and-bad-analo.html) - Feb 25, 2007 ### [FxCop is heading in the wrong direction - No testability whatsoever](https://osherove.com/blog/2007/2/25/fxcop-is-heading-in-the-wrong-direction-no-testability-whats.html) - Feb 24, 2007 ### [Introducing FxCopUnit - A framework for integrated FxCop rule testing](https://osherove.com/blog/2007/2/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule.html) --- title: "Why the Wii is selling like hotcakes" url: "https://osherove.com/blog/2007/2/25/why-the-wii-is-selling-like-hotcakes.md" canonical: "https://osherove.com/blog/2007/2/25/why-the-wii-is-selling-like-hotcakes.html" published: "2007-02-25T15:01:56" updated: "2007-02-25T15:01:56" tags: ["Off Topic"] author: "Roy Osherove" description: "Scott posted about his Nintendo Wii experience . I believe that the following serves as a MUCH better ad... Video: pub Wii (obviously targeted at the male population)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why the Wii is selling like hotcakes By Roy Osherove February 25, 2007 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 25, 2007; technical details may be outdated. Scott posted about [his Nintendo Wii experience](http://www.hanselman.com/blog/GerwiiatricsOldPeoplePlayTheWii.aspx). I believe that the following serves as a MUCH better ad... [Video: pub Wii](http://soapbox.msn.com/video.aspx?vid=dfb1699e-4d5b-458a-ba2f-48411270ce4d "pub wii") (obviously targeted at the male population) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 24, 2007 ### [How I got over my Ego](https://osherove.com/blog/2007/4/24/how-i-got-over-my-ego.html) - Mar 2, 2007 ### [Building a home media center - Here's my parts list](https://osherove.com/blog/2007/3/2/building-a-home-media-center-heres-my-parts-list.html) - Jan 6, 2007 ### [Five things you didn't know about me](https://osherove.com/blog/2007/1/6/five-things-you-didnt-know-about-me.html) - Dec 25, 2006 ### [Good Experience: Cool Online Games](https://osherove.com/blog/2006/12/25/good-experience-cool-online-games.html) --- title: "FxCop is heading in the wrong direction - No testability whatsoever" url: "https://osherove.com/blog/2007/2/25/fxcop-is-heading-in-the-wrong-direction-no-testability-whats.md" canonical: "https://osherove.com/blog/2007/2/25/fxcop-is-heading-in-the-wrong-direction-no-testability-whats.html" published: "2007-02-25T13:38:16" updated: "2007-02-25T13:38:16" tags: [".NET", "Agile", "Agile Related", "Architecture", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "If you don't know what FxCop is, go look . You'll like it. In response to my release of FxCopUnit which allows an easier experience testing out FxCop custom rules, David Kean of the FxCop blog posted his thoughts on the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # FxCop is heading in the wrong direction - No testability whatsoever By Roy Osherove February 25, 2007 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Architecture](https://osherove.com/blog/category/architecture), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published February 25, 2007; technical details may be outdated. If you don't know what FxCop is, [go look](http://msdn2.microsoft.com/en-us/netframework/aa497255.aspx). You'll like it. In response to my release of [FxCopUnit](http://weblogs.asp.net/rosherove/archive/2007/02/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule-testing.aspx) which allows an easier experience testing out FxCop custom rules, David Kean of the [FxCop blog](http://blogs.msdn.com/fxcop/) posted [his thoughts on the matter](http://blogs.msdn.com/fxcop/archive/2007/02/25/framework-for-intergrated-fxcop-rule-testing.aspx). I highly respect the folks doing this work, this is a very powerful tool, but what David posted worries me very much. From his post: > "Unfortunately, his approach is **not going to work in the next version of FxCop/Visual Studio** for a couple of reasons. > > 1) We did some work in Orcas to **reduce the visibility of API's** that did not need to be public for actually writing custom rules (for example, everything in FxCopCommon.dll is now internal) and > > 2) We also **removed the Reflection 'bridge'**, that is, the ability to create CCI objects from their Reflection counterparts and vice versa." (my highlighting). **In the name of of all that is OO** It looks like in the name of all that is pure Object Oriented design, David and his team have decided to remove the little tiny shred of testability and automation that somehow managed to escape their capable design wielding, sealed classing, private membering, non virtualizing, OOP fearing hands. I'm a big fan of Design for Testability (here's [an article I published](http://weblogs.asp.net/rosherove/articles/Design4Tesatbility1.aspx) on the matter) and I feel that giving up some of the "pure" OOP principles for the sake of testability is a very good cause. Personally, if I need to make a choice between enabling a future developer to change running instances in my code but gaining a testable system with unit tests, and hiding everything OOP reasons (security reasons are different - they take precedence) - I'd choose testability every time. Hiding those testable parts which are still left will make it near impossible to thoroughly test your custom rules in any reliable and automated manner. In fact, it's hard enough to test your FxCop custom rules as it is. **Why aren't many people writing their own custom FxCop rules?** it's actually pretty hard to make them work in FxCop in the first place since there is so much misleading documentation on the subject and many hidden "gotchas" to be dealt with. I've spent at least a day trying to figure out why a custom rule I've made isn't loading into FxCop properly - turns out I misspelled a string somewhere in the constructor, and got no helpful warning whatsoever. **Why is no one testing their custom FxCop rules?** David wrote in his blog post: > "Apart from the things mentioned above, it's a great start and its got us thinking, how many users actually automate the testing of custom rules? Is this something you see as important? Would you like to see how we do this internally?" My bet is "no one is automating testing Fx rules". In fact, that question can be considered very naive -People simply **can't easily test fxcop rules;** the barriers are too high for 99% of developers to even start considering testing their rules any other way than debugging.  When [Sasha tried to test the custom rules he wrote for performance](http://blogs.microsoft.co.il/blogs/sasha/archive/2007/02/10/Run-FxCop-from-Code.aspx), he had to reflector the hell out of FxCopCmd.exe to understand what's going on, and it's still sort of "just works somehow". It took me massive amounts of digging to get to my "findings" about how one could test FxCop custom rules. Does that answer your question? A system that does not easily lends itself to testing is a system used to write poorly tested code which results in poor quality code. Kind of ironic when you consider that the whole reason FxCop exists is to help increase code quality. (Perhaps some FxCop custom rules for **software testability** could be created..) I had to reflector the FxCop SDK to find out that [it's possible to write real unit tests for your Custom FxCop rules](http://weblogs.asp.net/rosherove/archive/2007/02/24/writing-real-unit-tests-for-your-custom-fxcop-rules.aspx), and now I get to find out that we are going to lose this wonderful possibility as well. Why oh why? What on earth could be the reason to remove this wonderful ability? For the sake of the pure OOP principles? Here's a principle that just as important - **quality code**. Microsoft **does** want developers to be able to write quality code using the framework, right?  So why cut of the very thin branch that you have (obviously unknowingly) supplied to us? Why is using the FxCop API for testing considered such a horrible hack that you have to remove this ability? Microsoft would do better to expose even **more** API's to the FxCop developer. On that note, I would \*love\* to see how you guys test your rules. **Suggestions for a more testable FxCop API** - Remove the "Sealed" modifier from most of the classes - Make many methods virtual by default so that they could be overridden to allow testability and remove external dependencies. - Make some classes "partial" so that they could be extended. - Add interfaces and allow access to the factories that create objects to change the output of the factory (a-la dependency injection)  - Allow changing the ProjectDefaults' properties (they are all read only and read from an obscure ProjectDefaults.XML file which I can't find anywhere - and still one of the first rules of a testable design - allow changing configuration at runtime) - **do not** remove any existing public APIs that allow testing today. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 19, 2007 ### [Easier Winform UI Thread Safe Methods with DynamicProxy2 and Osherove.SimpleInterception](https://osherove.com/blog/2007/5/19/easier-winform-ui-thread-safe-methods-with-dynamicproxy2-and.html) - Mar 4, 2007 ### [Code Generation using LINQ Expression Trees and .NET 3.0](https://osherove.com/blog/2007/3/4/code-generation-using-linq-expression-trees-and-net-30.html) - Feb 24, 2007 ### [Introducing FxCopUnit - A framework for integrated FxCop rule testing](https://osherove.com/blog/2007/2/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule.html) - Feb 5, 2007 ### [NDepend 2.0 - Beast, not Beauty](https://osherove.com/blog/2007/2/5/ndepend-20-beast-not-beauty.html) --- title: "Introducing FxCopUnit - A framework for integrated FxCop rule testing" url: "https://osherove.com/blog/2007/2/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule.md" canonical: "https://osherove.com/blog/2007/2/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule.html" published: "2007-02-24T17:11:33" updated: "2007-02-24T17:11:33" tags: [".NET", "Agile", "Agile Related", "Art Of Unit Testing", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "This post is a continuation of my Quest to test FxCop rules. The previous one was about writing pure unit tests for FxCop rules . This one is about writing Integration tests with a new framework I’ve developed called…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing FxCopUnit - A framework for integrated FxCop rule testing By Roy Osherove February 24, 2007 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published February 24, 2007; technical details may be outdated. This post is a continuation of my Quest to test FxCop rules. [The previous one was about writing pure unit tests for FxCop rules](http://weblogs.asp.net/rosherove/archive/2007/02/24/writing-real-unit-tests-for-your-custom-fxcop-rules.aspx). This one is about writing Integration tests with a new framework I’ve developed called FxCopUnit. For the past few days I’ve been struggling with FxCop – I’ve been Reflectoring the hell out of it ([Reflector 5.0](http://www.aisto.com/roeder/dotnet/) is amazingly cool). The purpose of all this fussing around is to create some sort of usable framework that would allow an easier testing experience for creating custom FxCop rules. I’ve already described how you can write **real** unit tests for custom FxCop rules here, but the framework I’m discussing here is meant for writing **integration tests** for FxCop rules . The main differences between the two is that integration tests usually take longer to run, harder to manage, need configuration and can’t be performed until the full (or at least some parts are full) system is in place. Still, Integration testing has its advantages. For instance, the ability to realize that everything works together like clockwork. The analogy equivalent of Integration tests vs. unit tests for me (which I’m also using in [my upcoming book](http://the.artofunittesting.com/)) is that of a car’s engine. When you turn your key in the ignition, and the engine roars, you know all is well. Or maybe, you hear a slight noise from the engine. If you do, what’s the possibility that you’ll be able to recognize what the source of the problem is? That’s the classic integration test: all the parts work together as one single unit, and it’s just as hard to separate origins for problems – however- when they work, you know they work well together as a system. A unit test would test and run each of the engine parts on it’s own – easier to test, but you just won’t know the system really works until you get to that final system (integration) test. Enough rambling. I’ve used [Sasha Goldstein’s code sample](http://blogs.microsoft.co.il/blogs/sasha/archive/2007/02/10/Run-FxCop-from-Code.aspx) as a basis to create a more elaborate framework that will allow your custom rules to go through all the stages of running in FxCop, up to the XML report in the end. The main goals of the framework are: - Easily specify specific rule you’d like to run - Easily specific only specific method or type or member you’d like to test your rule against - Easily tell FxCop where everything is located using code - Easily run FxCop and get the Resulting report data - Write as little lines of code as possible to do this - Clean up the FxCop engine between tests - Easily zoom in on type or member for testing, without needing full assemblies and multiple rules checked. The full downloads for this framework are available here: - [Just the binaries](http://files.osherove.com/code/TeamAgile.FxCopUnit.Bin.zip) - [Source and Binaries](http://files.osherove.com/code/TeamAgile.FxCopUnit.zip) (including a new version of [XtUnit](http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx)) In the full source download you’ll also find samples on how to use the framework but you’ll get a nice little 5 minute guide to it in both of them). The FxCopUnit also uses an earlier framework I wrote called XtUnit which allows attaching custom attributes to tests which perform actions before or after the test. In this case I used it to create a custom attribute that initializes FxCop to the specified rules and types. Here’s how you could write a simple Integration test for FxCop with FxCopUnit: 1. Add the following references: - from C:\\Program Files\\Microsoft Visual Studio 8\\Team Tools\\Static Analysis Tools\\FxCop\\ -       FxCopCommon -       FxCopSDK -       Microsoft.Cci - TeamAgile.FxCopUnit - Add reference to **XtUnit.Framework.dll** 2\. Create a new test fixture class 3\. Inherit your class from **FxCopTestFixture** Add the attribute to the top of the class to specify the location of your custom rules: \[TestFixture\] **\[FxCopCustomRuleLocation("**TeamAgile.FxCopRuleTesting.SampleRules.dll**")\]** public class MytestsClass: **FxCopTestFixture** {...} 4\. Create a new test: \[Test\] **\[FxCopRuleToTest("Rule0001", "FxCopCustomRules.CustomRules",true)\]** public void RunRuleAgainstMethod() { } Note the FxCopRuleToTest attribute on the test. Specify the rule ID and Rule category as written in the Rule XML file manifest located inside your custom rules library (in the sample source it is RuleManifest.Xml – complied as Embedded resource). The third parameter setup up FxCop engine so that the current test library will also be the main target to test the rules against. Alternatively, you can specify the name of the target assembly to test against. You can also specify the specific type that your rule will run against (all other types in the assembly will be ignored by the rules engine) . Here’s a test that specifies a rule, and a specific method to test against. It then tells **FxCop** to analyze the targets and does some simple asserts against the resulting FxCop report. \[Test\] \[FxCopRuleToTest("Rule0001", "FxCopCustomRules.CustomRules",true)\] public void RunRuleAgainstMethod() { MethodInfo methodInfo = MethodBase.GetCurrentMethod() as MethodInfo; **FxRunner.EnableMethodToCheck(methodInfo);** **FxRunner.Analyze();** **FxReport.Assert.AtLeastOneAnalysisProblem();** Console.WriteLine(FxReport.Document.InnerXml); } The test uses two objects which are available once you inherit from **FxCopTestFixture**: **FxRunner:** Helper used to specify rules, types and other logic, as well as to start the analysis process by FxCop. **FxReport:** A report object that is generated only after calling FxRunner.Analyze(). It will be null before that. **Asserting against output:** Most of the asserts should be performed against the **FxReport** object, which already has a property named “Assert”. It is an AssertFxCop object which has some very simple asserts in it. It can be extended though- it’s a partial class. (so is the FxCopReport class) FxCopUnit is very much work in progress. I wanted this out there so people can start using it and perhaps send me some interesting assert methods I can add built in to the current framework. Your comments are appreciated. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Mar 4, 2007 ### [Code Generation using LINQ Expression Trees and .NET 3.0](https://osherove.com/blog/2007/3/4/code-generation-using-linq-expression-trees-and-net-30.html) - Feb 25, 2007 ### [FxCop is heading in the wrong direction - No testability whatsoever](https://osherove.com/blog/2007/2/25/fxcop-is-heading-in-the-wrong-direction-no-testability-whats.html) - Feb 5, 2007 ### [NDepend 2.0 - Beast, not Beauty](https://osherove.com/blog/2007/2/5/ndepend-20-beast-not-beauty.html) - Jan 29, 2007 ### [Keyboard shortcuts posters and introducing Enso Launcher](https://osherove.com/blog/2007/1/29/keyboard-shortcuts-posters-and-introducing-enso-launcher.html) --- title: "Writing real unit tests for your custom FxCop rules" url: "https://osherove.com/blog/2007/2/24/writing-real-unit-tests-for-your-custom-fxcop-rules.md" canonical: "https://osherove.com/blog/2007/2/24/writing-real-unit-tests-for-your-custom-fxcop-rules.html" published: "2007-02-24T16:39:56" updated: "2007-02-24T16:39:56" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Reflection", "Team Agile News", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "Update : You might also be interested in FxCopUnit for FxCop Integration testing. It’s possible to create elegant small tests which require little to no configuration whatsoever that test out your custom rule’s ability…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Writing real unit tests for your custom FxCop rules By Roy Osherove February 24, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Reflection](https://osherove.com/blog/category/reflection), [Team Agile News](https://osherove.com/blog/category/team-agile-news), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published February 24, 2007; technical details may be outdated. _**Update**: You might also be interested in_ [_FxCopUnit_](http://weblogs.asp.net/rosherove/archive/2007/02/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule-testing.aspx) _for FxCop Integration testing._ It’s possible to create elegant small tests which require little to no configuration whatsoever that test out your custom rule’s ability to verify problems. (I'll be discussing a framework for FxCop integration testing in a later post) Here’s a sample unit test: You'll need to add a reference to three libraries (on my machine they were located under C:\\Program Files\\Microsoft Visual Studio 8\\Team Tools\\Static Analysis Tools\\FxCop\\ ) - FxCopCommon.dll - FxCopSDK.dll - Microsoft.Cci.dll \[Test\] public void InvokeMyRuleAgainstTheCurrentMethod() { MethodInfo someMethodInfo = MethodBase.GetCurrentMethod() as MethodInfo; Microsoft.Cci.Method **methodData** = **Microsoft.Cci.Method.GetMethod(someMethodInfo);** MyRule ruleUnderTest = new MyRule(); ProblemCollection problems = **ruleUnderTest.Check(methodData);** Assert.Greater(0,problems.Count); } A custom rule can accept many kinds of inputs, but ultimately the most important ones are “**Member**” and “**TypeNode**”. Here’s the hiearchy for Member these (thanks to Resharper  - **Small tip**: put the caret on a type name and press Ctrl-Alt-H): ![](https://osherove.com/img/wb/1f822714_files.osherove.com_images_member.jpg) So the only question remains: how to you transform a simple reflection **MethodInfo** or **EventInfo** or **FieldInfo** or **Type** into the corresponding **Member** type in Microsoft.Cci? It’s pretty simple: For each "thing" you'd like to transform There’s a static method on the counter "thing" to get that transformation. In the test above to get a **Method** object, I used the static **Method.GetMethod(MethodInfo)** to get what I need. You’ll find the same thing for **Event**, **TypeNode** and many others. All you need is to create a new instance of your custom rule (without needing FxCop engine at all), and invoking it’s **Check** method with the data you have specified after transformation. The Asserts should take place against the ProblemCollection object that you need to get back. Voila! You have yourself a true unit test with FxCop custom rules (or as close as possible to one..). ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 25, 2007 ### [FxCop is heading in the wrong direction - No testability whatsoever](https://osherove.com/blog/2007/2/25/fxcop-is-heading-in-the-wrong-direction-no-testability-whats.html) - Feb 24, 2007 ### [Introducing FxCopUnit - A framework for integrated FxCop rule testing](https://osherove.com/blog/2007/2/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule.html) - Feb 11, 2007 ### [Naresh Jain - Great Agile Blog](https://osherove.com/blog/2007/2/11/naresh-jain-great-agile-blog.html) - Feb 3, 2007 ### [Nice Israeli Blog from the Agile\\Java World](https://osherove.com/blog/2007/2/3/nice-israeli-blog-from-the-agilejava-world.html) --- title: "Blogger Dinner This Wednesday" url: "https://osherove.com/blog/2007/2/11/blogger-dinner-this-wednesday.md" canonical: "https://osherove.com/blog/2007/2/11/blogger-dinner-this-wednesday.html" published: "2007-02-11T14:46:29" updated: "2007-02-11T14:46:29" tags: [] author: "Roy Osherove" description: "Oh, Israeli Blogger Dinner this Wednesday - I'm totally there! If you intend to arrive leave a comment on Omer's Post here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blogger Dinner This Wednesday By Roy Osherove February 11, 2007 **Historical article** · Originally published February 11, 2007; technical details may be outdated. Oh, [Israeli Blogger Dinner this Wednesday](http://blogs.microsoft.co.il/blogs/omer/archive/2007/02/11/7882.aspx) - I'm totally there! If you intend to arrive leave a comment on [Omer's Post here](http://blogs.microsoft.co.il/blogs/omer/archive/2007/02/11/7882.aspx). --- title: "Naresh Jain - Great Agile Blog" url: "https://osherove.com/blog/2007/2/11/naresh-jain-great-agile-blog.md" canonical: "https://osherove.com/blog/2007/2/11/naresh-jain-great-agile-blog.html" published: "2007-02-11T14:36:25" updated: "2007-02-11T14:36:25" tags: ["Agile"] author: "Roy Osherove" description: "I've found this great Agile Related blog by Naresh Jain. Naresh works for ThoughtWorks (These guys just keep getting better and better people!) and has lots of information and knowledge about Agile Development…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Naresh Jain - Great Agile Blog By Roy Osherove February 11, 2007 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published February 11, 2007; technical details may be outdated. I've found this great [Agile Related blog](http://jroller.com/page/njain) by Naresh Jain. Naresh works for ThoughtWorks (These guys just keep getting better and better people!) and has lots of information and knowledge about Agile Development Techniques and Using Tools like Fitnesse (An framework for integrated testing). Through his blog I've found out that [there was a very unique conference](http://jroller.com/page/njain?entry=simple_design_and_testing_conference1) called "Simple Design and Testing" Conference, which features folks like [Ron Jeffries](http://www.xprogramming.com/), [Brian Marick](http://www.testing.com/cgi-bin/blog) and other Agile Figures. [Here are the Notes in the conference wiki](http://wiki.sdtconf.com/index.php?title=Schedule). Some great topics! ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 24, 2007 ### [Introducing FxCopUnit - A framework for integrated FxCop rule testing](https://osherove.com/blog/2007/2/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule.html) - Feb 24, 2007 ### [Writing real unit tests for your custom FxCop rules](https://osherove.com/blog/2007/2/24/writing-real-unit-tests-for-your-custom-fxcop-rules.html) - Feb 3, 2007 ### [Nice Israeli Blog from the Agile\\Java World](https://osherove.com/blog/2007/2/3/nice-israeli-blog-from-the-agilejava-world.html) - Jan 31, 2007 ### [Slides for Agile Concepts and Continuous Integration](https://osherove.com/blog/2007/1/31/slides-for-agile-concepts-and-continuous-integration.html) --- title: "NDepend 2.0 - Beast, not Beauty" url: "https://osherove.com/blog/2007/2/5/ndepend-20-beast-not-beauty.md" canonical: "https://osherove.com/blog/2007/2/5/ndepend-20-beast-not-beauty.html" published: "2007-02-05T15:45:41" updated: "2007-02-05T15:45:41" tags: [".NET", ".Net 2.0", "Cool Tools"] author: "Roy Osherove" description: "NDepend 2.0 just came out , and it *looks* to be a really awesome tool for understanding your's architecture and status, especially dependencies between components, in a visual way. But from the demos on the site, it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NDepend 2.0 - Beast, not Beauty By Roy Osherove February 5, 2007 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published February 5, 2007; technical details may be outdated. [NDepend 2.0 just came out](http://www.ndepend.com/), and it \*looks\* to be a really awesome tool for understanding your's architecture and status, especially dependencies between components, in a visual way. But from the demos on the site, it really does feel like you'd need to read a whole book about using it before even starting to use it for the simplest of tasks. still, I'm pretty sure many of you will find lots of use for this, as you'll find lots of time to explore this beast of a program, which can save lots of headaches and time when it's time for that "rewrite" you were thinking of, or you want to analyze a large piece of legacy code... My title is just me trying to be clever - it's a beast, and what you may find inside may not be pretty, but it is reality.. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Feb 25, 2007 ### [FxCop is heading in the wrong direction - No testability whatsoever](https://osherove.com/blog/2007/2/25/fxcop-is-heading-in-the-wrong-direction-no-testability-whats.html) - Feb 24, 2007 ### [Introducing FxCopUnit - A framework for integrated FxCop rule testing](https://osherove.com/blog/2007/2/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule.html) - Jan 29, 2007 ### [Keyboard shortcuts posters and introducing Enso Launcher](https://osherove.com/blog/2007/1/29/keyboard-shortcuts-posters-and-introducing-enso-launcher.html) - Jan 29, 2007 ### [Prepare sourcesafe for the daylight time change in the U.S](https://osherove.com/blog/2007/1/29/prepare-sourcesafe-for-the-daylight-time-change-in-the-us.html) --- title: "Nice Israeli Blog from the Agile\\Java World" url: "https://osherove.com/blog/2007/2/3/nice-israeli-blog-from-the-agilejava-world.md" canonical: "https://osherove.com/blog/2007/2/3/nice-israeli-blog-from-the-agilejava-world.html" published: "2007-02-03T13:25:33" updated: "2007-02-03T13:25:33" tags: ["Agile"] author: "Roy Osherove" description: "Guy Nirpaz is VP R&D of GigaSpaces from Israel. He's a strong Agile proponent, and runs an interesting blog with an Agile slant, talking about Java Development, his open source projects, and how they are successfully…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice Israeli Blog from the Agile\\Java World By Roy Osherove February 3, 2007 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published February 3, 2007; technical details may be outdated. [Guy Nirpaz](http://jroller.com/page/gnirpaz) is VP R&D of [GigaSpaces](http://www.gigaspaces.com/) from Israel. He's a strong Agile proponent, and runs an interesting blog with an Agile slant, talking about Java Development, his open source projects, and how [they are successfully implementing the Scrum Agile Methodology in their organization](http://jroller.com/page/gnirpaz?entry=we_love_scrum_at_gigaspaces). Much like [Ayende](http://www.ayende.com/), he talks a lot about [containers](http://jroller.com/page/gnirpaz?entry=containers_spring_and_sba) and Inversion of Control, but from the Java Perspective. A nice blog to have in your RSS reader to get some points of view from the Java Side. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 24, 2007 ### [Writing real unit tests for your custom FxCop rules](https://osherove.com/blog/2007/2/24/writing-real-unit-tests-for-your-custom-fxcop-rules.html) - Feb 11, 2007 ### [Naresh Jain - Great Agile Blog](https://osherove.com/blog/2007/2/11/naresh-jain-great-agile-blog.html) - Jan 31, 2007 ### [Slides for Agile Concepts and Continuous Integration](https://osherove.com/blog/2007/1/31/slides-for-agile-concepts-and-continuous-integration.html) - Jan 29, 2007 ### [Catch me speaking at DevTeach](https://osherove.com/blog/2007/1/29/catch-me-speaking-at-devteach.html) --- title: "Feedback on the Israel Microsoft Developer Academy?" url: "https://osherove.com/blog/2007/2/3/feedback-on-the-israel-microsoft-developer-academy.md" canonical: "https://osherove.com/blog/2007/2/3/feedback-on-the-israel-microsoft-developer-academy.html" published: "2007-02-03T07:03:36" updated: "2007-02-03T07:03:36" tags: ["Community", "Community News"] author: "Roy Osherove" description: "There's quite a lot of feedback going on about last week's Microsoft Developer Academy in Israel both from the presenters and from the comments on their blog posts. Tapuz Forum Omer Shahar Gvirtz (the 14 year old…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Feedback on the Israel Microsoft Developer Academy? By Roy Osherove February 3, 2007 In [Community](https://osherove.com/blog/category/community), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published February 3, 2007; technical details may be outdated. There's quite a lot of feedback going on about last week's Microsoft Developer Academy in Israel both from the presenters and from the comments on their blog posts. - [Tapuz Forum](http://www.tapuz.co.il/tapuzforum/main/viewmsg.asp?forum=831&msgid=93285833) - [Omer](http://blogs.microsoft.co.il/blogs/omer/archive/2007/02/01/7463.aspx) - [Shahar Gvirtz](http://blogs.microsoft.co.il/blogs/shahar/archive/2007/01/31/_D405DB05E005E105_-_D405D205D905E205_-_DC05E105D905D505DE05D505_.aspx) (the 14 year old presenter at the show) - [Guy](http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/02/01/Windows-Workflow-Foundation-Advanced-Techniques-_2D00_-Slide-Decks-and-Demos-.aspx#comments) - [Yosi Taguri](http://blogs.microsoft.co.il/blogs/yosit/archive/2007/01/31/_E705E605EA05_-_DB05DC05_-_D405DB05E005E105_-_E905D405D905D405_-_D405D905D505DD05_.aspx) - [Tal](http://tikotal.blogspot.com/2007/01/some-impressions-of-microsoft.html) - [Adi](http://dotmad.blogspot.com/2007/02/microsoft-developer-academy.html) - [Lior Tzoref](http://blogs.microsoft.co.il/blogs/liorz/archive/2007/01/31/Microsoft-Developer-Academy.aspx) I'll see if I can summarize it for those of you without time to read through: - Great content (not fluff) - no marketing content, very deep lectures, very little disappointment from the talks (those who got to actually attend them) - Very poor organization - Some talks were simply too crowded to get into even though there was a "registration" period before the conference. They seemed to have let too many people in (2300 compared to 1800 registered or something like that) - The structure itself could not accommodate thousands of people moving between lecture halls in the space of 15 minutes. - I know this for a fact, because as a presenter, it took me more than 15 minutes just to be able to leave the lecture hall I was speaking in and  over to the next talk . - Like any "classic" doomed project, when MS Israel got the presenters to see the building the week before, we already started talking about how messy things were going to be. They were. - Poor food and no coffee at lunch! What were your experiences from the conference? Which talks did you like the most? and the least? What feedback can you give the presenters to help them prepare better for their next presentation? Your comments would be appreciated ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - May 20, 2007 ### [CodeBetter.Com to win best community award](https://osherove.com/blog/2007/5/20/codebettercom-to-win-best-community-award.html) - May 19, 2007 ### [Impressions from DevTeach - Wow!](https://osherove.com/blog/2007/5/19/impressions-from-devteach-wow.html) - Jan 29, 2007 ### [Catch me speaking at DevTeach](https://osherove.com/blog/2007/1/29/catch-me-speaking-at-devteach.html) - Nov 19, 2006 ### [MVPs Week - Full week of hardcore training from Experts4D](https://osherove.com/blog/2006/11/19/mvps-week-full-week-of-hardcore-training-from-experts4d.html) --- title: "Slides for Agile Concepts and Continuous Integration" url: "https://osherove.com/blog/2007/1/31/slides-for-agile-concepts-and-continuous-integration.md" canonical: "https://osherove.com/blog/2007/1/31/slides-for-agile-concepts-and-continuous-integration.html" published: "2007-01-31T10:47:34" updated: "2007-01-31T10:47:34" tags: ["Agile"] author: "Roy Osherove" description: "If you're attending my talks today at the Microsoft Developer Academy in Israel, here are the latest versions of my slides for your downloading pleasure: Introduction to Agile Development Concepts Continuous Integration…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Slides for Agile Concepts and Continuous Integration By Roy Osherove January 31, 2007 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published January 31, 2007; technical details may be outdated. If you're attending my talks today at the Microsoft Developer Academy in Israel, here are the latest versions of my slides for your downloading pleasure: - [Introduction to Agile Development Concepts](http://files.osherove.com/devacademy/Dev213AgileConcepts.zip) - [Continuous Integration with and without Team System](http://files.osherove.com/devacademy/Dev208CIAndTeamSystem.zip) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 11, 2007 ### [Naresh Jain - Great Agile Blog](https://osherove.com/blog/2007/2/11/naresh-jain-great-agile-blog.html) - Feb 3, 2007 ### [Nice Israeli Blog from the Agile\\Java World](https://osherove.com/blog/2007/2/3/nice-israeli-blog-from-the-agilejava-world.html) - Jan 29, 2007 ### [Catch me speaking at DevTeach](https://osherove.com/blog/2007/1/29/catch-me-speaking-at-devteach.html) - Jan 29, 2007 ### [Cheat Sheets for ASP.NET, Regex, Mock Objects and more](https://osherove.com/blog/2007/1/29/cheat-sheets-for-aspnet-regex-mock-objects-and-more.html) --- title: "Keyboard shortcuts posters and introducing Enso Launcher" url: "https://osherove.com/blog/2007/1/29/keyboard-shortcuts-posters-and-introducing-enso-launcher.md" canonical: "https://osherove.com/blog/2007/1/29/keyboard-shortcuts-posters-and-introducing-enso-launcher.html" published: "2007-01-29T17:36:23" updated: "2007-01-29T17:36:23" tags: [".NET"] author: "Roy Osherove" description: "Rob posted about a whole bunch of keyboard shortcuts posters for Visual Studio. As a keyboard junkie I agree that you should *know* this. One amazingly cool tool I've found to help me with my keyboard addiction is Enso…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Keyboard shortcuts posters and introducing Enso Launcher By Roy Osherove January 29, 2007 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published January 29, 2007; technical details may be outdated. [Rob posted about a whole bunch of keyboard shortcuts posters](http://blogs.msdn.com/robcaron/archive/2007/01/29/1552795.aspx) for Visual Studio. As a keyboard junkie I agree that you should \*know\* this. One amazingly cool tool I've found to help me with my keyboard addiction is [Enso Launcher](http://www.humanized.com/) and Enso Words (found via [Scott's blog](http://www.hanselman.com/blog/AnotherWayToReplaceStartRunEnsoLauncher.aspx)). I love the interface and I **love** the fact that you use CAPS lock to run commands. finally, I've found use for this crappy little key. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Feb 24, 2007 ### [Introducing FxCopUnit - A framework for integrated FxCop rule testing](https://osherove.com/blog/2007/2/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule.html) - Feb 5, 2007 ### [NDepend 2.0 - Beast, not Beauty](https://osherove.com/blog/2007/2/5/ndepend-20-beast-not-beauty.html) - Jan 29, 2007 ### [Prepare sourcesafe for the daylight time change in the U.S](https://osherove.com/blog/2007/1/29/prepare-sourcesafe-for-the-daylight-time-change-in-the-us.html) - Jan 29, 2007 ### [Cheat Sheets for ASP.NET, Regex, Mock Objects and more](https://osherove.com/blog/2007/1/29/cheat-sheets-for-aspnet-regex-mock-objects-and-more.html) --- title: "Prepare sourcesafe for the daylight time change in the U.S" url: "https://osherove.com/blog/2007/1/29/prepare-sourcesafe-for-the-daylight-time-change-in-the-us.md" canonical: "https://osherove.com/blog/2007/1/29/prepare-sourcesafe-for-the-daylight-time-change-in-the-us.html" published: "2007-01-29T17:30:04" updated: "2007-01-29T17:30:04" tags: [".NET"] author: "Roy Osherove" description: "Act now or forever be blamed for screwing up Via Richard Berg: The rules for U.S. daylight savings time are changing in 2007 . SourceSafe cares about time zones, so you should too. Complete details are in KB article…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Prepare sourcesafe for the daylight time change in the U.S By Roy Osherove January 29, 2007 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published January 29, 2007; technical details may be outdated. Act now or forever be blamed for screwing up Via Richard Berg: > The rules for U.S. daylight savings time are [changing in 2007](http://www.energy.ca.gov/daylightsaving.html).  SourceSafe cares about time zones, so you should too.  > > Complete details are in [KB article 931804](http://support.microsoft.com/?kbid=931804).  > > To quote one section heading, > > "**If you do not update the servers and client computers, you may lose check-in information**".  > > There, do I have your attention now? :)  Yes you do! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Feb 5, 2007 ### [NDepend 2.0 - Beast, not Beauty](https://osherove.com/blog/2007/2/5/ndepend-20-beast-not-beauty.html) - Jan 29, 2007 ### [Keyboard shortcuts posters and introducing Enso Launcher](https://osherove.com/blog/2007/1/29/keyboard-shortcuts-posters-and-introducing-enso-launcher.html) - Jan 29, 2007 ### [Cheat Sheets for ASP.NET, Regex, Mock Objects and more](https://osherove.com/blog/2007/1/29/cheat-sheets-for-aspnet-regex-mock-objects-and-more.html) - Jan 7, 2007 ### [Shell MegaPack version 8.0 is out](https://osherove.com/blog/2007/1/7/shell-megapack-version-80-is-out.html) --- title: "Catch me speaking at DevTeach" url: "https://osherove.com/blog/2007/1/29/catch-me-speaking-at-devteach.md" canonical: "https://osherove.com/blog/2007/1/29/catch-me-speaking-at-devteach.html" published: "2007-01-29T16:56:33" updated: "2007-01-29T16:56:33" tags: ["Agile", "Agile Related", "Community", "Community News"] author: "Roy Osherove" description: "I will be speaking at the upcoming DevTeach conference in Canada this upcoming May. It's my first time to DevTeach and even to Canada for that matter. Exciting! The talks I'll be giving at DevTeach are : Continuous…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Catch me speaking at DevTeach By Roy Osherove January 29, 2007 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published January 29, 2007; technical details may be outdated. I will be speaking at the upcoming [DevTeach](http://www.devteach.com/Session.aspx#50) conference in Canada this upcoming May. It's my first time to DevTeach and even to Canada for that matter. Exciting! The talks I'll be giving at DevTeach are : - Continuous Integration Tools in .NET - Techniques for Testing Data Access code - (probably) Introduction to Agile Development Concepts I'm happy to say that a couple of other Israeli presenters (and bloggers) will be speaking at DevTeach this year: [Oren Eini](http://www.ayende.com/Blog/2007/01/26/TalkingInDevTeach.aspx) and [Udi Dahan](http://www.udidahan.com/). After DevTeach I _may_ be staying in Canada for an extra week _("may" == I'm still not sure if I want to be away from how for a full two weeks with a new kid and a sleepless wife at home)_ to do a user group tour in Canada. If it works out,I'll be speaking at four user group locations, all around Canada (Halifax, Winnipeg, Edmonton, and Victoria). Topics for this haven't been decided yet, but should include Agile Development and Team System stuff, as well as any other material they'd want me to do. Suggestions? ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Feb 3, 2007 ### [Nice Israeli Blog from the Agile\\Java World](https://osherove.com/blog/2007/2/3/nice-israeli-blog-from-the-agilejava-world.html) - Jan 31, 2007 ### [Slides for Agile Concepts and Continuous Integration](https://osherove.com/blog/2007/1/31/slides-for-agile-concepts-and-continuous-integration.html) - Jan 29, 2007 ### [Cheat Sheets for ASP.NET, Regex, Mock Objects and more](https://osherove.com/blog/2007/1/29/cheat-sheets-for-aspnet-regex-mock-objects-and-more.html) - Dec 23, 2006 ### [The Agile Ambient Orb](https://osherove.com/blog/2006/12/23/the-agile-ambient-orb.html) --- title: "Cheat Sheets for ASP.NET, Regex, Mock Objects and more" url: "https://osherove.com/blog/2007/1/29/cheat-sheets-for-aspnet-regex-mock-objects-and-more.md" canonical: "https://osherove.com/blog/2007/1/29/cheat-sheets-for-aspnet-regex-mock-objects-and-more.html" published: "2007-01-29T16:30:12" updated: "2007-01-29T16:30:12" tags: [".NET", ".Net 2.0", "Agile"] author: "Roy Osherove" description: "Ah, I love cheat sheets! You can hang them up on a wall, and then look at them when you need to remember how to do something. Looks like there is some very thorough cheat sheets for regular expressions over here .(via…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cheat Sheets for ASP.NET, Regex, Mock Objects and more By Roy Osherove January 29, 2007 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published January 29, 2007; technical details may be outdated. Ah, I love cheat sheets! You can hang them up on a wall, and then look at them when you need to remember how to do something. Looks like there is some **very** thorough [cheat sheets for regular expressions over here](http://www.ilovejackdaniels.com/cheat-sheets/regular-expressions-cheat-sheet/).(via [Mike](http://www.larkware.com/dg7/TheDailyGrind1066.aspx)). You can use them along with Regular and Regulazy to do you Regex stuff. There are lots [more Cheat sheets here](http://john-sheehan.com/blog/index.php/net-cheat-sheets/) for ASP.NET, CSS, HTML etc.. Now, here's something you'll find very helpful if you do unit testing with Mock Object frameworks such as NMock. **Cheat sheets for Mock Object frameworks** - [**NMock** 2 has a cheat sheet](http://nmock.org/cheatsheet.html) on how to use it's syntax. -  [Here's an alternative one for NMock 2 in PDF](http://www.todyruik.com/blog/2005/07/19/nmock-2-quick-reference/). - **JMock** [has a quick reference guide here](http://www.todyruik.com/blog/2005/07/07/jmock-quick-reference/). - **[TypeMock](http://www.typemock.com/)** has two cheat sheets (currently in draft form). - [Reflective Mocks](http://files.osherove.com/TypeMockCheatSheet-Reflective.pdf) - [Natural Mocks](http://files.osherove.com/TypeMockCheatSheet.pdf) If you know of other interesting cheat sheets for .NET, Unit testing or mock objects, feel free to post them as a comment. I will add the useful ones to the list. **Update**: - Just found [another cheat sheet (erm, command line reference) for TF.EXE](http://blogs.msdn.com/noahc/archive/2007/01/22/real-tfs-command-line-help.aspx) - the source control god of Team Foundation server, with which you can do practically anything, and only about 40% of it's functionality is exposed by the various GUI tools in VSTS. I've created a [more readable vestion of this document in Word Format here](http://files.osherove.com/TF%20Cheat%20Sheet.doc). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jan 29, 2007 ### [Keyboard shortcuts posters and introducing Enso Launcher](https://osherove.com/blog/2007/1/29/keyboard-shortcuts-posters-and-introducing-enso-launcher.html) - Jan 29, 2007 ### [Prepare sourcesafe for the daylight time change in the U.S](https://osherove.com/blog/2007/1/29/prepare-sourcesafe-for-the-daylight-time-change-in-the-us.html) - Jan 7, 2007 ### [Shell MegaPack version 8.0 is out](https://osherove.com/blog/2007/1/7/shell-megapack-version-80-is-out.html) - Dec 20, 2006 ### [Team Data and the Database publishing wizard](https://osherove.com/blog/2006/12/20/team-data-and-the-database-publishing-wizard.html) --- title: "How to save a streaming MSDN Showtime video locally" url: "https://osherove.com/blog/2007/1/28/how-to-save-a-streaming-msdn-showtime-video-locally.md" canonical: "https://osherove.com/blog/2007/1/28/how-to-save-a-streaming-msdn-showtime-video-locally.html" published: "2007-01-28T11:08:00" updated: "2007-01-28T11:08:00" tags: [] author: "Roy Osherove" description: "Update : Daniel has graciously supplied a very easy solution to this problem: Using the VLC player to download and transcode the stream into a file on the local system. Very easy indeed! See the 2nd and 3rd comments on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to save a streaming MSDN Showtime video locally By Roy Osherove January 28, 2007 **Historical article** · Originally published January 28, 2007; technical details may be outdated. **Update**: Daniel has graciously supplied a very easy solution to this problem: Using the VLC player to download and transcode the stream into a file on the local system. Very easy indeed! See the 2nd and 3rd comments on this post for more details. If anyone has any idea how I can save the video of the presentation I did here: [http://msexp.streamnavig.com/msexp/player.asp?e=E0068&s=0337\_en\_w&f=0337\_en&uid=00067FFE8647AA45&lng=en&cou=msdn](http://msexp.streamnavig.com/msexp/player.asp?e=E0068&s=0337_en_w&f=0337_en&uid=00067FFE8647AA45&lng=en&cou=msdn)  It would by greatly appreciated if you let me know about the steps to achieving that. Heck, there's [www.peekvid.com](http://www.peekvid.com/) that allows saving videos from youtube and google video, there should be **some** way to download them from showtime, right? --- title: "Using TFS Integrator to manage complex project dependencies" url: "https://osherove.com/blog/2007/1/28/using-tfs-integrator-to-manage-complex-project-dependencies.md" canonical: "https://osherove.com/blog/2007/1/28/using-tfs-integrator-to-manage-complex-project-dependencies.html" published: "2007-01-28T10:57:09" updated: "2007-01-28T10:57:09" tags: ["Team System"] author: "Roy Osherove" description: "One of the clients I went to today had an interesting dilemma relating to managing references in source control between projects. Their situation is not unlike many other companies: they have an infrastructure team that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Using TFS Integrator to manage complex project dependencies By Roy Osherove January 28, 2007 In [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published January 28, 2007; technical details may be outdated. One of the clients I went to today had an interesting dilemma relating to managing references in source control between projects. Their situation is not unlike many other companies: they have an infrastructure team that creates regular releases of the basic APIs that many internal projects in the company use to create applications. The problem is, what happens when a new version is releases and the other dependent projects need to be updated with the new version of the framework? To make this harder - the framework may be composed of many dlls, and some project may not want to automatically accept the new reference to the new version of the framework, but keep building against the older one. How do you allow an automatic update of the references for dependent selected project? Team System (which is what they were examining against their current Perforce repository) does not have a solid answer for this. sure, you can do branching, shelving and merging like crazy and achieve this, but there is no simple solution. Luckily, there is \*some\* sort of solution for this. It was created by a crazy Australian I got to meet at the last MVP summit, Mitch Denny. You can find his blog over at [www.notGartner.com](http://www.notgartner.com/) . Mitch created a project called [TFS Integrator](http://notgartner.wordpress.com/tag/projects/tfs-integrator/), that not only allows for creating a continuous integration solution , it allows what he calls "Dependency Replication" : > Dependency Replication is a process that most development teams have to do as the scope of what they are trying to achieve grows. The idea is that within your organization you might have a set of common frameworks that you use and maintain. Rather than linking in the source code into each new project that you undertake you treat the framework like an internal product which you build separately. > > The problem you then have is integrating the updated binaries into the other projects that depend on them. This can be quite a time consuming process, so much so that teams will often give up and end up compiling hundreds of different versions of the same code into their code base - which creates a maintenance nightmare. > > TFS Integrator includes a dependency replication engine which extends the continuous integration feature. It does this by listening for the build completion even from TFS and using that to trigger the execution of some code which picks up the compiled build output and checking it back into Team Foundation Server in a specified location. > > The effect is that with dependency replication the feedback loop is complete and dependant components can be linked together. It does require a .NET 3.0 runtime installed (it uses WCF under the covers) but if you install it on a separate machine it should be of no particular problem. If all goes well, TFS Integrator should be able to solve my clients problem. Another interesting resource for techniques on managing the visioning issues in source control [can be found in this blog post](http://manicprogrammer.com/cs/blogs/michaelruminer/archive/2006/09/07/88.aspx), which is quite thorough. ## More in Team System [All posts in Team System](https://osherove.com/blog/category/team-system) - Apr 29, 2007 ### [TFS or not? Being a perfectionist in a realistic world](https://osherove.com/blog/2007/4/29/tfs-or-not-being-a-perfectionist-in-a-realistic-world.html) - Mar 27, 2007 ### [Microsoft acquired TeamPlain web client for TFS - Get your free download today](https://osherove.com/blog/2007/3/27/microsoft-acquired-teamplain-web-client-for-tfs-get-your-fre.html) - Dec 20, 2006 ### [Team Data and the Database publishing wizard](https://osherove.com/blog/2006/12/20/team-data-and-the-database-publishing-wizard.html) - Dec 10, 2006 ### [Custom Reports for Load Test Results from Team System](https://osherove.com/blog/2006/12/10/custom-reports-for-load-test-results-from-team-system.html) --- title: "New Job - Looking for New People!" url: "https://osherove.com/blog/2007/1/22/new-job-looking-for-new-people.md" canonical: "https://osherove.com/blog/2007/1/22/new-job-looking-for-new-people.html" published: "2007-01-22T16:00:10" updated: "2007-01-22T16:00:10" tags: ["Other"] author: "Roy Osherove" description: "It's been a while since I last wrote, but things are a bit.. hectic. Itamar (our new child!) is amazingly beautiful, but I don't recall ever being as tired as I am these days. waiting for the 3 months mark :) In any…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Job - Looking for New People! By Roy Osherove January 22, 2007 In [Other](https://osherove.com/blog/category/other) **Historical article** · Originally published January 22, 2007; technical details may be outdated. It's been a while since I last wrote, but things are a bit.. hectic. Itamar (our new child!) is amazingly beautiful, but I don't recall ever being as tired as I am these days. waiting for the 3 months mark :) In any case, For the past few months I've started leading the **Team System** and **Agile Development** Fields at the [Sela Group](http://www.sela.co.il/) here in Israel. If you don't know it or you \*think\* you know it, here's a little run down of what Sela Does: - Consulting, Coaching and outsourcing technical knowledge - Training, Training, Training (From C++ to .NET 3.0 to AutoCad) The fields I will be leading will be spread on these two areas. That also means any courses I will be doing will probably be going through Sela as well (though [www.TeamAgile.com](http://www.teamagile.com/) will continue to exist - most of the materials will be going through Sela) **First, I'm looking for someone to enter into the Agile Field with us at Sela.** - **I'm looking for a TDD Trainer /coach** (lots of experience in one of these: Java, C++ or .NET ). You don't need to be a TDD expert - just want to learn it and teach it. I'll teach you all you need to know about TDD (If you don't know what TDD is , this ad is probably not for you) - **I'm looking for an Agile Coach** - someone who knows Scrum or XP and has had experiences implementing it in at least one company (the more the better). If you're interested in any of this, feel free to email me at **Royo @ Sela.co.il** As for Team System we have just about enough people right now, but it looks like we'll be hiring soon, so I'll post on here when that comes up. With Team System I've divided the work required into three types of work: - **Methodology** - decide \*how\* you want to work and what you want to "fix" by moving to Team System - **Architecture** - Implement Team System 9installation, configuration, Source control, Build and the whole lifecycle working out of the box) - **Customization** - Add stuff that's missing for you in team system, change stuff that needs changing (like adding whole new fields into work items or reports) or create your own full blown methodology to be implemented by the team system tools. We have people specifically trained for each of these purposes who can work at the client's site 1-2 days a week for several months or permanently, to make sure stuff goes smoothly and to answer any requirement. In many cases I've found that the role of the Team System implementer that we send is really the "Configuration Manager" role, doing nightly builds on continuous integration, source control branching and strategies etc.. Pretty interesting stuff! If you're interested in any of this, feel free to email me at **Royo @ Sela.co.il** ## More in Other [All posts in Other](https://osherove.com/blog/category/other) - Jul 29, 2007 ### [Hire me for a day: Two Opportunities](https://osherove.com/blog/2007/7/29/hire-me-for-a-day-two-opportunities.html) - Jun 1, 2007 ### [Why I won't be switching to Google RSS Reader](https://osherove.com/blog/2007/6/1/why-i-wont-be-switching-to-google-rss-reader.html) - Jan 2, 2007 ### [Baby Osherove - Born 28-12-06](https://osherove.com/blog/2007/1/2/baby-osherove-born-28-12-06.html) - Dec 6, 2006 ### [I screwed up with a client. Here's what I've learned.](https://osherove.com/blog/2006/12/6/i-screwed-up-with-a-client-heres-what-ive-learned.html) --- title: "Shell MegaPack version 8.0 is out" url: "https://osherove.com/blog/2007/1/7/shell-megapack-version-80-is-out.md" canonical: "https://osherove.com/blog/2007/1/7/shell-megapack-version-80-is-out.html" published: "2007-01-07T08:39:48" updated: "2007-01-07T08:39:48" tags: [".NET", ".Net 2.0", "General Software Devel..."] author: "Roy Osherove" description: "The guys over at Sky Software have updated the latest version of Shell MegaPack to v 8.0 . It's an impressive product that I've reviewed before as part of my \"advertising I stand behind\" campaign, and now I'm happy to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Shell MegaPack version 8.0 is out By Roy Osherove January 7, 2007 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published January 7, 2007; technical details may be outdated. The guys over at [Sky Software](http://www.ssware.com/) have updated the latest version of [Shell MegaPack to v 8.0](http://www.ssware.com/megapack.htm). It's an impressive product that I've [reviewed](http://weblogs.asp.net/rosherove/archive/2006/05/30/ShellMegaPackReview.aspx) before as part of my "advertising I stand behind" campaign, and now I'm happy to re-introduce them back into the front page of my blog as an ad I believe in. Some of the new features include 100% managed code implementation, 64 Bit Support, many new events and more. Good product, good features. Everyone's happy. \[Note: This part of an ad. One which I [fully stand behind](http://weblogs.asp.net/rosherove/pages/Advertise.aspx)\] ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jan 29, 2007 ### [Prepare sourcesafe for the daylight time change in the U.S](https://osherove.com/blog/2007/1/29/prepare-sourcesafe-for-the-daylight-time-change-in-the-us.html) - Jan 29, 2007 ### [Cheat Sheets for ASP.NET, Regex, Mock Objects and more](https://osherove.com/blog/2007/1/29/cheat-sheets-for-aspnet-regex-mock-objects-and-more.html) - Dec 20, 2006 ### [Team Data and the Database publishing wizard](https://osherove.com/blog/2006/12/20/team-data-and-the-database-publishing-wizard.html) - Dec 14, 2006 ### [Catch me talking Agile at the Israeli .NET Architects user group](https://osherove.com/blog/2006/12/14/catch-me-talking-agile-at-the-israeli-net-architects-user-gr.html) --- title: "Five things you didn't know about me" url: "https://osherove.com/blog/2007/1/6/five-things-you-didnt-know-about-me.md" canonical: "https://osherove.com/blog/2007/1/6/five-things-you-didnt-know-about-me.html" published: "2007-01-06T17:01:37" updated: "2007-01-06T17:01:37" tags: ["Off Topic"] author: "Roy Osherove" description: "I've been tagged , so I'll use this as a good chance to talk about my favorite subject - me! Five things you didn't know about me: 1. I used to be a wave surfer between the ages of 12-18, with long hair that was…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Five things you didn't know about me By Roy Osherove January 6, 2007 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 6, 2007; technical details may be outdated. I've been [tagged](http://weblogs.asp.net/fbouma/archive/2007/01/02/i-m-tagged-and-happy-newyear.aspx), so I'll use this as a good chance to talk about my favorite subject - me! Five things you didn't know about me: 1\. I used to be a wave surfer between the ages of 12-18, with long hair that was brightened by the sun (4-8 hours a day at sea in summers!), thin (seriously!), and used to smoke. Of course, I've given wave surfing up for web surfing and smoking for eating, which made giving up "thin" rather easy.. 2\. at 21, when I was done with military duty, I did many odd jobs - security officer at the Crown Plaza Hotel, Electrics sales person, computer shop sales, then manager, then head of customer care, even car-wash boy at some point in time. there were a couple of months I worked as an insurance claim investigator (what  a terrible job!), and another where I was selling teen magazines in schools. I'd like to think all these jobs gave me a nice perspective on things I do today, and for life experience in general. 3\. Although my English may sound native, I've never spent more than a few weeks in English speaking countries (2 months at Norway don't count either). All my English speaking skills come from watching huge amounts of TV since I was a child. I'm quite a movie and video buff too, in fact. 4\. I love a good horror movie, especially the mindless kind (as in "re-animator", "hell raiser" etc.. 5\. I started writing this blog when I was at a job that I really hated. You should give it a try! Tag, You're it: [Jamie Cansdale](http://weblogs.asp.net/nunitaddin), [Mike Gunderloy](http://www.larkware.com/), [Hanselman](http://www.hanselman.com/blog/default.aspx), [Yosi Taguri](http://blogs.microsoft.co.il/blogs/yosit/)! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 2, 2007 ### [Building a home media center - Here's my parts list](https://osherove.com/blog/2007/3/2/building-a-home-media-center-heres-my-parts-list.html) - Feb 25, 2007 ### [Why the Wii is selling like hotcakes](https://osherove.com/blog/2007/2/25/why-the-wii-is-selling-like-hotcakes.html) - Dec 25, 2006 ### [Good Experience: Cool Online Games](https://osherove.com/blog/2006/12/25/good-experience-cool-online-games.html) - Dec 24, 2006 ### [Rest in peace, Doug Reilly](https://osherove.com/blog/2006/12/24/rest-in-peace-doug-reilly.html) --- title: "Baby Osherove - Born 28-12-06" url: "https://osherove.com/blog/2007/1/2/baby-osherove-born-28-12-06.md" canonical: "https://osherove.com/blog/2007/1/2/baby-osherove-born-28-12-06.html" published: "2007-01-02T02:15:37" updated: "2007-01-02T02:15:37" tags: ["Other"] author: "Roy Osherove" description: "It's been an amazing last week here for my little family. We could not have gotten a better present for the new year. My wife and I welcomed a new member to our family, who is not named yet. He weighs 4 Kg. :) We've…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Baby Osherove - Born 28-12-06 By Roy Osherove January 2, 2007 In [Other](https://osherove.com/blog/category/other) **Historical article** · Originally published January 2, 2007; technical details may be outdated.  It's been an amazing last week here for my little family. We could not have gotten a better present for the new year. My wife and I welcomed **a new member** to our family, who is not named yet. He weighs 4 Kg. :)  We've been in the hospital for a week trying to get his newborn hepatitis down to a normal level. Today it came down and we should be leaving the hospital tomorrow (it sure helped that both of my Wife's parents are doctors at that same hospital!) Both mother and son are exhausted but very very happy with each other: here's a video with highlights from the birth (nothing gory or exposed!) I made with [Photo Story 3.0](http://www.microsoft.com/windowsxp/using/digitalphotography/photostory/default.mspx) : [http://files.osherove.com/birth\_talroy.wmv](http://files.osherove.com/birth_talroy.wmv) I should be getting up to speed in the next few weeks on my work and emails and blogs and such. As I say in many of my Agile talks: > "One thing is for sure: Things are going to change." ## More in Other [All posts in Other](https://osherove.com/blog/category/other) - Jun 1, 2007 ### [Why I won't be switching to Google RSS Reader](https://osherove.com/blog/2007/6/1/why-i-wont-be-switching-to-google-rss-reader.html) - Jan 22, 2007 ### [New Job - Looking for New People!](https://osherove.com/blog/2007/1/22/new-job-looking-for-new-people.html) - Dec 6, 2006 ### [I screwed up with a client. Here's what I've learned.](https://osherove.com/blog/2006/12/6/i-screwed-up-with-a-client-heres-what-ive-learned.html) - Sep 3, 2004 ### [Review - JetBrains Resharper](https://osherove.com/blog/2004/9/3/review-jetbrains-resharper.html) --- title: "Good Experience: Cool Online Games" url: "https://osherove.com/blog/2006/12/25/good-experience-cool-online-games.md" canonical: "https://osherove.com/blog/2006/12/25/good-experience-cool-online-games.html" published: "2006-12-25T11:06:01" updated: "2006-12-25T11:06:01" tags: ["Off Topic"] author: "Roy Osherove" description: "Here's a very nice set of online games , hand-picked by web surfers and collected in one site with short explanations. Great for passing the time (especially at work!) [via ThisIsBroken ] One of the coolest ones (though…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good Experience: Cool Online Games By Roy Osherove December 25, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 25, 2006; technical details may be outdated. [Here's a very nice set of online games](http://goodexperience.com/games/), hand-picked by web surfers and collected in one site with short explanations. Great for passing the time (especially at work!) \[via [ThisIsBroken](http://www.thisisbroken.com/b/2006/12/nuthin.html)\] One of the coolest ones (though you really have to try it yourself to appreciate it) is [the Line Rider](http://www.deviantart.com/deviation/40255643/). You draw the lines a sled will ride on and then press play. When you're done, check out some [amazing movies](https://youtube.com/watch?v=bcu8ZdJ2dQo) of what [other people](http://official-linerider.com/movies_page.html) have done with this game. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 25, 2007 ### [Why the Wii is selling like hotcakes](https://osherove.com/blog/2007/2/25/why-the-wii-is-selling-like-hotcakes.html) - Jan 6, 2007 ### [Five things you didn't know about me](https://osherove.com/blog/2007/1/6/five-things-you-didnt-know-about-me.html) - Dec 24, 2006 ### [Rest in peace, Doug Reilly](https://osherove.com/blog/2006/12/24/rest-in-peace-doug-reilly.html) - Dec 23, 2006 ### [Forget Google Hacks, Try Live Hacks](https://osherove.com/blog/2006/12/23/forget-google-hacks-try-live-hacks.html) --- title: "This evening at the Architect user group - Agile Dev with Team System" url: "https://osherove.com/blog/2006/12/24/this-evening-at-the-architect-user-group-agile-dev-with-team.md" canonical: "https://osherove.com/blog/2006/12/24/this-evening-at-the-architect-user-group-agile-dev-with-team.html" published: "2006-12-24T02:00:43" updated: "2006-12-24T02:00:43" tags: [] author: "Roy Osherove" description: "See you this evening at the Architect's user group? I'm doing 3 hours on Agile Development with Team System . Update : Download slides from here . You can find the demos and links to the stuff I showed at the talk over…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # This evening at the Architect user group - Agile Dev with Team System By Roy Osherove December 24, 2006 **Historical article** · Originally published December 24, 2006; technical details may be outdated. See you this evening at the Architect's user group? I'm doing 3 hours on [Agile Development with Team System](http://weblogs.asp.net/rosherove/archive/2006/12/14/catch-me-talking-agile-at-the-israeli-net-architects-user-group.aspx). **Update**: - Download [slides from here](http://files.osherove.com/vsts/Slides_PRE001.zip). - You can find the **demos** and links to the stuff I showed at the talk [over here](http://weblogs.asp.net/rosherove/archive/2006/12/09/video-implementing-continuous-integration-with-and-without-team-system.aspx). --- title: "Rest in peace, Doug Reilly" url: "https://osherove.com/blog/2006/12/24/rest-in-peace-doug-reilly.md" canonical: "https://osherove.com/blog/2006/12/24/rest-in-peace-doug-reilly.html" published: "2006-12-24T00:50:41" updated: "2006-12-24T00:50:41" tags: ["Off Topic"] author: "Roy Osherove" description: "Rest in peace , Doug. Cancer hit close this time, and I hope this is as close as it will ever get. Doug was an MVP and was fighting Cancer. He passed away not long ago." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Rest in peace, Doug Reilly By Roy Osherove December 24, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 24, 2006; technical details may be outdated. [Rest in peace](http://blog.programmingasp.net/), Doug.  Cancer hit close this time, and I hope this is as close as it will ever get. Doug was an MVP and was fighting Cancer. He passed away not long ago. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 6, 2007 ### [Five things you didn't know about me](https://osherove.com/blog/2007/1/6/five-things-you-didnt-know-about-me.html) - Dec 25, 2006 ### [Good Experience: Cool Online Games](https://osherove.com/blog/2006/12/25/good-experience-cool-online-games.html) - Dec 23, 2006 ### [Forget Google Hacks, Try Live Hacks](https://osherove.com/blog/2006/12/23/forget-google-hacks-try-live-hacks.html) - Dec 13, 2006 ### [What would you write about if you had an anonymous blog?](https://osherove.com/blog/2006/12/13/what-would-you-write-about-if-you-had-an-anonymous-blog.html) --- title: "The Agile Ambient Orb" url: "https://osherove.com/blog/2006/12/23/the-agile-ambient-orb.md" canonical: "https://osherove.com/blog/2006/12/23/the-agile-ambient-orb.html" published: "2006-12-23T16:29:04" updated: "2006-12-23T16:29:04" tags: ["Agile", "Agile Related"] author: "Roy Osherove" description: "The Ambient Orb is one of the coolest gadgets around. You can program it to show any color depending on any status, so you can actually use it to show the status of your continuous Integration Build. Check out this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Agile Ambient Orb By Roy Osherove December 23, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published December 23, 2006; technical details may be outdated. The [Ambient Orb](http://www.ambientdevices.com/cat/orb/orborder.html) is one of the coolest gadgets around. You can program it to show any color depending on any status, so you can actually use it to show the status of your continuous Integration Build. Check out [this article](http://blogs.msdn.com/mswanson/articles/169058.aspx) for a step by step tutorial to make it work for your team (using Nant). How cool is it? Check out this movie from YouTube: [![](https://osherove.com/img/video/yt-m_9KTT8Z7Bg.jpg)Play videoAmbient Orbs MP3 Visualization](https://www.youtube.com/watch?v=m_9KTT8Z7Bg) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jan 29, 2007 ### [Catch me speaking at DevTeach](https://osherove.com/blog/2007/1/29/catch-me-speaking-at-devteach.html) - Jan 29, 2007 ### [Cheat Sheets for ASP.NET, Regex, Mock Objects and more](https://osherove.com/blog/2007/1/29/cheat-sheets-for-aspnet-regex-mock-objects-and-more.html) - Dec 14, 2006 ### [Catch me talking Agile at the Israeli .NET Architects user group](https://osherove.com/blog/2006/12/14/catch-me-talking-agile-at-the-israeli-net-architects-user-gr.html) - Dec 10, 2006 ### [Macro - Workaround for VS 2005 unit testing build problem](https://osherove.com/blog/2006/12/10/macro-workaround-for-vs-2005-unit-testing-build-problem.html) --- title: "Forget Google Hacks, Try Live Hacks" url: "https://osherove.com/blog/2006/12/23/forget-google-hacks-try-live-hacks.md" canonical: "https://osherove.com/blog/2006/12/23/forget-google-hacks-try-live-hacks.html" published: "2006-12-23T14:22:22" updated: "2006-12-23T14:22:22" tags: ["Off Topic"] author: "Roy Osherove" description: "Forget Google Hacks, Try Live Hacks :) Alik is a security guy, and he knows what he's talking about. He has a nice walk through of what hacker could do with the Live Search SDK to find sites with vulnerabilities.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Forget Google Hacks, Try Live Hacks By Roy Osherove December 23, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 23, 2006; technical details may be outdated. Forget Google Hacks, Try [Live Hacks](http://blogs.microsoft.co.il/blogs/alikl/archive/2006/12/23/This-is-How-They-will-Hack-Your-Web-Site.aspx) :) Alik is a security guy, and he knows what he's talking about. He has a nice walk through of what hacker could do with the Live Search SDK to find sites with vulnerabilities. Interesting as "hack".. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 25, 2006 ### [Good Experience: Cool Online Games](https://osherove.com/blog/2006/12/25/good-experience-cool-online-games.html) - Dec 24, 2006 ### [Rest in peace, Doug Reilly](https://osherove.com/blog/2006/12/24/rest-in-peace-doug-reilly.html) - Dec 13, 2006 ### [What would you write about if you had an anonymous blog?](https://osherove.com/blog/2006/12/13/what-would-you-write-about-if-you-had-an-anonymous-blog.html) - Dec 6, 2006 ### [How bad design can scare your children](https://osherove.com/blog/2006/12/6/how-bad-design-can-scare-your-children.html) --- title: "Total Commander - The Ultimate File Manager?" url: "https://osherove.com/blog/2006/12/21/total-commander-the-ultimate-file-manager.md" canonical: "https://osherove.com/blog/2006/12/21/total-commander-the-ultimate-file-manager.html" published: "2006-12-21T09:00:47" updated: "2006-12-21T09:00:47" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "A friend asked what is that weird program I use to manage files. I told her it was Total Commander , my true love when it comes to file management. It helps me use FTP, Multiple rename, zip, rar and synchronize folders…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Total Commander - The Ultimate File Manager? By Roy Osherove December 21, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published December 21, 2006; technical details may be outdated. A friend asked what is that weird program I use to manage files. I told her it was [Total Commander](http://www.ghisler.com/), my true love when it comes to file management. It helps me use FTP, Multiple rename, zip, rar and synchronize folders in one tools. It can be totally keyboard-driven and customized, and it has TONS of plugins to view any file type (like digging inside ISO file like they were zip files as an example). The new version supports tabs and many features which you can't really find in windows Explorer. Highly recommended. However, there are others out there, who prefer other programs to manage their file system, which have many of the same features, with different levels of usability and configurability built in. It's a religion, really. Some of the best known ones out there are: - [Total Commander](http://www.ghisler.com/) (The image on the site looks hideous, but it is truly a monster for productivity) - [Directory Opus](http://www.gpsoft.com.au/) (better interface, lots of shortcuts - but Total Commander just feels more "natural" to me. A friend of mine swear by it though) - [Servant Salamander](http://www.altap.cz/salam_en/index.html) (I know some people who really like it - [FAR Manager](http://farmanager.com/) (text only) (Why oh why use a dos based tool these days? though some people love it) - [Xplorer(2)](http://zabkat.com/tour1.htm) (I don't like it too much- but it seems to be a favorite for those who really like clicking mouse buttons. - [Accelman](http://www.flexigensoft.com/file-manager/screenshorts) - Seems like an interesting new one I hadn't seen before - [XYplorer](http://www.xyplorer.com/shots.htm) seems interesting as well! What are your favorites? (Here's a [long discussion with many other suggestions](http://alexking.org/blog/2005/01/27/windows-explorer-replacement)) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Mar 16, 2007 ### [The 46 Best-ever Freeware Utilities - By DonationCoder.Com](https://osherove.com/blog/2007/3/16/the-46-best-ever-freeware-utilities-by-donationcodercom.html) - Feb 5, 2007 ### [NDepend 2.0 - Beast, not Beauty](https://osherove.com/blog/2007/2/5/ndepend-20-beast-not-beauty.html) - Dec 4, 2006 ### [HnD - Open source forums and support backed by LLBLGen 2.0](https://osherove.com/blog/2006/12/4/hnd-open-source-forums-and-support-backed-by-llblgen-20.html) - Nov 28, 2006 ### [Cool Promotion - Automise for $20 for 24h window](https://osherove.com/blog/2006/11/28/cool-promotion-automise-for-20-for-24h-window.html) --- title: "Team Data and the Database publishing wizard" url: "https://osherove.com/blog/2006/12/20/team-data-and-the-database-publishing-wizard.md" canonical: "https://osherove.com/blog/2006/12/20/team-data-and-the-database-publishing-wizard.html" published: "2006-12-20T15:36:29" updated: "2006-12-20T15:36:29" tags: [".NET", "Team System"] author: "Roy Osherove" description: "Update : Sachin from the DB Pro team has alerted me that indeed creating the script is possible with DB Pro edition. Coolness! BTW - he just published a white paper on using DB pro to write database unit tests. This is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Team Data and the Database publishing wizard By Roy Osherove December 20, 2006 In [.NET](https://osherove.com/blog/category/net), [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published December 20, 2006; technical details may be outdated. **Update**: [Sachin](http://blogs.msdn.com/sachinre/) from the DB Pro team has alerted me that indeed creating the script is possible with DB Pro edition. Coolness! BTW - he just [published a white](http://blogs.msdn.com/sachinre/archive/2006/12/20/database-unit-testing-whitepaper-draft.aspx) paper on using DB pro to write database unit tests. This is something very powerful in potential, but there is still much work to be done in this area in terms of usability and maintainability of tests. The all new "[Data Dude](http://msdn2.microsoft.com/en-us/teamsystem/aa718764.aspx)" for Team System is amazingly cool and people who see it for the first time love it. I got a question from a potential customer the other day: "Will I be able to create and deploy a single script for my database that I can run on my server to deploy a new DB from scratch, that will also run all the objects based on their dependencies?" The only answer I have for now is "no". I'm still looking for someone to tell me if that's at all possible, but I don't think it is. However, the new "Database publishing wizard" should come in handy for just such situations, I would imagine: [http://www.microsoft.com/downloads/details.aspx?FamilyID=52D6E741-A4E9-4AC5-9877-F4BC0BD06B55&displaylang=en](http://www.microsoft.com/downloads/details.aspx?FamilyID=52D6E741-A4E9-4AC5-9877-F4BC0BD06B55&displaylang=en) "SQL Server Database Publishing Wizard enables the deployment of SQL Server databases into a hosted environment on either a SQL Server 2000 or 2005 server. It generates a single SQL script file which can be used to recreate a database (both schema and data) in a shared hosting environment where the only connectivity to a server is through a web-based control panel with a script execution window. If supported by the hosting service provider, the Database Publishing Wizard can also directly upload databases to servers located at the shared hosting provider. Optionally, SQL Server Database Publishing Wizard can integrate directly into Visual Studio 2005 and/or Visual Web Developer 2005 allowing easy publishing of databases from within the development environment." ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jan 29, 2007 ### [Cheat Sheets for ASP.NET, Regex, Mock Objects and more](https://osherove.com/blog/2007/1/29/cheat-sheets-for-aspnet-regex-mock-objects-and-more.html) - Jan 7, 2007 ### [Shell MegaPack version 8.0 is out](https://osherove.com/blog/2007/1/7/shell-megapack-version-80-is-out.html) - Dec 14, 2006 ### [Catch me talking Agile at the Israeli .NET Architects user group](https://osherove.com/blog/2006/12/14/catch-me-talking-agile-at-the-israeli-net-architects-user-gr.html) - Dec 14, 2006 ### [Vote for the top talks to see at the upcoming MS Israeli Conference](https://osherove.com/blog/2006/12/14/vote-for-the-top-talks-to-see-at-the-upcoming-ms-israeli-con.html) --- title: "Catch me talking Agile at the Israeli .NET Architects user group" url: "https://osherove.com/blog/2006/12/14/catch-me-talking-agile-at-the-israeli-net-architects-user-gr.md" canonical: "https://osherove.com/blog/2006/12/14/catch-me-talking-agile-at-the-israeli-net-architects-user-gr.html" published: "2006-12-14T15:40:46" updated: "2006-12-14T15:40:46" tags: [".NET", ".Net 2.0", "Agile", "Agile Related", "Architecture"] author: "Roy Osherove" description: "I will be giving two talks at the upcoming .NET Architects user group this month (December 24). More info here . The talks I will be giving(Guitar is still in question...): Part I: Introduction to Agile Methodologies…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Catch me talking Agile at the Israeli .NET Architects user group By Roy Osherove December 14, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published December 14, 2006; technical details may be outdated. I will be giving two talks at the upcoming .NET Architects user group this month (December 24). [More info here](http://teched.magen.com/events/event.aspx?EventID=15769). The talks I will be giving(Guitar is still in question...): **Part I:** **Introduction to Agile Methodologies and Concepts** Ever knew on your first day on the project that you're going to miss the deadline? Ever been 'surprised' that the customer changed their mind? Ever had long nights trying to fit your latest changes into code that just keeps on breaking? You're not alone. Wondering where you should start if you want to go Agile? This session is for you. We'll take a look at the traditional 'Engineering' based methodologies such as the waterfall model, how they came to be, why most projects today fail, and what the differences are between Engineering methodologies and 'Agile' methodologies. We'll explore what 'Embrace Change' really means in the context of Agile development and what 'People-Oriented' 'Adaptive' development mean in that context. We'll see how methodologies such as XP, Scrum, Microsoft Solutions Framework (MSF) Agile and others fit into the context of Agile development and talk about the ways in which one can start adopting agile in their organization. Finally, we'll look at some of the most basic steps any organization can take in the road to becoming more and more Agile. **Part II** **Implementing Continuous Integration: With and Without Team System** In this session we'll dive into a world where the system is built and run on a daily basis, and even on an hourly basis. We'll discuss Tools and Libraries that help you get there with VS 2003, 2005 and Team System. Even with Express tools – it's all possible, and more easy than you think. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jan 7, 2007 ### [Shell MegaPack version 8.0 is out](https://osherove.com/blog/2007/1/7/shell-megapack-version-80-is-out.html) - Dec 20, 2006 ### [Team Data and the Database publishing wizard](https://osherove.com/blog/2006/12/20/team-data-and-the-database-publishing-wizard.html) - Dec 14, 2006 ### [Vote for the top talks to see at the upcoming MS Israeli Conference](https://osherove.com/blog/2006/12/14/vote-for-the-top-talks-to-see-at-the-upcoming-ms-israeli-con.html) - Dec 11, 2006 ### [Html Agility Pack](https://osherove.com/blog/2006/12/11/html-agility-pack.html) --- title: "Vote for the top talks to see at the upcoming MS Israeli Conference" url: "https://osherove.com/blog/2006/12/14/vote-for-the-top-talks-to-see-at-the-upcoming-ms-israeli-con.md" canonical: "https://osherove.com/blog/2006/12/14/vote-for-the-top-talks-to-see-at-the-upcoming-ms-israeli-con.html" published: "2006-12-14T15:35:15" updated: "2006-12-14T15:35:15" tags: [".NET", ".Net 2.0", "Community News"] author: "Roy Osherove" description: "Yosi Taguri is holding a little survey about the upcoming big Microsoft Developer Conference in Israel on January 31. You can rank the top five talks you'd be interested in (it's in Hebrew) going to. I'm giving two…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Vote for the top talks to see at the upcoming MS Israeli Conference By Roy Osherove December 14, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published December 14, 2006; technical details may be outdated. [Yosi Taguri is holding a little survey](http://blogs.microsoft.co.il/blogs/yosit/archive/2006/12/14/Survey-for-Developer-Academy-07.aspx) about the upcoming big Microsoft Developer Conference in Israel on January 31. You can rank the top five talks you'd be interested in (it's in Hebrew) going to. I'm giving two talks there about Agile Development with Team System (taken directly from my TechEd Talks). I wonder how much interested people will have in them. In any case, there are many other great talks in there. [Check it out](http://blogs.microsoft.co.il/blogs/yosit/archive/2006/12/14/Survey-for-Developer-Academy-07.aspx)! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Dec 20, 2006 ### [Team Data and the Database publishing wizard](https://osherove.com/blog/2006/12/20/team-data-and-the-database-publishing-wizard.html) - Dec 14, 2006 ### [Catch me talking Agile at the Israeli .NET Architects user group](https://osherove.com/blog/2006/12/14/catch-me-talking-agile-at-the-israeli-net-architects-user-gr.html) - Dec 11, 2006 ### [Html Agility Pack](https://osherove.com/blog/2006/12/11/html-agility-pack.html) - Dec 9, 2006 ### [Unit Testing your ASP.NET Validators - Validation Everywhere](https://osherove.com/blog/2006/12/9/unit-testing-your-aspnet-validators-validation-everywhere.html) --- title: "What would you write about if you had an anonymous blog?" url: "https://osherove.com/blog/2006/12/13/what-would-you-write-about-if-you-had-an-anonymous-blog.md" canonical: "https://osherove.com/blog/2006/12/13/what-would-you-write-about-if-you-had-an-anonymous-blog.html" published: "2006-12-13T17:31:23" updated: "2006-12-13T17:31:23" tags: ["Off Topic"] author: "Roy Osherove" description: "What would you write about your job if you knew that no one could trace it back to you? I've toyed with that question myself a few times. Boy, the stuff I'd write if I had no accountability over it - could be quite…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What would you write about if you had an anonymous blog? By Roy Osherove December 13, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 13, 2006; technical details may be outdated. What would you write about your job if you knew that no one could trace it back to you? I've toyed with that question myself a few times. Boy, the stuff I'd write if I had no accountability over it - could be quite interesting, I tell you. Still I try to share at least the politically correct stuff here with you :) (on a brighter note, you can always leave an anonymous comment on this blog post, and write whatever you think you'd have said on that anonymous blog. It'd be an interesting read!) That's exactly the question [this guy is facing](http://blogs.microsoft.co.il/blogs/onemustcode/). He recently opened a blog, anonymously, at [blogs.microsoft.co.il](http://blogs.microsoft.co.il/) - and has been writing there for the past month or so. The idea is great. I'm not sure how he got them to do it, but it seems like he did, and I applaud the idea. The possibilities now are endless. Just take a look at a blog like [mini microsoft](http://minimsft.blogspot.com/) to see just how bold an daring you can be when your identity is hidden. Great things can happen, and great conversations can ensue. But I'm not sure this guy gets it just yet. The past month of his blog has been, to say it mildly, mild. That guy could have written that blog under his own name and still have the same things to say. He takes no chances. What's the point of writing an anonymous blog if you don't write things that **could get you fired** if someone found out? or things that would piss people off, but were absolutely true? Maybe he's planning on coming out with it at some point. Or maybe someone at his job already found out. That would suck. But let's assume neither. Not even writing that you hate your boss in an anonymous blog seems quite unreasonable, and although I realize this does not apply to most people, chances are that this guy does. So, if you were a team lead on a team, and you could write whatever you want, what would you write about? All the stuff you can't talk about in front of people, of course. The bad stuff. Where did you fail lately? what's your biggest hidden fear at work? at real life? if you could say one sentence to your customer, what would it be? What do you think your team says about you behind your back? What are the biggest risks in your project right now? Who would you fire right now if you could? Who would you hire ? Do you think you're a good lead? Really? What pisses you off the most at work? Answer one of these questions, and you're on the right track to exposure and bare bones truth. Right now, you're just another blogger. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 24, 2006 ### [Rest in peace, Doug Reilly](https://osherove.com/blog/2006/12/24/rest-in-peace-doug-reilly.html) - Dec 23, 2006 ### [Forget Google Hacks, Try Live Hacks](https://osherove.com/blog/2006/12/23/forget-google-hacks-try-live-hacks.html) - Dec 6, 2006 ### [How bad design can scare your children](https://osherove.com/blog/2006/12/6/how-bad-design-can-scare-your-children.html) - Oct 25, 2006 ### [MomPC - Creating a parent safe PC](https://osherove.com/blog/2006/10/25/mompc-creating-a-parent-safe-pc.html) --- title: "Html Agility Pack" url: "https://osherove.com/blog/2006/12/11/html-agility-pack.md" canonical: "https://osherove.com/blog/2006/12/11/html-agility-pack.html" published: "2006-12-11T14:23:17" updated: "2006-12-11T14:23:17" tags: [".NET", ".Net 2.0", "ASP.NET"] author: "Roy Osherove" description: "Now, this is cool if you do a lot of html parsing! You can tell I was drawn to it by the word \"Agile\" hidden in there. I guess \"Agile\" is the new black. It goes with everything. HtmlAgilityPack is an open source project…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Html Agility Pack By Roy Osherove December 11, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [ASP.NET](https://osherove.com/blog/category/asp-net) **Historical article** · Originally published December 11, 2006; technical details may be outdated. Now,[this is cool](http://blogs.msdn.com/joshch/archive/2006/12/10/better-html-parsing-and-validation-with-htmlagilitypack.aspx) if you do a lot of html parsing! You can tell I was drawn to it by the word "Agile" hidden in there. I guess "Agile" is the new black. It goes with everything. > [HtmlAgilityPack](http://www.codeplex.com/htmlagilitypack) is an open source project on CodePlex.  It provides standard DOM APIs and XPath navigation -- _even when the HTML is not well-formed!_ The post is more specifically talking about use cases for this when doing custom validation and extraction of text while doing Web Testing with Team System, but I can see this used in many other places. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Dec 14, 2006 ### [Catch me talking Agile at the Israeli .NET Architects user group](https://osherove.com/blog/2006/12/14/catch-me-talking-agile-at-the-israeli-net-architects-user-gr.html) - Dec 14, 2006 ### [Vote for the top talks to see at the upcoming MS Israeli Conference](https://osherove.com/blog/2006/12/14/vote-for-the-top-talks-to-see-at-the-upcoming-ms-israeli-con.html) - Dec 9, 2006 ### [Unit Testing your ASP.NET Validators - Validation Everywhere](https://osherove.com/blog/2006/12/9/unit-testing-your-aspnet-validators-validation-everywhere.html) - Nov 30, 2006 ### [New research shows SQL Server 2005 more secure than Oracle](https://osherove.com/blog/2006/11/30/new-research-shows-sql-server-2005-more-secure-than-oracle.html) --- title: "Custom Reports for Load Test Results from Team System" url: "https://osherove.com/blog/2006/12/10/custom-reports-for-load-test-results-from-team-system.md" canonical: "https://osherove.com/blog/2006/12/10/custom-reports-for-load-test-results-from-team-system.html" published: "2006-12-10T00:27:59" updated: "2006-12-10T00:27:59" tags: ["Team System", "Unit Testing"] author: "Roy Osherove" description: "Sean Lumley created some very nice custom reports about Load Testing Results from Team System located here . See Sean's post for more details." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Custom Reports for Load Test Results from Team System By Roy Osherove December 10, 2006 In [Team System](https://osherove.com/blog/category/team-system), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published December 10, 2006; technical details may be outdated. [Sean Lumley created](http://blogs.msdn.com/slumley/archive/2006/02/16/533356.aspx) some very nice custom reports about Load Testing Results from Team System [located here](http://www.gotdotnet.com/codegallery/releases/viewuploads.aspx?id=e96e012c-4eaf-4eda-ac26-34fb54e628e3). See [Sean's post](http://blogs.msdn.com/slumley/archive/2006/02/16/533356.aspx) for more details. ## More in Team System [All posts in Team System](https://osherove.com/blog/category/team-system) - Jan 28, 2007 ### [Using TFS Integrator to manage complex project dependencies](https://osherove.com/blog/2007/1/28/using-tfs-integrator-to-manage-complex-project-dependencies.html) - Dec 20, 2006 ### [Team Data and the Database publishing wizard](https://osherove.com/blog/2006/12/20/team-data-and-the-database-publishing-wizard.html) - Dec 10, 2006 ### [Macro - Workaround for VS 2005 unit testing build problem](https://osherove.com/blog/2006/12/10/macro-workaround-for-vs-2005-unit-testing-build-problem.html) - Dec 9, 2006 ### [Video: Implementing Continuous Integration: With and Without Team System](https://osherove.com/blog/2006/12/9/video-implementing-continuous-integration-with-and-without-t.html) --- title: "Macro - Workaround for VS 2005 unit testing build problem" url: "https://osherove.com/blog/2006/12/10/macro-workaround-for-vs-2005-unit-testing-build-problem.md" canonical: "https://osherove.com/blog/2006/12/10/macro-workaround-for-vs-2005-unit-testing-build-problem.html" published: "2006-12-10T00:13:21" updated: "2006-12-10T00:13:21" tags: ["Agile", "Agile Related", "Team System", "Unit Testing"] author: "Roy Osherove" description: "Sondre has a nice workaround for a very annoying problem with VS 2005 Unit Tests (aka Team Test) - When you run unit tests, the \"Build\" action is not performed on the unit testing project by default, so you have to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Macro - Workaround for VS 2005 unit testing build problem By Roy Osherove December 10, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Team System](https://osherove.com/blog/category/team-system), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published December 10, 2006; technical details may be outdated. [Sondre has a nice workaround](http://fanms.com/blogs/sondre/archive/2006/12/06/Easier-TDD-with-Visual-Studio-2005-_2800_Macro_2900_.aspx) for a very annoying problem with VS 2005 Unit Tests (aka Team Test) - When you run unit tests, the "Build" action is not performed on the unit testing project by default, so you have to manually invoke the build - which you keep forgetting to do. Annoying! Sondre's workaround will run a build on the current project, then build every project with the word "Test" contained inside it after the build is done. [Here's a direct link](http://fanms.com/files/folders/75/download.aspx) to the actual macro, but you will find detailed instructions on how to use it in [Sondre's post](http://fanms.com/blogs/sondre/archive/2006/12/06/Easier-TDD-with-Visual-Studio-2005-_2800_Macro_2900_.aspx). ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Dec 23, 2006 ### [The Agile Ambient Orb](https://osherove.com/blog/2006/12/23/the-agile-ambient-orb.html) - Dec 14, 2006 ### [Catch me talking Agile at the Israeli .NET Architects user group](https://osherove.com/blog/2006/12/14/catch-me-talking-agile-at-the-israeli-net-architects-user-gr.html) - Dec 9, 2006 ### [Video: Implementing Continuous Integration: With and Without Team System](https://osherove.com/blog/2006/12/9/video-implementing-continuous-integration-with-and-without-t.html) - Nov 17, 2006 ### [Scrum Certifications are Problematic](https://osherove.com/blog/2006/11/17/scrum-certifications-are-problematic.html) --- title: "Unit Testing your ASP.NET Validators - Validation Everywhere" url: "https://osherove.com/blog/2006/12/9/unit-testing-your-aspnet-validators-validation-everywhere.md" canonical: "https://osherove.com/blog/2006/12/9/unit-testing-your-aspnet-validators-validation-everywhere.html" published: "2006-12-09T23:57:22" updated: "2006-12-09T23:57:22" tags: [".NET", ".Net 2.0", "ASP.NET", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "heynemann just posted about a very nice and testable validation framework for ASP.NET called \" Validation Everywhere \". \"The Validation Everywhere project was born because I have a very complex UI that I need to unit…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing your ASP.NET Validators - Validation Everywhere By Roy Osherove December 9, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [ASP.NET](https://osherove.com/blog/category/asp-net), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published December 9, 2006; technical details may be outdated. heynemann [just posted](http://manicprogrammer.com/cs/blogs/heynemann/archive/2006/12/10/250.aspx) about a very nice and **testable** validation framework for ASP.NET called "[Validation Everywhere](http://www.codeplex.com/valever/Release/ProjectReleases.aspx?ReleaseId=1163)". > "The Validation Everywhere project was born because I have a very complex UI that I need to unit test. This UI is built using MVP Architecture (Powered by [NMVP](http://www.codeplex.com/nmvp)), but in ASP.Net it has a lot of Validators logic to perform UI Validation. Since this logic is extremely complex I need to unit test it. ?" > > [Example can be seen here](http://manicprogrammer.com/cs/blogs/heynemann/archive/2006/12/10/250.aspx). I'd highly recommend taking a look, mainly because if you do a lot of custom validation, or you simply have one validation with lots of logic in it, you would **want to make sure it works**.  the best way to do that is to write unit tests or it, which is hard to do when you have those things running under ASP.NET. The V.E framework releases you from that burden by separating concerns - running the validator under its own context, giving you a simple interface you need to implement in your own validator. Testable code is still not very easy to find. When a framework is written **specifically** with testability in mind, I'd take a long hard look at that. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Dec 14, 2006 ### [Vote for the top talks to see at the upcoming MS Israeli Conference](https://osherove.com/blog/2006/12/14/vote-for-the-top-talks-to-see-at-the-upcoming-ms-israeli-con.html) - Dec 11, 2006 ### [Html Agility Pack](https://osherove.com/blog/2006/12/11/html-agility-pack.html) - Nov 30, 2006 ### [New research shows SQL Server 2005 more secure than Oracle](https://osherove.com/blog/2006/11/30/new-research-shows-sql-server-2005-more-secure-than-oracle.html) - Nov 7, 2006 ### [SQL Refactor looks cool](https://osherove.com/blog/2006/11/7/sql-refactor-looks-cool.html) --- title: "Video: Implementing Continuous Integration: With and Without Team System" url: "https://osherove.com/blog/2006/12/9/video-implementing-continuous-integration-with-and-without-t.md" canonical: "https://osherove.com/blog/2006/12/9/video-implementing-continuous-integration-with-and-without-t.html" published: "2006-12-09T15:48:42" updated: "2006-12-09T15:48:42" tags: ["Agile", "Agile Related", "Team System"] author: "Roy Osherove" description: "Paul just alerted me to the fact that my TechEd Europe presentation on Continuous Integration with and without Team System is now available online at MSDN Showtime. Implementing Continuous Integration: With and Without…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: Implementing Continuous Integration: With and Without Team System By Roy Osherove December 9, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published December 9, 2006; technical details may be outdated. [Paul](http://weblogs.asp.net/pgielens/) just alerted me to the fact that my TechEd Europe presentation on Continuous Integration with and without Team System is now available online at MSDN Showtime. **Implementing Continuous Integration: With and Without Team System** _In this session we'll dive into a world where the system is built and run on a daily basis, and even on an hourly basis. We'll discuss Tools and Libraries that help you get there with VS 2003, 2005 and Team System. Even with Express tools - it's all possible, and ~more easy~easier than you think. ([more info here](http://weblogs.asp.net/rosherove/archive/2006/11/07/Agile-Development-Sessions-_2D00_-Slides-and-Demos-from-TechEd.aspx))_ [Here's where you can see a preview and the full talk](http://www.microsoft.com/emea/msdnshowtime/sessionh.aspx?videoid=327) (You may need to login with your windows live ID, which is why I put the second link after this one) [Here's the direct URL](http://msexp.streamnavig.com/msexp/player.asp?e=E0068&s=0337_en_w&f=0337_en&uid=00067FFE8647AA45&lng=en&cou=msdn) to see the (high definition) video without registration **Related Downloads:** - **Demos** for the Continuous Integration talk (including the registration tool for event notifications I demonstrated) [can be found here](http://files.osherove.com/vsts/demos-VSTS.zip). - **TeamSub**:  I made a separate [download of TeamSub](http://files.osherove.com/vsts/TeamSub.zip) - A tool I created by extending an existing tool (I cannot remember the source of it, sorry!). It allows easily registering web services for event notifications without needing to use a command line.  (if you download the VSTS-Demos, it's already in there included) - **Notification Web Service templates** [can be found here](http://projectdistributor.net/Projects/Project.aspx?projectId=206). - **Continuous Integration web service**  - the CI.MSI setup file [can be found here](http://blogs.vertigosoftware.com/teamsystem/archive/2006/07/03/Setting_up_Continuous_Integration_with_Team_Build.aspx). **Some points you'll see in the talk:** - When I show the first automated build, I miconfigure it. Then I get in trouble when I want to change the build configuration easily. Instead, I choose to create a whole new build type because it would be faster. Today I would have solved it with [this free addin](http://www.attrice.info/cm/tfs/TeamBuildAddin.htm) by Attrice. More info [here](http://weblogs.asp.net/rosherove/archive/2006/11/13/Managing-team-build-files-sucks-a-little-less-with-Attrice-SideKick-for-VSTS.aspx). - I'm using [Zoomit](http://www.microsoft.com/technet/sysinternals/Miscellaneous/ZoomIt.mspx) to zoom into the slides and demos I'm showing. A very handy tool. Though I did find that for the people sitting close to the screen, too much zooming may cause sea sickness... sorry :) - I talk about how the MSBuild team used Test Driven Development to create MSBuild. [Here's an audio interview I did with Kieran Mockford](http://weblogs.asp.net/rosherove/archive/2005/03/28/396040.aspx), a PM on that team about that subject. - They cut my song from the end! How uncool is that? :( It's always a bit funny to see yourself on a talk using video. I always see many flaws in myself. I'm pretty sure I'm a little cross-eyed on that video, actually. And I look way too much at my slide for help. I couldn't bear to watch it all... ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Dec 14, 2006 ### [Catch me talking Agile at the Israeli .NET Architects user group](https://osherove.com/blog/2006/12/14/catch-me-talking-agile-at-the-israeli-net-architects-user-gr.html) - Dec 10, 2006 ### [Macro - Workaround for VS 2005 unit testing build problem](https://osherove.com/blog/2006/12/10/macro-workaround-for-vs-2005-unit-testing-build-problem.html) - Nov 17, 2006 ### [Scrum Certifications are Problematic](https://osherove.com/blog/2006/11/17/scrum-certifications-are-problematic.html) - Nov 17, 2006 ### [Scrum Vs. XP - Why Scrum is easier to sell](https://osherove.com/blog/2006/11/17/scrum-vs-xp-why-scrum-is-easier-to-sell.html) --- title: "BSDAgile - Team System Project Template for Extreme Programming" url: "https://osherove.com/blog/2006/12/8/bsdagile-team-system-project-template-for-extreme-programmin.md" canonical: "https://osherove.com/blog/2006/12/8/bsdagile-team-system-project-template-for-extreme-programmin.html" published: "2006-12-08T17:55:44" updated: "2006-12-08T17:55:44" tags: ["Team System", "Unit Testing"] author: "Roy Osherove" description: "Now, how come I didn't notice this one before? BSDAgile - BSDAgile is a Methodology Template for Visual Studio Team System (VSTS). It is intended to provide an ultra-lightweight process for people building software in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BSDAgile - Team System Project Template for Extreme Programming By Roy Osherove December 8, 2006 In [Team System](https://osherove.com/blog/category/team-system), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published December 8, 2006; technical details may be outdated. Now, how come I didn't notice this one before? [BSDAgile](http://workspaces.gotdotnet.com/bsdagile) - BSDAgile is a Methodology Template for Visual Studio Team System (VSTS). It is intended to provide an ultra-lightweight process for people building software in small teams using VSTS. It promotes the idea of starting with a very simple process and then adding complexity as it’s needed. People who are doing Extreme Programming may find this a better starting point than MSF Agile. What's important to note here is the list of the members on this project. I recognize at least two of them as leaders in the Agile field which I highly respect: - [Jim Newkirk](http://blogs.msdn.com/jamesnewkirk/default.aspx) Jim is one of the original authors of NUnit, and works at Microsoft's _~P&P~_ [CodePlex](http://www.codeplex.com/) team these days. - [Randy Miller](http://weblogs.asp.net/rosherove/archive/2005/07/28/420919.aspx) This is one the folks behind the MSF (Microsoft Solutions Framework) Ethnology and MSF Agile In particular, which is one of the "out of the box" methodologies in VSTS. I did a very interesting interview with Randy a while back, which you can still listen to. [See here for details](http://weblogs.asp.net/rosherove/archive/2005/07/28/420919.aspx). ## More in Team System [All posts in Team System](https://osherove.com/blog/category/team-system) - Dec 10, 2006 ### [Macro - Workaround for VS 2005 unit testing build problem](https://osherove.com/blog/2006/12/10/macro-workaround-for-vs-2005-unit-testing-build-problem.html) - Dec 9, 2006 ### [Video: Implementing Continuous Integration: With and Without Team System](https://osherove.com/blog/2006/12/9/video-implementing-continuous-integration-with-and-without-t.html) - Dec 4, 2006 ### [Hello DataDude! Team System for Database Professionals is RTM](https://osherove.com/blog/2006/12/4/hello-datadude-team-system-for-database-professionals-is-rtm.html) - Nov 27, 2006 ### [TFS Permission Manager Tool](https://osherove.com/blog/2006/11/27/tfs-permission-manager-tool.html) --- title: "I screwed up with a client. Here's what I've learned." url: "https://osherove.com/blog/2006/12/6/i-screwed-up-with-a-client-heres-what-ive-learned.md" canonical: "https://osherove.com/blog/2006/12/6/i-screwed-up-with-a-client-heres-what-ive-learned.html" published: "2006-12-06T16:13:09" updated: "2006-12-06T16:13:09" tags: ["Other", "Project Management"] author: "Roy Osherove" description: "Several days ago I finished a very angry phone call from one of my clients. They were letting me know how disappointed they were in me for letting them down, and how I just cost them a whole bunch of money and time for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I screwed up with a client. Here's what I've learned. By Roy Osherove December 6, 2006 In [Other](https://osherove.com/blog/category/other), [Project Management](https://osherove.com/blog/category/project-management) **Historical article** · Originally published December 6, 2006; technical details may be outdated. Several days ago I finished a very angry phone call from one of my clients. They were letting me know how disappointed they were in me for letting them down, and how I just cost them a whole bunch of money and time for nothing. They were right. I screwed up. I’ve been running [my own little business](http://www.teamagile.com/) for over two years now. I’ve had ups and downs, and I’ve learned plenty by just trying to do things, but an angry client who I’ve completely let down is something that I never faced until this week. So, I’m writing this down to, first, flush out my feelings and thoughts about what happened, so that I can learn from it, and to share stuff that you might want to avoid when you deal with your own clients. I’ve already done work for this client over a year ago, doing a TDD class for their employees, and doing some coaching afterwards. They were pretty happy, and since then have begun doing Agile development in many ways, including daily builds and unit tests. A couple months ago they called me up and wanted to talk about making an overall plan to teach TDD to new employees, and order a whole bunch of coaching hours from me (150+ hours for me– that’s a lot in one order!). We began negotiating the payments and were heading in the right direction, including creating a lesson and coaching plan. It’s important to say that in the past few months I’ve been getting busier and busier. I’ve taken on a new role at [Sela](http://www.selagroup.co.il/), heading off the Team System Area there, and have several clients I tend to on a weekly or bi-weekly basis. Add to that a baby that’s on the way (we’re due this month!) and you’ve got yourself a schedule, bub. All that busy schedule didn’t stop me from letting my client think that I can easily insert 150+ hours plus a 3 day course in the course on the next 2-4 months. By "letting them think" I mean I didn't tell them I **couldn't** do it.  I’m not really sure why. In some respects, I was trying to be really optimistic about this, and I let my mind concentrate on the financial aspect of the deal, rather than make sure I can actually go through with it. It didn’t even occur to me that I may not have enough time resources to do this. And so, the client and I were just about to finish our final signing of the deal. I was home, It was late at night, and I had only one last document that I needed to send my client to finalize the deal.  Then I looked at my calendar. Really hard. The more I looked I realized that there is no way in hell that I can make my client happy without crashing down practically everything else in my life that’s scheduled. Crap. So I sat down and wrote an email saying something like this: “Before we sign this deal, I just want to make sure that you realize the time constraints that I am under. I can only provide X days per X weeks, Starting from Date Z. Let me know that this is OK with you and we’ll finalize this”. At the time I thought I was the right thing to do (and it was, but the timing was off by more than a month!) The next day I get a call from my client. “Um, Roy?” he said hesitantly, as if there was still a chance he may have gotten a misdirected email, or that it was all a big joke. “Can you please explain to me what you wrote?” I did. And then he calmly explained to me that what I just did was a very bad way of doing business. That I cannot draw people on at the last moment and **then** let them know there is a problem. That they’ve already allocated a budget for this and now there’s no real way to turn that budget into something else. That the document I was about to sign was merely a formality – they’ve already started planning the dates for the week after that (the course was to be schedule that month). that the current availability I was offering was far from what they need and expect. That I had screwed up big time. I had nothing smart to say. So I listened and listened ,and apologized over an over. “How can I fix this?” I asked, but there was no easy way. Talk about a stupid question. I even tried to ring up my colleague who helps me with these courses and asked him if he could help put out the fire on this, share the time at the client with me. Before that I asked the client if he’s be willing to meet my colleague and discuss adding him to the mix to help. That might have solved it. But my colleague didn’t have the resources available either. I had to tell the client the next day that this simply isn’t going to happen. We finished that phone call on a very unhappy note. They haven’t called back since, and the feeling is, they won’t. So here’s what I did – I took an existing happy customer, and made him very unhappy, enough to make other customers not use my services because I was very unprofessional in the way I handled myself with them. Since this is the first time this has happened to me, the only thing left to do now is try to learn from that (oh so) big mistake, thus make sure that it will also be the last time this mistake happens. What lessons have I learned? - **Not saying something to your client is saying something as well**. I didn’t say that my schedule is packed when I just began because I was thinking too much about my own interests, but I ended up hurting everyone by not talking about it as early as possible. - **Managing risks should be part of any customer negotiation** – I could have made a simple list of things that could go wrong with the work I was asked to do when we just started talking about it. It should have been a conscious act by me to try and see any possible problems of the work I will be doing with that customer. I didn’t – so It was easier for me to “ignore” any red flags that popped up whenever I opened my calendar. - **You can’t say “yes” to everything**. It’s better to have a few happy customers than many unsatisfied ones. I was on the verge of going from the first to the second. I need to learn to say “no” when I can’t, or to say that I can only do this at a much later date. And I need to learn to say it **as early as possible**. - **If you find you’re spread too thin, the only way to get more work is to get more people to do the work for you**. I don’t have many people who can help me with what I do. It’s unfortunate. Good people with knowledge of methodology are really hard to find. This is something I am still struggling with. **Why am I posting this?** It may seem weird that I’m posting this kind of thing on a blog, where potential customers can actually read this, so let me explain why I’ve decided to do so: - This blog has a very big part in helping me get to where I am and do well in the job I love. It was meant to be a way to vent things out, and I intend to keep it that way. It’s not meant to me a “marketing” blog. It’s my life. It’s only fair that you get to read about the screwups as well as the things that go well. - You learn the most from screwing up. By writing this and making it public I’m claiming responsibility and maybe someone else can learn from my mistakes. - If you’re a customer(or even **that** customer), I’m also in a way trying to show that I plan for this to be the last time I make those mistakes. Yes, I’ll make other mistakes, but I’ll try to make sure each mistake I make only happens once.. - I’m an ego maniac and I think you all find an interest in the private and professional life of a geek who lives far away from you, in Israel. What other lessons should I learn from this experience? ## More in Other [All posts in Other](https://osherove.com/blog/category/other) - Jan 22, 2007 ### [New Job - Looking for New People!](https://osherove.com/blog/2007/1/22/new-job-looking-for-new-people.html) - Jan 2, 2007 ### [Baby Osherove - Born 28-12-06](https://osherove.com/blog/2007/1/2/baby-osherove-born-28-12-06.html) - Sep 3, 2004 ### [Review - JetBrains Resharper](https://osherove.com/blog/2004/9/3/review-jetbrains-resharper.html) - Jun 16, 2004 ### [BackgroundWorker implementation -in C#](https://osherove.com/blog/2004/6/16/backgroundworker-implementation-in-c.html) --- title: "How bad design can scare your children" url: "https://osherove.com/blog/2006/12/6/how-bad-design-can-scare-your-children.md" canonical: "https://osherove.com/blog/2006/12/6/how-bad-design-can-scare-your-children.html" published: "2006-12-06T15:18:44" updated: "2006-12-06T15:18:44" tags: ["Off Topic"] author: "Roy Osherove" description: "I forgot how funny ThisIsBroken.Com can be sometimes! From here : Broken : Warning on Hasbro pony toy \" Adults take note: Pony comes unassembled in box with head detached. You may wish to not open the box around your…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How bad design can scare your children By Roy Osherove December 6, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 6, 2006; technical details may be outdated. I forgot how funny [ThisIsBroken.Com](http://www.thisisbroken.com/) can be sometimes! From [here](http://www.thisisbroken.com/b/2006/11/furreal_friends.html): **Broken**: Warning on Hasbro pony toy ![](https://osherove.com/img/wb/87088dec_www.thisisbroken.com_b_images_hfr76471.jpg) "**Adults take note:** Pony comes unassembled in box with head detached. You may wish to not open the box around your children if they may be frightened by a box with a decapitated horse inside." ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 23, 2006 ### [Forget Google Hacks, Try Live Hacks](https://osherove.com/blog/2006/12/23/forget-google-hacks-try-live-hacks.html) - Dec 13, 2006 ### [What would you write about if you had an anonymous blog?](https://osherove.com/blog/2006/12/13/what-would-you-write-about-if-you-had-an-anonymous-blog.html) - Oct 25, 2006 ### [MomPC - Creating a parent safe PC](https://osherove.com/blog/2006/10/25/mompc-creating-a-parent-safe-pc.html) - Oct 18, 2006 ### [Nothing to do with Vista](https://osherove.com/blog/2006/10/18/nothing-to-do-with-vista.html) --- title: "Extended Unit Test Attributes for Team System" url: "https://osherove.com/blog/2006/12/5/extended-unit-test-attributes-for-team-system.md" canonical: "https://osherove.com/blog/2006/12/5/extended-unit-test-attributes-for-team-system.html" published: "2006-12-05T05:08:47" updated: "2006-12-05T05:08:47" tags: ["Unit Testing"] author: "Roy Osherove" description: "Justin Burtch just posted a handful of cool attributes that extend the basic testing attributes within Team System's unit test framework. Some of those include [Rollback] - to rollback DB changes after the test…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Extended Unit Test Attributes for Team System By Roy Osherove December 5, 2006 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published December 5, 2006; technical details may be outdated. [Justin Burtch just posted](http://jburtch.spaces.live.com/Blog/cns!F1960C7173E954EA!285.entry) a handful of cool attributes that extend the basic testing attributes within Team System's unit test framework. Some of those include \[Rollback\] - to rollback DB changes after the test \[TimedTest\] - fail if time expires \[EnvironmentVariable\] - Set Env.. var to a value for the duration of the test \[ParameterizedDataMethod\] - kinda like MbUnit RowTest Very cool Justin! ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Dec 9, 2006 ### [Unit Testing your ASP.NET Validators - Validation Everywhere](https://osherove.com/blog/2006/12/9/unit-testing-your-aspnet-validators-validation-everywhere.html) - Dec 8, 2006 ### [BSDAgile - Team System Project Template for Extreme Programming](https://osherove.com/blog/2006/12/8/bsdagile-team-system-project-template-for-extreme-programmin.html) - Nov 25, 2006 ### [Solving "An error occurred while enlisting in a distributed transaction" error when using Rollback Attribute or COM+ in unit tests](https://osherove.com/blog/2006/11/25/solving-ampquotan-error-occurred-while-enlisting-in-a-distri.html) - Nov 7, 2006 ### [Agile Development Sessions - Slides and Demos from TechEd](https://osherove.com/blog/2006/11/7/agile-development-sessions-slides-and-demos-from-teched.html) --- title: "Hello DataDude! Team System for Database Professionals is RTM" url: "https://osherove.com/blog/2006/12/4/hello-datadude-team-system-for-database-professionals-is-rtm.md" canonical: "https://osherove.com/blog/2006/12/4/hello-datadude-team-system-for-database-professionals-is-rtm.html" published: "2006-12-04T13:12:57" updated: "2006-12-04T13:12:57" tags: ["Team System"] author: "Roy Osherove" description: "From Matt Nunn \"On Friday 1st December 2006 the development team officially announced that Data Dude was done and was being released to manufacture. It should be available for download to MSDN subscribers on December…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hello DataDude! Team System for Database Professionals is RTM By Roy Osherove December 4, 2006 In [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published December 4, 2006; technical details may be outdated. From [Matt Nunn](http://blogs.msdn.com/mattnunn/archive/2006/12/04/we-have-rtm-d-visual-studio-2005-team-edition-for-database-professionals-releases-to-manufacturing.aspx) > "On Friday 1st December 2006 the development team officially announced that Data Dude was done and was being released to manufacture. It should be available for download to MSDN subscribers on December 7th 2006 and generally available for purchase on January 1st 2007." This is great news. I gave a 30 minutes talk today at a [QA Gathering](http://www.sbc.co.il/pcmag/qa/qa.htm) in Israel about this tool, and how it enables better testing scenarios coupled with the whole lifecycle management idea that is team system. The more I invest time in this tool(team system as a whole, and data dude in particular), the more I realize that some amazing work has been done to revolutionize the "traditional" ways in which Microsoft Oriented development teams work to produce software today. The inclusion of the DBA in the development cycle is nothing less that inspiring, and will solve many problems for many people. The inclusion of database tests, refactoring and work item management from within the tool is jaw dropping considering the efforts people go through today (those who bother to to do this right) to make this happen with existing tools. The notion of configuration management the the daily build in the cycle, and connection to tests and work items is one of the most powerful things about this system, and I was truly excited to show demos of this today. It's funny - the shorter your presentation is (30 minutes in this case), the harder you work on it. You try to conceptualize the points you want to make across, how you'll do it, how to sum up very large concepts in very short paragraphs (quick - what's Team System in 3 sentences or less?), and what demos fit in the allotted time frame. oh, and it should be **interesting**. No wonder I was working on this until 4 am for a couple of days until I had this set right in my mind. And then, you get on stage, and it's over quicker than you ever imagined. all you're left with is the adrenaline rush, and people asking for your business card. DataDude is awesome and will open a whole new market of possibilities. Did I mention [I'm looking for a great DBA](http://weblogs.asp.net/rosherove/archive/2006/11/25/i-m-looking-for-a-great-dba.aspx)? :) ## More in Team System [All posts in Team System](https://osherove.com/blog/category/team-system) - Dec 9, 2006 ### [Video: Implementing Continuous Integration: With and Without Team System](https://osherove.com/blog/2006/12/9/video-implementing-continuous-integration-with-and-without-t.html) - Dec 8, 2006 ### [BSDAgile - Team System Project Template for Extreme Programming](https://osherove.com/blog/2006/12/8/bsdagile-team-system-project-template-for-extreme-programmin.html) - Nov 27, 2006 ### [TFS Permission Manager Tool](https://osherove.com/blog/2006/11/27/tfs-permission-manager-tool.html) - Nov 17, 2006 ### [TeamLook Integrates Into Team System Projects From Outlook](https://osherove.com/blog/2006/11/17/teamlook-integrates-into-team-system-projects-from-outlook.html) --- title: "HnD - Open source forums and support backed by LLBLGen 2.0" url: "https://osherove.com/blog/2006/12/4/hnd-open-source-forums-and-support-backed-by-llblgen-20.md" canonical: "https://osherove.com/blog/2006/12/4/hnd-open-source-forums-and-support-backed-by-llblgen-20.html" published: "2006-12-04T12:06:22" updated: "2006-12-04T12:06:22" tags: ["ASP.NET", "Cool Tools"] author: "Roy Osherove" description: "Frans Bouma , one of the people I highly respect in the blogsphere as an architect and ISV (Built LLBLGen - one of the strongest ORMs out there for .NET) Just released HnD , which stands for Help and Discuss - an open…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # HnD - Open source forums and support backed by LLBLGen 2.0 By Roy Osherove December 4, 2006 In [ASP.NET](https://osherove.com/blog/category/asp-net), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published December 4, 2006; technical details may be outdated. [Frans Bouma](http://weblogs.asp.net/fbouma/archive/2006/12/04/free-open-source-forum-customer-support-system-released-for-asp-net-2-0-hnd.aspx), one of the people I highly respect in the blogsphere as an architect and ISV (Built LLBLGen - one of the strongest ORMs out there for .NET) Just released [HnD](http://www.llblgen.com/HnD/), which stands for _Help and Discuss - an open source forum and support system built on top of LLGBLGen data access._ "Yesterday, we released [HnD](http://www.llblgen.com/HnD/), which stands for _Help and Discuss_, our own customer support system and forums software! HnD has been released as free, open source software under the GPL v2 and uses ASP.NET 2.0, SqlServer and uses [LLBLGen Pro](http://www.llblgen.com/) v2.0 power for 100% of the data-access functionality. ![](https://osherove.com/img/wb/b619816e_www.xs4all.nl__perseus_smileys_smileyregular.gif)" I'd highly recommend taking a look at the code and seeing what they did in there, design choinces, and see what LLBLGen is really capable of. ## More in ASP.NET [All posts in ASP.NET](https://osherove.com/blog/category/asp-net) - Dec 11, 2006 ### [Html Agility Pack](https://osherove.com/blog/2006/12/11/html-agility-pack.html) - Dec 9, 2006 ### [Unit Testing your ASP.NET Validators - Validation Everywhere](https://osherove.com/blog/2006/12/9/unit-testing-your-aspnet-validators-validation-everywhere.html) - Oct 14, 2006 ### [Introducing Perf+ , A better perfmon](https://osherove.com/blog/2006/10/14/introducing-perf-a-better-perfmon.html) - Jun 20, 2006 ### [Four cool books to give away at today's C# user group](https://osherove.com/blog/2006/6/20/four-cool-books-to-give-away-at-todays-c-user-group.html) --- title: "Software architects - glorified fashion designers?" url: "https://osherove.com/blog/2006/12/1/software-architects-glorified-fashion-designers.md" canonical: "https://osherove.com/blog/2006/12/1/software-architects-glorified-fashion-designers.html" published: "2006-12-01T17:14:09" updated: "2006-12-01T17:14:09" tags: ["Architecture", "General Software Devel..."] author: "Roy Osherove" description: "In the movie “ The Devil wears Prada ” the opening title shows our main character as she is happily getting ready for her first day at a new job – assistant at a big fashion magazine. As she gets ready for her day, the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Software architects - glorified fashion designers? By Roy Osherove December 1, 2006 In [Architecture](https://osherove.com/blog/category/architecture), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published December 1, 2006; technical details may be outdated. In the movie “[The Devil wears Prada](http://www.imdb.com/title/tt0458352/)” the opening title shows our main character as she is happily getting ready for her first day at a new job – assistant at a big fashion magazine. As she gets ready for her day, the movie contrasts her preparations with those of other busy bees -- ones that are closely tied to the fashion industry – models, secretaries and other people with lots of fashion sense. Our hero, Andy, though, has no fashion sense what so ever. She wears “normal” clothes, eats “real” food, and looks down on the world of high fashion as she first encounters it and makes its first steps inside it. (if you haven’t seen the movie – there’s a spoiler later on – read at your own risk!). The movie takes great care in emphasizing the great differences between “mere humans” and the fashion industry. Here are some things it lets the audience think about the two different worlds: **Fashion designers :** - Feel as if they are far superior to anyone not using their own fashion standards - Only mingle with their own kind - Feel that they are changing people’s lives with their creations - Create clothes the are not meant for humans, and prices accordingly - Treat “new flesh” with disdain until they prove themselves worthy - Hold fashion shows and meet up to discuss the latest trends - Live a horrible life committing themselves to modern slavery - Are rewarded with glamour, their idea of a dream job, acceptance, part of a very small group - Do not eat – keep in shape as part of the standards they enforce on others, except the top dogs. They are old, wise and simply nod their head to make people realize what the important next thing to do is **Real people:** - Eat - Have fun - Some of them aspire to get and use the things created by fashion designers - But usually end up using either cheap knock offs or just plain clothes - Have a social life - Treat whatever goes on in the fashion world as a different world with different standards and rules. - Anyone gone over to the fashion world cannot continue to coexist with the “real people” – they will have to sell their souls. Funnily enough, I kept finding more and more correlations between the world of fashion and the world of high level software architecture. (many of this can also be attributed to the auto industry). Bear with me here. Let’s take a look at the [latest version of the Architecture Journal from Microsoft](http://www.architecturejournal.net/2006/issue9/). I’m using it as an example of many other places that have the same “features”. Just like in the fashion industry’s fashion shows, the ideas presented here are - high level. sometimes even just conceptual. Not meant for the average company to deal with. - Most shops and developers will find it hard to use these ideas in their day to day work, or even grasp the entire concepts defined in these articles. That’s because they are meant for other architects to understand and use to lead the way in their own projects – they are not meant for “mere humans”. They are, in a way, setting fashion. - The people who write those articles, write it for many reasons, but getting recognition and trying out new ideas are up there at the top. They normally either don’t do real day to day work, or if they do, they do it at a very high level. (there are always exceptions, of course) The articles presented in that journal are deep, insightful, but, let’s face it, too heavy for most developers and even self proclaimed architects to read. It’s not on purpose. The people writing that journal are aiming high because that’s the language that they want to speak in. In one of the best scenes in the movie, Andy (our hero lady who works with Miranda, the hellish boss who runs the fashion magazine) gets a hard lesson about her connection to the fashion world: **[Miranda Priestly](http://www.imdb.com/name/nm0000658/)**: \[_Miranda and some assistants are deciding between two similar belts for an outfit. Andy hides a little smile because she thinks they look exactly the same_\] Something funny? **[Andy Sachs](http://www.imdb.com/name/nm0004266/)**: No, no, nothing. Y'know, it's just that both those belts look exactly the same to me. Y'know, I'm still learning about all this stuff. **[Miranda Priestly](http://www.imdb.com/name/nm0000658/)**: This... 'stuff'? Oh... ok. I see, you think this has nothing to do with you. You go to your closet and you select out, oh I don't know, that lumpy blue sweater, for instance, because you're trying to tell the world that you take yourself too seriously to care about what you put on your back. But what you don't know is that that sweater is not just blue, it's not turquoise, \[_it's not [lapis](http://www.answers.com/lapis&r=67),_\] **[Miranda Priestly](http://www.imdb.com/name/nm0000658/)**: it's actually [cerulean](http://www.answers.com/cerulean). You're also blindly unaware of the fact that in 2002, Oscar De La Renta did a collection of cerulean gowns. And then I think it was Yves St Laurent, wasn't it, who showed cerulean military jackets? And then cerulean quickly showed up in the collections of 8 different designers. Then it filtered down through the department stores and then trickled on down into some tragic casual corner where you, no doubt, fished it out of some clearance bin. However, that blue represents millions of dollars and countless jobs and so it's sort of comical how you think that you've made a choice that exempts you from the fashion industry when, in fact, you're wearing the sweater that was selected for you by the people in this room. From a pile of stuff. And herein lies another big truth about the software industry: - It takes a long time for the ideas in the journal to trickle down into the masses, and be implemented in one way or another. In many cases, people don’t even realize that they are using and implementing ideas using technology or ideas that very smart people worked many hours in their ivory towers to create and present at just such architecture journals a year (or five) ago. Sure, it’s easy to say “I’m not that much into architecture – that’s too high level for me” – but the truth is you **use** architecture all the time. You might as well learn something about it. - Only a handful of projects in the world use the ideas presented in such journals as a whole. The reality just won’t fit into a neat little box of one single problem as architects would like it to. And to tailor the right solution to such a project requires people at such a high level it’s almost impossible to see people who’ve actually done it or seen it done. - Many who try to use the ideas in these journals end up getting burned, or know in advance this is time or money down the drain (the benefit will be way smaller than that promised) There are some basic differences between the software and the fashion world: - Fashion designers build creative things just to see what happens. Software architects try to solve real existing problems, or even solve future problems that have not yet manifested in the industry. They are, in a sense, pioneering the field every day. Fashion designers would love to think they are the same, but they are merely re-solving the same issue – be creative while making loads of money. The clothing issue is long solved. - Software architects make waaay less money. However they affect just as many people as fashion.. The next time you run into a high level article about SOA, SCA or other [TLA](http://www.google.com/search?hl=en&lr=&pwst=1&defl=en&q=define:TLA&sa=X&oi=glossary_definition&ct=title)s, accept the fact that it may feel a bit condescending, theoretical, or not applicative to your world of work. You may very well see the face of the future in there. Then again, it may just be another [fashion nightmare](http://static.flickr.com/22/25974635_74a9e4c616_m.jpg). ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Feb 25, 2007 ### [FxCop is heading in the wrong direction - No testability whatsoever](https://osherove.com/blog/2007/2/25/fxcop-is-heading-in-the-wrong-direction-no-testability-whats.html) - Dec 14, 2006 ### [Catch me talking Agile at the Israeli .NET Architects user group](https://osherove.com/blog/2006/12/14/catch-me-talking-agile-at-the-israeli-net-architects-user-gr.html) - Aug 6, 2006 ### [2 Day Architecture & SOA Course - Sound Interesting?](https://osherove.com/blog/2006/8/6/2-day-architecture-amp-soa-course-sound-interesting.html) - Jul 23, 2006 ### [Hibernate may violate "Object model mapping and runtime engine" patent](https://osherove.com/blog/2006/7/23/hibernate-may-violate-quotobject-model-mapping-and-runtime-e.html) --- title: "New research shows SQL Server 2005 more secure than Oracle" url: "https://osherove.com/blog/2006/11/30/new-research-shows-sql-server-2005-more-secure-than-oracle.md" canonical: "https://osherove.com/blog/2006/11/30/new-research-shows-sql-server-2005-more-secure-than-oracle.html" published: "2006-11-30T18:11:39" updated: "2006-11-30T18:11:39" tags: [".NET", "SQL Server"] author: "Roy Osherove" description: "Could it be true? A research shows that there were no security flaw fixes in SQL 2005 since its release (it does not show non-fixed flaws) compared to Oracle. Is Microsoft's Secure Development Lifecycle initiative…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New research shows SQL Server 2005 more secure than Oracle By Roy Osherove November 30, 2006 In [.NET](https://osherove.com/blog/category/net), [SQL Server](https://osherove.com/blog/category/sql-server) **Historical article** · Originally published November 30, 2006; technical details may be outdated. [Could it](http://bloggingabout.net/blogs/dennis/archive/2006/11/22/Secure-databases-_3A00_-SQL-Server-vs.-Oracle.aspx) be true? A research shows that there were no security flaw fixes in SQL 2005 since its release (it does not show non-fixed flaws) compared to Oracle. Is Microsoft's Secure Development Lifecycle initiative paying off? From [the article](http://www.databasesecurity.com/dbsec/comparison.pdf) \[PDF\]: "When you look at the graphs, Oracle was pretty secure in the past, but since 2005 the number of security flaws has increased immensely. When we look at the previous SQL Server versions, less security flaws were reported over the years. When we look at SQL Server 2005, **it hasn't had a single security flaw reported since launch**." Seems hard to believe, actually. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Dec 11, 2006 ### [Html Agility Pack](https://osherove.com/blog/2006/12/11/html-agility-pack.html) - Dec 9, 2006 ### [Unit Testing your ASP.NET Validators - Validation Everywhere](https://osherove.com/blog/2006/12/9/unit-testing-your-aspnet-validators-validation-everywhere.html) - Nov 7, 2006 ### [SQL Refactor looks cool](https://osherove.com/blog/2006/11/7/sql-refactor-looks-cool.html) - Oct 22, 2006 ### [How to run web services and sites on the same box as sharepoint (avoiding "404 Page Not Found" errors)](https://osherove.com/blog/2006/10/22/how-to-run-web-services-and-sites-on-the-same-box-as-sharepo.html) --- title: "Cool Promotion - Automise for $20 for 24h window" url: "https://osherove.com/blog/2006/11/28/cool-promotion-automise-for-20-for-24h-window.md" canonical: "https://osherove.com/blog/2006/11/28/cool-promotion-automise-for-20-for-24h-window.html" published: "2006-11-28T17:35:34" updated: "2006-11-28T17:35:34" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "A little bird tells me that in a few hours you'll be able to get Automise (that's the system admin's version of FinalBuilder - my favorite build automation tool) over here for a 90% discount - less than $20 instead of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool Promotion - Automise for $20 for 24h window By Roy Osherove November 28, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published November 28, 2006; technical details may be outdated. A little bird tells me that in a few hours you'll be able to get [Automise](http://www.automise.com/automise.aspx) (that's the system admin's version of FinalBuilder - my favorite build automation tool) [over here](http://www.bitsdujour.com/) for a 90% discount - less than $20 instead of $195 for a 24 hour window. That's a good way to draw attention to yourself :) **[![Automise IDE](https://osherove.com/img/wb/0a4aaaad_www.automise.com_Portals_0_images_Automise_20IDE_20Small.png)](http://www.automise.com/automise-screenshots.aspx)** As a happy [FinalBuilder](http://www.automise.com/finalbuilder.aspx) user I can tell you that Automise is the same, only without the compiler and version control support (great for sys admin's)- oh, and it's $20 bucks! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Dec 21, 2006 ### [Total Commander - The Ultimate File Manager?](https://osherove.com/blog/2006/12/21/total-commander-the-ultimate-file-manager.html) - Dec 4, 2006 ### [HnD - Open source forums and support backed by LLBLGen 2.0](https://osherove.com/blog/2006/12/4/hnd-open-source-forums-and-support-backed-by-llblgen-20.html) - Nov 27, 2006 ### [TFS Permission Manager Tool](https://osherove.com/blog/2006/11/27/tfs-permission-manager-tool.html) - Nov 12, 2006 ### [Managing team build files sucks a little less with Attrice SideKick for VSTS](https://osherove.com/blog/2006/11/12/managing-team-build-files-sucks-a-little-less-with-attrice-s.html) --- title: "TFS Permission Manager Tool" url: "https://osherove.com/blog/2006/11/27/tfs-permission-manager-tool.md" canonical: "https://osherove.com/blog/2006/11/27/tfs-permission-manager-tool.html" published: "2006-11-27T23:46:58" updated: "2006-11-27T23:46:58" tags: ["Cool Tools", "Team System"] author: "Roy Osherove" description: "Leon just posted a new tool he developed called \"TFS Permission Manager\" for managing Team Foundation Server permissions in an easier fashion. Way to go! Here are some benefits in the tool: \"Using this tool you can: Add…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TFS Permission Manager Tool By Roy Osherove November 27, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published November 27, 2006; technical details may be outdated. [Leon just posted](http://blogs.microsoft.co.il/files/folders/leon/entry5018.aspx) a new tool he developed called "TFS Permission Manager" for managing Team Foundation Server permissions in an easier fashion. Way to go! Here are some benefits in the tool: > "Using this tool you can: > > - Add or remove TFS group membership, Reporting Services role membership and SharePoint role membership > - Set Server and Project-level permissions > - Set AreaPath and Source Control permissions > - Create new TFS users with permissions identical to those of specified existing user > - Save user permissions as template and use it later to create new or update existing users. " ![](https://osherove.com/img/wb/f3591ed4_blogs.microsoft.co.il_files_folders_5022_download.aspx) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Dec 4, 2006 ### [HnD - Open source forums and support backed by LLBLGen 2.0](https://osherove.com/blog/2006/12/4/hnd-open-source-forums-and-support-backed-by-llblgen-20.html) - Nov 28, 2006 ### [Cool Promotion - Automise for $20 for 24h window](https://osherove.com/blog/2006/11/28/cool-promotion-automise-for-20-for-24h-window.html) - Nov 12, 2006 ### [Managing team build files sucks a little less with Attrice SideKick for VSTS](https://osherove.com/blog/2006/11/12/managing-team-build-files-sucks-a-little-less-with-attrice-s.html) - Nov 7, 2006 ### [SQL Refactor looks cool](https://osherove.com/blog/2006/11/7/sql-refactor-looks-cool.html) --- title: "I'm looking for a great DBA!" url: "https://osherove.com/blog/2006/11/25/im-looking-for-a-great-dba.md" canonical: "https://osherove.com/blog/2006/11/25/im-looking-for-a-great-dba.html" published: "2006-11-25T16:28:37" updated: "2006-11-25T16:28:37" tags: [] author: "Roy Osherove" description: "I'm looking for a DBA (SQL required, oracle is a plus) to join my team at Sela and become a guru on the DB Developer side of Team System. This person needs to have several years experience as DBA in real projects. Your…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm looking for a great DBA! By Roy Osherove November 25, 2006 **Historical article** · Originally published November 25, 2006; technical details may be outdated. I'm looking for a DBA (SQL required, oracle is a plus) to join my team at Sela and become a guru on the DB Developer side of Team System. This person needs to have several years experience as DBA in real projects. Your job will be to learn and become an expert on everything that is [Data Dude](http://msdn2.microsoft.com/en-us/teamsystem/aa718764.aspx). You will present and train clients, research solutions, create courses (and teach them), present at conferences, and will be getting to be part of a highly trained task force that deals with Team System. If you're interested, send your CV to **Royo At Sela.co.il** ! --- title: "Solving "An error occurred while enlisting in a distributed transaction" error when using Rollback Attribute or COM+ in unit tests" url: "https://osherove.com/blog/2006/11/25/solving-ampquotan-error-occurred-while-enlisting-in-a-distri.md" canonical: "https://osherove.com/blog/2006/11/25/solving-ampquotan-error-occurred-while-enlisting-in-a-distri.html" published: "2006-11-25T14:14:01" updated: "2006-11-25T14:14:01" tags: ["Unit Testing"] author: "Roy Osherove" description: "One of the things I'm most proud of creating is XtUnit , which allows Rolling back the effects of a unit test against a database. (which really means its an integration test - maybe we should call these hybrids \"coded…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Solving "An error occurred while enlisting in a distributed transaction" error when using Rollback Attribute or COM+ in unit tests By Roy Osherove November 25, 2006 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published November 25, 2006; technical details may be outdated. One of the things I'm most proud of creating is [XtUnit](http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx), which allows Rolling back the effects of a unit test against a database. (which really means its an integration test - maybe we should call these hybrids "coded tests"?) [MbUnit](http://build.mutantdesign.co.uk/builds/) added the same attribute to its core attribute set and now people are starting to get weird errors sometimes when using the rollback attribute: "**An error occurred while enlisting in a distributed transaction**" [Steven Harman has a good explanation](http://stevenharman.net/blog/archive/2005/12/28/MbUnitCOMTransactions.aspx) of what you should do when you get this error. > "This attribute works by enlisting a COM+ 1.5 transaction from the local Distributed Transaction Coordinator (DTC). This in and of itself is not an issue, but it does cause problems when the db you're trying to access sits on a remote server, as in my case. The COM+ 1.5 transaction attempts to use [Transaction Internet Protocol](http://support.microsoft.com/kb/908620) (TIP) to access the remote SQL server. The problem is that Win2k3 Server & WinXP Pro SP2 both disable TIP by default. > The solution: Enable & Configure TIP on BOTH the remote server and the local dev box. Here's how:" [Read the exact steps here](http://stevenharman.net/blog/archive/2005/12/28/MbUnitCOMTransactions.aspx). \[via [Andrew](http://weblogs.asp.net/astopford/archive/2006/11/25/setting-up-for-mbunit-database-rollback.aspx)\] ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Dec 8, 2006 ### [BSDAgile - Team System Project Template for Extreme Programming](https://osherove.com/blog/2006/12/8/bsdagile-team-system-project-template-for-extreme-programmin.html) - Dec 5, 2006 ### [Extended Unit Test Attributes for Team System](https://osherove.com/blog/2006/12/5/extended-unit-test-attributes-for-team-system.html) - Nov 7, 2006 ### [Agile Development Sessions - Slides and Demos from TechEd](https://osherove.com/blog/2006/11/7/agile-development-sessions-slides-and-demos-from-teched.html) - Oct 15, 2006 ### [MassDataHandler: generate test data to help with data layer testing](https://osherove.com/blog/2006/10/15/massdatahandler-generate-test-data-to-help-with-data-layer-t.html) --- title: "I'm looking for a great tester to work with me" url: "https://osherove.com/blog/2006/11/19/im-looking-for-a-great-tester-to-work-with-me.md" canonical: "https://osherove.com/blog/2006/11/19/im-looking-for-a-great-tester-to-work-with-me.html" published: "2006-11-19T04:25:58" updated: "2006-11-19T04:25:58" tags: [] author: "Roy Osherove" description: "I'm looking for great people to help me drive the Team System Field which I am running through Sela . The first thing we need is someone who can become our Testing with Team System Guru. More jobs will come later.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm looking for a great tester to work with me By Roy Osherove November 19, 2006 **Historical article** · Originally published November 19, 2006; technical details may be outdated. I'm looking for great people to help me drive the Team System Field which I am running through [Sela](http://www.sela.co.il/). The first thing we need is someone who can become our Testing with Team System Guru. More jobs will come later. **Hardcore testing, web testing and load testing with Team System** You don't need previous team system knowledge, just previous testing knowledge and the urge to learn cool new powerful things. You live in Israel and can work in Ramat Gan (where Sela is located). You like to be at the top of what you do. You're not scared of working on the bleeding edge. You read blogs about Testing. You have at least one book about testing at home. You've done automated Testing before and you know your way around other automated tools. Now's your chance to learn and master the Team System Testing tools suite. You'll be the guru we'll turn to when we need something done, or something created to make some bizarre test condition work.  You'll be consulting to clients, creating materials, maybe even blogging about it if you want to. You'll do proof of concepts for hard testing challenges, lots of research on the latest materials and overall have a great deal of fun going deep into team system testing features. You know how to program with .NET (2.0) and you're not afraid of learning on your own, or even creating short courses on the subject. We may need you to do some public speaking - so if you want to - that's a big plus. Not a must. if you're interested you can send me an email with your CV to \[email removed\] with the subject \[Tester Job\]. This position can be full or half time (full time preferred) - we only need 1 person for this job. --- title: "MVPs Week - Full week of hardcore training from Experts4D" url: "https://osherove.com/blog/2006/11/19/mvps-week-full-week-of-hardcore-training-from-experts4d.md" canonical: "https://osherove.com/blog/2006/11/19/mvps-week-full-week-of-hardcore-training-from-experts4d.html" published: "2006-11-19T03:27:56" updated: "2006-11-19T03:27:56" tags: ["Community"] author: "Roy Osherove" description: "Great news for the Israeli Dev Crowd! I've known Ohad Israeli for more than a couple of years now - we met when I worked at Magen as a consultant. He's a great guy with great knowledge and abilities. Now Ohad is partner…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MVPs Week - Full week of hardcore training from Experts4D By Roy Osherove November 19, 2006 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published November 19, 2006; technical details may be outdated. Great news for the Israeli Dev Crowd! I've known [Ohad Israeli](http://weblogs.asp.net/israelio/) for more than a couple of years now - we met when I worked at Magen as a consultant. He's a great guy with great knowledge and abilities. Now Ohad is partner with [Eyal Vardi](http://blogs.microsoft.co.il/blogs/vardi/), another talented individual, and together they created [Experts4d.com](http://experts4d.com/) - their own consulting gig here in Israel. Their first step - [MVP Week](http://experts4d.com/events/). What a great idea! This feels like something that should happen once or twice a year (which Ohad promises to try and do). They get MVPs from various areas to talk about the subjects they know best about. That's some of the best training you can buy, I'd say. One of the people talking there is [Justin Angel](http://blogs.microsoft.co.il/blogs/justinangel//),  a new MVP with great passion and knowledge. If you want to see him in action, [check out his talk on SQL 2005](http://blogs.microsoft.co.il/blogs/justinangel/archive/2006/11/18/my-4_2F00_12_2F00_2006-Lecture_3A00_-Upgrading-To-SQL-Server-2005-for-developers-_2800_level-300_2900_.aspx) at the upcoming SQL Users \\group here in Israel. I'm still hoping I can give a day there, but there are various "political" issues that need to be dealt with before that's going to happen, unfortunately. I'll let you know. ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Feb 3, 2007 ### [Feedback on the Israel Microsoft Developer Academy?](https://osherove.com/blog/2007/2/3/feedback-on-the-israel-microsoft-developer-academy.html) - Jan 29, 2007 ### [Catch me speaking at DevTeach](https://osherove.com/blog/2007/1/29/catch-me-speaking-at-devteach.html) - Nov 17, 2006 ### [Final updates on Israeli Blogger Dinner on Monday](https://osherove.com/blog/2006/11/17/final-updates-on-israeli-blogger-dinner-on-monday.html) - Oct 19, 2006 ### [MSDN Premium auction for Africa](https://osherove.com/blog/2006/10/19/msdn-premium-auction-for-africa.html) --- title: "Scrum Certifications are Problematic" url: "https://osherove.com/blog/2006/11/17/scrum-certifications-are-problematic.md" canonical: "https://osherove.com/blog/2006/11/17/scrum-certifications-are-problematic.html" published: "2006-11-17T15:38:48" updated: "2006-11-17T15:38:48" tags: ["Agile"] author: "Roy Osherove" description: "I said that Scrum is easier to sell , and I meant its easier to sell to the client, but one of the few things I don't agree with is the whole notion of the Scrum Certification Course . I think the a lot the problems…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scrum Certifications are Problematic By Roy Osherove November 17, 2006 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published November 17, 2006; technical details may be outdated. I said that [Scrum](http://www.controlchaos.com/about) is [easier to sell](http://weblogs.asp.net/rosherove/archive/2006/11/17/scrum-vs-xp-why-scrum-is-easier-to-sell.aspx), and I meant its easier to sell to the client, but one of the few things I don't agree with is the whole notion of the [Scrum Certification Course](http://www.controlchaos.com/certification/). I think the a lot the [problems people have with Agile Development practices](http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html) may be attributed to the idea of "bottling" Agile and creating certifications for parts of it. It's a great way to make good money, but certifying people as Scrum Master is not something I could trust a couple of days at a workshop to do. Yes - it can teach them a lot, but a good Scrum Master (or just a team lead, in plain speak) is someone who not only knows the "rules" - but someone with experience, knowledge of the team and mostly with an Agile mind. Frankly, if you have someone with those skills, they don't really need a certification - they can take a "course" and still be just as good. It feels too much like commercializing the practices of good team management and software practices (much like MSF Certifications - sooner or later you may find that people [are going about it all wrong](http://www.testking.com/MSF-certification-training.htm))  and that's why people feel that all you're trying to do is make a buck on their backs instead of really trying to help. I think it needs to keep being a "grassroots" kinda thing, and only then can people still somehow "trust" that this isn't just a buzz. Just like any certification - managers tend to just on these things and say "ok - all we need to to "certify" 3 people here in the org. to do this, and we're home free". There's a disaster waiting to happen - if people aren't ready to accept this change, or if you send in the wrong people. Certification does not guarantee anything but a certification. A course is a better description for it - because it only means you learned something - it does not actually mean you can go and do it tomorrow. There are many talented people I know who have done Scrum Certifications - it does not mean they can't do they're job - I just think they could have done they're job just as well without that "certificate" to begin with. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Dec 10, 2006 ### [Macro - Workaround for VS 2005 unit testing build problem](https://osherove.com/blog/2006/12/10/macro-workaround-for-vs-2005-unit-testing-build-problem.html) - Dec 9, 2006 ### [Video: Implementing Continuous Integration: With and Without Team System](https://osherove.com/blog/2006/12/9/video-implementing-continuous-integration-with-and-without-t.html) - Nov 17, 2006 ### [Scrum Vs. XP - Why Scrum is easier to sell](https://osherove.com/blog/2006/11/17/scrum-vs-xp-why-scrum-is-easier-to-sell.html) - Nov 7, 2006 ### [Agile Development Sessions - Slides and Demos from TechEd](https://osherove.com/blog/2006/11/7/agile-development-sessions-slides-and-demos-from-teched.html) --- title: "Scrum Vs. XP - Why Scrum is easier to sell" url: "https://osherove.com/blog/2006/11/17/scrum-vs-xp-why-scrum-is-easier-to-sell.md" canonical: "https://osherove.com/blog/2006/11/17/scrum-vs-xp-why-scrum-is-easier-to-sell.html" published: "2006-11-17T15:22:55" updated: "2006-11-17T15:22:55" tags: ["Agile"] author: "Roy Osherove" description: "One of the things I talked about during my Pre-con sessions ate TechEd Barcelona was how to Implement Scrum using Team System and the Scrum For Team System Project Template. I like XP , but I really like Scrum as a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scrum Vs. XP - Why Scrum is easier to sell By Roy Osherove November 17, 2006 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published November 17, 2006; technical details may be outdated. One of the things I talked about during my Pre-con sessions ate TechEd Barcelona was how to Implement Scrum using Team System and the [Scrum For Team System](http://www.scrumforteamsystem.com/) Project Template. I like [XP](http://www.extremeprogramming.org/), but I really like [Scrum](http://www.controlchaos.com/about/) as a methodology for several reasons: - It's pretty open to customization > It talks about the iterations planning, release planning and solely lies in the real of management practices. It says nothing about Engineering practices (besides Estimation) - leaving much leg room to do whatever you want during an iteration. You can also change your mind about the way you work between iterations if something does not suit you.  - It does not contain the word "Extreme" in its name > This is a really important thing. You see, eXtreme Programming, when compared to Scrum, is really a superset of the Scrum methodology in many ways  - it contains all of the management ideas of Scrum (short iterations, estimation, communication, simplicity and feedback, but is also adds the layer of engineering practices that is missing from Scrum (Unit testing and TDD, Pair programming, Continuous Integration etc..). But it's naming is a real problem. > > It's a lot easier showing Scrum as a methodology to management than XP, because it "sounds" very extreme, although many of the concepts are the same.  With scrum I can always say "lets start with short iterations and daily meetings (Scrums) and see what happens next. I can then **add XP practices** into the Scrum mix incrementally. Because Scrum does not talk about them, people will be less scared of trying things out, and it won't feel as extreme anymore. With XP I need to explain the initial effort to begin with, and always worry that people will be too scared of a change that might be too big for them. > > Sure, you can try to implement XP slowly , practice by practice, but the overall feeling is that your overall changes will be much bigger. > > With Scrum it's a syntactical, very subtle notion of change. So it's easy to digest for people who may fear change. Every successful Agile project I've seen has used a combination of practices from several methodologies (you can always attribute some to XP and Some to Scrum, or just XP) - they always create their own version of e methodology 9 it's nether Scrum or XP, ("ScrumP" ? "Xrum" ?) - it's a mutant methodology that fits what that organization or team can do right now. Forcing it any other way will usually lead to failure in adoption - people don't like to be forced to do things they don't think will work - they need to choose to do it. They do whatever they think they need to do anyway - they may just **tell** management they do things like they are told. When I interview companies, the managers always think that they people under them work in a specific way. Interviewing the actual people who do the work usually shows a very different picture - that of people making stuff work **despite** the rules given, not **because** of them. It's really enlightening. In a "Jurassic park" sort of theme you could say that "Life always finds a way" - people figure out what will make them do what they need to get done, regardless of the obstacles in their path. Send emails instead of filling forms, having a watercooler chat instead of sending an email, walking across the building instead of making a phone call - using a whiteboard instead of Rational Rose - those sorts of things. Life finds a way to exist in the harsh world of constraints we live in - it will be foolish to kid ourselves into thinking that just telling people to work a certain way will actually make them do it correctly. They need to want to do it that certain way first. And that's all there is to it really. Gather a group of highly motivated people in a room - lock them up and give them whatever they need to get a task done and remove obstacles, and wait until they have finished. That's the basic premise behind all productive teams. It's the "how do I give them what they need" that changes between methodologies, really. How do you give them better communication with the client and understand requirements? How do you make sure they stay focused (closed iterations where nothing can change), how do yo help them deal with change (teach them about unit testing, TDD and Continuous Integration) etc etc.. Anyway. I'm writing this post because I remembered that I used a comic from [ImplementingScrum.Com](http://www.implementingscrum.com/cartoons/index.html) in my session at TechEd (with permission). Here's the Comic I used (my favorite): [![www.implementingscrum.com -- Cartoon -- September 26, 2006](https://osherove.com/img/wb/54178a7e_www.implementingscrum.com_images_060922-scrumtoon.jpg)](http://www.implementingscrum.com/) There are more cartoons there for your reading pleasure. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Dec 9, 2006 ### [Video: Implementing Continuous Integration: With and Without Team System](https://osherove.com/blog/2006/12/9/video-implementing-continuous-integration-with-and-without-t.html) - Nov 17, 2006 ### [Scrum Certifications are Problematic](https://osherove.com/blog/2006/11/17/scrum-certifications-are-problematic.html) - Nov 7, 2006 ### [Agile Development Sessions - Slides and Demos from TechEd](https://osherove.com/blog/2006/11/7/agile-development-sessions-slides-and-demos-from-teched.html) - Oct 15, 2006 ### [MassDataHandler: generate test data to help with data layer testing](https://osherove.com/blog/2006/10/15/massdatahandler-generate-test-data-to-help-with-data-layer-t.html) --- title: "Final updates on Israeli Blogger Dinner on Monday" url: "https://osherove.com/blog/2006/11/17/final-updates-on-israeli-blogger-dinner-on-monday.md" canonical: "https://osherove.com/blog/2006/11/17/final-updates-on-israeli-blogger-dinner-on-monday.html" published: "2006-11-17T14:55:01" updated: "2006-11-17T14:55:01" tags: ["Community", "Community News"] author: "Roy Osherove" description: "Omer has an update on the the Blogger Dinner this coming Monday ( read it all here in Hebrew) : Monday 21:00 Papagayo (Azriely center Tel Aviv - Kosher) 10-15 people are coming! I'm defiantly there! Yosi - hope I'll see…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Final updates on Israeli Blogger Dinner on Monday By Roy Osherove November 17, 2006 In [Community](https://osherove.com/blog/category/community), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published November 17, 2006; technical details may be outdated. Omer has an update on the the Blogger Dinner this coming Monday ([read it all here](http://blogs.microsoft.co.il/blogs/omer/archive/2006/11/16/4539.aspx) in Hebrew) : **Monday 21:00** **Papagayo** (Azriely center Tel Aviv - Kosher) 10-15 people are coming! I'm defiantly there! [Yosi](http://blogs.microsoft.co.il/blogs/yosit/) - hope I'll see you there :) **If you want to come as well**, [contact Omer through this link and tell him](http://blogs.microsoft.co.il/blogs/omer/contact.aspx). P.S - MS Israel is looking for new people to help with .NET Adoption. Yosi has more details [here](http://blogs.microsoft.co.il/blogs/yosit/archive/2006/11/16/we-want-you-on-our-team.aspx). It's a cool job if you can make it:) ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Jan 29, 2007 ### [Catch me speaking at DevTeach](https://osherove.com/blog/2007/1/29/catch-me-speaking-at-devteach.html) - Nov 19, 2006 ### [MVPs Week - Full week of hardcore training from Experts4D](https://osherove.com/blog/2006/11/19/mvps-week-full-week-of-hardcore-training-from-experts4d.html) - Oct 19, 2006 ### [MSDN Premium auction for Africa](https://osherove.com/blog/2006/10/19/msdn-premium-auction-for-africa.html) - Sep 6, 2006 ### [Influence the next Microsoft Israel Conference](https://osherove.com/blog/2006/9/6/influence-the-next-microsoft-israel-conference.html) --- title: "How to waste time with people you highly respect" url: "https://osherove.com/blog/2006/11/17/how-to-waste-time-with-people-you-highly-respect.md" canonical: "https://osherove.com/blog/2006/11/17/how-to-waste-time-with-people-you-highly-respect.html" published: "2006-11-17T14:21:27" updated: "2006-11-17T14:21:27" tags: [] author: "Roy Osherove" description: "What do you do if you happen to be sitting at the same table with David Chappell (SOA and architecture guru), Steve Swartz (Architect for BizTalk and in charge of many many people at MS) and Clemens Vasters…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to waste time with people you highly respect By Roy Osherove November 17, 2006 **Historical article** · Originally published November 17, 2006; technical details may be outdated. What do you do if you happen to be sitting at the same table with [David Chappell](http://www.davidchappell.com/) (SOA and architecture guru), Steve [Swartz](http://www.mseventseurope.com/TechEd/06/Pre/Static/Developers/speaker.aspx?id=21735)(Architect for BizTalk and in charge of many many people at MS) and [Clemens Vasters](http://staff.newtelligence.net/clemensv/)(Architecture Guru)? After the speaker dinner at TechEd EU Barcelona(traditional dinner where speakers gather at the end of the conference to talk about how cool we think we are and pat each other on the back, while eating good food), a bunch of us decided to head down to the beach front and find a nice club to sit or maybe dance a little in. **Update** \- OK, that sentence came out way to cynically - it's a great event where presenters are thanked for their hard work and devotion to the subjects, and awards are presented for best speaker scores etc. It's also there so we can thank the event organizers for all of their really hard work in making this happen and work smoothly. Still - you can't really beat the amount of Ego present in that single room at some point - it's Huge. Can't say I didn't enjoy every minute though- I'm corrupt just like the best of 'em.. [Udi](http://www.udidahan.com/) and myself ended up in the same table as David,Clemens and Steve for a reason unknown to us. We thought this would be a great opportunity to talk shop with some of the industry's most brilliant guys, when suddenly Steve mentioned something about pianos and harpsichords - to which David Chappell responded with a mesmerized look. at that point they started talking to what seems like forever about tunes,sounds, past years and favorite bands and basically everything that is not "shop". Hell, Clemens Vasters was right there looking at both of them, helplessly trying to join in the conversation, but not really succeeding. They were going at it like two ladies at a hair salon - and they were loving every minute of it. At some point Udi asked David something about [SCA](http://www.ibm.com/developerworks/library/specification/ws-sca/). When David started answering him, Steve cut off the conversation midway saying "_geeks! do not talk shop now_!" or something of that sort. I was amazed at how the opportunity to listen to something really interesting had just vanished so quickly, and realized that my mind was beginning to wander as they, yet **again,** started talking about pianos and music. Don't get me wrong, I **like** music, but that was a conversation that even if I really wanted to I couldn't contribute to. These were two dinosaurs talking about the "old days" and comparing flutes and harmonicas. If you'd hear two regular joes on the street talking about these things you'd be inclined to hit them on the head with a frying pan to make them stop. It's really the far far equivalent of having Rembrandt over for dinner and have him talk about nothing but cooking all evening: You're glad he's just there with you, you wish he'd talk about what he does every day, but you don't want to alienate him and seem like a crazed freak who just wants to talk shop and drive him out of your house. In short -  A big waste of time for shop-talk, although a good time was had by all nonetheless - it **was** a bar, there **were** girls hanging around looking pretty and drunk, and we were all relaxed after finishing what seemed like a great conference. It's at times like this you get to know the person behind the celebrity and all that (and they are great people! David in particular - Steve Swartz is - kinda tough for my taste) but hey - if you get the opportunity to talk to people who shape so much of your technical worlds and beliefs up close and personal  - you can't blame me for feeling almost cheated out of a good conversation :) I even told them what I thought - they both replied they totally understand, at which point the conversation turned to other matters, not music - but then again - anything but shop talk. Udi was seriously looking for a fight that night, so while Steve Swartz (aka No-Tech-Talk-Cop) went to get a beer he started telling Clemens, who was standing by just trying to get some interesting conversation out of these guys, some thoughts he had on SOA and stuff like that. He got in about 17 words before Clemens stopped him mid sentence and said something (and I'm paraphrasing here) like "oh you are SO wrong!". He then started out telling Udi all he knows about SOA, and then Steve Swartz came back, interfered again  - stopping the conversation completely. I was pretty drunk at that time so I was just having fun watching sparks fly. Seriously - it was a lovely conversation, and good times were had by all. Just do yourselves a favor - if you find yourself in a table with someone who you feel it's one of your best chances to have a conversation with - beware - Steve may be listening ;) --- title: "TeamLook Integrates Into Team System Projects From Outlook" url: "https://osherove.com/blog/2006/11/17/teamlook-integrates-into-team-system-projects-from-outlook.md" canonical: "https://osherove.com/blog/2006/11/17/teamlook-integrates-into-team-system-projects-from-outlook.html" published: "2006-11-17T13:57:46" updated: "2006-11-17T13:57:46" tags: ["Team System"] author: "Roy Osherove" description: "TeamLook looks like a great way to Integrate Team System Projects into everyday outlook so that anyone who needs to can see it from something that's always open on their desks: Outlook. \" Personify Design TeamLook™…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TeamLook Integrates Into Team System Projects From Outlook By Roy Osherove November 17, 2006 In [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published November 17, 2006; technical details may be outdated. [TeamLook](http://www.personifydesign.com/products/teamlook/discover.aspx) looks like a great way to Integrate Team System Projects into everyday outlook so that anyone who needs to can see it from something that's always open on their desks: Outlook. > "**Personify Design TeamLook™** extends Microsoft Outlook so that all stakeholders in a software project can communicate more effectively and gain accurate visibility into project status. TeamLook™ connects to Visual Studio 2005 Team Foundation Server and enables users to view WorkItems, Reports, and other artifacts stored in their Visual Studio 2005 Team System installations. With constant synchronization TeamLook™ functions in a similar manner to other Microsoft Outlook features, reducing training costs and enabling organizations to realize immediate productivity gains. " ## More in Team System [All posts in Team System](https://osherove.com/blog/category/team-system) - Dec 4, 2006 ### [Hello DataDude! Team System for Database Professionals is RTM](https://osherove.com/blog/2006/12/4/hello-datadude-team-system-for-database-professionals-is-rtm.html) - Nov 27, 2006 ### [TFS Permission Manager Tool](https://osherove.com/blog/2006/11/27/tfs-permission-manager-tool.html) - Nov 12, 2006 ### [Managing team build files sucks a little less with Attrice SideKick for VSTS](https://osherove.com/blog/2006/11/12/managing-team-build-files-sucks-a-little-less-with-attrice-s.html) - Nov 7, 2006 ### [Agile Development Sessions - Slides and Demos from TechEd](https://osherove.com/blog/2006/11/7/agile-development-sessions-slides-and-demos-from-teched.html) --- title: "Israeli Blogger Dinner Next Week" url: "https://osherove.com/blog/2006/11/14/israeli-blogger-dinner-next-week.md" canonical: "https://osherove.com/blog/2006/11/14/israeli-blogger-dinner-next-week.html" published: "2006-11-14T01:42:23" updated: "2006-11-14T01:42:23" tags: ["Community News"] author: "Roy Osherove" description: "Omer took it upon himself to organize a blogger Dinner here in Israel. so write this down: November 20 (next week, Monday), 21:00 - somewhere Kosher. I am totally there! Details to be found on Omer's blog (write…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israeli Blogger Dinner Next Week By Roy Osherove November 14, 2006 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published November 14, 2006; technical details may be outdated. [Omer](http://blogs.microsoft.co.il/blogs/omer/archive/2006/11/14/4467.aspx) took it upon himself to organize a blogger Dinner here in Israel. so write this down: November 20 (next week, Monday), 21:00 - somewhere Kosher. I am totally there! Details to be found on [Omer's blog](http://blogs.microsoft.co.il/blogs/omer/archive/2006/11/14/4467.aspx) (write comments there if you have suggestions for places to eat!) ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Dec 14, 2006 ### [Vote for the top talks to see at the upcoming MS Israeli Conference](https://osherove.com/blog/2006/12/14/vote-for-the-top-talks-to-see-at-the-upcoming-ms-israeli-con.html) - Nov 17, 2006 ### [Final updates on Israeli Blogger Dinner on Monday](https://osherove.com/blog/2006/11/17/final-updates-on-israeli-blogger-dinner-on-monday.html) - Oct 19, 2006 ### [MSDN Premium auction for Africa](https://osherove.com/blog/2006/10/19/msdn-premium-auction-for-africa.html) - Oct 2, 2006 ### [My sessions at TechEd Europe 2006](https://osherove.com/blog/2006/10/2/my-sessions-at-teched-europe-2006.html) --- title: "Managing team build files sucks a little less with Attrice SideKick for VSTS" url: "https://osherove.com/blog/2006/11/12/managing-team-build-files-sucks-a-little-less-with-attrice-s.md" canonical: "https://osherove.com/blog/2006/11/12/managing-team-build-files-sucks-a-little-less-with-attrice-s.html" published: "2006-11-12T23:54:10" updated: "2006-11-12T23:54:10" tags: ["Cool Tools", "Team System"] author: "Roy Osherove" description: "Oh, I could have seriously used the Team System Add-on from Attrice's SideKick project last week at TechEd when one of my Demos Broke. The add-in allows version control operations for selected build type to be performed…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Managing team build files sucks a little less with Attrice SideKick for VSTS By Roy Osherove November 12, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published November 12, 2006; technical details may be outdated. Oh, I could have seriously used the [Team System Add-on from Attrice's SideKick project](http://www.attrice.info/cm/tfs/TeamBuildAddin.htm) last week at TechEd when one of my Demos Broke. > The add-in allows version control operations for selected build type to be performed in Team Explorer. It provides the following commands: > > - _Check out_ selected build type .proj file with single click > - _Edit_ checked out build type either in Visual Studio or in user's editor of choice > - _Check in_ modified build type files with single click > - _Undo_ check in on build type files > - _Configure_ what editor will be used for editing .proj files and additional add-in options I was showing how to create an automated build in VSTS, and I mistyped the address of the deployment location of the final binaries. The thing about VSTS right now is that it's still a 1.0 product - so it's a bit...  (crappy shell we say?) missing features in some places - such as to tell you when you mistyped locations, or even provide you with "browse" buttons to specify directories. Also, if you want to edit a build configuration file you need to first check it out from source control (which can be a very annoying task as it is not enabled by default in the source control explorer's selected workspace - you need to create a workspace specifically to edit a team build file!!##!), edit it, and check it in - and there is no menu context item to do that. I literally had to create a whole new build in the middle of a demo just because it would have taken longer to edit the existing one. That's what I mean by version 1.0 product. If I had Attrice's addin installed, I could have solved the issue in about 15 seconds - which, considering the fact that it is totally free, and you can download the source as well, is pretty cool. Thanks Attrice dudes! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Nov 28, 2006 ### [Cool Promotion - Automise for $20 for 24h window](https://osherove.com/blog/2006/11/28/cool-promotion-automise-for-20-for-24h-window.html) - Nov 27, 2006 ### [TFS Permission Manager Tool](https://osherove.com/blog/2006/11/27/tfs-permission-manager-tool.html) - Nov 7, 2006 ### [SQL Refactor looks cool](https://osherove.com/blog/2006/11/7/sql-refactor-looks-cool.html) - Oct 15, 2006 ### [MassDataHandler: generate test data to help with data layer testing](https://osherove.com/blog/2006/10/15/massdatahandler-generate-test-data-to-help-with-data-layer-t.html) --- title: "Que Sera Sera - How was TechEd Developers Europe?" url: "https://osherove.com/blog/2006/11/12/que-sera-sera-how-was-teched-developers-europe.md" canonical: "https://osherove.com/blog/2006/11/12/que-sera-sera-how-was-teched-developers-europe.html" published: "2006-11-12T12:47:58" updated: "2006-11-12T12:47:58" tags: [] author: "Roy Osherove" description: "Yosi just posted the video if me singing \"Que Sera Sera - the project moved overseas\" in front of 630 people. One of the scarier things I've done - and one of the most fun at the same time. It came at the end of a talk…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Que Sera Sera - How was TechEd Developers Europe? By Roy Osherove November 12, 2006 **Historical article** · Originally published November 12, 2006; technical details may be outdated. [Yosi just posted the video](http://blogs.microsoft.co.il/blogs/yosit/archive/2006/11/10/Last-day-at-Barcelona-a-video-of-the-new-rock-star-Roy-Osherove.aspx) if me singing "Que Sera Sera - the project moved overseas" in front of 630 people. One of the scarier things I've done - and one of the most fun at the same time. It came at the end of a talk about Agile Development Concepts and methodologies that I had on day 1 of Tech-Ed Europe in Barcelona last week. I've had 3 other songs which should be popping out soon in unexpected places. I'll refer you to them when I see them :) TechEd was a blast. In terms of the goals I had at TechEd - I pretty much fulfilled most of them (not listed by order of priority!): - Be seen. I certainly feel I have done that. With a full,  pre-conference day on Agile Development and Team System, a panel with the .NET Rocks guys, a couple of chalks talks and 2 breakouts  - overall I'd say I've had some high visibility (the guitar helped too). Like it or not - as a speaker and consultant - this is one of the things that helps me get more jobs, more recognition and better opportunities. Plus - I really like doing it - my added bonus :) - Meet with some old friends - met lots of them! - Have good sessions that will be remembered and get good scores (scores are really important in TechEd EU - they decide if you get invited next year or not). The scores for my breakout sessions were between 7.73 and 7.83 out of 9 which is very decent. I'm somewhere in the top 25 sessions of TechEd last time I checked - with speakers like Andres Hijlsberg, Rafal and Kimberly tripp have 2-3 talks in the top 25 as well, way above me - so I'm feeling pretty good about myself right about now. - Learn new things while making the sessions. I always make it a point to do at least one session about  topics which I haven't totally mastered yet - that way I am forced to learn them in a very deep way - because there is no pressure like that of having to present something to a crowd, In my case it was Team System Extensibility and Continuous Integration with Team System. A topic I knew, but not deeply enough. Now I know it pretty deep. - Networking. This is one of the things that you can do in shows like TechEd when you are a speaker in a very hard-core way. The reason is simple - the speaker lounge. It's that place speakers gather to check emails, prepare for talks and generally "live" when they are at the conference center. So you get to talk to people who's books are usually on your shelf over lunch (I recommend lunch with Andres Hijlsberg..) In terms of networking I had a blast and I met (or met again) many people who can help influence my progress in the conferencing world. Yes - politics do play a role here, but I must admit that most people are very fun to be with! I'd hang out with them regardless (I don't hang out with people who I don't respect anyway - politics or not) - New opportunities. I've gotten some interesting leads and new opportunities for speaking and consulting while I was there. It's part of the networking process really. It was a good show all around! Here's a little interesting tidbit - how important are scores? There is a big Plasma TV located at the speaker lounge - it lists the top 15 scores of all breakout sessions. SO you often see speakers go there and see if their name is on the list, and if it has gone up or down on it. out of about 15 slots visible at the top of the page visible on the TV - there were only about 6-8 speakers (some speakers had several sessions in the top 15 which explains it. You can see some of your favorite speakers go to check out that board to see how they are doing - kinda like a friendly competition. The winner gets a nice little present at the end of the conference in a special speaker dinner that is arranged. oh, and FYI - all comments posted by people on the feedback system on the sessions were anonymous - I've heard several people ask about that. So even if you totally trash my sessions - I have no way of knowing who wrote what. it's not in the speaker's ability to do that.. --- title: "People find use for my sessions" url: "https://osherove.com/blog/2006/11/7/people-find-use-for-my-sessions.md" canonical: "https://osherove.com/blog/2006/11/7/people-find-use-for-my-sessions.html" published: "2006-11-07T17:32:18" updated: "2006-11-07T17:32:18" tags: [] author: "Roy Osherove" description: "It's nice to know I've helped people in my sessions yesterday. Miguel started using a naming best practice I suggested in my Test Driven Development Session - give your unit tests a name that divides into 3 parts:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # People find use for my sessions By Roy Osherove November 7, 2006 **Historical article** · Originally published November 7, 2006; technical details may be outdated. It's nice to know I've helped people in my sessions yesterday. [Miguel started using](http://blogs.clearscreen.com/migs/archive/2006/11/07/4170.aspx) a naming best practice I suggested in my Test Driven Development Session - give your unit tests a name that divides into 3 parts: MethodName\_StateUnderTest\_ExpectedBehavior() [Red Dog liked](http://reddog.spaces.live.com/Blog/cns!C0ECC7E29439CAC0!315.entry) the extensibility and notification mechanisms in Team System that I showed (I used them to create a Continuous integration solution with TFS) Feels all warm and fuzzy :) --- title: "SQL Refactor looks cool" url: "https://osherove.com/blog/2006/11/7/sql-refactor-looks-cool.md" canonical: "https://osherove.com/blog/2006/11/7/sql-refactor-looks-cool.html" published: "2006-11-07T11:02:07" updated: "2006-11-07T11:02:07" tags: [".NET", ".Net 2.0", "Cool Tools"] author: "Roy Osherove" description: "If you do any work with stored procedures and SQL databases, SQL Refactor should look very interesting to you..." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SQL Refactor looks cool By Roy Osherove November 7, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 7, 2006; technical details may be outdated. If you do any work with stored procedures and SQL databases, [SQL Refactor](http://codebetter.com/blogs/david.hayden/archive/2006/11/06/SQL-Refactor-Rocks_2100_.aspx) should look very interesting to you... ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Dec 9, 2006 ### [Unit Testing your ASP.NET Validators - Validation Everywhere](https://osherove.com/blog/2006/12/9/unit-testing-your-aspnet-validators-validation-everywhere.html) - Nov 30, 2006 ### [New research shows SQL Server 2005 more secure than Oracle](https://osherove.com/blog/2006/11/30/new-research-shows-sql-server-2005-more-secure-than-oracle.html) - Oct 22, 2006 ### [How to run web services and sites on the same box as sharepoint (avoiding "404 Page Not Found" errors)](https://osherove.com/blog/2006/10/22/how-to-run-web-services-and-sites-on-the-same-box-as-sharepo.html) - Sep 26, 2006 ### [.NET Rocks: Regular Expressions with Roy Osherove](https://osherove.com/blog/2006/9/26/net-rocks-regular-expressions-with-roy-osherove.html) --- title: "Agile Development Sessions - Slides and Demos from TechEd" url: "https://osherove.com/blog/2006/11/7/agile-development-sessions-slides-and-demos-from-teched.md" canonical: "https://osherove.com/blog/2006/11/7/agile-development-sessions-slides-and-demos-from-teched.html" published: "2006-11-07T09:07:36" updated: "2006-11-07T09:07:36" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Team System", "Unit Testing"] author: "Roy Osherove" description: "Update : here's a video that yosi made of my draft song before the preconference... Que sera sera... Yesterday was a full day of pre-conference goodness. I've had a blast doing 4 sessions dealing with Agile Development…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Development Sessions - Slides and Demos from TechEd By Roy Osherove November 7, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Team System](https://osherove.com/blog/category/team-system), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published November 7, 2006; technical details may be outdated. **Update**: [here's a video](http://tinyurl.com/todom) that [yosi](http://blogs.microsoft.co.il/blogs/yosit/archive/2006/11/06/_E105D905DB05D505DD05_-_E205E805D105_-_E805D005E905D505DF05_-_D105D105E805E605DC05D505E005D405_-_DC05E405E005D905_-_D805E705D005D305_-2006.aspx) made of my draft song before the preconference... Que sera sera... Yesterday was a full day of pre-conference goodness. I've had a blast doing 4 sessions dealing with Agile Development within a team system Environment. As a special treat I've also brought in my Acoustic guitar which I had hooked up to an amp , and after each session, I sang a little "cover" song about the last session's topic. So I have 4 songs: Agile Development, TDD, Continuous Integration and Scrum. I was really concentrated in the song, but I do remember a million flashes from cameras the moment I sat down with my guitar - it was fun! I felt like Madonna :) Anyways - I promised and I'm keeping my promise from the sessions. Here are the materials from that preconference: - **Slides** for all four preconf sessions [can be found here](http://files.osherove.com/vsts/Slides_PRE001.zip). - **Demos** for the Continuous Integration talk (including the registration tool for event notifications I demonstrated) [can be found here](http://files.osherove.com/vsts/demos-VSTS.zip). - **TeamSub**:  I made a separate [download of TeamSub](http://files.osherove.com/vsts/TeamSub.zip) - A tool I created by extending an existing tool (I cannot remember the source of it, sorry!). It allows easily registering web services for event notifications without needing to use a command line.  (if you download the VSTS-Demos, it's already in there included) If you attended my sessions - hope you had fun! If you have pictures of me playing, I'd love for you to email them to me to RoyOsherove At GMail.Com ! I'm doing a few more sessions (Agile development Intro and Continuous Integration with Team System) and I'm planning on having a little song at the end of both. This time the crowd will be bigger - but that's part of the fun :) **Update** \- wish I knew what [this post](http://parnordstrom.spaces.live.com/Blog/cns!F684FCFD27421C5E!123.entry) is saying... **Update**: here's a flickr image sent in by [aali](http://blogs.msdn.com/aalialikoski): [![](https://osherove.com/img/ext/static.flickr.com_121_295664535_70f1691e34.jpg_v_0)](http://www.flickr.com/photos/aalialikoski/295664535/) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Nov 17, 2006 ### [Scrum Certifications are Problematic](https://osherove.com/blog/2006/11/17/scrum-certifications-are-problematic.html) - Nov 17, 2006 ### [Scrum Vs. XP - Why Scrum is easier to sell](https://osherove.com/blog/2006/11/17/scrum-vs-xp-why-scrum-is-easier-to-sell.html) - Oct 15, 2006 ### [MassDataHandler: generate test data to help with data layer testing](https://osherove.com/blog/2006/10/15/massdatahandler-generate-test-data-to-help-with-data-layer-t.html) - Oct 14, 2006 ### [DataFresh - Database rollback library for unit tests](https://osherove.com/blog/2006/10/14/datafresh-database-rollback-library-for-unit-tests.html) --- title: "Project Server Connector for Team System RTM announced" url: "https://osherove.com/blog/2006/10/25/project-server-connector-for-team-system-rtm-announced.md" canonical: "https://osherove.com/blog/2006/10/25/project-server-connector-for-team-system-rtm-announced.html" published: "2006-10-25T21:43:58" updated: "2006-10-25T21:43:58" tags: ["Team System"] author: "Roy Osherove" description: "One of the issues that many people have faced when moving to Team System was how to integrate it with their existing project management software. Specifically, Microsoft Project Server. Team System can already connect…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Project Server Connector for Team System RTM announced By Roy Osherove October 25, 2006 In [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published October 25, 2006; technical details may be outdated. One of the issues that many people have faced when moving to Team System was how to integrate it with their existing project management software. Specifically, Microsoft Project Server. Team System can already connect to Project professional, but project server is a much more robust solution for managing multiple projects and resources in parallel. There was a sample Team System Connector for project server that worked with Beta 2 of team system, but the RTM version suffered for a long time until today I got the announcement that the [VSTS Connector for Project Server 2003 is finally ready](http://www.gotdotnet.com/workspaces/workspace.aspx?id=b9f69ea5-ace1-4a21-846f-6222a507cc9c). [You can download it directly from here](http://www.avanadeadvisor.com/TFS-ProjectServerConnector.zip). the full announcement [is here](http://www.gotdotnet.com/workspaces/releases/viewuploads.aspx?id=b9f69ea5-ace1-4a21-846f-6222a507cc9c). > "**The** Connector synchronizes Project, Resource and Task data between the two systems. Project Managers, Resource Managers continue to work in the EPM environment while the development team works in the development environment, i.e. VSTS, and data seamlessly flows between the two systems. Updates to work items in VSTS are automatically applied to the corresponding assignments and tasks in Project Server and vice versa. Project Managers have complete control over the inflow of the actuals into the project plan. In addition, resource management functions for all development projects, like managing time and utilization for resources working across multiple projects, team staffing etc. can be performed in Project Server. Lastly, portfolio and program level reports can easily be generated for projects being executed in VSTS and managed in Project Server. " ## More in Team System [All posts in Team System](https://osherove.com/blog/category/team-system) - Nov 12, 2006 ### [Managing team build files sucks a little less with Attrice SideKick for VSTS](https://osherove.com/blog/2006/11/12/managing-team-build-files-sucks-a-little-less-with-attrice-s.html) - Nov 7, 2006 ### [Agile Development Sessions - Slides and Demos from TechEd](https://osherove.com/blog/2006/11/7/agile-development-sessions-slides-and-demos-from-teched.html) - Oct 2, 2006 ### [My sessions at TechEd Europe 2006](https://osherove.com/blog/2006/10/2/my-sessions-at-teched-europe-2006.html) - Sep 24, 2006 ### [Continuous integration with Team System and Team Foundation Server](https://osherove.com/blog/2006/9/24/continuous-integration-with-team-system-and-team-foundation.html) --- title: "MomPC - Creating a parent safe PC" url: "https://osherove.com/blog/2006/10/25/mompc-creating-a-parent-safe-pc.md" canonical: "https://osherove.com/blog/2006/10/25/mompc-creating-a-parent-safe-pc.html" published: "2006-10-25T17:32:19" updated: "2006-10-25T17:32:19" tags: ["Off Topic"] author: "Roy Osherove" description: "As many techies out there, I’m also the primary technician and support personnel for my parents – mainly, my Mom. Herein lays the problem. My mom is not really a computer whiz. In fact she doesn’t know how to do much…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MomPC - Creating a parent safe PC By Roy Osherove October 25, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 25, 2006; technical details may be outdated. As many techies out there, I’m also the primary technician and support personnel for my parents – mainly, my Mom. Herein lays the problem. My mom is not really a computer whiz. In fact she doesn’t know how to do much besides using Work, Email and the occasional game. Except one thing. If there’s one thing my mom is really good at when using the computer it is making it crash, crawl and beg for someone to just kill it. She would click on every email link, site link or file shortcut in site (and there seem to be a lot of those around), and because she doesn’t know what’s “bad” and what’s OK to use, it’s just a matter of time until the computer becomes unusable and needs to be formatted and reinstalled. Clearly, the situation takes some drastic measures which I outline here. If you will, this is my little guide on how I made my mom’s PC “Parent – Safe”. As a result, ever since I implemented this solution, there was not one virus, malware of spyware hogging the computer, and I can easily check in on her machine even if she’s not home. Here’s what you do: **Basic stuff** - Install a clean Windows XP on the machine - Make sure automatic updates are set to “automatic download and install” mode - Go to [update.microsoft.com](http://update.microsoft.com/) and get everything that is marked critical - Make sure the firewall is on **Viruses and malware:** - Download and install: - [AVG Free antivirus](http://free.grisoft.com/) - [Windows Defender](http://www.microsoft.com/athome/security/spyware/software/default.mspx) **Email** To solve the spam issue, I wanted my mom to have a good Anti-spam solution which is free. The best one I know is [SpamBayes](http://spambayes.sourceforge.net/windows.html), but it only runs great on Outlook, not outlook express. Install Outlook 2003 and configure it. Then install [SpamBayes](http://spambayes.sourceforge.net/windows.html) and configure it. Teach your mom how to click the single button that is marked “delete as spam” or “Not spam”. My mom took a couple minutes to get it, but now she’s very happy. **Remote support** I use [Logmein.com’s](http://www.logmein.com/) excellent free service to connect to my machines from anywhere. So what I did is to install [logmein](http://www.logmein.com/).com’s client on my mom’s machine, and now wherever I am I can just go to the [logmein](http://www.logmein.com/) site, and browse to my mom’s computer (think PC anywhere, but no need to have user intervention from the target computer once you install the client there.). It’s better than the various [VNC](http://www.realvnc.com/) stuff because those require an IP address to connect. With the logmein service I don’t need that. It’s too much of a hassle to have my mom’s machine use one of those free dns services out there. My solution works great. And she doesn’t even need to be there for it to work. **The ultimate solution to Preventing unwanted installations and malware** This last step (you should do it only after you’ve completed everything else on this list) is what gave me the confidence that my mom won’t do anything too risky on her machine ever again. The idea is to set the account your parents use a “limited” account. This account can’t install anything, can’t delete anything that is somehow important, and can’t ruin your machine even if they say “yes” to all the dialog boxes a program may throw at them. Unfortunately, the default user created in XP is an Administrator type account, so we’ll need to change that: - click the start menu, then click on the user’s picture - or just go to start-administrative -- manage users - Create a new user account named “Admin”, set it as an administrator level account. - Set the new “Admin” password to something easy that your parents could remember. - Now change your parent’s \***existing**\* account type to “limited account”. - Don’t set a password for it. Now, whenever they open the machine, the login screen will show two account, one that needs a password and one that does not. Always tell them “if you need to put a password in, it means you need to click the other user name instead of this one. The one with the password is –special- and you only use it if you want to install something deliberately” Since my mom never “wants to install something deliberately” this works – she just needs to click on the user that does not as a password. Log off and log on to the system with your paren’ts user. You‘ll see that you can’t do anything, but all the services you installed (logmein, anti virus..) work great because you installed them as admin. From now on, even if my mom clicks anything bad, it can’t really do anything, because it will run with the same permissions as the logged in user – which amount to very little. With spam and virus detectors, the machine becomes even safer. I haven’t had a virus or malware problem for months now due to this solution. Hope you find this as useful as I did. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 13, 2006 ### [What would you write about if you had an anonymous blog?](https://osherove.com/blog/2006/12/13/what-would-you-write-about-if-you-had-an-anonymous-blog.html) - Dec 6, 2006 ### [How bad design can scare your children](https://osherove.com/blog/2006/12/6/how-bad-design-can-scare-your-children.html) - Oct 18, 2006 ### [Nothing to do with Vista](https://osherove.com/blog/2006/10/18/nothing-to-do-with-vista.html) - Oct 15, 2006 ### [Next generation facial mapping technology](https://osherove.com/blog/2006/10/15/next-generation-facial-mapping-technology.html) --- title: "Israeli .NET bloggers you should read" url: "https://osherove.com/blog/2006/10/22/israeli-net-bloggers-you-should-read.md" canonical: "https://osherove.com/blog/2006/10/22/israeli-net-bloggers-you-should-read.html" published: "2006-10-22T18:46:56" updated: "2006-10-22T18:46:56" tags: ["Cool sites", "General Software Devel..."] author: "Roy Osherove" description: "I wanted to draw your attention to several prominent Israeli Bloggers in the world of .NET that I know and respect. (I'm only mentioning those that post regularly - I know and respect many more, but they don't write at…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israeli .NET bloggers you should read By Roy Osherove October 22, 2006 In [Cool sites](https://osherove.com/blog/category/cool-sites), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published October 22, 2006; technical details may be outdated. I wanted to draw your attention to several prominent Israeli Bloggers in the world of .NET that I know and respect. (I'm only mentioning those that post regularly - I know and respect many more, but they don't write at all, or close to that, unfortunately) - [Udi Dahan](http://www.udidahan.com/) Udi is an architecture geek, and the word 'SOA" is written all over his forehead. still, he likes to take a pragmatic approach to things and comes up with many interesting ideas and concepts about software architecture. He also writes for various published magazines and will be speaking in the upcoming TechEd in Barcelona. - [Justin Angel](http://blogs.microsoft.co.il/blogs/JustinAngel/) Justin is has just recently made MVP, but he's been active in the Israeli .NET scene for a while now. He helps maintain one of the most active .NET forums in Hebrew I know, writes regularly in his blog (almost all in Hebrew) and has the "passion" to learn and talk about new areas. I'd say Justin tries to cater more to the novice crowd, but his knowledge is an advanced one. Great community lead! - [Guy Burstein](http://blogs.microsoft.co.il/blogs/bursteg/default.aspx) this guy is shoulder deep in WinfX, ADO.NET vs. and bascially anything that's currently in "CTP" mode. He's posting lots of great info, and he's actually speaking tonight about the next version of ADO.NET.  If you're into bleeding edge, guy seems to have a thirst for telling you what's what. - [Arnon Rotem Gal Oz](http://www.rgoarchitects.com/blog/) This guy has the same interests as Udi Dahan - Architecture and design in a service oriented world. He does not write too often, but he should. Perhaps now he'll have more of an incentive to do so, right Arnon? - [Ayende Rahien](http://www.ayende.com/Blog/) (Oren Eini) For some really obscure reason I left Oren out of this list, which is should definitely be a part of! Oren is a great thinker and like to muck around with lots of "design patternish" stuff, OR/M systems and mocking frameworks (he built Rhino.Mocks, and contributes to NHibernate). Great guy, great blog. Thanks for reminding me, [Joshua](http://flimflan.com/blog)! _Think you should be on future lists like this? Drop a comment or send an email!_ ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Jun 12, 2007 ### [Real time data on your blog pages visitors](https://osherove.com/blog/2007/6/12/real-time-data-on-your-blog-pages-visitors.html) - Aug 29, 2006 ### [Ultimate Developer and Power Users Tool List for Windows - Updated](https://osherove.com/blog/2006/8/29/ultimate-developer-and-power-users-tool-list-for-windows-upd.html) - May 21, 2006 ### [YubNub - Command Line for Web Browsing](https://osherove.com/blog/2006/5/21/yubnub-command-line-for-web-browsing.html) --- title: "How to run web services and sites on the same box as sharepoint (avoiding "404 Page Not Found" errors)" url: "https://osherove.com/blog/2006/10/22/how-to-run-web-services-and-sites-on-the-same-box-as-sharepo.md" canonical: "https://osherove.com/blog/2006/10/22/how-to-run-web-services-and-sites-on-the-same-box-as-sharepo.html" published: "2006-10-22T18:25:42" updated: "2006-10-22T18:25:42" tags: [".NET", ".Net 2.0", "Sharepoint"] author: "Roy Osherove" description: "I just finished a 6 hour \"chase-around\" session after what seems to be the most annoying problem I've encountered. The problem I had was this: I was using the Virtual PC image that can be downloaded from MSDN Subscriber…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to run web services and sites on the same box as sharepoint (avoiding "404 Page Not Found" errors) By Roy Osherove October 22, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Sharepoint](https://osherove.com/blog/category/sharepoint) **Historical article** · Originally published October 22, 2006; technical details may be outdated. I just finished a 6 hour "chase-around" session after what seems to be the most annoying problem I've encountered. The problem I had was this: I was using the Virtual PC image that can be downloaded from MSDN Subscriber downloads : it contains the following installed: - Team Foundation Server RTM - Windows Sharepoint - VS 2005 - IIS 6 - Windows Server 2003 Everything is working great out of the box when you use Team System, browse to the team project portal and such, but one little thing. If you try to build a web site, or a web service, even the most basic "hello world" one, and try to put it in a virtual directory under IIS, you can't navigate to it. You get weird errors like "404 Page not Found" even though you know the page is there, in local host. Navigating to it from within IIS didn't help either. always the same problem. Turns out the problem has to do with Sharepoint services and its ISAPI filter. Sharepoint installs an ISAPI filter in the default web site called "stsfltr". It uses it to [intercept all requests](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_SP2003_ta/html/ODC_WSSArchitecture.asp) to the IIS, find out if they need to be routed to sharepoint sites, or forwarded on.. To do that, it uses a configuration database to locate its settings. After digging around the system for a while, and doing some brain storming with [Justin](http://blogs.microsoft.co.il/blogs/JustinAngel/), we figures out I had two problems: - I had a [login security problem](http://wss.collutions.com/Lists/FAQ/DispForm.aspx?ID=249) on the configuration server which I had to fix - I had to tell sharepoint's ISAPI filter [to exclude the websites and web services I wanted to expose on IIS](http://web.archive.org/web/20040602210626/http://ipattern.com/simpleblog/PermLink.aspx?entryId=39). (the link here is from the Internet archive, because the actual blog post is gone. I'll posts parts of it here so that it does not get lost So, if you're going to expose services and sites from an IIS that also hosts Sharepoint, you'll need to do the following: - Launch the SharePoint Central Administration site  (from the start menu) - Click on the **Configure Virtual Server Settings**. - Select your Virtual Server (in my case it was the "default web site". - Click on the **Define Managed Paths** link in the Virtual Server Management section. - **Add the path to exclude**, pointing to the URL of your custom ASP.NET application ( '/' signals the root, so to exclude localhost/myapp you just write '/MyApp') Hopefully, that should be it. for the sake of keeping the information alive, I am copying from the web archive into this blog post from what Maxim Karpov wrote on this, since it's interesting. **Begin Quote from [web archive](http://web.archive.org/web/20040602210626/http://ipattern.com/simpleblog/PermLink.aspx?entryId=39):** [IPattern.com (Maxim V. Karpov)](http://web.archive.org/web/20040602210626/http://ipattern.com/simpleblog/) .NET patterns, best practices and more... Thursday, March 18, 2004 ##### **SharePoint STSFLTR.DLL dirty secret and more**… Design Patterns: Intercepting Filter, Front Controller SharePoint 2003 (v2) is a great improvement over the previous version of the product, but it still has a long way to go as far as improving development process. One its major improvements is that the SharePoint team utilized Microsoft SQL Server 2000 engine for the back end storage of settings and user data. Every single article, post, and SDK talks about how STSFLTR.DLL relies on Configuration database to retrieve needed information. Is this completely true? I was intrigued, but the fact that the default installation of WSS takes over the entire IIS Server by means of ISAPI filter (STSFLTR.DLL that should be named WSSFLTR.DLL) and intercepts every single request- response ultimately prevents us from running IIS virtual directories as ASP.NET Web Applications. The first thing I learned when I started working with SharePoint was how to enable ASP.NET Web Application to be able to execute side by side with SharePoint. The process is as follows: - Launch the SharePoint Central Administration site - Click on the Configure Virtual Server Settings. - Select your Virtual Server. - Click on the Define Managed Paths link in the Virtual Server Management section. - Add the path to exclude, pointing to the URL of your custom ASP.NET application __ By default I have two IIS virtual directories excluded UDDI and UDDIPUBLIC then I added MYASPNETAPP, WEBAPPLICATION, and MYCONTROLS. I can add as many as I want, but for the sake of the demo I will stop at this. My efforts to find where SharePoint stores these exclusions were finally successful after hours of searching Configuration database tables and web.config files. I finally resorted to the last place I wanted to look: Windows Registry. Yes, it is still alive and kicking! Bingo~ after searching within the windows registry, I found the entries as follows: __ Registry contains Exclusions and Inclusions folders for the managed paths within windows registry and the SharePoint team was nice in providing us with Web UI to allow manipulation of it. I believe the entire core infrastructure of SharePoint was written in the unmanaged code while all of the WSS APIs were written with the .NET framework. Why would they store this information in the registry? I am not sure and this is good question to ask the SharePoint team. I am still waiting on them to respond to me. ##### What is STSFLTR.DLL anyway? It is an ISAPI filter that implements [Intercepting Filter Design Pattern](http://web.archive.org/web/20040602210626/http://msdn.microsoft.com/architecture/patterns/default.aspx?pull=/library/en-us/dnpatterns/html/DesInterceptingFilter.asp), which is written in C++ and provides mechanize of intercepting ALL incoming requests. STSFLTR.DLL deals with handling the requests and making sure that they are passed correctly to the correct HttpHandler. __ All of the requests are going through the filter unless otherwise specified with the registry modification.

Files and Directories

ISAPI Extension

SharePointHandlerFactory*

PageHandlerFactory**

Web Dev, HTML

X

Front Page RPC

X

/_layouts/*.ASPX

X

/EXCLUDED/*.ASPX

X

/SITES/*.ASPX

X

/INLUDED/*.ASPX

X

I have one wish: That Microsoft would document things like this to make our job slightly easier as developers. Don’t you think so? I hope this installment helped you to understand what is going on under the hood of ISAPI filter framework and how it is intergraded with ASP.NET Http Handlers. I was pleased to find the answer, but at the same time discouraged to see that Microsoft teams are still using so many different places to store configuration data for their applications. Do not blindly follow the instructions to “do it this way” for your answers. It pays off to go the extra mile in order to find out the reason behind the implementation. I was pleased in knowing I could use a Design pattern with a technology product like SharePoint. Design Patterns are the way to go, don’t you think? posted @ 5:59 PM [Comments\[7\]](http://web.archive.org/web/20040602210626/http://ipattern.com/simpleblog/CommentView.aspx?entryid=39#comment) **End quote of Maxim Karpov** ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 30, 2006 ### [New research shows SQL Server 2005 more secure than Oracle](https://osherove.com/blog/2006/11/30/new-research-shows-sql-server-2005-more-secure-than-oracle.html) - Nov 7, 2006 ### [SQL Refactor looks cool](https://osherove.com/blog/2006/11/7/sql-refactor-looks-cool.html) - Sep 26, 2006 ### [.NET Rocks: Regular Expressions with Roy Osherove](https://osherove.com/blog/2006/9/26/net-rocks-regular-expressions-with-roy-osherove.html) - Sep 25, 2006 ### [Problem: Underlying HTML from a selection inside WebBrowser Control produces different HTML than the original page](https://osherove.com/blog/2006/9/25/problem-underlying-html-from-a-selection-inside-webbrowser-c.html) --- title: "MSDN Premium auction for Africa" url: "https://osherove.com/blog/2006/10/19/msdn-premium-auction-for-africa.md" canonical: "https://osherove.com/blog/2006/10/19/msdn-premium-auction-for-africa.html" published: "2006-10-19T10:09:25" updated: "2006-10-19T10:09:25" tags: ["Community", "Community News"] author: "Roy Osherove" description: "If you're an MVP who got the \"MSDN Card Giveaway\" thing early this year but had no idea how to give it out, Jamie Cansdale has a great idea that might actually help people who really could use some help. \"I'm thinking…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSDN Premium auction for Africa By Roy Osherove October 19, 2006 In [Community](https://osherove.com/blog/category/community), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published October 19, 2006; technical details may be outdated. If you're an MVP who got the "MSDN Card Giveaway" thing early this year but had no idea how to give it out, [Jamie Cansdale has a great idea](http://weblogs.asp.net/nunitaddin/archive/2006/10/18/MVP-Invites-for-Africa.aspx) that might actually help people who really could use some help. > "I'm thinking of organizing an auction along the same lines as the one [Julia Lerman](http://www.thedatafarm.com/blog/) did for [Banda Aceh](http://www.idepfoundation.org/aceh_aid.html). My [father](http://www.swsfilt.co.uk/weblog/index.html) is currently involved in the setting up a pump workshop in Malawi. The [pumps](http://www.swsfilt.co.uk/nzp/index.htm) they will be manufacturing are made from ABS plastic and are virtually indestructible. The only perishable part is a rubber valve which commonly lasts for 3 years and a [replacement](http://www.swsfilt.co.uk/weblog/2006/08/forthcoming-return-visit-to-malawi.html) can be cut from an old tire. The focus is very much on appropriate technology. > > The workshop will bring work to the local community and clean water to villages all over [Malawi](http://en.wikipedia.org/wiki/Malawi). The founder of the [charity](http://www.wellsforzoe.org/) that is setting up the workshop has agreed to pay _all_ administrative overheads (air fairs, travel etc) so that any money donated goes directly to the workshop and the manufacture of pumps. You can find more information about the charity [here](http://www.wellsforzoe.org/)." Great idea. I'm in! ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Nov 19, 2006 ### [MVPs Week - Full week of hardcore training from Experts4D](https://osherove.com/blog/2006/11/19/mvps-week-full-week-of-hardcore-training-from-experts4d.html) - Nov 17, 2006 ### [Final updates on Israeli Blogger Dinner on Monday](https://osherove.com/blog/2006/11/17/final-updates-on-israeli-blogger-dinner-on-monday.html) - Sep 6, 2006 ### [Influence the next Microsoft Israel Conference](https://osherove.com/blog/2006/9/6/influence-the-next-microsoft-israel-conference.html) - Jun 18, 2006 ### [This week at the C# User group - Hardcore ASP.NET 2.0 \[Dan Amiga\]](https://osherove.com/blog/2006/6/18/this-week-at-the-c-user-group-hardcore-aspnet-20-dan-amiga.html) --- title: "Nothing to do with Vista" url: "https://osherove.com/blog/2006/10/18/nothing-to-do-with-vista.md" canonical: "https://osherove.com/blog/2006/10/18/nothing-to-do-with-vista.html" published: "2006-10-18T20:09:51" updated: "2006-10-18T20:09:51" tags: ["Off Topic"] author: "Roy Osherove" description: "This is hilarious , and has absolutely nothing to do with Windows Vista. He just goes on and on. Seriously. Listen. (thanks Chris )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nothing to do with Vista By Roy Osherove October 18, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 18, 2006; technical details may be outdated. This is [hilarious](http://www.clearification.com/), and has absolutely nothing to do with Windows Vista. He just goes on and on. Seriously. Listen. (thanks [Chris](http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2048)) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 6, 2006 ### [How bad design can scare your children](https://osherove.com/blog/2006/12/6/how-bad-design-can-scare-your-children.html) - Oct 25, 2006 ### [MomPC - Creating a parent safe PC](https://osherove.com/blog/2006/10/25/mompc-creating-a-parent-safe-pc.html) - Oct 15, 2006 ### [Next generation facial mapping technology](https://osherove.com/blog/2006/10/15/next-generation-facial-mapping-technology.html) - Oct 11, 2006 ### [How to get disqualified as an MVP](https://osherove.com/blog/2006/10/11/how-to-get-disqualified-as-an-mvp.html) --- title: "Next generation facial mapping technology" url: "https://osherove.com/blog/2006/10/15/next-generation-facial-mapping-technology.md" canonical: "https://osherove.com/blog/2006/10/15/next-generation-facial-mapping-technology.html" published: "2006-10-15T23:32:12" updated: "2006-10-15T23:32:12" tags: ["Off Topic"] author: "Roy Osherove" description: "What an absolutely amazing technology this is . \"The Times's Sharon Waxman talks with executives from Imagemetrics, a special effects company whose new facial mapping software could change the way movies are made.\"" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Next generation facial mapping technology By Roy Osherove October 15, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 15, 2006; technical details may be outdated. What an [absolutely amazing technology this is](http://video.on.nytimes.com/ifr_main.jsp?nsid=a-768be3b9:10e4e05b9e3:-2d7c&fr_story=650ff1e00d0677c95caaad8c9938664384ba9652&st=1160951366930&mp=FLV&cpf=false&fvn=8&fr=101506_062457_w768be3b9x10e4e05b9e3xw4353&rdm=132070.90122113118). > "The Times's Sharon Waxman talks with executives from Imagemetrics, a special effects company whose new facial mapping software could change the way movies are made." ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 25, 2006 ### [MomPC - Creating a parent safe PC](https://osherove.com/blog/2006/10/25/mompc-creating-a-parent-safe-pc.html) - Oct 18, 2006 ### [Nothing to do with Vista](https://osherove.com/blog/2006/10/18/nothing-to-do-with-vista.html) - Oct 11, 2006 ### [How to get disqualified as an MVP](https://osherove.com/blog/2006/10/11/how-to-get-disqualified-as-an-mvp.html) - Sep 30, 2006 ### [Top 10 Best Presentations Ever](https://osherove.com/blog/2006/9/30/top-10-best-presentations-ever.html) --- title: "MassDataHandler: generate test data to help with data layer testing" url: "https://osherove.com/blog/2006/10/15/massdatahandler-generate-test-data-to-help-with-data-layer-t.md" canonical: "https://osherove.com/blog/2006/10/15/massdatahandler-generate-test-data-to-help-with-data-layer-t.html" published: "2006-10-15T14:25:04" updated: "2006-10-15T14:25:04" tags: ["Agile", "Art Of Unit Testing", "Cool Tools", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "Yet another tool to help with integration tests against the database layer(got this by email: \"I wanted to let you know about an open source tool I created to help unit test the data access layer.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MassDataHandler: generate test data to help with data layer testing By Roy Osherove October 15, 2006 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 15, 2006; technical details may be outdated. Yet another tool to help with integration tests against the database layer(got this by email: > "I wanted to let you know about an open source tool I created to help unit test the data access layer. > > [http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=MassDataHandler](http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=MassDataHandler) > > This tool uses knowledge of the database schema to do all the grunt work and let you store your test data in an easy xml file. It has an API so that you can call it from within any test framework. The download has a 10-step tutorial that is an MSTest project with its own live test database. The name of the tool is MassDataHandler, and it’s available for free from Microsoft’s new CodePlex site. I’m using it every day to help generate test data, especially in my unit tests for complex stored procs. > > ... > > Thanks, > > Tim" Cool. I'll have to check it out then. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Nov 17, 2006 ### [Scrum Vs. XP - Why Scrum is easier to sell](https://osherove.com/blog/2006/11/17/scrum-vs-xp-why-scrum-is-easier-to-sell.html) - Nov 7, 2006 ### [Agile Development Sessions - Slides and Demos from TechEd](https://osherove.com/blog/2006/11/7/agile-development-sessions-slides-and-demos-from-teched.html) - Oct 14, 2006 ### [DataFresh - Database rollback library for unit tests](https://osherove.com/blog/2006/10/14/datafresh-database-rollback-library-for-unit-tests.html) - Oct 11, 2006 ### [Good Agile, Bad Agile](https://osherove.com/blog/2006/10/11/good-agile-bad-agile.html) --- title: "Introducing Perf+ , A better perfmon" url: "https://osherove.com/blog/2006/10/14/introducing-perf-a-better-perfmon.md" canonical: "https://osherove.com/blog/2006/10/14/introducing-perf-a-better-perfmon.html" published: "2006-10-14T20:33:46" updated: "2006-10-14T20:33:46" tags: ["ASP.NET", "Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "Perf+ is an advanced free extension of perfmon with a tabbed interface and a set of predefined counters you can modify and share with others. Great for real time viewing of a host machine's stats quickly. Still in the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing Perf+ , A better perfmon By Roy Osherove October 14, 2006 In [ASP.NET](https://osherove.com/blog/category/asp-net), [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published October 14, 2006; technical details may be outdated. [Perf+](https://osherove.com/) is an advanced free extension of perfmon with a tabbed interface and a set of predefined counters you can modify and share with others. Great for real time viewing of a host machine's stats quickly. [![](https://osherove.com/img/wb/f49de1d9_files.osherove.com_perfplus_pplus_mainscreen_persp.jpg)](https://osherove.com/) Still in the alpha stage, here's something I created to make it easier for me to find performance problems on servers. I decided to make this into a public tool so that everyone can benefit. The problem I had is that perfmon as a tool is not very usable. You need a lot of mouse clicking to get things done, and if you happen to, for example, change the instance of the application you are looking at, or use the same counters for a different machine, you're stuck with clicking the mouse a lot and removing and adding counters one by one. It's tough. [![Perf+](https://osherove.com/img/wb/16c1da38_files.osherove.com_PerfPlus_pplus_Demo.gif)](http://perfplus.osherove.com/) Because as part of my job, I also do lots of performance tuning and testing for enterprise applications, I needed something that will help me look at counters easily, because I usually have predefined counters for specific things I'm looking at (like trying to track down memory leak takes different counters than making sure you don't have too many connections open at the same time. SO I built Perf+ to help me. This is an alpha version and thus not very stable, so I encourage you to submit bugs when they happen. It's free to download and use, so have fun! The tool will stop working mid November by then you'll have to download a new version. I'm doing this to force myself to do monthly releases of my tools. ## More in ASP.NET [All posts in ASP.NET](https://osherove.com/blog/category/asp-net) - Dec 9, 2006 ### [Unit Testing your ASP.NET Validators - Validation Everywhere](https://osherove.com/blog/2006/12/9/unit-testing-your-aspnet-validators-validation-everywhere.html) - Dec 4, 2006 ### [HnD - Open source forums and support backed by LLBLGen 2.0](https://osherove.com/blog/2006/12/4/hnd-open-source-forums-and-support-backed-by-llblgen-20.html) - Jun 20, 2006 ### [Four cool books to give away at today's C# user group](https://osherove.com/blog/2006/6/20/four-cool-books-to-give-away-at-todays-c-user-group.html) - Jun 15, 2006 ### [\[Cool Tool\]Unlocker : Unlock Files/Folders without going nuts](https://osherove.com/blog/2006/6/15/cool-toolunlocker-unlock-filesfolders-without-going-nuts.html) --- title: "DataFresh - Database rollback library for unit tests" url: "https://osherove.com/blog/2006/10/14/datafresh-database-rollback-library-for-unit-tests.md" canonical: "https://osherove.com/blog/2006/10/14/datafresh-database-rollback-library-for-unit-tests.html" published: "2006-10-14T00:42:38" updated: "2006-10-14T00:42:38" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "A while ago I wrote an article about database unit testing , and the various ways you could \"rollback\" the database state to the way it was before the test ran. Today I got an interesting comment from Mike Brockey : \"I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # DataFresh - Database rollback library for unit tests By Roy Osherove October 14, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 14, 2006; technical details may be outdated. A while ago I wrote an [article about database unit testing](http://weblogs.asp.net/rosherove/pages/DbUnitTesting.aspx), and the various ways you could "rollback" the database state to the way it was before the test ran. Today I got an interesting comment from [Mike Brockey](http://blogs.ent0.com/blogs/mikebrockey/default.aspx): > "I have yet another solution to this very common problem. We have been able to isolate the steps for preparing a database snapshot, tracking the database modifications and then refreshing the modified tables back to their original state all using built in SQL statements.  We call it dataFresh and it is available now from our website as part of our TDD Developer's Toolkit, all free of charge. > > [http://blogs.ent0.com/blogs/datafresh/default.aspx](http://blogs.ent0.com/blogs/datafresh/default.aspx)" the downloads section on the site is [over here](http://blogs.ent0.com/files/default.aspx). I haven't tried it yet, but it looks interesting. Thanks Mike! ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Nov 7, 2006 ### [Agile Development Sessions - Slides and Demos from TechEd](https://osherove.com/blog/2006/11/7/agile-development-sessions-slides-and-demos-from-teched.html) - Oct 15, 2006 ### [MassDataHandler: generate test data to help with data layer testing](https://osherove.com/blog/2006/10/15/massdatahandler-generate-test-data-to-help-with-data-layer-t.html) - Oct 11, 2006 ### [Good Agile, Bad Agile](https://osherove.com/blog/2006/10/11/good-agile-bad-agile.html) - Oct 10, 2006 ### [The Art Of Unit Testing - Download Chapter 1](https://osherove.com/blog/2006/10/10/the-art-of-unit-testing-download-chapter-1.html) --- title: "Good Agile, Bad Agile" url: "https://osherove.com/blog/2006/10/11/good-agile-bad-agile.md" canonical: "https://osherove.com/blog/2006/10/11/good-agile-bad-agile.html" published: "2006-10-11T10:24:36" updated: "2006-10-11T10:24:36" tags: ["Agile", "Agile Related"] author: "Roy Osherove" description: "Steve Yegge, an employee at Google, has a very interesting post where he separates \"Bad Agile\" from \"Good Agile\". I urge you to read this long post as it contains many points that try to explain what \"Bad Agile\" is.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good Agile, Bad Agile By Roy Osherove October 11, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published October 11, 2006; technical details may be outdated. Steve Yegge, an employee at Google, [has a very interesting post](http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html) where he separates "Bad Agile" from "Good Agile". I urge you to read this long post as it contains many points that try to explain what "Bad Agile" is. There's a lot I want to talk about in regards to that post, but first it's important to read it (and it's 180+ comments) to get an idea of Steve's thoughts. Regardless of his thoughts, he describes Google as the ultimate place to work for. The stuff he mentions that goes on there sounds really great. I'd love to take a tour of the place some day. Steve thinks that "Google" is the new "Good Agile", and that the word "Agile" is too overloaded and should be ridden of. Personally I think that he has some valid points, but I tend to disagree with many other points he makes. Funnily enough, he mentions two practices that Agile Advocates use: > "I would caution you to be skeptical of two kinds of claims: > \- "all the good stuff he described is really Agile" > \- "all the bad stuff he described is the fault of the team's execution of the process" > > You'll hear them time and again. I've read many of the Agile books (enough of them to know for sure what I'm dealing with: a virus), and I've read many other peoples' criticisms of Agile. Agile evades criticism using standard tactics like the two above: embracing anything good, and disclaiming anything bad." True, I think this is a real concern. As a pragmatist, I try to be realistic with Agile practices, and I've never seen companies follow an exact methodology to the letter, but instead use a bunch of practices from several places, and integrate them into their teams. It's a much more reasonable place to be than turning your whole world upside down, and you can always add more agility when you need it. I **am** tempted to label all the good things he wrote in that post as "Agile". Seriously, they do feel like it. But just because he said "beware of these claims" doesn't mean they aren't correct. It's a sign of a great writer when he can predict the reactions of the reader and the people reacting to it, and pre-answer those concerns. Do you think he's right? Wrong? both?  Your comments are welcome. I'll be writing more about this in the coming days**.** ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Oct 15, 2006 ### [MassDataHandler: generate test data to help with data layer testing](https://osherove.com/blog/2006/10/15/massdatahandler-generate-test-data-to-help-with-data-layer-t.html) - Oct 14, 2006 ### [DataFresh - Database rollback library for unit tests](https://osherove.com/blog/2006/10/14/datafresh-database-rollback-library-for-unit-tests.html) - Oct 10, 2006 ### [The Art Of Unit Testing - Download Chapter 1](https://osherove.com/blog/2006/10/10/the-art-of-unit-testing-download-chapter-1.html) - Oct 3, 2006 ### [Avoid multiple asserts in a single unit test: revisited](https://osherove.com/blog/2006/10/3/avoid-multiple-asserts-in-a-single-unit-test-revisited.html) --- title: "How to get disqualified as an MVP" url: "https://osherove.com/blog/2006/10/11/how-to-get-disqualified-as-an-mvp.md" canonical: "https://osherove.com/blog/2006/10/11/how-to-get-disqualified-as-an-mvp.html" published: "2006-10-11T00:04:57" updated: "2006-10-11T00:04:57" tags: ["Off Topic"] author: "Roy Osherove" description: "Jamie Cansdale is not an MVP anymore - his title wasn't renewed this year. \"So what\" you may think. \"Who on earth is Jamie whatever?\". Jamie is the guy that created TestDriven.NET (formerly known as \"NUnit Addin\") - one…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to get disqualified as an MVP By Roy Osherove October 11, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 11, 2006; technical details may be outdated. [Jamie Cansdale is not an MVP anymore](http://weblogs.asp.net/nunitaddin/archive/2006/10/10/MVP-Code-of-Conduct.aspx) - his title wasn't renewed this year. "So what" you may think. "Who on earth is Jamie whatever?". Jamie is the guy that created [TestDriven.NET](http://www.testdriven.net/) (formerly known as "NUnit Addin") - one of the most successful free addins in the VS line, that, to my knowledge, has just roughly same amount of people using it daily as those that use NUnit - which is a lot. So why am I writing about this? Because I think someone made a mistake.  Here is the notice Jamie got when his MVP was not renewed: > "Unfortunately your community participation rate over the past year (in any of the communities including VSIP and ASP.Net) is well below the required level. Even if we were to look beyond the _MVP code of conduct_ concerns I don't believe we could justify reinstating you based on participation." There are two parts to this: - Jamie is a community leader, like it or not. His tool drives a big community which his tool enables to exist - those people that want an easy way to run unit tests inside Visual Studio .NET. He is part of that community and writes in his blog about these things. - The "MVP code of conduct"  is a mysterious beast. My best guess as to what that sentence means would be to the fact that in previous versions, Jamie enabled TestDriven.NET to run in **all** versions of VS.NET, including the Express ones (which are free). To be clear, the Express version of VS does not support building plugins for it, so Jamie hacked his way into glory and created something that would actually run in the Express, giving Developers everywhere a chance to run unit tests even if they couldn't afford Visual Studio Professional. Since then he was forced by MS legal to take that ability down, unfortunately. So, I think the main reason Jamie isn't an MVP anymore is because he "hacked"  the express SKU's, and not being active in the community is just a pretty way of not saying that. Legal issues aside, Jamie "fixed" a mistake Microsoft has made - not putting unit tests inside all versions of VS.NET - and for that he deserves much recognition  - an MVP award for community is exactly what it's about - having that passion that also helps other people do what they need with the tools they have. Microsoft could have been more clear and come out and say it out loud: "you're not an MVP because you misused our product and we don't like that". Unit Tests in VS.NET are a big issue. How big? There was a [petition](http://www.peterprovost.org/archive/2004/06/12/1379.aspx) about this a while ago, which Microsoft failed to pay attention to, [It's right here](http://www.peterprovost.org/archive/2004/06/12/1379.aspx). It's written by [Peter Provost](http://www.peterprovost.org/), who's now a Microsoft Employee in the patterns and practices group (written before he joined MS I believe). I think Peter believes in what he wrote today just as much as he did then - maybe he can help push this forward? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 18, 2006 ### [Nothing to do with Vista](https://osherove.com/blog/2006/10/18/nothing-to-do-with-vista.html) - Oct 15, 2006 ### [Next generation facial mapping technology](https://osherove.com/blog/2006/10/15/next-generation-facial-mapping-technology.html) - Sep 30, 2006 ### [Top 10 Best Presentations Ever](https://osherove.com/blog/2006/9/30/top-10-best-presentations-ever.html) - Sep 21, 2006 ### [Windows Live - porn related? Google thinks so.](https://osherove.com/blog/2006/9/21/windows-live-porn-related-google-thinks-so.html) --- title: "The Art Of Unit Testing - Download Chapter 1" url: "https://osherove.com/blog/2006/10/10/the-art-of-unit-testing-download-chapter-1.md" canonical: "https://osherove.com/blog/2006/10/10/the-art-of-unit-testing-download-chapter-1.html" published: "2006-10-10T20:03:25" updated: "2006-10-10T20:03:25" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Free book chapters", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "I'm happy to announce that draft of chapter 1 from my upcoming book \" The Art of Unit Testing \" is available for download immediately - click here for the PDF . the book will also be available to download from Manning's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Art Of Unit Testing - Download Chapter 1 By Roy Osherove October 10, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Free book chapters](https://osherove.com/blog/category/free-book-chapters), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 10, 2006; technical details may be outdated. I'm happy to announce that draft of chapter 1 from my upcoming book "[The Art of Unit Testing](http://the.artofunittesting.com/)" is available for download immediately - [click here for the PDF](http://the.artofunittesting.com/LinkClick.aspx?link=http%3a%2f%2fwww.manning.com%2fosherove%2fCh1_Unit_Testing.pdf&tabid=194&mid=636). the book will also be available to download from [Manning's home page](http://www.manning.com/). **Chapter summary:** Chapter 1 tries to give a better definition of what a unit test is, by first trying to understand what **isn't** a unit test (integration tests are often mistaken for unit tests). It also covers the basics of what makes a **good unit test** instead of just saying what any unit test might be. It also covers what unit test frameworks are, how they got started and what Test Driven Development is. **Book Site:** I'm also announcing the book site: [http://the.artofunittesting.com/](http://the.artofunittesting.com/) During the writing of this book, I'll make more chapters available, though not all of them, for understandable reasons. You'll be able to read rough drafts of all chapters if you subscribe to [manning's early access program](http://www.manning.com/about/meap.html), I'll let you know when my book is available there. **Your feedback is appreciated:** I welcome critics, comments, fixes, praise, incoming links and anything else you'd want to write to me about this chapter or the book site. Write an email to \[email removed\] . ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Oct 14, 2006 ### [DataFresh - Database rollback library for unit tests](https://osherove.com/blog/2006/10/14/datafresh-database-rollback-library-for-unit-tests.html) - Oct 11, 2006 ### [Good Agile, Bad Agile](https://osherove.com/blog/2006/10/11/good-agile-bad-agile.html) - Oct 3, 2006 ### [Avoid multiple asserts in a single unit test: revisited](https://osherove.com/blog/2006/10/3/avoid-multiple-asserts-in-a-single-unit-test-revisited.html) - Oct 2, 2006 ### [My sessions at TechEd Europe 2006](https://osherove.com/blog/2006/10/2/my-sessions-at-teched-europe-2006.html) --- title: "Installing VS 2005 SP1 Beta on Vista RC1" url: "https://osherove.com/blog/2006/10/10/installing-vs-2005-sp1-beta-on-vista-rc1.md" canonical: "https://osherove.com/blog/2006/10/10/installing-vs-2005-sp1-beta-on-vista-rc1.html" published: "2006-10-10T12:51:53" updated: "2006-10-10T12:51:53" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Installing Visual Studio 2005 SP1 Beta on Vista RC1 sounds like a common task until you figure out the UAC - User access control, and the enhanced security functionality in Vista. You may find that your install suddenly…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Installing VS 2005 SP1 Beta on Vista RC1 By Roy Osherove October 10, 2006 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published October 10, 2006; technical details may be outdated. Installing [Visual Studio 2005 SP1 Beta](http://blogs.msdn.com/heaths/archive/2006/09/26/772513.aspx) on Vista RC1 sounds like a common task until you figure out the UAC - User access control, and the enhanced security functionality in Vista. You may find that your install suddenly just stops in the middle or does not work at all. The solution is quite simple: You need to run the Setup as an Administrator on the machine (shift right click, "run as"), and from then on, you need to also run VS 2005 as Administrator on the machine (you can define a shortcut on the desktop that has the "run as" fixed on it as admin). here are some more links to help you with more problems SP1 may cause: [http://blogs.msdn.com/heaths/archive/2006/10/06/VS-2005-SP1-Takes-a-While-to-Install.aspx](http://blogs.msdn.com/heaths/archive/2006/10/06/VS-2005-SP1-Takes-a-While-to-Install.aspx) [http://blogs.msdn.com/heaths/archive/2006/10/06/VS-2005-SP1-Requires-a-lot-of-Disk-Space.aspx](http://blogs.msdn.com/heaths/archive/2006/10/06/VS-2005-SP1-Requires-a-lot-of-Disk-Space.aspx) [http://blogs.msdn.com/heaths/archive/2006/10/06/VS-2005-SP1-Tries-to-Install-Multiple-Times.aspx](http://blogs.msdn.com/heaths/archive/2006/10/06/VS-2005-SP1-Tries-to-Install-Multiple-Times.aspx) Thanks to [Corrado](http://blogs.ugidotnet.org/corrado) for posting this on one of the mailing lists I frequent. ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Oct 22, 2006 ### [Israeli .NET bloggers you should read](https://osherove.com/blog/2006/10/22/israeli-net-bloggers-you-should-read.html) - Oct 14, 2006 ### [Introducing Perf+ , A better perfmon](https://osherove.com/blog/2006/10/14/introducing-perf-a-better-perfmon.html) - Oct 9, 2006 ### [Regulazy 1.0.3 Released](https://osherove.com/blog/2006/10/9/regulazy-103-released.html) - Sep 26, 2006 ### [Must watch: Working with Sysinternals tools at DnrTV](https://osherove.com/blog/2006/9/26/must-watch-working-with-sysinternals-tools-at-dnrtv.html) --- title: "Regulazy 1.0.3 Released" url: "https://osherove.com/blog/2006/10/9/regulazy-103-released.md" canonical: "https://osherove.com/blog/2006/10/9/regulazy-103-released.html" published: "2006-10-09T02:03:31" updated: "2006-10-09T02:03:31" tags: ["Cool Tools", "General Software Devel...", "Regex", "Regular Expressions"] author: "Roy Osherove" description: "The monthly iteration release of Regulazy is up over here . Regulazy is a visual Regex Creation tool for beginners. It contains an easy \"point and click\" user interface , and allows creating regular expressions for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Regulazy 1.0.3 Released By Roy Osherove October 9, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Regex](https://osherove.com/blog/category/regex), [Regular Expressions](https://osherove.com/blog/category/regular-expressions) **Historical article** · Originally published October 9, 2006; technical details may be outdated. The monthly iteration release of [Regulazy is up over here](http://tools.osherove.com/). ![Short Regulazy Sample](https://osherove.com/img/wb/5bcdc6e6_tools.osherove.com_Portals_6_RegulazyDemo.gif) Regulazy is a visual Regex Creation tool for beginners. It contains an **easy "point and click" user interface**, and allows creating regular expressions for simple searches **almost instantly without requiring Regex syntax knowledge** from the end user! **What's New** **Version 1.03 - 9/10/06** - **Fixed** Some bugs relating to creating encapsulating scopes from existing ones - **Fixed** exception when trying to set existing scope as new scope - **Fixed** tooltip will now show only first 100 chars of rule if rule is too long - **Added:** Automatic Scope creation Button for known patterns in Text. When you load a piece of text for the first time. Regulazy will automatically highlight parts of the text it can recognize as common patterns based on patterns in the file Auto.Rules in the application directory. This should save plenty of time for initial work. - **Added**: Automatic scopes are performed on a background thread. - Added many rules to the auto.rules file - **Enhanced** speed of drawing symbols on screen and other features - **Added**: Suggestion process is run on a background thread. - **Added**: Import sample from a web page Dialog: Menu Import-Web Page - 1: (partially works) Select redered page text and get the underlying HTML - 2\. or select parts of the actual Page HTML (always works) - **Added**: Moving between Regex and Text Edit mode without changing the text - text scopes are remembered ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Oct 15, 2006 ### [MassDataHandler: generate test data to help with data layer testing](https://osherove.com/blog/2006/10/15/massdatahandler-generate-test-data-to-help-with-data-layer-t.html) - Oct 14, 2006 ### [Introducing Perf+ , A better perfmon](https://osherove.com/blog/2006/10/14/introducing-perf-a-better-perfmon.html) - Oct 1, 2006 ### [\[Cool Tool\] NetSetMan - switch network configurations in a single click](https://osherove.com/blog/2006/10/1/cool-tool-netsetman-switch-network-configurations-in-a-singl.html) - Sep 26, 2006 ### [Must watch: Working with Sysinternals tools at DnrTV](https://osherove.com/blog/2006/9/26/must-watch-working-with-sysinternals-tools-at-dnrtv.html) --- title: "Avoid multiple asserts in a single unit test: revisited" url: "https://osherove.com/blog/2006/10/3/avoid-multiple-asserts-in-a-single-unit-test-revisited.md" canonical: "https://osherove.com/blog/2006/10/3/avoid-multiple-asserts-in-a-single-unit-test-revisited.html" published: "2006-10-03T22:30:13" updated: "2006-10-03T22:30:13" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "James Avery argues that what he'd really like to see in a unit test framework is the ability to run (and fail) multiple asserts within the same test. As some background, I personally am in favor of the \" single assert…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Avoid multiple asserts in a single unit test: revisited By Roy Osherove October 3, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published October 3, 2006; technical details may be outdated. [James Avery argues](http://dotavery.com/blog/archive/2006/09/25/21263.aspx) that what he'd really like to see in a unit test framework is the ability to run (and fail) multiple asserts within the same test. As some background, I personally am in favor of the "[single assert per unit test](http://msdn.microsoft.com/msdnmag/issues/06/01/UnitTesting/default.aspx)" idea for several reasons, the most prominent of them is that currently, all unit test frameworks I know in .NET will fail the test on the first failing assert call. The reason this is how it works is that the framework detects failure by catching a special type of exception (AssertionException if I recall correctly) that is thrown by the assert method. you can't really catch an exception and keep on going to the next line unless the framework automagically instruments each line of assert code in the test with a try-catch (which would be one way to archive James' request) So currently, what that means that if you have other asserts after the one that failed - they won't run and you won't know if they would have succeeded or not, thus giving you only a partial picture of what's failing and what isn't, which is sometimes a terrible way to try and discover a bug. the other reasons why you'd want to have only a single assert per test are that a test with multiple asserts is actually testing multiple things, so it may as well be considered as multiple tests. A good "tell" sign is when it's hard to name a test because it does several things instead of just one. **There is another very important reason** which I neglected to talk about in my previous posts or articles, which I have recently realized. Even if we assume that all the asserts are run, you're essentially running multiple tests on code that has "dirty" state. For example, asserting on the result of a method call may actually change the state of the object under test so that the next call to that method may actually be skewed because of the previous asserts. that's a bad world to be in. having single assert per test means you also know exactly the state of your object before the assert. Worst yet, you may not have the object state changed now when you're writing the current tests, but sometime in the future you may add that state changing ability to some method or property call and suddenly some of your tests will break unexpectedly, but only on the 2nd or 3rd assert call in the same test. That's a bug that would be very hard to find, because it's actually in the tests, and the behavior is expected. Having said that, I'd like to walk through James' points one by one as to why he'd like to have multiple-assert ability in the framework and why separating tests per assert is not his cup of tea. - **"I think it’s actually harder to read since the assertions are scattered around in separate methods. "** It shouldn't be harder to read if each test was really simple and was named correctly, and in fact, James' tests are pretty readable as far as I'm concerned. they just look like a lot more tests than his "simple" example. I actually think that his "simple" example may **seem** easier to read, but the tests are harder to understand unless you actually read through all the code in them. - **"It would increase the number of tests. On my current project we have 1800 tests, if we followed the one assertion rule we would have over 6,000 I am sure. "** So? In essence what you really are doing is running 6000 tests that only **appear** to be 1800. that might mean that if one of the 1800 tests breaks it may be harder to realize what the problem is without reading through that test code and finding the actual assert that failed (aka "debugging"), and even then you may have a hard time finding the bug if you have asserts in that test that haven't even run. - **"If my method breaks and starts returning null then I have 8 tests failing instead of just 2, this means I have to know the dependency tree of my tests to find the real issue. "** That is true also when you have multiple asserts in the same test, I would think, or you probably wouldn't have written them all together. so if you had two failing tests, how many failing asserts would you have? you may have had only 2. you really want to be sure that your other asserts would fail given that the first two fail, which is not always the case (it is the case in James' examples).  Imagine that you had 4 small failing tests and four small passing tests - wouldn't that be great instead of two big failing tests?  for example your method could still return null, but a you may have an assert that shows that a specific state of the object is actually true, as you expect it to be. If that assert never runs, you can't know that and might look in the wrong place to fix the bug. if it is in a separate test you know that it succeeded. if it is run inside the test, you again face the possibility of changing the object's state as mentioned earlier. - **"Any code I have to write to setup the data for my test has to be duplicated 8 times. (if I move that setup data to the setup method than I am effectively limiting my fixtures to one fixture per test) "** You can and should extract setup code for specific tests which are reusable into an external private method (XXX\_init for example) that is called from each of those tests. No one forces you to use the setup method for that. the setup method is there only for **global** setup routines, which are used by all the tests. - **"I now have over double the amount of code. I am constantly trying to reduce the amount of code in my project, whether test or production, and anything that doubles it better add a ton of value."** if the tests are concise and code is refactored correctly inside the tests, that "larger" amount of code is simply a better syntactical way to express exactly what you did before  - write all the tests you wanted, but they are well separated and solid and readable. Just like you may want to write some method calls in two lines of code instead of one for the sake of readability, this is the same idea, but for the sake of solid confined tests. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Oct 11, 2006 ### [Good Agile, Bad Agile](https://osherove.com/blog/2006/10/11/good-agile-bad-agile.html) - Oct 10, 2006 ### [The Art Of Unit Testing - Download Chapter 1](https://osherove.com/blog/2006/10/10/the-art-of-unit-testing-download-chapter-1.html) - Oct 2, 2006 ### [My sessions at TechEd Europe 2006](https://osherove.com/blog/2006/10/2/my-sessions-at-teched-europe-2006.html) - Sep 27, 2006 ### [Using TypeMock vs. Design for testability](https://osherove.com/blog/2006/9/27/using-typemock-vs-design-for-testability.html) --- title: "My sessions at TechEd Europe 2006" url: "https://osherove.com/blog/2006/10/2/my-sessions-at-teched-europe-2006.md" canonical: "https://osherove.com/blog/2006/10/2/my-sessions-at-teched-europe-2006.html" published: "2006-10-02T04:40:10" updated: "2006-10-02T04:40:10" tags: ["Agile", "Agile Related", "Community News", "Team System"] author: "Roy Osherove" description: "here's the current list of sessions I'll be doing at Tech Ed Europe: Developers: (Note: the Test Driven Development Chalk & Talk is in the morning after the Tech Ed Party - if you're there - you're hardcore :) ) ARC207…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My sessions at TechEd Europe 2006 By Roy Osherove October 2, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Community News](https://osherove.com/blog/category/community-news), [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published October 2, 2006; technical details may be outdated. here's the current list of sessions I'll be doing at [Tech Ed Europe: Developers:](http://www.mseventseurope.com/TechEd/06/Pre/Static/Developers/SessionSearch.aspx) _(Note: the Test Driven Development Chalk & Talk is in the morning after the Tech Ed Party - if you're there - you're hardcore :) )_ **ARC207 Introduction to Agile Methodologies and Concepts** **Tue Nov 7 14:15 - 15:30** Ever knew on your first day on the project that you're going to miss the deadline? Ever been 'surprised' that the customer changed their mind? Ever had long nights trying to fit your latest changes into code that just keeps on breaking? You're not alone. Wondering where you should start if you want to go Agile? This session is for you. We'll take a look at the traditional 'Engineering' based methodologies such as the waterfall model, how they came to be, why most projects today fail, and what the differences are between Engineering methodologies and 'Agile' methodologies. We'll explore what 'Embrace Change' really means in the context of Agile development and what 'People-Oriented' 'Adaptive' development mean in that context. We'll see how methodologies such as XP, Scrum, Microsoft Solutions Framework (MSF) Agile and others fit into the context of Agile development and talk about the ways in which one can start adopting agile in their organization. Finally, we'll look at some of the most basic steps any organization can take in the road to becoming more and more Agile. **DEV324 Implementing Continuous Integration: With and Without Team System** **Thu Nov 9 15:45 - 17:00** In this session we'll dive into a world where the system is built and run on a daily basis, and even on an hourly basis. We'll discuss Tools and Libraries that help you get there with VS 2003, 2005 and Team System. Even with Express tools – it's all possible, and more easy than you think. **DEVWD14 Test Driven Development: Myths and Misconceptions** **(chalk & Talk)** **Fri Nov 10 09:00 - 10:15** In this Whiteboard session, we'll have an open conversation about what works and what doesn't with Test Driven Development. Will it fit you and your team? How much does it cost? How much could it save? This is the place to ask all the hard questions, and get some real world answers. **PRE001 Agile Development with Team System** **(full pre conference day)** **Mon Nov 6 12:00 - 19:00** Spend the day learning about real world experiences in implementing Agile Development in your organization, and what it takes to implement some of the practices using Team System. We'll start off by exploring the differences between Agile Methodologies and the more formal "Engineering" methodologies. With that knowledge in mind, we'll explore Agile practices and how they fit into working with Team System (or if they don't). Some of the practices covered are: Unit Testing and Test Driven Development, Smaller Iterations, Continuous Integration with Team Build, Refactoring Mercilessly and more. We'll also be diving in to some topics which you'll relate to no matter what tool you work with: Designing for testability, Unit Testing Best Practices, and 5 steps you can do to become more agile tomorrow. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Oct 10, 2006 ### [The Art Of Unit Testing - Download Chapter 1](https://osherove.com/blog/2006/10/10/the-art-of-unit-testing-download-chapter-1.html) - Oct 3, 2006 ### [Avoid multiple asserts in a single unit test: revisited](https://osherove.com/blog/2006/10/3/avoid-multiple-asserts-in-a-single-unit-test-revisited.html) - Sep 27, 2006 ### [Using TypeMock vs. Design for testability](https://osherove.com/blog/2006/9/27/using-typemock-vs-design-for-testability.html) - Sep 25, 2006 ### [The future of unit testing tools - MbUnit, NUnit, NMock and FIT](https://osherove.com/blog/2006/9/25/the-future-of-unit-testing-tools-mbunit-nunit-nmock-and-fit.html) --- title: "[Cool Tool] NetSetMan - switch network configurations in a single click" url: "https://osherove.com/blog/2006/10/1/cool-tool-netsetman-switch-network-configurations-in-a-singl.md" canonical: "https://osherove.com/blog/2006/10/1/cool-tool-netsetman-switch-network-configurations-in-a-singl.html" published: "2006-10-01T15:37:46" updated: "2006-10-01T15:37:46" tags: ["Cool Tools"] author: "Roy Osherove" description: "Here's a great little program that saves many lots of headaches when I take my laptop to different places. It's called NetSetMan (as in \"Network Settings Manager\"), and it has a free version with 99% of the features…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool Tool\] NetSetMan - switch network configurations in a single click By Roy Osherove October 1, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 1, 2006; technical details may be outdated. Here's a great little program that saves many lots of headaches when I take my laptop to different places. It's called [NetSetMan](http://www.netsetman.com/) (as in "Network Settings Manager"), and it has a free version with 99% of the features most of us need (the pro also has the ability to change the proxy settings). Very cool, and very useful. [![](https://osherove.com/img/wb/07540564_www.netsetman.com_img_netsetman2free.png)](http://www,netsetman.com/) **NetSetMan** is a network settings manager which can easily switch between 6 different, visually structured profiles including: - IP Address - Subnet Mask - Default Gateway - Preferred & Alternate DNS Server - Computer Name - Workgroup - DNS Domain - WINS Server - Default Printer - Run Scripts **Additionally only in the Pro version** - Unlimited Amount of Profiles - Network-Domain - Complete Proxy Settings (Internet Explorer & Firefox) - Home Page (Internet Explorer & Firefox) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Oct 14, 2006 ### [Introducing Perf+ , A better perfmon](https://osherove.com/blog/2006/10/14/introducing-perf-a-better-perfmon.html) - Oct 9, 2006 ### [Regulazy 1.0.3 Released](https://osherove.com/blog/2006/10/9/regulazy-103-released.html) - Sep 26, 2006 ### [Must watch: Working with Sysinternals tools at DnrTV](https://osherove.com/blog/2006/9/26/must-watch-working-with-sysinternals-tools-at-dnrtv.html) - Sep 25, 2006 ### [Enter the Larkware Contest](https://osherove.com/blog/2006/9/25/enter-the-larkware-contest.html) --- title: "Top 10 Best Presentations Ever" url: "https://osherove.com/blog/2006/9/30/top-10-best-presentations-ever.md" canonical: "https://osherove.com/blog/2006/9/30/top-10-best-presentations-ever.html" published: "2006-09-30T23:48:42" updated: "2006-09-30T23:48:42" tags: ["Off Topic"] author: "Roy Osherove" description: "A friend sent this to me the other day, and I thought it'd be a good link to have here to follow up on every once in a while. Folks, here are two folk's selection of the Top 10 Best Presentations Ever . Steve Jobs…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Top 10 Best Presentations Ever By Roy Osherove September 30, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 30, 2006; technical details may be outdated. A friend sent this to me the other day, and I thought it'd be a good link to have here to follow up on every once in a while. Folks, here are two folk's selection of the [Top 10 Best Presentations Ever](http://www.knowhr.com/blog/2006/08/21/top-10-best-presentations-ever/) . - [Steve Jobs introduces the Macintosh in 1984](http://video.google.com/videoplay?docid=8631701936876784775). - [Dick Hardt’s Identity 2.0 presentation at OSCON 2005](http://www.identity20.com/media/OSCON2005/). - [Guy Kawasaki’s Art of the Start speech at TiECon 2006](http://blog.guykawasaki.com/2006/06/the_art_of_the_.html). - [Dr. Martin Luther King’s I Have a Dream speech in 1963](http://video.google.com/videoplay?docid=1732754907698549493). Read the rest [here](http://www.knowhr.com/blog/2006/08/21/top-10-best-presentations-ever/) (with full descriptions on why they are the best...) Feel free to put your favorites in the comments. If there are good ones, I'll compile a whole new list from the comments and post it up as a separate article with credits to the commenter. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 15, 2006 ### [Next generation facial mapping technology](https://osherove.com/blog/2006/10/15/next-generation-facial-mapping-technology.html) - Oct 11, 2006 ### [How to get disqualified as an MVP](https://osherove.com/blog/2006/10/11/how-to-get-disqualified-as-an-mvp.html) - Sep 21, 2006 ### [Windows Live - porn related? Google thinks so.](https://osherove.com/blog/2006/9/21/windows-live-porn-related-google-thinks-so.html) - Sep 9, 2006 ### [Cool ScreenSaver: Electric Sheep](https://osherove.com/blog/2006/9/9/cool-screensaver-electric-sheep.html) --- title: "Notes from my .NET Rocks show on Regex" url: "https://osherove.com/blog/2006/9/27/notes-from-my-net-rocks-show-on-regex.md" canonical: "https://osherove.com/blog/2006/9/27/notes-from-my-net-rocks-show-on-regex.html" published: "2006-09-27T11:50:48" updated: "2006-09-27T11:50:48" tags: [] author: "Roy Osherove" description: "Notes from my .NET Rocks show : I say waaay to many \"uh\"s and \"you know\"s and \"for example\" One big mistake in the Regex tutorial : i said \".\" means \"zero or more of something\" but it's actually \" * \". Note about the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Notes from my .NET Rocks show on Regex By Roy Osherove September 27, 2006 **Historical article** · Originally published September 27, 2006; technical details may be outdated. Notes from my[.NET Rocks show](http://www.dotnetrocks.com/default.aspx?showID=198): - I say waaay to many "uh"s and "you know"s and "for example" - One big mistake in the Regex tutorial :  i said "." means "zero or more of something" but it's actually " \* ". - Note about the various regex frameworks out there: - Think of the difference between the different regex libraries out there like the difference between Ansi-SQL and PL-SQL: same - but different capabilities based on same basic standard - The part about [Source Server](http://sourceserver.osherove.com/) in the end is totally not understandable - The "grumpy" question could have been answered better, and I'm not sure it was in place at all... --- title: "Using TypeMock vs. Design for testability" url: "https://osherove.com/blog/2006/9/27/using-typemock-vs-design-for-testability.md" canonical: "https://osherove.com/blog/2006/9/27/using-typemock-vs-design-for-testability.html" published: "2006-09-27T10:17:16" updated: "2006-09-27T10:17:16" tags: ["Agile", "Art Of Unit Testing"] author: "Roy Osherove" description: "Eli Lopian, the Israeli guy who is now running TypeMock - one of the most powerful Mocking frameworks out there for.NET developers, opened a blog . I personally know the guy and he is a brilliant coder and architect -…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Using TypeMock vs. Design for testability By Roy Osherove September 27, 2006 In [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published September 27, 2006; technical details may be outdated. Eli Lopian, the Israeli guy who is now running [TypeMock](http://www.typemock.com/) - one of the most powerful Mocking frameworks out there for.NET developers, [opened a blog](http://www.elilopian.com/). I personally know the guy and he is a brilliant coder and architect - so it's worth listening to what he has to say. For example. [in this post he lists resources for and against using TypeMock](http://elilopian.com/2006/09/26/typemocknet-and-designing-for-testability.aspx#Comment)  because of the design issues you can run into - you don't have to design for testability if you use it - you just intercept all calls to objects(even static ones) when you test. it's really quite scary and too easy - does not make you think at all. I'm from the "Design for testability" side. Eli is not - and he always has interesting arguments. He even wrote a rather [controversial article on codeproject](http://www.codeproject.com/useritems/StopDesign4Tests.asp) talking about this issue. Read it to get both sides. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Oct 3, 2006 ### [Avoid multiple asserts in a single unit test: revisited](https://osherove.com/blog/2006/10/3/avoid-multiple-asserts-in-a-single-unit-test-revisited.html) - Oct 2, 2006 ### [My sessions at TechEd Europe 2006](https://osherove.com/blog/2006/10/2/my-sessions-at-teched-europe-2006.html) - Sep 25, 2006 ### [The future of unit testing tools - MbUnit, NUnit, NMock and FIT](https://osherove.com/blog/2006/9/25/the-future-of-unit-testing-tools-mbunit-nunit-nmock-and-fit.html) - Sep 24, 2006 ### [Continuous integration with Team System and Team Foundation Server](https://osherove.com/blog/2006/9/24/continuous-integration-with-team-system-and-team-foundation.html) --- title: "U2U refuses to work with Israelis due to ' War crimes and apartheid' in Israel" url: "https://osherove.com/blog/2006/9/26/u2u-refuses-to-work-with-israelis-due-to-war-crimes-and-apar.md" canonical: "https://osherove.com/blog/2006/9/26/u2u-refuses-to-work-with-israelis-due-to-war-crimes-and-apar.html" published: "2006-09-26T21:29:35" updated: "2006-09-26T21:29:35" tags: [] author: "Roy Osherove" description: "[Update: be sure to read the comments as well -they contain more interesting opinions] Here's a story that made me angry. It involves a Belgian company called U2U . A company that I personally got to meet some of its…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # U2U refuses to work with Israelis due to ' War crimes and apartheid' in Israel By Roy Osherove September 26, 2006 **Historical article** · Originally published September 26, 2006; technical details may be outdated. _\[Update: be sure to read the comments as well -they contain more interesting opinions\]_ Here's a story that made me angry. It involves a Belgian company called [U2U](http://www.u2u.be/). A company that I personally got to meet some of its employees when I was at teched europe.  According to a [news story on YNet(Hebrew)](http://www.ynet.co.il/articles/0,7340,L-3308353,00.html) - an Israeli newspaper with an online extension, the CEO of [U2U](http://www.u2u.be/), Wim Uyttersprot, has refused to do business with an Israeli company (who was not named in the article) due to the war we had in Lebanon less than 2 months ago (which was totally justified after a few Israeli soldiers  were kidnapped into Lebanon territory - they haven't been recovered yet, BTW). I'm translating parts from the article into English with my notes after that: > "Business man "Avner" (not real name), who does product management and development marketing  and training, contacted after the war in Lebanon a Belgian company with the intent of cooperating with them and was refused due to "war crimes and apartheid regime" by Israel. > > Avner Contacted a Belgian Company named U2U who specializes in training and consulting to developers in .NET Technologies and was interested in creating a cooperation between the two companies. > > ..... > > "_I value your interest in my company_" writes Wim,the company CEO, in a response that was forwarded to YNet,  "_but after the inhumane and destructive war crimes Israel has done in Lebanon, and due to the apartheid regime that your government leads in Palestine, U2U does not feel fit to be tied to Israeli Products. I hope the political situation in your country will change dramatically and will be based on peace and respect for non Jewish cultures_" > > Despite the anger, Wim signs "_Warm Regards, Wim Uyttersprot_" > > Avner contacted the company again and let them know that their answer is non dignified and non professional, and tried to appeal to Uyttersprot's reasoning. > > "I wrote him: _'Don't believe everything you read in the papers or see on TV. Israel is a democracy surrounded by countries run by dictators. Europe suffers from terror as well'_ " Tells Avner to YNet. > > "_I told him that Israel is a technological Center as well, and that many of Microsoft's products that he works with are developed right here in Haifa, Israel_." he Adds. > > Avner also mentioned to U2U that he intends to contact papers in Israel and Belgium, and to Microsoft, of which U2U is a certified partner, but received no response. > > All of YNet's attempts to contact the company have not received a response either." End Quote/translation. To say the least, I don't agree with Wim's actions, and I'm posting this so that [U2U](http://www.u2u.be/) at least gets known for its decision. I'm not totally surprised - the news and general media are and have always been biased against Israel, and while Israel is not a perfect political entity and we have our share of issues, Wim is wrong in closing the ties. There is no black and white in these things - only gray. Big, ugly, heavy, dirty gray, and everyone loses there. I think that under the same circumstances that we face, no country, Belgium or otherwise, could have done better. And no, we don't have apartheid, but we do have roadblocks, Which many people in Israel don't like due to some harsh incidents occurring there. So why do we have them? One of the basic problems is we haven't found a better solution to roadblocks yet - whenever we open them up- bombers come in and bomb women and children in buses and Discos. How fast would it take **you** to shut down the road the terrorists use? Unfortunately, innocent civilians also can't get to work that way - ambulances are stopped (ambulances have in several cases been found to contain explosives and weapons, not to mention explosives found in children's carts or worn on pregnant women - wouldn't _you_ check each and every one who is passing through?) And yes, we do condone anything non Jewish - many people have Druse and Arab friends, and many Arab-Israelis live right smack in the middle of many Israeli cities, including Jerusalem. When both sides want to - people do live in harmony. But try and do that when we have missiles still being shot into the south of Israel on a daily basis from Gaza. Would you easily trust people who you know want to kill you(some of them) and who believe that all of Israel should be theirs and all Jews should be thrown to the sea? Not all Arabs in the Gaza strip think that, but Hamas - the leading party ruling there, has that as part of its platform. What do you think happened if Hamas got to rule all of Israel? Do you think many of us would be left alive here? Now try and build trust. Hard isn't it? Wim, If there's one thing I hate - It's mis-informed people making rash judgments especially [when your own country has a history of abuse it would rather forget](http://www.wehaitians.com/belgium%20confronts%20its%20heart%20of%20darkness.html). If I said that U2U is anti-Semitic, would I be doing the same thing to them? How would that feel? They are _not_ Antisemitic, I know. I know at least a couple of bloggers who work there which I respect. I just think the CEO made a regrettable decision, and people should be informed about it. If Israel isn't getting U2U's business, perhaps U2U would be better off not getting any business from anyone who does support Israel - standby your decisions - follow through. Right now I bet that Wim is getting plenty of hate emails from stupid Israeli teenagers who read that article (the comments on that article list Wim's email from the site - guess it's time to change emails!). That's stupid thing to do, but the ball is already rolling. perhaps some stupid Israeli wannabe hacker will try to DOS the site. Also stupid stupid stupid. That's not going to get us anywhere. What Wim does need to understand is that we are intelligent human beings who do want to live in peace with our neighbors - we tried several times - just look at the past 10 years and all the agreements we tried to accomplish. If you can't accept that, fine. Thanks, and god speed. Wim, personally from me, your business is not welcome here anymore until you figure out that we are all on the same side. Roy. --- title: "Must watch: Working with Sysinternals tools at DnrTV" url: "https://osherove.com/blog/2006/9/26/must-watch-working-with-sysinternals-tools-at-dnrtv.md" canonical: "https://osherove.com/blog/2006/9/26/must-watch-working-with-sysinternals-tools-at-dnrtv.html" published: "2006-09-26T16:07:22" updated: "2006-09-26T16:07:22" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "Speaking of DnrTV, you really have to watch the show where Scott Hanselman shows off how to use various tools from SysInternals . These tools could seriously save you hours of work, sweat, tears, blood and ink, and they…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Must watch: Working with Sysinternals tools at DnrTV By Roy Osherove September 26, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published September 26, 2006; technical details may be outdated. Speaking of DnrTV, you really have [to watch the show where Scott Hanselman shows off how to use various tools from SysInternals](http://www.dnrtv.com/default.aspx?showID=35). [These tools](http://www.sysinternals.com/) could seriously save you hours of work, sweat, tears, blood and ink, and they are totally free (hopefully it will stay that way now that Microsoft has bought them) Download it, show it to all new devs at your company, and keep a record for the future. If you want even more, you can get the free video from the Sysinternals guys themselves which you [can download here](http://www.sysinternals.com/videos.html). You can also buy a set of 6 DVDs with much more detailed info on that page, but the first one if free and is good. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Oct 9, 2006 ### [Regulazy 1.0.3 Released](https://osherove.com/blog/2006/10/9/regulazy-103-released.html) - Oct 1, 2006 ### [\[Cool Tool\] NetSetMan - switch network configurations in a single click](https://osherove.com/blog/2006/10/1/cool-tool-netsetman-switch-network-configurations-in-a-singl.html) - Sep 25, 2006 ### [Enter the Larkware Contest](https://osherove.com/blog/2006/9/25/enter-the-larkware-contest.html) - Sep 25, 2006 ### [TorPark - New anonymous, secure, free, USB-Key friendly browser](https://osherove.com/blog/2006/9/25/torpark-new-anonymous-secure-free-usb-key-friendly-browser.html) --- title: ".NET Rocks: Regular Expressions with Roy Osherove" url: "https://osherove.com/blog/2006/9/26/net-rocks-regular-expressions-with-roy-osherove.md" canonical: "https://osherove.com/blog/2006/9/26/net-rocks-regular-expressions-with-roy-osherove.html" published: "2006-09-26T15:59:26" updated: "2006-09-26T15:59:26" tags: [".NET", ".Net 2.0"] author: "Roy Osherove" description: "My .NET Rocks Interview about Regular Expressions in now officially online and I am excited! I'll have a good listen at my walk tonight, so if you get to listen to it first, your comments are welcome on this post. I'd…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .NET Rocks: Regular Expressions with Roy Osherove By Roy Osherove September 26, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published September 26, 2006; technical details may be outdated. My [.NET Rocks Interview about Regular Expressions in now officially online](http://www.dotnetrocks.com/default.aspx?showID=198) and I am excited! I'll have a good listen at my walk tonight, so if you get to listen to it first, your comments are welcome on this post. I'd be happy to hear whatever criticism you have - I'll even review myself on the blog after I listen to it. I promise to be as objective as possible :) We're also planning to do a [DNR TV](http://www.dnrtv.com/) show where I'll show Regex in use (I think I'll show how to do site scraping very easily, or log parsing.. ideas?) Links from the show: [http://tools.osherove.com](http://tools.osherove.com/) [RegExLib - Public Regex Library](http://www.regexlib.com/) [Mastering Regular Expressions - book](https://www.amazon.com/exec/obidos/ASIN/0596528124/iserializable-20) [Dan Appleman's Regular Expression book](https://www.amazon.com/exec/obidos/ASIN/B0000632ZU/iserializable-20) [logparser.com](http://logparser.com/) [RegularExpressions.info RegEx Informational Resource](http://www.regularexpressions.info/) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Nov 7, 2006 ### [SQL Refactor looks cool](https://osherove.com/blog/2006/11/7/sql-refactor-looks-cool.html) - Oct 22, 2006 ### [How to run web services and sites on the same box as sharepoint (avoiding "404 Page Not Found" errors)](https://osherove.com/blog/2006/10/22/how-to-run-web-services-and-sites-on-the-same-box-as-sharepo.html) - Sep 25, 2006 ### [Problem: Underlying HTML from a selection inside WebBrowser Control produces different HTML than the original page](https://osherove.com/blog/2006/9/25/problem-underlying-html-from-a-selection-inside-webbrowser-c.html) - Sep 23, 2006 ### [Faster builds of web projects with VS 2005](https://osherove.com/blog/2006/9/23/faster-builds-of-web-projects-with-vs-2005.html) --- title: "Problem: Underlying HTML from a selection inside WebBrowser Control produces different HTML than the original page" url: "https://osherove.com/blog/2006/9/25/problem-underlying-html-from-a-selection-inside-webbrowser-c.md" canonical: "https://osherove.com/blog/2006/9/25/problem-underlying-html-from-a-selection-inside-webbrowser-c.html" published: "2006-09-25T14:13:54" updated: "2006-09-25T14:13:54" tags: [".NET", ".Net 2.0"] author: "Roy Osherove" description: "here's a problem I've been trying to deal with: the WebBrowser control in .NET 2.0 Winforms. I'm trying to get the selected text's underlying HTML representation, and it works, kind of. IHTMLDocument2 doc2 =…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Problem: Underlying HTML from a selection inside WebBrowser Control produces different HTML than the original page By Roy Osherove September 25, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published September 25, 2006; technical details may be outdated. here's a problem I've been trying to deal with: the WebBrowser control in .NET 2.0 Winforms. I'm trying to get the selected text's underlying HTML representation, and it works, kind of. > IHTMLDocument2 doc2 = browser.Document.DomDocument as IHTMLDocument2; > IHTMLTxtRange range = doc2.selection.createRange() as IHTMLTxtRange; > > string plainTextSelection = range.text; > > string **selectionHtmlText** \= browser.DocumentText; > > string **fullHtmlText** = browser.DocumentText; My problem is that the html text from the selection range is **different** from that of the original HTML underlying the whole document. the bolder variable contain different HTML, which obviously produces the same result but one of them was generated dynamically by the web browser control (or so it seems). So, in the range's html text you might have upper instead of lower cased html tag, different amount of new line chars, different formatting of quotes and double quotes and all sorts of bad stuff including getting the order of html tag attributes different. Does anyone know of a way to get the "real" HTML from a selection inside the web browser control? ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Oct 22, 2006 ### [How to run web services and sites on the same box as sharepoint (avoiding "404 Page Not Found" errors)](https://osherove.com/blog/2006/10/22/how-to-run-web-services-and-sites-on-the-same-box-as-sharepo.html) - Sep 26, 2006 ### [.NET Rocks: Regular Expressions with Roy Osherove](https://osherove.com/blog/2006/9/26/net-rocks-regular-expressions-with-roy-osherove.html) - Sep 23, 2006 ### [Faster builds of web projects with VS 2005](https://osherove.com/blog/2006/9/23/faster-builds-of-web-projects-with-vs-2005.html) - Sep 10, 2006 ### [Regulazy 1.02 is out and about](https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.html) --- title: "Enter the Larkware Contest" url: "https://osherove.com/blog/2006/9/25/enter-the-larkware-contest.md" canonical: "https://osherove.com/blog/2006/9/25/enter-the-larkware-contest.html" published: "2006-09-25T14:03:04" updated: "2006-09-25T14:03:04" tags: ["Cool Tools"] author: "Roy Osherove" description: "If you haven't already entered, you should join the larkware 1,000 contest . It's pretty darn easy to join, and the prizes are awesome. In fact, I'll be joining my self by posting a link to a useful site. here's how you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Enter the Larkware Contest By Roy Osherove September 25, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 25, 2006; technical details may be outdated. If you haven't already entered, you should [join the larkware 1,000 contest](http://www.larkware.com/contest2006/contest1000-13.aspx). It's pretty darn easy to join, and the [prizes](http://www.larkware.com/contest2006/contest1000-13.aspx) are awesome. In fact, I'll be joining my self by posting a link to a useful site. here's how you can enter: 1. At the top of the [Larkware home page](http://www.larkware.com/) you'll see the new "tell a friend" feature. Every time you refer someone to the site using this feature, your own e-mail address will be entered in a prize drawing that will be conducted when I publish #1000. 2. You can also enter by nominating a .NET-related weblog entry on someone else's weblog that you think is especially useful. If you enter this way, both you and the weblog author will be entered in the drawing. To enter by nominating a weblog entry, e-mail me with the URL of the entry that you think deserves wider recognition. No, you can't nominate your own weblog. 3. You can enter as many times as you like. _E-mail addresses collected for the contest will not be shared or used for any other purpose beyond awarding prizes._ ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Oct 1, 2006 ### [\[Cool Tool\] NetSetMan - switch network configurations in a single click](https://osherove.com/blog/2006/10/1/cool-tool-netsetman-switch-network-configurations-in-a-singl.html) - Sep 26, 2006 ### [Must watch: Working with Sysinternals tools at DnrTV](https://osherove.com/blog/2006/9/26/must-watch-working-with-sysinternals-tools-at-dnrtv.html) - Sep 25, 2006 ### [TorPark - New anonymous, secure, free, USB-Key friendly browser](https://osherove.com/blog/2006/9/25/torpark-new-anonymous-secure-free-usb-key-friendly-browser.html) - Sep 11, 2006 ### [BetaMarker.com - Early adopters welcome](https://osherove.com/blog/2006/9/11/betamarkercom-early-adopters-welcome.html) --- title: "The future of unit testing tools - MbUnit, NUnit, NMock and FIT" url: "https://osherove.com/blog/2006/9/25/the-future-of-unit-testing-tools-mbunit-nunit-nmock-and-fit.md" canonical: "https://osherove.com/blog/2006/9/25/the-future-of-unit-testing-tools-mbunit-nunit-nmock-and-fit.html" published: "2006-09-25T10:27:50" updated: "2006-09-25T10:27:50" tags: ["Agile", "Agile Related", "Unit Testing"] author: "Roy Osherove" description: "After I posted that I still recommend NUnit over MbUnit , and reading Andrew's response regarding how it's unlikely that MbUnit will freeze anytime soon, I started thinking some more. What if MbUnit keeps going and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The future of unit testing tools - MbUnit, NUnit, NMock and FIT By Roy Osherove September 25, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 25, 2006; technical details may be outdated. After [I posted that I still recommend NUnit over MbUnit](http://weblogs.asp.net/rosherove/archive/2006/09/24/MbUnit-vs.-NUnit-Vs.-Team-System-Unit-Testing-_2D00_-Choosing-a-unit-test-framework.aspx), and reading [Andrew's response](http://weblogs.asp.net/astopford/archive/2006/09/25/Roy-on-MbUnit.aspx) regarding how it's unlikely that MbUnit will freeze anytime soon, I started thinking some more. What _if_ MbUnit keeps going and becomes the de-facto standard? If it's "freezability" is not an issue anymore, you're left to compare it by merits only to NUnit - which is interesting. Currently, MbUnit surpasses NUnit in almost every facet: amount of features, types of attributes, ease of extensibility, amount of active contributors - almost everything. **Why almost?** - It doesn't have a mocking framework (NUnit.Mock)  - not such a big deal since most people will use a mature framework such as NMock. - Documentation is abysmal at best (not even a cookbook that I know of, everything is on Peli's old blog) - and the only other thing NUnit has over MbUnit for me right now is _simplicity_. It's simple and easy to use NUnit without too much to worry about when you first learn it. I'm not really sure that's such a big deal as well. To get effective unit tests done you need to be more proficient in the unit testing tools out there, including knowing about mocking frameworks, database testing, TDD, naming standards, and obviously know all the possible attributes. You might even need to extend the test framework when you get down to testing your real code, so simplicity is not such a big matter to me and shouldn't be to most devs out there. **So let's say that MbUnit becomes the de-facto standard out there.** What happens to NUnit?  I'm not saying that's such a big problem if it fades away, but what happens to all the people who contributed to it? Should they join the MbUnit effort? **could** they? How mature is the MbUnit framework to stand on its own? Could it be a standard until it has at least decent docs and a mocking story? I think several things separate it today from getting there" 1. The user base is a tiny fraction of the NUnit user base 2. that's it. Getting #1 is what it's all about, and to get there they need: 1. Better recognition form the online community ([This post](http://www.hanselman.com/blog/MbUnitUnitTestingOnCrack.aspx) is a good example, so is my own post here) 2. Better acceptance in "legit" docs such as MSDN, magazine prints etc 3. Usage of MbUnit in conferences and user groups 4. Support for running MbUnit tests inside NUnit (hard one! but possible) 5. When VS 2005 testing tools will support using any unit test framework underneath as part of the MSTest.exe runner. Personally, I like it more and more, but I think the UI still has a ways to go before I can call it sable enough. Still, I mostly use TD.NET inside vs 2005, or even better I use Resharper's Unit Testing support in VS 2005. I think the Agile world is maturing into a better, more condensed community which better understands and reflects the features of developers. Currently, I think the unit testing frameworks in .NET are some of the most powerful - even more than Java, which was there first. **Interesting tidbit:** MbUnit seems to be the only framework that is actively using the notion of [Parameterized Unit Tests](http://research.microsoft.com/research/pubs/view.aspx?type=Technical%20Report&id=917) out of the box (no wonder that Peli, the original author who now works at Microsoft, is moving to that Microsoft research team!) **Other unit test frameworks that might be the future:** - [NSPec](http://nspec.tigris.org/) is a step into a specification directed testing (which really looks like the API on the asserts is very different, nothing more right now. Interesting when you consider [ruby into the mix](http://codebetter.com/blogs/scott.bellware/archive/2006/09/13/149173.aspx)) - Ruby seems to be a [good language for functional testing](http://www.hanselman.com/blog/IntegratingRubyAndWatirWithNUnit.aspx) with .NET as well. **Mocking Frameworks** The mocking frameworks are getting better and better too. Look at [ayende's RhinoMocks](http://www.ayende.com/projects/rhino-mocks.aspx) framework and tell me that' s not a possible future. Or [NMock 2](http://weblogs.asp.net/rosherove/commentrss.aspx?PostID=413577). Could those be the MbUnit Of the Mocking world? Maybe - but NMock 2 has been under construction for a year now, and RhinoMocks has but a fraction of the size of the MbUnit user base, if at all - again, recognition and the fact that only a single person is working on it. **Acceptance Tests** What about [Fit](http://fit.c2.com/) and [Fitness](http://fitnesse.org/)? It's going somewhere -slowly. I'd like to see better versions of both of these, since it's about time customer acceptance tests became a main player. Right now- it's nowhere near getting recognition. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Oct 2, 2006 ### [My sessions at TechEd Europe 2006](https://osherove.com/blog/2006/10/2/my-sessions-at-teched-europe-2006.html) - Sep 27, 2006 ### [Using TypeMock vs. Design for testability](https://osherove.com/blog/2006/9/27/using-typemock-vs-design-for-testability.html) - Sep 24, 2006 ### [Continuous integration with Team System and Team Foundation Server](https://osherove.com/blog/2006/9/24/continuous-integration-with-team-system-and-team-foundation.html) - Sep 23, 2006 ### [MbUnit vs. NUnit Vs. Team System Unit Testing - Choosing a unit test framework](https://osherove.com/blog/2006/9/23/mbunit-vs-nunit-vs-team-system-unit-testing-choosing-a-unit.html) --- title: "TorPark - New anonymous, secure, free, USB-Key friendly browser" url: "https://osherove.com/blog/2006/9/25/torpark-new-anonymous-secure-free-usb-key-friendly-browser.md" canonical: "https://osherove.com/blog/2006/9/25/torpark-new-anonymous-secure-free-usb-key-friendly-browser.html" published: "2006-09-25T07:34:59" updated: "2006-09-25T07:34:59" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "There's a new \"Secure\" browser out there, based on Firefox, called TorPark . \"TorPark is a program which allows you to surf the Internet anonymously. Download Torpark and put it on a USB Flash keychain. Plug it into any…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TorPark - New anonymous, secure, free, USB-Key friendly browser By Roy Osherove September 25, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published September 25, 2006; technical details may be outdated. There's a new "Secure" browser out there, based on Firefox, called [TorPark](http://torpark.nfshost.com/). > "TorPark is a program which allows you to surf the Internet anonymously. Download Torpark and put it on a USB Flash keychain. Plug it into any internet terminal whether at home, school, work, or in public. Torpark will launch a Tor circuit connection, which creates an encrypted tunnel from your computer indirectly to a Tor exit computer, allowing you to surf the internet anonymously. How much does Torpark cost? IT'S FREE." The end result is that the user IP seems to be changing every few seconds when accessing the target site (since it changes an "Exit TOR machine" every few seconds). It's important to realize that the encryption only takes place between your own machine and the exit computer, but **not** between the exit computer (your proxy to the world) and the target site, so if you're not using SSL encrypted pages, you can still have your passwords and other security info stolen. via \[[YNet](http://www.ynet.co.il/articles/0,7340,L-3307228,00.html#n)\] ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Sep 26, 2006 ### [Must watch: Working with Sysinternals tools at DnrTV](https://osherove.com/blog/2006/9/26/must-watch-working-with-sysinternals-tools-at-dnrtv.html) - Sep 25, 2006 ### [Enter the Larkware Contest](https://osherove.com/blog/2006/9/25/enter-the-larkware-contest.html) - Sep 11, 2006 ### [BetaMarker.com - Early adopters welcome](https://osherove.com/blog/2006/9/11/betamarkercom-early-adopters-welcome.html) - Sep 10, 2006 ### [Regulazy 1.02 is out and about](https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.html) --- title: "How Telerik won a blogger's heart - attention and openness" url: "https://osherove.com/blog/2006/9/24/how-telerik-won-a-bloggers-heart-attention-and-openness.md" canonical: "https://osherove.com/blog/2006/9/24/how-telerik-won-a-bloggers-heart-attention-and-openness.html" published: "2006-09-24T00:18:42" updated: "2006-09-24T00:18:42" tags: ["General Software Devel..."] author: "Roy Osherove" description: "If you develop 3rd party controls for .NET Development, you should be taking notes Telerik's attention to customers - here's the full story . Chris complained about his overall problems with 3rd party controls, and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How Telerik won a blogger's heart - attention and openness By Roy Osherove September 24, 2006 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published September 24, 2006; technical details may be outdated. If you develop 3rd party controls for .NET Development, you should be taking notes [Telerik's](http://www.telerik.com/) attention to customers - [here's the full story](http://devlicio.us/blogs/christopher_bennage/archive/2006/09/20/My-History-With-3rd-Pary-Controls.aspx). Chris complained about his overall problems with 3rd party controls, and Telerik's in particular (less than perfect docs, too many features that need to be turned off, too much HTML output in one of their ASP.NET controls etc..). A while later, he got a direct email from Telerik's CEO letting him know he read his blog fully, and explaining how they are planning to overcome all the stuff he has listed on his blog (some already fixed). It was direct and open -and it won Chris's heart again, even if he never went back and checked up on Telerik to see if they did good on their promises. They have a loyal customer who was willing to continue to use their products, recommend them heartily to other potential customers (through his blog) and give an overall sense of openness to the community. That's priceless if you're in the 3rd party business - and everyone should be learning from this. This is how business should be done in the world where the Internet is king. Just imagine what happens when the opposite occurs - no support, not emails, or worse - a BAD email from one of the tech people: that kind of bad publicity is very hard to remove once its out there. There are many stories you might have heard detailing such acts. but how many have you heard that were as good as the one I just talked about? how much trust do you have in companies you hear something as good about them? ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Sep 26, 2006 ### [Must watch: Working with Sysinternals tools at DnrTV](https://osherove.com/blog/2006/9/26/must-watch-working-with-sysinternals-tools-at-dnrtv.html) - Sep 25, 2006 ### [TorPark - New anonymous, secure, free, USB-Key friendly browser](https://osherove.com/blog/2006/9/25/torpark-new-anonymous-secure-free-usb-key-friendly-browser.html) - Sep 23, 2006 ### [Setting up a technical blog online - some options](https://osherove.com/blog/2006/9/23/setting-up-a-technical-blog-online-some-options.html) - Sep 17, 2006 ### [Blogging about embedded software development](https://osherove.com/blog/2006/9/17/blogging-about-embedded-software-development.html) --- title: "Continuous integration with Team System and Team Foundation Server" url: "https://osherove.com/blog/2006/9/24/continuous-integration-with-team-system-and-team-foundation.md" canonical: "https://osherove.com/blog/2006/9/24/continuous-integration-with-team-system-and-team-foundation.html" published: "2006-09-24T00:05:59" updated: "2006-09-24T00:05:59" tags: ["Agile", "Team System"] author: "Roy Osherove" description: "Team foundation server is a monster . Seriously, it's so big and heavy, that trying to do something as simple as adding custom actions to a build process, reading the documentation and googling on how to achieve this is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Continuous integration with Team System and Team Foundation Server By Roy Osherove September 24, 2006 In [Agile](https://osherove.com/blog/category/agile), [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published September 24, 2006; technical details may be outdated. Team foundation server is a **monster**. Seriously, it's so big and heavy, that trying to do something as simple as adding custom actions to a build process, reading the documentation and googling on how to achieve this is like drinking water from a fire hose: - There's way too much to sift through - It stinks - After you are done you wonder if you weren't better off just sitting at home watching TV for a week. Take **continuous Integration** (CI for short)for example. The basic idea is that whenever a checkin occurs on the project's codebase, an automated build is triggered that also does lots of other things (like run all the unit tests etc..). If that build fails you know almost immediately that you checked in code that **broke the build**. When you have CI in place as part of your development process, you can work through your integration problems much more quickly and with less pain as you keep building the software, and not hog them all until the last month of the project where suddenly everything goes wrong and everyone pulls their hair out. With CI in place, the release build should (hopefully) be just another automated build, nothing more. How easy it is to do CI with Team System? It's **impossible** to do it out of the box - you can't hook into the source code eventing system in any humanly-reasonable way. - It's so bad that a PM from Microsoft had to post an extension to Team System in the form of an installer to get this to work.You can [download the CI support for Team Foundation Server here](http://blogs.msdn.com/khushboo/archive/2006/01/04/509122.aspx) as well as read the instructions on how to use it. [Here's the MSDN article](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/ConIntTmFndBld.asp) that describes it in more detail. - **Update:** Also, Mickey Gousset sends word of [TeamCI](http://teamsystemrocks.com/files/12/tools/entry1018.aspx) - a Continous Integration solution for Team System (no real docs yet..) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 27, 2006 ### [Using TypeMock vs. Design for testability](https://osherove.com/blog/2006/9/27/using-typemock-vs-design-for-testability.html) - Sep 25, 2006 ### [The future of unit testing tools - MbUnit, NUnit, NMock and FIT](https://osherove.com/blog/2006/9/25/the-future-of-unit-testing-tools-mbunit-nunit-nmock-and-fit.html) - Sep 23, 2006 ### [MbUnit vs. NUnit Vs. Team System Unit Testing - Choosing a unit test framework](https://osherove.com/blog/2006/9/23/mbunit-vs-nunit-vs-team-system-unit-testing-choosing-a-unit.html) - Sep 17, 2006 ### [Test Driven Development Related Podcasts and a few other comments](https://osherove.com/blog/2006/9/17/test-driven-development-related-podcasts-and-a-few-other-com.html) --- title: "Faster builds of web projects with VS 2005" url: "https://osherove.com/blog/2006/9/23/faster-builds-of-web-projects-with-vs-2005.md" canonical: "https://osherove.com/blog/2006/9/23/faster-builds-of-web-projects-with-vs-2005.html" published: "2006-09-23T23:35:10" updated: "2006-09-23T23:35:10" tags: [".NET", ".Net 2.0", ".Net Quotations"] author: "Roy Osherove" description: "This goes out to all the folks who tell me that ever since they switched to VS 2005 - the time it takes to build their solution is very very long when talking about web projects. Stop blaming Resharper, folks. Here's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Faster builds of web projects with VS 2005 By Roy Osherove September 23, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 23, 2006; technical details may be outdated. This goes out to all the folks who tell me that ever since they switched to VS 2005 - the time it takes to build their solution is very very long when talking about web projects. Stop blaming Resharper, folks. Here's what [Scott Guthrie has to say about this](http://weblogs.asp.net/scottgu/archive/2006/09/22/Tip_2F00_Trick_3A00_-Optimizing-ASP.NET-2.0-Web-Project-Build-Performance-with-VS-2005.aspx): > **Keep the number of files in your /app\_code directory small**.  If you end up having a lot of class files within this directory, I'd recommend you instead add a separate class library project to your VS solution and move these classes within that instead since class library projects compile faster than compiling classes using the /app\_code directory.  \[via [Branden](http://devlicio.us/blogs/brendantompkins/archive/2006/09/22/Speed-Up-VS-2005-Web-Development-_2D00_-Kick-your-App_5F00_Code-Habit.aspx)\] ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Sep 26, 2006 ### [.NET Rocks: Regular Expressions with Roy Osherove](https://osherove.com/blog/2006/9/26/net-rocks-regular-expressions-with-roy-osherove.html) - Sep 25, 2006 ### [Problem: Underlying HTML from a selection inside WebBrowser Control produces different HTML than the original page](https://osherove.com/blog/2006/9/25/problem-underlying-html-from-a-selection-inside-webbrowser-c.html) - Sep 10, 2006 ### [Regulazy 1.02 is out and about](https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.html) - Sep 9, 2006 ### [How to create your own Auto Login Remote Desktop Application](https://osherove.com/blog/2006/9/9/how-to-create-your-own-auto-login-remote-desktop-application.html) --- title: "Setting up a technical blog online - some options" url: "https://osherove.com/blog/2006/9/23/setting-up-a-technical-blog-online-some-options.md" canonical: "https://osherove.com/blog/2006/9/23/setting-up-a-technical-blog-online-some-options.html" published: "2006-09-23T23:30:45" updated: "2006-09-23T23:30:45" tags: ["General Software Devel..."] author: "Roy Osherove" description: "In the last few weeks I've been asked by several would-be bloggers here in Israel how they can start their own blog. Should they use custom blog software? what sites can they register to, how one goes about registering…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Setting up a technical blog online - some options By Roy Osherove September 23, 2006 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published September 23, 2006; technical details may be outdated. In the last few weeks I've been asked by several would-be bloggers here in Israel how they can start their own blog. Should they use custom blog software? what sites can they register to, how one goes about registering etc.. There are several blogging sites out there for technical bloggers, especially if you're from the Microsoft world that I know of. Unfortunately, weblogs.asp.net isn't one of them (at least for now). [http://Codebetter.com](http://codebetter.com/) is invite-only but there are others who are open for business: - If you're in Israel, You can start a blog at [http://blogs.microsoft.co.il](http://blogs.microsoft.co.il/)  - where both Hebrew and English are supported (Hebrew skins have full right-to-left support) send me an email through the contact link on my blog and I'll hook you up with Yosi Taguri, who runs the show there - You can go register at the all new .NET blogging community site: [http://Devlicio.us](http://devlicio.us/)  - You can also check out [GeeksWithBlogs](http://www.geekswithblogs.com/) - [.NETJunkies](http://www.dotnetjunkies.com/weblog/) - and oldie but a goodie. There was some talk a while ago how the site is falling apart - I'm not sure what's the case now - seems to be working fine.. - **Do you know of other good technical blogging sites one can register to?** If you're going the "custom blog" route - you can check out these packages that are widely used, which you'll need to install and configure manually on your own server somewhere: - [Community Server](http://communityserver.org/) is free for non commercial use (is what [http://weblogs.asp.net](http://weblogs.asp.net/) runs on) - [DasBlog](http://sourceforge.net/projects/dasblogce) is a wonderful free open source blogging platform that [just came out with a new version the other day](http://www.hanselman.com/blog/DasBlog19Released.aspx) .It's purely file-based and does not require a database as far as I know. - [SubText](http://subtextproject.com/) is a branch-out of .TEXT (which is now called Community Server) - back when it was much smaller and dealt with only blogging. main features: dead simple to setup and use - no hassles blogging engine.   Also free and I think is open source to. - [WordPress](http://wordpress.org/) is a free blogging platform that runs on PHP and MySQL (all the rest mentioned here are ASP.NET/SQL Server except DasBlog which is DB-less) - You can also **purchase** a blogging engine - but I'm not too familiar with many options here which are very good. - **Can you recommend other blogging engines one can install?** - **Update**: There's also [ThinkJot](http://www.process64.com/thinkjot/) : based on DasBlog and ASP.NET 2.0, free and open source. ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Sep 25, 2006 ### [TorPark - New anonymous, secure, free, USB-Key friendly browser](https://osherove.com/blog/2006/9/25/torpark-new-anonymous-secure-free-usb-key-friendly-browser.html) - Sep 24, 2006 ### [How Telerik won a blogger's heart - attention and openness](https://osherove.com/blog/2006/9/24/how-telerik-won-a-bloggers-heart-attention-and-openness.html) - Sep 17, 2006 ### [Blogging about embedded software development](https://osherove.com/blog/2006/9/17/blogging-about-embedded-software-development.html) - Sep 13, 2006 ### [Never-locked systems and the interesting case of the sales person](https://osherove.com/blog/2006/9/13/never-locked-systems-and-the-interesting-case-of-the-sales-p.html) --- title: "MbUnit vs. NUnit Vs. Team System Unit Testing - Choosing a unit test framework" url: "https://osherove.com/blog/2006/9/23/mbunit-vs-nunit-vs-team-system-unit-testing-choosing-a-unit.md" canonical: "https://osherove.com/blog/2006/9/23/mbunit-vs-nunit-vs-team-system-unit-testing-choosing-a-unit.html" published: "2006-09-23T17:51:00" updated: "2006-09-23T17:51:00" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "Update : There's a new Unit test framework called XUnit.NET. More info here. MbUnit is gaining some momentum as one of the nicest unit testing frameworks for .NET out there. I just came out as an RC2 release with many…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MbUnit vs. NUnit Vs. Team System Unit Testing - Choosing a unit test framework By Roy Osherove September 23, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 23, 2006; technical details may be outdated. **Update**: There's a new Unit test framework called XUnit.NET. [More info here.](https://osherove.com/blog/2007/9/21/xunitnet-aims-to-be-the-next-nunit-but-its-too-soon.html)  [MbUnit](http://www.mbunit.com/) is gaining some momentum as one of the nicest unit testing frameworks for .NET out there. [I just came out as an RC2 release](http://weblogs.asp.net/astopford/archive/2006/09/22/MbUnit-RC2.aspx) with many new features an enhancements, including dull support for [NUnit](http://nunit.org/) 2.4 Asserts - which is a big deal. The two coolest features that draw people to using it are: - \[**[Rollback](http://www.mertner.com/confluence/display/MbUnit/RollbackAttribute)**\] attribute that automatically rolls back any changes to the database that were made during that test method (using a [method I developed](http://weblogs.asp.net/rosherove/archive/2004/07/20/187863.aspx) with [COM+ 1.5](http://72.14.221.104/search?q=cache:bk37LPahGOUJ:blog.dotnetwiki.org/archive/2004/07/20/634.aspx+mbunit+rollback&hl=en&gl=il&ct=clnk&cd=1)) - \[**[RowTest](http://www.dotavery.com/blog/archive/2006/09/07/20030.aspx)**\] attribute that allows declaring one test with several inputs (acting as several tests). I also like MbUnit's extensibility model with is largely different than that of NUnit's and is easier to conform to when writing new attributes. MbUnit is also one of the topics that I continually have a dilemma about using. Since its not the **de-facto** standard out there, I always feel there's a chance of it being frozen in mid development, making all those who depend on it frozen along with it. _**\[Update**: Andrew, one of the leads on mbUnit,_  [_makes some good points_](http://weblogs.asp.net/astopford/archive/2006/09/25/Roy-on-MbUnit.aspx) _on why he thinks this is far from happening - which is reassuring, and I'd like to hold out longer befomre making a final call on it's "frozeability".\]_ I still recommend people to use NUnit as the standard. You can do a lot with NUnit (as well as the rollback attribute - See [XtUnit](http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx) for that). When you get used to it, **then** I suggest you check out MbUnit. you'll have the tools to whether you really can't live without it. As long as there are two primary contenders in the unit testing world for .NET (NUnit and MbUnit - don't even get me started on Team System Unit Tests I discuss them in a bit) - there will always be that dilemma and the situation will always be a bit confusing for newcomers into this world. If your heart is set on using MbUnit (and it **is** a good platform - I'd use it in a heart beat if a client was using it that I was consulting to) - I recommend using [TestDriven.NET](http://testdriven.net/) along with the unit tests. It just makes it much easier (plus you don't have to worry about any custom UI to run them in - it runs NUnit and MbUnit tests with no problems). **What about Team System unit testing?** For now the unit tests framework in team system and VS 2005 cannot be the de-facto standard for several reasons: - [It sucks too much](http://weblogs.asp.net/rosherove/archive/2006/01/25/436414.aspx) right now. They have waay too many bugs in them (excepted exception attribute especially broken - It doesn't have enough features and asserts to support the most common cases - It's not free for everyone to use ( [you can't even use it with the VS express editions](http://blogs.msdn.com/jason_anderson/archive/2004/06/04/148252.aspx) - shame on you!) - It requires VS 2005 to run (no separate run-time UI - although there is a command line) A good unit testing solution should solve at least these four basic points in order to be considered as a candidate for a de-facto framework. Not even mentioning wide user acceptance : team system does not live up to its hype right now. The only good thing going to it is that if you use Team Foundation server you can run the unit tests you wrote more easily as part of the automated build - which you can also very easily achieve if you work with any other framework such as NUnit by using a custom build action. While out of the box experience is important, and should not be dismissed easily, I do tend to still use NUnit even with Team System - as I tend to get better features, more stability and a wider range of possibilities for running my unit tests that way. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 25, 2006 ### [The future of unit testing tools - MbUnit, NUnit, NMock and FIT](https://osherove.com/blog/2006/9/25/the-future-of-unit-testing-tools-mbunit-nunit-nmock-and-fit.html) - Sep 24, 2006 ### [Continuous integration with Team System and Team Foundation Server](https://osherove.com/blog/2006/9/24/continuous-integration-with-team-system-and-team-foundation.html) - Sep 17, 2006 ### [Test Driven Development Related Podcasts and a few other comments](https://osherove.com/blog/2006/9/17/test-driven-development-related-podcasts-and-a-few-other-com.html) - Sep 13, 2006 ### [XP Simulation Blog](https://osherove.com/blog/2006/9/13/xp-simulation-blog.html) --- title: "Windows Live - porn related? Google thinks so." url: "https://osherove.com/blog/2006/9/21/windows-live-porn-related-google-thinks-so.md" canonical: "https://osherove.com/blog/2006/9/21/windows-live-porn-related-google-thinks-so.html" published: "2006-09-21T12:34:37" updated: "2006-09-21T12:34:37" tags: ["Off Topic"] author: "Roy Osherove" description: "That's interesting. Google seems to think that Windows Live Terms Of Service page is related to porno sites. Seriously . [via YNet (Hebrew)]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Windows Live - porn related? Google thinks so. By Roy Osherove September 21, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 21, 2006; technical details may be outdated. That's interesting. Google seems to think that Windows Live Terms Of Service page is related to porno sites. [Seriously](http://www.google.com/search?q=related%3Awww.zoom11.com). _\[via_ [_YNet_](http://www.ynet.co.il/articles/0,7340,L-3305863,00.html#n) _(Hebrew)\]_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 11, 2006 ### [How to get disqualified as an MVP](https://osherove.com/blog/2006/10/11/how-to-get-disqualified-as-an-mvp.html) - Sep 30, 2006 ### [Top 10 Best Presentations Ever](https://osherove.com/blog/2006/9/30/top-10-best-presentations-ever.html) - Sep 9, 2006 ### [Cool ScreenSaver: Electric Sheep](https://osherove.com/blog/2006/9/9/cool-screensaver-electric-sheep.html) - Aug 30, 2006 ### [New Language in Google: 'Elmer Fudd'](https://osherove.com/blog/2006/8/30/new-language-in-google-elmer-fudd.html) --- title: "Blogging about embedded software development" url: "https://osherove.com/blog/2006/9/17/blogging-about-embedded-software-development.md" canonical: "https://osherove.com/blog/2006/9/17/blogging-about-embedded-software-development.html" published: "2006-09-17T22:29:18" updated: "2006-09-17T22:29:18" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Beniot Asks \" Am I alone ?\" when it comes to Blogging about Embedded Software development. He's talking about hard core low level programming with C and C++ and Assembly and what not, not about the .NET Compact…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blogging about embedded software development By Roy Osherove September 17, 2006 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published September 17, 2006; technical details may be outdated. Beniot Asks "[Am I alone](http://www.benoitlavigne.com/blog/2006/09/17/am-i-alone/)?" when it comes to Blogging about Embedded Software development. He's talking about [hard core low level programming with C and C++ and Assembly](http://www.benoitlavigne.com/blog/2006/09/15/the-embedded-pathno-yellow-brick-road/) and what not, not about the .NET Compact Framework (I think he's not, anyway. It's a new blog). From his blog: > ".NET has news sites like [Larkware](http://www.larkware.com/), it has blogosphere celebrities like [Chris Sells](http://sellsbrothers.com/) , [Scott Hanselman](http://computerzen.com/), and [Larry O’Brien](http://knowing.net/)..." > > "... But what about the embedded world? Where are the high profile bloggers? [WindRiver](http://www.windriver.com/), [GreenHills](http://www.ghs.com/), [FreeScale](http://www.freescale.com/), [AMCC](http://www.amcc.com/) where are you? " Indeed - where _are_ the major players here? or is there just not enough crowd that would be interested in such a thing? ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Sep 24, 2006 ### [How Telerik won a blogger's heart - attention and openness](https://osherove.com/blog/2006/9/24/how-telerik-won-a-bloggers-heart-attention-and-openness.html) - Sep 23, 2006 ### [Setting up a technical blog online - some options](https://osherove.com/blog/2006/9/23/setting-up-a-technical-blog-online-some-options.html) - Sep 13, 2006 ### [Never-locked systems and the interesting case of the sales person](https://osherove.com/blog/2006/9/13/never-locked-systems-and-the-interesting-case-of-the-sales-p.html) - Sep 11, 2006 ### [White Text/Blue Background - Missing from Word 2007?](https://osherove.com/blog/2006/9/11/white-textblue-background-missing-from-word-2007.html) --- title: "Test Driven Development Related Podcasts and a few other comments" url: "https://osherove.com/blog/2006/9/17/test-driven-development-related-podcasts-and-a-few-other-com.md" canonical: "https://osherove.com/blog/2006/9/17/test-driven-development-related-podcasts-and-a-few-other-com.html" published: "2006-09-17T18:19:17" updated: "2006-09-17T18:19:17" tags: ["Agile", "Agile Related", "Unit Testing"] author: "Roy Osherove" description: "It's been an Test-Driven few weeks in the .NET podcasting scene. If you're into it, here are some audio shows that should help you learn a little bit about this world. Hanselminutes has a couple of shows on the scene.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven Development Related Podcasts and a few other comments By Roy Osherove September 17, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 17, 2006; technical details may be outdated. It's been an Test-Driven few weeks in the .NET podcasting scene. If you're into it, here are some audio shows that should help you learn a little bit about this world. - Hanselminutes has a couple of shows on the scene. [The first one is about Test Driven Development](http://www.hanselminutes.com/default.aspx?showID=42). Scott introduces the concept in a clear and cornise way, and points to various resources on the web to go and learn more about it. - This week he [has a show about Mock Objects](http://www.hanselminutes.com/default.aspx?showID=43). The concept of Mock Objects, which many find quite a bit "over the top" for their knowledge of unit testing, is really one of the concepts that has a horrible name for the simple idea it represents - replacing real objects and classes with fake ones so you can test more easily. I haven't listened to that show yet, but you should - Scott is an eloquent speaker. - .NET Rocks did a show with Jimmy Nilsson on Domain Driven Design and Development, in which he also discusses a lot the notions of Agile development and TDD. I've browsed through [Jimmy's latest book](https://www.amazon.com/exec/obidos/ASIN/0321268202/iserializable-20) and I have a comment: - I wish Jimmy was as eloquent and clear as he is [in his book](https://www.amazon.com/exec/obidos/ASIN/0321268202/iserializable-20). The show audio sounds almost mind numbingly quiet and sedated. No matter how hard Carl (the host) tried, I don't think he got Jimmy into that place where he was "flowing" with his words. - .NET Rocks also [has an older show about TDD](http://www.dotnetrocks.com/default.aspx?showID=171) with Jean Paul Boodhoo. It was quite hard to listen to, although Jean Paul really seems to know his stuff. On a different note, last week, right before going on the weekend for our 5th anniversary with my wife, I Recorded a .NET Rocks show about Regular Expressions. If all goes well, it should be up on the 26th of this month, at which point you can listen to yours truly babble on in what I think will be a somewhat... ok show, nothing more. I'll leave the judging up to you, though I might not spare myself the pleasure sniping a few snide remarks about myself when I get to listen to the show. Most interesting question I got asked on the show: "What do you say to those who find you a grumpy blogger?". Seriously, I think Carl really was aching to let that one go - me having a long history of not so cool remarks about .NET Rocks and other people affiliated with the show over the years. In any case, I maintain that it's a good show with good content (most of the time - the Show with Mark Miller on Discoverability to me felt like a very long infomercial for Mark's company and tools), and all these guys need to keep doing is **get on some new blood** into their show, and not keep having the same people over and over. Otherwise I'd be tempted to call it the "frienstr" show. Speaking of which, you now have a whole new podcast called "millahseconds" which I'm not even going to download after reading it's [about page](http://www.millahseconds.com/about.aspx). Sorry - I've heard Mark's joked. He's a great developer and project lead, but he's not a stand-up comic. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 24, 2006 ### [Continuous integration with Team System and Team Foundation Server](https://osherove.com/blog/2006/9/24/continuous-integration-with-team-system-and-team-foundation.html) - Sep 23, 2006 ### [MbUnit vs. NUnit Vs. Team System Unit Testing - Choosing a unit test framework](https://osherove.com/blog/2006/9/23/mbunit-vs-nunit-vs-team-system-unit-testing-choosing-a-unit.html) - Sep 13, 2006 ### [XP Simulation Blog](https://osherove.com/blog/2006/9/13/xp-simulation-blog.html) - Sep 10, 2006 ### [TypeMock Bundled Up with TestDriven.NET](https://osherove.com/blog/2006/9/10/typemock-bundled-up-with-testdrivennet.html) --- title: "XP Simulation Blog" url: "https://osherove.com/blog/2006/9/13/xp-simulation-blog.md" canonical: "https://osherove.com/blog/2006/9/13/xp-simulation-blog.html" published: "2006-09-13T07:11:41" updated: "2006-09-13T07:11:41" tags: ["Agile", "Agile Related"] author: "Roy Osherove" description: "Here's a blog from someone who is simulating an XP project from start to finish. I find that the test naming are less than perfect, but I should read more before commenting on the real \"meat\". So far it seems to be…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # XP Simulation Blog By Roy Osherove September 13, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published September 13, 2006; technical details may be outdated. [Here's a blog](http://dotnetslackers.com/community/blogs/extreme_programming/default.aspx) from someone who is simulating an XP project from start to finish. I find that the test naming are less than perfect, but I should read more before commenting on the real "meat". So far it seems to be delving mostly into Test Driven Development and unit testing (from a brief scroll down the blog). > "This blog will simulate an XP project, from start to finish using the XP methodology. I won't be able to work on it continuously, or at least in true XP form (working live with customers and other developers), but it will simulate the actual experience on a project. This is meant to be a learning experimentation for developers and customers alike, as well as for me. I am not an XP expert, and so I welcome comments from users to help keep me on the right track, which I will edit my old posts to ensure correctness of the approach." ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 23, 2006 ### [MbUnit vs. NUnit Vs. Team System Unit Testing - Choosing a unit test framework](https://osherove.com/blog/2006/9/23/mbunit-vs-nunit-vs-team-system-unit-testing-choosing-a-unit.html) - Sep 17, 2006 ### [Test Driven Development Related Podcasts and a few other comments](https://osherove.com/blog/2006/9/17/test-driven-development-related-podcasts-and-a-few-other-com.html) - Sep 10, 2006 ### [TypeMock Bundled Up with TestDriven.NET](https://osherove.com/blog/2006/9/10/typemock-bundled-up-with-testdrivennet.html) - Sep 1, 2006 ### [Video: Designing For Testability](https://osherove.com/blog/2006/9/1/video-designing-for-testability.html) --- title: "Never-locked systems and the interesting case of the sales person" url: "https://osherove.com/blog/2006/9/13/never-locked-systems-and-the-interesting-case-of-the-sales-p.md" canonical: "https://osherove.com/blog/2006/9/13/never-locked-systems-and-the-interesting-case-of-the-sales-p.html" published: "2006-09-13T05:27:53" updated: "2006-09-13T05:27:53" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Here's something you don't consider as a software developer: the way your users behave to make things easier for them : I was going with a a friend yesterday into a cell phone store (he had a problem with his phone).…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Never-locked systems and the interesting case of the sales person By Roy Osherove September 13, 2006 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published September 13, 2006; technical details may be outdated. Here's something you don't consider as a software developer: the way your users behave to make things easier for them : I was going with a a friend yesterday into a cell phone store (he had a problem with his phone). While he was talking to the nice young sales lady I was sitting next to him talking about various geeky stuff while we were waiting for her to go and come back every few minutes (getting stuff from the back of the store for him). Of course, the first thing we did was look at her screen to see what kind of software she was using (vantive over terminal services). Before we finished our business, I thought I saw her do something on the keyboard screen flicker like made for a bit. I took a closer look at her keyboard and saw that she had wedged a small folded piece of paper into her right error key on the keyboard, so that it is kept pressed at all times. Which of course made the menus on her screen flicker. "Why are you doing this?" I asked, and when she replied both my friend and me were smiling in awe at the various ways users can surprise you. She was keeping the arrow pressed so that the system will not "go to sleep" - a keep-alive signal of her own. When the system "goes to sleep" all the terminals seem to shut down and locked up, meaning that if rush hour came along she would take a long time to start-up all the systems involved before she could start taking care of customers. That was **her way** of making sure the system was always in a ready -state. I'm sure she didn't come to learn that way on her own. she got it form other people in the store who'd worked there for a while and so could teach her their "secrets" to better customer management. I a lot of the sales people who work with such configuration know about this trick and are using it - so just imagine how many "never-locked" systems are out there right now, because of software design that didn't take into consideration the quick-availability factor. Of course, it was also a great way to make sure that whoever came by her machine while she wasn't near  it could use it without entering a password and whatnot, but that wasn't her point. her point was **availability** which the current configuration did no provide for her. If you think about it, the design of the various software components integrated with each other (terminal services with her sales software  and vantive) were inherently insecure because they forced the users to keep the system alive at all times, instead of it being quickly available. ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Sep 23, 2006 ### [Setting up a technical blog online - some options](https://osherove.com/blog/2006/9/23/setting-up-a-technical-blog-online-some-options.html) - Sep 17, 2006 ### [Blogging about embedded software development](https://osherove.com/blog/2006/9/17/blogging-about-embedded-software-development.html) - Sep 11, 2006 ### [White Text/Blue Background - Missing from Word 2007?](https://osherove.com/blog/2006/9/11/white-textblue-background-missing-from-word-2007.html) - Sep 11, 2006 ### [BetaMarker.com - Early adopters welcome](https://osherove.com/blog/2006/9/11/betamarkercom-early-adopters-welcome.html) --- title: "White Text/Blue Background - Missing from Word 2007?" url: "https://osherove.com/blog/2006/9/11/white-textblue-background-missing-from-word-2007.md" canonical: "https://osherove.com/blog/2006/9/11/white-textblue-background-missing-from-word-2007.html" published: "2006-09-11T23:51:02" updated: "2006-09-11T23:51:02" tags: ["General Software Devel..."] author: "Roy Osherove" description: "I am shocked and amazed. They actually removed it? If anyone can tell me where I can find the \"white text on blue background\" viewing option in Word 2007 - please do, but I fear the answer will be \"it's not there…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # White Text/Blue Background - Missing from Word 2007? By Roy Osherove September 11, 2006 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published September 11, 2006; technical details may be outdated. I am shocked and amazed. They actually removed it? If anyone can tell me where I can find the "white text on blue background" viewing option in Word 2007 - please do, but I fear the answer will be "it's not there anymore". Say it isn't so, Microsoft. Say it isn't so. (not that I'm that much of a fan, but I do occasionally use it and I really miss this feature) ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Sep 17, 2006 ### [Blogging about embedded software development](https://osherove.com/blog/2006/9/17/blogging-about-embedded-software-development.html) - Sep 13, 2006 ### [Never-locked systems and the interesting case of the sales person](https://osherove.com/blog/2006/9/13/never-locked-systems-and-the-interesting-case-of-the-sales-p.html) - Sep 11, 2006 ### [BetaMarker.com - Early adopters welcome](https://osherove.com/blog/2006/9/11/betamarkercom-early-adopters-welcome.html) - Sep 10, 2006 ### [Regulazy 1.02 is out and about](https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.html) --- title: "BetaMarker.com - Early adopters welcome" url: "https://osherove.com/blog/2006/9/11/betamarkercom-early-adopters-welcome.md" canonical: "https://osherove.com/blog/2006/9/11/betamarkercom-early-adopters-welcome.html" published: "2006-09-11T16:13:10" updated: "2006-09-11T16:13:10" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "This site was just launched , and I got an email from a friend who is connected to the site owners. Sounds like it might have some appeal to us early adopters: Beta Marker . I'm thinking -- del.icio.for early adopters:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BetaMarker.com - Early adopters welcome By Roy Osherove September 11, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published September 11, 2006; technical details may be outdated. [This site was just launched](http://www.betamarker.com/), and I got an email from a friend who is connected to the site owners. Sounds like it might have some appeal to us early adopters: [Beta Marker](http://www.betamarker.com/). I'm thinking -- del.icio.for early adopters: > "[Beta Marker](http://www.betamarker.com/) is about software you like. You'll discover the newest software releases here, all submitted by Beta Marker members. If you like a software, mark it to promote it to the home page. Submit, comment, mark and share your activity with friends." ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Sep 25, 2006 ### [Enter the Larkware Contest](https://osherove.com/blog/2006/9/25/enter-the-larkware-contest.html) - Sep 25, 2006 ### [TorPark - New anonymous, secure, free, USB-Key friendly browser](https://osherove.com/blog/2006/9/25/torpark-new-anonymous-secure-free-usb-key-friendly-browser.html) - Sep 10, 2006 ### [Regulazy 1.02 is out and about](https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.html) - Sep 9, 2006 ### [Cool Tool: vRD - Multiple Remote Desktops in one program](https://osherove.com/blog/2006/9/9/cool-tool-vrd-multiple-remote-desktops-in-one-program.html) --- title: "Regulazy 1.02 is out and about" url: "https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.md" canonical: "https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.html" published: "2006-09-10T20:54:56" updated: "2006-09-10T20:54:56" tags: [".NET", ".Net 2.0", ".Net Original", "Cool Tools", "General Software Devel...", "Regex", "Regular Expressions"] author: "Roy Osherove" description: "There's a new monthly version (1.02) out of Regulazy. You can grab it over here . (if the link is broken try http://tools.osherove.com/ ) Regulazy is a visual Regex Creation tool for beginners. It contains an easy…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Regulazy 1.02 is out and about By Roy Osherove September 10, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Regex](https://osherove.com/blog/category/regex), [Regular Expressions](https://osherove.com/blog/category/regular-expressions) **Historical article** · Originally published September 10, 2006; technical details may be outdated. There's a new monthly version (1.02) out of Regulazy. You can [grab it over here](https://osherove.com/). _(if the link is broken try_ [_http://tools.osherove.com/_](http://tools.osherove.com/)_)_ [Regulazy](https://osherove.com/) is a visual Regex Creation tool for beginners. ![Short Regulazy Sample](https://osherove.com/img/wb/5bcdc6e6_tools.osherove.com_Portals_6_RegulazyDemo.gif) It contains an **easy "point and click" user interface**, and allows creating regular expressions for simple searches **almost instantly without requiring Regex syntax knowledge** from the end user! What's New? **Version 1.02 10/9/06** - **Added** ability to rename the parent scope of the selected scope (A parent scope is always filled up with child scopes so it's impossible to select it by itself) - **Added** highlighting of text parts when hovering on context menu item, so you can see what text your action will take place on - **Added** ability to create a large scope out of multiple selected smaller text scopes and rename it - **Fixed** Spelling of "Multiline" in regex options - **Added** more date recognition patterns to custom.rules ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Sep 25, 2006 ### [Problem: Underlying HTML from a selection inside WebBrowser Control produces different HTML than the original page](https://osherove.com/blog/2006/9/25/problem-underlying-html-from-a-selection-inside-webbrowser-c.html) - Sep 23, 2006 ### [Faster builds of web projects with VS 2005](https://osherove.com/blog/2006/9/23/faster-builds-of-web-projects-with-vs-2005.html) - Sep 9, 2006 ### [How to create your own Auto Login Remote Desktop Application](https://osherove.com/blog/2006/9/9/how-to-create-your-own-auto-login-remote-desktop-application.html) - Aug 27, 2006 ### [16 Features in Resharper Every Developer Needs To Learn](https://osherove.com/blog/2006/8/27/16-features-in-resharper-every-developer-needs-to-learn.html) --- title: "TypeMock Bundled Up with TestDriven.NET" url: "https://osherove.com/blog/2006/9/10/typemock-bundled-up-with-testdrivennet.md" canonical: "https://osherove.com/blog/2006/9/10/typemock-bundled-up-with-testdrivennet.html" published: "2006-09-10T15:04:36" updated: "2006-09-10T15:04:36" tags: ["Agile", "Agile Related"] author: "Roy Osherove" description: "Looks like TestDriven.NET can now be purchased as a bundle package with TypeMock . Here is the announcement . Both of these products rock, though I suspect using the latter is a task most developers won't find…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TypeMock Bundled Up with TestDriven.NET By Roy Osherove September 10, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published September 10, 2006; technical details may be outdated. Looks like [TestDriven.NET](http://www.testdriven.net/) can now be purchased as a bundle package with [TypeMock](http://www.typemock.com/). Here is the [announcement](http://www.typemock.com/tdsale.htm). Both of these products rock, though I suspect using the latter is a task most developers won't find interesting until they really get into the nasty stuff of unit testing legacy code or code that is virtually un-testable. In any case, it seems like a nice deal to use if you are getting into unit testing. Of course, you can still use whatever unit testing framework your hear desires - NUnit, MbUnit or whatever. These two tools are productivity enhancers more than anything else, and save you lots of manual work: TD.NET saves you the trouble of running your tests from outside the IDE, debugging into them, testing them under .NET 1.1 etc.. TypeMock saves you from having to Refactor your code into testability - which sometimes is a very practical approach, even though you should be careful just how much you abuse this tool's power. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 17, 2006 ### [Test Driven Development Related Podcasts and a few other comments](https://osherove.com/blog/2006/9/17/test-driven-development-related-podcasts-and-a-few-other-com.html) - Sep 13, 2006 ### [XP Simulation Blog](https://osherove.com/blog/2006/9/13/xp-simulation-blog.html) - Sep 1, 2006 ### [Video: Designing For Testability](https://osherove.com/blog/2006/9/1/video-designing-for-testability.html) - Aug 31, 2006 ### [Need help spreading a technical video via Bittorrnet](https://osherove.com/blog/2006/8/31/need-help-spreading-a-technical-video-via-bittorrnet.html) --- title: "How to create your own Auto Login Remote Desktop Application" url: "https://osherove.com/blog/2006/9/9/how-to-create-your-own-auto-login-remote-desktop-application.md" canonical: "https://osherove.com/blog/2006/9/9/how-to-create-your-own-auto-login-remote-desktop-application.html" published: "2006-09-09T10:56:24" updated: "2006-09-09T10:56:24" tags: [".NET", ".Net 2.0", ".Net Original"] author: "Roy Osherove" description: "Speaking of Multiple Remote Desktops - it's not really that hard to build such an application. Microsoft had a \"Microsoft RDP Client Control\" ActiveX control that you can use in your apps. I've even went ahead and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to create your own Auto Login Remote Desktop Application By Roy Osherove September 9, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 9, 2006; technical details may be outdated. Speaking of Multiple Remote  Desktops - it's not really that hard to build such an application. Microsoft had a "Microsoft RDP Client Control" ActiveX control that you can use in your apps. I've even went ahead and implemented a small proof of concept form ([you can download it here](http://files.osherove.com/code/RDPTests.zip)) that opens a new remote desktop and does an automatic login user your supplied user name and password. The only "catch" is that the RDP control does not seem to have a method that supplies the user name and password to login - until you dig a little and find out a special interface you need to cast to in order to achieve this functionality (for security reasons, they did not automatically implement that interface on the control - you have to cast to it explicitly). here's how easy it is to auto login to another machine (note the "clear text" password being sent - there are better ways to do this, but this was the easiest) > **rdp.Server = txtComputer.Text; > rdp.UserName = txtUserName.Text;** > > ** > > > IMsTscNonScriptable secured = IMsTscNonScriptable)rdp.GetOcx(); > secured.ClearTextPassword = txtPassword.Text; > > > rdp.DesktopHeight = 600; > rdp.DesktopWidth = 800; > rdp.Connect(); > > [Download the full code here.](http://files.osherove.com/code/RDPTests.zip) > > ** It was surprisingly easy and reminded me that ActiveX is still a very useful and productive technology which we will all be using for a long time - trash talking it is something which should be done very carefully - this technology enabled real reuse and real "live parts" you can use in windows today and tomorrow. Trust me when I say you'll be able to write a remote desktop app in Vista in just about the same way I did in 10 minutes - ActiveX. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Sep 23, 2006 ### [Faster builds of web projects with VS 2005](https://osherove.com/blog/2006/9/23/faster-builds-of-web-projects-with-vs-2005.html) - Sep 10, 2006 ### [Regulazy 1.02 is out and about](https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.html) - Aug 27, 2006 ### [16 Features in Resharper Every Developer Needs To Learn](https://osherove.com/blog/2006/8/27/16-features-in-resharper-every-developer-needs-to-learn.html) - Aug 21, 2006 ### [Free E-Book: Developing Time-Oriented Database Applications in SQL](https://osherove.com/blog/2006/8/21/free-e-book-developing-time-oriented-database-applications-i.html) --- title: "Cool Tool: vRD - Multiple Remote Desktops in one program" url: "https://osherove.com/blog/2006/9/9/cool-tool-vrd-multiple-remote-desktops-in-one-program.md" canonical: "https://osherove.com/blog/2006/9/9/cool-tool-vrd-multiple-remote-desktops-in-one-program.html" published: "2006-09-09T10:46:01" updated: "2006-09-09T10:46:01" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "If you do a lot of administration on remote machines concurrently, you might know that there are some programs out there that allow you to control multiple remote desktops under the same window. One of the best free…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool Tool: vRD - Multiple Remote Desktops in one program By Roy Osherove September 9, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published September 9, 2006; technical details may be outdated. If you do a lot of administration on remote machines concurrently, you might know that there are some programs out there that allow you to control multiple remote desktops under the same window. One of the best free solutions I've come to love in this area is [VisionApp Remote Desktop](http://www.visionapp.com/111.0.html), or "vRD": ![](https://osherove.com/img/wb/64af4e2b_www.visionapp.com_uploads_pics_vRD_01.jpg) Not only does it handle the desktops easily and without any exceptions along the way, it also allows you to watch each desktop either inside a "multi-tab" interface, or as a full screen (which still does not cover your own machine's task bar - which I like). Another cool feature about it is that you have a "thumbnail" view of your running remote connections in the main page of the program (kinda like "Virtual Server" showing off the currently running machines - only it's a static image that only updates when that special tab is activated) Another cool feature is the ability to "Auto-Login" - you specify login credentials on each connection, or in a root node that your connections are located under, and they all inherit those login credentials. very easy to use - I've used it successfully in many occasions. The only drawback is that they require registration to download this software - luckily - they don't check by email whether you are legit or not - so I was able to give them my [Mailinator](http://www.mailinator.com/) email address and get away with it. If you don't know what [Mailinator](http://www.mailinator.com/) is - it's one of the worst things that have happened to spammers: instant email address that destroys its own messages within 24 hours. no login required to get in, you just give "whatever" @ Mailinator.com and go to that site and type your email address and can see what people have sent you there. great for when you need stuff one-time but don't want to give your real email address right away.. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Sep 11, 2006 ### [BetaMarker.com - Early adopters welcome](https://osherove.com/blog/2006/9/11/betamarkercom-early-adopters-welcome.html) - Sep 10, 2006 ### [Regulazy 1.02 is out and about](https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.html) - Aug 29, 2006 ### [Ultimate Developer and Power Users Tool List for Windows - Updated](https://osherove.com/blog/2006/8/29/ultimate-developer-and-power-users-tool-list-for-windows-upd.html) - Aug 27, 2006 ### [16 Features in Resharper Every Developer Needs To Learn](https://osherove.com/blog/2006/8/27/16-features-in-resharper-every-developer-needs-to-learn.html) --- title: "Cool ScreenSaver: Electric Sheep" url: "https://osherove.com/blog/2006/9/9/cool-screensaver-electric-sheep.md" canonical: "https://osherove.com/blog/2006/9/9/cool-screensaver-electric-sheep.html" published: "2006-09-09T10:16:24" updated: "2006-09-09T10:16:24" tags: ["Off Topic"] author: "Roy Osherove" description: "Here's a cool screensaver I've been running for a month or so on my machine, and it is beautiful ! It's the Electric Sheep Screensaver , and it's a bit different from your run of the mill savers: \"Electric Sheep is a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool ScreenSaver: Electric Sheep By Roy Osherove September 9, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 9, 2006; technical details may be outdated. Here's a cool screensaver I've been running for a month or so on my machine, and it is **beautiful**! It's the [Electric Sheep Screensaver](http://electricsheep.org/), and it's a bit different from your run of the mill savers: > "Electric Sheep is a free, open source screen saver run by thousands of people all over the world. It can be installed on any ordinary PC or Mac. When these computers "sleep", the screen saver comes on and the computers communicate with each other by the Internet to share the work of creating morphing abstract animations known as "sheep". The result is a collective "android dream", an homage to Philip K. Dick's novel _[Do Androids Dream of Electric Sheep](http://fusionanomaly.net/doandroidsdreamofelectricsheep.html)_. > Anyone watching one of these computers may vote for their favorite animations using the keyboard. The more popular sheep live longer and reproduce according to a genetic algorithm with mutation and cross-over. Hence the flock evolves to please its global audience. You can also [design your own sheep](http://draves.org/blog/archives/000405.html) and submit them to the gene pool. " It requires some large space on your had drive (I have it set to 500MB) so it can download and play those beautiful animations, but it's worth it when you check your emails at night after going to the bathroom :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 30, 2006 ### [Top 10 Best Presentations Ever](https://osherove.com/blog/2006/9/30/top-10-best-presentations-ever.html) - Sep 21, 2006 ### [Windows Live - porn related? Google thinks so.](https://osherove.com/blog/2006/9/21/windows-live-porn-related-google-thinks-so.html) - Aug 30, 2006 ### [New Language in Google: 'Elmer Fudd'](https://osherove.com/blog/2006/8/30/new-language-in-google-elmer-fudd.html) - Aug 27, 2006 ### [Nice idea for a shirt](https://osherove.com/blog/2006/8/27/nice-idea-for-a-shirt.html) --- title: "Neglecting Israeli MVPS, and INETA MEA is worthless" url: "https://osherove.com/blog/2006/9/6/neglecting-israeli-mvps-and-ineta-mea-is-worthless.md" canonical: "https://osherove.com/blog/2006/9/6/neglecting-israeli-mvps-and-ineta-mea-is-worthless.html" published: "2006-09-06T12:13:13" updated: "2006-09-06T12:13:13" tags: ["Community News"] author: "Roy Osherove" description: "Israeli MVPs are being neglected If you're a Microsoft MVP, and are not from the United States, you probably have your own MVP Lead in your country, taking care of business. Israel had one until a couple months ago or…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Neglecting Israeli MVPS, and INETA MEA is worthless By Roy Osherove September 6, 2006 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published September 6, 2006; technical details may be outdated. Israeli MVPs are being neglected If you're a Microsoft MVP, and are not from the United States, you probably have your own MVP Lead in your country, taking care of business. Israel had one until a couple months ago or so. then that job vanished. I'm not sure why, but Israel MVPs have been getting the short end of the stick in this regard - we're getting a "regional lead" not from Israel that is responsible for us. This is supposed to be a "temporary" thing until they find a good replacement, but it definitely does not feel temporary, and, knowing the souls involved I wouldn't be surprised if this thing will ever change now that it's set in motion. I even offered up myself as the Israeli MVP lead. You need passion to do this, and knowing the community, and understanding the folks. And frankly, having someone who's doing they're job in a half-assed manner, as part of 10 other things they have to do, and when they look at this job as nothing more than a stepping stone to use on their way up (we've never had an MVP lead for over a year or a little more than that as far as I know) - things degrade fast. Out last lead was wonderful - but then she left for a better job at Microsoft England. Seems like noone wants to take her place here at microsoft Israel, which tells you exactly what MVPs mean here for MS Israel employees (I know only a handful of people at MS Israel that know the true meaning of MVP - and they are not the ones calling the shots on this I think). So - here's a call to microsoft - step up and give us a lead, or **make** us a lead. But don't just think you can ignore this and think it will go away. I won't let it. **Why INETA Middle East is worthless** On a similar note - INTEA middle east is one of the most un-influential organizations I've ever seen. I've been offering myself up as an INETA speaker for more than a couple of years now, and have even been accepted, but nothing happens in that regard. either there is no budget, or there are other things in play, but INETA MEA is **nothing** like INETA US. And why on earth can I be a speaker on INETA US, or even INETA Europe? It seems like INETA is missing out on lots of opportunities here for great community, simply because of lack of proper management of resources and personnel. In short - Microsoft does community well in the US and Europe. It sucks doing community here in the Middle east. Hope the point is taken. ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Oct 19, 2006 ### [MSDN Premium auction for Africa](https://osherove.com/blog/2006/10/19/msdn-premium-auction-for-africa.html) - Oct 2, 2006 ### [My sessions at TechEd Europe 2006](https://osherove.com/blog/2006/10/2/my-sessions-at-teched-europe-2006.html) - Sep 6, 2006 ### [Influence the next Microsoft Israel Conference](https://osherove.com/blog/2006/9/6/influence-the-next-microsoft-israel-conference.html) - Aug 16, 2006 ### [Speaker Idol @ TechEd: Developers](https://osherove.com/blog/2006/8/16/speaker-idol-teched-developers.html) --- title: "Influence the next Microsoft Israel Conference" url: "https://osherove.com/blog/2006/9/6/influence-the-next-microsoft-israel-conference.md" canonical: "https://osherove.com/blog/2006/9/6/influence-the-next-microsoft-israel-conference.html" published: "2006-09-06T12:01:22" updated: "2006-09-06T12:01:22" tags: ["Community", "Community News"] author: "Roy Osherove" description: "If you're in Israel, here's your chance to help shape the face of the next developer Conference Microsoft Israel is hosting in January. Just go to Yosi Taguri's Blog and add your comments/wishes on what you'd like to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Influence the next Microsoft Israel Conference By Roy Osherove September 6, 2006 In [Community](https://osherove.com/blog/category/community), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published September 6, 2006; technical details may be outdated. If you're in Israel, here's your chance to help shape the face of the next developer Conference Microsoft Israel is hosting in January. Just go [to Yosi Taguri's Blog and add your comments/wishes](http://blogs.microsoft.co.il/blogs/yosit/archive/2006/09/05/2910.aspx) on what you'd like to see. Personally, my biggest wish is that microsoft Israel **follows through with its promises** and campaigns. What do I mean? Half a year later, [and some of the slides](http://www.microsoft.com/israel/teched/tracks/default.aspx) for the Microsoft TechEd Israel Talks are **still not online** (my reflection talk is included as missing in action). It also took them 4 months to post videos from that conference. ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Nov 17, 2006 ### [Final updates on Israeli Blogger Dinner on Monday](https://osherove.com/blog/2006/11/17/final-updates-on-israeli-blogger-dinner-on-monday.html) - Oct 19, 2006 ### [MSDN Premium auction for Africa](https://osherove.com/blog/2006/10/19/msdn-premium-auction-for-africa.html) - Jun 18, 2006 ### [This week at the C# User group - Hardcore ASP.NET 2.0 \[Dan Amiga\]](https://osherove.com/blog/2006/6/18/this-week-at-the-c-user-group-hardcore-aspnet-20-dan-amiga.html) - May 22, 2006 ### [.NETWeblogs upgraded - finally.](https://osherove.com/blog/2006/5/22/netweblogs-upgraded-finally.html) --- title: "Video: Designing For Testability" url: "https://osherove.com/blog/2006/9/1/video-designing-for-testability.md" canonical: "https://osherove.com/blog/2006/9/1/video-designing-for-testability.html" published: "2006-09-01T06:35:04" updated: "2006-09-01T06:35:04" tags: ["Agile", "Agile Related"] author: "Roy Osherove" description: "You can now download my presentation video from DevDays Belgium Entitled \"Designing For Testability\" from last year. Stuff I cover in this talk: Basic design principles that help make sure your code will be testable…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: Designing For Testability By Roy Osherove September 1, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published September 1, 2006; technical details may be outdated. You can now download my presentation video from DevDays Belgium Entitled "Designing For Testability" from last year. Stuff I cover in this talk: - Basic design principles that help make sure your code will be testable - Using "Fake" objects (Stubs and Mocks) and how Interfaces play a role - Overcoming common hurdles such as Singletons, static methods, private methods, constructor logic and more You can download this via a torrent file _(Be kind, **keep seeding** it after you've downloaded it)_: [http://files.osherove.com/torrents/DEVDEV\_Designing\_for\_Testablity\_Roy\_Osherove.wmv.torrent](http://files.osherove.com/torrents/DEVDEV_Designing_for_Testablity_Roy_Osherove.wmv.torrent) The more people download, the better the download speed. Thanks for helping to  seed this thing. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 13, 2006 ### [XP Simulation Blog](https://osherove.com/blog/2006/9/13/xp-simulation-blog.html) - Sep 10, 2006 ### [TypeMock Bundled Up with TestDriven.NET](https://osherove.com/blog/2006/9/10/typemock-bundled-up-with-testdrivennet.html) - Aug 31, 2006 ### [Need help spreading a technical video via Bittorrnet](https://osherove.com/blog/2006/8/31/need-help-spreading-a-technical-video-via-bittorrnet.html) - Aug 27, 2006 ### [Unit Testing Pros And Cons](https://osherove.com/blog/2006/8/27/unit-testing-pros-and-cons.html) --- title: "Need help spreading a technical video via Bittorrnet" url: "https://osherove.com/blog/2006/8/31/need-help-spreading-a-technical-video-via-bittorrnet.md" canonical: "https://osherove.com/blog/2006/8/31/need-help-spreading-a-technical-video-via-bittorrnet.html" published: "2006-08-31T22:43:42" updated: "2006-08-31T22:43:42" tags: ["Agile"] author: "Roy Osherove" description: "Update : fixed the link to the torrent file. you can try and use it now: http://files.osherove.com/torrents/DEVDEV_Designing_for_Testablity_Roy_Osherove.wmv.torrent I have the video of my \" Designing For Testability \"…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Need help spreading a technical video via Bittorrnet By Roy Osherove August 31, 2006 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published August 31, 2006; technical details may be outdated. **Update**: fixed the link to the torrent file. you can try and use it now:  [http://files.osherove.com/torrents/DEVDEV\_Designing\_for\_Testablity\_Roy\_Osherove.wmv.torrent](http://files.osherove.com/torrents/DEVDEV_Designing_for_Testablity_Roy_Osherove.wmv.torrent) I have the video of my "[Designing For Testability](http://weblogs.asp.net/rosherove/archive/2006/03/13/440121.aspx)" talk from DevDays (60MB) ready for download for you guys, but I don't want burden my server too much, so here's what I was thinking of doing (which involves you!) I'm going to make is downloadable via BitTorrent. Then people could use a program like [uTorrent](http://www.utorrent.com/) to download it. **The problem** is I can't "seed" the file from my machine very well, since my upload speed is a crappy 10k, this 60MB file can take a loooong time. (A seed is someone who has the full file locally, so that whatever happens, anyone downloading will always find the full pieces of a the file) So, **I'm looking for "Seeders"**. These folks can then download the file directly from a private link I will send them, and then seed it via BitTorrent.  **Email me to Roy at Osherove.com** if you'd like the private link to seed this and let me know how much upload speed you can spare for this.. I'm looking for the end result to look like this: \* When people click this link: [http://files.osherove.com/torrents/DEVDEV\_Designin...](http://files.osherove.com/torrents/DEVDEV_Designing_for_Testablity_Roy_Osherove.wmv.torrent) they'll have a couple or more seeds that have "real" upload speeds, and it will just work. If you know how to accomplish that when the seeders actually downloaded the full file **not** via torrent, let me know - and that's what we'll do. If not, just click the link now, and in a day or so, we'll have more and more seeds that can help spread the video faster and faster.. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 10, 2006 ### [TypeMock Bundled Up with TestDriven.NET](https://osherove.com/blog/2006/9/10/typemock-bundled-up-with-testdrivennet.html) - Sep 1, 2006 ### [Video: Designing For Testability](https://osherove.com/blog/2006/9/1/video-designing-for-testability.html) - Aug 27, 2006 ### [Unit Testing Pros And Cons](https://osherove.com/blog/2006/8/27/unit-testing-pros-and-cons.html) - Aug 27, 2006 ### [Simple designs through Test Driven Development](https://osherove.com/blog/2006/8/27/simple-designs-through-test-driven-development.html) --- title: "New Language in Google: 'Elmer Fudd'" url: "https://osherove.com/blog/2006/8/30/new-language-in-google-elmer-fudd.md" canonical: "https://osherove.com/blog/2006/8/30/new-language-in-google-elmer-fudd.html" published: "2006-08-30T23:57:00" updated: "2006-08-30T23:57:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Can anyone explain to me why \"Elmer Fudd\" is a language sitting inside my \"Select Google Language\" dialog page? Once I select it, sure enough, my searches end up looking like this: (I know who Elmer Fudd is, so don't…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Language in Google: 'Elmer Fudd' By Roy Osherove August 30, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 30, 2006; technical details may be outdated. Can anyone explain to me why "Elmer Fudd" is a language sitting inside my "Select Google Language" dialog page? Once I select it, sure enough, my searches end up looking like this: (I know who Elmer Fudd is, so don't try to explain, this is just weird!) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 21, 2006 ### [Windows Live - porn related? Google thinks so.](https://osherove.com/blog/2006/9/21/windows-live-porn-related-google-thinks-so.html) - Sep 9, 2006 ### [Cool ScreenSaver: Electric Sheep](https://osherove.com/blog/2006/9/9/cool-screensaver-electric-sheep.html) - Aug 27, 2006 ### [Nice idea for a shirt](https://osherove.com/blog/2006/8/27/nice-idea-for-a-shirt.html) - Jul 23, 2006 ### [ISerializable mentioned on HanselMinutes](https://osherove.com/blog/2006/7/23/iserializable-mentioned-on-hanselminutes.html) --- title: "Ultimate Developer and Power Users Tool List for Windows - Updated" url: "https://osherove.com/blog/2006/8/29/ultimate-developer-and-power-users-tool-list-for-windows-upd.md" canonical: "https://osherove.com/blog/2006/8/29/ultimate-developer-and-power-users-tool-list-for-windows-upd.html" published: "2006-08-29T09:27:26" updated: "2006-08-29T09:27:26" tags: ["Cool Tools", "Cool sites"] author: "Roy Osherove" description: "It's back, and it's bigger than ever, tighter around the edges, and storms into your hard drive faster than you can say \"RegEdit\". It's Scott Hanselman's 2006 Ultimate Developer and Power Users Tool List for Windows If…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ultimate Developer and Power Users Tool List for Windows - Updated By Roy Osherove August 29, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published August 29, 2006; technical details may be outdated. It's back, and it's bigger than ever, tighter around the edges, and storms into your hard drive faster than you can say "RegEdit". It's [Scott Hanselman's 2006 Ultimate Developer and Power Users Tool List for Windows](http://www.hanselman.com/blog/ScottHanselmans2006UltimateDeveloperAndPowerUsersToolListForWindows.aspx) If you're a geek, power user or developer, this list has tools in it you didn't know you needed until you saw them (and there are plenty of those, trust me). Highly recommenced for hanging on your open space wall for when you're bored and looking for something to download and be more "productive". Nice bonus for me: My Regular Expression Tools: [Regulator](https://osherove.com/), [Regulazy](http://regulazy.osherove.com/) and [Regex Visualizers](http://tools.osherove.com/Default.aspx?tabid=187) all made it to the list. Sadly, [my own tools site](http://tools.osherove.com/) didn't - maybe next time! _**Update**: I missed it, but my_ [_Amazoner_](https://osherove.com/) _is on the list too. Glad people found it useful!_ ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Sep 10, 2006 ### [Regulazy 1.02 is out and about](https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.html) - Sep 9, 2006 ### [Cool Tool: vRD - Multiple Remote Desktops in one program](https://osherove.com/blog/2006/9/9/cool-tool-vrd-multiple-remote-desktops-in-one-program.html) - Aug 27, 2006 ### [16 Features in Resharper Every Developer Needs To Learn](https://osherove.com/blog/2006/8/27/16-features-in-resharper-every-developer-needs-to-learn.html) - Aug 21, 2006 ### [Cool Tool: Direct Access - Keyboard macros everywhere](https://osherove.com/blog/2006/8/21/cool-tool-direct-access-keyboard-macros-everywhere.html) --- title: "Unit Testing Pros And Cons" url: "https://osherove.com/blog/2006/8/27/unit-testing-pros-and-cons.md" canonical: "https://osherove.com/blog/2006/8/27/unit-testing-pros-and-cons.html" published: "2006-08-27T16:21:47" updated: "2006-08-27T16:21:47" tags: ["Agile", "Agile Related", "Art Of Unit Testing", "Unit Testing"] author: "Roy Osherove" description: "\" Unit Testing is teh suck \" - this post, and some of the comments to it, represent just about every conceivable FUD (fear, Uncertainty, Doubt) about Unit Testing and Test Driven development I've heard, so I'd urge you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing Pros And Cons By Roy Osherove August 27, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published August 27, 2006; technical details may be outdated. "[Unit Testing is teh suck](http://wilshipley.com/blog/2005/09/unit-testing-is-teh-suck-urr.html)" - this post, and some of the comments to it, represent just about every conceivable [FUD](http://en.wikipedia.org/wiki/FUD) (fear, Uncertainty, Doubt) about Unit Testing and Test Driven development I've heard, so I'd urge you to go and read that post and especially its comments. Why? If you're not sure about Unit Testing, you'll certainly be familiar with some of the fears and doubts mentioned there, which will make you feel better about yourself, but still when you read the comments you'll get a sense that things are not as black and white as they appear to be - Unit Tests **could** be good for you, or at least they seem to be working just fine on \*some\* projects out there. If you're pro Unit Testing, have tried it and have failed, you might find yourself agreeing with some of the stuff mentioned there as some of the core reasons why you failed to do Unit Testing with your Project, but **it does not have to be this way**. My [Upcoming book](http://feeds.feedburner.com/ArtOfUnitTesting) deals **a lot** with ways and techniques to make sure that whatever practical problems you face when writing unit tests (Maintaining Unit Tests is very time consuming, Some part of the code are not testable, Not trusting your Unit Tests etc..) are solved to a degree that your Unit Tests "do much more good and much less harm" -- they're worth writing. Many projects I've seen tried to do unit tests and failed for many reasons: 1. Tests were written poorly and so would fail or pass intermittently 2. Changing Tests after changing the API took way too much time so people simply gave up on them 3. Writing the tests was too hard for the API 4. Tests took too long to run or required massive amounts of setup to run, so no one ran them and all the bugs were found at once, or bugs could not be detected correctly  - it was "debugging night" all over again. 5. Management did not approve of taking lots of time to write tests in a Test Driven Manner (political decision, always) 6. many other reasons. Most of the problems mentioned here can be solved by implementing some technique to Unit Testing, some of which I've described in [this MSDN article](http://msdn.microsoft.com/msdnmag/issues/06/01/UnitTesting), and you can find many others [in this series of blog posts](http://weblogs.asp.net/rosherove/archive/tags/Testing+Guidelines/default.aspx) in my blog "Testing Guidelines" Category. "The Art Of Unit Testing" will deal with many of these techniques head on and in deep fasion and not only explain what can be done, but **why** it's important. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Sep 1, 2006 ### [Video: Designing For Testability](https://osherove.com/blog/2006/9/1/video-designing-for-testability.html) - Aug 31, 2006 ### [Need help spreading a technical video via Bittorrnet](https://osherove.com/blog/2006/8/31/need-help-spreading-a-technical-video-via-bittorrnet.html) - Aug 27, 2006 ### [Simple designs through Test Driven Development](https://osherove.com/blog/2006/8/27/simple-designs-through-test-driven-development.html) - Aug 24, 2006 ### [The Art Of Unit Testing - Starting out My First Book](https://osherove.com/blog/2006/8/24/the-art-of-unit-testing-starting-out-my-first-book.html) --- title: "16 Features in Resharper Every Developer Needs To Learn" url: "https://osherove.com/blog/2006/8/27/16-features-in-resharper-every-developer-needs-to-learn.md" canonical: "https://osherove.com/blog/2006/8/27/16-features-in-resharper-every-developer-needs-to-learn.html" published: "2006-08-27T14:27:45" updated: "2006-08-27T14:27:45" tags: [".NET", "Cool Tools"] author: "Roy Osherove" description: "Jeffery has a nice list of the features in Resharper he uses most often in his daily coding. The list has screenshots and shortcut descriptions, so it's a good cheat sheet for anyone wanting to get into Resharper fast…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 16 Features in Resharper Every Developer Needs To Learn By Roy Osherove August 27, 2006 In [.NET](https://osherove.com/blog/category/net), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published August 27, 2006; technical details may be outdated. [Jeffery has a nice list of the features in Resharper](http://codebetter.com/blogs/jeffrey.palermo/archive/2006/08/02/BreadAndButterResharper.aspx) he uses most often in his daily coding. The list has screenshots and shortcut descriptions, so it's a good cheat sheet for anyone wanting to get into Resharper fast and put it good use. I use each and every one of these. Recommended! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Sep 10, 2006 ### [Regulazy 1.02 is out and about](https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.html) - Sep 9, 2006 ### [How to create your own Auto Login Remote Desktop Application](https://osherove.com/blog/2006/9/9/how-to-create-your-own-auto-login-remote-desktop-application.html) - Aug 21, 2006 ### [Free E-Book: Developing Time-Oriented Database Applications in SQL](https://osherove.com/blog/2006/8/21/free-e-book-developing-time-oriented-database-applications-i.html) - Aug 19, 2006 ### [Nice Threading in .NET 2.0 E-Book and online reference](https://osherove.com/blog/2006/8/19/nice-threading-in-net-20-e-book-and-online-reference.html) --- title: "Who vs. Who in the Middle East? A Visual Map" url: "https://osherove.com/blog/2006/8/27/who-vs-who-in-the-middle-east-a-visual-map.md" canonical: "https://osherove.com/blog/2006/8/27/who-vs-who-in-the-middle-east-a-visual-map.html" published: "2006-08-27T08:34:35" updated: "2006-08-27T08:34:35" tags: [] author: "Roy Osherove" description: "Update : Again, There seems to be a bug in community server - this post should not have ended up on the main feed - it has not tags relating to the main feed whatsoever! I'm not a political blogger, but just In case you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Who vs. Who in the Middle East? A Visual Map By Roy Osherove August 27, 2006 **Historical article** · Originally published August 27, 2006; technical details may be outdated. _**Update**: Again, There seems to be  a bug in community server - this post should not have ended up on the main feed - it has not tags relating to the main feed whatsoever!_ I'm not a political blogger, but just In case you need a map to tell you who's fighting who in the middle each - [this should help](http://www.slate.com/features/2006mideast/middleeast.html)... --- title: "Nice idea for a shirt" url: "https://osherove.com/blog/2006/8/27/nice-idea-for-a-shirt.md" canonical: "https://osherove.com/blog/2006/8/27/nice-idea-for-a-shirt.html" published: "2006-08-27T01:23:59" updated: "2006-08-27T01:23:59" tags: ["Off Topic"] author: "Roy Osherove" description: "Update : There seems to be a bug in community server - this post should not have ended up on the main feed - it has not tags relating to the main feed whatsoever! This is truly an awesome idea . \"After reading about…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice idea for a shirt By Roy Osherove August 27, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 27, 2006; technical details may be outdated. **Update**: There seems to be  a bug in community server - this post should not have ended up on the main feed - it has not tags relating to the main feed whatsoever! This is [truly an awesome idea](http://itsnotallbad.com/iamnotaterrorist/?headlinesareeverything). > "After reading about blogger [Raed Jarrar's experience at JFK](http://www.democracynow.org/article.pl?sid=06/08/21/1348224#transcript) (he was forced to take off a shirt with Arabic writing on it or miss his flight), I finally stopped being depressed about the war on terror and began being proactively pissed off. I made this shirt, which says "I am not a terrorist" in Arabic. I plan to wear it every time I go to the airport from now on." \[via [Digg](http://digg.com/tech_news/A_t_shirt_you_need_to_wear_every_time_you_go_through_airport_security)\] ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 9, 2006 ### [Cool ScreenSaver: Electric Sheep](https://osherove.com/blog/2006/9/9/cool-screensaver-electric-sheep.html) - Aug 30, 2006 ### [New Language in Google: 'Elmer Fudd'](https://osherove.com/blog/2006/8/30/new-language-in-google-elmer-fudd.html) - Jul 23, 2006 ### [ISerializable mentioned on HanselMinutes](https://osherove.com/blog/2006/7/23/iserializable-mentioned-on-hanselminutes.html) - Jul 23, 2006 ### [Moving to FeedBurner](https://osherove.com/blog/2006/7/23/moving-to-feedburner.html) --- title: "Simple designs through Test Driven Development" url: "https://osherove.com/blog/2006/8/27/simple-designs-through-test-driven-development.md" canonical: "https://osherove.com/blog/2006/8/27/simple-designs-through-test-driven-development.html" published: "2006-08-27T01:16:00" updated: "2006-08-27T01:16:00" tags: ["Agile", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "Scott Bellware keeps on wowing me with his elegant way of putting ideas into words, sentences and paragraphs. If you are into Test Driven Development, you should be reading his blog . In one of his latest posts he talks…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Simple designs through Test Driven Development By Roy Osherove August 27, 2006 In [Agile](https://osherove.com/blog/category/agile), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published August 27, 2006; technical details may be outdated. Scott Bellware keeps on wowing me with his elegant way of putting ideas into words, sentences and paragraphs. If you are into Test Driven Development, you should be [reading his blog](http://codebetter.com/blogs/scott.bellware/). In one of his [latest posts](http://codebetter.com/blogs/scott.bellware/archive/2006/08/26/Write-Naive-Test-Code.aspx) he talks about the value of simplistic design, and how you can achieve it with test driven development, despite your brain telling you to do different. here's a nice quote: > "Imagine that you have the freedom to create the simplest, most uncomplicated, and easiest library to use.  Write some client code that shows how that simple library would be used in an ideal scenario.  If you write that client code in an NUnit (or other) test method, you've written _naive_ test code.  And since you've written this specification before you've written your functional library code, you've also just done some Test-Driven Development." That is truly one of the qualities I try to teach students who take on my [TDD classes](http://teamagile.com/). Simplicity is key, and is definitely one of the hardest things to come up with the more experience you have. One of the unfortunate things about Scott's blog is that he has comments turned off (I asked - he's not in any mood to turn them back on due to spam and stuff, and he's not into moderation). So, if you do have comments on that post, feel free to post them here. If interesting questions come up I'll try to answer them myself, if I can't get Scott to answer them personally (since this is \*his\* post - I'll try to act as a "comment by proxy") ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Aug 31, 2006 ### [Need help spreading a technical video via Bittorrnet](https://osherove.com/blog/2006/8/31/need-help-spreading-a-technical-video-via-bittorrnet.html) - Aug 27, 2006 ### [Unit Testing Pros And Cons](https://osherove.com/blog/2006/8/27/unit-testing-pros-and-cons.html) - Aug 24, 2006 ### [The Art Of Unit Testing - Starting out My First Book](https://osherove.com/blog/2006/8/24/the-art-of-unit-testing-starting-out-my-first-book.html) - Aug 22, 2006 ### [It's Not Just Standing Up: Patterns for Daily Stand-up Meetings](https://osherove.com/blog/2006/8/22/its-not-just-standing-up-patterns-for-daily-stand-up-meeting.html) --- title: "Zune - The Hebrew Perspective" url: "https://osherove.com/blog/2006/8/26/zune-the-hebrew-perspective.md" canonical: "https://osherove.com/blog/2006/8/26/zune-the-hebrew-perspective.html" published: "2006-08-26T09:15:53" updated: "2006-08-26T09:15:53" tags: [] author: "Roy Osherove" description: "I'm not sure how much the marketing people at Microsoft are aware of this, but \" Zune \" - their new portable player, has a very \"naughty\" meaning in Hebrew. How Naughty? Let's just say that if I were to use it in a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Zune - The Hebrew Perspective By Roy Osherove August 26, 2006 **Historical article** · Originally published August 26, 2006; technical details may be outdated. I'm not sure how much the marketing people at Microsoft are aware of this, but "[Zune](http://www.zunescene.com/)"  - their new portable player, has a very "naughty" meaning in Hebrew. How Naughty? Let's just say that if I were to use it in a sentence it could look like this: _"Would you like to get "Z-une"d and have a cigarette afterwards?"_ In fact, it's enough to utter the header on the ZuneScene page to crack up a little smile if you know a little Hebrew :_"Dude, You're getting a Zune!"_ _**Small note:** To utter it in the "naughty" sense in Hebrew, you'd pronounce it as "Zee-You-n". Saying "Zoon" is close enough, but really means nothing. However, if you compare this with "i-tunes" then "z-une" really does fit the bill quite nicely as "Zune music player" :)_ --- title: "The Art Of Unit Testing - Starting out My First Book" url: "https://osherove.com/blog/2006/8/24/the-art-of-unit-testing-starting-out-my-first-book.md" canonical: "https://osherove.com/blog/2006/8/24/the-art-of-unit-testing-starting-out-my-first-book.html" published: "2006-08-24T18:04:00" updated: "2006-08-24T18:04:00" tags: ["Agile", "Agile Related", "Art Of Unit Testing"] author: "Roy Osherove" description: "I'm happy to announce my new Book Project : \"The Art Of Unit Testing\". The book will use examples in .NET, but it should be general enough so that any java or C++ developer should be able to read it and learn things.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Art Of Unit Testing - Starting out My First Book By Roy Osherove August 24, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing) **Historical article** · Originally published August 24, 2006; technical details may be outdated. I'm happy to announce my new Book Project : "The Art Of Unit Testing". The book will use examples in .NET, but it should be general enough so that any java or C++ developer should be able to read it and learn things. I'll talk more about the book's contents in future posts. I'll be writing the book for Manning, and it should hopefully be out in time for Tech-Ed US, Next year (Spring 2007). I hope to blog about my experiences writing the book, and to share the readers with parts of it, as they come in. I'll also use this blog to consult, get feedback and share information from the book. As a smart person once said "this should be interesting.." Here's to a great start! I'm writing chapter 1 these days :) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Aug 27, 2006 ### [Unit Testing Pros And Cons](https://osherove.com/blog/2006/8/27/unit-testing-pros-and-cons.html) - Aug 27, 2006 ### [Simple designs through Test Driven Development](https://osherove.com/blog/2006/8/27/simple-designs-through-test-driven-development.html) - Aug 22, 2006 ### [It's Not Just Standing Up: Patterns for Daily Stand-up Meetings](https://osherove.com/blog/2006/8/22/its-not-just-standing-up-patterns-for-daily-stand-up-meeting.html) - Aug 16, 2006 ### [SharpRobo - Winform UI Unit Testing made easier?](https://osherove.com/blog/2006/8/16/sharprobo-winform-ui-unit-testing-made-easier.html) --- title: "It's Not Just Standing Up: Patterns for Daily Stand-up Meetings" url: "https://osherove.com/blog/2006/8/22/its-not-just-standing-up-patterns-for-daily-stand-up-meeting.md" canonical: "https://osherove.com/blog/2006/8/22/its-not-just-standing-up-patterns-for-daily-stand-up-meeting.html" published: "2006-08-22T01:39:53" updated: "2006-08-22T01:39:53" tags: ["Agile", "Agile Related"] author: "Roy Osherove" description: "Martin Fowler (a.k.a \"The GoF dude\") (I messed up and confused Martin as one of the authors. I tend to do that a lot - think that Martin has done lots and lots of things.. thanks for the comments.) points to an…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # It's Not Just Standing Up: Patterns for Daily Stand-up Meetings By Roy Osherove August 22, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published August 22, 2006; technical details may be outdated. [Martin Fowler](http://www.martinfowler.com/) _~(a.k.a "The~_ [_~GoF~_](http://en.wikipedia.org/wiki/Design_Patterns) _~dude")~(I messed up and confused Martin as one of the authors. I tend to do that a lot - think that Martin has done lots and lots of things.. thanks for the comments.)_ points to [an interesting article](http://martinfowler.com/articles/itsNotJustStandingUp.html) about Stand-up meeting patterns: [**It's Not Just Standing Up: Patterns for Daily Stand-up Meetings**](http://martinfowler.com/articles/itsNotJustStandingUp.html) "...he discusses how make stand-up meetings work. Stand-ups (also known as scrums) are short daily status meetings used to communicate what everyone is doing to everyone else. When they work well, they can be very effective - so it's good to know the tips that make them work." Couldn't have said it better myself. Here are some of the "patterns" described, and I'll note that from my reading, some of them are not really patterns for the whole meetings, but "best practices" to be carried out during the meeting, rather than describing "different kinds" of stand up meetings (though a couple actually do change the meaning of the meeting, most of them simply add value to it): - Same Place, Same Time - Pig and Chickens - All Hands - Attend By Proxy - Use the Stand-up to Start The Day - Don't Use the Stand-up to Start the Day - Huddle - Fifteen Minutes or Less - Stand Up - Round Robin - Time the Meetings - Yesterday Today Obstacles - Focus on the Backlog - Take It Offline - Blockage Board Rotate the Facilitator - **Plus** Various Smells ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Aug 27, 2006 ### [Simple designs through Test Driven Development](https://osherove.com/blog/2006/8/27/simple-designs-through-test-driven-development.html) - Aug 24, 2006 ### [The Art Of Unit Testing - Starting out My First Book](https://osherove.com/blog/2006/8/24/the-art-of-unit-testing-starting-out-my-first-book.html) - Aug 16, 2006 ### [SharpRobo - Winform UI Unit Testing made easier?](https://osherove.com/blog/2006/8/16/sharprobo-winform-ui-unit-testing-made-easier.html) - Jul 22, 2006 ### [How do you avoid bugs in your unit tests?](https://osherove.com/blog/2006/7/22/how-do-you-avoid-bugs-in-your-unit-tests.html) --- title: "Cool Tool: Direct Access - Keyboard macros everywhere" url: "https://osherove.com/blog/2006/8/21/cool-tool-direct-access-keyboard-macros-everywhere.md" canonical: "https://osherove.com/blog/2006/8/21/cool-tool-direct-access-keyboard-macros-everywhere.html" published: "2006-08-21T21:53:42" updated: "2006-08-21T21:53:42" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "Direct Access seems like a nice little utility I could use in my day to day work: from LarkWare : \"Here's how it works. You define \"actions\" within the direct access interface. An action can be opening a Web site,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool Tool: Direct Access - Keyboard macros everywhere By Roy Osherove August 21, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published August 21, 2006; technical details may be outdated. [Direct Access](http://www.nagarsoft.com/) seems like a nice little utility I could use in my day to day work: from [LarkWare](http://www.larkware.com/NewReviews/directaccess.aspx): "Here's how it works. You define "actions" within the direct access interface. An action can be opening a Web site, launching an application, composing a new e-mail message, or typing out a chunk of text. Each action gets assigned a set of keystrokes as a command - for example, I've got se aliased to the SlickEdit text editor that I use. Now, any time I type se in any application a little tooltip pops up showing the SlickEdit icon and the Direct Access confirmation key (F1 by default, though you can change this). If I hit the confirmation key, Direct Access erases the command keystrokes and launches SlickEdit. If I type anything else - say, "se" turns into "serious" - the tooltip just vanishes without being more than a momentary flash on screen." ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Aug 29, 2006 ### [Ultimate Developer and Power Users Tool List for Windows - Updated](https://osherove.com/blog/2006/8/29/ultimate-developer-and-power-users-tool-list-for-windows-upd.html) - Aug 27, 2006 ### [16 Features in Resharper Every Developer Needs To Learn](https://osherove.com/blog/2006/8/27/16-features-in-resharper-every-developer-needs-to-learn.html) - Aug 16, 2006 ### [SharpRobo - Winform UI Unit Testing made easier?](https://osherove.com/blog/2006/8/16/sharprobo-winform-ui-unit-testing-made-easier.html) - Aug 14, 2006 ### [Two cool utils: InstallPad and Live Writer](https://osherove.com/blog/2006/8/14/two-cool-utils-installpad-and-live-writer.html) --- title: "Free E-Book: Developing Time-Oriented Database Applications in SQL" url: "https://osherove.com/blog/2006/8/21/free-e-book-developing-time-oriented-database-applications-i.md" canonical: "https://osherove.com/blog/2006/8/21/free-e-book-developing-time-oriented-database-applications-i.html" published: "2006-08-21T20:09:36" updated: "2006-08-21T20:09:36" tags: [".NET", ".Net 2.0", "ADO.Net", "Free book chapters"] author: "Roy Osherove" description: "One of the books I mention in my Amazon Wish List is Developing Time-Oriented Database Applications in SQL (Morgan Kaufmann Series in Data Management Systems) . A few days ago I got an email from Steven Gravitz telling…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free E-Book: Developing Time-Oriented Database Applications in SQL By Roy Osherove August 21, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [ADO.Net](https://osherove.com/blog/category/ado-net), [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published August 21, 2006; technical details may be outdated. One of the books I mention in my Amazon Wish List is [Developing Time-Oriented Database Applications in SQL (Morgan Kaufmann Series in Data Management Systems)](https://www.amazon.com/exec/obidos/ASIN/1558604367/iserializable-20) . A few days ago I got an email from Steven Gravitz telling me that the book is actually available in downloadable PDF form for free. [Here's the direct link](http://www.cs.arizona.edu/people/rts/tdbbook.pdf) (PDF). One of the reasons I was once interested in such a book was that I had to build and design a payroll system, which had many interesting facets relating to time. Mainly, it had to keep track of the past 7 years of payrolls, terms of employment and raises in salaries, with each month having it's own total history (that is - the 12 months that count for doing salaries in February 2002, may be totally different that the 12 months that count for calculating the salaries for March 2002 - it's really an amazing concept. I call each such month a "comet" with it's preceding history as the "tail" - each month is its own comment with its own tail.) It was head-squeezing fun for me, as I learned all the hard stuff the hard way. This book seemed to be talking about just these kinds of problems. In fact, here are a couple paragraphs from the preface: "This is how it goes. We develop a database application, and initially the project proceeds  smoothly enough.There are alternatives to weigh during the schema design,problems to contend with while writing the SQL code,and constant reconfiguration and interaction with other programs and legacy data, but all in all the project is under control.Then we decide that one of the tables needs another DATE column, recording when the row was valid. ( After all, we added a birthdate column a few weeks ago, with no surprises.) So we rework the part of the application that maintains that table, noticing that the code is getting more complicated. During testing, we discover that the primary key no longer is sufficient.We add the DATE column to the primary key, acknowledging that this is only a stop gap measure, and hope that the input data will be well formed, as there isn't  time to write code that checks those constraints properly. In the back of our mind is the lingering doubt that perhaps referential integrity checking isn't working quite right either. We soon realize that we need another DATE column to record when the row was no longer valid. In doing so we encounter a raft of off-by-one bugs..." "...Around this time, users start complaining that reports aren't  consistent, that copies of the end-of-the-year summary have different numbers in them..." And so he goes on to describe a situation that many of us had faced in the past or will face in the future... I'll get to reading it before bedtime.. Thanks for the tip, Steven! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Sep 9, 2006 ### [How to create your own Auto Login Remote Desktop Application](https://osherove.com/blog/2006/9/9/how-to-create-your-own-auto-login-remote-desktop-application.html) - Aug 27, 2006 ### [16 Features in Resharper Every Developer Needs To Learn](https://osherove.com/blog/2006/8/27/16-features-in-resharper-every-developer-needs-to-learn.html) - Aug 19, 2006 ### [Nice Threading in .NET 2.0 E-Book and online reference](https://osherove.com/blog/2006/8/19/nice-threading-in-net-20-e-book-and-online-reference.html) - Aug 16, 2006 ### [SharpRobo - Winform UI Unit Testing made easier?](https://osherove.com/blog/2006/8/16/sharprobo-winform-ui-unit-testing-made-easier.html) --- title: "Nice Threading in .NET 2.0 E-Book and online reference" url: "https://osherove.com/blog/2006/8/19/nice-threading-in-net-20-e-book-and-online-reference.md" canonical: "https://osherove.com/blog/2006/8/19/nice-threading-in-net-20-e-book-and-online-reference.html" published: "2006-08-19T00:56:52" updated: "2006-08-19T00:56:52" tags: [".NET", ".Net 2.0"] author: "Roy Osherove" description: "Update : Here's a little article that shows locking with Blocking Queues (an idea I refer to at the bottom of the article) I recently found this great online E-Book about Threading in .NET (also applies to .NET 2.0!),…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice Threading in .NET 2.0 E-Book and online reference By Roy Osherove August 19, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published August 19, 2006; technical details may be outdated. _**Update**: Here's a_ [_little article_](http://www.dotnetjunkies.com/Tutorial/D7E688B8-0BDD-4D44-9A0F-4CD26FB35F51.dcik) _that shows locking with Blocking Queues (an idea I refer to at the bottom of the article)_ I recently found [this great online E-Book](http://www.albahari.com/threading/) about Threading in .NET (also applies to .NET 2.0!), thanks to a link on [this blog.](http://spietrek.blogspot.com/2006/08/threading-in-c-free-e-book.html) I've used it several times since to learn about interesting and useful stuff such as how to properly use ReaderWriterLocks, When does Thread.SpinWait() make sense (almost never) and the various ways there are to synchronize access to common resources in a multi threaded, multi CPU environment (lots). The thing about .NET threading is that, not only is it scary to the uninitiated (as it should be), every time to check it out, you find out something you didn't know about. One thing I got to notice a lot about threading, and locking specifically, is that people tend to use it where it's not really needed, or where other approaches tend to make more sense. For example. a case where you are trying to synchronize multiple commands from multiple threads into a single resource, that performs a "heavy" task for each request. Many people tend to approach this with WaitHandles and what not, when easily one of the most scalable approaches is to put a Request Queue somewhere in the receiving end, and simply "pop" messages out of the queue when you are finished handling the last one. It makes the locking scheme much more easily understood, and makes for a very scalable system (you could easily have multiple threads reading from the queue to handle more requests at the same time when on a multi CPU machine, for example). So, threading \*is\* important, especially to understand when you need to use \*other means\* to accomplish your tasks, and how threading can help to make using those other means run smoothly (in my example, synchronizing the read/write to the queue may be in order, but the queue is the "other means" by which you separate your requests into a logical "first in, first out" requirement in the system. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 27, 2006 ### [16 Features in Resharper Every Developer Needs To Learn](https://osherove.com/blog/2006/8/27/16-features-in-resharper-every-developer-needs-to-learn.html) - Aug 21, 2006 ### [Free E-Book: Developing Time-Oriented Database Applications in SQL](https://osherove.com/blog/2006/8/21/free-e-book-developing-time-oriented-database-applications-i.html) - Aug 16, 2006 ### [SharpRobo - Winform UI Unit Testing made easier?](https://osherove.com/blog/2006/8/16/sharprobo-winform-ui-unit-testing-made-easier.html) - Aug 6, 2006 ### [2 Day Architecture & SOA Course - Sound Interesting?](https://osherove.com/blog/2006/8/6/2-day-architecture-amp-soa-course-sound-interesting.html) --- title: "Speaker Idol @ TechEd: Developers" url: "https://osherove.com/blog/2006/8/16/speaker-idol-teched-developers.md" canonical: "https://osherove.com/blog/2006/8/16/speaker-idol-teched-developers.html" published: "2006-08-16T15:50:00" updated: "2006-08-16T15:50:00" tags: ["Community News"] author: "Roy Osherove" description: "Got this in the email - thought some of you might be interested! Speaker Idol @ Tech·Ed: Developers 7 - 10 November, Barcelona, Spain Take to the Speaker Idol stage, demonstrate your exceptional presentation skills and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Speaker Idol @ TechEd: Developers By Roy Osherove August 16, 2006 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published August 16, 2006; technical details may be outdated. Got this in the email - thought some of you might be interested! **Speaker Idol @ Tech·Ed: Developers 7 - 10 November, Barcelona, Spain** Take to the Speaker Idol stage, demonstrate your exceptional presentation skills and become the rock star presenter of the future! Microsoft is searching for talented presenters who can talk-the-talk, grab the attention of the developer community and connect with them as only developers can.  Is that you? Enter this year’s Speaker Idol contest and you stand to win the opportunity of presenting a technical breakout session at TechEd: Developers 2007. And if that’s not enough, two runners-up will also win a free ticket each to attend TechEd: Developers 2007. See the Web site for more details - [www.microsoft.com/europe/teched-developers/](http://www.microsoft.com/europe/teched-developers/) ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Sep 6, 2006 ### [Neglecting Israeli MVPS, and INETA MEA is worthless](https://osherove.com/blog/2006/9/6/neglecting-israeli-mvps-and-ineta-mea-is-worthless.html) - Sep 6, 2006 ### [Influence the next Microsoft Israel Conference](https://osherove.com/blog/2006/9/6/influence-the-next-microsoft-israel-conference.html) - Aug 10, 2006 ### [Regulazy 1.01 is available for download](https://osherove.com/blog/2006/8/10/regulazy-101-is-available-for-download.html) - Jul 21, 2006 ### [Microsoft's SharePoint treats FireFox as 2nd class citizen](https://osherove.com/blog/2006/7/21/microsofts-sharepoint-treats-firefox-as-2nd-class-citizen.html) --- title: "SharpRobo - Winform UI Unit Testing made easier?" url: "https://osherove.com/blog/2006/8/16/sharprobo-winform-ui-unit-testing-made-easier.md" canonical: "https://osherove.com/blog/2006/8/16/sharprobo-winform-ui-unit-testing-made-easier.html" published: "2006-08-16T06:59:01" updated: "2006-08-16T06:59:01" tags: [".NET", "Agile", "Cool Tools"] author: "Roy Osherove" description: "Hmm. SharpRobo seems like something that might *start* to satisfy those who just can't do without UI Testing and have been looking for a way to do it from within their unit test frameworks (such as NUnit or FIT):…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SharpRobo - Winform UI Unit Testing made easier? By Roy Osherove August 16, 2006 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published August 16, 2006; technical details may be outdated. Hmm. [SharpRobo](http://confluence.public.thoughtworks.org/display/SHRO/Home) seems like something that might \*start\* to satisfy those who just can't do without UI Testing and have been looking for a way to do it from within their unit test frameworks (such as NUnit or FIT): "SharpRobo is a Functional Testing and Recording tool for WinForm applications written in .NET supported language. It supports all the standard WinForm controls. SharpRobo records the tests in FIT format which can be played back using Fit (File or Directory Runner)." \[via [Jeffery](http://codebetter.com/blogs/jeffrey.palermo/archive/2006/08/11/148225.aspx)\] ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 21, 2006 ### [Free E-Book: Developing Time-Oriented Database Applications in SQL](https://osherove.com/blog/2006/8/21/free-e-book-developing-time-oriented-database-applications-i.html) - Aug 19, 2006 ### [Nice Threading in .NET 2.0 E-Book and online reference](https://osherove.com/blog/2006/8/19/nice-threading-in-net-20-e-book-and-online-reference.html) - Aug 6, 2006 ### [2 Day Architecture & SOA Course - Sound Interesting?](https://osherove.com/blog/2006/8/6/2-day-architecture-amp-soa-course-sound-interesting.html) - Jul 18, 2006 ### [Understanding the different generic collections in .NET (List, BindingList, Collection)](https://osherove.com/blog/2006/7/18/understanding-the-different-generic-collections-in-net-listl.html) --- title: "Two cool utils: InstallPad and Live Writer" url: "https://osherove.com/blog/2006/8/14/two-cool-utils-installpad-and-live-writer.md" canonical: "https://osherove.com/blog/2006/8/14/two-cool-utils-installpad-and-live-writer.html" published: "2006-08-14T21:27:00" updated: "2006-08-14T21:27:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Two things are on my plate today (small as they may be..) Live Writer is my new blog post writer, and it's pretty cool (via Scott ). Main reasons: It has spell checking built in, and it posts nicely into Community…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Two cool utils: InstallPad and Live Writer By Roy Osherove August 14, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published August 14, 2006; technical details may be outdated. Two things are on my plate today (small as they may be..) 1. [Live Writer](http://windowslivewriter.spaces.live.com/blog/cns%21D85741BB5E0BE8AA%21174.entry) is my new blog post writer, and it's pretty cool (via [Scott](http://www.hanselman.com/blog/WindowsLiveWriterAndDasBlog19.aspx)). Main reasons: It has spell checking built in, and it posts nicely into Community Server (though it does not detect it automatically like it did for Scott's DasBlog blog platform. Setting it up was a breeze though.. 1. [InstallPad](http://www.installpad.com/) looks like it could be the next big hit for me. It will automatically download and install applications from a list you edit. Even make sure the latest version is the one downloaded! I know many places that I can share my Application list with to get them more productive. Once I have an app list or two, I'll post it here (via [Larkware](http://www.larkware.com/dg6/TheDailyGrind947.aspx)) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Aug 21, 2006 ### [Cool Tool: Direct Access - Keyboard macros everywhere](https://osherove.com/blog/2006/8/21/cool-tool-direct-access-keyboard-macros-everywhere.html) - Aug 16, 2006 ### [SharpRobo - Winform UI Unit Testing made easier?](https://osherove.com/blog/2006/8/16/sharprobo-winform-ui-unit-testing-made-easier.html) - Jul 26, 2006 ### [Sanjay's cool tools](https://osherove.com/blog/2006/7/26/sanjays-cool-tools.html) - Jul 19, 2006 ### [Regulazy Facts](https://osherove.com/blog/2006/7/19/regulazy-facts.html) --- title: "Regulazy 1.01 is available for download" url: "https://osherove.com/blog/2006/8/10/regulazy-101-is-available-for-download.md" canonical: "https://osherove.com/blog/2006/8/10/regulazy-101-is-available-for-download.html" published: "2006-08-10T07:41:00" updated: "2006-08-10T07:41:00" tags: ["Community News", "General Software Devel..."] author: "Roy Osherove" description: "There’s a new version out for The Regulazy, which you can grab here . Update : 30 minutes after the last update, I uploaded a newer version (1.011) which fixes a crash with some HTML Partsing inputs. You can simply…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Regulazy 1.01 is available for download By Roy Osherove August 10, 2006 In [Community News](https://osherove.com/blog/category/community-news), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published August 10, 2006; technical details may be outdated. There’s a new version out for The Regulazy, which [you can grab here](https://osherove.com/tools/). _**Update**_: 30 minutes after the last update, I uploaded a newer version (1.011) which fixes a crash with some HTML Partsing inputs. You can simply re-download the file, and it will contain the newer version. If you don’t know what the regulazy is: Regulazy is a visual Regex Creation tool for beginners. Easy point and click user interfaces, predictive technology and much more! ![Short Regulazy Sample](https://osherove.com/img/wb/5bcdc6e6_tools.osherove.com_Portals_6_RegulazyDemo.gif) **What’s New?** There are several bug fixes in this iteration, but the biggest **addition** to the program is the ability to add your own rules to Regulazy. In the program directory you’ll find \*.rules files. You can edit them or add your own .rules files with specific names such as “date.rules” or whatever you like. Regulazy reads all rule files in its directory and shows them dynamically when they apply to the selected text in the work pane. You can find out how to create your own rules (which is very simple - a line of text for each rule) in “How to edit rules.txt” file located in the program directory. Also, if you feel that you have rules that should be installed “by default” with the program (appear in default.rules) you can simply send them by email through the program help menu, or submit them to [http://bugz.osherove.com](http://bugz.osherove.com/) as feature requests. This is still beta and there are still various small bugs out there, but I want to get the major stuff out of the way before I get into more of the  “dirty work”. ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Sep 6, 2006 ### [Influence the next Microsoft Israel Conference](https://osherove.com/blog/2006/9/6/influence-the-next-microsoft-israel-conference.html) - Aug 16, 2006 ### [Speaker Idol @ TechEd: Developers](https://osherove.com/blog/2006/8/16/speaker-idol-teched-developers.html) - Jul 21, 2006 ### [Microsoft's SharePoint treats FireFox as 2nd class citizen](https://osherove.com/blog/2006/7/21/microsofts-sharepoint-treats-firefox-as-2nd-class-citizen.html) - Jul 19, 2006 ### [Microsoft Acquires Winternals (a.k.a SysInternals) Software](https://osherove.com/blog/2006/7/19/microsoft-acquires-winternals-aka-sysinternals-software.html) --- title: "2 Day Architecture & SOA Course - Sound Interesting?" url: "https://osherove.com/blog/2006/8/6/2-day-architecture-amp-soa-course-sound-interesting.md" canonical: "https://osherove.com/blog/2006/8/6/2-day-architecture-amp-soa-course-sound-interesting.html" published: "2006-08-06T20:17:00" updated: "2006-08-06T20:17:00" tags: [".NET", "Architecture", "web services"] author: "Roy Osherove" description: "If you're in Israel, Udi Dahan , Israel's own Software Simplist, is holding a 2 day Architecture and SOA course. Some of the stuff he's covering sounds interesting. Even if it's something I've heard before, It's always…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 2 Day Architecture & SOA Course - Sound Interesting? By Roy Osherove August 6, 2006 In [.NET](https://osherove.com/blog/category/net), [Architecture](https://osherove.com/blog/category/architecture), [web services](https://osherove.com/blog/category/web-services) **Historical article** · Originally published August 6, 2006; technical details may be outdated. If you're in Israel, [Udi Dahan](http://udidahan.weblogs.us/), Israel's own Software Simplist, is holding a 2 day Architecture and SOA course. Some of the stuff he's covering sounds interesting. Even if it's something I've heard before, It's always good to get another perspective on things, especially from someone who seems to be living and breathing this stuff on a daily basis. And by that I mean someone who'd go through the trouble of doing a whole podcast on [REST vs. Web services on Dr. Dobbs' Journal.](http://www.ddj.com/dept/webservices/190500484) You can get [more info on this on Udi's blog](http://udidahan.weblogs.us/archives/036769.html). ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 19, 2006 ### [Nice Threading in .NET 2.0 E-Book and online reference](https://osherove.com/blog/2006/8/19/nice-threading-in-net-20-e-book-and-online-reference.html) - Aug 16, 2006 ### [SharpRobo - Winform UI Unit Testing made easier?](https://osherove.com/blog/2006/8/16/sharprobo-winform-ui-unit-testing-made-easier.html) - Jul 18, 2006 ### [Understanding the different generic collections in .NET (List, BindingList, Collection)](https://osherove.com/blog/2006/7/18/understanding-the-different-generic-collections-in-net-listl.html) - Jun 27, 2006 ### [ORMappers.Com is open for business (sort of)](https://osherove.com/blog/2006/6/27/ormapperscom-is-open-for-business-sort-of.html) --- title: "Spam Comments - The new enemy" url: "https://osherove.com/blog/2006/8/6/spam-comments-the-new-enemy.md" canonical: "https://osherove.com/blog/2006/8/6/spam-comments-the-new-enemy.html" published: "2006-08-06T00:24:00" updated: "2006-08-06T00:24:00" tags: [] author: "Roy Osherove" description: "If you've been trying to post comments on this blog and haven't seen them published - my apologies. for the past few weeks there's been an uproar of spam comments - close to a hundred a day now - which prevents me from…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Spam Comments - The new enemy By Roy Osherove August 6, 2006 **Historical article** · Originally published August 6, 2006; technical details may be outdated. If you've been trying to post comments on this blog and haven't seen them published - my apologies. for the past few weeks there's been an uproar of spam comments - close to a hundred a day now - which prevents me from finding the ones that are legitimate and posting them. Hopefully, this will end soon enough ,but for now, it may take a while until I can filter thorugh all this junk. Sorry. --- title: "Sanjay's cool tools" url: "https://osherove.com/blog/2006/7/26/sanjays-cool-tools.md" canonical: "https://osherove.com/blog/2006/7/26/sanjays-cool-tools.html" published: "2006-07-26T19:57:00" updated: "2006-07-26T19:57:00" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "So I don't forget, Sanjay's cool tools category has lots of, well, cool tools I need to check out when I have time." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Sanjay's cool tools By Roy Osherove July 26, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published July 26, 2006; technical details may be outdated. So I don't forget, [Sanjay's cool tools](http://sastools.com/b2/category/CoolTools) category has lots of, well, cool tools I need to check out when I have time. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Aug 16, 2006 ### [SharpRobo - Winform UI Unit Testing made easier?](https://osherove.com/blog/2006/8/16/sharprobo-winform-ui-unit-testing-made-easier.html) - Aug 14, 2006 ### [Two cool utils: InstallPad and Live Writer](https://osherove.com/blog/2006/8/14/two-cool-utils-installpad-and-live-writer.html) - Jul 19, 2006 ### [Regulazy Facts](https://osherove.com/blog/2006/7/19/regulazy-facts.html) - Jun 18, 2006 ### [Control Google Maps by Tilting your ThinkPad](https://osherove.com/blog/2006/6/18/control-google-maps-by-tilting-your-thinkpad.html) --- title: "Online Database Schema Samples Library" url: "https://osherove.com/blog/2006/7/24/online-database-schema-samples-library.md" canonical: "https://osherove.com/blog/2006/7/24/online-database-schema-samples-library.html" published: "2006-07-24T20:47:00" updated: "2006-07-24T20:47:00" tags: ["General Software Devel..."] author: "Roy Osherove" description: "This is so I don't forget. Scott Guthrie posted about a site that has pre-bui;t schema examples of common database scenarios. In short - it lets you see what a \"standard\" database for an application related to a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Online Database Schema Samples Library By Roy Osherove July 24, 2006 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published July 24, 2006; technical details may be outdated. This is so I don't forget. Scott Guthrie [posted](https://weblogs.asp.net/scottgu/archive/2006/07/12/Tip_2F00_Trick_3A00_-Online-Database-Schema-Samples-Library.aspx) about a site that has pre-bui;t schema examples of common database scenarios. In short - it lets you see what a "standard" database for an application related to a specific topic might look like: "The library includes hundreds of sample database schemas for tons of topics – ranging from “Airline Reservations” to “Organizations and People” to “Car Servicing” to “Pizza Delivery”." Coolness:[library of free database models](http://www.databaseanswers.org/data_models) ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Aug 10, 2006 ### [Regulazy 1.01 is available for download](https://osherove.com/blog/2006/8/10/regulazy-101-is-available-for-download.html) - Jul 26, 2006 ### [Sanjay's cool tools](https://osherove.com/blog/2006/7/26/sanjays-cool-tools.html) - Jul 23, 2006 ### [Hibernate may violate "Object model mapping and runtime engine" patent](https://osherove.com/blog/2006/7/23/hibernate-may-violate-quotobject-model-mapping-and-runtime-e.html) - Jul 19, 2006 ### [Regulazy Facts](https://osherove.com/blog/2006/7/19/regulazy-facts.html) --- title: "First Technical Steps to managing your own business" url: "https://osherove.com/blog/2006/7/24/first-technical-steps-to-managing-your-own-business.md" canonical: "https://osherove.com/blog/2006/7/24/first-technical-steps-to-managing-your-own-business.html" published: "2006-07-24T19:22:00" updated: "2006-07-24T19:22:00" tags: [] author: "Roy Osherove" description: "Before you leave your current job to become independent, consider the following: 1. Don’t leave before you have a website 2. Don’t leave before you have an “official” email address 3. Don’t leave before you have a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # First Technical Steps to managing your own business By Roy Osherove July 24, 2006 **Historical article** · Originally published July 24, 2006; technical details may be outdated. Before you leave your current job to become independent, consider the following: 1.       Don’t leave before you have a website 2.       Don’t leave before you have an “official” email address 3.       Don’t leave before you have a business card 4.       Don’t leave before you have your first client (hopefully) **Don’t leave before you have  a business card** And a business card needs to have your website on it, and a real email address (not GMail). There are numerous sites on the web that can help print business card, so don’t even think about printing the thing on your home printer. It never comes out as well as you’d like, and the paper quality is minimal. You want something that says professionalism, not “home made”. **How do I get a domain?** I used [godaddy.com](http://www.godaddy.com/) to get a domain name for less than $10 a year. Don’t bother paying more for the advanced email services there though - we’ll talk about options for managing your emails in a bit. **Should I get a “.com” domain or one for my own country?** I live in Israel but I didn’t get a “co.il” address. The main reason being that “.com” is much easier to remember and is more intuitive, and the second being that in most browsers, writing a word such as “cnn” and then clicking “Ctrl-Enter” you get automatic completion to “.com”. It’s easier to get to your site if it’s “.com”.  if you used “.net” for example, people would constantly be confused and try to go to \[yoursitename\].com first and only then to “.net”. Hasn’t this ever happened to you? **How do I manage my domain(s)?** When you register a domain at a registrar such as GoDaddy.com they let you manage the domains you have with them, including setting the nameservers, email forwarding and everything else you’d need. That can lead to several potential problems though: - If you have domains with more than one registrar you have to manage all that from multiple sites, each with its own interface, passwords and more - The sites usually contain a heavyset UI that includes many things you don’t need and many “offers” that come up when all you want to do is manage your email account settings. The best thing I did right after I got my first domain was to register a free account with [ZoneEdit.Com](http://www.zoneedit.com/). It’s a site dedicated to managing your DNS’s, domains forwarding, email forwarding, IP addresses, email server and MX records, and anything that has to do with how you want to wire up your various domains and sub domain names.  The idea is this: - You Add your new domain to you zoneedit.com account (you’ll get a notice that your domain’s nameservers are not pointed correctly and given the names and IPs of the nameservers to point to) - Once you register a new domain (in any registrar), you immediately set your new nameservers for that domain in the registrar settings to point to those of ZoneEdit.com. - Start managing \*everything\* to do with your websites, emails, MX records, subdomains from ZoneEdit. ZoneEdit.com not only gives you 5 free domain managements free, but it’s also dedicated for this purpose. So it’s faster, easier and very slim to use - the UI is simply functional, not beautiful. And it has good guidance on what to do when. There are some other sites like it, but I like it a lot. **Web hosting** I use [webHost4Life](http://www.webhost4life.com/default.asp?refid=royosherove) as my service provider_(click [here](http://www.webhost4life.com/) for going there without using my referrer ID)_. The support  seems decent and the payment isn’t too high. For my money I get ASP.NET hosting, 2 SQL server 2005 databases and 2GB of space. The best thing about it is that the control panel allows creating your own site on it using DotNetNuke or other platforms. We’ll talk about that later. Once you setup your website there, all you need to do is add the hosting IP to ZoneEdit.Com and you’re good to go.  They also allow you to manage your domains and emails there (just like godaddy.com does, but I manage it all from ZoneEdit.com. _(note: when you have multiple domains that you want to host on the same hosting service at webhost4life, you need to pay an extra $15 a year for each domain name that points to the “root” of the site so, it won’t cost you anything to have “X.mydomain.com” and “y.mydomain.com” pointed to a virtual folder on your site there, but if you want both of them to point to the root, it will cost you extra)_ **I want to use Exchange for my emails** That’s what I wanted to. It’s pretty easy to do - I opened an account with [LanLogic](http://www.lanlogic.net/exchange/2003-shared.asp) for hosted Exchange. The nice thing about it is that it provides access to mobile clients just as easily as part of the package, so I can read emails on the go from my mobile phone, and I don’t have any sync problems reading email from anywhere. Plus, I get to use outlook on my home and laptop, without needing to host Exchange server or administer it, which is a pin (I tried). Support is not amazing, but it works. I needed it to configure certificates for SLL through my mobile phone, and got the info I needed. **I don’t want to use Exchange, and I don’t want to pay for a “real” email.** Actually, that’s also possible.  The ingredients: - A Gmail Account - A domain - ZoneEdit.Com (optional, but recommended) Our basic plan is this:  Manage all our email from Gmail, but “appear” to be sending mail from “mydomain.com”. Here’s what you do. - If you’re using “ZoneEdit” you can add a new email forwarding so that all mail sent to \[email removed\] will be automatically forwarded to “\[email removed\]” . That’s simple enough. - Now go to your gmail account, click “settings”, then click “accounts”, and next to the “send mail as” section click “edit info”. Put your “official” email in the “reply to ” field. Now, every email you get will be though gmail, and every reply you send will be from “\[email removed\]. **I want to have a “catch all” email address** “Catch all” is a term that basically says “if someone sends an email to “\*@mydomain.com”  - forward it to some email address. That way you can create “virtual email address that you can filter on.  For example, you go to a site “mySpamSite.com” and need to register. You can give them the email address \[email removed\] even if that email does not really exist. If they decide to send you spam in the future, it will be sent to that email address and you’ll know who sent or “shared” your email address. It’s easy to do with ZoneEdit : just add email forwarding to “\*@mydomain.com” . with GoDaddy.com you can add a new email forward that is marked as “catch all” (I’m not sure if that’s still possible with them, but I think it is. Unfortunately, WebHost4life does not allow catch-all addresses. **I want to build a website** - [Webhost4life](http://www.webhost4life.com/default.asp?refid=royosherove) offers a free dotnetnuke installation as part of your account. DotNetNuke (DNN for short) is an open source portal built with VB.NET which is very powerful and has lots of community around the world. You can download and install it by yourself, but having an automated installer is a godsend. This is an advanced tool that can help you build an enterprise style portal with thousands of users, a store and much more. - Another nice tool to build websites with is [FogCreek’s CityDesk](http://www.fogcreek.com/CityDesk/index.html), which has a free version that allows building a website with up to 5 files in it. After that you have to pay to play. This tool is “desktop” based, in that you manage the whole site on your desktop, and then “generate” it and upload it to your hosting FTP. It generates static content, and does not use a database, and has far fewer options to it (no user management) There are some other options out there, but these are the two I think are the most user-friendly. --- title: "How to setup your own online business - The Geek's guide" url: "https://osherove.com/blog/2006/7/24/how-to-setup-your-own-online-business-the-geeks-guide.md" canonical: "https://osherove.com/blog/2006/7/24/how-to-setup-your-own-online-business-the-geeks-guide.html" published: "2006-07-24T09:44:00" updated: "2006-07-24T09:44:00" tags: [] author: "Roy Osherove" description: "Every once in a while I come across someone who asks me various technical stuff about my business like how I manage my email, where do I host my site etc. So I wrote up a short article that might help future readers…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to setup your own online business - The Geek's guide By Roy Osherove July 24, 2006 **Historical article** · Originally published July 24, 2006; technical details may be outdated. Every once in a while I come across someone who asks me various technical stuff about my business like how I manage my email, where do I host my site etc. So I wrote up a short article that might help future readers with the same questions. [First Technical Steps to create your own business](https://osherove.com/rosherove/pages/FirstStepsToYourOwnBusiness.aspx) Here are some points I answer there:  - Don't leave before you have  a business card - How do I get a domain? - Should I get a ".com" domain or one for my own country? - How do I manage my domain(s)? - Web hosting - I want to use Exchange for my emails - I don't want to use Exchange, and I don't want to pay for a "real" email. - I want to have a "catch all" email address - I want to build a website --- title: "Hibernate may violate \"Object model mapping and runtime engine\" patent" url: "https://osherove.com/blog/2006/7/23/hibernate-may-violate-quotobject-model-mapping-and-runtime-e.md" canonical: "https://osherove.com/blog/2006/7/23/hibernate-may-violate-quotobject-model-mapping-and-runtime-e.html" published: "2006-07-23T14:34:00" updated: "2006-07-23T14:34:00" tags: ["Architecture", "General Software Devel..."] author: "Roy Osherove" description: "\" Red Hat will face a patent infringement lawsuit this week over whether Hibernate, which it inherited from JBoss violates ORM patents held by FireStar Software. FireStar alleges that Hibernate violates U.S. patent…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hibernate may violate "Object model mapping and runtime engine" patent By Roy Osherove July 23, 2006 In [Architecture](https://osherove.com/blog/category/architecture), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published July 23, 2006; technical details may be outdated. "[Red Hat will face a patent infringement lawsuit](http://www.networkworld.com/news/2006/062906-red-hat-inherits-patent-claim.html) this week over whether Hibernate, which it inherited from JBoss violates ORM patents held by FireStar Software. FireStar alleges that Hibernate violates U.S. patent 6,101,502 -- " Object model mapping and runtime engine for employing relational database with object oriented software." \[via [ORMappers.com](http://about.ormappers.com/)\] The world has gone mad. ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Dec 1, 2006 ### [Software architects - glorified fashion designers?](https://osherove.com/blog/2006/12/1/software-architects-glorified-fashion-designers.html) - Aug 6, 2006 ### [2 Day Architecture & SOA Course - Sound Interesting?](https://osherove.com/blog/2006/8/6/2-day-architecture-amp-soa-course-sound-interesting.html) - Jun 11, 2006 ### [Architecting in an Agile World - My ArcCast with Ron Jabobs in online](https://osherove.com/blog/2006/6/11/architecting-in-an-agile-world-my-arccast-with-ron-jabobs-in.html) - May 22, 2006 ### [Steve Kelly on Software Factories: "It's worth the effort"](https://osherove.com/blog/2006/5/22/steve-kelly-on-software-factories-quotits-worth-the-effortqu.html) --- title: "ISerializable mentioned on HanselMinutes" url: "https://osherove.com/blog/2006/7/23/iserializable-mentioned-on-hanselminutes.md" canonical: "https://osherove.com/blog/2006/7/23/iserializable-mentioned-on-hanselminutes.html" published: "2006-07-23T00:37:00" updated: "2006-07-23T00:37:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Congratulations to HanselMinutes on 25 shows filled to the brim with excellent content, highly geeky, technical and, yes, not wasting my time! I only wish the show was 1 hour instead of 30 minutes, so that it would fit…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ISerializable mentioned on HanselMinutes By Roy Osherove July 23, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 23, 2006; technical details may be outdated. [Congratulations to HanselMinutes on 25 shows](http://www.hanselminutes.com/default.aspx?showID=34) filled to the brim with excellent content, highly geeky, technical and, yes, not wasting my time! I only wish the show was 1 hour instead of 30 minutes, so that it would fit better with my nightly walks..  With [the latest show](http://www.hanselminutes.com/default.aspx?showID=34) I was in for a little surprise. Scott lists his essential blogs to subscribe to, and my blog is one of those 20+ blogs that Scott Mentions. That's pretty cool, in my book :) He also mentions my latest [tools portal](http://tools.osherove.com/), The [Regulator](https://osherove.com/) and [Regulazy](http://regulazy.osherove.com/). Small thing though: [Scott](http://www.computerzen.com/) mentions that I'm known mostly for my Regular Expression work, which made me wonder just how many people are paying attention more to my posts about Agile Development and Unit Testing, and how many are only here for The Regulator and Regulazy..? I dabble in many areas. I like to call myself a generalist, in that I focus on many areas, but someone mentioned to me that I still take the time to make myself some sort of an "expert" in some of them, which is a good place to be. Willingly or not, I find myself in that place where the two areas I'm currently noted for are Regex and Agile Development. I think it's time also start focusing more on .NET Architecture. Surprisingly, half of [my day job](http://teamagile.com/) is all about consulting to companies about their architecture and best practices. But now I'm just rambling. Thanks for the mention Scott! Your blog is on my top 2 list :)  ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 30, 2006 ### [New Language in Google: 'Elmer Fudd'](https://osherove.com/blog/2006/8/30/new-language-in-google-elmer-fudd.html) - Aug 27, 2006 ### [Nice idea for a shirt](https://osherove.com/blog/2006/8/27/nice-idea-for-a-shirt.html) - Jul 23, 2006 ### [Moving to FeedBurner](https://osherove.com/blog/2006/7/23/moving-to-feedburner.html) - Jul 18, 2006 ### [Could JaJah be the next Skype Killer? Almost](https://osherove.com/blog/2006/7/18/could-jajah-be-the-next-skype-killer-almost.html) --- title: "Moving to FeedBurner" url: "https://osherove.com/blog/2006/7/23/moving-to-feedburner.md" canonical: "https://osherove.com/blog/2006/7/23/moving-to-feedburner.html" published: "2006-07-23T00:01:00" updated: "2006-07-23T00:01:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is an important note: My new RSS feed address from now on is http://feeds.feedburner.com/Iserializable . The original RSS feed will NOT BE UPDATED . So you should change your RSS subscription now. Will redirect to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Moving to FeedBurner By Roy Osherove July 23, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 23, 2006; technical details may be outdated. This is an important note: My new RSS feed address from now on is [http://feeds.feedburner.com/Iserializable](http://feeds.feedburner.com/Iserializable). The original RSS feed ~will **NOT BE UPDATED**. So you should change your RSS subscription now.~ Will redirect to the new feed automatically (Thanks for the important comment on this, Scott!. The latest version of community server allows us bloggers to use an external Feed Source to publish our RSS news feed (like FeedBurner). From my next post onwards, I'll be using the Feedburner feed exclusively, which will also be reflected on the main page of the blog. If you're a blogger on weblogs.asp.net, you can get to this setting in your blog dashboard, under "Global Settings" - click "Syndication Settings". ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 27, 2006 ### [Nice idea for a shirt](https://osherove.com/blog/2006/8/27/nice-idea-for-a-shirt.html) - Jul 23, 2006 ### [ISerializable mentioned on HanselMinutes](https://osherove.com/blog/2006/7/23/iserializable-mentioned-on-hanselminutes.html) - Jul 18, 2006 ### [Could JaJah be the next Skype Killer? Almost](https://osherove.com/blog/2006/7/18/could-jajah-be-the-next-skype-killer-almost.html) - Jul 10, 2006 ### [Attack of the high and mighty forum reply (or: can't you just answer a simple question?)](https://osherove.com/blog/2006/7/10/attack-of-the-high-and-mighty-forum-reply-or-cant-you-just-a.html) --- title: "How do you avoid bugs in your unit tests?" url: "https://osherove.com/blog/2006/7/22/how-do-you-avoid-bugs-in-your-unit-tests.md" canonical: "https://osherove.com/blog/2006/7/22/how-do-you-avoid-bugs-in-your-unit-tests.html" published: "2006-07-22T23:16:00" updated: "2006-07-22T23:16:00" tags: ["Agile"] author: "Roy Osherove" description: "Oren tries to answer from difficult questions about TDD. One of them is related to how you'd make sure that your tests don't have bugs in them - which is a very important aspect of trust-worthy tests : One of the best…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How do you avoid bugs in your unit tests? By Roy Osherove July 22, 2006 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published July 22, 2006; technical details may be outdated. [Oren tries to answer from difficult questions](http://www.lnbogen.com/CommentView,guid,da2b3730-972a-4318-bb99-7fa4ce964aa6.aspx) about TDD. One of them is related to how you'd make sure that your tests don't have bugs in them - which is a very important aspect of [trust-worthy tests](http://msdn.microsoft.com/msdnmag/issues/05/06/UnitTesting/): One of the best ways to make sure that you test is not buggy (a smoke test, if you will), is to to make sure it fails when it should. That's why in TDD, you always start with a failing test. You actually \*run\* the test and watch it fail before you make it pass. This has two reasons: - To let you know that you have a bug.missing feature in your code, and to direct you to fix that target. now that the test passes, you can fix it , and then see the test fail. - If you can't make the test fail when it should, it probably has a bug so if the test fails to begin with, and then passes when you fix the \*production\* code, you're good. but if your test passes from the get-go, before you even fixed the production code, you know your test isn't good enough.. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Aug 22, 2006 ### [It's Not Just Standing Up: Patterns for Daily Stand-up Meetings](https://osherove.com/blog/2006/8/22/its-not-just-standing-up-patterns-for-daily-stand-up-meeting.html) - Aug 16, 2006 ### [SharpRobo - Winform UI Unit Testing made easier?](https://osherove.com/blog/2006/8/16/sharprobo-winform-ui-unit-testing-made-easier.html) - Jul 19, 2006 ### [Oren is grokking Test Driven Development](https://osherove.com/blog/2006/7/19/oren-is-grokking-test-driven-development.html) - Jul 10, 2006 ### [TestDriven.NET - Pro and Enterprise editions announced](https://osherove.com/blog/2006/7/10/testdrivennet-pro-and-enterprise-editions-announced.html) --- title: "Microsoft's SharePoint treats FireFox as 2nd class citizen" url: "https://osherove.com/blog/2006/7/21/microsofts-sharepoint-treats-firefox-as-2nd-class-citizen.md" canonical: "https://osherove.com/blog/2006/7/21/microsofts-sharepoint-treats-firefox-as-2nd-class-citizen.html" published: "2006-07-21T11:09:00" updated: "2006-07-21T11:09:00" tags: ["Community News"] author: "Roy Osherove" description: "Looks like the next version of SharePoint won't support FireFox fully. as Jeff mentiones : \"Every time Microsoft is doing something cool (like Xbox 360 or Visual Studio Express), they do something that's crap like this\"…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft's SharePoint treats FireFox as 2nd class citizen By Roy Osherove July 21, 2006 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published July 21, 2006; technical details may be outdated. Looks like the [next version of SharePoint won't support FireFox fully.](http://blogs.msdn.com/sharepoint/archive/2006/07/19/671735.aspx) as [Jeff mentiones](https://weblogs.asp.net/jeff/archive/2006/07/20/No-excuse-for-treating-Firefox-as-second-class-in-Sharepoint-2007.aspx): "Every time Microsoft is doing something cool (like Xbox 360 or Visual Studio Express), they do something that's crap like this" Personally, I've used AvantBrowser for a long time, but am now working exclusively in FireFox (for the past few days, anyway). I'm not giving IE 7 a try until it becomes more stable, and I'm really loving the vast number of extensions for FireFox out there (IETab puts the final nail in the IE coffin for me now - even thought I don't even need it for most hebrew sites anymore - they seem to work perfect in FireFox!). Here are the FireFox extensions I have installed: - FasterFox  - to make it run faster - TabMix Plus - much improved tab options - FireBug (for debugging Javascript) - MinimizeToTray - guess what it does ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Aug 16, 2006 ### [Speaker Idol @ TechEd: Developers](https://osherove.com/blog/2006/8/16/speaker-idol-teched-developers.html) - Aug 10, 2006 ### [Regulazy 1.01 is available for download](https://osherove.com/blog/2006/8/10/regulazy-101-is-available-for-download.html) - Jul 19, 2006 ### [Microsoft Acquires Winternals (a.k.a SysInternals) Software](https://osherove.com/blog/2006/7/19/microsoft-acquires-winternals-aka-sysinternals-software.html) - Jul 17, 2006 ### [Does your desktop look cool/geeky these days? You could win some prizes.](https://osherove.com/blog/2006/7/17/does-your-desktop-look-coolgeeky-these-days-you-could-win-so.html) --- title: "Oren is grokking Test Driven Development" url: "https://osherove.com/blog/2006/7/19/oren-is-grokking-test-driven-development.md" canonical: "https://osherove.com/blog/2006/7/19/oren-is-grokking-test-driven-development.html" published: "2006-07-19T11:52:00" updated: "2006-07-19T11:52:00" tags: ["Agile"] author: "Roy Osherove" description: "Oren Ellenbogen is having various learning experiences from our last session together (I'm coaching him on Test Driven Development as part of my work ). He's writes in a clear way about his thoughts and perceptions…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Oren is grokking Test Driven Development By Roy Osherove July 19, 2006 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published July 19, 2006; technical details may be outdated. [Oren Ellenbogen](http://www.lnbogen.com/) is having various learning experiences from our last session together (I'm coaching him on Test Driven Development as part of [my work](http://www.teamagile.com/)). He's writes in a clear way about his [thoughts and perceptions](http://www.lnbogen.com/TDDInTheEyesOfASimplemindedPreface.aspx) about Test Driven Development, and does well in trying to take in small pieces at a time. There are tough questions to be asked (in the comments to his post you can find some), but these are answered in time, and I can promise they all have good answers. In the mean time, you can [follow him as he shows writing a simple logical method](http://www.lnbogen.com/TDDInTheEyesOfASimplemindedPart1TheNameResolver.aspx), test-driven, while following [Unit Test Best Practices](https://osherove.com/rosherove/archive/tags/Testing+Guidelines/default.aspx) such as refactoring your unit tests, not just your code, and unit test naming guidelines. PS [Grokking](http://en.wikipedia.org/wiki/Grok): see definition ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Aug 16, 2006 ### [SharpRobo - Winform UI Unit Testing made easier?](https://osherove.com/blog/2006/8/16/sharprobo-winform-ui-unit-testing-made-easier.html) - Jul 22, 2006 ### [How do you avoid bugs in your unit tests?](https://osherove.com/blog/2006/7/22/how-do-you-avoid-bugs-in-your-unit-tests.html) - Jul 10, 2006 ### [TestDriven.NET - Pro and Enterprise editions announced](https://osherove.com/blog/2006/7/10/testdrivennet-pro-and-enterprise-editions-announced.html) - Jul 9, 2006 ### [TypeMock 3.5 is out - and it's powerful!](https://osherove.com/blog/2006/7/9/typemock-35-is-out-and-its-powerful.html) --- title: "Regulazy Facts" url: "https://osherove.com/blog/2006/7/19/regulazy-facts.md" canonical: "https://osherove.com/blog/2006/7/19/regulazy-facts.html" published: "2006-07-19T08:42:00" updated: "2006-07-19T08:42:00" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "Over 700 downloads in the past 7 days since the announcement . Over 250 Unit Tests that run in under 3 seconds together(not for the UI, but for all the logic) Next iteration release: August 10th. 1 major bug - reported…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Regulazy Facts By Roy Osherove July 19, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published July 19, 2006; technical details may be outdated. ![](https://osherove.com/img/wb/5bcdc6e6_tools.osherove.com_Portals_6_RegulazyDemo.gif) - [Over 700 downloads](https://osherove.com/) in the past 7 days since the [announcement](https://weblogs.asp.net/rosherove/archive/2006/07/09/IntroducingRegulazy10.aspx). - Over 250 Unit Tests that run in under 3 seconds together(not for the UI, but for all the logic) - Next iteration release: August 10th. - 1 major bug - reported using FogBugz [on myFogbugz server. ](http://bugz.osherove.com/) - 1 major crash - Reported by [{SmartAssembly}'s](http://www.smartassembly.com/) Exception handler and uploaded with stack traces and all the goo onto where I can use it and find out the problem. - 4 feature requests - reported by email (you can use [my fogbugz](http://bugz.osherove.com/) to do that as well) - The fun of writing the whole thing in a test driven manner - priceless. Especially now when I need to fix some really internal stuff. _PS_ _I got several questions on how I created this animated gif. I used [Camtasia Recorder and Studio](http://www.techsmith.com/camtasia.asp) to record and export as gif (but it also supports flash, avi and more..). Very cool software._  ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Aug 14, 2006 ### [Two cool utils: InstallPad and Live Writer](https://osherove.com/blog/2006/8/14/two-cool-utils-installpad-and-live-writer.html) - Jul 26, 2006 ### [Sanjay's cool tools](https://osherove.com/blog/2006/7/26/sanjays-cool-tools.html) - Jun 18, 2006 ### [Control Google Maps by Tilting your ThinkPad](https://osherove.com/blog/2006/6/18/control-google-maps-by-tilting-your-thinkpad.html) - Jun 18, 2006 ### [CodeRush 2.0 First Impressions - A Nice Surprise](https://osherove.com/blog/2006/6/18/coderush-20-first-impressions-a-nice-surprise.html) --- title: "Microsoft Acquires Winternals (a.k.a SysInternals) Software" url: "https://osherove.com/blog/2006/7/19/microsoft-acquires-winternals-aka-sysinternals-software.md" canonical: "https://osherove.com/blog/2006/7/19/microsoft-acquires-winternals-aka-sysinternals-software.html" published: "2006-07-19T07:56:00" updated: "2006-07-19T07:56:00" tags: ["Community News"] author: "Roy Osherove" description: "This is *huge* news. Microsoft Acquires Winternals Software Company appoints operating systems kernel expert Mark Russinovich as technical fellow. If you don't know how valuable SysInternals tools are - it's time to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft Acquires Winternals (a.k.a SysInternals) Software By Roy Osherove July 19, 2006 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published July 19, 2006; technical details may be outdated. This is \*huge\* news. [Microsoft Acquires Winternals Software](http://www.microsoft.com/presspass/press/2006/jul06/07-18WinternalsPR.mspx) Company appoints operating systems kernel expert [Mark Russinovich](http://www.sysinternals.com/blog/) as technical fellow.  If you don't know how valuable SysInternals tools are  - [it's time to find out](http://www.sysinternals.com/).  The makers of Process Explorer, FileMon, RegMon and million other tools (all free!) have been part of many developers' lives for several years now. It's great that microsoft not only understand the importance of their tools (which helped [bring down evil schemes](http://www.washingtonpost.com/wp-dyn/content/article/2005/11/02/AR2005110202362.html) by evil empires not so long ago), but are actually doing something about it - such as trying to see how to integrate them into the "out of the box" experience for windows users - or so I hope they would.  "I’ve had my eye on Mark for some time,” said Jim Allchin, co-president of the Platforms & Services Division at Microsoft. “The work he and Bryce have completed in system recovery and data protection illustrates the depth of thinking and skill they will bring to future versions of Windows. The addition of their deep kernel-level expertise to our existing strong talent will help provide us with the edge we need to continue to raise the quality and functionality bar for Windows on both the client and the server.” PS It may be a good time to get all the cool tools from there before they disappear/become hard to get to... [Here are some ways to do that](http://www.snapfiles.com/Freeware/downloader/fwoffline.html). ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Aug 10, 2006 ### [Regulazy 1.01 is available for download](https://osherove.com/blog/2006/8/10/regulazy-101-is-available-for-download.html) - Jul 21, 2006 ### [Microsoft's SharePoint treats FireFox as 2nd class citizen](https://osherove.com/blog/2006/7/21/microsofts-sharepoint-treats-firefox-as-2nd-class-citizen.html) - Jul 17, 2006 ### [Does your desktop look cool/geeky these days? You could win some prizes.](https://osherove.com/blog/2006/7/17/does-your-desktop-look-coolgeeky-these-days-you-could-win-so.html) - Jul 17, 2006 ### [See you at Tech-Ed Europe!](https://osherove.com/blog/2006/7/17/see-you-at-tech-ed-europe.html) --- title: "Could JaJah be the next Skype Killer? Almost" url: "https://osherove.com/blog/2006/7/18/could-jajah-be-the-next-skype-killer-almost.md" canonical: "https://osherove.com/blog/2006/7/18/could-jajah-be-the-next-skype-killer-almost.html" published: "2006-07-18T11:09:00" updated: "2006-07-18T11:09:00" tags: ["Off Topic"] author: "Roy Osherove" description: "If only you were able to initiate calls *without* a real phone, I think it would. To start, www.JaJah.com - an Israeli startup company has had this product for about a year now. What it does is allow you to call free…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Could JaJah be the next Skype Killer? Almost By Roy Osherove July 18, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 18, 2006; technical details may be outdated. If only you were able to initiate calls \*without\* a real phone, I think it would. To start, [www.JaJah.com](http://www.jajah.com/) - an Israeli startup company has had this product for about a year now. What it does is allow you to call free (like skype) between users. the catch is this: you don't install any software. YOu go to the site, click who you'd like to call, and where you're calling from (two real phone numbers), and a minute later both parties get a call to their number and can talk freely. If one of the sides isn't regisatered, you pay for th call with very low rates (2.5 cents per minute for europe and a littel higher for US). if you can read herbrew - [here's an article about](http://www.ynet.co.il/articles/0,7340,L-3277779,00.html) it. If you can -  just give it a try. It seems to rock. **Update**: Israeli users don't have free calls (Israel does not allow that option for now). But US subscribers do. _I guess we're screwed again!_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 23, 2006 ### [ISerializable mentioned on HanselMinutes](https://osherove.com/blog/2006/7/23/iserializable-mentioned-on-hanselminutes.html) - Jul 23, 2006 ### [Moving to FeedBurner](https://osherove.com/blog/2006/7/23/moving-to-feedburner.html) - Jul 10, 2006 ### [Attack of the high and mighty forum reply (or: can't you just answer a simple question?)](https://osherove.com/blog/2006/7/10/attack-of-the-high-and-mighty-forum-reply-or-cant-you-just-a.html) - Jun 18, 2006 ### [\[Off Topic\] Welcome to Pallywood](https://osherove.com/blog/2006/6/18/off-topic-welcome-to-pallywood.html) --- title: "Understanding the different generic collections in .NET (List, BindingList, Collection)" url: "https://osherove.com/blog/2006/7/18/understanding-the-different-generic-collections-in-net-listl.md" canonical: "https://osherove.com/blog/2006/7/18/understanding-the-different-generic-collections-in-net-listl.html" published: "2006-07-18T01:21:00" updated: "2006-07-18T01:21:00" tags: [".NET", ".Net 2.0"] author: "Roy Osherove" description: "An innocent question came up in one fo the mailing lists I subscribe to. It was about when would you want to derive from the various generic collections in the framework. That also prompted another discussion about the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Understanding the different generic collections in .NET (List\, BindingList\, Collection\) By Roy Osherove July 18, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published July 18, 2006; technical details may be outdated. An innocent question came up in one fo the mailing lists I subscribe to. It was about when would you want to derive from the various generic collections in the framework. That also prompted another discussion about the various kinds of generic collections in .NET you shoudl be aware of, which I think most people can't really tell the difference between when and where to use which of them. So here are parts of that discussion, quoted. First, some reasons you'd want to derive from a generic collection .NET: [Bill McCarthy](http://msmvps.com/blogs/bill/) writes: "Custom sorting, Validation, Factory methods, AddRange capabilities, Custom serialisation, Event hooking/raising Delayed fetching (caching)" and adds some more about the various collections: "Well what I tell folks is they need to know 3 "lists". - **List(Of)  : List** - **Collection(Of) :  Collection** - and **BindingList(Of).  : BindingList** I tell them to use: - - **List(Of)** anywhere they use to use ArrayList, or anywhere they are ReDim'ing an array. But not to expose this outside of a class generally as it exposes a lot of methods that can change the internal data (e.g Sort) - **BindingList(Of)** If they are using the collection for binding in Windows.Forms (or ASP.NET) then they should use BindingList. But they will often need to inherit from it, and override some methods (e.g sorting) - **Collection(Of).** When not using binding, and you want to control what methods are exposed, and or intercept when objects are added or removed, you should derive from Collection(Of) Of course there's others they need to know such as Dictionary and ReadOnlyCollection. " And [Rocky Lhotka](http://lhotka.net/) adds to that discussion: "In CSLA .NET I created my own generic collection classes because I needed to extend the behaviors of IBindingList(Of T) in various ways. The additional requirements include: \* Persistence (some objects know about databases) \* Sorting \* Filtering Those last two are interesting (I think), because I was able to create SortedBindingList and now FilteredBindingList, which are "updatable views" against any List(Of T) that add sorting or filtering respectively. **Dim list As New List(Of String) **_' add items to list _**Dim sorted As New Csla.SortedBindingList(Of String)(list) sorted.ApplySort() **_' enumerate through the sorted list _**For Each item As String in sorted   Debug.WriteLine(item) Next** The result is sorted output of the list. Because it is generic, the sorted list works against any IList(Of T), including lists of simple or complex types (like CSLA .NET business objects). Even better, any changes you make to 'sorted' are automatically reflected in 'list' and visa versa. That's because SortedBindingList isn't a copy, it is a view into the actual underlying list object. You could envision similar constructs based around tree structures - I'd love to build a Red-Black Binary Tree along the lines of SortedBindingList to provide a balanced binary tree "view" of data in a list. Also, I've been unable to determine for sure whether Queue(Of T) uses efficient multi-threaded reader-writer locking, but I don't think it does. For some applications, having separate thread locking on the head and tail of the queue becomes important, but I think Queue(Of T) just uses a simplistic write lock scheme on the whole queue... That's harder to get right, but would be another reason to create your own generic collections." ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 16, 2006 ### [SharpRobo - Winform UI Unit Testing made easier?](https://osherove.com/blog/2006/8/16/sharprobo-winform-ui-unit-testing-made-easier.html) - Aug 6, 2006 ### [2 Day Architecture & SOA Course - Sound Interesting?](https://osherove.com/blog/2006/8/6/2-day-architecture-amp-soa-course-sound-interesting.html) - Jun 27, 2006 ### [ORMappers.Com is open for business (sort of)](https://osherove.com/blog/2006/6/27/ormapperscom-is-open-for-business-sort-of.html) - Jun 19, 2006 ### [A Simple Version Control Strategy Using Team System](https://osherove.com/blog/2006/6/19/a-simple-version-control-strategy-using-team-system.html) --- title: "Does your desktop look cool/geeky these days? You could win some prizes." url: "https://osherove.com/blog/2006/7/17/does-your-desktop-look-coolgeeky-these-days-you-could-win-so.md" canonical: "https://osherove.com/blog/2006/7/17/does-your-desktop-look-coolgeeky-these-days-you-could-win-so.html" published: "2006-07-17T23:32:00" updated: "2006-07-17T23:32:00" tags: ["Community News"] author: "Roy Osherove" description: "There are some seriously cool desktops being posted over at Http://desktops.osherove.com How about you get over there and submit your cool, amazingly geeky desktop?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Does your desktop look cool/geeky these days? You could win some prizes. By Roy Osherove July 17, 2006 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published July 17, 2006; technical details may be outdated. There are some seriously cool desktops being posted over at [Http://desktops.osherove.com](http://desktops.osherove.com/) How about you get over there and submit your cool, amazingly geeky desktop? ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Jul 21, 2006 ### [Microsoft's SharePoint treats FireFox as 2nd class citizen](https://osherove.com/blog/2006/7/21/microsofts-sharepoint-treats-firefox-as-2nd-class-citizen.html) - Jul 19, 2006 ### [Microsoft Acquires Winternals (a.k.a SysInternals) Software](https://osherove.com/blog/2006/7/19/microsoft-acquires-winternals-aka-sysinternals-software.html) - Jul 17, 2006 ### [See you at Tech-Ed Europe!](https://osherove.com/blog/2006/7/17/see-you-at-tech-ed-europe.html) - Jul 15, 2006 ### [Some updates about the desktop screenshot contest](https://osherove.com/blog/2006/7/15/some-updates-about-the-desktop-screenshot-contest.html) --- title: "Solution: Using Source Server with Team System Source Control" url: "https://osherove.com/blog/2006/7/17/solution-using-source-server-with-team-system-source-control-1.md" canonical: "https://osherove.com/blog/2006/7/17/solution-using-source-server-with-team-system-source-control-1.html" published: "2006-07-17T19:37:00" updated: "2006-07-17T19:37:00" tags: [] author: "Roy Osherove" description: "Microsoft source server Source Server is coolness. If you don’t want to read further - This script adds Team System Source Control Support to Source Server. Microsoft source server is part of the Debugging Tools For…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Solution: Using Source Server with Team System Source Control By Roy Osherove July 17, 2006 **Historical article** · Originally published July 17, 2006; technical details may be outdated. [Microsoft source server](http://msdn.microsoft.com/msdnmag/issues/06/08/UseTheSource/default.aspx) Source Server is coolness.  If you don’t want to read further - [This script adds](http://tools.osherove.com/) **Team System Source Control Support** to Source Server. [Microsoft source server](http://msdn.microsoft.com/msdnmag/issues/06/08/UseTheSource/default.aspx) is part of the [Debugging Tools For Windows](http://www.microsoft.com/whdc/devtools/debugging/default.mspx) package. It enables a client to retrieve the exact version of the source files that were used to build an application (while you’re debugging!). Because the source code for a module can change between versions and over the course of years, it is important to look at the source code as it existed when the version of the module in question was built. The source server retrieves the appropriate files from source control. To use the source server, the application must have been source indexed (for in depth info on Source Server read “srcsrv.doc” installed under the Source Server Install folder/SDK) A project I’m consulting for has needed the ability to use Source Server with Team System SOurce Control (which is not supported by out of the box). **Support for various Source Control Systems** SourceServer comes with pre-made modules for **Visual SourceSafe, Subversion and Perforce**, but not for Team Foundation Source Control. [This document and script add](http://sourceserver.osherove.com/) **Team System Source Control Support** to Source Server. It’s a funny thing - itegrating into source server. It feels very much like connecting things with glue and strings: you basically build a perl module that has an “interface” for the various parts of calling the source control server. Why it wasn’t built with COM I’ll never know I guess. (maybe it’s possible to write a COM wrappr for perl scripts?) **Related files:** - **TF.pm** : Perl script that integrates into Source Server and “talks” to TF.Exe (TF.Exe is part of team Foundation). Script was written by Michael Sheinker, a bright fellow from a project that I consulted to, who agreed to share it. - **TFIndex.cmd** : Simple command line to initiate PDB Indexing for Source Server on Team System Files --- title: "See you at Tech-Ed Europe!" url: "https://osherove.com/blog/2006/7/17/see-you-at-tech-ed-europe.md" canonical: "https://osherove.com/blog/2006/7/17/see-you-at-tech-ed-europe.html" published: "2006-07-17T19:26:00" updated: "2006-07-17T19:26:00" tags: ["Community News"] author: "Roy Osherove" description: "The guys at Tech-Ed Europe are very impressive when it comes to managing the show. As early as now they have a speaker site up with a complete speaker application online that helps manage the massive amounts of data…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # See you at Tech-Ed Europe! By Roy Osherove July 17, 2006 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published July 17, 2006; technical details may be outdated. The guys at Tech-Ed Europe are very impressive when it comes to managing the show. As early as now they have a speaker site up with a complete speaker application online that helps manage the massive amounts of data required to organize and run the show while herding all us cats together. The news for me is that I'll be joining the Tech-Ed Europe conference this year we well. Last year was a blast and marked my first ever international Microsoft Conference. I had one Breakout session about Regular Expressions and 2 "Chalk-Talks" about Unit Testing Best Practices. This year it's going to be wild - For the first time ever for me [I'll be doing a full Pre-Conference Day (4 sessions) about Agile Development with Team System](http://www.mseventseurope.com/TechEd/06/Pre/Static/Developers/PCAgile.aspx).  It's exciting because I've been doing a lot with Team System lately and not only on a technical level, but also trying to come to grips with how one can manage a team in an agile fashion using Team System. How does MSF-Agile Fit into this? how does [Scrum For Team System](http://www.scrumforteamsystem.com/) help? How does continuous Integration work with Team System? and Test Driven Development? Not only am I doing a Pre-Conference, I'll be doing at least a couple of breakout sessions (the topics are not yet set - I submitted more than a dozen topics..) with a maximum of four. I really am looking forward to this for several reasons: - A chance to meet people who read my blog and use my tools - Barcelona! - Most grueling event ever for me - A chance to see lots of people that I just correspond with I'd love to see you there if you're attending/speaking! ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Jul 19, 2006 ### [Microsoft Acquires Winternals (a.k.a SysInternals) Software](https://osherove.com/blog/2006/7/19/microsoft-acquires-winternals-aka-sysinternals-software.html) - Jul 17, 2006 ### [Does your desktop look cool/geeky these days? You could win some prizes.](https://osherove.com/blog/2006/7/17/does-your-desktop-look-coolgeeky-these-days-you-could-win-so.html) - Jul 15, 2006 ### [Some updates about the desktop screenshot contest](https://osherove.com/blog/2006/7/15/some-updates-about-the-desktop-screenshot-contest.html) - Jul 14, 2006 ### [Geek Desktop Contest Announced](https://osherove.com/blog/2006/7/14/geek-desktop-contest-announced.html) --- title: "Solution: Using Source Server with Team System Source Control" url: "https://osherove.com/blog/2006/7/17/solution-using-source-server-with-team-system-source-control.md" canonical: "https://osherove.com/blog/2006/7/17/solution-using-source-server-with-team-system-source-control.html" published: "2006-07-17T06:10:00" updated: "2006-07-17T06:10:00" tags: ["General Software Devel...", "Team System"] author: "Roy Osherove" description: "If you just want to go to the site: Go here: http://SourceServer.Osherove.Com . A team I work with needed Source Server usage support for Team System. Unfortunately, this is just about the only place online that really…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Solution: Using Source Server with Team System Source Control By Roy Osherove July 17, 2006 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published July 17, 2006; technical details may be outdated. If you just want to go to the site: Go here: [http://SourceServer.Osherove.Com](http://sourceserver.osherove.com/) . A team I work with needed Source Server usage support for Team System. Unfortunately, [this is just about the only place online](http://blogs.msdn.com/matt_pietrek/archive/2005/08/10/449946.aspx) that really talks about source server besides the MSDN docs - until now. [Microsoft source server](http://msdn.microsoft.com/msdnmag/issues/06/08/UseTheSource/default.aspx) is part of the [Debugging Tools For Windows package](http://www.microsoft.com/whdc/devtools/debugging/default.mspx). It enables a client to retrieve the exact version of the source files that were used to build an application(while debugging!). Because the source code for a module can change between versions and over the course of years, it is important to look at the source code as it existed when the version of the module in question was built. The source server retrieves the appropriate files from source control. To use the source server, the application must have been source indexed (for in depth info on Source Server read "srcsrv.doc" installed under the Source Server Install folder/SDK)   **Support for various Source Control Systems** SourceServer comes with pre-made modules for Visual SourceSafe, Subversion and Perforce, but not for Team Foundation Source Control. **This script adds Team System Source Control Support to Source Server**.     **Related files:**     \* TF.pm : Perl script that integrates into Source Server and "talks" to TF.Exe (TF.Exe is part of team Foundation). Script was written by Michael Sheinker, a bright fellow from a project that I consulted to, who agreed to share it.     \* TFIndex.cmd : Simple command line to initiate PDB Indexing for Source Server on Team System Files ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Jul 23, 2006 ### [Hibernate may violate "Object model mapping and runtime engine" patent](https://osherove.com/blog/2006/7/23/hibernate-may-violate-quotobject-model-mapping-and-runtime-e.html) - Jul 19, 2006 ### [Regulazy Facts](https://osherove.com/blog/2006/7/19/regulazy-facts.html) - Jul 12, 2006 ### [Make IE and FireFox go faster than ever](https://osherove.com/blog/2006/7/12/make-ie-and-firefox-go-faster-than-ever.html) - Jul 9, 2006 ### [Introducing Regulazy: Point & Click Regular Expression](https://osherove.com/blog/2006/7/9/introducing-regulazy-point-click-regular-expression.html) --- title: "Some updates about the desktop screenshot contest" url: "https://osherove.com/blog/2006/7/15/some-updates-about-the-desktop-screenshot-contest.md" canonical: "https://osherove.com/blog/2006/7/15/some-updates-about-the-desktop-screenshot-contest.html" published: "2006-07-15T18:56:00" updated: "2006-07-15T18:56:00" tags: ["Community News"] author: "Roy Osherove" description: "Some updates about the desktop screenshot contest : You can now simply send an email with your screenshot without having to register on the site We have judges! Mike Gunderloy Scott Hanselman Carl Franklin Yours truly…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some updates about the desktop screenshot contest By Roy Osherove July 15, 2006 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published July 15, 2006; technical details may be outdated. Some updates about [the desktop screenshot contest](http://desktops.osherove.com/): - You can now simply send an email with your screenshot without having to register on the site - We have judges! - [Mike Gunderloy](http://www.larkware.com/) - [Scott Hanselman](http://www.computerzen.com/) - [Carl Franklin](http://www.dotnetrocks.com/) - Yours truly - If you'd like to put one of your products up as prize for the contest - contact me at [my contact form](https://osherove.com/contact) - If you'd like to put one of your products up as prize for the contest - contact me at [my contact form](https://osherove.com/contact) ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Jul 17, 2006 ### [Does your desktop look cool/geeky these days? You could win some prizes.](https://osherove.com/blog/2006/7/17/does-your-desktop-look-coolgeeky-these-days-you-could-win-so.html) - Jul 17, 2006 ### [See you at Tech-Ed Europe!](https://osherove.com/blog/2006/7/17/see-you-at-tech-ed-europe.html) - Jul 14, 2006 ### [Geek Desktop Contest Announced](https://osherove.com/blog/2006/7/14/geek-desktop-contest-announced.html) - Jul 9, 2006 ### [More Interesting Podcasts about technology](https://osherove.com/blog/2006/7/9/more-interesting-podcasts-about-technology.html) --- title: "Geek Desktop Contest Announced" url: "https://osherove.com/blog/2006/7/14/geek-desktop-contest-announced.md" canonical: "https://osherove.com/blog/2006/7/14/geek-desktop-contest-announced.html" published: "2006-07-14T14:33:00" updated: "2006-07-14T14:33:00" tags: ["Community News"] author: "Roy Osherove" description: "It's time for another Geek Desktop Contest (last one was 3 years ago!). Just head on over to http://Desktops.Osherove.com , register, and upload a screenshot of your desktop. Contest closes on august 31st 2006, and the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Geek Desktop Contest Announced By Roy Osherove July 14, 2006 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published July 14, 2006; technical details may be outdated. It's time for another Geek Desktop Contest (last one was 3 years ago!). Just head on over to [http://Desktops.Osherove.com](http://desktops.osherove.com/) , register, and upload a screenshot of your desktop. Contest closes on august 31st 2006, and the first prize is an [MSDN Premium Subscription](http://msdn.microsoft.com/vstudio/products/subscriptions/premium/) for 1 year. I'm still at the point of getting judges and other cool prizes for this, but rest assured this is going to **rock!**.  and of course, you can always just boast with your geek desktop no matter if you win or lose. The site will stay on for as long my hosting service lets me (which should be enough for a lifetime). More details soon, but  meanwhile - you can start submitting your screenshots on the site! - JPG format only - no larger than 200k ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Jul 17, 2006 ### [See you at Tech-Ed Europe!](https://osherove.com/blog/2006/7/17/see-you-at-tech-ed-europe.html) - Jul 15, 2006 ### [Some updates about the desktop screenshot contest](https://osherove.com/blog/2006/7/15/some-updates-about-the-desktop-screenshot-contest.html) - Jul 9, 2006 ### [More Interesting Podcasts about technology](https://osherove.com/blog/2006/7/9/more-interesting-podcasts-about-technology.html) - Jul 9, 2006 ### [Introducing Regulazy: Point & Click Regular Expression](https://osherove.com/blog/2006/7/9/introducing-regulazy-point-click-regular-expression.html) --- title: "Make IE and FireFox go faster than ever" url: "https://osherove.com/blog/2006/7/12/make-ie-and-firefox-go-faster-than-ever.md" canonical: "https://osherove.com/blog/2006/7/12/make-ie-and-firefox-go-faster-than-ever.html" published: "2006-07-12T15:25:00" updated: "2006-07-12T15:25:00" tags: ["General Software Devel..."] author: "Roy Osherove" description: "FireFox is cool - but it's *very* slow. So is IE. There are ways to make both of them run faster, fortunately. If you want to make IE go faster - Go here . If you want to make FireFox go faster, follow these steps: Type…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Make IE and FireFox go faster than ever By Roy Osherove July 12, 2006 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published July 12, 2006; technical details may be outdated. FireFox is cool - but it's \*very\* slow. So is IE. There are ways to make both of them run faster, fortunately. - If you want to make IE go faster - [Go here](http://www.regxplor.com/tweak11.html). If you want to make FireFox go faster, follow these steps: 1. Type "about:config" into the address bar and hit return.  Scroll down and look for the following entries:   network.http.pipelining network.http.proxy.pipelining   network.http.pipelining.maxrequests  Normally the browser will make one request to a web page at a time.  When you enable pipelining it will make several at once, which really speeds up page loading. Alter the entries as follows:  1.  Set "network.http.pipelining" to "true" 2.  Set "network.http.proxy.pipelining" to "true" 3.  Set "network.http.pipelining.maxrequests" to some number like 30.    This means it will make 30 requests at once. . 4.  Lastly right-click anywhere and select **New-> Integer**.  Name it "**nglayout.initialpaint.delay**"  and set its value to "0".   This value is the amount of time the browser waits before it acts on information it receives.  If you're using a broadband connection you'll load pages MUCH faster now! \[found [here with terrible formatting](http://forevergeek.com/open_source/make_firefox_faster.php), so I reqrote it more clearly) ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Jul 19, 2006 ### [Regulazy Facts](https://osherove.com/blog/2006/7/19/regulazy-facts.html) - Jul 17, 2006 ### [Solution: Using Source Server with Team System Source Control](https://osherove.com/blog/2006/7/17/solution-using-source-server-with-team-system-source-control.html) - Jul 9, 2006 ### [Introducing Regulazy: Point & Click Regular Expression](https://osherove.com/blog/2006/7/9/introducing-regulazy-point-click-regular-expression.html) - Jul 7, 2006 ### [Interesting podcast: QAPodcast.com](https://osherove.com/blog/2006/7/7/interesting-podcast-qapodcastcom.html) --- title: "TestDriven.NET - Pro and Enterprise editions announced" url: "https://osherove.com/blog/2006/7/10/testdrivennet-pro-and-enterprise-editions-announced.md" canonical: "https://osherove.com/blog/2006/7/10/testdrivennet-pro-and-enterprise-editions-announced.html" published: "2006-07-10T20:45:00" updated: "2006-07-10T20:45:00" tags: ["Agile"] author: "Roy Osherove" description: "Jamie Cansdale announced that he's coming out with a pro and enterprise commercial versions of TestDriven.NET (yes- it costs money now). Read the full thing here , but to answer the most important question for a lot of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TestDriven.NET - Pro and Enterprise editions announced By Roy Osherove July 10, 2006 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published July 10, 2006; technical details may be outdated. [Jamie Cansdale](https://osherove.com/nunitaddin/) announced that he's coming out with a pro and enterprise commercial versions of [TestDriven.NET](http://testdriven.net/) (yes- it costs money now). [Read the full thing here](https://weblogs.asp.net/nunitaddin/archive/2006/07/10/EnterpriseAndProfessional.aspx), but to answer the most important question for a lot of folks out there he says: "Just because the commercial versions now exist doesn't mean I'm turning my back on hobbyist users. There is still a TestDriven.NET personal version available. This version isn't crippled, it doesn't nag you and you don't need to enter a licence code. I could hardly call it "zero friction" if it did." ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 22, 2006 ### [How do you avoid bugs in your unit tests?](https://osherove.com/blog/2006/7/22/how-do-you-avoid-bugs-in-your-unit-tests.html) - Jul 19, 2006 ### [Oren is grokking Test Driven Development](https://osherove.com/blog/2006/7/19/oren-is-grokking-test-driven-development.html) - Jul 9, 2006 ### [TypeMock 3.5 is out - and it's powerful!](https://osherove.com/blog/2006/7/9/typemock-35-is-out-and-its-powerful.html) - Jun 29, 2006 ### [See you at Agile Israel today!](https://osherove.com/blog/2006/6/29/see-you-at-agile-israel-today.html) --- title: "Screencasts on developing for Windows Mobile 5.0" url: "https://osherove.com/blog/2006/7/10/screencasts-on-developing-for-windows-mobile-50.md" canonical: "https://osherove.com/blog/2006/7/10/screencasts-on-developing-for-windows-mobile-50.html" published: "2006-07-10T10:21:00" updated: "2006-07-10T10:21:00" tags: ["Mobile"] author: "Roy Osherove" description: "Rory seems to have put up actual technical content on his blog and on channel 9 , and it looks spiffy. If you're interested in developing for windows mobile 5.0 , check out these posts: Here Here And Here" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Screencasts on developing for Windows Mobile 5.0 By Roy Osherove July 10, 2006 In [Mobile](https://osherove.com/blog/category/mobile) **Historical article** · Originally published July 10, 2006; technical details may be outdated. [Rory](http://neopoleon.com/blog/) seems to have put up actual technical content on his blog and on [channel 9](http://channel9.msdn.com/), and it looks spiffy. If you're interested in developing for windows mobile 5.0 , check out these posts: - [Here](http://neopoleon.com/blog/posts/21583.aspx) - [Here](http://neopoleon.com/blog/posts/21620.aspx) - [And Here](http://neopoleon.com/blog/posts/21637.aspx) --- title: "Attack of the high and mighty forum reply (or: can't you just answer a simple question?)" url: "https://osherove.com/blog/2006/7/10/attack-of-the-high-and-mighty-forum-reply-or-cant-you-just-a.md" canonical: "https://osherove.com/blog/2006/7/10/attack-of-the-high-and-mighty-forum-reply-or-cant-you-just-a.html" published: "2006-07-10T10:05:00" updated: "2006-07-10T10:05:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Careful – major rant! I was having a question from one of clients about something they are dealing with. I know the app, I know the design and the problem was something I didn’t know how to solve (technical problem with…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Attack of the high and mighty forum reply (or: can't you just answer a simple question?) By Roy Osherove July 10, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 10, 2006; technical details may be outdated.  Careful – major rant! I was having a question from one of clients about something they are dealing with. I know the app, I know the design and the problem was something I didn’t know how to solve (technical problem with caching that seems to have a hotfix somewhere). So I asked a question on a forum. It always bugs me a bit when people, instead of answering the question, try to “look at the big picture” as if everything would be just dandy and you wouldn’t need to ask them that silly question at all if you’d just listen for a second with your little mind and understand that you are the problem, and there is no solution but to change the way you think. Well, excuse me, all you high and mighty people who answer questions you weren’t asked. Sometimes, I (Or other people who ask) just want to check out the symptom. I may already \*know\* about the “bigger” problem that leads to the design issue or whatever the symptom is, but I’m aware of it! No need to spend two paragraphs telling me “Do I need to mention that this is a design poo-poo?” – please! If you need to ask –the answer is an absolute –No! You do NOT need to mention that, because that’s not why I asked. I can see how that arrogant answer may prove useful in various forums for newbies in various areas, but when the question is about an advanced issue, in an advanced forum, from an experience person, who isn’t really looking for design help, you can assume that they have already asked themselves the same thing, and if they still have a question – you need to assume that this is how they’d need to deal with it for now, so how to you go about solving this – is the answer you need to answer, not anything else. Thank you! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 23, 2006 ### [Moving to FeedBurner](https://osherove.com/blog/2006/7/23/moving-to-feedburner.html) - Jul 18, 2006 ### [Could JaJah be the next Skype Killer? Almost](https://osherove.com/blog/2006/7/18/could-jajah-be-the-next-skype-killer-almost.html) - Jun 18, 2006 ### [\[Off Topic\] Welcome to Pallywood](https://osherove.com/blog/2006/6/18/off-topic-welcome-to-pallywood.html) - Jun 13, 2006 ### [Fixing "mapi32.dll is an invalid Extended MAPI Library" and "Mail is not installed on your system" on Windows Server 2003 with Exchange](https://osherove.com/blog/2006/6/13/fixing-quotmapi32dll-is-an-invalid-extended-mapi-libraryquot.html) --- title: "Solution to: \"Cannot add diagram to SQL Server 2005 DB: Database diagram support objects cannot be installed because this database does not have a valid owner.\"" url: "https://osherove.com/blog/2006/7/10/solution-to-quotcannot-add-diagram-to-sql-server-2005-db-dat.md" canonical: "https://osherove.com/blog/2006/7/10/solution-to-quotcannot-add-diagram-to-sql-server-2005-db-dat.html" published: "2006-07-10T00:21:00" updated: "2006-07-10T00:21:00" tags: [".Net 2.0", "SQL Server"] author: "Roy Osherove" description: "I found the answer in this post via Larkware . There are some other alternatives over here . I came accross this problem a couple of times but never had the chance to delve too much into it. Next time I'll know what to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Solution to: "Cannot add diagram to SQL Server 2005 DB: Database diagram support objects cannot be installed because this database does not have a valid owner." By Roy Osherove July 10, 2006 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [SQL Server](https://osherove.com/blog/category/sql-server) **Historical article** · Originally published July 10, 2006; technical details may be outdated. I found the answer in [this post](http://geekswithblogs.net/timh/archive/2006/07/05/84171.aspx) via [Larkware](http://www.larkware.com/dg6/TheDailyGrind921.aspx).  There are some other alternatives [over here](http://www.sql-server-performance.com/forum/topic.asp?TOPIC_ID=10946). I came accross this problem a couple of times but never had the chance to delve too much into it. Next time I'll know what to do - and so will you. "In SQL Server Management Studio do the following: 1. Right Click on your database, choose properties 2. Goto the Options Page 3. In the Dropdown at right labeled "Compatibility Level" choose "SQL Server 2005(90)" And some other comments on that post add: "Actually, once you set the compatibility level to SQL 2005, you should install the diagram components (by click on the diagram node) and then set the compatibility back to your default. This way you won't run the risk of having some of your old scripts generate errors. I paid my price to learn this trick." "Your solution only works in cases where compatibility level is set to something other than the default. There are in fact a variety of cases where this error message is the result. That's why it's so insanely annoying and misleading. The most common case is still that the user creating the database does not have a specific login account but rather is part of a group with login rights. " ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Aug 19, 2006 ### [Nice Threading in .NET 2.0 E-Book and online reference](https://osherove.com/blog/2006/8/19/nice-threading-in-net-20-e-book-and-online-reference.html) - Jul 18, 2006 ### [Understanding the different generic collections in .NET (List, BindingList, Collection)](https://osherove.com/blog/2006/7/18/understanding-the-different-generic-collections-in-net-listl.html) - Jun 18, 2006 ### [This week at the C# User group - Hardcore ASP.NET 2.0 \[Dan Amiga\]](https://osherove.com/blog/2006/6/18/this-week-at-the-c-user-group-hardcore-aspnet-20-dan-amiga.html) - Jun 11, 2006 ### [Got an MSBuild-SikdeKick wish? Post it on Matan's blog!](https://osherove.com/blog/2006/6/11/got-an-msbuild-sikdekick-wish-post-it-on-matans-blog.html) --- title: "More Interesting Podcasts about technology" url: "https://osherove.com/blog/2006/7/9/more-interesting-podcasts-about-technology.md" canonical: "https://osherove.com/blog/2006/7/9/more-interesting-podcasts-about-technology.html" published: "2006-07-09T20:55:00" updated: "2006-07-09T20:55:00" tags: ["Community News"] author: "Roy Osherove" description: "After my post about QAPodcast.com and other podcasts (which actually isn't that great after listening to a couple of shows, sorry), I got some nice referrals to other podcasts in the comments. Here they are: Brian…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More Interesting Podcasts about technology By Roy Osherove July 9, 2006 In [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published July 9, 2006; technical details may be outdated. After my post about [QAPodcast.com and other podcasts](https://weblogs.asp.net/rosherove/archive/2006/07/08/Interesting-podcast_3A00_-QAPodcast.com.aspx) (which actually isn't that great after listening to a couple of shows, sorry), I got some nice referrals to other podcasts in the comments. Here they are: _Brian Schmitt_ offered the following links: - [Polymorphic Podcast](http://polymorphicpodcast.com/) \- seems very nice! - [SoftwareAs.com](http://softwareas.com/) \- very much targeted as web development (Ruby on rails, Ajax) - [http://www.webdevradio.com/](http://www.webdevradio.com/) - Guess what it about? - [ASP.Net Podcast](https://osherove.com/wallym/) - Some people are not too crazy about it, but it's all a matter of taste, I guess. After I'll listen to it I'll know more _Hermann Klinke_ has some links too: - [The Vitamin Podcast](http://thinkvitamin.com/) (seems very web-dev centric) - [Venture Voice](http://venturevoice.com/) - about entrepreneurship - [Web standards with imagination](http://www.dustindiaz.com/) _Tucker_ offers his own: - [Plumbers at work](http://plumbersatwork.com/)  - [Nerd TV](http://www.pbs.org/cringely/nerdtv/) **_Update:_** Hermann has some links for podcasts, though I warn you that some of them are \*way\* off the tech grid.. - LifeHack Podcast about Productivity: [http://lifehack.org/](http://lifehack.org/)  (podcast here) - Web Wisdom about SEO: [http://www.websitemanagementtools.com/web-wisdom](http://www.websitemanagementtools.com/web-wisdom) - TalkCrunch abuot Web 2.0 and new companies: [http://talkcrunch.com/](http://talkcrunch.com/) - Steve Pavlina's Podcast about Personal Development: [http://www.stevepavlina.com/blog/category/podcasts](http://www.stevepavlina.com/blog/category/podcasts) - Sex is Fun about (you guessed it) Sex: [http://greatsexgames.com/podcast/](http://greatsexgames.com/podcast/) _(um.. ok. I'll bite)_ - Sex with Emily also about Dating and Sex: [http://www.sexwithemily.com](http://www.sexwithemily.com/) _(Oh... kaaaay)_ - LinuxReality for Linux beginners: [http://linuxreality.com/](http://linuxreality.com/) _(There's such a thing?)_ - ezHealthy Diet Podcast about Healthy Diet: [http://ezhealthydiet.com/](http://ezhealthydiet.com/) _(how did you know??)_ Thanks guys! I bet there are other good ones out there we just don't know about. If you have more, just write a comment. ## More in Community News [All posts in Community News](https://osherove.com/blog/category/community-news) - Jul 15, 2006 ### [Some updates about the desktop screenshot contest](https://osherove.com/blog/2006/7/15/some-updates-about-the-desktop-screenshot-contest.html) - Jul 14, 2006 ### [Geek Desktop Contest Announced](https://osherove.com/blog/2006/7/14/geek-desktop-contest-announced.html) - Jul 9, 2006 ### [Introducing Regulazy: Point & Click Regular Expression](https://osherove.com/blog/2006/7/9/introducing-regulazy-point-click-regular-expression.html) - Jun 20, 2006 ### [Four cool books to give away at today's C# user group](https://osherove.com/blog/2006/6/20/four-cool-books-to-give-away-at-todays-c-user-group.html) --- title: "TypeMock 3.5 is out - and it's powerful!" url: "https://osherove.com/blog/2006/7/9/typemock-35-is-out-and-its-powerful.md" canonical: "https://osherove.com/blog/2006/7/9/typemock-35-is-out-and-its-powerful.html" published: "2006-07-09T20:12:00" updated: "2006-07-09T20:12:00" tags: ["Agile"] author: "Roy Osherove" description: "The wizards at TypeMock.com have released a brand new version of TypeMock - one of the coolest Mocking frameorks you've never heard of - and it's a shame you hadn't. (if you're new to this product , look at the bottom…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TypeMock 3.5 is out - and it's powerful! By Roy Osherove July 9, 2006 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published July 9, 2006; technical details may be outdated. The wizards at [TypeMock.com](http://www.typemock.com/) have released a brand new version of TypeMock - one of the coolest Mocking frameorks you've never heard of - and it's a shame you hadn't. (if you're **new to this product**, look at the bottom of this post for an explanation) Here are some of the updated features in the new version:

Natural TypeMocks™
(Professional and Enterprise Editions)

TypeMock.NET now supports the innovative Natural TypeMocks™ way of defining expectations.
Using Natural TypeMocks™ Refactoring and compiler strong typing can be used with mocked objects

using (RecordExpectations recorder = RecorderManager.StartRecording())
{
   // CAUTION: ALL calls here are mocked!!!
   Logger.Log(Logger.NORMAL,null); // This is mocked
}

 

Chained Natural TypeMocks™
(Enterprise Editions)

With Chained Natural TypeMocks™, you can now set expectations to a full sequence of calls

using (RecordExpectations recorder = RecorderManager.StartRecording())
{
   Dogs.GetDog("rusty").Tail.Wag().Speed(5); // All calls are mocked
}

 

Better Static Constructor Story

TypeMock.NET now handles mocking static constructors in a much better way.
Now the static constructor will be called if it was mocked in a previous test and is not the current one

Auto-Deploy for Build Servers
(Enterprise Editions)

It is now possible to run TypeMock.NET tests without installing the software

64 bit Side by Side

64 bit and 32 bit TypeMock.NET versions can now work together on the same machine.

Many other cool things

  • Ability to Mock ANY Concrete Class and ALL members:
    Public, Protected, Private, Virtual, Non-virtual, Constructors and Sealed.
  • Mocking takes place on the fly, working on your production assemblies.
  • Easy expectation recording, giving you full control on mocking.
  • Built in argument checks.
  • Support ref and out arguments.
  • Allow arbitrary calls, or reject any method calls that weren't explicitly expected.
  • Enables you to specify sequenced and default return values and exceptions.
  • Support for properties and indexes.
  • Verify mode, to verify arguments without mocking the code.
  • Ability to specify dynamic return values based on passed arguments.
  • Enables you to validate the arguments passed to the mocked types.
  • Specify custom checking of arguments.
**What's TypeMock?** Basically it allows mocking out (replacing) any object, method or member in your code at runtime. even static method calls, singletons and direct calls to objects can be replaced with "fake" ones, in a few lines of code. That helps write test for code that has a lot of dependencies on other code classes (even web services) without having to change the code to test it. **Sounds too goo to be true?** They are doing it using CLR Profilers (an advanced technique that lets you "intercept" any call to any object - even system classes if you want). It's true, but it does have one big shortcoming for me (outlined in red below) The benefits touted on the website are: - Enables testing code that was previously 'untestable'. - Reduces time spent on writing unit tests, giving you more time to focus on your real tasks. - Cuts development time and increases your efficiency by having repeatable unit test. - Saves time by eliminating refactoring and restructuring of your code, just to make it testable. - All this is for **FREE.** I outlined that line in red to make a point: Part of the beauty of writing unit tests is that it **forces** you to restructure and refactor your code for testability. In fact, Testability can indicate a good design. Which is qhy I don't use this tool in my classes about Test Driven Development. However, I do see lots of use for this in places where refactoring is impossible, or you need to write integration tests that are very complicated. It can help QA people as well as developers, and I do think it's a very good tool to have in your tool belt. You just need to know that it hides the idea of good design from you, and lets you plow through your tests as if all is well. That's both good and bad. As long as you know the difference - you're OK. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 19, 2006 ### [Oren is grokking Test Driven Development](https://osherove.com/blog/2006/7/19/oren-is-grokking-test-driven-development.html) - Jul 10, 2006 ### [TestDriven.NET - Pro and Enterprise editions announced](https://osherove.com/blog/2006/7/10/testdrivennet-pro-and-enterprise-editions-announced.html) - Jun 29, 2006 ### [See you at Agile Israel today!](https://osherove.com/blog/2006/6/29/see-you-at-agile-israel-today.html) - Jun 28, 2006 ### [NSPec - The evolution of unit tests into behavior description?](https://osherove.com/blog/2006/6/28/nspec-the-evolution-of-unit-tests-into-behavior-description.html) --- title: "Introducing Regulazy: Point & Click Regular Expression" url: "https://osherove.com/blog/2006/7/9/introducing-regulazy-point-click-regular-expression.md" canonical: "https://osherove.com/blog/2006/7/9/introducing-regulazy-point-click-regular-expression.html" published: "2006-07-09T17:36:00" updated: "2006-07-09T17:36:00" tags: ["CLR", "Community News", "General Software Devel..."] author: "Roy Osherove" description: "Regulazy is an attempt to build a small “Expert System” for creating .NET Regular Expressions. It lets the user create an expression based on a real life example of text they would like to parse. As the user interacts…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing Regulazy: Point & Click Regular Expression By Roy Osherove July 9, 2006 In [CLR](https://osherove.com/blog/category/clr), [Community News](https://osherove.com/blog/category/community-news), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published July 9, 2006; technical details may be outdated. [**Regulazy**](https://osherove.com/) is an attempt to build a small “Expert System” for creating .NET Regular Expressions. It lets the user create an expression based on a real life example of text they would like to parse. As the user interacts with Regulazy using the mouse, Regulazy offers the user possible expressions that would fit the currently selected text. As the user selects “rules” to apply on various parts of the text, a regular expression is built automatically in the lower application pane. The end result is **a visual expression builder**, that for most simple parsing operations, requires the user only to know what they would like to parse, and what the parsing rules should be - Regex Syntax is \*not\* needed. ![](https://osherove.com/img/sq/1000w-RegulazyDemo.gif) The current version is an **alpha** \- It’s  stable, but there are many bugs yet to be found. The version will work until August 10th 2006. Then you’ll have to download a new version. You can find more tools I’ve built over at [/tools/](https://osherove.com/tools/)  This was not an attempt to built a better [Regulator](https://osherove.com/), but instead, a better experience for the developer. If you need to build a complex Regex with multiple options for text inside it and such, this is not(yet) the tool you’d want to use - it supports the most basic options, and tries to solve the %80 case secnario for such simple parsing operations. I hope you guys like it. It was also my first shot at working with the GDI+ system (and it shows in some places, too), in an attempt to build something with a totally different interface for building something on top of text. **Test-Driven Development** This tool was also built using test-driven development for most of the code (Only small parts of the UI components were tested though - all the logic exists in libraries that are well tested. It was a fun experience working alone on this, and making changes constantly to the design of the code. The more complex the logic became, the more glad I was that I had tests to make sure everything still works as advertised. **Helpful Tools** I’m also using [SmartAssembly](http://www.smartassembly.com/) to obfuscate the code, link all referenced assemblies and provide a global error handling mechanism that allows you guys to upload application crash reports that I can later analyze. I’ve reviewed that tool before, but version 1.1 of it really rocks the boat. Recommended. I’m also hosting a [FogBugz](http://www.fogbugz.com/) application over on [www.fogbugzhosting.com](http://www.fogbugzhosting.com/) . So if you find any bugs or think of a missing feature (and there are many, I know) , you can let me know at [http://bugz.osherove.com](http://bugz.osherove.com/) . ## More in CLR [All posts in CLR](https://osherove.com/blog/category/clr) - Nov 29, 2007 ### [IL Debug Visualizer for Compiled Lambda Expressions, MethodBase and DynamicMethod](https://osherove.com/blog/2007/11/29/il-debug-visualizer-for-compiled-lambda-expressions-methodba.html) - Sep 27, 2007 ### [Things I learned at JAOO 2007](https://osherove.com/blog/2007/9/27/things-i-learned-at-jaoo-2007.html) --- title: "Interesting podcast: QAPodcast.com" url: "https://osherove.com/blog/2006/7/7/interesting-podcast-qapodcastcom.md" canonical: "https://osherove.com/blog/2006/7/7/interesting-podcast-qapodcastcom.html" published: "2006-07-07T21:26:00" updated: "2006-07-07T21:26:00" tags: ["General Software Devel..."] author: "Roy Osherove" description: "I was looking for some more interesting podcasts to listen to while I do my nightly walk. I already listen quite regularly to : .NET Rocks HanselMinutes ITConversations (though there haven't been many intersting ones…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Interesting podcast: QAPodcast.com By Roy Osherove July 7, 2006 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published July 7, 2006; technical details may be outdated. I was looking for some more interesting podcasts to listen to while I do my nightly walk. I already listen quite regularly to : - [.NET Rocks](http://www.dotnetrocks.com/) - [HanselMinutes](http://www.hanselminutes.com/) - [ITConversations](http://www.itconversations.com/) (though there haven't been many intersting ones lately) Then i found this one: - [QAPodcast](http://www.qapodcast.com/) There are definintely some interesting tidbits out there from what the site says, so I plan on checking it out tonight. (I'm downloading the shows about performance testing - one of the "hardcore" subjects outthere ofr many clients) Do you know of any podcast I might find interesting? ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Jul 12, 2006 ### [Make IE and FireFox go faster than ever](https://osherove.com/blog/2006/7/12/make-ie-and-firefox-go-faster-than-ever.html) - Jul 9, 2006 ### [Introducing Regulazy: Point & Click Regular Expression](https://osherove.com/blog/2006/7/9/introducing-regulazy-point-click-regular-expression.html) - Jun 27, 2006 ### [ORMappers.Com is open for business (sort of)](https://osherove.com/blog/2006/6/27/ormapperscom-is-open-for-business-sort-of.html) - Jun 19, 2006 ### [A Simple Version Control Strategy Using Team System](https://osherove.com/blog/2006/6/19/a-simple-version-control-strategy-using-team-system.html) --- title: "MVPs go karting" url: "https://osherove.com/blog/2006/6/29/mvps-go-karting.md" canonical: "https://osherove.com/blog/2006/6/29/mvps-go-karting.html" published: "2006-06-29T08:47:00" updated: "2006-06-29T08:47:00" tags: [] author: "Roy Osherove" description: "Yesterday we had an MVP-Event - a local go-Kart tournament. I've previously written how great it would be to have this thing (not just for MVPs) on a monthly or bi monthly basis, but there was little response. So, here…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MVPs go karting By Roy Osherove June 29, 2006 **Historical article** · Originally published June 29, 2006; technical details may be outdated. Yesterday we had an MVP-Event - a local go-Kart tournament. I've previously written how great it would be to have this thing (not just for MVPs) on a monthly or bi monthly basis, but there was little response. So, [here are the pictures](http://i-s-r-a-e-l-i.com/storage/karting/album.ashx) from last night's event. It was really fun and you can see there, among others: [Justin Angel](http://blogs.microsoft.co.il/blogs/justinangel), [Ohad Israeli](http://blogs.microsoft.co.il/blogs/ohad/default.aspx), Yosi Taguri, [Eyal Vardi](http://blogs.microsoft.co.il/blogs/vardi/), Alon Fliss,  [Jackie Goldstein](https://osherove.com/jackieg) and many others. It was a fun event, and I wish there were more like this. --- title: "See you at Agile Israel today!" url: "https://osherove.com/blog/2006/6/29/see-you-at-agile-israel-today.md" canonical: "https://osherove.com/blog/2006/6/29/see-you-at-agile-israel-today.html" published: "2006-06-29T00:52:00" updated: "2006-06-29T00:52:00" tags: ["Agile", "Agile Israel News"] author: "Roy Osherove" description: "Don't forget that today we meet at Agile Israel. Complete details found here . The two topics are: Feature Driven Development and part II is Designing for Testability . We'll also be giving away two cool Agile related…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # See you at Agile Israel today! By Roy Osherove June 29, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Israel News](https://osherove.com/blog/category/agile-israel-news) **Historical article** · Originally published June 29, 2006; technical details may be outdated. Don't forget that today we meet at Agile Israel. [Complete details found here](https://osherove.com/blog/2006/6/13/june-agile-israel-feature-driven-development-design-for-test.html). The two topics are: **Feature Driven Development** and part II is **Designing for Testability**. We'll also be giving away two cool Agile related books - [![](https://osherove.com/img/wb/9bed6d94_images.amazon.com_images_P_073561993X.01._SCMZZZZZZZ_.jpg) Agile Project Management with Scrum (Microsoft Professional)](https://www.amazon.com/exec/obidos/ASIN/073561993X/iserializable-20) [![](https://osherove.com/img/wb/e160ac45_images.amazon.com_images_P_0735619492.01._SCMZZZZZZZ_.jpg) Extreme Programming Adventures in C# (DV-Microsoft Professional)](https://www.amazon.com/exec/obidos/ASIN/0735619492/iserializable-20) **See you there!** ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 10, 2006 ### [TestDriven.NET - Pro and Enterprise editions announced](https://osherove.com/blog/2006/7/10/testdrivennet-pro-and-enterprise-editions-announced.html) - Jul 9, 2006 ### [TypeMock 3.5 is out - and it's powerful!](https://osherove.com/blog/2006/7/9/typemock-35-is-out-and-its-powerful.html) - Jun 28, 2006 ### [NSPec - The evolution of unit tests into behavior description?](https://osherove.com/blog/2006/6/28/nspec-the-evolution-of-unit-tests-into-behavior-description.html) - Jun 13, 2006 ### [June @ Agile Israel (Feature Driven Development, Design For Testability)](https://osherove.com/blog/2006/6/13/june-agile-israel-feature-driven-development-design-for-test.html) --- title: "NSPec - The evolution of unit tests into behavior description?" url: "https://osherove.com/blog/2006/6/28/nspec-the-evolution-of-unit-tests-into-behavior-description.md" canonical: "https://osherove.com/blog/2006/6/28/nspec-the-evolution-of-unit-tests-into-behavior-description.html" published: "2006-06-28T14:00:00" updated: "2006-06-28T14:00:00" tags: ["Agile"] author: "Roy Osherove" description: "Get ready for another naming storm. This time it's going to be \"Behavior Driven Development\". The most important thing coming out of the BDD \"movement\" thee days is NSpec - a framework and specification for writing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NSPec - The evolution of unit tests into behavior description? By Roy Osherove June 28, 2006 In [Agile](https://osherove.com/blog/category/agile) **Historical article** · Originally published June 28, 2006; technical details may be outdated. Get ready for another naming storm. This time it's going to be "Behavior Driven Development". The most important thing coming out of the BDD "movement" thee days is [NSpec](http://nspec.tigris.org/) \- a framework and specification for writing Behavior Verification code (Think Unit Tests with a clearer syntax that explains what you're \*really\* doing). Here's a code sample using [NSpec](http://nspec.tigris.org/):               **\[Specification\]**                **public void BooleanSpecificationExample()**                **{**                        **// ...Some set up code...**                        **Specify.That( someObj.SomeMethod() ).ShouldBeFalse();**                        **// Or...**                        **Specify.That( someObj.SomeOtherMethod() ).ShouldBeTrue();**                **}** Does feels pretty nice, but I think there's along way to go before this start feeling like something I would use for my production code. Still, I think this is an interesting direction to go, but the real development would be to make these behaviors possibly written by the customer for specific scenarios, and the developer for other scenarios - one system that handles both cases. Not that the customer should write code, but they can write in a laungage that can be transformed into such code. With this syntax it's possible. Still - this is a long way away, and right now, NSPec looks awful promising. \[via [larkware](http://www.larkware.com/dg6/TheDailyGrind914.aspx)\] ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jul 9, 2006 ### [TypeMock 3.5 is out - and it's powerful!](https://osherove.com/blog/2006/7/9/typemock-35-is-out-and-its-powerful.html) - Jun 29, 2006 ### [See you at Agile Israel today!](https://osherove.com/blog/2006/6/29/see-you-at-agile-israel-today.html) - Jun 13, 2006 ### [June @ Agile Israel (Feature Driven Development, Design For Testability)](https://osherove.com/blog/2006/6/13/june-agile-israel-feature-driven-development-design-for-test.html) - Jun 11, 2006 ### [Architecting in an Agile World - My ArcCast with Ron Jabobs in online](https://osherove.com/blog/2006/6/11/architecting-in-an-agile-world-my-arccast-with-ron-jabobs-in.html) --- title: "ORMappers.Com is open for business (sort of)" url: "https://osherove.com/blog/2006/6/27/ormapperscom-is-open-for-business-sort-of.md" canonical: "https://osherove.com/blog/2006/6/27/ormapperscom-is-open-for-business-sort-of.html" published: "2006-06-27T22:11:00" updated: "2006-06-27T22:11:00" tags: [".NET", "General Software Devel..."] author: "Roy Osherove" description: "As promised, here's a portal I made dedicated to Object Relational Mapping Tools , Technologies and reviews. http://about.ormappers.com/ The site is currently very thin with information, but that's why it's a community…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ORMappers.Com is open for business (sort of) By Roy Osherove June 27, 2006 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 27, 2006; technical details may be outdated. As promised, here's a portal I made dedicated to Object Relational Mapping Tools , Technologies and reviews. [http://about.ormappers.com/](http://about.ormappers.com/) The site is currently very thin with information, but that's why it's a **community site**. I'm counting on you, the community, to help out and put your thoughts, reviews and experiences into the site. That's why registration is free, and **any registered user** can write to the site's main feed anything (pending review before publishing) they want regarding O/R Mapping. So - you should be writing on the site if: - You know about or are the maker of an O/R Mapping product that's not listed there (And it won't - the list is currently empty!) - You have worked/tried to work with an O/R mapping product and want to share the experience with others on the site's main feed - You heard some news regarding O/R mapping (new product coming out, new patches, new version..) - You read a great blog post or article about it and want to share it with ormappers.com readers - You want to write a full review about a product related to O/R Mapping - You have an opinion about O/R mapping or related technology in general that you think everyone should hear about Go, have fun, and start posting. I hope this works out. With enough community involvement, this could be the one-stop shop for considering working with o/r mapping tools. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Aug 6, 2006 ### [2 Day Architecture & SOA Course - Sound Interesting?](https://osherove.com/blog/2006/8/6/2-day-architecture-amp-soa-course-sound-interesting.html) - Jul 18, 2006 ### [Understanding the different generic collections in .NET (List, BindingList, Collection)](https://osherove.com/blog/2006/7/18/understanding-the-different-generic-collections-in-net-listl.html) - Jun 19, 2006 ### [A Simple Version Control Strategy Using Team System](https://osherove.com/blog/2006/6/19/a-simple-version-control-strategy-using-team-system.html) - Jun 18, 2006 ### [This week at the C# User group - Hardcore ASP.NET 2.0 \[Dan Amiga\]](https://osherove.com/blog/2006/6/18/this-week-at-the-c-user-group-hardcore-aspnet-20-dan-amiga.html) --- title: "Should I set up an OR Mapping Related web portal?" url: "https://osherove.com/blog/2006/6/22/should-i-set-up-an-or-mapping-related-web-portal.md" canonical: "https://osherove.com/blog/2006/6/22/should-i-set-up-an-or-mapping-related-web-portal.html" published: "2006-06-22T22:55:00" updated: "2006-06-22T22:55:00" tags: [] author: "Roy Osherove" description: "Update: The site is now live, and waiting for your shared knowledge to be written into it! Check it out: www.ORMappers.Com I'm In the process of creating a site that will deal with ORMappers (of all technologies). This…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Should I set up an OR Mapping Related web portal? By Roy Osherove June 22, 2006 **Historical article** · Originally published June 22, 2006; technical details may be outdated. **Update: The site is now live,** and waiting for your shared knowledge to be written into it! **Check it out:** [**www.ORMappers.Com**](http://www.ormappers.com/) --- I'm In the process of creating a site that will deal with ORMappers (of all technologies). This site will be community driven in its content, but as such, I'm putting together a team of people who can help manage it and contribute  to it. Would you be interested In Reading such a web site? Would you be interested In **writing** for that site various articles (or sharing articles from your own site) on that technology? I'm looking for product reviews, architecture insights and anything that might interest developers and decision makes about OR Mapping. When the site goes live, some of the more prominent writers will be given the role of "Content Manager" and will be able to shape the content of the site by helping approve and review articles submitted by other site members.Those content managers will also have special credits on the site for their hard work. Think of it as a big blog, with the ability to write long articles in it, which will have a targeted viewership.It should be \*the\* place people will go to find out about what's new and cool in the world of OR Mapping. Content you can write for the site: \- Daily/weekly news \- Product reviews relating to OR Mapping \- Technology Articles (a deep as you like) \- Opinion pieces about the state of the art in ORMapping or other things in that realm \- Special columns with this technology in mind \- General Architecture and best practices for people who deal with applications that might need ORMapping \- your ideas are welcome. Payment: The only payment you'll receive is that of contributing to the community, and getting your name up there in the credits. As the site grows, we might start to get sponsorships and such, and at that time it may be time to start talking about real financial compensation. For now, and always, it should be for the love of what we do. I'd be happy to hear from you. - whether you think the idea is a no-go, or you'd love it, or you'd love to contribute to it, or you'd love to help manage content (only if you know enough about this topic!) Feel free to comment your thoughts on this post. --- title: "Four cool books to give away at today's C# user group" url: "https://osherove.com/blog/2006/6/20/four-cool-books-to-give-away-at-todays-c-user-group.md" canonical: "https://osherove.com/blog/2006/6/20/four-cool-books-to-give-away-at-todays-c-user-group.html" published: "2006-06-20T23:10:00" updated: "2006-06-20T23:10:00" tags: ["ASP.NET", "C#", "Community News"] author: "Roy Osherove" description: "If you're planning on showing up today to the Israeli C# User Group meeting (Wednesday) be prepared for a great raffle I'm planning in the end. I try to make it a habit to bring along cool books to presentations I host.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Four cool books to give away at today's C\# user group By Roy Osherove June 20, 2006 In [ASP.NET](https://osherove.com/blog/category/asp-net), [C#](https://osherove.com/blog/category/c), [Community News](https://osherove.com/blog/category/community-news) **Historical article** · Originally published June 20, 2006; technical details may be outdated. If you're planning on [showing up today to the Israeli C# User Group meeting](https://weblogs.asp.net/rosherove/archive/2006/06/18/IVCUGJune2006.aspx) (Wednesday) be prepared for a great raffle I'm planning in the end. I try to make it  a habit to bring along cool books to presentations I host. Since I'm hosting this session with Dan Amiga, and it's about ASP.NET, I'm brining in **four cool books** to raffle off at the end. Showing up would be a **good idea**. [![](https://osherove.com/img/wb/951d0ecf_images.amazon.com_images_P_0321294475.01._SCMZZZZZZZ_.jpg) Maximizing ASP.NET : Real World, Object-Oriented Development](https://www.amazon.com/exec/obidos/ASIN/0321294475/iserializable-20) [![](https://osherove.com/img/wb/9f13c96f_images.amazon.com_images_P_073561962X.01._SCMZZZZZZZ_.jpg) Introducing Microsoft SQL Server(TM) 2005 for Developers (Pro - Developer)](https://www.amazon.com/exec/obidos/ASIN/073561962X/iserializable-20) [![](https://osherove.com/img/wb/9aeae0f0_images.amazon.com_images_P_0735622019.01._SCMZZZZZZZ_.jpg) Microsoft ASP.NET 2.0 Step By Step (Step By Step (Microsoft))](https://www.amazon.com/exec/obidos/ASIN/0735622019/iserializable-20) [![](https://osherove.com/img/wb/e160ac45_images.amazon.com_images_P_0735619492.01._SCMZZZZZZZ_.jpg) Extreme Programming Adventures in C# (DV-Microsoft Professional)](https://www.amazon.com/exec/obidos/ASIN/0735619492/iserializable-20) _(What did you expect from an Agile Dude? No Agile Book?)_ ## More in ASP.NET [All posts in ASP.NET](https://osherove.com/blog/category/asp-net) - Dec 4, 2006 ### [HnD - Open source forums and support backed by LLBLGen 2.0](https://osherove.com/blog/2006/12/4/hnd-open-source-forums-and-support-backed-by-llblgen-20.html) - Oct 14, 2006 ### [Introducing Perf+ , A better perfmon](https://osherove.com/blog/2006/10/14/introducing-perf-a-better-perfmon.html) - Jun 15, 2006 ### [\[Cool Tool\]Unlocker : Unlock Files/Folders without going nuts](https://osherove.com/blog/2006/6/15/cool-toolunlocker-unlock-filesfolders-without-going-nuts.html) - Jun 11, 2006 ### [\[Cool Tool\] ASP.NET Enterprise Manager on Steroids: Ajax, Multiple DB types, And open source!](https://osherove.com/blog/2006/6/11/cool-tool-aspnet-enterprise-manager-on-steroids-ajax-multipl.html) --- title: "Free Sharepoint 2007 Book Download" url: "https://osherove.com/blog/2006/6/19/free-sharepoint-2007-book-download.md" canonical: "https://osherove.com/blog/2006/6/19/free-sharepoint-2007-book-download.html" published: "2006-06-19T22:09:00" updated: "2006-06-19T22:09:00" tags: ["Free book chapters", "Sharepoint"] author: "Roy Osherove" description: "If you're into that kind of thing, Eli says there's a free book download about SharePoint 2007. Download the PDF directly from here . Eli says: \"Future or current SharePoint developers should at least flip through the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free Sharepoint 2007 Book Download By Roy Osherove June 19, 2006 In [Free book chapters](https://osherove.com/blog/category/free-book-chapters), [Sharepoint](https://osherove.com/blog/category/sharepoint) **Historical article** · Originally published June 19, 2006; technical details may be outdated. If you're into that kind of thing, [Eli says there's a free book](https://osherove.com/blog/2006/6/19/free-sharepoint-2007-book-download.html) download about SharePoint 2007. Download the PDF [directly from here](http://download.microsoft.com/download/0/2/f/02f0f661-88e1-43c2-b523-88d2e9e6802f/7%20Development%20Projects%20with%20the%202007%20Microsoft%20Office%20System%20and%20Windows%20SharePoint%20Services%202007.pdf).  Eli says: "Future or current SharePoint developers should at least flip through the book to build a picture of how MOSS 2007 fits together and what the concepts are -- changes to the security model, site definitions, site features, Content Types, how Workflow is integrated, Excel Services -- there are a hundred small topics, you owe it to yourself to get a handle on the big picture. " ## More in Free book chapters [All posts in Free book chapters](https://osherove.com/blog/category/free-book-chapters) - Oct 10, 2006 ### [The Art Of Unit Testing - Download Chapter 1](https://osherove.com/blog/2006/10/10/the-art-of-unit-testing-download-chapter-1.html) - Aug 21, 2006 ### [Free E-Book: Developing Time-Oriented Database Applications in SQL](https://osherove.com/blog/2006/8/21/free-e-book-developing-time-oriented-database-applications-i.html) - Feb 16, 2006 ### [10 Hacker tricks to exploit SQL Server Systems + free chapter on reverse engineering](https://osherove.com/blog/2006/2/16/10-hacker-tricks-to-exploit-sql-server-systems-free-chapter.html) - Feb 2, 2006 ### [HanselMinutes on CI tools, and a free EBook on Agile Skills](https://osherove.com/blog/2006/2/2/hanselminutes-on-ci-tools-and-a-free-ebook-on-agile-skills.html) --- title: "Procedure for Installing Team System" url: "https://osherove.com/blog/2006/6/19/procedure-for-installing-team-system.md" canonical: "https://osherove.com/blog/2006/6/19/procedure-for-installing-team-system.html" published: "2006-06-19T20:19:00" updated: "2006-06-19T20:19:00" tags: ["Team System", "Visual Studio"] author: "Roy Osherove" description: "The first time I Installed Team System, it took about a day. I had to learn all this stuff the hard way, and the docs were just too darn \"wordy\". So I made a small log file of what I had to do before I could install…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Procedure for Installing Team System By Roy Osherove June 19, 2006 In [Team System](https://osherove.com/blog/category/team-system), [Visual Studio](https://osherove.com/blog/category/visual-studio) **Historical article** · Originally published June 19, 2006; technical details may be outdated. The first time I Installed Team System, it took about a day. I had to learn all this stuff the hard way, and the docs were just too darn "wordy". So I made a small log file of what I had to do **before** I could install Team System, and what I went through **while** I was installing it. Turns out, if you know what's going to happen, it ain't so bad. It could be worse. It could be an Oracle installer. [Read it and see how I did it](https://osherove.com/rosherove/pages/InstallingTeamSystemProcedure.aspx) ## More in Team System [All posts in Team System](https://osherove.com/blog/category/team-system) - Sep 24, 2006 ### [Continuous integration with Team System and Team Foundation Server](https://osherove.com/blog/2006/9/24/continuous-integration-with-team-system-and-team-foundation.html) - Jul 17, 2006 ### [Solution: Using Source Server with Team System Source Control](https://osherove.com/blog/2006/7/17/solution-using-source-server-with-team-system-source-control.html) - Jun 19, 2006 ### [MSBuild SideKick - Fixed to use with Team Build](https://osherove.com/blog/2006/6/19/msbuild-sidekick-fixed-to-use-with-team-build.html) - Jun 19, 2006 ### [A Simple Version Control Strategy Using Team System](https://osherove.com/blog/2006/6/19/a-simple-version-control-strategy-using-team-system.html) --- title: "MSBuild SideKick - Fixed to use with Team Build" url: "https://osherove.com/blog/2006/6/19/msbuild-sidekick-fixed-to-use-with-team-build.md" canonical: "https://osherove.com/blog/2006/6/19/msbuild-sidekick-fixed-to-use-with-team-build.html" published: "2006-06-19T19:55:00" updated: "2006-06-19T19:55:00" tags: ["MSBuild", "Team System", "Visual Studio"] author: "Roy Osherove" description: "Update : Downloading the latest version of hte Sidekick tool fixes the problem mentioned here. See this comment from Matan: \"Please download the latest version of the MSBuild Sidekick - that should take care of the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSBuild SideKick - Fixed to use with Team Build By Roy Osherove June 19, 2006 In [MSBuild](https://osherove.com/blog/category/msbuild), [Team System](https://osherove.com/blog/category/team-system), [Visual Studio](https://osherove.com/blog/category/visual-studio) **Historical article** · Originally published June 19, 2006; technical details may be outdated. **Update**: Downloading the latest version of hte Sidekick tool fixes the problem mentioned here. See this comment from Matan: _"Please download the latest version of the MSBuild Sidekick - that should take care of the non-MSBuild parts not being saved problem. We've released a patch for it less than a day after the release. Regarding the absence of Team Build elements from the UI, please note my post about schema-support. This is a known issue and we are working hard to solve it as soon as possible. "_ When I [first found out about MSBuild SideKick](https://osherove.com/blog/2006/6/7/news-testdriven-sidekick-expression-evaluators-and-security.html), I was excited. I thought that finally there's a slim chance that I won't have to edit dreaded XML files, and instead use a point and click interface, like god intended. I even [pointed](https://osherove.com/blog/2006/6/11/got-an-msbuild-sikdekick-wish-post-it-on-matans-blog.html) to [Matan's Blog](http://blogs.microsoft.co.il/blogs/tfsidekicks/), which is one of the guys behind this tool so you can send comments his way. I then tried to edit a TFSBuild.Proj file using MSBuild Sidekick. It seemed to work well except for one major problem: Sidekick only uses the [MSBuild Schema](http://blogs.msdn.com/msbuild/archive/2005/11/04/489212.aspx) for the various properties inside it, so it leaves out essential properties that Team Build needs like the Build Machine Name. So, when you save the file through Sidekick,  and then check it in and try to run the build through the Team Explorer Addin, you get a nice error message that states that the Build Machine Name is missing from the build type file. So much for helpful. Can [someone](http://blogs.microsoft.co.il/blogs/tfsidekicks/) **please** pick up the glove on this? It's already dirty, tainted and muddy, and it will be trampled by people jumping up and down with ange if someone doesn't pick that glove up pretty soon (that someone just might be me!) ## More in MSBuild [All posts in MSBuild](https://osherove.com/blog/category/msbuild) - Dec 12, 2012 ### [When they tell me I have to use MSBuild to automate our CI Process](https://osherove.com/blog/2012/12/12/when-they-tell-me-i-have-to-use-msbuild-to-automate-our-ci-p.html) --- title: "A Simple Version Control Strategy Using Team System" url: "https://osherove.com/blog/2006/6/19/a-simple-version-control-strategy-using-team-system.md" canonical: "https://osherove.com/blog/2006/6/19/a-simple-version-control-strategy-using-team-system.html" published: "2006-06-19T19:48:00" updated: "2006-06-19T19:48:00" tags: [".NET", "General Software Devel...", "Team System", "Visual Studio"] author: "Roy Osherove" description: "To Skip this Intro, read the full article here: A Simple Version Control Strategy Using Team System I was recently asked by a client who I'm helping to integrate Team System, to create a strategy for the organization…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Simple Version Control Strategy Using Team System By Roy Osherove June 19, 2006 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Team System](https://osherove.com/blog/category/team-system), [Visual Studio](https://osherove.com/blog/category/visual-studio) **Historical article** · Originally published June 19, 2006; technical details may be outdated. _To Skip this Intro, read the full article here:_ [_A Simple Version Control Strategy Using Team System_](https://osherove.com/rosherove/pages/VersionControlStrategyForTeamSystem.aspx) I was recently asked by a client who I'm helping to integrate Team System, to create a strategy for the organization and future projects for managing multiple versions of applications and code - A version Control Strategy. Since there are some major difference between the way Team System Works and its current abilities compared to past versions of Microsoft Source Control Products like VSS (or other 3rd party products such as CVS), I turned to look for a good source of information on this. The more I searched I less I found that made sense. There are tons of scattered material out there on the **technical** aspects of version control (very little on Team System but there is some) but almost none about the strategy you might want to use when dealing with multiple versions. I asked several of my colleagues, all working with Team System, to tell me what strategy they use for versioning control of applications. They all said that they are also “re-inventing the wheel” – They couldn’t find any clear guidance either on this. So I decided to put my (oh so simple) thoughts on paper and publish it, so that : - I can get feedback - You won’t have to reinvent the wheel yourself. It’s important to understand that besides the simple “What do I do when I have a new version”, the technicalities of what you do in team system were compiled from other sources, mainly the one listed at the top of this page. This short guide is nothing more than that –a short guide, that tells you the basic strategy you need to follow. That mindset is what’s important. It’s not a 90 page document. It’s a strategy document, and as that is should be simple. Over time I will sprinkle various “HOWTO” links around the article to point to various “gotchas” when trying to accomplish some of the stuff mentioned here. A good example might be coming up with the appropriate versioning scheme that automatically changes the last build number based on your input. It’s a relatively simple task, but with the current crop of Team System Tooling (namely- none),  it’s pretty hard to achive without lots of manual labour. I will add that link later on when I’ve written a short essay on those little pitfalls we like to call “Extending Team Build”. The article is in the form of Questions (FAQ) that you ask yourself during development. The first two are just background and opening though. Hope the format is useful. Read it: [A Simple Version Control Strategy Using Team System](https://osherove.com/rosherove/pages/VersionControlStrategyForTeamSystem.aspx) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jul 18, 2006 ### [Understanding the different generic collections in .NET (List, BindingList, Collection)](https://osherove.com/blog/2006/7/18/understanding-the-different-generic-collections-in-net-listl.html) - Jun 27, 2006 ### [ORMappers.Com is open for business (sort of)](https://osherove.com/blog/2006/6/27/ormapperscom-is-open-for-business-sort-of.html) - Jun 18, 2006 ### [This week at the C# User group - Hardcore ASP.NET 2.0 \[Dan Amiga\]](https://osherove.com/blog/2006/6/18/this-week-at-the-c-user-group-hardcore-aspnet-20-dan-amiga.html) - Jun 14, 2006 ### [Mapping CLR, Winfx and .NET Framework 3.0 upcoming versions](https://osherove.com/blog/2006/6/14/mapping-clr-winfx-and-net-framework-30-upcoming-versions.html) --- title: "A Simple Version Control Strategy Using Team System" url: "https://osherove.com/blog/2006/6/19/a-simple-version-control-strategy-using-team-system-1.md" canonical: "https://osherove.com/blog/2006/6/19/a-simple-version-control-strategy-using-team-system-1.html" published: "2006-06-19T19:39:00" updated: "2006-06-19T19:39:00" tags: [] author: "Roy Osherove" description: "Parts of this article are compiled from http://msdn.microsoft.com/library/en-us/dnvs05/html/vs05teamsys.asp?frame=true Update : Added questions about sstoring third party components, sharing project output internally…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Simple Version Control Strategy Using Team System By Roy Osherove June 19, 2006 **Historical article** · Originally published June 19, 2006; technical details may be outdated. - _Parts of this article are compiled from [http://msdn.microsoft.com/library/en-us/dnvs05/html/vs05teamsys.asp?frame=true](http://msdn.microsoft.com/library/en-us/dnvs05/html/vs05teamsys.asp?frame=true)_ _**Update**: Added questions about sstoring third party components, sharing project output internally and branching compared to Subversion._ I was recently asked by a client who I’m helping to integrate Team System, to create a strategy for the organization and future projects for managing multiple versions of applications and code - A version Control Strategy. Since there are some major difference between the way Team System Works and its current abilities compared to past versions of Microsoft Source Control Products like VSS (or other 3rd party products such as CVS), I turned to look for a good source of information on this. The more I searched I less I found that made sense. There are tons of scattered material out there on the **technical** aspects of version control (very little on Team System but there is some) but almost none about the strategy you might want to use when dealing with multiple versions. I asked several of my colleagues, all working with Team System, to tell me what strategy they use for versioning control of applications. They all said that they are also “re-inventing the wheel” – They couldn’t find any clear guidance either on this. So I decided to put my thoughts on paper and publish it, so that : - I can get feedback - You won’t have to reinvent the wheel yourself. It’s important to understand that besides the simple “What do I do when I have a new version”, the technicalities of what you do in team system were compiled from other sources, mainly the one listed at the top of this page. This short guide is nothing more than that –a short guide, that tells you the basic strategy you need to follow. That mindset is what’s important. It’s not a 90 page document. It’s a strategy document, and as that is should be simple. Over time I will sprinkle various “HOWTO” links around the article to point to various “gotchas” when trying to accomplish some of the stuff mentioned here. A good example might be coming up with the appropriate versioning scheme that automatically changes the last build number based on your input. It’s a relatively simple task, but with the current crop of Team System Tooling (namely- none),  it’s pretty hard to achive without lots of manual labour. I will add that link later on when I’ve written a short essay on those little pitfalls we like to call “Extending Team Build”. The article is in the form of Questions (FAQ) that you ask yourself during development. The first two are just background and opening though. Hope the format is useful. [Roy.](http://iserializable.com/) ##### _Team Foundation Source Control Vs SourceSafe_ Make no mistake about it: TFVC **was written from the ground up to solve limitations of using VSS** on large development projects. Instead of relying on a file system as the repository, TFVC leverages Microsoft SQL Server 2005 as a robust, scalable, high-performance storage mechanism. Team Foundation Version Control provides all of the basic functionality of other source control mechanisms and most of the enhancements listed for Visual SourceSafe 2005. In addition, TFVC provides new advanced feature, including Shelving, checkin policies, and integration with the new work item tracking system. These features are described later in this article. There are a few features that VSS users may miss from TFVC. These features include: - **Sharing**—VSS provides a mechanism to make a file or folder in source control appear in multiple places in the source control structure. TFVC does not have an identical capability. Branching, however, can be used to simulate this behavior. - **Pinning**—VSS provides a mechanism called “Pinning,” which is used to pin a version of a file in such a way that it can’t be modified. This is frequently used with sharing, to pin different versions of the same file in different share directories. As described below, the TFVC mechanisms for branching are more powerful, in that they allow different versions to be maintained independently. #### What’s the basic strategy for handling multiple versions of my application? The guiding rule of thumb for me is:: - Use labels for bug fixes in the current version (version increments should be 1.0.X.0) - Use Branches for New features (version increments should be X.0.0 or  1.X.0.0) - Use the remaining fourth number (1.0.0.X) at your discretion for maintaining unique build numbers across revisions. - _(The MS guideline states that the order of these should be MajorVersion.MinorVersion.Build.Revision - This is **different** than what this article states. I find my way clearer to understand)_ Versions which are just bug fixing versions (no new features) are better solved using Labeling in the current product root in Team System Source Control. For versions with new features, **Branching** is the standard answer. When you release a version of your application, you create a branch of your files for the next version. Just like the branches in a tree, you can access all existing branches simultaneously. Now, when your high priority bug comes in on V1.0 of your application, you can go back to that branch and make the fixes, without worrying about the impact your V2.0 updates could cause. But Now that you’ve prepared a new V1.1 release with the bugs fixed, **how do you make sure that those updates are reflected in the V2.0 code** that you’re working on? The preferred solutions the use of the  merge tool from Team System. #### What should I do when I have released a version to my users? - Create a label on the top branch of that product you just released with the label (Release Version X.y.z). - _This will allow you to **fix bugs** in the just released version without affecting future versions._ - Create a new **branch** from that release version (from the root of the product) into a new tree node usually named “myProduct-v11” or “MyProduct-v20”. - _This will allow you to **add features** without disturbing the stability of the old version._ #### I want to start creating the next version of my product - If your new version will contain new features, **use the new branch** you created after the previous release to all the development in. - If your new version is simply a bug fixing version, nothing else, you may be better off **labeling the just released version** for each bug fix **Where should I store any third party components and libraries that my project uses?** - I believe that each version of the project needs all of the binaries it’s worked with, with their own version, so that when you need to, you can recreate any bug with any version of any 3rd party component. Those components are then branched as well with each new version of the software. **We’re writing a project that’s used inside the organization. How do we make sure people always get the latest and greatest version of the project/framework?** - The simple answer is that they don’t get the framework from source control as code so all you really need is to make sure that the final binaries are there and easy to get.  You can either put the latest release’s binaries in a known location in source control or in  known location on the network. There are usually two folders in that location: -  Latest release Version (1.X or X.0) - (if there was one)Previous release version with fixes (1.0.X) - You can optionally make a folder for each older version you have with the latest fixes for it. #### How do I use Branching in Team System Source Control? TFVC provides robust branching capabilities. Individual files, complete directories, or projects can be branched. Even complete Team Projects and solutions can be branched. Although there are several ways to access the branching functionality from Visual Studio 2005 Team System, one simple way is to select the folder in the Source Control Explorer window, right-click, and click Branch in the shortcut menu. This will result in a dialog box similar to that shown in Figure 2. ![](https://osherove.com/img/wb/9e6b6da8_msdn.microsoft.com_library_en-us_dnvs05_html_scc_fig02.gif) **Figure 2. Branching** Users can browse to or enter the destination location in the source control repository to store the new branch. Figure 3 shows the Source Control Explorer after a branch operation. **![Click here for larger image.](https://osherove.com/img/wb/dff9aeea_msdn.microsoft.com_library_en-us_dnvs05_html_scc_fig03S.gif)** **Figure 3. Branch results** #### I just fixed a bug in the version 1.0 of my product, but we are in the middle of developing version 2.0! How do I add that fix to version 2.0 as well? Usually, at least some of the changes made in a maintenance release will be rolled forward into a new version. The TFVC Version Control Merge Wizard, shown in Figure 4, can be used to move the changes from one branch into another. To access the Version Control Merge Wizard, select the source folder in the Source Control Explorer window, right-click, and click Merge in the shortcut menu. As the Wizard is displayed, users can select and verify the source and destination of the merge, and specify whether the merge will include all changes since the last merge, or only selected changes. You can also select specific changesets to work with, representing all files checked in by a single user at a single time, or accept all differences between the two branches.      ![](https://osherove.com/img/wb/be3bad43_msdn.microsoft.com_library_en-us_dnvs05_html_scc_fig04.gif)     ![Click here for larger image.](https://osherove.com/img/wb/3f04b861_msdn.microsoft.com_library_en-us_dnvs05_html_scc_fig05S.gif) **Figure 4. Merge Wizard**                                         **Figure 5. Merge resolution** During the merge process, TFVC will compare the differences in all of the selected files. When the files are different, the merge process will attempt to generate a current copy based on the the files in each branch. If the merge process is successful without user intervention, the merged files will be checked out and merged in the target. Note that TFVC can merge not only modified files, but also new files, deleted files, and even renamed files. If there are conflicts during the merge process that cannot be automatically resolved, the Version Control Change Wizard will request your assistance. You can choose to use either version of the file, however, as the final version, but in most cases, you’ll probably choose to manually perform the merge. Manual merging displays the differences on a merge screen, with the file from the source branch on the left-hand side, and the file from the target on the right-hand side. You will have the ability to select the lines from each branch that you want in the final merged version. Figure 5 shows an example of the merge resolution screen. Once the merge is complete, the resulting files will be represented as pending changes in your workspace, and you should test the merged version. Compile the projects and run your tests, to ensure that the merged version operates as expected, before checking it in to TFVC. If needed, additional files can be checked out to support the merge; TFVC handles changesets atomically, so all changes associated with the merge can be checked in as a single unit. #### I’m used to using Subversion. Does branching strategy differ in Team System? - #### In other words - should we follow the Subversion convention of creating a trunk and branches folder immediately under the project root? - #### No. You branch the entire project root into a new version. - I understand you \*can\* branch a file, folder, or project, but what \*should\* you ? - Usually, branching a sub folder or file in a project can lead to a versinoing nightmare, as its really hard to maintain. It’s almost always a good idea to have a whole version of the whole project/solution where your changes are not affecting other users and you don’t have to worry about hidden sub folders who are branched. -  Is it just as easy to branch your project, or is it easier to use the trunk/branches approach and just branch at the folder level? Branching is very easy at any level. But I’d recommend always branching at the project/soution root. - I’m assuming the tags folder is not needed, since the labelling function does not require it. - Correct. #### How do I use Labels? Version control systems typically use “labeling” to allow you to define specific files and versions of those files as a group. To apply a label on a branch or node in a branch, right click that tree node (or branch) and select “Apply Label”. Once the label has been applied, the files labeled together can be referenced as a whole later on in the development lifecycle. For example, labels can be created for nightly builds, allowing easy retrieval and reference of the file versions included in each build. Figure 1 depicts the labeling dialog box provided with Visual Studio 2005 Team System. ![](https://osherove.com/img/wb/b96178df_msdn.microsoft.com_library_en-us_dnvs05_html_scc_fig01.gif) **Figure 1. Labeling** --- title: "This week at the C# User group - Hardcore ASP.NET 2.0 [Dan Amiga]" url: "https://osherove.com/blog/2006/6/18/this-week-at-the-c-user-group-hardcore-aspnet-20-dan-amiga.md" canonical: "https://osherove.com/blog/2006/6/18/this-week-at-the-c-user-group-hardcore-aspnet-20-dan-amiga.html" published: "2006-06-18T13:01:00" updated: "2006-06-18T13:01:00" tags: [".NET", ".Net 2.0", "Community"] author: "Roy Osherove" description: "I'll be hosting the meeting of the Israel Visual C#/C++ User's group this week due to scheduling problems on part of the original hosts of the group, Shai Bar Lev and Moshe Raab. So what's the meeting about? Read the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # This week at the C\# User group - Hardcore ASP.NET 2.0 \[Dan Amiga\] By Roy Osherove June 18, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published June 18, 2006; technical details may be outdated. I'll be hosting the meeting of the Israel Visual C#/C++ User's group this week due to scheduling problems on part of the original hosts of the group, Shai Bar Lev and Moshe Raab. So what's the meeting about? Read the abstract below. **Israel Visual C++ Users Group June Meeting** Date: **Wednesday, June 21, 2006, 17:00 - 20:00** Place: **Microsoft Israel** **Hapnina 2 (Amdocs Building)** **Ground Floor** **Raanana** **+972 (9) 762-5100** Parking is available at the Kurkar parking lot. Proceed straight past the traffic circle and the parking lot will be on your right. **_Topic_****:** **Hardcore ASP.NET 2.0** **Lecturer:** **Dan Amiga**  This session is all about really understanding the internals of ASP.NET 2.0 and cruising it’s (highly usable) dark corners. I’ve carefully selected the topics to suit all developers so that even if you are not inheriting from System.Web.UI.Page all day you’d be very interested in how you can leverage ASP.NET 2.0 to answer non functional system requirements such as: scaling, concurrency, session handling, monitoring, hosting, design time behavior and much more. These are the topics too deep to cover in class: ·         ISAPI Filters & Extensions. IIS 7 and ISAPI ·         System.Web.Hosting, HttpRuntime, HttpApplicationFactory,PageHandlerFactory,IHttpHandlerFactory and the multi threaded pipeline. ·         PreCompilation,  Dynamic compilation and  no compilation.. ·         BuildProviders and ExpressionBuilders ·         Utilizing Completion and Worker threads to achieve asynchronous page execution. ·         Caching internals – synchronization, HttpCachePolicy and the famous SqlCacheDependency ·         Session state internals – readonly state, read/write state, and the state provider to boost performance. ·         Viewstate and ControlState Internals - LosFormatter and the ObjectStateFormatter ·         Custom controls internals – Control&Template Attributes, composition, callbacks (simple, atlas), web resources, adaptive rendering and design time behavior. ·         Health monitoring through WebEvents and smart exception handling Dan Amiga is a solution architect at Advantech, Microsoft Division (Magen-MTC) where he leads and mentors all flavors of companies and organizations on how to solve business critical problems using Microsoft technology and server platforms. He has delivered many seminars, courses and hands-on training on developing distributed applications; Win applications, ASP.NET, WinFX, security and databases. Dan is also a known presenter and speaks at national conferences such as TechED, Microsoft Launch Events, Architecture usergroup, Security usergroup and other community events. See you there! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 27, 2006 ### [ORMappers.Com is open for business (sort of)](https://osherove.com/blog/2006/6/27/ormapperscom-is-open-for-business-sort-of.html) - Jun 19, 2006 ### [A Simple Version Control Strategy Using Team System](https://osherove.com/blog/2006/6/19/a-simple-version-control-strategy-using-team-system.html) - Jun 14, 2006 ### [Mapping CLR, Winfx and .NET Framework 3.0 upcoming versions](https://osherove.com/blog/2006/6/14/mapping-clr-winfx-and-net-framework-30-upcoming-versions.html) - Jun 14, 2006 ### [Interface Naming - Anything But Java's Standard, Please](https://osherove.com/blog/2006/6/14/interface-naming-anything-but-javas-standard-please.html) --- title: "[Off Topic] Welcome to Pallywood" url: "https://osherove.com/blog/2006/6/18/off-topic-welcome-to-pallywood.md" canonical: "https://osherove.com/blog/2006/6/18/off-topic-welcome-to-pallywood.html" published: "2006-06-18T12:48:00" updated: "2006-06-18T12:48:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I normally don't blog politics, but this is too important not to mention. Feel free to skip this post if you're not interested in the Israeli-Palestinian conflict. Not to detract anything from what's already a very…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Off Topic\] Welcome to Pallywood By Roy Osherove June 18, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 18, 2006; technical details may be outdated. I normally don't blog politics, but this is too important not to mention. Feel free to skip this post if you're not interested in the Israeli-Palestinian conflict. Not to detract anything from what's already a very complex situation, in which, I believe, both sides are wrong in some ways, you need to watch this so you can get another perspective of the news, as compiled from unedited footage. Welcome to Pallywood: [http://seconddraft.org/streaming/pallywood.wmv](http://seconddraft.org/streaming/pallywood.wmv) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 18, 2006 ### [Could JaJah be the next Skype Killer? Almost](https://osherove.com/blog/2006/7/18/could-jajah-be-the-next-skype-killer-almost.html) - Jul 10, 2006 ### [Attack of the high and mighty forum reply (or: can't you just answer a simple question?)](https://osherove.com/blog/2006/7/10/attack-of-the-high-and-mighty-forum-reply-or-cant-you-just-a.html) - Jun 13, 2006 ### [Fixing "mapi32.dll is an invalid Extended MAPI Library" and "Mail is not installed on your system" on Windows Server 2003 with Exchange](https://osherove.com/blog/2006/6/13/fixing-quotmapi32dll-is-an-invalid-extended-mapi-libraryquot.html) - May 29, 2006 ### [Google Notebook - Would \*Kill\* RSS Feeds](https://osherove.com/blog/2006/5/29/google-notebook-would-kill-rss-feeds.html) --- title: "Control Google Maps by Tilting your ThinkPad" url: "https://osherove.com/blog/2006/6/18/control-google-maps-by-tilting-your-thinkpad.md" canonical: "https://osherove.com/blog/2006/6/18/control-google-maps-by-tilting-your-thinkpad.html" published: "2006-06-18T09:09:00" updated: "2006-06-18T09:09:00" tags: ["Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "\" Another day, another hack . Here's a demo that controls Google Maps using ThinkPad Hard Drive Active Protection sensor. You tilt your ThinkPad and Google Maps roll over. Pretty cool.\" Oh, this is very very cool!…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Control Google Maps by Tilting your ThinkPad By Roy Osherove June 18, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 18, 2006; technical details may be outdated. "[Another day, another hack](http://bulknews.typepad.com/blog/2006/06/control_google_.html). Here's a demo that controls Google Maps using ThinkPad Hard Drive Active Protection sensor. You tilt your ThinkPad and Google Maps roll over. Pretty cool." Oh, this is very very cool! Especially if you have a ThinkPad Tablet PC, like my friend Ariel does, who incidentally, recommended this link to me. You can download the code that does this from their SVN Repository, which is a good way to see how this hack was created.. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jul 26, 2006 ### [Sanjay's cool tools](https://osherove.com/blog/2006/7/26/sanjays-cool-tools.html) - Jul 19, 2006 ### [Regulazy Facts](https://osherove.com/blog/2006/7/19/regulazy-facts.html) - Jun 18, 2006 ### [CodeRush 2.0 First Impressions - A Nice Surprise](https://osherove.com/blog/2006/6/18/coderush-20-first-impressions-a-nice-surprise.html) - Jun 17, 2006 ### [\[Cool Tool\] CodeSmart 2007 for VB6 - The Killer Addin for VB6](https://osherove.com/blog/2006/6/17/cool-tool-codesmart-2007-for-vb6-the-killer-addin-for-vb6.html) --- title: "CodeRush 2.0 First Impressions - A Nice Surprise" url: "https://osherove.com/blog/2006/6/18/coderush-20-first-impressions-a-nice-surprise.md" canonical: "https://osherove.com/blog/2006/6/18/coderush-20-first-impressions-a-nice-surprise.html" published: "2006-06-18T08:25:00" updated: "2006-06-18T08:25:00" tags: ["Cool Tools", "Visual Studio"] author: "Roy Osherove" description: "Through Kim's blog , I've found out that CodeRush and Refactor 2.0 have finally been released. You can catch the scoop and the immediate download links on the CodeRush blog (as well as some installation notes here). But…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CodeRush 2.0 First Impressions - A Nice Surprise By Roy Osherove June 18, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Visual Studio](https://osherove.com/blog/category/visual-studio) **Historical article** · Originally published June 18, 2006; technical details may be outdated. [Through Kim's blog](http://blogs.microsoft.co.il/blogs/kim/archive/2006/06/18/733.aspx), I've found out that CodeRush and Refactor 2.0 have finally been released. You can catch the [scoop and the immediate download links on the CodeRush blog](http://community.devexpress.com/blogs/ctodx/archive/2006/06/16/149.aspx) (as well as some [installation notes](http://community.devexpress.com/blogs/ctodx/archive/2006/06/17/152.aspx) here). But the most important thing here is that th[ey've also released a short video showing some of the new features](http://www.devexpress.com/Products/NET/CodeRush/Trainings/CodeRush2Intro/CodeRush2Intro.html). The main interesting feature is the "Discoverability panel" which shows you the shortcuts you can use at each and every step while inside the coding window. This is wonderful, and I can certainly see this being a very big help for people in making the first (and advanced ) steps with CodeRush. In fact, that panel really feels like it should have been implemented via some special "Intellisense" list (like Resharper does) because it practically changes on every letter that you type. Kudos to DevExpress. It looks like they found a good way to bridge the big learning curve that's needed to start using CodeRush effectively. I think this will give the Resharper folks a good competition, and I'm personally going to try it for the next week or so and see how it feels. [Reharper](http://www.jetbrains.com/resharper/) also has a learning curve, and version 2.0 of Resharper tries to fix this (for the Refactoring functionality at least) by introducing a Ctrl-Shift-R shortcut which shows an intellisense list of all refactorings available at the point your caret is on with their shortcuts (yep, it's their own version of a discoverability panel, but it needs its own shortcut, so it's hard to find it..) It's a step in the right direction, but I think in this case CodeRush will win out in discoverability. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jul 19, 2006 ### [Regulazy Facts](https://osherove.com/blog/2006/7/19/regulazy-facts.html) - Jun 18, 2006 ### [Control Google Maps by Tilting your ThinkPad](https://osherove.com/blog/2006/6/18/control-google-maps-by-tilting-your-thinkpad.html) - Jun 17, 2006 ### [\[Cool Tool\] CodeSmart 2007 for VB6 - The Killer Addin for VB6](https://osherove.com/blog/2006/6/17/cool-tool-codesmart-2007-for-vb6-the-killer-addin-for-vb6.html) - Jun 15, 2006 ### [\[Cool Tool\]Unlocker : Unlock Files/Folders without going nuts](https://osherove.com/blog/2006/6/15/cool-toolunlocker-unlock-filesfolders-without-going-nuts.html) --- title: "[Cool Tool] CodeSmart 2007 for VB6 - The Killer Addin for VB6" url: "https://osherove.com/blog/2006/6/17/cool-tool-codesmart-2007-for-vb6-the-killer-addin-for-vb6.md" canonical: "https://osherove.com/blog/2006/6/17/cool-tool-codesmart-2007-for-vb6-the-killer-addin-for-vb6.html" published: "2006-06-17T19:25:00" updated: "2006-06-17T19:25:00" tags: ["Cool Tools", "General Software Devel...", "Visual Studio"] author: "Roy Osherove" description: "The guys at AxTools are at it again, with CodeSmart 2007 for VB6 . If you still do VB6 development (and I know plenty of places that still do (mostly because they have no choice), this is the tool you'd want to get. The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool Tool\] CodeSmart 2007 for VB6 - The Killer Addin for VB6 By Roy Osherove June 17, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Visual Studio](https://osherove.com/blog/category/visual-studio) **Historical article** · Originally published June 17, 2006; technical details may be outdated. The guys at [AxTools](http://www.axtools.com/) are at it again, with [CodeSmart 2007 for VB6](http://www.axtools.com/cs.htm). If you still do VB6 development (and I know plenty of places that still do (mostly because they have no choice), this is **the** tool you'd want to get. The features it adds to the VB6 IDE are too many to list here, but you can see [a good summary on the product page](http://www.axtools.com/cs.htm). I've used this addin since it first came out, and still am one of its biggest supporters. It outshines any other addin for VB6 I know with features and power. The only thing it \*does not\* have is Refactoring support, which is the top wish list for VB6 on my mind. So what \*does\* it have? Perhaps this little snapshot will help convince you that it takes VB6 to the next level, almost VS 2005-like with tabbed documents, auto-text (aka snippets), code navigator and plenty plenty more: [![](https://osherove.com/img/wb/13152222_www.axtools.com_products_showcs2k3vb_Integration.gif)](http://www.axtools.com/cs.htm) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 18, 2006 ### [Control Google Maps by Tilting your ThinkPad](https://osherove.com/blog/2006/6/18/control-google-maps-by-tilting-your-thinkpad.html) - Jun 18, 2006 ### [CodeRush 2.0 First Impressions - A Nice Surprise](https://osherove.com/blog/2006/6/18/coderush-20-first-impressions-a-nice-surprise.html) - Jun 15, 2006 ### [\[Cool Tool\]Unlocker : Unlock Files/Folders without going nuts](https://osherove.com/blog/2006/6/15/cool-toolunlocker-unlock-filesfolders-without-going-nuts.html) - Jun 11, 2006 ### [\[Cool Tool\] ASP.NET Enterprise Manager on Steroids: Ajax, Multiple DB types, And open source!](https://osherove.com/blog/2006/6/11/cool-tool-aspnet-enterprise-manager-on-steroids-ajax-multipl.html) --- title: "[Cool Tool]Unlocker : Unlock Files/Folders without going nuts" url: "https://osherove.com/blog/2006/6/15/cool-toolunlocker-unlock-filesfolders-without-going-nuts.md" canonical: "https://osherove.com/blog/2006/6/15/cool-toolunlocker-unlock-filesfolders-without-going-nuts.html" published: "2006-06-15T06:42:00" updated: "2006-06-15T06:42:00" tags: ["ASP.NET", "Cool Tools", "General Software Devel..."] author: "Roy Osherove" description: "Jean Paul Boodhoo has a nice tidbit about a new free tool called Unlocker that helps detect and actually unlock \"locked\" files in Windows. You know, those ones that seem to be held by some unknown entity on your…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool Tool\]Unlocker : Unlock Files/Folders without going nuts By Roy Osherove June 15, 2006 In [ASP.NET](https://osherove.com/blog/category/asp-net), [Cool Tools](https://osherove.com/blog/category/cool-tools), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 15, 2006; technical details may be outdated. [Jean Paul Boodhoo has a nice tidbit](http://www.jpboodhoo.com/blog/UnlockingFilesWithEase.aspx) about a new [free tool called Unlocker that helps detect and actually unlock](http://ccollomb.free.fr/unlocker/) "locked" files in Windows. You know, those ones that seem to be held by some unknown entity on your machine. [Process Explorer](http://www.sysinternals.com/Utilities/ProcessExplorer.html) is good to find that out, but [Unlocker](http://ccollomb.free.fr/unlocker/) seems to have not only  better usability for this task (Simply right click on the file/folder and select "Unlocker"), it actually has more abilities and ways to make a file/folder unlocked (such as unloading a dll, which ProcessExplorer does not do, I believe). ![](https://osherove.com/img/wb/cf1bcf71_ccollomb.free.fr_unlocker_tutorial1.png) Jean Paul adds: _"It actually gets better though. If you try to delete a folder that has a lock on it, unlocker will automatically pop up and allow you to perform an unlock or a kill process._ _"_ Cool tool Indeed! ## More in ASP.NET [All posts in ASP.NET](https://osherove.com/blog/category/asp-net) - Oct 14, 2006 ### [Introducing Perf+ , A better perfmon](https://osherove.com/blog/2006/10/14/introducing-perf-a-better-perfmon.html) - Jun 20, 2006 ### [Four cool books to give away at today's C# user group](https://osherove.com/blog/2006/6/20/four-cool-books-to-give-away-at-todays-c-user-group.html) - Jun 11, 2006 ### [\[Cool Tool\] ASP.NET Enterprise Manager on Steroids: Ajax, Multiple DB types, And open source!](https://osherove.com/blog/2006/6/11/cool-tool-aspnet-enterprise-manager-on-steroids-ajax-multipl.html) - May 22, 2006 ### [Review - Automise: Automise almost anything](https://osherove.com/blog/2006/5/22/review-automise-automise-almost-anything.html) --- title: "Favorite Windows Keyboard Shortcuts" url: "https://osherove.com/blog/2006/6/14/favorite-windows-keyboard-shortcuts.md" canonical: "https://osherove.com/blog/2006/6/14/favorite-windows-keyboard-shortcuts.html" published: "2006-06-14T22:32:00" updated: "2006-06-14T22:32:00" tags: ["General Software Devel..."] author: "Roy Osherove" description: "Jon Galloway has some cool shortcuts for windows , some of which I hadn't considered before: The System Tray (oops, I mean Notification Tray) is a bit tough to get to if you don't know the trick, and it seems like…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Favorite Windows Keyboard Shortcuts By Roy Osherove June 14, 2006 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 14, 2006; technical details may be outdated. Jon Galloway [has some cool shortcuts for windows](https://weblogs.asp.net/jgalloway/archive/2006/06/14/Mouseless-Computing.aspx) , some of which I hadn't considered before: _The System Tray (oops, I mean Notification Tray) is a bit tough to get to if you don't know the trick, and it seems like everything wants to minimize there nowadays.__ **Win-B / Enter to show hidden icons (if necessary) / Right arrow / Right-click button (or Shift-F10)**_ _Quick Launch also requires some keyboard trickery:__ **WinKey (press and release) / Tab / Right arrow**_ Jon is also very right in pointing to the "Context Menu" keyboard key which many MS keyboards have. It saves going to the mouse a lot (I use it to fix typos in word a lot!) Some favorites of my own: - Ctrl-Shift-Esc : Open Task Manager - Alt-Space, then (X - Maximize windows, N -Minimize window) - WinKey-M : Show Desktop - WinKey- R : Open the "Run" Dialog - WinKey - L: Lock windows or Switch user (depends on OS) - You know Alt-Tab, but did you know about Alt-**Shift**\-Tab?? - Same goes for Ctrl-**Shift**\-Tab (goes backwards) - Ctrl-\\   - Delete the last word (in many apps includin Explorer, and the post editor for this blog) ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Jun 17, 2006 ### [\[Cool Tool\] CodeSmart 2007 for VB6 - The Killer Addin for VB6](https://osherove.com/blog/2006/6/17/cool-tool-codesmart-2007-for-vb6-the-killer-addin-for-vb6.html) - Jun 15, 2006 ### [\[Cool Tool\]Unlocker : Unlock Files/Folders without going nuts](https://osherove.com/blog/2006/6/15/cool-toolunlocker-unlock-filesfolders-without-going-nuts.html) - Jun 14, 2006 ### [Interface Naming - Anything But Java's Standard, Please](https://osherove.com/blog/2006/6/14/interface-naming-anything-but-javas-standard-please.html) - Jun 13, 2006 ### [Fixing "mapi32.dll is an invalid Extended MAPI Library" and "Mail is not installed on your system" on Windows Server 2003 with Exchange](https://osherove.com/blog/2006/6/13/fixing-quotmapi32dll-is-an-invalid-extended-mapi-libraryquot.html) --- title: "Mapping CLR, Winfx and .NET Framework 3.0 upcoming versions" url: "https://osherove.com/blog/2006/6/14/mapping-clr-winfx-and-net-framework-30-upcoming-versions.md" canonical: "https://osherove.com/blog/2006/6/14/mapping-clr-winfx-and-net-framework-30-upcoming-versions.html" published: "2006-06-14T22:20:00" updated: "2006-06-14T22:20:00" tags: [".NET", "WinFX"] author: "Roy Osherove" description: "The announcement of .NET Framework 3.0 previously dubbed WinFX is definitely confusing. Microsoft is trying to plug some of the holes but isn't doing so well, which is why you'll start seeing all these random blog posts…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mapping CLR, Winfx and .NET Framework 3.0 upcoming versions By Roy Osherove June 14, 2006 In [.NET](https://osherove.com/blog/category/net), [WinFX](https://osherove.com/blog/category/winfx) **Historical article** · Originally published June 14, 2006; technical details may be outdated. The announcement of .NET Framework 3.0 previously dubbed WinFX is definitely confusing. Microsoft is trying to plug some of the holes but isn't doing so well, which is why you'll start seeing all these random blog posts popping out trying to explain the chaos. This is one of them. Here's the latest word from Joe Binder of the VB Team, and you can also read [Brad Abrams' Post on the topic](http://blogs.msdn.com/brada/archive/2006/06/11/627128.aspx) which clear up a lot. Here’s a tabular view of what’scoming down the pipe, and when.  Highlighted items ship together.

Product/Deliverable

Timeframe

Language Ver.

CLR Ver.

.NET FX 2.0

Nov 2005

VB 8.0/C# 2.0

2.0

VS 2005

Nov 2005

VB 8.0/C# 2.0

2.0

FX 3.0 (Formerly “WinFX”; Includes Avalon, Indigo, Workflow)

Windows Vista RTM (2006)

VB 8.0/C# 2.0

2.0

Visual Studio “Orcas”

2007

VB 9.0/C# 3.0

2.0

FX 3.5 (LINQ)

2007

VB 9.0/C# 3.0

2.0

Here’s some information on what each version includes: ·         **FX 2.0**: Includes CLR 2.0—generics, etc.  Shipped with VS 2005; not much to say here. ·         **FX 3.0** **\= FX 2.0 + WPF (Avalon), WCF (Indigo), WF (Workflow)**.  In other words, FX 3.0 is a set of assemblies that has been added to FX 2.0; it  only includes service pack-level fixes to existing (FX 2.0) assemblies or the existing languages (VB 8.0).  FX 3.0 is installed by default on Windows Vista (and is therefore bound to the Vista RTM date), and available for download on down-level platforms.  There currently is not a supported version of Visual Studio that targets FX 3.0, however; you can download extensions to VS 2005 that provides some rudimentary support for FX 3.0 at [http://msdn.microsoft.com/windowsvista/downloads/products/getthebeta/default.aspx](http://msdn.microsoft.com/windowsvista/downloads/products/getthebeta/default.aspx "http://msdn.microsoft.com/windowsvista/downloads/products/getthebeta/default.aspx"). ·         **FX 3.5 = FX 3.0 + LINQ.**  Basically, you can think of FX 3.5 as the new compilers, tools, and assemblies required to support LINQ.  Again, FX 3.5 includes new assemblies (e.g., System.Query.dll) and service-pack-level fixes to existing assemblies.    FX 3.5 will ship with VS “Orcas”. An important thing to note about the above versions of the FX is that they all run on CLR 2.0, which shipped in 2005. Unlike previous versions of VS, VS “Orcas” will include the ability to build applications that target each of the above framework versions—FX 2.0, FX 3.0, and FX 3.5.  You’ll have the ability to specify what framework version the project should target when a project is created, opened for the first time in VS Orcas, and via the property pages.  Once a framework version is selected, references, IntelliSense, Object Browser, the Toolbox, etc will be modified such that references that aren’t available in the chosen target are filtered (grayed out, generally).  Some common questions… ·         **Will I be able to open my 2005 project in VS “Orcas” without upgrading it to FX 3.5?** _Yes.  Users will have the option to upgrade the project’s framework target the first time they open it in VS Orcas; however, upgrading will not be required_ ·         **Will I be able to open my 2005 project in VS “Orcas” then re-open it in VS 2005?** _No.  Once a project has been opened in VS “Orcas”, it cannot be subsequently opened in 2005._ ·         **Will I be able to use LINQ in my FX 2.0 project?** _No. LINQ requires assemblies that are only available in FX 3.5 projects._ ·         **If I already have FX 2.0 installed and my app requires FX 3.0, what do I need to install when I deploy my app?** _Because FX 3.0 is just an add-on pack of sorts for FX 3.0, you’ll only need to install the 3.0 Runtime Components, which have FX 2.0 as a pre-requisite._ Admittedly, this whole framework versioning scheme is pretty confusing…  so we’re trying to make the related user experience in VS opt-in: by default you’ll target the latest and greatest version of the FX 3.5 when you create a project and most of this will be transparent.  If you do need to target an earlier version, the option will be available.  We’ll certainly be interested in your feedback on the model when the first VS Orcas CTP is released. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 19, 2006 ### [A Simple Version Control Strategy Using Team System](https://osherove.com/blog/2006/6/19/a-simple-version-control-strategy-using-team-system.html) - Jun 18, 2006 ### [This week at the C# User group - Hardcore ASP.NET 2.0 \[Dan Amiga\]](https://osherove.com/blog/2006/6/18/this-week-at-the-c-user-group-hardcore-aspnet-20-dan-amiga.html) - Jun 14, 2006 ### [Interface Naming - Anything But Java's Standard, Please](https://osherove.com/blog/2006/6/14/interface-naming-anything-but-javas-standard-please.html) - Jun 11, 2006 ### [Resharper Vs. Refactor! and CodeRush - Let the games begin.](https://osherove.com/blog/2006/6/11/resharper-vs-refactor-and-coderush-let-the-games-begin.html) --- title: "Interface Naming - Anything But Java's Standard, Please" url: "https://osherove.com/blog/2006/6/14/interface-naming-anything-but-javas-standard-please.md" canonical: "https://osherove.com/blog/2006/6/14/interface-naming-anything-but-javas-standard-please.html" published: "2006-06-14T19:03:00" updated: "2006-06-14T19:03:00" tags: [".NET", "General Software Devel..."] author: "Roy Osherove" description: "Jeremy dislikes Interface names that being with 'I' (\"ISerializable\"..). Len Holgate disagrees with him , but likes to name his classes in a \"verb-noun\" fasion (\"IManageUsers\"). Personally, I'd much rather have \"I\" for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Interface Naming - Anything But Java's Standard, Please By Roy Osherove June 14, 2006 In [.NET](https://osherove.com/blog/category/net), [General Software Devel...](https://osherove.com/blog/category/general-software-devel) **Historical article** · Originally published June 14, 2006; technical details may be outdated. [Jeremy dislikes Interface names that being with 'I'](http://codebetter.com/blogs/jeremy.miller/archive/2006/04/26/143489.aspx) ("ISerializable"..). [Len Holgate disagrees with him](http://www.lenholgate.com/archives/000653.html), but likes to name his classes in a "verb-noun" fasion ("IManageUsers"). Personally, I'd much rather have "I" for interfaces. It makes the code much clearer. Having worked both in Java and C#, I find it very confusing in Java when I keep seeing class names, but I alwasy have this thought in the back of my head "maybe it's really an interface?". And so I have to keep hovering my mouse over the variable types to understand what they really are. To me, seeing "I" for a type, lets me know that this variable represents something abstract, which its implementation is changeable (I can cast it to other stuff, and send it as a representation of my own stuff). It lets me understand code which uses lots of dependency injection and realize just what I'm up against. As for how to name interfaces (the part after the "I"), I like to go with a different rule of thumb than Len's. I name my interfaces as to \*what can be done to them\*. So a class that implements them suddenly has more abilities to be performed through it. For example, "ISerializable" indicates that the class that implements it supports another operation performed on it. Len's example states he'd name something "**IManageUsers**". I'd rather call it "**IUserManager**" instead, since it is more in the realm of the real implementers of this interface ("**UserManager**", "**DBUserManager**" etc.) It's really a matter of taste and the standard your company employs, but whatever it is, I feel that Java makes it the hardest to comprehend what you're up against. For example, that interface in Java would have been called "UserManager" in the first place, leading to much uglier names such as "UserManagerImp". Ugh. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 18, 2006 ### [This week at the C# User group - Hardcore ASP.NET 2.0 \[Dan Amiga\]](https://osherove.com/blog/2006/6/18/this-week-at-the-c-user-group-hardcore-aspnet-20-dan-amiga.html) - Jun 14, 2006 ### [Mapping CLR, Winfx and .NET Framework 3.0 upcoming versions](https://osherove.com/blog/2006/6/14/mapping-clr-winfx-and-net-framework-30-upcoming-versions.html) - Jun 11, 2006 ### [Resharper Vs. Refactor! and CodeRush - Let the games begin.](https://osherove.com/blog/2006/6/11/resharper-vs-refactor-and-coderush-let-the-games-begin.html) - Jun 11, 2006 ### [Got an MSBuild-SikdeKick wish? Post it on Matan's blog!](https://osherove.com/blog/2006/6/11/got-an-msbuild-sikdekick-wish-post-it-on-matans-blog.html) --- title: "June @ Agile Israel (Feature Driven Development, Design For Testability)" url: "https://osherove.com/blog/2006/6/13/june-agile-israel-feature-driven-development-design-for-test.md" canonical: "https://osherove.com/blog/2006/6/13/june-agile-israel-feature-driven-development-design-for-test.html" published: "2006-06-13T13:44:00" updated: "2006-06-13T13:44:00" tags: ["Agile", "Agile Israel News", "Agile Related", "Team Agile News"] author: "Roy Osherove" description: "After a long time with no meetings at Agile Israel, I’d like to invite you to our next meeting which will take place on the 29 th of June (Thursday) at Microsoft Israel . As always, it is completely free to attend, so…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # June @ Agile Israel (Feature Driven Development, Design For Testability) By Roy Osherove June 13, 2006 In [Agile](https://osherove.com/blog/category/agile), [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published June 13, 2006; technical details may be outdated. After a long time with no meetings at Agile Israel, I’d like to invite you to our next meeting which will take place on the 29th of June (Thursday) at Microsoft Israel. As always, it is completely free to attend, so bring your friends and colleagues over if you think they’d be interested! You can learn more about the group in the temporary site: [www.AgileIsrael.com](http://www.agileisrael.com/) . See you there, Roy Osherove Founder, Agile Israel [www.TeamAgile.com](http://www.teamagile.com/) **Time**: June 29th, 18:00 (gathering at 17:30, we start at 18:00, no later). **Place**: Microsoft Israel 2 Hapnina St, Ra’anana (09) 7625-100 **Floor 0, Dekel Room** It is the new building across from Amdocs. After the first traffic circle, there is an area for (free) parking on the right. ### Agenda: 18:00 – 19:15: **Feature Driven Development** (Justin Angel) Break 15 minutes 19:30 – 20:45: **Design For Testability** (Roy Osherove) **20:45 Raffle:  3 Great books** for those who fill out evaluation forms ·          Test Driven Development By Example ·          Agile Project Management with Scrum ·          Extreme Programming Adventures in C# \+ Special little **Summer-related gift** to all participants of the group! #### Feature Driven Development _[Justin Josef Angel](http://www.justinangel.net/)_ You've already seen the light and you know that the less documentation we produce and the more open with the customer the better we all are. But you suffer from the bad image of "Cowboy coders" and "copy-paste-fix developers", each day when you get to the office you have to work hard to implement an agile methodology, the client doesn't know what agile is but when you say "we'll talk specifics later" he thinks it's a scum. And you know it could be better, there has to be a better way. Feature Driven-Development (FDD) is a wildly used & well-known agile methodology. FDD is best used on groups ranging from 10 developers to 500 developers. It's an enterprise-targeted real-life  agile methodology. FDD gives you the tools you need to make an agile difference where you work without having to make everyone leave their comfort zone. In fact, FDD can look (to the untrained eye) like an ordinary Waterfall process and doesn't even tell you how to code. FDD has a very unique format for Design & Analysis documents. in stand of 20,000 pages of useless documentation - get 40 great pages of small client-valued and testable features. FDD gives you a set of best practices and a process you can easily implement where you work. #### Design For Testability _[Roy Osherove](http://www.iserializable.com/)_ Unit Testing and Agile Methodologies seem to be the latest buzz in the software industry these days, but many people who actually try to Unit Test their application (whether new code or 'legacy' code) find out quickly that doing a good job can be tough if some thought about the code's design for testability is not considered. In this talk we'll discuss various methods of designing your APIs so that they are easy to test, how design patterns help, what 'evolving a design' really means in the context of Test Driven Development, and several techniques for approaching the task of unit testing "legacy code". Most importantly, we'll try to come up with the definition of a "testable" software system. #### Bio: **Justin-Josef Angel** has been working for the past five years in web development. The last three of which as a senior ASP.Net developer. For the past three years Justin-Josef Angel has worked & consulted on many .Net projects in various roles (consultant, Project manager, architect & Senior developer). He works and is active in multiple fields: Agile project development, ASP.Net, OOAD, Web 2.0, Management and Training. Justin-Josef Angel also owns the first Hebrew .Net blog www.JustinAngel.Net. At his blog he publishes technical Hebrew articles & webcasts for both new developers and experienced gurus. Justin-Josef Angel holds several industry certifications. He has been given the MVP title which is given to developers with extreme technical expertise and a willingness to share their knowledge. He also holds an MCSD certification.   You find can Justin-Josef Angel at the Hebrew .Net forums, Israeli .Net oriented websites & Microsoft Israel user groups. **Roy Osherove** is the Principal of Team Agile - An Israel based mentoring and training company focusing on Agile development methods and tools, with a strong technical focus for developers. Roy speaks at national and international conferences around the world, including Microsoft's TechEd and DevDays. You can read his thoughts about .NET and Agile Development at his weblog: ISerializable.com , and in articles he publishes online and on MSDN Magazine. Roy is also the Founder of the Agile Israel user's group – meeting monthly to discuss topics on Agile development, process improvement and implementing change in organizations. Roy has been involved in the software industry for a little over 10 years now. For 5 of those, he's worked as a consultant for small and large organizations in Israel and Europe, focusing on smarter development methods, architecture, methodology training and developer productivity. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 29, 2006 ### [See you at Agile Israel today!](https://osherove.com/blog/2006/6/29/see-you-at-agile-israel-today.html) - Jun 28, 2006 ### [NSPec - The evolution of unit tests into behavior description?](https://osherove.com/blog/2006/6/28/nspec-the-evolution-of-unit-tests-into-behavior-description.html) - Jun 11, 2006 ### [Architecting in an Agile World - My ArcCast with Ron Jabobs in online](https://osherove.com/blog/2006/6/11/architecting-in-an-agile-world-my-arccast-with-ron-jabobs-in.html) - Jun 7, 2006 ### [News: TestDriven, SideKick, Expression Evaluators and Security to boot](https://osherove.com/blog/2006/6/7/news-testdriven-sidekick-expression-evaluators-and-security.html) --- title: "Fixing \"mapi32.dll is an invalid Extended MAPI Library\" and \"Mail is not installed on your system\" on Windows Server 2003 with Exchange" url: "https://osherove.com/blog/2006/6/13/fixing-quotmapi32dll-is-an-invalid-extended-mapi-libraryquot.md" canonical: "https://osherove.com/blog/2006/6/13/fixing-quotmapi32dll-is-an-invalid-extended-mapi-libraryquot.html" published: "2006-06-13T11:26:00" updated: "2006-06-13T11:26:00" tags: ["General Software Devel...", "Off Topic"] author: "Roy Osherove" description: "I get these annoying message on w Windows 2003 Server with Exchange Installed, when trying to do mail merge or send do as attachement from within Word: \"mapi32.dll is an invalid Extended MAPI Library Mail is not…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Fixing "mapi32.dll is an invalid Extended MAPI Library" and "Mail is not installed on your system" on Windows Server 2003 with Exchange By Roy Osherove June 13, 2006 In [General Software Devel...](https://osherove.com/blog/category/general-software-devel), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 13, 2006; technical details may be outdated. I get these annoying message on w Windows 2003 Server with Exchange Installed, when trying to do mail merge or send do as attachement from within Word: "mapi32.dll is an invalid Extended MAPI Library Mail is not installed on your system" I looked everywhere how to fix it, but it turns out there's a really easy fix for it. From the [TomorrowMan](http://www.tomorrowman.com/?p=4): "This appears to be because the Exchange 2003 version of mapi32.dll located in c:\\windows\\system32\\ has overwritten the Office 2003 version of MAPI32.dll and they are different. To fix this problem I just took **a copy of mapi32.dll from another Office 2003 installation and placed it in C:\\Program Files\\Microsoft Office\\OFFICE11\\** because it seems office will look there first, and voila it now works. " Works like a charm. ## More in General Software Devel... [All posts in General Software Devel...](https://osherove.com/blog/category/general-software-devel) - Jun 14, 2006 ### [Favorite Windows Keyboard Shortcuts](https://osherove.com/blog/2006/6/14/favorite-windows-keyboard-shortcuts.html) - Jun 14, 2006 ### [Interface Naming - Anything But Java's Standard, Please](https://osherove.com/blog/2006/6/14/interface-naming-anything-but-javas-standard-please.html) --- title: "[Cool Tool] ASP.NET Enterprise Manager on Steroids: Ajax, Multiple DB types, And open source!" url: "https://osherove.com/blog/2006/6/11/cool-tool-aspnet-enterprise-manager-on-steroids-ajax-multipl.md" canonical: "https://osherove.com/blog/2006/6/11/cool-tool-aspnet-enterprise-manager-on-steroids-ajax-multipl.html" published: "2006-06-11T22:42:00" updated: "2006-06-11T22:42:00" tags: ["ASP.NET", "Cool Tools", "SQL Server"] author: "Roy Osherove" description: "What would the ASP.NET Enterprise Manager look like with Ajax Support? The VisualWebGui guys have a clue. They built a new one from scratch with their cool technology for making web from winforms, and they even made it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool Tool\] ASP.NET Enterprise Manager on Steroids: Ajax, Multiple DB types, And open source! By Roy Osherove June 11, 2006 In [ASP.NET](https://osherove.com/blog/category/asp-net), [Cool Tools](https://osherove.com/blog/category/cool-tools), [SQL Server](https://osherove.com/blog/category/sql-server) **Historical article** · Originally published June 11, 2006; technical details may be outdated. What would the ASP.NET Enterprise Manager look like with Ajax Support? The [VisualWebGui](http://www.visualwebgui.com/) guys have a clue. [They built a new one from scratch](http://sourceforge.net/projects/vwg-ent-man) with their cool technology for making web from winforms, and they even made it work with a database provider model, so you can manage many database types with it. On top of that, it's open source. What more can you ask for? Well, A screenshot! ![](https://osherove.com/img/ext/www.visualwebgui.com_padfiles_vwg-ent-man.jpg)[](http://www.visualwebgui.com/padfiles/vwg-ent-man.jpg) "Visual WebGui Enterprise Manager is a new open source database administration tool that was developed with Visual WebGui and is based on Microsoft's "Enterprise Manager". Presenting a familiar interface for administrators and developers the application brings the power of the enterprise manger to the web. The application has extended the "Enterprise Manager" with a provider mechanism which will enable managing multi database types in a unified UI. The application is actually a natural evolution of the popular "ASP.NET enterprise manager" and provides the same capabilities and more but with a fully AJAX enabled UI and multiple database type capabilities." SourceForge: [http://sourceforge.net/projects/vwg-ent-man](http://sourceforge.net/projects/vwg-ent-man) ## More in ASP.NET [All posts in ASP.NET](https://osherove.com/blog/category/asp-net) - Jun 20, 2006 ### [Four cool books to give away at today's C# user group](https://osherove.com/blog/2006/6/20/four-cool-books-to-give-away-at-todays-c-user-group.html) - Jun 15, 2006 ### [\[Cool Tool\]Unlocker : Unlock Files/Folders without going nuts](https://osherove.com/blog/2006/6/15/cool-toolunlocker-unlock-filesfolders-without-going-nuts.html) - May 22, 2006 ### [Review - Automise: Automise almost anything](https://osherove.com/blog/2006/5/22/review-automise-automise-almost-anything.html) --- title: "Architecting in an Agile World - My ArcCast with Ron Jabobs in online" url: "https://osherove.com/blog/2006/6/11/architecting-in-an-agile-world-my-arccast-with-ron-jabobs-in.md" canonical: "https://osherove.com/blog/2006/6/11/architecting-in-an-agile-world-my-arccast-with-ron-jabobs-in.html" published: "2006-06-11T07:29:00" updated: "2006-06-11T07:29:00" tags: ["Agile", "Architecture"] author: "Roy Osherove" description: "My ArcCast with Ron Jacobs, Recorded at TechEd Israel, is now online! It was really fun sitting there in front of a crowd and just talking with Ron. I broke my teeth a little speaking english, but it feels OK, listening…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Architecting in an Agile World - My ArcCast with Ron Jabobs in online By Roy Osherove June 11, 2006 In [Agile](https://osherove.com/blog/category/agile), [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published June 11, 2006; technical details may be outdated. My ArcCast with Ron Jacobs, Recorded at TechEd Israel, is now online! It was really fun sitting there in front of a crowd and just talking with Ron. I broke my teeth a little speaking english, but it feels OK, listening to it after the fact. ##### Listen to it: [ARCast - Architecting in an Agile World](http://channel9.msdn.com/ShowPost.aspx?PostID=200827#200827) Have you ever thought about how the world is agile? That is to say it is a dynamic place; nothing is constant except for change. This can be very frustrating to say the least. If the whole world would just stop spinning for a moment perhaps we could build software that would fit it but just when you get things going--requirements change, people come and go, business rules change etc. it can be very frustrating. Architects don’t need to be frustrated by this change, no, you can learn to adapt to this agile world according to my guest today Roy Osherove. So listen up and learn something. ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 28, 2006 ### [NSPec - The evolution of unit tests into behavior description?](https://osherove.com/blog/2006/6/28/nspec-the-evolution-of-unit-tests-into-behavior-description.html) - Jun 13, 2006 ### [June @ Agile Israel (Feature Driven Development, Design For Testability)](https://osherove.com/blog/2006/6/13/june-agile-israel-feature-driven-development-design-for-test.html) - Jun 7, 2006 ### [News: TestDriven, SideKick, Expression Evaluators and Security to boot](https://osherove.com/blog/2006/6/7/news-testdriven-sidekick-expression-evaluators-and-security.html) - Jul 25, 2005 ### [\[Article\] The Test Feasibility Matrix](https://osherove.com/blog/2005/7/25/article-the-test-feasibility-matrix.html) --- title: "Resharper Vs. Refactor! and CodeRush - Let the games begin." url: "https://osherove.com/blog/2006/6/11/resharper-vs-refactor-and-coderush-let-the-games-begin.md" canonical: "https://osherove.com/blog/2006/6/11/resharper-vs-refactor-and-coderush-let-the-games-begin.html" published: "2006-06-11T01:06:00" updated: "2006-06-11T01:06:00" tags: [".NET", "Visual Studio"] author: "Roy Osherove" description: "It feels like the VS.NET Add-in wars are coming this way again, and I'm glad. Here's what DevExpress had to say on this unofficial blog post : \"Just as a taster, how about these: Refactor! Pro 2.0 has more than twice as…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Resharper Vs. Refactor! and CodeRush - Let the games begin. By Roy Osherove June 11, 2006 In [.NET](https://osherove.com/blog/category/net), [Visual Studio](https://osherove.com/blog/category/visual-studio) **Historical article** · Originally published June 11, 2006; technical details may be outdated. It feels like the VS.NET Add-in wars are coming this way again, and I'm glad. Here's what DevExpress had to say on [this unofficial blog post](http://community.devexpress.com/blogs/ctodx/archive/2006/06/08/132.aspx): "Just as a taster, how about these: Refactor! Pro 2.0 has more than twice as many refactorings as ReSharper 2.0; CodeRush 2.0 has a revolutionary next-generation template engine that delivers a significant boost in power, productivity and efficiency" I've been using [Resharper 2.0](http://www.jetbrains.com/resharper/) (which just [opened a blog](http://blogs.jetbrains.com/dotnet/) too)for the past month and it's been nothing but pure pleasure to keep finding out niftly little helper features(XML Refactoring and Schema help). As it stands, for me [CodeRush](http://www.devexpress.com/Products/NET/CodeRush/) \+ [Refactor Pro!](http://www.devexpress.com/Products/NET/Refactor/) have Nothing on Resharper except nice graphics and a more confusing set of options than Microsoft Office.  I'd love for DevExpress to change my mind on this. I think they could, given the amount of Refactorings. But it doesn't end there. The 2nd best feature about Resharper is the navigation Abilities - finding a class or a file easily, global intellisense (not requiring using, and adds it automatically) is another one. Add these two, and you just might win my heart, [DevExpress](http://www.devexpress.com/). Bring it on! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 14, 2006 ### [Mapping CLR, Winfx and .NET Framework 3.0 upcoming versions](https://osherove.com/blog/2006/6/14/mapping-clr-winfx-and-net-framework-30-upcoming-versions.html) - Jun 14, 2006 ### [Interface Naming - Anything But Java's Standard, Please](https://osherove.com/blog/2006/6/14/interface-naming-anything-but-javas-standard-please.html) - Jun 11, 2006 ### [Got an MSBuild-SikdeKick wish? Post it on Matan's blog!](https://osherove.com/blog/2006/6/11/got-an-msbuild-sikdekick-wish-post-it-on-matans-blog.html) - Jun 7, 2006 ### [News: TestDriven, SideKick, Expression Evaluators and Security to boot](https://osherove.com/blog/2006/6/7/news-testdriven-sidekick-expression-evaluators-and-security.html) --- title: "Got an MSBuild-SikdeKick wish? Post it on Matan's blog!" url: "https://osherove.com/blog/2006/6/11/got-an-msbuild-sikdekick-wish-post-it-on-matans-blog.md" canonical: "https://osherove.com/blog/2006/6/11/got-an-msbuild-sikdekick-wish-post-it-on-matans-blog.html" published: "2006-06-11T00:16:00" updated: "2006-06-11T00:16:00" tags: [".NET", ".Net 2.0", "Team System", "Visual Studio"] author: "Roy Osherove" description: "Matan Holtzer is one of the guys behind the new MSBuild SideKick , which is essentialy a visual editor for editing MSBuild and Team Build files instead of editing raw XML (and a tool like this comes out only now??). His…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Got an MSBuild-SikdeKick wish? Post it on Matan's blog! By Roy Osherove June 11, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Team System](https://osherove.com/blog/category/team-system), [Visual Studio](https://osherove.com/blog/category/visual-studio) **Historical article** · Originally published June 11, 2006; technical details may be outdated. [Matan Holtzer](http://blogs.microsoft.co.il/blogs/tfsidekicks/) is one of the guys behind the new [MSBuild SideKick](http://www.attrice.info/msbuild/), which is essentialy a visual editor for editing MSBuild and Team Build files instead of editing raw XML (and a tool like this comes out only now??). His blog will focus, among other things on SideKick, so if you have any complaints like these, queries or wishes, it's time to ping him on the blog and comment! ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 14, 2006 ### [Interface Naming - Anything But Java's Standard, Please](https://osherove.com/blog/2006/6/14/interface-naming-anything-but-javas-standard-please.html) - Jun 11, 2006 ### [Resharper Vs. Refactor! and CodeRush - Let the games begin.](https://osherove.com/blog/2006/6/11/resharper-vs-refactor-and-coderush-let-the-games-begin.html) - Jun 7, 2006 ### [News: TestDriven, SideKick, Expression Evaluators and Security to boot](https://osherove.com/blog/2006/6/7/news-testdriven-sidekick-expression-evaluators-and-security.html) - May 29, 2006 ### [Review: Shell MegaPack - Windows Explorer GUI Replacement Controls](https://osherove.com/blog/2006/5/29/review-shell-megapack-windows-explorer-gui-replacement-contr.html) --- title: "News: TestDriven, SideKick, Expression Evaluators and Security to boot" url: "https://osherove.com/blog/2006/6/7/news-testdriven-sidekick-expression-evaluators-and-security.md" canonical: "https://osherove.com/blog/2006/6/7/news-testdriven-sidekick-expression-evaluators-and-security.html" published: "2006-06-07T06:37:00" updated: "2006-06-07T06:37:00" tags: [".NET", "Agile", "Agile Related", "Team System"] author: "Roy Osherove" description: "I've gathered some interesting links posted only yesterday, so I don't forget (and neither should you). Jamie has a couple of posts related to TestDriven.NET you should be aware of TestDriven problem with Building…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # News: TestDriven, SideKick, Expression Evaluators and Security to boot By Roy Osherove June 7, 2006 In [.NET](https://osherove.com/blog/category/net), [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Team System](https://osherove.com/blog/category/team-system) **Historical article** · Originally published June 7, 2006; technical details may be outdated. I've gathered some interesting links posted only yesterday, so I don't forget (and neither should you). Jamie has a couple of posts related to TestDriven.NET you should be aware of - [TestDriven problem with Building ASP.NET 2.0 Dependencies](https://weblogs.asp.net/nunitaddin/archive/2006/06/06/ASP.NET-2.0-Web-Sites-and-Project-Dependencies.aspx) with workaround - [TestDriven.NET and Vista](https://weblogs.asp.net/nunitaddin/archive/2006/06/05/Running-TestDriven.Net-on-Vista.aspx) - [Justin just posted about "SideKick" for MSBuild](http://blogs.microsoft.co.il/blogs/justinangel/archive/2006/06/06/627.aspx) \- UI for editing MSBuild files which takes some of the pain out of editing those darn XML files for MSBuild. I mean, it totally sucks not to have a GUI, and this is currently the best GUI solution for it. [GO download it](http://www.attrice.info/msbuild/index.htm). It's free. - [Edgar points](https://weblogs.asp.net/esanchez/archive/2006/06/06/C_2300_-Expression-Evaluators.aspx) to a full list of a very geeky set articles by [Chuck Jazdzewski](http://www.removingalldoubt.com/) explaining the various patterns and ways there are of implementing an expression evaluator in a language. Meaningless for most of us, but hypnotic if you're an ultra geek. In fact, I suspect most of us have thought about trying to implement one of these at one point or another, and ended up using the VB Scripting control or something of that nature. - [Ohad posts a little part](http://blogs.microsoft.co.il/blogs/ohad/archive/2006/06/07/631.aspx) from the very good [Security User Group meeting](http://www.microsoft.com/israel/events/default.aspx?event=securedev) we attended last night by Nimrod Luria. I hope to post some of my notes from that meeting as well. It was a good meeting and I recommend everyone should attend the next meeting as well. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 11, 2006 ### [Resharper Vs. Refactor! and CodeRush - Let the games begin.](https://osherove.com/blog/2006/6/11/resharper-vs-refactor-and-coderush-let-the-games-begin.html) - Jun 11, 2006 ### [Got an MSBuild-SikdeKick wish? Post it on Matan's blog!](https://osherove.com/blog/2006/6/11/got-an-msbuild-sikdekick-wish-post-it-on-matans-blog.html) - May 29, 2006 ### [Review: Shell MegaPack - Windows Explorer GUI Replacement Controls](https://osherove.com/blog/2006/5/29/review-shell-megapack-windows-explorer-gui-replacement-contr.html) - May 22, 2006 ### [Steve Kelly on Software Factories: "It's worth the effort"](https://osherove.com/blog/2006/5/22/steve-kelly-on-software-factories-quotits-worth-the-effortqu.html) --- title: "Review: Shell MegaPack - Windows Explorer GUI Replacement Controls" url: "https://osherove.com/blog/2006/5/29/review-shell-megapack-windows-explorer-gui-replacement-contr.md" canonical: "https://osherove.com/blog/2006/5/29/review-shell-megapack-windows-explorer-gui-replacement-contr.html" published: "2006-05-29T23:35:00" updated: "2006-05-29T23:35:00" tags: [".NET", ".Net 2.0", "Product Reviews", "Windows Forms"] author: "Roy Osherove" description: "This week I’m happy to put up an ad and review for Shell MegaPack by SSWare . I’ve used parts of Shell MegaPack by SSWare in a couple of small projects I did(Windows Forms), and was wonderfully surprised to find their…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Review: Shell MegaPack - Windows Explorer GUI Replacement Controls By Roy Osherove May 29, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Product Reviews](https://osherove.com/blog/category/product-reviews), [Windows Forms](https://osherove.com/blog/category/windows-forms) **Historical article** · Originally published May 29, 2006; technical details may be outdated. This week I’m happy to put up an ad and review for [Shell MegaPack](http://www.ssware.com/megapack.htm) by [SSWare](http://www.ssware.com/). I’ve used parts of [Shell MegaPack](http://www.ssware.com/megapack.htm) by [SSWare](http://www.ssware.com/) in a couple of small projects I did(Windows Forms), and was wonderfully surprised to find their controls fully featured, easy to use and customize and  powerful in terms of abilities. Their Windows Explorer GUI replacement Controls are the best I’ve seen on the market and can definitely help in making the Windows File system a part of your applications. [![](https://osherove.com/img/wb/3ce83be4_www.ssware.com_images_megapack.gif)](http://www.ssware.com/megapack.htm) Apart from some minor annoyances (like [this one](http://www.ssware.com/support/viewtopic.php?t=291) which I had to find the hard way) and problems with earlier builds of VS 2005 (like [this one](http://www.ssware.com/support/viewtopic.php?t=297)), these controls work almost flawlessly, and are a mature product(version 7.1 already) to be used in real world applications. **Overall mark: 9.0**. Great Product. As an aside, I’ve also gotten a chance to use their excellent [EZShellExtensions.Net](http://www.ssware.com/ezshell/ezshell.htm) product line, which helps in hooking those special file system events, and these guys know what they are doing. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 11, 2006 ### [Got an MSBuild-SikdeKick wish? Post it on Matan's blog!](https://osherove.com/blog/2006/6/11/got-an-msbuild-sikdekick-wish-post-it-on-matans-blog.html) - Jun 7, 2006 ### [News: TestDriven, SideKick, Expression Evaluators and Security to boot](https://osherove.com/blog/2006/6/7/news-testdriven-sidekick-expression-evaluators-and-security.html) - May 22, 2006 ### [Steve Kelly on Software Factories: "It's worth the effort"](https://osherove.com/blog/2006/5/22/steve-kelly-on-software-factories-quotits-worth-the-effortqu.html) - May 22, 2006 ### [Review - Automise: Automise almost anything](https://osherove.com/blog/2006/5/22/review-automise-automise-almost-anything.html) --- title: "Google Notebook - Would *Kill* RSS Feeds" url: "https://osherove.com/blog/2006/5/29/google-notebook-would-kill-rss-feeds.md" canonical: "https://osherove.com/blog/2006/5/29/google-notebook-would-kill-rss-feeds.html" published: "2006-05-29T00:22:00" updated: "2006-05-29T00:22:00" tags: ["Off Topic"] author: "Roy Osherove" description: "My Google Notebook is a very cool thing. Now, if it only had RSS feeds and the ability to set a domain... now - you'd have one hack of a blogging engine on your hands, wouldn't you?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Google Notebook - Would \*Kill\* RSS Feeds By Roy Osherove May 29, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 29, 2006; technical details may be outdated. [My Google Notebook](http://www.google.com/notebook/BDQZZSwoQis3DxrQh) is a very cool thing. Now, if it **only** had RSS feeds and the ability to set a domain... now - you'd have one hack of a blogging engine on your hands, wouldn't you? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 18, 2006 ### [\[Off Topic\] Welcome to Pallywood](https://osherove.com/blog/2006/6/18/off-topic-welcome-to-pallywood.html) - Jun 13, 2006 ### [Fixing "mapi32.dll is an invalid Extended MAPI Library" and "Mail is not installed on your system" on Windows Server 2003 with Exchange](https://osherove.com/blog/2006/6/13/fixing-quotmapi32dll-is-an-invalid-extended-mapi-libraryquot.html) - May 16, 2006 ### [BS Bingo - Making Dull Meetings Fun Again](https://osherove.com/blog/2006/5/16/bs-bingo-making-dull-meetings-fun-again.html) - May 14, 2006 ### [Trend: Who works the hardest and knows the least?](https://osherove.com/blog/2006/5/14/trend-who-works-the-hardest-and-knows-the-least.html) --- title: "[Cool Tool] Free Intellisense for SQL Query Analyzer!" url: "https://osherove.com/blog/2006/5/22/cool-tool-free-intellisense-for-sql-query-analyzer.md" canonical: "https://osherove.com/blog/2006/5/22/cool-tool-free-intellisense-for-sql-query-analyzer.html" published: "2006-05-22T21:45:00" updated: "2006-05-22T21:45:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Thank you Red-Gate ! Their \"Intellisense for Query Analyzer\" is free for download until September 1st! \"No time-bombs, no restrictions\" This is a must have cool tool. Mucho Appreciato! [via ScottGu]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool Tool\] Free Intellisense for SQL Query Analyzer! By Roy Osherove May 22, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 22, 2006; technical details may be outdated. Thank you [Red-Gate](http://www.red-gate.com/)! Their "Intellisense for Query Analyzer" is [free for download](http://www.red-gate.com/products/SQL_Prompt/index.htm) until September 1st! _"No time-bombs, no restrictions"_ ![](https://osherove.com/img/wb/ec014a69_www.red-gate.com_products_SQL_Prompt_Images_SQL_Prompt_Animated_Image.gif) This is a **must have** cool tool. Mucho Appreciato! \[via ScottGu\] ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 15, 2006 ### [\[Cool Tool\]Unlocker : Unlock Files/Folders without going nuts](https://osherove.com/blog/2006/6/15/cool-toolunlocker-unlock-filesfolders-without-going-nuts.html) - Jun 11, 2006 ### [\[Cool Tool\] ASP.NET Enterprise Manager on Steroids: Ajax, Multiple DB types, And open source!](https://osherove.com/blog/2006/6/11/cool-tool-aspnet-enterprise-manager-on-steroids-ajax-multipl.html) - May 18, 2006 ### [SQLOne - SQL Converter for many DB Dialects?](https://osherove.com/blog/2006/5/18/sqlone-sql-converter-for-many-db-dialects.html) - May 16, 2006 ### [Cool Freeware: Visual Task Tips](https://osherove.com/blog/2006/5/16/cool-freeware-visual-task-tips.html) --- title: "Steve Kelly on Software Factories: \"It's worth the effort\"" url: "https://osherove.com/blog/2006/5/22/steve-kelly-on-software-factories-quotits-worth-the-effortqu.md" canonical: "https://osherove.com/blog/2006/5/22/steve-kelly-on-software-factories-quotits-worth-the-effortqu.html" published: "2006-05-22T21:29:00" updated: "2006-05-22T21:29:00" tags: [".NET", "Architecture"] author: "Roy Osherove" description: "The saga continues as Steve Kelly , from MetaCase, sent me an email, from which I'll quote the chunks relevant to the earlier Software Factories Discussion ( here and here ) on this blog. He also has his own blog post…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Steve Kelly on Software Factories: "It's worth the effort" By Roy Osherove May 22, 2006 In [.NET](https://osherove.com/blog/category/net), [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published May 22, 2006; technical details may be outdated. The saga continues as [Steve Kelly](http://www.metacase.com/blogs/stevek/blogView), from MetaCase, sent me an email, from which I'll quote the chunks relevant to the earlier Software Factories Discussion ([here](https://weblogs.asp.net/rosherove/archive/2006/05/16/446667.aspx) and [here](https://weblogs.asp.net/rosherove/archive/2006/05/18/446937.aspx)) on this blog. He also has [his own blog post](http://www.metacase.com/blogs/stevek/blogView?showComments=true&entry=3325772088) on this matter. "I think it's important to separate the idea of Software Factories from their current MS implementation. Full code generation from Domain-Specific Modeling languages is something that has been done in practice for many years, e.g. David Weiss' work at Lucent to name just one. Tools for building these modeling languages, and giving them modeling tool support, have also existed for many years - including open source tools like GME and commercial products like MetaEdit+, both with over 10 years of real-world use. The DSM Forum brings together all the various tool vendors (I'm a cofounder, and Microsoft signed up to join already at OOPSLA 2004). [www.dsmforum.org](http://www.dsmforum.org/) contains lots of real world cases of DSM (or "Software Factories", if we're not fussy about terms). Maybe you could take a look, and perhaps point your readers there: looking at good examples of how something can be done successfully is generally more enlightening for newbies than looking how one team failed in their first project :-). (Perhaps MS should have picked a slightly smaller area than the whole healthcare industry for their first try!) I've written some more comments on my blog, [http://www.metacase.com/blogs/stevek/](http://www.metacase.com/blogs/stevek/), about what's needed to make SF / DSM actually work. It's worth the effort - real world industrial cases consistently show 5-10x improvements in productivity. That's something the industry hasn't seen since the switch from assembler to 3GLs, and it's about time to raise the level of abstraction again! Cheers, Steve" I like the way this conversation has evolved. This is serious discussion that I have no heard in any place that's "public" enough for real world people to read about. Personally, I'm learning more and more about this, and even though my view is slightly skewed from the Microsoft Perspective, it's important to realize there are other projects out there who seem to be doing just fine. I guess it all comes down to how big a chunk you want to bite off.   So "Is it possible" really becomes a "what scale is worth the effort". hm. Now there's a thought. ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - Jun 7, 2006 ### [News: TestDriven, SideKick, Expression Evaluators and Security to boot](https://osherove.com/blog/2006/6/7/news-testdriven-sidekick-expression-evaluators-and-security.html) - May 29, 2006 ### [Review: Shell MegaPack - Windows Explorer GUI Replacement Controls](https://osherove.com/blog/2006/5/29/review-shell-megapack-windows-explorer-gui-replacement-contr.html) - May 22, 2006 ### [Review - Automise: Automise almost anything](https://osherove.com/blog/2006/5/22/review-automise-automise-almost-anything.html) - May 18, 2006 ### [CLR Generics Vs. C++ Templates - some good links](https://osherove.com/blog/2006/5/18/clr-generics-vs-c-templates-some-good-links.html) --- title: "Review - Automise: Automise almost anything" url: "https://osherove.com/blog/2006/5/22/review-automise-automise-almost-anything.md" canonical: "https://osherove.com/blog/2006/5/22/review-automise-automise-almost-anything.html" published: "2006-05-22T12:31:00" updated: "2006-05-22T12:31:00" tags: [".NET", "ASP.NET", "Product Reviews"] author: "Roy Osherove" description: "This week, I'm happy to review and advertise Automise , from the makers of FinalBuilder. As a .NET developer, I’ve always thought that FinalBuilder was a fine product. In fact, it’s one of my favorites and I recommend…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Review - Automise: Automise almost anything By Roy Osherove May 22, 2006 In [.NET](https://osherove.com/blog/category/net), [ASP.NET](https://osherove.com/blog/category/asp-net), [Product Reviews](https://osherove.com/blog/category/product-reviews) **Historical article** · Originally published May 22, 2006; technical details may be outdated.  This week, I'm happy to review and advertise [Automise](http://www.automise.com/automise.aspx), from the makers of FinalBuilder. As a .NET developer, I’ve always thought that FinalBuilder was a fine product. In fact, it’s one of my favorites and I recommend it to people when doing Daily builds automation. Now, the guys that created FinalBuilder are coming out with a more general purpose tool, based on the FinalBuilder engine, called “[Automise](http://www.automise.com/automise.aspx)”. The idea is that you can use the same platform to automatise just about any repetitive taks in your shop – copying files, backing up sources, running batch files, changing active directory settings - \*anything\* that you hate doing by yourself and hate creating a batch file or vb script file to accomplish. The idea here is to give your Sys Admin (in many cases that’s \*you\* just the same) the power of automating those boring, repetitive tasks, in a very easy UI. It’s FinalBuilder for your Administrator. And it’s going to have stuff specifically for administrators that FinalBuilder does not have. **Here’s some of what it currently has:** - Run Command line (duh) - file operations (copy, move, create, delete, etc) - CD/DVD burning - Database manipulations using SQL or Stored procedures - FTP operations (put, get, create directory, etc) - Run VBScript or JScript code - iterate files, folders, file content, lists, etc - IIS 5 and 6 operations (start, stop, create website, etc) - create zip files, unpack RAR files, etc - manipulate XML files - operate on the .NET GAC - WMI operations - Share directory, map network drive - Change Scheduled Jobs - Lots more **Usability** Very usable UI, which eases maintenance of complicated jobs in the long run. **Feature Set** Personally, I’d love to see the following added to this (and the VSoft guys are considering a lot of it in the next version/upgrade): \-         Active Directory actions, permissions \-         A "PowerShell" action (aka Monad) just like a cmd but much more powerful \-         the various folder paths "junction" actions \-         Change file and dir permissions, \-         write permissions and other (all) properties of an object to file, \-         Format drive, make NTFS etc... \-         Synchronize directories automatically **Summary** With about half the cost of FinalBuilder, [Automise](http://www.automise.com/automise.aspx) aims to fill that gap between batch hell and “not so much hell if I can automate it”, and does it beautifully. It still needs some more features to make it even more powerful, but even now, it is one of the best tools around for automating tasks. If you also need to build projects, go with FinalBuilder for now. If you need a tool to help you with your batch jobs, or you can’t spare the extra $200, use Automise. You can always make it call an outside command like to build your projects too. 2 points down for lack of features. Everything else is just perfect. **Overall score – 8.5 out of 10.** ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 29, 2006 ### [Review: Shell MegaPack - Windows Explorer GUI Replacement Controls](https://osherove.com/blog/2006/5/29/review-shell-megapack-windows-explorer-gui-replacement-contr.html) - May 22, 2006 ### [Steve Kelly on Software Factories: "It's worth the effort"](https://osherove.com/blog/2006/5/22/steve-kelly-on-software-factories-quotits-worth-the-effortqu.html) - May 18, 2006 ### [CLR Generics Vs. C++ Templates - some good links](https://osherove.com/blog/2006/5/18/clr-generics-vs-c-templates-some-good-links.html) - May 14, 2006 ### [Small Tip: Getting the name of the current or calling method at runtime for debugging](https://osherove.com/blog/2006/5/14/small-tip-getting-the-name-of-the-current-or-calling-method.html) --- title: ".NETWeblogs upgraded - finally." url: "https://osherove.com/blog/2006/5/22/netweblogs-upgraded-finally.md" canonical: "https://osherove.com/blog/2006/5/22/netweblogs-upgraded-finally.html" published: "2006-05-22T10:43:00" updated: "2006-05-22T10:43:00" tags: ["Community"] author: "Roy Osherove" description: "Weblogs.asp.net has upgraded to the next version of Community Server. Finally! Thanks for all your hard work guys. Ads on blogs One of the upcoming changes to weblogs.asp.net will be that there will be ads on the blogs…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .NETWeblogs upgraded - finally. By Roy Osherove May 22, 2006 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published May 22, 2006; technical details may be outdated. Weblogs.asp.net has upgraded to the next version of Community Server. **Finally!** Thanks for all your hard work guys. **Ads on blogs** One of the upcoming changes to weblogs.asp.net will be that there will be ads on the blogs of \*new members\*. That is, existing member's blogs will not change one bit, but new bloggers that will join the site will have text ads on their blogs. **Filtered Main Feed** The main feed for the site will only show specific tags related to .NET, ASP.NET etc.. and there will also be a "full" feed that has all the tags from everyone, in an unfiltered manner. That should help bring down the noise ratio in the main feed, and I can certainly live with that. That way, no one is "censored" and the community can live on in many different directions, a cross section of which can be posted on the site. The current list of tags that will be posted to the main feed is(learned [here](http://forums.asp.net/1292177/ShowThread.aspx#1292177)): ._NET NET FAQ AJAX ASP.NET Atlas C# Commerce Server Community News Content Management Server General Software Development Mobile Orcas Sharepoint SQL Server Vista Visual Basic Visual Studio Web Services WinFX Windows Forms Avalon WPF WCF WWF IIS Infocard CLR BCL Crossbow _ **Still in learning mode** I'm still learning the quirks of the new system myself, so my blog may have various changes over the coming days. My apologies for any browsing problems this may cause (which it shouldn't). ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Sep 6, 2006 ### [Influence the next Microsoft Israel Conference](https://osherove.com/blog/2006/9/6/influence-the-next-microsoft-israel-conference.html) - Jun 18, 2006 ### [This week at the C# User group - Hardcore ASP.NET 2.0 \[Dan Amiga\]](https://osherove.com/blog/2006/6/18/this-week-at-the-c-user-group-hardcore-aspnet-20-dan-amiga.html) - May 18, 2006 ### [Oren Ellenbogen rocked last night about Generics, Delegates and Anonymous Methods.](https://osherove.com/blog/2006/5/18/oren-ellenbogen-rocked-last-night-about-generics-delegates-a.html) - May 15, 2006 ### [The Good and Bad in Tech-Ed Israel 2006](https://osherove.com/blog/2006/5/15/the-good-and-bad-in-tech-ed-israel-2006.html) --- title: "My RSS at FeedBurner" url: "https://osherove.com/blog/2006/5/22/my-rss-at-feedburner.md" canonical: "https://osherove.com/blog/2006/5/22/my-rss-at-feedburner.html" published: "2006-05-22T09:38:00" updated: "2006-05-22T09:38:00" tags: [] author: "Roy Osherove" description: "If you have a spare moment, change you feed subscription for this blog to : http://feeds.feedburner.com/Iserializable Using FeedBurner I can get better statistics on how many readers I actually have, and can make a feed…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My RSS at FeedBurner By Roy Osherove May 22, 2006 **Historical article** · Originally published May 22, 2006; technical details may be outdated. If you have a spare moment, change you feed subscription for this blog to : [http://feeds.feedburner.com/Iserializable](http://feeds.feedburner.com/Iserializable)  Using FeedBurner I can get better statistics on how many readers I actually have, and can make a feed that fits mobile browsers as well as regular ones. It's really a very nice service. A few of you are already registered there. Thanks. --- title: "YubNub - Command Line for Web Browsing" url: "https://osherove.com/blog/2006/5/21/yubnub-command-line-for-web-browsing.md" canonical: "https://osherove.com/blog/2006/5/21/yubnub-command-line-for-web-browsing.html" published: "2006-05-21T13:14:00" updated: "2006-05-21T13:14:00" tags: ["Cool sites"] author: "Roy Osherove" description: "If you're a command line freak like I am (or like Scott is), maybe, just maybe, this YubNub site is for you. It's essentially a \"command line\" gadget for web browsing, that help create and run short commands instead of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # YubNub - Command Line for Web Browsing By Roy Osherove May 21, 2006 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published May 21, 2006; technical details may be outdated. If you're a command line freak like I am (or like Scott is), maybe, just **maybe,** this [YubNub](http://www.yubnub.org/) site is for you. It's essentially a "command line" gadget for web browsing, that help create and run short commands instead of clicking browser buttons. Interesting concept. ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Oct 22, 2006 ### [Israeli .NET bloggers you should read](https://osherove.com/blog/2006/10/22/israeli-net-bloggers-you-should-read.html) - Aug 29, 2006 ### [Ultimate Developer and Power Users Tool List for Windows - Updated](https://osherove.com/blog/2006/8/29/ultimate-developer-and-power-users-tool-list-for-windows-upd.html) - May 18, 2006 ### [TheServerSide.NET - The .NET Equivalent of SlashDot?](https://osherove.com/blog/2006/5/18/theserversidenet-the-net-equivalent-of-slashdot.html) - Feb 6, 2006 ### [Need an online version of Word or Excel? Try Writely and iRows.](https://osherove.com/blog/2006/2/6/need-an-online-version-of-word-or-excel-try-writely-and-irow.html) --- title: "Two Powerful Generic Collections And Algorithms Libraries" url: "https://osherove.com/blog/2006/5/20/two-powerful-generic-collections-and-algorithms-libraries.md" canonical: "https://osherove.com/blog/2006/5/20/two-powerful-generic-collections-and-algorithms-libraries.html" published: "2006-05-20T14:21:00" updated: "2006-05-20T14:21:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "Two very good resource links that Oren pointed out to in at the end of his presentation about advanced use of Generics and Delegates are two powerful Generic Collection Frameworks: PowerCollections (by Wintellect, free…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Two Powerful Generic Collections And Algorithms Libraries By Roy Osherove May 20, 2006 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published May 20, 2006; technical details may be outdated. Two very good resource links that [Oren pointed out to in at the end of his presentation about advanced use of Generics and Delegates](http://www.lnbogen.com/SlidesDemosFromMyCodeTemplatingPresentation.aspx) are two powerful Generic Collection Frameworks: - [PowerCollections](http://www.wintellect.com/MemberOnly/PowerCollections.aspx) (by Wintellect, free sign up required) "Power Collections extends the Base Class Library with an algorithms class and a series of new containers. This has been created by you, the developer community. We ask for your input on the specification, design and code and invite you to submit your own. " - [C5 Generic Collection Library](http://www.itu.dk/research/c5/) "C5 provides functionality and data structures not provided by the standard .Net System.Collections.Generic namespace, such as persistent tree data structures, heap based priority queues, hash indexed array lists and linked lists, and events on collection changes. Also, it is more comprehensive than collection class libraries on other similar platforms, such as Java. Unlike many other collection class libraries, C5 is designed with a strict policy of supporting "code to interface not implementation"." **The clear power winner** of these two is the C5 Library. It has **lots** of new classes seems to be very well thought out. I haven't gotten the chance to use either of these in my projects yet, but playing around with them I was very impressed with both. ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Jun 11, 2006 ### [Got an MSBuild-SikdeKick wish? Post it on Matan's blog!](https://osherove.com/blog/2006/6/11/got-an-msbuild-sikdekick-wish-post-it-on-matans-blog.html) - May 29, 2006 ### [Review: Shell MegaPack - Windows Explorer GUI Replacement Controls](https://osherove.com/blog/2006/5/29/review-shell-megapack-windows-explorer-gui-replacement-contr.html) - May 18, 2006 ### [CLR Generics Vs. C++ Templates - some good links](https://osherove.com/blog/2006/5/18/clr-generics-vs-c-templates-some-good-links.html) - May 18, 2006 ### [Oren Ellenbogen rocked last night about Generics, Delegates and Anonymous Methods.](https://osherove.com/blog/2006/5/18/oren-ellenbogen-rocked-last-night-about-generics-delegates-a.html) --- title: "CLR Generics Vs. C++ Templates - some good links" url: "https://osherove.com/blog/2006/5/18/clr-generics-vs-c-templates-some-good-links.md" canonical: "https://osherove.com/blog/2006/5/18/clr-generics-vs-c-templates-some-good-links.html" published: "2006-05-18T07:40:00" updated: "2006-05-18T07:40:00" tags: [".NET", ".Net 2.0", ".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "An interesting question in last night's talk triggered lost links I had about an interesting subject: What are the main differences between CLR Generics and C++ Templates? Here are some good links:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CLR Generics Vs. C++ Templates - some good links By Roy Osherove May 18, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0), [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published May 18, 2006; technical details may be outdated. An interesting question in [last night's talk](http://weblogs.asp.net/rosherove/archive/2006/05/18/446939.aspx) triggered lost links I had about an interesting subject: What are the main differences between CLR Generics and C++ Templates? Here are some good links: [http://blogs.msdn.com/branbray/archive/2003/11/19/51023.aspx](http://blogs.msdn.com/branbray/archive/2003/11/19/51023.aspx) [http://msdn.microsoft.com/msdnmag/issues/05/06/PureC/](http://msdn.microsoft.com/msdnmag/issues/05/06/PureC/) [http://www.mindview.net/WebLog/log-0061](http://www.mindview.net/WebLog/log-0061) ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 22, 2006 ### [Steve Kelly on Software Factories: "It's worth the effort"](https://osherove.com/blog/2006/5/22/steve-kelly-on-software-factories-quotits-worth-the-effortqu.html) - May 22, 2006 ### [Review - Automise: Automise almost anything](https://osherove.com/blog/2006/5/22/review-automise-automise-almost-anything.html) - May 14, 2006 ### [Small Tip: Getting the name of the current or calling method at runtime for debugging](https://osherove.com/blog/2006/5/14/small-tip-getting-the-name-of-the-current-or-calling-method.html) - Apr 27, 2006 ### [Persistore - Interesting attempt at a .NET Persistence Engine? You decide.](https://osherove.com/blog/2006/4/27/persistore-interesting-attempt-at-a-net-persistence-engine-y.html) --- title: "Oren Ellenbogen rocked last night about Generics, Delegates and Anonymous Methods." url: "https://osherove.com/blog/2006/5/18/oren-ellenbogen-rocked-last-night-about-generics-delegates-a.md" canonical: "https://osherove.com/blog/2006/5/18/oren-ellenbogen-rocked-last-night-about-generics-delegates-a.html" published: "2006-05-18T07:37:00" updated: "2006-05-18T07:37:00" tags: [".Net 2.0", "Community"] author: "Roy Osherove" description: "Update : His slides and demos are posted here . Last night was a very good meeting of the C#/C++ users group . Oren Ellenbogen spoke about Advanced usage of Generics, delegates and anonymous methods to a crowd who…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Oren Ellenbogen rocked last night about Generics, Delegates and Anonymous Methods. By Roy Osherove May 18, 2006 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published May 18, 2006; technical details may be outdated. _**Update**: His slides and demos_ [_are posted here_](http://www.lnbogen.com/SlidesDemosFromMyCodeTemplatingPresentation.aspx) . Last night was a very good meeting [of the C#/C++ users group](http://www.lnbogen.com/ct.ashx?id=f41da746-2cc4-405e-83be-79e348ade5ca&url=http%3a%2f%2fwww.lnbogen.com%2fPresentingAboutAdvanceUseOfDelegatesGenericsInTheNextCGroup.aspx). [Oren Ellenbogen](http://www.lnbogen.com/) spoke about [Advanced usage of Generics, delegates and anonymous methods](http://www.lnbogen.com/ReminderAdvanceUseOfDelegatesGenericsInTheNextCGroup.aspx) to a crowd who really wanted to know. The result - a very informative lecture. Oren mainly covered using Anonymous delegates to send logic to various utility methods (much like the use of Array.ForEach in .NET 2.0 but a couple more scenarios). The best part of the talk was near the end when he covered his rules of **refactoring your code** into using these patterns (which I don't remember fully but He'll blog about them soon). Oren Promised to put the slides and demos up on his blog, including some code samples and libraries to help unit test these patterns more easily. I'm intrigued. [](http://www.mindview.net/WebLog/log-0061)  Good Talk Oren. Keep it up! ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - May 20, 2006 ### [Two Powerful Generic Collections And Algorithms Libraries](https://osherove.com/blog/2006/5/20/two-powerful-generic-collections-and-algorithms-libraries.html) - May 18, 2006 ### [CLR Generics Vs. C++ Templates - some good links](https://osherove.com/blog/2006/5/18/clr-generics-vs-c-templates-some-good-links.html) - May 14, 2006 ### [Small Tip: Getting the name of the current or calling method at runtime for debugging](https://osherove.com/blog/2006/5/14/small-tip-getting-the-name-of-the-current-or-calling-method.html) - Apr 25, 2006 ### [Debugger Visualizer for MethodInfo, DynamicMethod, and MethodBase available for download](https://osherove.com/blog/2006/4/25/debugger-visualizer-for-methodinfo-dynamicmethod-and-methodb.html) --- title: "HL7 Software Factory Project is a success in progress, says MS Architect Mauro Regio" url: "https://osherove.com/blog/2006/5/18/hl7-software-factory-project-is-a-success-in-progress-says-m.md" canonical: "https://osherove.com/blog/2006/5/18/hl7-software-factory-project-is-a-success-in-progress-says-m.html" published: "2006-05-18T06:58:00" updated: "2006-05-18T06:58:00" tags: ["Architecture"] author: "Roy Osherove" description: "I got a response in my comments to my post about Software Factories perhaps being too complicated to be used in the real world. It was from Mauro Regio , one of the initiators of the HL7 project mentioned in that post.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # HL7 Software Factory Project is a success in progress, says MS Architect Mauro Regio By Roy Osherove May 18, 2006 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published May 18, 2006; technical details may be outdated. I got a response in my comments to my post about [Software Factories perhaps being too complicated](http://weblogs.asp.net/rosherove/archive/2006/05/16/446667.aspx) to be used in the real world. It was from Mauro Regio , one of the initiators of the HL7 project mentioned in that post. Here's what he had to say: "Guy's comment is missing the fact that Software Factory is a long term initiative and that what is available today (in terms of tools and platform) is a "down payment" on what needs to (and will) be built to provide factories architects/developers with necessary capabilities and achieve the right level of quality. He also uses HL7 Factory as an example of something that did not work, because it's not finished. As the initiator and architect of that work I have a different opinion. Actually, we have done two pieces of work around HL7. The first one, is a factory that creates HL7 web services, i.e. services that can be deployed at the edge of an organization that wants to "talk" HL7 with another one. The services are conformant with HL7 web services profiles and they are automatically produced/configured using the factory. Sounds complex and real world enough to you? if not ask a HL7 solution provider! That work is a proof of concept, not a product. The intent was to show that factories can actually be done in a "real world" domains, although aiming to automate a small portion of it. That factory IS finished, it served the goal for which it has been built. The second initiative, is a community project recently started to create what Guy mentioned, a HL7 library on .NET platform. That project is well underway and it will release a first instance of the library later on this year. I think Guy is making a good point when he says factories have to aim at small domains. I'd like to add, to small "real world" domains. At the same time, small factories can and need to be composed into larger one to become more relevant. It's through composition of small factories into a larger one that we aim to widen their scope. The next step is to optimize that composition, pretty much like what the manufacturing industry does today on a supply chain. So are factories too complicated? They are fairly complicated, yes! Is it a robot used in an automotive production line complicated? You bet it is! Is it useful and efficient? Ask Ford, BMW, or any other car manufacturer? Do we have the tools we need to execute on the factory vision? Not yet! However, if you start with things like Guidance Automation Toolkit (GAT) and Domain Specific Languages (DSL) Toolkit, you're headed in the right direction. Don't expect to build a very sophisticated "robot" today. However, don't expect to see the factories vision to fail either! Actually, you'll see Microsoft and partners coming out with various software factories in the next few months. I'm sure that will give you more confidence about what I just said. Regards Mauro Regio Architect | Microsoft Corp. " Thanks for the clarification, Mauro. I've looked up some more links pertaining to the HL7 project: - The Architecture Journal: [Design and Implement a Software Factory](http://www.architecturejournal.net/2006/issue6/Jour6Factory/default.aspx) (relates to HL7) - [Collaborative Workspace for the **HL7** Software Factory](http://workspaces.gotdonet.com/HL7WebProfiles) (link seems to be broken :(  ) - [HL7 Reference Implementation of Web Services Profiles: Workspace Home](http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=db62ff70-48eb-416a-9bf5-71a5867377cd) - [HL7 Web Service Profiles](http://www.hl7.org/v3ballot/html/infrastructure/transport/transport-wsprofiles.htm) ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Jun 11, 2006 ### [Architecting in an Agile World - My ArcCast with Ron Jabobs in online](https://osherove.com/blog/2006/6/11/architecting-in-an-agile-world-my-arccast-with-ron-jabobs-in.html) - May 22, 2006 ### [Steve Kelly on Software Factories: "It's worth the effort"](https://osherove.com/blog/2006/5/22/steve-kelly-on-software-factories-quotits-worth-the-effortqu.html) - Mar 24, 2006 ### [Microsoft's Journal for architects](https://osherove.com/blog/2006/3/24/microsofts-journal-for-architects.html) - Mar 23, 2006 ### [Udi Dahan on ...SOA!](https://osherove.com/blog/2006/3/23/udi-dahan-on-soa.html) --- title: "TheServerSide.NET - The .NET Equivalent of SlashDot?" url: "https://osherove.com/blog/2006/5/18/theserversidenet-the-net-equivalent-of-slashdot.md" canonical: "https://osherove.com/blog/2006/5/18/theserversidenet-the-net-equivalent-of-slashdot.html" published: "2006-05-18T06:33:00" updated: "2006-05-18T06:33:00" tags: ["Cool sites"] author: "Roy Osherove" description: "I am totally starting to respect TheServerSide.NET . Not only do they have some fabulous content up there, but now they've made the mistake of publishing my post on Agile Vs. Formal Methodologies a couple days ago, and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TheServerSide.NET - The .NET Equivalent of SlashDot? By Roy Osherove May 18, 2006 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published May 18, 2006; technical details may be outdated. I am totally starting to respect [TheServerSide.NET](http://www.theserverside.net/). Not only do they have some fabulous content up there, but now they've made the mistake of publishing my post on [Agile Vs. Formal Methodologies](http://weblogs.asp.net/rosherove/archive/2006/05/15/AgileVsFormal.aspx)  a couple days ago, and it has been brining about **LOTS of** traffic (much more than the main weblogs.asp.net feed). I've been "ServerSided". I guess I should subscribe to [their RSS feed](http://www.theserverside.net/rss/theserverside-rss2.xml), huh? ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Aug 29, 2006 ### [Ultimate Developer and Power Users Tool List for Windows - Updated](https://osherove.com/blog/2006/8/29/ultimate-developer-and-power-users-tool-list-for-windows-upd.html) - May 21, 2006 ### [YubNub - Command Line for Web Browsing](https://osherove.com/blog/2006/5/21/yubnub-command-line-for-web-browsing.html) - Feb 6, 2006 ### [Need an online version of Word or Excel? Try Writely and iRows.](https://osherove.com/blog/2006/2/6/need-an-online-version-of-word-or-excel-try-writely-and-irow.html) - Feb 2, 2006 ### [Read HackNot](https://osherove.com/blog/2006/2/2/read-hacknot.html) --- title: "SQLOne - SQL Converter for many DB Dialects?" url: "https://osherove.com/blog/2006/5/18/sqlone-sql-converter-for-many-db-dialects.md" canonical: "https://osherove.com/blog/2006/5/18/sqlone-sql-converter-for-many-db-dialects.html" published: "2006-05-18T06:23:00" updated: "2006-05-18T06:23:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "SQLOne looks like a good idea: \" SQLOne Console 3.0 - Automatic SQL conversion utility to translate SQL queries between the dialects used by Oracle, SQL Server, DB2, Informix, Sybase, MySQL, PostgreSQL, and pure ANSI…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SQLOne - SQL Converter for many DB Dialects? By Roy Osherove May 18, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 18, 2006; technical details may be outdated. SQLOne looks like a good idea: "[SQLOne Console 3.0](http://www.swissql.com/products/sql-translator/sql-converter.html) - Automatic SQL conversion utility to translate SQL queries between the dialects used by Oracle, SQL Server, DB2, Informix, Sybase, MySQL, PostgreSQL, and pure ANSI SQL. Looks very useful indeed if you need to support multiple back ends. [Trial version](http://www.swissql.com/products/sql-translator/sqlone-consolejava-downloadform.html) is limited to converting 50 queries, contact them for pricing. " \[via [Larkware](http://www.larkware.com/dg5/TheDailyGrind883.html)\] Though the "contact them for pricing" seems a bit scary. That usually means something costs **a lot**. PS I use a question mark at the end of titles when : a. I talk about something that I haven't checked out myself yet. b. My title is a question. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 11, 2006 ### [\[Cool Tool\] ASP.NET Enterprise Manager on Steroids: Ajax, Multiple DB types, And open source!](https://osherove.com/blog/2006/6/11/cool-tool-aspnet-enterprise-manager-on-steroids-ajax-multipl.html) - May 22, 2006 ### [\[Cool Tool\] Free Intellisense for SQL Query Analyzer!](https://osherove.com/blog/2006/5/22/cool-tool-free-intellisense-for-sql-query-analyzer.html) - May 16, 2006 ### [Cool Freeware: Visual Task Tips](https://osherove.com/blog/2006/5/16/cool-freeware-visual-task-tips.html) - May 15, 2006 ### [Review: SmartInspect - Logging for .NET, Java and Delphi](https://osherove.com/blog/2006/5/15/review-smartinspect-logging-for-net-java-and-delphi.html) --- title: "Blog related mobile software(asked for)+ Weirdest windows mobile feature ever" url: "https://osherove.com/blog/2006/5/16/blog-related-mobile-softwareasked-for-weirdest-windows-mobil.md" canonical: "https://osherove.com/blog/2006/5/16/blog-related-mobile-softwareasked-for-weirdest-windows-mobil.html" published: "2006-05-16T22:43:00" updated: "2006-05-16T22:43:00" tags: [] author: "Roy Osherove" description: "I've finally gotten my precious PDA-Phone and... What do you guys recommend in ways of a blog reading software and blog writing software? It needs to support Windows Mobile 5.0 and the blog posting app should support…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blog related mobile software(asked for)+ Weirdest windows mobile feature ever By Roy Osherove May 16, 2006 **Historical article** · Originally published May 16, 2006; technical details may be outdated. I've finally gotten my precious PDA-Phone and... What do you guys recommend in ways of a blog **reading** software and blog **writing** software? It needs to support Windows Mobile 5.0 and the blog posting app should support the MetaweblogApi (.TEXT, Community Server etc..) Overall Windows Mobile 5.0 looks really nice, but there are several quirks in it that I just don't get (which I hope to post about when I have more time). The weirdest one? There's an "X" button to close open applications, right? It seems it does not really close them, but merely minimizes them. Slowly but surely, you begin to eat up memory on your pocket PC without even realizing it. How silly! You actually need to download special software (some free, some not) that replaces that 'X' with one that actually works. --- title: "BS Bingo - Making Dull Meetings Fun Again" url: "https://osherove.com/blog/2006/5/16/bs-bingo-making-dull-meetings-fun-again.md" canonical: "https://osherove.com/blog/2006/5/16/bs-bingo-making-dull-meetings-fun-again.html" published: "2006-05-16T12:50:00" updated: "2006-05-16T12:50:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Oh, this sounds like a fun way to spend at a your weekly meeting with the CEO: Bullshit Bingo . They actually have dedicated sites and cards for this stuff. Testimonials from satisfied \"Bullshit Bingo\" players: \"I had…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BS Bingo - Making Dull Meetings Fun Again By Roy Osherove May 16, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 16, 2006; technical details may be outdated. Oh, this sounds like a fun way to spend at a your weekly meeting with the CEO: [Bullshit Bingo](http://blogs.microsoft.co.il/blogs/bursteg/archive/2006/05/16/412.aspx). They actually have [dedicated sites](http://www.bullshitbingo.net/cards/bullshit/) and cards for this stuff. Testimonials from satisfied "Bullshit Bingo" players: - _"I had been in the meeting for only five minutes when I won." - Adam, Atlanta_ - _"My attention span at meetings has improved dramatically." - David, Florida_ - _"What a gas! Meetings will never be the same for me after my first win." - Dan, New York City_ - _"The atmosphere was tense in the last process meeting as 14 of us waited for the fifth box." - Ben, Denver_ - _"The speaker was stunned as eight of us screamed 'BULLSHIT!' for the third time in two hours." - Paul, Cleveland _ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 13, 2006 ### [Fixing "mapi32.dll is an invalid Extended MAPI Library" and "Mail is not installed on your system" on Windows Server 2003 with Exchange](https://osherove.com/blog/2006/6/13/fixing-quotmapi32dll-is-an-invalid-extended-mapi-libraryquot.html) - May 29, 2006 ### [Google Notebook - Would \*Kill\* RSS Feeds](https://osherove.com/blog/2006/5/29/google-notebook-would-kill-rss-feeds.html) - May 14, 2006 ### [Trend: Who works the hardest and knows the least?](https://osherove.com/blog/2006/5/14/trend-who-works-the-hardest-and-knows-the-least.html) - Apr 28, 2006 ### [Can you recommend a good Exchange Hosting service?](https://osherove.com/blog/2006/4/28/can-you-recommend-a-good-exchange-hosting-service.html) --- title: "Cool Freeware: Visual Task Tips" url: "https://osherove.com/blog/2006/5/16/cool-freeware-visual-task-tips.md" canonical: "https://osherove.com/blog/2006/5/16/cool-freeware-visual-task-tips.html" published: "2006-05-16T12:43:00" updated: "2006-05-16T12:43:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "This little freeware program looks nice! Thanks for the hint, Ido . I think I'll install this today." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool Freeware: Visual Task Tips By Roy Osherove May 16, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 16, 2006; technical details may be outdated. [This little freeware](http://www.visualtasktips.com/) program looks nice! Thanks for the [hint, Ido](http://blogs.microsoft.co.il/blogs/samuelson/archive/2006/05/16/416.aspx). I think I'll install this today. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 22, 2006 ### [\[Cool Tool\] Free Intellisense for SQL Query Analyzer!](https://osherove.com/blog/2006/5/22/cool-tool-free-intellisense-for-sql-query-analyzer.html) - May 18, 2006 ### [SQLOne - SQL Converter for many DB Dialects?](https://osherove.com/blog/2006/5/18/sqlone-sql-converter-for-many-db-dialects.html) - May 15, 2006 ### [Review: SmartInspect - Logging for .NET, Java and Delphi](https://osherove.com/blog/2006/5/15/review-smartinspect-logging-for-net-java-and-delphi.html) - Apr 25, 2006 ### [Debugger Visualizer for MethodInfo, DynamicMethod, and MethodBase available for download](https://osherove.com/blog/2006/4/25/debugger-visualizer-for-methodinfo-dynamicmethod-and-methodb.html) --- title: "Are Software Factories too complicated to be used in the real world?" url: "https://osherove.com/blog/2006/5/16/are-software-factories-too-complicated-to-be-used-in-the-rea.md" canonical: "https://osherove.com/blog/2006/5/16/are-software-factories-too-complicated-to-be-used-in-the-rea.html" published: "2006-05-16T11:05:00" updated: "2006-05-16T11:05:00" tags: [] author: "Roy Osherove" description: "Continuing this thought , one of the more interesting answers that came up at teh TechEd Architecture panel by Guy Ron is that the Software Factories initiative is most likely to fail from the evidence thus far. He…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Are Software Factories too complicated to be used in the real world? By Roy Osherove May 16, 2006 **Historical article** · Originally published May 16, 2006; technical details may be outdated. Continuing [this thought](http://weblogs.asp.net/rosherove/archive/2006/05/16/446665.aspx), one of the more interesting answers that came up at teh TechEd Architecture panel by Guy Ron is that the Software Factories initiative is most likely to fail from the evidence thus far. He mentioned a big project for the healthcare industry ([HL7 Software Factory](http://channel9.msdn.com/ShowPost.aspx?PostID=143694)) and how, even today, a long time after it started, it still has not finished. Microsoft was trying to build (with third parties) the full object model of the HL7 so that applications can be built against it. For now, it has proved too complicated to come up with such generic components to be reused in “factory floor” applications, which may be a testament to upcoming difficulties that the software industry will face when trying to get on board with this methodology. Guy mentioned that it may prove useful for only smaller scale projects and domain (like UI) and not for “real world” domains. That’s an interesting thought that I had not considered and I can certainly see the logic behind it. Personally, I’m not sure about Factories. I think they are a step, some step, forward. We’ve only been doing this for a few decades. We have a lot to learn. Software is still a craftsmanship, and not a manufactured product. How do we move to that Cross Posted from [Blogs.Microsoft.Co.Il/Blogs/Royo](http://blogs.microsoft.co.il/blogs/Royo) --- title: "Q&A: Microsoft, UML and Software Factories" url: "https://osherove.com/blog/2006/5/16/qampa-microsoft-uml-and-software-factories.md" canonical: "https://osherove.com/blog/2006/5/16/qampa-microsoft-uml-and-software-factories.html" published: "2006-05-16T10:42:00" updated: "2006-05-16T10:42:00" tags: [] author: "Roy Osherove" description: "Q: Software Factories and UML Has Microsoft Abandoned UML? Is the Domain Specific Language path so different than UML? Can they be combined? From what I’ve seen so far, and from talks I had with various people (…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Q&A: Microsoft, UML and Software Factories By Roy Osherove May 16, 2006 **Historical article** · Originally published May 16, 2006; technical details may be outdated. Q: [Software Factories and UML](http://weblogs.asp.net/rosherove/archive/2006/05/15/ArchPanelQuestions.aspx) Has Microsoft Abandoned UML? Is the Domain Specific Language path so different than UML? Can they be combined? From what I’ve seen so far, and from talks I had with various people _(_[_including Steve Cook_](http://www.teamagile.com/mainpages/Interviews.html)_, from the original UML Team, now at Microsoft_), Microsoft have sort of “adapted” an easy to use and understand version of the UML. They took the basic idea of shapes and arrows and made it work on the level of a specific domain which is in turn used in a [Software Factory](http://www.softwarefactories.com/Links.html). Most people I know have done \*some\* UML, but most only know how to use maybe 3 or 4 types of UML Diagrams, let alone using UML Protoypes and such stuff. The main problem people face with UML is that using it to draw shapes, it then makes you give \*specific meaning\* to those shapes in your own domain using prototypes. Instead of using proptypes on the UML (which are very time consuming) Microsoft has taken some of the simplest ideas and made them part of the tooling strategy. So when you draw a shape, you’re actually drawing some sort of \*real\* entity in your domain. You can then manipulate it and use it to build real code, and it (should) reflects changes in the real code. The notion of a software factory is, to me, taking the UML shapes and giving them real meaning inside the tools. Not only that, to be able to create meaningful shapes for specific projects easily. I still use UML to a degree – whenever I draw shapes on the whiteboard I draw UML. Whenever I want to make some interaction clear I draw some sort of interaction diagram. But that’s basically it. IN projects where you are forced to write so much documentation and use cases using UML it usually turns out to be a very complicated set of design docs that developers have trouble reading. When they finally get to reading the whole thing its usually way out of date anyway and one has to talk to the man who actually wrote the thing. See? \*Communication\* always wins. Instead, what I try to do is have less documentation (butt enough to get things going) which can help start good conversations with the designer/architect in that project. In an XP project that’s could be the team lead. So, in short – UML is too complicated, most people don’t know even half of it. Microsoft tries to make it simpler and more usable in the real world of its tools. Cross Posted from [Blogs.Microsoft.Co.Il/Blogs/Royo](http://blogs.microsoft.co.il/blogs/Royo) --- title: "Q&A: Agile Vs. Formal Methodologies" url: "https://osherove.com/blog/2006/5/15/qampa-agile-vs-formal-methodologies.md" canonical: "https://osherove.com/blog/2006/5/15/qampa-agile-vs-formal-methodologies.html" published: "2006-05-15T08:28:00" updated: "2006-05-15T08:28:00" tags: ["Agile Related"] author: "Roy Osherove" description: "This is an answer to questions posted here . You can read more answers from that link. Agile Vs. Formal Methodologies Is \"Agile\" just another trend that is slowly turning into a more accepted and practiced methodology?…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Q&A: Agile Vs. Formal Methodologies By Roy Osherove May 15, 2006 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published May 15, 2006; technical details may be outdated. _This is an answer to_ [_questions posted here_](http://weblogs.asp.net/rosherove/archive/2006/05/15/ArchPanelQuestions.aspx)_. You can read more answers from that link._ 1. [Agile Vs. Formal Methodologies](http://weblogs.asp.net/rosherove/archive/2006/05/15/ArchPanelQuestions.aspx) 1. Is "Agile" just another trend that is slowly turning into a more accepted and practiced methodology? 2. Is this the beginning of the end for "Formal" Methodologies? 3. What role, if any, as VSTS played in the struggle of Agile methodologies to become more "mainstream"? 4. When would you use Agile or Formal Methodologies? 5. What about "hybrid" culture where Agile and Formal mix together rather than going the full on extreme path of "one or the other"? **Is "Agile" just another trend that is slowly turning into a more accepted and practiced methodology?** Agile Practices have long been practiced in the world of Software Development. If anything, I'd say they have always been mainstream (to a certain degree, in many companies) and just now are starting to pick up the "buzz" and become a trend. The new "Agile" word simply tries to put together a set of practices and mind set that works better for most projects than not thinking about them together. Stuff like Coding standards, unit tests and daily builds have always existed, stuff like pair programming have been done to a degree in any company (have you ever set with a colleague trying to solve a tough problem?). Agile simply tries to take those things, name them and realize that we'd be better off acknowledging their power and using them more rather than less. **Is this the beginning of the end for "Formal" Methodologies?** Hardly. There's always a place for both, but I suspect that most projects will use a mix of both over one or the other. **What role, if any, as VSTS played in the struggle of Agile methodologies to become more "mainstream"?** Team System helped bring the idea of Agile to the mainstream .NET community. That's a wonderful thing, because now we have something that the Java Developers have had for along time - the idea of Agile methodologies embedded into our tools. Unit Tests, MSF Agile, extreme programming, they are a few clicks away rather than a few downloads away. That's a big plus for Microsoft. On the other hand, team System is not quite there yet. It's TDD Support is [less than perfect](http://weblogs.asp.net/rosherove/archive/2006/01/25/436414.aspx) and the notion of XP and MSF Agile is still not there fully, but we are a long way from Kansas Already, and it will just get better from now on. **When would you use Agile or Formal Methodologies?** Unless you are working on a project with Fixed Price, Scope and Time, Agile is a good way to go. Even if you do Hardware & Software integration, the software part can be done in an Agile manner (so can the hardware, but that's a different topic). **What about "hybrid" culture where Agile and Formal mix together rather than going the full on extreme path of "one or the other"?** 99% of the projects I've seen come from a :formal background and implement Agile practices incrementally. For example, doing daily builds, then adding unit tests, then adding TDD, then adding Rolling Wave Planning etc.. If it fits your team more than going all the way , I'd say go for it. One of the main notions of Agile is making the methodology fit your team, and not the other way around. If it can work better for your team with more documentation and more meetings, do it. But stick to your guns for at least some amount of time (an iteration or two) and then decide what to change, if at all. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 13, 2006 ### [June @ Agile Israel (Feature Driven Development, Design For Testability)](https://osherove.com/blog/2006/6/13/june-agile-israel-feature-driven-development-design-for-test.html) - Jun 7, 2006 ### [News: TestDriven, SideKick, Expression Evaluators and Security to boot](https://osherove.com/blog/2006/6/7/news-testdriven-sidekick-expression-evaluators-and-security.html) - Mar 29, 2006 ### [Photos and Slides from Agile Israel March Meeting Birthday Maddness!](https://osherove.com/blog/2006/3/29/photos-and-slides-from-agile-israel-march-meeting-birthday-m.html) - Mar 27, 2006 ### [Special Agile Israel Meeting Today!](https://osherove.com/blog/2006/3/27/special-agile-israel-meeting-today.html) --- title: "Tech-Ed Panel Q&A: Architecture in the Real World - Questions" url: "https://osherove.com/blog/2006/5/15/tech-ed-panel-qampa-architecture-in-the-real-world-questions.md" canonical: "https://osherove.com/blog/2006/5/15/tech-ed-panel-qampa-architecture-in-the-real-world-questions.html" published: "2006-05-15T07:41:00" updated: "2006-05-15T07:41:00" tags: ["SOA"] author: "Roy Osherove" description: "During TechEd Israel last week, I've also had the privilege to take part in an Architect's panel that took place on the third day (and was largely ignored by the general population, perhaps because there was a Clemens…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tech-Ed Panel Q&A: Architecture in the Real World - Questions By Roy Osherove May 15, 2006 In [SOA](https://osherove.com/blog/category/soa) **Historical article** · Originally published May 15, 2006; technical details may be outdated. During TechEd Israel last week, I've also had the privilege to take part in an Architect's panel that took place on the third day (and was largely ignored by the general population, perhaps because there was a Clemens Vasters Talk Taking place at the same time - Timing is Everything!). Anyway, The panel hosted 8 guys, 4 of which were Microsoft Consulting Services guys from Israel and the others were outside Consultants, myself included. It was a fun panel, hosted by guy Ron of MCS, mainly because it was more of a conversation and banter between different schools of thought (I represented the Agile Side of Architecture). Because I've heard of some people who were sad to miss it, I'll post here some of the most interesting questions from that panel and my answers to them. List Of Questions: 1. Agile Vs. Formal Methodologies ([Answers](http://weblogs.asp.net/rosherove/archive/2006/05/15/AgileVsFormal.aspx)) 1. Is "Agile" just another trend that is slowly turning into a more accepted and practiced methodology? 2. Is this the beginning of the end for "Formal" Methodologies? 3. What role, if any, as VSTS played in the struggle of Agile methodologies to become more "mainstream"? 4. When would you use Agile or Formal Methodologies? 5. What about "hybrid" culture where Agile and Formal mix together rather than going the full on extreme path of "one or the other"? 2. Software Factories and UML ([Answers](http://weblogs.asp.net/rosherove/archive/2006/05/16/446665.aspx), and [one more](http://weblogs.asp.net/rosherove/archive/2006/05/16/446667.aspx)) 1. Has Microsoft Abandoned UML? 2. Is the Domain Specific Language path so different than UML? Can they be combined? 3. SOA 1. Is SOA a Disappointment? 4. Enterprise Service Bus 1. Is it hype? 2. What the idea? 5. OR Mapping 1. Are ORM tools more ripe for usage these days? 2. What ORM would you use (if you would use it) and when? 6. The Role of the Architect - What is it? And what Makes for a Good Architect? I hope to address some or all of these questions during the near future on this blog as separate posts. ## More in SOA [All posts in SOA](https://osherove.com/blog/category/soa) - Jan 9, 2005 ### [Some thoughts on logic duplication in SOA design](https://osherove.com/blog/2005/1/9/some-thoughts-on-logic-duplication-in-soa-design.html) --- title: "Review: SmartInspect - Logging for .NET, Java and Delphi" url: "https://osherove.com/blog/2006/5/15/review-smartinspect-logging-for-net-java-and-delphi.md" canonical: "https://osherove.com/blog/2006/5/15/review-smartinspect-logging-for-net-java-and-delphi.html" published: "2006-05-15T05:33:00" updated: "2006-05-15T05:33:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "This week I’ve decided to promote the Ad for Gurock Software’s SmartInspect on my blog's front page. In this fair review you’ll read why. The idea behind SmartInspect is to give you rich tracing abilities from multiple…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Review: SmartInspect - Logging for .NET, Java and Delphi By Roy Osherove May 15, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 15, 2006; technical details may be outdated. This week I’ve decided to promote the Ad for [Gurock Software’s SmartInspect](http://www.gurock.com/products/smartinspect/?c=14) on my blog's front page. In this fair review you’ll read why. The idea behind [SmartInspect](http://www.gurock.com/products/smartinspect/?c=14)  is to give you rich tracing abilities from multiple frameworks and languages on one hand, and a rich UI client to view, filter and sift through all the generated data on the other hand. As a long time user of other logging frameworks like EIF, Log4Net and such, this is a refreshing product. It’s the same difference I find between other open source vs. commercial software out there (like NAnt vs. FinalBuilder as a good example). This product is simply a comprehensive, well though out set of components that help much more than they interfere. **Framework** **``` // Log simple messages, warnings and exceptions SiAuto.Main.LogMessage("Processing Order 48843"); SiAuto.Main.LogError("Connection refused while trying to connect!"); SiAuto.Main.LogException(e); // Generate call stack information SiAuto.Main.EnterMethod(this, "Button1_Click"); SiAuto.Main.LeaveMethod(this, "Button1_Click"); // Log variables values, datasets or any other object SiAuto.Main.LogInt("index", index); SiAuto.Main.LogObject("order", order); SiAuto.Main.LogDataSet("dataSet", dataSet);   ```**   The basic scenarios include being able to trace entering and leaving methods, and you have static methods on a main object (called SiAuto.Main) to help you with that. But then the fun begins as you find out you have customer tracing methods for most anything else you’d like, like entering and leaving threads and processes, tracing the properties of a passed in object, tracing images, AppDomains and binary files, everything is out there, ready to be used. This is the framework you’d have written yourself if you just had the time, but you’d never had the time to write a UI that handles all that wonderful input. It also comes with Customer code snippets for VS 2005 that can be used to quickly insert that repetitive code, though I’d much rather see a custom tool that instruments/removed the code with such calls (I asked, and they have such a product in planning). **UI** In the UI you can create your own views, each has its own filters (by process, for example) and each can open a different log file, or several log files. You have a custom viewer for images and binary files that you can simply click on to see the “Values” of the traced object. You can also see the StackTrace if you want to, and, the most powerful thing to me was the ability to show the execution of specific threads through the application, each thread showing just the actions under its own context. That would certainly have clear up many things I’ve encountered in my day to day work, and logging without that kind of UI is much more intensive and bug ridden since you need to have lots of logging in place for thread specific logging. Thanks Gurock! **TCP vs. log tracing** Another bonus is the ability to get “live” logging views using the built in TC tracing in the viewer and the SmartInspect Objects. You don’t need to do anything but write some “Debug” statements to see them show up in the SI viewer immediately by default. You can of course then change that to using the log files we all know and love, and you can use custom Smart Inspect Trace Listeners to  integrate directly with your own Trace Listeners in existing application code. It just works. **Extensibility** You can actually extend the various classes in the SI Library to create your own UI Filters, Customer Tracers, Levels and more. That’s a big plus because personally I don’t like to be “stuck” with an object model that only lacks some small features to be perfect. **Multiple Sources** The ability to Trace from multiple components or applications, written in different languages is an important one, especially for project which have been going on for more than a couple of years. In that regard, SmartInspect falls short by not allowing to display simultaneous data from multiple sources, not being able to combine several log files into a single view, and not allowing you to watch the full flow of user actions between different applications. That’s a shame because that’s a golden goose for distributed applications.. **Help** The guys at Gurock seemed to have spent just as much time on documenting the abilities of  this product as they did building it, and it shows. The help is easy to read and helped me a lot figuring out my first steps using the product. The main UI of the product includes very easy to understand tutorials for beginners on Java , VB.NET, C# and Delphi development with their framework. **Missing** SmartInspect has its flaws, but they mostly fall under the “it would be great if..” department. For example you can open **multiple log files** from multiple applications under the same view, but they won’t be sorted by time and date. It would be great if it did, because then you could see a flow of actions between applications(They are planning the ability to view multiple views one next to each other – still not good enough for me). Also, You can’t use SmartInspect from **Visual Basic** 6.0(They don’t have a COM Based framework at all) which to me is a big gaping hole – there are a lot of legacy apps out there in VB/FoxPro that would \*love\* the use of COM in this case, and it does not seem to me to make sense not to have this support(they are not even sure if they will add such support in the future). **Summary** Overall, The fully-baked abilities of [SmartInspect](http://www.gurock.com/products/smartinspect/?c=14) along with the impressive UI would be near perfect, but due to the missing features mentioned here, I have to give this product an **8 out of 10**, which is still whole lot of functionality in a product that starts at $229 per license. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 18, 2006 ### [SQLOne - SQL Converter for many DB Dialects?](https://osherove.com/blog/2006/5/18/sqlone-sql-converter-for-many-db-dialects.html) - May 16, 2006 ### [Cool Freeware: Visual Task Tips](https://osherove.com/blog/2006/5/16/cool-freeware-visual-task-tips.html) - Apr 25, 2006 ### [Debugger Visualizer for MethodInfo, DynamicMethod, and MethodBase available for download](https://osherove.com/blog/2006/4/25/debugger-visualizer-for-methodinfo-dynamicmethod-and-methodb.html) - Apr 2, 2006 ### ["Cool Commands" for VS 2005 is a free and useful little Add-in!](https://osherove.com/blog/2006/4/2/quotcool-commandsquot-for-vs-2005-is-a-free-and-useful-littl.html) --- title: "The Good and Bad in Tech-Ed Israel 2006" url: "https://osherove.com/blog/2006/5/15/the-good-and-bad-in-tech-ed-israel-2006.md" canonical: "https://osherove.com/blog/2006/5/15/the-good-and-bad-in-tech-ed-israel-2006.html" published: "2006-05-15T04:50:00" updated: "2006-05-15T04:50:00" tags: ["Community"] author: "Roy Osherove" description: "This Year’s Tech-Ed Israel has been very good in many many ways . There were some glitches and mistakes, but overall I’d like to give props to Microsoft Israel for putting together a very good conference. Here are some…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Good and Bad in Tech-Ed Israel 2006 By Roy Osherove May 15, 2006 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published May 15, 2006; technical details may be outdated. This Year’s Tech-Ed Israel has been **very good in many many ways**. There were some glitches and mistakes, but overall I’d like to give props to Microsoft Israel for putting together a very good conference. Here are some good and bad things in This Year’s Tech-Ed **The Good:** - **Great Session offerings**. I’ve heard from several people who attended that they’ve had a very good time listening to the sessions in this year’s Tech-Ed. I’ve heard much less mumblings about how bad some session were (except for the main keynote and ending keynotes demos). MS Israel was able to bring in some of the world’s leading experts to talk to us, and it’s a proud moment for us. I think the fact that [**Yosi Taguri**](http://blogs.microsoft.co.il/blogs/yosit) and **Eliaz Tobias** have brought in the passion and knowledge of worldwide presenters into our little country, and have helped make a diversified setting of sessions which everyone can enjoy. - **[ArcCasts](http://channel9.msdn.com/shows/ARCast_with_Ron_Jacobs)**: Eliaz Tobias made a great leap of faith in bringing Ron Jacobs over to Israel to do a series of ArcCasts with some of the speakers. It was a risky move because there were big chances of no-one actually showing up. That turned out to be a non issue – as people gathered to hear ArcCasts and have fun. It wasn’t .NET Rocks live just yet, but it had a nice buzz feeling in the air. (though the air conditioning sucked) - **[International Speakers](http://www.microsoft.com/israel/teched/presspass/default.aspx)**: What can I say? It’s all good and I heard great feedback about the dev and Arch Track in regards to the international speakers there. Good job. - **[Great Party](http://www.microsoft.com/israel/teched/photos/default.aspx)**! But you already knew that, didn’t you? - **Wireless Reception** in \*most\* places. This was a big operation to manage and I think they did a pretty good job. It wasn’t perfect, but the thought was very progressive. Last year I think this wasn’t even brought up. - **Good Feedback Forms**: This year the attendees to by email every day the feedback form, and could win cool prizes including a trip to New York. That's \*much\* better than last year, and a very good idea in itself. **The Bad:** - As I’ve said – **the [opening](http://weblogs.asp.net/rosherove/archive/2006/05/14/446359.aspx) and closing KeyNotes** were terrible. The opening was bad, but the ending was more so – most of the demos just didn’t work, as well as the air conditioning in the first 50 minutes. Plus, it was very very boring (who wants to hear a MS Marketing guy speak in a 35 degree closed tent for 20 minutes?). Even the vista demos and Media Center demos broke mid way, as well as the mobile ones (no wireless reception made it pretty hard for the pocket pc to talk to the media center and control it). - [The Official Tech-Ed Blog](http://www.microsoft.com/israel/teched/presspass/default.aspx). This was run by Lior Tzoref. Why is it bad? No comments. Just writing. And it wasn't frequent enough for me or others to want to update on it daily. I sent an email to Lior about this and he commented that comments is not necessary, and that you can sent any comment by email. Righiiiit. I think Lior has yet to realize what Blogging is about. Perhaps he should join the Microsoft Israel Bloggers instead. That's a good idea by Yosi Taguri right there. - **The names of the presenters** were not printed in the program that was handed out as part of the Tech-Ed ticket. As a last minute resort, they ended up printing a separate bunch of pages listing the talks with the speakers, but that was quite out of date as well (and not very organized). That reeks of amateurism and lack of attention to small details – the ones that make Tech-Ed so much nicer. I know several dozes of people who missed talks they wanted to see, or speakers they wanted to see because of lack of proper information in that regard. Shame. - **The Tech Ed site**: No way to search talks by presenter (not to mention that presenter names were not there in the first place next to the talks!) or by text search. That’s just wrong. - Practically **no vegetarian food** . My wife is vegetarian and joined me (she’s a dev too), and had to search and scramble to get something proper to eat. That may sound like a little thing, but considering all the amounts of food that were there, that shows a big “huh?” on the catering part. “Clueless” in the food department was not something I expected of Microsoft Tech-Ed. - **No Air conditioning** in some parts of the hotels and talks. In Eilat. 40 Degrees outside. 35 degrees inside. How many people do you think attended those talks? Need I say more? - **No Tech-ED DVD** Handed out at the end? This is more of a rumor for now, but I’ve heard that there will be no Tech-Ed DVD with videos of the lectures. In fact, non of the lectures were video recorded. Just Audio. - I heard some lectures/panels were **not recorded at all**. Why on earth should that happen? (including the Architect’s panel) - **Once every two years**? Come on! ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - May 22, 2006 ### [.NETWeblogs upgraded - finally.](https://osherove.com/blog/2006/5/22/netweblogs-upgraded-finally.html) - May 18, 2006 ### [Oren Ellenbogen rocked last night about Generics, Delegates and Anonymous Methods.](https://osherove.com/blog/2006/5/18/oren-ellenbogen-rocked-last-night-about-generics-delegates-a.html) - Apr 6, 2006 ### [Port 25: Microsoft Open Source Software Lab's "Channel 9"?](https://osherove.com/blog/2006/4/6/port-25-microsoft-open-source-software-labs-quotchannel-9quo.html) - Apr 2, 2006 ### [Upgrading weblogs.asp.net from a slow and painful death](https://osherove.com/blog/2006/4/2/upgrading-weblogsaspnet-from-a-slow-and-painful-death.html) --- title: "Trend: Who works the hardest and knows the least?" url: "https://osherove.com/blog/2006/5/14/trend-who-works-the-hardest-and-knows-the-least.md" canonical: "https://osherove.com/blog/2006/5/14/trend-who-works-the-hardest-and-knows-the-least.html" published: "2006-05-14T22:45:00" updated: "2006-05-14T22:45:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Now here's an interesting thought from Google Trends: Which country outsources the most work in .NET? I'd love to say that Israel is third just because we care so much about technology etc. but I think the Truth may be…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Trend: Who works the hardest and knows the least? By Roy Osherove May 14, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 14, 2006; technical details may be outdated. Now here's an interesting thought from Google Trends: Which country outsources the most work in .NET? I'd love to say that Israel is third just because we care so much about technology etc. but I think the Truth may be somewhere in the space between "we work cheap for people overseas" and "we work really hard on our own stuff". Of course, a cynical bastard might say that the graphs merely show the amount of **lack of knowledge** by these regions, which forces them to search Google, but I'd say that was a big mistake. Hmm. I'm sure. I wonder what happens when you put "Java" in there. _\[via_ [_Firoz_](http://www.firoz.name/2006/05/13/google-trends-net-aspnet-c-vbnet/)_\]_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 29, 2006 ### [Google Notebook - Would \*Kill\* RSS Feeds](https://osherove.com/blog/2006/5/29/google-notebook-would-kill-rss-feeds.html) - May 16, 2006 ### [BS Bingo - Making Dull Meetings Fun Again](https://osherove.com/blog/2006/5/16/bs-bingo-making-dull-meetings-fun-again.html) - Apr 28, 2006 ### [Can you recommend a good Exchange Hosting service?](https://osherove.com/blog/2006/4/28/can-you-recommend-a-good-exchange-hosting-service.html) - Apr 23, 2006 ### [Advertise your Tool/Component/Site on ISerializable.com Blog](https://osherove.com/blog/2006/4/23/advertise-your-toolcomponentsite-on-iserializablecom-blog.html) --- title: "Small Tip: Getting the name of the current or calling method at runtime for debugging" url: "https://osherove.com/blog/2006/5/14/small-tip-getting-the-name-of-the-current-or-calling-method.md" canonical: "https://osherove.com/blog/2006/5/14/small-tip-getting-the-name-of-the-current-or-calling-method.html" published: "2006-05-14T22:05:00" updated: "2006-05-14T22:05:00" tags: [".NET", ".Net 2.0"] author: "Roy Osherove" description: "Here's a simple little trick that you can use when using Debug Mode(though it does have its overhead, so turn it off when you don't need it). You know how you write those nasty trace messages that say \"I'm…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Small Tip: Getting the name of the current or calling method at runtime for debugging By Roy Osherove May 14, 2006 In [.NET](https://osherove.com/blog/category/net), [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published May 14, 2006; technical details may be outdated. Here's a simple little trick that you can use when using Debug Mode(though it does have its overhead, so turn it off when you don't need it). You know how you write those nasty trace messages that say "I'm entering/leaving this current method"? Ain't it a nasty thing to keep writing the names by hand, or using Macros to automate it? The maintenance is just too much when refactoring method names. You can use the class "StackTrace" located under "System.Diagnostics" to return the name of the current method (or one of it's callers up the stack. So, if you wanted to write the name of the current method with StackTrace you could write:    **Debug.WriteLine("Entering " + new StackTrace().GetFrame(0).GetMethod().Name);** The "0" indicated the index of the frame to show, in this case, the lowest one in the stack - the current one. "1" means the immediate caller to this method, "2" means the caller to the caller and so on. You need to watch out if you use this in Release mode, because the compiler may have some interesting optimization effects, like removing redundant method calls etc.. but it's a nice technique for tracing. There's even a simpler way to do this by calling the MethodBase class's static "GetCurrentMethod" method:    **Debug.WriteLine("Entering " + MethodBase.GetCurrentMethod().Name);** But using the first method gets you the ability to look \*up\* the stack so you can write code like this: **private void MyMethod()** **{**  **Debug.WriteLine("Entering " + My.Name);** **}** **public class My**        **{**    **public static string Name         {             get             {                 try                 {                     return new StackTrace().GetFrame(1).GetMethod().Name;                 }                 catch (Exception)                 {**                     **return "Unknown Method";                 }             } }** You can go further by adding other stuff to the current method like a special description attribute shown in debug mode like this: **\[Desc("This method is just silly")\]** **public void MyMethod()** **{**    **Debug.WriteLine(My.Description);** **}** this is possible by adding the following property to the "My" class"     **public static string Description         {             get             {                 try                 {                     return new StackTrace().GetFrame(1).GetMethod()                         .GetCustomAttributes(typeof(Desc),true)\[0\].Description;                 }                 catch (Exception)                 {**                     **return string.Emtpy;                 }             }         }** ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 22, 2006 ### [Review - Automise: Automise almost anything](https://osherove.com/blog/2006/5/22/review-automise-automise-almost-anything.html) - May 18, 2006 ### [CLR Generics Vs. C++ Templates - some good links](https://osherove.com/blog/2006/5/18/clr-generics-vs-c-templates-some-good-links.html) - Apr 27, 2006 ### [Persistore - Interesting attempt at a .NET Persistence Engine? You decide.](https://osherove.com/blog/2006/4/27/persistore-interesting-attempt-at-a-net-persistence-engine-y.html) - Apr 14, 2006 ### [Partial Classes - Add to your Unit Testing Bag of Tricks](https://osherove.com/blog/2006/4/14/partial-classes-add-to-your-unit-testing-bag-of-tricks.html) --- title: "Why did 2,000 people leave during Steve Sinoflsky's Tech-Ed Talk? Not Just Boredom" url: "https://osherove.com/blog/2006/5/14/why-did-2000-people-leave-during-steve-sinoflskys-tech-ed-ta.md" canonical: "https://osherove.com/blog/2006/5/14/why-did-2000-people-leave-during-steve-sinoflskys-tech-ed-ta.html" published: "2006-05-14T07:57:00" updated: "2006-05-14T07:57:00" tags: [] author: "Roy Osherove" description: "On the first day of Tech-Ed, on the assembly Talk (the one that takes two and a half hours), Steven Sinofsky, the new manager of the windows division, went up on the podium to talk. He was on after a couple of short…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why did 2,000 people leave during Steve Sinoflsky's Tech-Ed Talk? Not Just Boredom By Roy Osherove May 14, 2006 **Historical article** · Originally published May 14, 2006; technical details may be outdated.     On the first day of Tech-Ed, on the assembly Talk (the one that takes two and a half hours), Steven Sinofsky, the new manager of the windows division, went up on the podium to talk. He was on after a couple of short films (which were funny) and a short introduction from Lior Tzoref (the [official teched blogger who won't take comments](http://www.microsoft.com/israel/teched/blog/default.aspx)). There was magic in the air as 3 thousand people watch Steve go up onto the podium to talk about his vision for a better windows. This was the main assembly at the conference. Surely there were going to be some amazing demos of Windows Vista, XBox, or anything else that has the word "cool" as an alias these days. Then Steve said something like "I'm pretty much new to Windows division, but I'm coming from Office, which I know much about". Silence.  I got the weird feeling that this talk was not going to be as great as I'd hoped. Then Steve said something like "so let's talk about the new XML features in Office Server intropdkj standradslsdfjnsdfsc...". That was not a typo. There was so much noise in the great big tent where we were sitting that I couldn't hear what he was saying. People were moving their chairs backwards and started leaving the tent. It was awful. From a full tent of 3000 folks, probably less than 1,000 stayed on to hear Steve Talk. I was not one of them - I left with a good excuse. I had a talk coming up later that day that I wanted to get ready for, and this was simply a big waste of time.   So why did people leave? - The Israeli Crowd is a big mess of impolite rude people who don't have an ounce of patience to hear something they are not interested in. That said - their actions have reflected the awful truth - this was a very bad judgment call on Steve's part. - You \*don't\*, you just **don't,** talk about Office and XML features in a main Assembly of TechEd, where "cool" is supposed to be uttered every 3-4 minutes by the attendees. - You don't let people out during the main assembly. - You don't save the Vista demos for the end of a 2.5 hour talk. - You get more videos and "cool" stuff going. - You make sure there is good wireless reception in the tent, so that people will at least check their emails instead of leaving searching for a hotspot. - You expect a crowd of people, ~_many of who are not that technical after all_~, to sit and listen to a talk about XML and office while there is a pool, hotspots and beautiful girls outside the tent? For once, I agreed with the crowd and went on my way. Even so, that's 30 minutes out of my life I'll never get back. Cross Posted from [Blogs.Microsoft.Co.Il/Blogs/Royo](http://blogs.microsoft.co.il/blogs/Royo) --- title: "My \"Deep Reflection\" Talk at TechEd - Slides, Demos and links available." url: "https://osherove.com/blog/2006/5/14/my-quotdeep-reflectionquot-talk-at-teched-slides-demos-and-l.md" canonical: "https://osherove.com/blog/2006/5/14/my-quotdeep-reflectionquot-talk-at-teched-slides-demos-and-l.html" published: "2006-05-14T07:09:00" updated: "2006-05-14T07:09:00" tags: [] author: "Roy Osherove" description: "Update : Oren has a more technical scoop of my Talk and the WinFX Talk he attended on Day 1. He gave us both a 9 out of 10, which I'd say is a pretty remarkable first day at TechEd :) BTW, Oren will be speaking at the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My "Deep Reflection" Talk at TechEd - Slides, Demos and links available. By Roy Osherove May 14, 2006 **Historical article** · Originally published May 14, 2006; technical details may be outdated. _**Update**:_ [_Oren has a more technical scoop_](http://www.lnbogen.com/TechEd2006Day1OurStoryBegins.aspx) _of my Talk and the WinFX Talk he attended on Day 1. He gave us both a 9 out of 10, which I'd say is a pretty remarkable first day at TechEd :) BTW, Oren will be speaking at the [C# User Group](http://www.comconix.com/ivcug/Invitation.htm) this week [on Advanced Uses of delegates and Generics](http://www.lnbogen.com/ct.ashx?id=8e5e2074-fcbf-4b88-9730-a84d21af6872&url=http%3a%2f%2fwww.lnbogen.com%2fPresentingAboutAdvanceUseOfDelegatesGenericsInTheNextCGroup.aspx). I just might make it there and catch him live._ --- Oh.My.God. What a great experience this Tech-Ed Israel has been! My Session about Deep Reflection went very well, if I do say so myself. It felt smooth ,and the only thing I'd change is that I'd take less questions from the audience next time. **First**, here are the [slides](http://teamagile.com/Downloads/Deep_Reflection_ppt.zip) and [demos](http://teamagile.com/Downloads/ReflectionDemos.src.zip) for this talk that you can download and play with. Here are resource links from the talk: - [TestDriven.NET](http://www.testdriven.net/) \- The Addin I used to demo the code with - [Debugger Visualizer](http://weblogs.asp.net/rosherove/archive/2006/04/25/MethodsVisualizer.aspx) for DynamicMethod and MethodInfo - [Mdbg](http://www.microsoft.com/downloads/details.aspx?familyid=38449a42-6b7a-4e28-80ce-c55645ab1310&displaylang=en) \- IL Debugger with full source in .NET ([more info](http://blogs.msdn.com/jmstall/archive/2005/11/08/mdbg_linkfest.aspx)) It's funny how, in this 400 level session, a guy came up to me right after the talk finished and said something like "you didn't explain what Reflection was". After explaining to him that my session was meant for people who already know some reflection (as I mentioned at the beginning of my talk) he said "OK, so you can tell me in a sentence what Reflection is?". I did. And he said "Great talk" and left. I'm not sure if he was just polite, but it was a weird experience after all. My talk finished with a sentence my wife actually came up with (ain't it fun when you wife is a developer too??!!) which goes something like "We are standing here in Eilat, where the mountains Reflect beautifully on the water during sunrise and sunset. The next time you witness a beautiful, romantic sunset, I want you to think about Reflection, And me." It certainly left an impression, and seems to be just about the only thing people remember from that talk ;) In any case, if you were in my talk, I'd \*love\* to hear your comments (good or bad!) about it so that I can either feel good about it, or get better for next time. Cross Posted from [Blogs.Microsoft.Co.Il/Blogs/Royo](http://blogs.microsoft.co.il/blogs/Royo) --- title: "Linux's Random Number Generator - Not That Great?" url: "https://osherove.com/blog/2006/5/8/linuxs-random-number-generator-not-that-great.md" canonical: "https://osherove.com/blog/2006/5/8/linuxs-random-number-generator-not-that-great.html" published: "2006-05-08T02:06:00" updated: "2006-05-08T02:06:00" tags: [] author: "Roy Osherove" description: "Benny Pinkas of the Haifa University in Israel ( http://www.pinkas.net/ ), claims that after reverse engineering the Linux Kern's Random Number Generator, he was able to come to some alarming conclusions. Mainly, that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Linux's Random Number Generator - Not That Great? By Roy Osherove May 8, 2006 **Historical article** · Originally published May 8, 2006; technical details may be outdated. Benny Pinkas of the Haifa University in Israel([http://www.pinkas.net/](http://www.pinkas.net/) ), claims that after reverse engineering the Linux Kern's Random Number Generator, he was able to come to some alarming conclusions. Mainly, that the Random Number Generation Engine used in Linux, which is used anywhere from creating secure keys for the net, user passwords etc. is not that secure since it is too predictable. He recommends that OS Developers take a long hard look at the quality of code for sensitive components, so that this will not happen again. Link to the Hebrew version of the announcement here: [http://www.pc.co.il/\_DailyMaily/ItemClean.asp?ArticleID=4735&Vol=134&SearchParam=&CategoryID=72](http://www.pc.co.il/_DailyMaily/ItemClean.asp?ArticleID=4735&Vol=134&SearchParam=&CategoryID=72) Link to the PDF Document of his study (To appear in the 2006 IEEE Symposium on Security and Privacy (Oakland Conference), May 21-24, 2006) \[ PDF in English\] : [http://www.pinkas.net/PAPERS/gpr06.pdf](http://www.pinkas.net/PAPERS/gpr06.pdf) --- title: "Broken Download Links Fixed! XtUnit and EventsVerifier" url: "https://osherove.com/blog/2006/5/4/broken-download-links-fixed-xtunit-and-eventsverifier.md" canonical: "https://osherove.com/blog/2006/5/4/broken-download-links-fixed-xtunit-and-eventsverifier.html" published: "2006-05-04T12:19:00" updated: "2006-05-04T12:19:00" tags: [] author: "Roy Osherove" description: "There are some broken links hidden in my blogs from the past year - mainly because I was changing hosts, domains, etc.. So here I am, rectifying that situation now: EventsVerifier class : Helps write unit tests that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Broken Download Links Fixed! XtUnit and EventsVerifier By Roy Osherove May 4, 2006 **Historical article** · Originally published May 4, 2006; technical details may be outdated. There are some broken links hidden in my blogs from the past year - mainly because I was changing hosts, domains, etc.. So here I am, rectifying that situation now: - [EventsVerifier class](http://teamagile.com/downloads/teamagile.eventsverifier.zip): Helps write unit tests that verify the throwing/non throwing of events from a class ([more info](http://weblogs.asp.net/rosherove/archive/2005/06/13/EventsVerifier.aspx)) - [XTUnit 1.01](https://osherove.com/downloads/XtUnit101.zip): Add Rollback abilities and more to your unit tests [(more Info](http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx)) - [XTUnit 1.02 Bin](http://teamagile.com/downloads/teamagile.XtUnit.Bin.zip) and [Src](http://teamagile.com/downloads/teamagile.XtUnit.src.zip) (Some people had problems with it, but it's just as good and even better) If you find more broken links, let me know either with a comment here, or through the contact link on the blog! --- title: "Introducing The Retro Encabulator" url: "https://osherove.com/blog/2006/5/3/introducing-the-retro-encabulator.md" canonical: "https://osherove.com/blog/2006/5/3/introducing-the-retro-encabulator.html" published: "2006-05-03T22:55:00" updated: "2006-05-03T22:55:00" tags: [] author: "Roy Osherove" description: "Here's what you look like to your parents when you explain to them why your new laptop was worth $2,500: http://video.google.com/videoplay?docid=5125780462773187994&q=rockwell I swear, it's sad as it is funny." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing The Retro Encabulator By Roy Osherove May 3, 2006 **Historical article** · Originally published May 3, 2006; technical details may be outdated. Here's what you look like to your parents when you explain to them why your new laptop was worth $2,500: [http://video.google.com/videoplay?docid=5125780462773187994&q=rockwell](http://video.google.com/videoplay?docid=5125780462773187994&q=rockwell) I swear, it's sad as it is funny. --- title: "The \"PowerShell\" Naming Stupidity" url: "https://osherove.com/blog/2006/5/3/the-quotpowershellquot-naming-stupidity.md" canonical: "https://osherove.com/blog/2006/5/3/the-quotpowershellquot-naming-stupidity.html" published: "2006-05-03T20:41:00" updated: "2006-05-03T20:41:00" tags: [] author: "Roy Osherove" description: "\" PowerShell \" ?What a stupid name for a product known as \" Monad \"! Sounds like one of the things I'd download at TuCows for $15, doesn't it? Cross Posted from Blogs.Microsoft.Co.Il/Blogs/Royo" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The "PowerShell" Naming Stupidity By Roy Osherove May 3, 2006 **Historical article** · Originally published May 3, 2006; technical details may be outdated. "[PowerShell](http://www.microsoft.com/downloads/details.aspx?FamilyId=4A2D5ECB-0740-4AD5-98D3-EB236C3F37D9&displaylang=en)" ?What a stupid name for a product known as "[Monad](http://en.wikipedia.org/wiki/MSH_\(shell\))"! Sounds like one of the things I'd download at [TuCows](http://www.tucows.com/) for $15, doesn't it? Cross Posted from [Blogs.Microsoft.Co.Il/Blogs/Royo](http://blogs.microsoft.co.il/blogs/Royo) --- title: "Misc. Links and odd ends" url: "https://osherove.com/blog/2006/5/3/misc-links-and-odd-ends.md" canonical: "https://osherove.com/blog/2006/5/3/misc-links-and-odd-ends.html" published: "2006-05-03T20:04:00" updated: "2006-05-03T20:04:00" tags: [] author: "Roy Osherove" description: "Scott is so totally wrong - it hurts to read. He thinks FAR and xplorer 2 are the best explorer replacements ever, but personally I think once he tries Total Commander , he'll never go back (the UI looks like an oldie,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Misc. Links and odd ends By Roy Osherove May 3, 2006 **Historical article** · Originally published May 3, 2006; technical details may be outdated. [Scott is so totally wrong](http://www.hanselman.com/blog/ReplacingExplorerexeTheReturnOfNortonCommanderWithXplorer2AndFAR.aspx) \- it hurts to read. He thinks  [FAR](http://farmanager.com/screens.php?l=en) and [xplorer2](http://zabkat.com/x2lite.htm) are the best explorer replacements ever, but personally I think once he tries [Total Commander](http://www.ghisler.com/), he'll never go back (the UI looks like an oldie, but it has more features than both combined, methinks) Oh, and have I mentioned how much I like [Larkware](http://www.larkware.com/) yet? I like it a lot! Unfortunately, I haven't had enough time lately to check it out, so here's a collection of links posted there in the last month or so, which I find interesting: - [cl1p.net](http://cl1p.net/) - Make up your own URL, paste in data, go to another machine, visit the URL, copy the data back. An easy way to use HTTP to transport data between computers. - [csUnit 2.1.1 BETA](http://www.csunit.org./) - This unit-testing tool for .NET now supports .NET 2.0 and Visual Studio 2005. - [Automise](http://www.automise.com/) - VSoft has released their general-purpose automation utility, with a GUI based on the fantastic FinalBuilder. You can download a 30-day eval copy [here](http://www.automise.com/automise-downloads.aspx), or license it starting at $195 In other news - **NUnit 2.2.5 Released **This is an update to the recent 2.2.4 release, the first new production release of NUnit in over a year. See [this blog entry](http://nunit.com/blogs/?p=18) for a summary of features and links to the release - [Ohad keeps making his Beat-Box Demo cooler and cooler](http://weblogs.asp.net/israelio/archive/2006/05/03/444931.aspx).It's for Tech-Ed Israel and demonstrates creating a beat mixing application that uses [EntLib](http://workspaces.gotdotnet.com/entlib) for all it's backend stuff.  I saw this live and this is indeed a demo for the books. In fact, he should distribute it after Tech-Ed Israel with source, because this is one cool demo! That's it. Nothing else interesting happening out there for us .NET techies. Really. I swear. Cross Posted from [Blogs.Microsoft.Co.Il/Blogs/Royo](http://blogs.microsoft.co.il/blogs/Royo) --- title: "Review: {SmartAssembly}- Assembly Improvement and Protection Tool" url: "https://osherove.com/blog/2006/4/30/review-smartassembly-assembly-improvement-and-protection-too.md" canonical: "https://osherove.com/blog/2006/4/30/review-smartassembly-assembly-improvement-and-protection-too.html" published: "2006-04-30T00:52:00" updated: "2006-04-30T00:52:00" tags: ["Product Reviews"] author: "Roy Osherove" description: "I'm very happy to introduce {SmartAssembly} as part of my official blog's \" Ads I stand Behind \" advertising. I chose to advertise { SmartAssembly} after taking a long look at the application, and realizing that it is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Review: \{SmartAssembly\}- Assembly Improvement and Protection Tool By Roy Osherove April 30, 2006 In [Product Reviews](https://osherove.com/blog/category/product-reviews) **Historical article** · Originally published April 30, 2006; technical details may be outdated. I'm very happy to introduce [{SmartAssembly}](http://www.smartassembly.com/) as part of my official blog's "[Ads I stand Behind](http://weblogs.asp.net/rosherove/archive/2006/04/23/AdvertiseOnThisBlog.aspx)" advertising. I chose to advertise {**SmartAssembly}** after taking a long look at the application, and realizing that it is indeed something I would find good use for in my real day to day work. In short, {**SmartAssembly}** is an Assembly "improvement" tool, to be used after you've created your project and your app is ready to be deployed. It's very slick and easy to use UI allows doing many useful things to the assembly such as **merging all of its dependencies into one file**, removing code that is not used, **obfuscate** the code and even wrapping your application with a **global exception handler**. In short, it's a easy click-through product that allows making your app safer and even run quicker and be more easily deployed, with the ease of use of a mouse. [![Setting Options](https://osherove.com/img/wb/126531fb_www.smartassembly.com_images_screenshot03small.png)](http://www.smartassembly.com/product/showscreenshot.aspx?image=screenshot03.png&title=Setting%20Options)  _Very easy and simple to manipulate UI_ **My favorite feature** thus far is the global exception handler (I love all the rest, but this feature really blew me away personally) - it instruments your code and handles any non-handled exceptions with a nice dialog (aimed at developers, not customers) that allows you to actually see the current stack trace, see the value of each parameter to the current function and really, determine very easily where the problem may lie in most cases. _Good Stack trace and exception handling abilities: This is an un-handled exception that was automatically handled by SmartAssembly. Priceless for when your QA department has a problem with your application.._ Here's the "official" feature list from the site: ### Key Features
Merging 
Merging
Merges your Application dependencies with your main Assembly.
Pruning
Pruning
Automatically Detects and Removes the non-useful code and metadata.
Protection
Protection
{smartassembly} is a smart Obfuscator, which automatically detects which code can or can't be obfuscated. {smartassembly} also encodes the strings in order to improve protection.
Optimization
Optimization
The combination of the previous features leads to an improvement of your Application’s performances.
Exception Reporting Web Service
Exception Reporting Web Service
Automatically adds missing exceptions handling, and Reports these exceptions with detailed snapshot information to the developer.
All
All-in-one
One-stop Improvement and Protection tool in one single post-compilation process.
Notice number 5 there. That's a feature you get automatically which you can use to figure out what problems your users are dealing with the most with your app. Priceless. **Cons** I did find some cons in the application, but nothing too serious so that it would prevent me from using it: - The setup requires .NET 1.1, since it specifically uses some classes there that broke in .NET 2.0, so if you don't have .NET 2.0, you'll have to download that and install it before it sets up. - If your application uses a plugin mechanism, where you load other "plugin" assemblies at runtime, you'll need to do a little more work if you want your application \*and\* your plugin assemblies to be merged with their respective dependencies. You'll need to "merge" each of them (that is "MyApp" and "MyPlugin" separately with their (shared) dependencies - usually some third dll that holds the various interfaces -so that dll ends up merged two times - to the main application and to plugin which uses it as well. If only they had the UI to say "this dll is a shared dependency between this library and my main project" things would be simpler. Again - not a big reason to not use this, just a little thing to know if your app loads stuff with Reflection. - There are some small and insignificant "spelling" errors in the main UI('Reflexion' instead of 'Reflection') - growing pains probably. **Final Mark:** Overall, I'd give [{SmartAssembly}](http://www.smartassembly.com/) a **7.5 out of 10** (for lack of support of pluggable apps handling, which for me is quite relevant and should be for many apps out there). The ease of use, the power and the overall feature set combine to give a very nice and simple product that anyone could find useful for public applications. It's the only product out there that has all this in an easy UI, and I don't see any other product doing a better job right now. --- _**Note:**_ _This is a paid (and honest) review of the product which is also being advertised on ISerializable.com's main page. If you think your product is good enough to be up here as well,_ [_see this link_](http://weblogs.asp.net/rosherove/archive/2006/04/23/AdvertiseOnThisBlog.aspx)_._ ## More in Product Reviews [All posts in Product Reviews](https://osherove.com/blog/category/product-reviews) - May 29, 2006 ### [Review: Shell MegaPack - Windows Explorer GUI Replacement Controls](https://osherove.com/blog/2006/5/29/review-shell-megapack-windows-explorer-gui-replacement-contr.html) - May 22, 2006 ### [Review - Automise: Automise almost anything](https://osherove.com/blog/2006/5/22/review-automise-automise-almost-anything.html) - Jan 15, 2006 ### [Cheat Sheets for ASP.NET and Browsers \[The Browser Book\]](https://osherove.com/blog/2006/1/15/cheat-sheets-for-aspnet-and-browsers-the-browser-book.html) - Jan 15, 2006 ### [HanselMinutia](https://osherove.com/blog/2006/1/15/hanselminutia.html) --- title: "Can you recommend a good Exchange Hosting service?" url: "https://osherove.com/blog/2006/4/28/can-you-recommend-a-good-exchange-hosting-service.md" canonical: "https://osherove.com/blog/2006/4/28/can-you-recommend-a-good-exchange-hosting-service.html" published: "2006-04-28T22:36:00" updated: "2006-04-28T22:36:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It's time for me to upgrade my email hosting. Right now I have an Exchange server running at home which I configured myself (with lots of problems, I might add - I'm not a great exchange admin). Now that I have my new…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Can you recommend a good Exchange Hosting service? By Roy Osherove April 28, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 28, 2006; technical details may be outdated. It's time for me to upgrade my email hosting. Right now I have an Exchange server running at home which I configured myself (with lots of problems, I might add - I'm not a great exchange admin). Now that I have my new mobile what I \*really\* need is outlook web access, but that seems to be beyond my mental abilities after looking at the docs. SO, I'm looking for an exchange hosting solution, preferably for 2 or more mailboxes, but for now I can just deal with one mailbox that all my other domains will point to. My requirements are: - Allows outlook web access and mobile access - Hopefully payable with PayPal but credit card will do if no other option - Cheap - Reliable - Easy to setup (I use [ZoneEdit](http://www.zoneedit.com/) to manage my domains so my list of TODO should be nothing more that setting my mail to the new IP over there) Do you know an exchange hosting company that you trust? that you can recommend? A friend suggested these guys: [http://www.lanlogic.net/exchange/2003-shared.asp](http://www.lanlogic.net/exchange/2003-shared.asp), but I'd like a second opinion. Are there any specific gotchas I should look out for when doing something like this? What's the "normal" asking price for such a service? Your feedback is appreciated. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 16, 2006 ### [BS Bingo - Making Dull Meetings Fun Again](https://osherove.com/blog/2006/5/16/bs-bingo-making-dull-meetings-fun-again.html) - May 14, 2006 ### [Trend: Who works the hardest and knows the least?](https://osherove.com/blog/2006/5/14/trend-who-works-the-hardest-and-knows-the-least.html) - Apr 23, 2006 ### [Advertise your Tool/Component/Site on ISerializable.com Blog](https://osherove.com/blog/2006/4/23/advertise-your-toolcomponentsite-on-iserializablecom-blog.html) - Mar 24, 2006 ### [Introvert Speaker == Extrovert Writer?](https://osherove.com/blog/2006/3/24/introvert-speaker-extrovert-writer.html) --- title: "Persistore - Interesting attempt at a .NET Persistence Engine? You decide." url: "https://osherove.com/blog/2006/4/27/persistore-interesting-attempt-at-a-net-persistence-engine-y.md" canonical: "https://osherove.com/blog/2006/4/27/persistore-interesting-attempt-at-a-net-persistence-engine-y.html" published: "2006-04-27T22:16:00" updated: "2006-04-27T22:16:00" tags: [".NET"] author: "Roy Osherove" description: "Just got this email from Hugh Moran of MoranTex about a new beat of a product they are testing out to help with persisting things and getting them out (think NHibernate ) only this technology is based on Memory Mapped…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Persistore - Interesting attempt at a .NET Persistence Engine? You decide. By Roy Osherove April 27, 2006 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published April 27, 2006; technical details may be outdated. Just got this email from Hugh Moran of MoranTex about a new beat of a product they are testing out to help with persisting things and getting them out (think [NHibernate](http://www.nhibernate.org/)) only this technology is based on Memory Mapped files. Interesting though I seem to recall a discussion about MMFs sometime ago where some problems occurred. In any case, I'm no expert on this issue, but I'm sure some of you are. So here's your chance to help "make or break" a product : - by checking it out, leaving comments etc.. My first comment would be:  - If you want feedback, provide samples. And the "samples" page on the site isn't that helpful with a nice "under construction" sign on it. \- Don't make me Login just so I can download a demo of something you'd like to sell me Here's the email excerpt: "My company very recently released the first beta preview of a new data/object persistence technology based on memory mapped files. The technology has proven itself so far (it serves as the data repository for the company website) and we are getting feedback; however I really want to increase the number of technical 'experts' reviewing this product. If some mention of Persistore could be made on your blog, it would help a great deal by possibly attracting more technically savvy deveopers and allow Morantex to more rapidly define the feature set for the next beta. The technology incorporates some very sophisticated features (including support for the very large address space on x64 Windows) and some detail may be found in the PDF brochure at the bottom of this page: [http://www.morantex.com/Persistore.aspx](http://www.morantex.com/Persistore.aspx)" ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 18, 2006 ### [CLR Generics Vs. C++ Templates - some good links](https://osherove.com/blog/2006/5/18/clr-generics-vs-c-templates-some-good-links.html) - May 14, 2006 ### [Small Tip: Getting the name of the current or calling method at runtime for debugging](https://osherove.com/blog/2006/5/14/small-tip-getting-the-name-of-the-current-or-calling-method.html) - Apr 14, 2006 ### [Partial Classes - Add to your Unit Testing Bag of Tricks](https://osherove.com/blog/2006/4/14/partial-classes-add-to-your-unit-testing-bag-of-tricks.html) --- title: "Debugger Visualizer for MethodInfo, DynamicMethod, and MethodBase available for download" url: "https://osherove.com/blog/2006/4/25/debugger-visualizer-for-methodinfo-dynamicmethod-and-methodb.md" canonical: "https://osherove.com/blog/2006/4/25/debugger-visualizer-for-methodinfo-dynamicmethod-and-methodb.html" published: "2006-04-25T19:01:00" updated: "2006-04-25T19:01:00" tags: [".Net 2.0", "Cool Tools"] author: "Roy Osherove" description: "When I was preparing (still am) for my TechEd talk about Reflection 2.0, one of the coolest things I found was this nice DynamicMethod visualizer posted as a code sample. Taking apart the code for this project was a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Debugger Visualizer for MethodInfo, DynamicMethod, and MethodBase available for download By Roy Osherove April 25, 2006 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published April 25, 2006; technical details may be outdated. When I was preparing (still am) for my TechEd talk about Reflection 2.0, one of the coolest things I found was [this nice DynamicMethod visualizer](http://blogs.msdn.com/haibo_luo/archive/2005/10/25/484861.aspx) posted as a code sample. Taking apart the code for this project was a blast, and I learned many interesting things. I set out to create a new version of this Debugger Visualizer that also supports visualizing MethodInfo objects, not just Dynamic Methods (Code generated on the fly). Here's the result: - Download [Just the binaries](http://teamagile.com/Downloads/MethodVisualizers_Bin.zip) (38k)  (simply unzip the dlls to My Documents\\VS 2005\\Visualizers) - Download [Binaries and source](http://teamagile.com/Downloads/MethodVisualizers_Src.zip) (358k) **Sample shots:** Visualizing a MethodInfo object: ![](https://osherove.com/img/wb/849efef9_teamagile.com_images_MethodInfoVisualizer.GIF) Visualizing a DynamicMethod object (the original ability for the code): ![](https://osherove.com/img/wb/46caad42_teamagile.com_images_DMVisualizer.GIF) The source can help you learn how to: - Get the IL byte stream from any MethodBase-based object - Parse IL into understandable chunks - Write a visualizer - Resolve strings, methods and types from static Tokens in the IL code (see StaticResolver class) - Understand IL Opcodes and what they stand for Have fun, geeks! ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - May 18, 2006 ### [Oren Ellenbogen rocked last night about Generics, Delegates and Anonymous Methods.](https://osherove.com/blog/2006/5/18/oren-ellenbogen-rocked-last-night-about-generics-delegates-a.html) - May 14, 2006 ### [Small Tip: Getting the name of the current or calling method at runtime for debugging](https://osherove.com/blog/2006/5/14/small-tip-getting-the-name-of-the-current-or-calling-method.html) - Mar 22, 2006 ### [Windows Complication Foundation](https://osherove.com/blog/2006/3/22/windows-complication-foundation.html) - Mar 13, 2006 ### [Code from DevDays Belgium available: Design for Testability & Smart Client Offline Caching and Synchronization](https://osherove.com/blog/2006/3/13/code-from-devdays-belgium-available-design-for-testability-a.html) --- title: "Advertise your Tool/Component/Site on ISerializable.com Blog" url: "https://osherove.com/blog/2006/4/23/advertise-your-toolcomponentsite-on-iserializablecom-blog.md" canonical: "https://osherove.com/blog/2006/4/23/advertise-your-toolcomponentsite-on-iserializablecom-blog.html" published: "2006-04-23T00:26:00" updated: "2006-04-23T00:26:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Yes, it's shameless. No, it's not as bad as you think. I'm looking to upgrade my cell phone , so it's time to open the floor to advertisers on this blog for a limited amount of time. If you have a cool product or…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Advertise your Tool/Component/Site on ISerializable.com Blog By Roy Osherove April 23, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 23, 2006; technical details may be outdated. Yes, it's shameless. No, it's not as bad as you think. I'm looking to [upgrade my cell phone](http://www.engadget.com/2005/09/02/hands-on-with-the-htc-universal/), so it's time to open the floor to advertisers on this blog for a limited amount of time. If you have a cool product or service that you think might be interesting to the readers of this blog, and I like your product, you can be featured on the top left side of this blog by tomorrow. This blog gets 2500 unique hits a day on average, so I'm thinking targeted advertising should be very interesting for you. Of course, all the rules apply: **I won't promote anything which I think is not worthy**, and I get to be picky about what I stand behind. Possible stuff: Developer tools, components, libraries and Addins, developer sites and anything in between that might interest us geeks. It's about creating a win-win situation: people get to find out about a good product, they sell more, and I make some Paypal cash to get me a new phone. Free market. Contact me for details at **Roy at Osherove.com** ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 14, 2006 ### [Trend: Who works the hardest and knows the least?](https://osherove.com/blog/2006/5/14/trend-who-works-the-hardest-and-knows-the-least.html) - Apr 28, 2006 ### [Can you recommend a good Exchange Hosting service?](https://osherove.com/blog/2006/4/28/can-you-recommend-a-good-exchange-hosting-service.html) - Mar 24, 2006 ### [Introvert Speaker == Extrovert Writer?](https://osherove.com/blog/2006/3/24/introvert-speaker-extrovert-writer.html) - Mar 10, 2006 ### [Just search for "Roy"](https://osherove.com/blog/2006/3/10/just-search-for-quotroyquot.html) --- title: "My Tech-Ed Talk: Deep Reflection - What's new & Hot in Reflection 2.0" url: "https://osherove.com/blog/2006/4/22/my-tech-ed-talk-deep-reflection-whats-new-amp-hot-in-reflect.md" canonical: "https://osherove.com/blog/2006/4/22/my-tech-ed-talk-deep-reflection-whats-new-amp-hot-in-reflect.html" published: "2006-04-22T23:27:00" updated: "2006-04-22T23:27:00" tags: [] author: "Roy Osherove" description: "My upcoming Tech-Ed Talk in Israel will be all about what’s new and Cool in .NET 2.0 Reflection. Over the coming weeks until TechEd, I’ll supply links and information detailing the stuff I’ll be talking about. For the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My Tech-Ed Talk: Deep Reflection - What's new & Hot in Reflection 2.0 By Roy Osherove April 22, 2006 **Historical article** · Originally published April 22, 2006; technical details may be outdated. My upcoming [Tech-Ed Talk in Israel](http://www.microsoft.com/israel/teched) will be all about what’s new and Cool in .NET 2.0 Reflection. Over the coming weeks until TechEd, I’ll supply links and information detailing the stuff I’ll be talking about. For the past three weeks or so I’ve been totally immersed in Reflection-Land. There are seriously cool things going on behind the scenes, and, frankly,  I was surprised at the amount of new stuff that is now possible. One of my favorite features is the new ability to reflection over a Method’s Body. That is, get the actually IL for the method in the form of a Byte Array. You can then parse the IL and do what ever you want with it (including building your own version of reflector, for example). This is possible due to a new API added on the MethodBase class, called: “GetMethodBody()”. You can then use the resulting “MethodBody” object and invoke it’s “GetILAsByteArray()” method. It’s really quite simple. Parsing the Byte Array is a different matter, though. I’ll talk about that in a future post. For now, suffice to say that you can do wonderful things once you have the IL. You can basically get the IL from any MethodInfo object at runtime and parse it (for security reasons, you might wanna make sure that there are no method calls to a specific method from any plugin you are about to load) I was also able to create a MethodInfo Debugger Visualizer, based [on the code released here by a guy from the Reflection team](http://blogs.msdn.com/haibo_luo/archive/2005/10/25/484861.aspx). His visualizer shows the IL for a DynamicMethod object at debug time (that’s also a new class I’ll talk about in a future post). It took me a day or so to figure out how to extend it to show the IL for any method info object during debugging, and it works quite well! In fact, you can now write a method that writes its own code in IL J All that and more, in the near future, I promise J Meanwhile, [here’s a nice post form Joel Pobar](http://blogs.msdn.com/joelpob/archive/2004/06/22/163206.aspx), highlighting some of the new features in Reflection 2.0. I’ll be elaborating on these more, but you can follow the links on his post as well to discover a whole new world of possibilities. Cross Posted from [Blogs.Microsoft.Co.Il/Blogs/Royo](http://blogs.microsoft.co.il/blogs/Royo) --- title: "New Tapuz User Group Meeting in Israel (and is it really needed?)" url: "https://osherove.com/blog/2006/4/22/new-tapuz-user-group-meeting-in-israel-and-is-it-really-need.md" canonical: "https://osherove.com/blog/2006/4/22/new-tapuz-user-group-meeting-in-israel-and-is-it-really-need.html" published: "2006-04-22T19:39:00" updated: "2006-04-22T19:39:00" tags: [] author: "Roy Osherove" description: "Looks like there's another .NET user group being born in Israel these days - The Tapuz .NET Prgramming Forum User Group . (click the link for the official announcement and instructions on how to get there). Heck, I'd…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Tapuz User Group Meeting in Israel (and is it really needed?) By Roy Osherove April 22, 2006 **Historical article** · Originally published April 22, 2006; technical details may be outdated. Looks like there's another .NET user group being born in Israel these days - [The Tapuz .NET Prgramming Forum User Group](http://www.tapuz.co.il/tapuzforum/main/Viewmsg.asp?forum=831&msgid=76217060).  (click the link for the official announcement and instructions on how to get there). Heck, I'd just call it "The Tapuzer Group" ..:)  The group meets on May 29th at the Microsoft Facility in Ra'anana. I'll be there, just to see this energized group of people who in real life I haven't really had a chance to meet at any of the other .NET user groups or seminars or MS conferences out there. The guy leading this effort is none other than new MVP [Justin Angel](http://www.justingangel.net/e), who's been one of the most active members on the Tapuz .NET Forum. **Personally, I have mixed feelings about this**. On one hand, I think it's great to see a community that has existed solely "on paper" meet finally, and actually getting together to discuss topics and goals for themselves. Community is a great thing and I believe that doing things together leads to a great sense of friendship and learning. On the other hand, that user group will be added to an already very large number of .NET-related user groups here in Israel. off the top of my hat I can think of the [VB User group](http://www.renaissance.co.il/ivbug/), [the C/C++/C# user group](http://www.comconix.com/ivcug/), the [Security User Group](http://www.microsoft.com/israel/events/default.aspx?event=securedev), the [.NET Architects user group](http://www.microsoft.com/israel/events/default.aspx?event=architects), [Embedded and Mobile group](http://www.microsoft.com/israel/events/default.aspx?event=embedded), and I know of one other attempt at creating what is some sort of a "Development Manager User group". That's not mentioning [8 or more other groups](http://www.microsoft.com/israel/communities/usergroups/default.aspx) related to MS technology. Each of these meets monthly, at some other day of the month. What's the problem with that, you may ask? All these communities mean there's a lot to learn and lots of people to meet, isn't it? well. here's the thing. Israel is a very small place. 98% of these user groups meet in the center, near or in Ra'anana. If I wanted to attend all of these meetings (which I usually do), I'd at least one day of each week getting out of work early to be there by 17:00. Some weeks this means two days during that week. The average developer usually does not allow himself such long-standing privileges as going "home" early 4-8 days a week. SO the essentially need to choose which group they'd like to get to. That's still not a bad situation since right now, most of the groups are very divided in topics. But once you have 4-5 .NET related groups (My Agile group deals a lot with .NET technologies since that's what the crowd is interested in these day) you can't help but overstep each other's bounds. Having the same amount of people distributed over a larger amount of user groups just means less people in each meeting, smaller and more divided communities and more effort spent on organizing these things than to just get together and learn the same topics in less groups. Another issue is the amount of able presenters in Israel. Let's face it - we're a very small puddle, where everyone knows everyone else. I see the same set of speakers at \*all\* the .NET user groups, basically in a sort of rotation (me included). It's very rare to see a fresh face speaking at a user group. I wish it was different, but it's not. I'd like to see the Tapuz community integrated into \*existing\* communities rather than spending time with its own self. I bet there are people there who cold be presenting at the various .NET user groups, bringing new blood into the mix, a fresh face, and some fresh topics. Instead, anyone who wants to hear or see something different will have to try and find a way to make \*yet another\* date where they get off work early, just so they won't miss the next interesting lecture from someone they haven’t gotten to hear before. That's a sad state of affairs, and i believe that although Justin is doing a good thing, he could have done an even better one by arranging the Tapuz group to meet at one of the existing .NET user groups and use that group as a podium to discuss the various interesting topics they have (and they do!) Last but not least, if you're thinking that me owning a user group is somehow to do with my faint objection to the new one, you're wrong. I'd object just the same regardless. All that being said, I've already mentioned that I’m planning to attend the Tapuz meeting. I wouldn’t want to miss any interesting tidbits.. Cross Posted from [Blogs.Microsoft.Co.Il/Blogs/Royo](http://blogs.microsoft.co.il/blogs/Royo) --- title: "Ordering English Programming Books from Israel - Nice comparison of options" url: "https://osherove.com/blog/2006/4/14/ordering-english-programming-books-from-israel-nice-comparis.md" canonical: "https://osherove.com/blog/2006/4/14/ordering-english-programming-books-from-israel-nice-comparis.html" published: "2006-04-14T22:24:00" updated: "2006-04-14T22:24:00" tags: [] author: "Roy Osherove" description: "Update: Links fixed. It's was very late, sorry! Justin , a new MVP, blogs in the new Microsoft Israeli Blogs site (Hebrew and English Mixed) about a pricing comparison he made when deciding to purchase some books he…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ordering English Programming Books from Israel - Nice comparison of options By Roy Osherove April 14, 2006 **Historical article** · Originally published April 14, 2006; technical details may be outdated. _Update: Links fixed. It's was very late, sorry!_ [Justin](http://blogs.microsoft.co.il/blogs/justinangel/), a new MVP, blogs in the new [Microsoft Israeli Blogs site](http://blogs.microsoft.co.il/) (Hebrew and English Mixed) about [a pricing comparison he made](http://blogs.microsoft.co.il/blogs/justinangel/archive/2006/04/14/61.aspx) when deciding to purchase some books he needed. He has some nice price comparison results with a graph and an interesting conclusion: you can pay half of what you are paying today if you pay attention! (post is in Hebrew) Nice work! Cross Posted from Blogs.Microsoft.Co.Il/Blogs/Royo --- title: "Partial Classes - Add to your Unit Testing Bag of Tricks" url: "https://osherove.com/blog/2006/4/14/partial-classes-add-to-your-unit-testing-bag-of-tricks.md" canonical: "https://osherove.com/blog/2006/4/14/partial-classes-add-to-your-unit-testing-bag-of-tricks.html" published: "2006-04-14T22:07:00" updated: "2006-04-14T22:07:00" tags: [".NET"] author: "Roy Osherove" description: "Ralf has a nice tidbit about how .NET 2.0 Partial Classes can help you with writing unit tests for methods on classes that are otherwise harder to get to. It's a nice trick to add to the trick bag, though I'd argue that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Partial Classes - Add to your Unit Testing Bag of Tricks By Roy Osherove April 14, 2006 In [.NET](https://osherove.com/blog/category/net) **Historical article** · Originally published April 14, 2006; technical details may be outdated. [Ralf has a nice tidbit](http://weblogs.asp.net/ralfw/archive/2006/04/14/442836.aspx) about how .NET 2.0 [Partial Classes](http://www.devx.com/dotnet/Article/22603) can help you with writing unit tests for methods on classes that are otherwise harder to get to. It's a nice trick to add to the trick bag, though I'd argue that if you were doing Test-Driven-Development in the first place, you'd have [a testable design out-of-the-box](http://weblogs.asp.net/rosherove/articles/Design4Tesatbility1.aspx), and you wouldn't need to come up with clever hacks such as these. Having said that, sometimes you just don't have a choice and you need to write tests for legacy code (a.k.a "code that works"), and in that case, this just might be a lifesaver. Another lifesaving tool to use with your legacy code would be [TypeMock](http://www.typemock.com/). I recommend you take a long hard look at that little miracle of a tool (which was recently transferred into Israeli ownership, BTW) that can help you overcome lots of legacy code coupling issues in your tests. I should do a whole article on that when I get the time.. Cross Posted from Blogs.Microsoft.Co.Il/Blogs/Royo ## More in .NET [All posts in .NET](https://osherove.com/blog/category/net) - May 14, 2006 ### [Small Tip: Getting the name of the current or calling method at runtime for debugging](https://osherove.com/blog/2006/5/14/small-tip-getting-the-name-of-the-current-or-calling-method.html) - Apr 27, 2006 ### [Persistore - Interesting attempt at a .NET Persistence Engine? You decide.](https://osherove.com/blog/2006/4/27/persistore-interesting-attempt-at-a-net-persistence-engine-y.html) --- title: "CreateObject on remote server in .NET" url: "https://osherove.com/blog/2006/4/11/createobject-on-remote-server-in-net.md" canonical: "https://osherove.com/blog/2006/4/11/createobject-on-remote-server-in-net.html" published: "2006-04-11T22:41:00" updated: "2006-04-11T22:41:00" tags: [] author: "Roy Osherove" description: "In VB6 you could easily create a COM+/MTS object on a specific server by using CreateObject(progId, serverName). Corrado Cavalli, an MVP, just pointed this snippet showing how one would do the equivelant of that in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CreateObject on remote server in .NET By Roy Osherove April 11, 2006 **Historical article** · Originally published April 11, 2006; technical details may be outdated. In VB6 you could easily create a COM+/MTS object on a specific server by using CreateObject(progId, serverName). Corrado Cavalli, an MVP, just pointed this snippet showing how one would do the equivelant of that in .NET: Dim t as Type=[Type](http://www.dotnet247.com/247reference/System/Type.aspx "http://www.dotnet247.com/247reference/System/Type.aspx").GetTypeFromProgId(progid, servername) Dim o as Object= [Activator](http://www.dotnet247.com/247reference/System/Activator.aspx "http://www.dotnet247.com/247reference/System/Activator.aspx").CreateInstance(t) Here's a C# version for the VB-Challenged.. Type t = [Type](http://www.dotnet247.com/247reference/System/Type.aspx "http://www.dotnet247.com/247reference/System/Type.aspx").GetTypeFromProgId(progid, servername) Object o= [Activator](http://www.dotnet247.com/247reference/System/Activator.aspx "http://www.dotnet247.com/247reference/System/Activator.aspx").CreateInstance(t) Cross Posted from Blogs.Microsoft.Co.Il/Blogs/Royo --- title: "May at the Israel C# user group: Advanced Use of Delegates and Generics" url: "https://osherove.com/blog/2006/4/11/may-at-the-israel-c-user-group-advanced-use-of-delegates-and.md" canonical: "https://osherove.com/blog/2006/4/11/may-at-the-israel-c-user-group-advanced-use-of-delegates-and.html" published: "2006-04-11T16:50:00" updated: "2006-04-11T16:50:00" tags: [] author: "Roy Osherove" description: "Earlier this month, My friend Oren Ellenbogen contacted me saying he'd like to do a talk in one of the upcoming user groups here in Israel about .NET about the advanced used of delegates and generics in .NET…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # May at the Israel C\# user group: Advanced Use of Delegates and Generics By Roy Osherove April 11, 2006 **Historical article** · Originally published April 11, 2006; technical details may be outdated. Earlier this month, My friend Oren Ellenbogen contacted me saying he'd like to do a talk in one of the upcoming user groups here in Israel about .NET about the advanced used of delegates and generics in .NET applications. I referred him to the C# and VB user groups and surely enough, he'll be speaking at the upcoming C# user group meeting next month. _(speaking of user groups, a little bird tells me that a new user group is forming in Israel, for development managers. Shhh. you'll here more in the coming months)_ I recommend VB.NET developers who know how to read C# code go just as well. It's all the same underneath the covers anyway.. Here's the excerpt [from the group site](http://www.comconix.com/ivcug/Invitation.htm) (it's free to just show up, BTW) --- Date:    **Wednesday, May 17, 17:00 - 20:00** Place:   **Microsoft Israel**              **Hapnina 2  (Amdocs Building)**             **Ground Floor**             **Raanana** **+972 (9) 762-5100**          Parking available at the Kurkar parking lot. Proceed straight past the traffic circle and the parking lot will be on your right. ## Topic: Advanced Use of Delegates and Generics **Lecturer:** **Oren Ellenbogen**  This lecture will not be just about Delegates or Generics, but it will combine those topics to show you how you can leverage to usability of those semi-new features. Oren will discuss the receiving of delegates as parameters and the implementation of abstraction in this methodology. He will tie the two topics together by refactoring(live!) existing code using a principle he calls “Code Templating”;  a coding method that allows running unique logic within recurrent code.  **Agenda**: 1. Looking at a "simple" scenarios of recurrent code 1. Check if a value exists in a collection. 2. Get the item index in a collection. 3. Filtering a collection (get only some of the items based on a condition). 4. Manipulating every item in the collection (string concatenation for example). 2. Looking at "advanced" scenarios of recurrent code 1. Querying the database. 2. Exception handling. 3. Discuss solutions for further abstraction in those scenarios. 4. Introduce "Code Templating" – separating the _unique_ code from the recurrent code. 5. Before we start, getting to know our toolbox: generics & delegates 1. What are they? 2. Calling a delegate which was given as parameter – understand the benefits. 3. Anonymous delegates\\methods – how & why 4. What's going on under the hood? 6. Examples of Code Templating in .Net 2.0 1. Handle those "simple" scenarios via List.Find, List. FindAll, List..Exists etc… 7. Refactor (live!) the "advanced" scenarios, step-by-step. 8. Code Templating - What do we gain? What can we lose? 9. Q & A Oren Ellenbogen is a Team Leader at SQLink's R&D Department. Oren's responsibilities and areas of expertise span from Analyzing and Designing Web Applications to developing innovative coding enhancement tools. Oren's project leading at SQLink involves all stages and forms from team leadership to high level consulting.  Oren's years of developing experience cover a variety of languages including PHP, C++, VB6 and C#.  Oren published a series of articles at codeproject.com, publishes a programming oriented blog and is an active member of several .Net architects forums.  As always, although admission is free and you may attend without reserving a place, we kindly request that you notify us if you plan to attend so that we can be sure to have enough chairs and FOOD! Cross Posted from Blogs.Microsoft.Co.Il/Blogs/Royo --- title: "Hacking Microsoft Money to import my own bank's data + Fix for hidden money transactions" url: "https://osherove.com/blog/2006/4/8/hacking-microsoft-money-to-import-my-own-banks-data-fix-for.md" canonical: "https://osherove.com/blog/2006/4/8/hacking-microsoft-money-to-import-my-own-banks-data-fix-for.html" published: "2006-04-08T01:12:00" updated: "2006-04-08T01:12:00" tags: [] author: "Roy Osherove" description: "If you've never used Microsoft Money, you can simply move on to other posts.. One of the things I've done lately is try to use Microsoft-Money to manage my business and home finances. It's quite a lovely program,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hacking Microsoft Money to import my own bank's data + Fix for hidden money transactions By Roy Osherove April 8, 2006 **Historical article** · Originally published April 8, 2006; technical details may be outdated. If you've never used Microsoft Money, you can simply move on to other posts.. One of the things I've done lately is try to use Microsoft-Money to manage my business and home finances. It's quite a lovely program, really, and I wish it had better support for banks here in Israel. In fact, that's one of the biggest gripes about it here, and one of the main reasons Israelis don't use it. It's mainly meant to be used for the US/EU crowd, it seems. The program is able to download and update data directly from your local bank, but no Israeli Banks are available to be used with it. We work with the "Poalim" bank here in Israel, the largest in the county if I'm not mistaken. The bank has a very good and secure website which allows practically running 90% of your tasks online,including reviewing latest transactions on your checking and credit card accounts. I tried to find a way for Money to download data directly from my own bank but Nada. Money **does** have the ability to import "QIF" files - "Quicken Interchangeable Format" files, which contain the latest movements from your bank. IN fact, it seems that these are the kind of files that US and UK banks provide to MS Money for download and update. If only my bank, Poalim, supported creating QIF files. It doesn't. So, I set out to create my own QIF imported from my bank account. It's very much a hack, but it works. Here's how: 1. I go to my bank's main page where I can see my transaction list (after login) 2. I Copy the table of transactions: I select the table with the mouse and press CTRL-C 3. I open my own little software hack windows form and paste the text into it. 4. Using regular expressions, I parse the text and create a small dataset from it with a row for each transaction 5. I then write the context of the dataset into a temp QIF file 6. The program also copies the file's full path into the windows clipboard 7. I open MS Money and click File-Import-Download statement 8. I "paste" the file path to the new QIF file and press OK 9. Money imports the data from my bank into its records. That's it. The whole process takes less than 30 seconds to perform, and now I can actually manage my accounts without manually entering all that data which my bank already has in store for me. A few more things about my little hack: - My bank has listings for credit card transactions and Checking account transactions. Both have different tables and fields. My app knows how to recognize "pasting" from both of these tables and performs different parsing based on the pasted text form. That way I can import details credit card transactions by copy pasting just the same. - Money does not have an extensibility mechanism, so I couldn't write this as a Money Addin. Nor does it have any public declared automation interfaces which I could have used. Shame! **Fixing the problem of the vanishing imported transactions** Here's one important bit that I found out the hard way and that other people may be encountering with money, regardless of my little hack. It seems that money sometimes has a problem importing QIF files - the transactions seem to be listed as unread in the status bar, but they are hidden in the register, never to be found again. More descriptions of this problem [here](http://www.mcse.ms/message1854925.html) and [here](http://www.mcse.ms/archive174-2005-7-1743620.html). they don't have the answer I needed. The problem in my case seemed to be that I had double-quotes inside my QIF file as the payee name like so: <---Example of part of QIF file---> D02/04'2006 T100.00 PName of payee <--double quotes here screw things up in MS Money 2006 N000000100 ^ <---End example-----> Hope this helps someone! **One last annoying thing about Money** Speaking of Money, can anyone explain to me why, when I create a budget in Money, I can't include any categories and accounts related to business, only those related to "private" accounts? It sees weird that this is not possible, and is a feature I could really use, especially as someone who is an independent consults - where my income is tightly related to our household expenses anyway. --- title: "Port 25: Microsoft Open Source Software Lab's \"Channel 9\"?" url: "https://osherove.com/blog/2006/4/6/port-25-microsoft-open-source-software-labs-quotchannel-9quo.md" canonical: "https://osherove.com/blog/2006/4/6/port-25-microsoft-open-source-software-labs-quotchannel-9quo.html" published: "2006-04-06T12:26:00" updated: "2006-04-06T12:26:00" tags: ["Community"] author: "Roy Osherove" description: "\"Port 25 is open. The people, insights, and analysis from the Microsoft Open Source Software Lab. Send us your feedback and ideas. We want to hear from you. http://port25.technet.com/ \" Looks interesting!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Port 25: Microsoft Open Source Software Lab's "Channel 9"? By Roy Osherove April 6, 2006 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published April 6, 2006; technical details may be outdated. "Port 25 is open. The people, insights, and analysis from the Microsoft Open Source Software Lab. Send us your feedback and ideas. We want to hear from you.  [http://port25.technet.com/](http://port25.technet.com/)" Looks interesting! ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - May 18, 2006 ### [Oren Ellenbogen rocked last night about Generics, Delegates and Anonymous Methods.](https://osherove.com/blog/2006/5/18/oren-ellenbogen-rocked-last-night-about-generics-delegates-a.html) - May 15, 2006 ### [The Good and Bad in Tech-Ed Israel 2006](https://osherove.com/blog/2006/5/15/the-good-and-bad-in-tech-ed-israel-2006.html) - Apr 2, 2006 ### [Upgrading weblogs.asp.net from a slow and painful death](https://osherove.com/blog/2006/4/2/upgrading-weblogsaspnet-from-a-slow-and-painful-death.html) - Mar 29, 2006 ### [The Tech-Ed Israel Blog needs some \*buzz\*](https://osherove.com/blog/2006/3/29/the-tech-ed-israel-blog-needs-some-buzz.html) --- title: "Upgrading weblogs.asp.net from a slow and painful death" url: "https://osherove.com/blog/2006/4/2/upgrading-weblogsaspnet-from-a-slow-and-painful-death.md" canonical: "https://osherove.com/blog/2006/4/2/upgrading-weblogsaspnet-from-a-slow-and-painful-death.html" published: "2006-04-02T14:07:00" updated: "2006-04-02T14:07:00" tags: ["Community"] author: "Roy Osherove" description: "Omer writes eloquently about the slow death of weblogs.asp.net: \"Time passed and as it did, more and more weblogs went the way of weblogs and were never again posted to, while other writers kept theirs alive by the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Upgrading weblogs.asp.net from a slow and painful death By Roy Osherove April 2, 2006 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published April 2, 2006; technical details may be outdated. [Omer writes eloquently](http://weblogs.asp.net/OKloeten/archive/2006/04/02/441666.aspx) about the slow death of weblogs.asp.net: _"Time passed and as it did, more and more weblogs went the way of weblogs and were never again posted to, while other writers kept theirs alive by the sheer power of their collective will. The sense of community - of equality between fellow developers across corporate boundaries - had been lost to the capitalistic PR ambitions of the behemoth that is Microsoft. The application running the server was left to die the death of unupgraded software and the good name of weblogs.asp.net dwindled and shrunk to what it is today."_ Yes. [Promises have been made](http://weblogs.asp.net/rosherove/archive/2006/03/23/440876.aspx), But an unnamed source at Microsoft tells me that upgrading blogs.msdn.com took so long that nobody at Telligent or at Microsoft really has an interest or energy to invest in upgrading weblogs.asp.net. I'm not sure how true that really is. I hear conflicting rumors all the time. It would be a shame if that was the case. It would be insulting, actually. Is there anyone from Microsoft who'd like to respond to this with a big "NO" or a "yeah, you're right"? Probably not. But then again, people have proved me wrong on several occasions on this blog. Perhaps this is just another chance to do the exact same thing. ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - May 15, 2006 ### [The Good and Bad in Tech-Ed Israel 2006](https://osherove.com/blog/2006/5/15/the-good-and-bad-in-tech-ed-israel-2006.html) - Apr 6, 2006 ### [Port 25: Microsoft Open Source Software Lab's "Channel 9"?](https://osherove.com/blog/2006/4/6/port-25-microsoft-open-source-software-labs-quotchannel-9quo.html) - Mar 29, 2006 ### [The Tech-Ed Israel Blog needs some \*buzz\*](https://osherove.com/blog/2006/3/29/the-tech-ed-israel-blog-needs-some-buzz.html) - Mar 29, 2006 ### [New Israeli MVPs Announced](https://osherove.com/blog/2006/3/29/new-israeli-mvps-announced.html) --- title: "\"Cool Commands\" for VS 2005 is a free and useful little Add-in!" url: "https://osherove.com/blog/2006/4/2/quotcool-commandsquot-for-vs-2005-is-a-free-and-useful-littl.md" canonical: "https://osherove.com/blog/2006/4/2/quotcool-commandsquot-for-vs-2005-is-a-free-and-useful-littl.html" published: "2006-04-02T09:01:00" updated: "2006-04-02T09:01:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "If you're using VS 2005 I highly recommend downloading and installing the nice \"Cool Commands\" addin, which you can learn about and download here . It adds some really handy right click menus to VS including (my…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # "Cool Commands" for VS 2005 is a free and useful little Add-in! By Roy Osherove April 2, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published April 2, 2006; technical details may be outdated. If you're using VS 2005 I highly recommend downloading and installing the nice "Cool Commands" addin, which you can [learn about and download here](http://weblogs.asp.net/gmilano/archive/2006/02/27/439208.aspx). It adds some really handy right click menus to VS including (my favorites): - Command Prompt here - Copy/Paste references between projects - Demo Font - Font resizing using the mouse scroll wheel - Right clicking in a code file and choosing "build \[current project name\]" And these are just features I liked 5 minutes after installation. **One thing Missing?** I wish it also had something which I have no idea how they missed in VS: Right clicking in a code file and saying "Find this file/project in the solution explorer".  Any ideas where I can install something like that? ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 15, 2006 ### [Review: SmartInspect - Logging for .NET, Java and Delphi](https://osherove.com/blog/2006/5/15/review-smartinspect-logging-for-net-java-and-delphi.html) - Apr 25, 2006 ### [Debugger Visualizer for MethodInfo, DynamicMethod, and MethodBase available for download](https://osherove.com/blog/2006/4/25/debugger-visualizer-for-methodinfo-dynamicmethod-and-methodb.html) - Feb 16, 2006 ### [KeePass + FolderShare = Store your passwords securely and share them at the same time](https://osherove.com/blog/2006/2/16/keepass-foldershare-store-your-passwords-securely-and-share.html) - Feb 6, 2006 ### [SqlAssist is to VS SQL text as CodeSmart is to VB 6 code - Wonderful](https://osherove.com/blog/2006/2/6/sqlassist-is-to-vs-sql-text-as-codesmart-is-to-vb-6-code-won.html) --- title: "Solving those nasty \"Out Of Memory\" problems" url: "https://osherove.com/blog/2006/3/31/solving-those-nasty-quotout-of-memoryquot-problems.md" canonical: "https://osherove.com/blog/2006/3/31/solving-those-nasty-quotout-of-memoryquot-problems.html" published: "2006-03-31T01:05:00" updated: "2006-03-31T01:05:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "This came up on the win-tech-off-topic mailing list the other day and I'm writing it down here so that I can explorer it further later on. I'm interested because I like to run *lots and lots* of programs at the same…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Solving those nasty "Out Of Memory" problems By Roy Osherove March 31, 2006 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published March 31, 2006; technical details may be outdated. This came up on the win-tech-off-topic mailing list the other day and I'm writing it down here so that I can explorer it further later on. I'm interested because I like to run \*lots and lots\* of programs at the same time. Lately though, instead of opening 50 Explorer windows and 50 Internet Explorers I just use [Total Commander](http://www.ghisler.com/) and [Avant Browser](http://www.avantbrowser.com/) with Tabbed Browsing. It's sooo much easier!. Nevertheless... Here are two KB articles that talk about why and how the issues of low memory can occur on the "desktop heap", and more specifically **how you can put a magic value in the Registry to help a little**. Try at your own risk! - ["Out of Memory" error message appears when you have a large number of programs running](http://support.microsoft.com/default.aspx?scid=kb;en-us;126962) - [PRB: User32.dll or Kernel32.dll fails to initialize](http://support.microsoft.com/default.aspx?scid=kb;EN-US;184802) Possible "good" values people had talked about on the list were: - SharedSection=4096,8192,5 - SharedSection=1024,8192,384 **\*read carefully first and try at your own risk!\*** ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Jun 25, 2007 ### [Unit Test Tip: Encode test data as part of your test xml comments](https://osherove.com/blog/2007/6/25/unit-test-tip-encode-test-data-as-part-of-your-test-xml-comm.html) - Jun 25, 2007 ### [ThreadTester with new Ability: StopWhenTrue() and thread polling](https://osherove.com/blog/2007/6/25/threadtester-with-new-ability-stopwhentrue-and-thread-pollin.html) - Mar 16, 2006 ### [Nice Google Desktop Trick](https://osherove.com/blog/2006/3/16/nice-google-desktop-trick.html) - Feb 9, 2006 ### [Ask The Pros - Keyboard Shortcut Junkies (and some extra shortcuts from me)](https://osherove.com/blog/2006/2/9/ask-the-pros-keyboard-shortcut-junkies-and-some-extra-shortc.html) --- title: "Photos and Slides from Agile Israel March Meeting Birthday Maddness!" url: "https://osherove.com/blog/2006/3/29/photos-and-slides-from-agile-israel-march-meeting-birthday-m.md" canonical: "https://osherove.com/blog/2006/3/29/photos-and-slides-from-agile-israel-march-meeting-birthday-m.html" published: "2006-03-29T21:56:00" updated: "2006-03-29T21:56:00" tags: ["Agile Israel News", "Agile Related", "Team Agile News"] author: "Roy Osherove" description: "Wow , What a great Agile Israel Meeting we had this week! You can read all about it on our new site at www.AgileIsrael.com where you will also find the latest slides, and soon also the audio recording from the meeting.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Photos and Slides from Agile Israel March Meeting Birthday Maddness! By Roy Osherove March 29, 2006 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published March 29, 2006; technical details may be outdated. **Wow**, What a great Agile Israel Meeting we had this week! You can read all about it on our new site at [www.AgileIsrael.com](http://www.agileisrael.com/) where you will also find the latest slides, and soon also the audio recording from the meeting. If you were wondering if you made a mistake in not coming to the meeting, here are a few reasons to say "yes" to yourself now. First, Because it's **our one year birthday**, I worked with Microsoft to get lots of pizza and several cakes! [![](https://osherove.com/img/ext/static.flickr.com_35_119497771_fc79aefb82_m.jpg)](http://www.flickr.com/photos/royo/119497771/)[![](https://osherove.com/img/ext/static.flickr.com_21_119497652_ee73e96872_m.jpg)](http://www.flickr.com/photos/royo/119497652/)[](http://www.flickr.com/photos/royo/119497771/)[![](https://osherove.com/img/ext/static.flickr.com_44_119497706_fcb5e15cc4_m.jpg)](http://www.flickr.com/photos/royo/119497706/) [![](https://osherove.com/img/ext/static.flickr.com_40_119496985_da8334e29f_m.jpg)](http://www.flickr.com/photos/royo/119496985/)[![](https://osherove.com/img/ext/static.flickr.com_40_119496828_e926913180_m.jpg)](http://www.flickr.com/photos/royo/119496828/) We had Plenty of Prizes to give away too! [![](https://osherove.com/img/ext/static.flickr.com_31_119496656_8c5add0d68_m.jpg)](http://www.flickr.com/photos/royo/119496656/) And lots of people showed up to hear [Orit Hazzan](http://edu.technion.ac.il/Faculty/OritH/HomePage/) speak about Agile Development. [![](https://osherove.com/img/ext/static.flickr.com_37_119497595_d8ddd51ba9_m.jpg)](http://www.flickr.com/photos/royo/119497595/)[![](https://osherove.com/img/ext/static.flickr.com_43_119497355_115b74d63e_m.jpg)](http://www.flickr.com/photos/royo/119497355/)[![](https://osherove.com/img/ext/static.flickr.com_52_119498109_857173be3d_m.jpg)](http://www.flickr.com/photos/royo/119498109/) And of course,  there were balloons and videotapes! [![](https://osherove.com/img/ext/static.flickr.com_44_119497881_f52aefbba1_m.jpg)](http://www.flickr.com/photos/royo/119497881/)[![](https://osherove.com/img/ext/static.flickr.com_52_119497230_58e8a85f11_m.jpg)](http://www.flickr.com/photos/royo/119497230/) So next time, if somebody asks you _"Say, I heard there was an Agile Group in Israel! Should I go?"_ You'll know what to say... right? ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Jun 29, 2006 ### [See you at Agile Israel today!](https://osherove.com/blog/2006/6/29/see-you-at-agile-israel-today.html) - Jun 13, 2006 ### [June @ Agile Israel (Feature Driven Development, Design For Testability)](https://osherove.com/blog/2006/6/13/june-agile-israel-feature-driven-development-design-for-test.html) - Mar 27, 2006 ### [Special Agile Israel Meeting Today!](https://osherove.com/blog/2006/3/27/special-agile-israel-meeting-today.html) - Mar 10, 2006 ### [March at Agile Israel - Great presentations & The group's first birthday](https://osherove.com/blog/2006/3/10/march-at-agile-israel-great-presentations-amp-the-groups-fir.html) --- title: "The Tech-Ed Israel Blog needs some *buzz*" url: "https://osherove.com/blog/2006/3/29/the-tech-ed-israel-blog-needs-some-buzz.md" canonical: "https://osherove.com/blog/2006/3/29/the-tech-ed-israel-blog-needs-some-buzz.html" published: "2006-03-29T14:25:00" updated: "2006-03-29T14:25:00" tags: ["Community"] author: "Roy Osherove" description: "Tech-Ed Israel has a blog . Its run mostly by Lior Tzoref, and tries to put a face on the whole organization of Tech-Ed. Personally, I like the idea. But there are several facets that should be implemented before…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Tech-Ed Israel Blog needs some \*buzz\* By Roy Osherove March 29, 2006 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published March 29, 2006; technical details may be outdated. [Tech-Ed Israel has a blog](http://www.microsoft.com/israel/teched/blog/default.aspx). Its run mostly by Lior Tzoref, and tries to put a face on the whole organization of Tech-Ed. Personally, I like the idea. But there are several facets that should be implemented before Microsoft Israel can take advantage of the full power of community (and actually make it worth while opening a blog like that) 1. **Add the ability to write comments on posts**. A blog, the way I see it, is a written conversation. It's almost pointless to have only one side being heard while the other just sits there and reads it. Especially when it's from a "marketing" type of source. Marketing is much more trusted in the eyes of the reader if there is at least the \*impression\* or listening back to the reader. But with no comments, we are left with only the simple option of sending an email. I sent an email saying exactly the comments issue. I got back an answer that the blog is just fine the way it is or something similar, but thanks for the concern. Funny thing is that they really do take to heart the email the get, so a comment on the blog post seems like just what they would want! 2. **Update it more during the week**.  If people don't seen anything interesting, they will stop reading it. 3. **Do something that only the blog readers can get to**. Content-specific postings and benefits go long way to making a blog popular. It's also a good way to promote viral marketing.. ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Apr 6, 2006 ### [Port 25: Microsoft Open Source Software Lab's "Channel 9"?](https://osherove.com/blog/2006/4/6/port-25-microsoft-open-source-software-labs-quotchannel-9quo.html) - Apr 2, 2006 ### [Upgrading weblogs.asp.net from a slow and painful death](https://osherove.com/blog/2006/4/2/upgrading-weblogsaspnet-from-a-slow-and-painful-death.html) - Mar 29, 2006 ### [New Israeli MVPs Announced](https://osherove.com/blog/2006/3/29/new-israeli-mvps-announced.html) - Mar 24, 2006 ### [Why Word Verification Isn't The Answer](https://osherove.com/blog/2006/3/24/why-word-verification-isnt-the-answer.html) --- title: "New Israeli MVPs Announced" url: "https://osherove.com/blog/2006/3/29/new-israeli-mvps-announced.md" canonical: "https://osherove.com/blog/2006/3/29/new-israeli-mvps-announced.html" published: "2006-03-29T02:35:00" updated: "2006-03-29T02:35:00" tags: ["Community"] author: "Roy Osherove" description: "\"Six new Microsoft MVP titles had been given to community contributers from Israel today : Amihai Levin – SQL Server MVP Guy Teverovsky – Directory Services MVP Eyal Vardi – Visual Developer – VSTO MVP Erez Keler –…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Israeli MVPs Announced By Roy Osherove March 29, 2006 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published March 29, 2006; technical details may be outdated. "Six new [Microsoft MVP titles](http://mvp.support.microsoft.com/) had been given to community contributers from Israel today :

Amihai Levin – SQL Server MVP

Guy Teverovsky – Directory Services MVP

Eyal Vardi – Visual Developer – VSTO MVP

Erez Keler – Visual Developer – Visual C# MVP

Justin Angel (English Blog here)– Visual Developer – Visual C# MVP

Nimrod Luria – Visual Developer – Security MVP

" \[via [Ohad](http://weblogs.asp.net/israelio/archive/2006/03/27/441228.aspx)\] Congratulations to all the new MVPs!  ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Apr 2, 2006 ### [Upgrading weblogs.asp.net from a slow and painful death](https://osherove.com/blog/2006/4/2/upgrading-weblogsaspnet-from-a-slow-and-painful-death.html) - Mar 29, 2006 ### [The Tech-Ed Israel Blog needs some \*buzz\*](https://osherove.com/blog/2006/3/29/the-tech-ed-israel-blog-needs-some-buzz.html) - Mar 24, 2006 ### [Why Word Verification Isn't The Answer](https://osherove.com/blog/2006/3/24/why-word-verification-isnt-the-answer.html) - Mar 23, 2006 ### [Weblogs.asp.net Community Server 2.0 upgrade sorely missed!](https://osherove.com/blog/2006/3/23/weblogsaspnet-community-server-20-upgrade-sorely-missed.html) --- title: "Special Agile Israel Meeting Today!" url: "https://osherove.com/blog/2006/3/27/special-agile-israel-meeting-today.md" canonical: "https://osherove.com/blog/2006/3/27/special-agile-israel-meeting-today.html" published: "2006-03-27T00:20:00" updated: "2006-03-27T00:20:00" tags: ["Agile Israel News", "Agile Related"] author: "Roy Osherove" description: "Reminder: Agile Israel meets Today. Gathering at 17:30, we start at 18:00 . Arrival instructions and more at our temporary site: www.AgileIsrael.com This is a special celebration for one year so I plan to raffle off…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Special Agile Israel Meeting Today! By Roy Osherove March 27, 2006 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published March 27, 2006; technical details may be outdated. Reminder: Agile Israel meets **Today.** Gathering at 17:30, we start at 18:00**.** Arrival instructions and more at our temporary site: [www.AgileIsrael.com](http://www.agileisrael.com/) This is a special celebration for one year so I plan to raffle off lots of prizes! Also, special talks from Orit Hazzan And Yael Dubinsky from the Technion about Adopting Agile and promoting Change in the organization! See you there! ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Jun 13, 2006 ### [June @ Agile Israel (Feature Driven Development, Design For Testability)](https://osherove.com/blog/2006/6/13/june-agile-israel-feature-driven-development-design-for-test.html) - Mar 29, 2006 ### [Photos and Slides from Agile Israel March Meeting Birthday Maddness!](https://osherove.com/blog/2006/3/29/photos-and-slides-from-agile-israel-march-meeting-birthday-m.html) - Mar 10, 2006 ### [March at Agile Israel - Great presentations & The group's first birthday](https://osherove.com/blog/2006/3/10/march-at-agile-israel-great-presentations-amp-the-groups-fir.html) - Feb 6, 2006 ### [February at Agile Israel: The FIT Testing Framework](https://osherove.com/blog/2006/2/6/february-at-agile-israel-the-fit-testing-framework.html) --- title: "Microsoft's Journal for architects" url: "https://osherove.com/blog/2006/3/24/microsofts-journal-for-architects.md" canonical: "https://osherove.com/blog/2006/3/24/microsofts-journal-for-architects.html" published: "2006-03-24T15:27:00" updated: "2006-03-24T15:27:00" tags: ["Architecture"] author: "Roy Osherove" description: "Beat Schwagler and Ingo Rammer spent a few days here in Israel this week, doing both a full day architect's seminar and Beat also spoke at the Architects User Group. One of the interesting points to mention really had…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft's Journal for architects By Roy Osherove March 24, 2006 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published March 24, 2006; technical details may be outdated. Beat Schwagler and Ingo Rammer spent a few days here in Israel this week, doing both a full day architect's seminar and Beat also spoke at the Architects User Group. One of the interesting points to mention really had nothing to do with the topics of their talks. The fact is that most developers and architects in Israel aren't aware that there's an Architecture Journal for Software Architects from Microsoft, just like there's MSDN Magazine for developers. It hasn't been alive long, but it has interesting topics and anecdotes for Architects. It's [the Microsoft Journal](http://www.microsoft.com/architecture/default.aspx?pid=journal). You can freely subscribe to it (even for a printed magazine delivered to your home in Israel) without any cost (except for a survey you have to fill). Now, if you've already got a chance to read though one of the journals, I suspect that you had one of two reactions: - "This is waaaay over my head - very high level!" - "Looks good!" Why is the first reaction possible? let's looks at this month's subjects and find out: - [Metropolis and SOA Governance](http://www.microsoft.com/architecture/library.aspx?pid=journal.5&id=msdn.microsoft.com/architecture/default.aspx?pull=/library/en-us/dnmaj/html/Jour5metro.asp) - [An Introduction to Topic Maps](http://www.microsoft.com/architecture/library.aspx?pid=journal.5&id=msdn.microsoft.com/architecture/default.aspx?pull=/library/en-us/dnmaj/html/Jour5Intro.asp) - [Value-Driven Architecture: Linking Product Strategy with Architecture](http://www.microsoft.com/architecture/library.aspx?pid=journal.5&id=msdn.microsoft.com/architecture/default.aspx?pull=/library/en-us/dnmaj/html/Jour5Value.asp) - [Process and Criteria for Evaluating Services-Based Integration Technologies](http://www.microsoft.com/architecture/library.aspx?pid=journal.5&id=msdn.microsoft.com/architecture/default.aspx?pull=/library/en-us/dnmaj/html/Jour5Eval.asp) - [Service-Oriented, Distributed, High-Performance Computing](http://www.microsoft.com/architecture/library.aspx?pid=journal.5&id=msdn.microsoft.com/architecture/default.aspx?pull=/library/en-us/dnmaj/html/Jour5Serv.asp) - [Planes, Trains and Automobiles: Choosing Alternate Transports for Web Services](http://www.microsoft.com/architecture/library.aspx?pid=journal.5&id=msdn.microsoft.com/architecture/journal/default.aspx?pull=/library/en-us/dnmaj/html/Jour5trains.asp) Some of these topics look rather scary to lots of people who call themselves "Architects", who mostly deal with a little more "down to earth" sort of materials - design patterns, application design architecture, security etc.. and not these big analogies. There will always be these very high level analogies, but perhaps the Journal magazine needs to take into account that most of its potential readers need some more down to earth data, coupled with high level theories and analogies that map directly to that real world. That said, if you take the time and try to read through the things that seem the most interesting to you, you may find a treasure chest of knowledge and new kinds of thinking. It's just hard to start. Think of it like a long novel where you have to get at least half way through for things to finally start coming together. I encourage you to give it a try. ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - May 22, 2006 ### [Steve Kelly on Software Factories: "It's worth the effort"](https://osherove.com/blog/2006/5/22/steve-kelly-on-software-factories-quotits-worth-the-effortqu.html) - May 18, 2006 ### [HL7 Software Factory Project is a success in progress, says MS Architect Mauro Regio](https://osherove.com/blog/2006/5/18/hl7-software-factory-project-is-a-success-in-progress-says-m.html) - Mar 23, 2006 ### [Udi Dahan on ...SOA!](https://osherove.com/blog/2006/3/23/udi-dahan-on-soa.html) - Feb 13, 2006 ### [Catch me at the Architects User Group: Partially Connected Smart Clients Architecture](https://osherove.com/blog/2006/2/13/catch-me-at-the-architects-user-group-partially-connected-sm.html) --- title: "Why Word Verification Isn't The Answer" url: "https://osherove.com/blog/2006/3/24/why-word-verification-isnt-the-answer.md" canonical: "https://osherove.com/blog/2006/3/24/why-word-verification-isnt-the-answer.html" published: "2006-03-24T01:29:00" updated: "2006-03-24T01:29:00" tags: ["Community"] author: "Roy Osherove" description: "I know that human user verification systems in blogs are there for a reason, but we really need to come up with a better plan. Here's what I got on blogger today trying to post a comment: That would definitely stop any…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why Word Verification Isn't The Answer By Roy Osherove March 24, 2006 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published March 24, 2006; technical details may be outdated. I know that human user verification systems in blogs are there for a reason, but we really need to come up with a better plan. Here's what I got on blogger today trying to post a comment: ![](https://osherove.com/img/wb/a791db23_files.osherove.com_images_badtext.gif) That would definitely stop any robot, let alone any human! _(yes, I know that you can ask for a "new" image to be created for you, but you're losing the point of going in, leaving a quick comment and going away. It's not "casual browsing" anymore. It's a small project!)_ _**On a related topic..** If this isn't enough, you know you should stop using word verification when [Google starts using nasty words in their verification images](http://www.flickr.com/photos/amit-agarwal/35732206/) :-)_ ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Mar 29, 2006 ### [The Tech-Ed Israel Blog needs some \*buzz\*](https://osherove.com/blog/2006/3/29/the-tech-ed-israel-blog-needs-some-buzz.html) - Mar 29, 2006 ### [New Israeli MVPs Announced](https://osherove.com/blog/2006/3/29/new-israeli-mvps-announced.html) - Mar 23, 2006 ### [Weblogs.asp.net Community Server 2.0 upgrade sorely missed!](https://osherove.com/blog/2006/3/23/weblogsaspnet-community-server-20-upgrade-sorely-missed.html) - Mar 13, 2006 ### [Code from DevDays Belgium available: Design for Testability & Smart Client Offline Caching and Synchronization](https://osherove.com/blog/2006/3/13/code-from-devdays-belgium-available-design-for-testability-a.html) --- title: "Introvert Speaker == Extrovert Writer?" url: "https://osherove.com/blog/2006/3/24/introvert-speaker-extrovert-writer.md" canonical: "https://osherove.com/blog/2006/3/24/introvert-speaker-extrovert-writer.html" published: "2006-03-24T01:09:00" updated: "2006-03-24T01:09:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm currently editing the audio bits of an upcoming interview with Esther Derby , who I came to contact with through Johanna Rothman . The interview subject is a different topic than the one in this post though. After…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introvert Speaker == Extrovert Writer? By Roy Osherove March 24, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 24, 2006; technical details may be outdated. I'm currently editing the audio bits of an upcoming interview with [Esther Derby](http://www.estherderby.com/weblog/blogger.html), who I came to contact with through [Johanna Rothman](http://www.jrothman.com/). The interview subject is a different topic than the one in this post though. After the interview we chatted a little bit more (via Skye) and Esther mentioned how she and Johanna are two very different personality types. Johanna is more of an extrovert, likes to just try out things and see what happens in a conversation, while Esther is more of an introvert - she usually gives herself a few seconds (or minutes) before answering questions and such (which made for quite an interesting edit hunting for those long silences :) ) Funnily enough, Johanna and Esther recently wrote a book **together**, which I highly recommend called [Behind Closed Doors : Secrets of Great Management (Pragmatic Programmers)](https://www.amazon.com/exec/obidos/ASIN/0976694026/iserializable-20) . [Johanna wrote about it](http://www.jrothman.com/weblog/2004/07/initial-experiences-with-pair-writing.html) and so did Esther a couple of times. What came up in my conversation with Esther though, was interesting. Esther mentioned that when they are writing, she herself writes more easily (she practices creative writing where you just write out something for a given amount of time which is a really creative way of expressing yourself and learning to communicate with with paper) and openly, and Johanna on the other hand, usually tries to build these "blocks" of places to put words in  0 chapter names, paragraphs, sections etc.. It occurred to me that in writing, both Johanna and Esther have essentially replaced their roles in their introvert vs. extrovert and behave the opposite of the way they interact by speaking. Esther had not thought about that until we discussed it and found it interesting. It is. Could that observation hold for most people? For me it feels wrong - I wrote openly and I speak openly (well, I do invest some time before I talk but only on occasions. and you **know** my blog as a place where I sometimes just spit things out and then regret them. Still, I like it.) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 28, 2006 ### [Can you recommend a good Exchange Hosting service?](https://osherove.com/blog/2006/4/28/can-you-recommend-a-good-exchange-hosting-service.html) - Apr 23, 2006 ### [Advertise your Tool/Component/Site on ISerializable.com Blog](https://osherove.com/blog/2006/4/23/advertise-your-toolcomponentsite-on-iserializablecom-blog.html) - Mar 10, 2006 ### [Just search for "Roy"](https://osherove.com/blog/2006/3/10/just-search-for-quotroyquot.html) - Feb 14, 2006 ### [\[OT\]Israeli group announces anti-Semitic cartoons contest](https://osherove.com/blog/2006/2/14/otisraeli-group-announces-anti-semitic-cartoons-contest.html) --- title: "Udi Dahan on ...SOA!" url: "https://osherove.com/blog/2006/3/23/udi-dahan-on-soa.md" canonical: "https://osherove.com/blog/2006/3/23/udi-dahan-on-soa.html" published: "2006-03-23T22:23:00" updated: "2006-03-23T22:23:00" tags: ["Architecture"] author: "Roy Osherove" description: "\"I'm really beginning to like this podcasting thing. Check out my conversation with Wally about SOA basics . \" [Udi Dahan sees the light] BTW, Wally mentions in the podcast that Udi is working with Jimmy Nilsson on a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Udi Dahan on ...SOA! By Roy Osherove March 23, 2006 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published March 23, 2006; technical details may be outdated. "I'm really beginning to like this podcasting thing. [Check out my conversation with Wally about SOA basics](http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/archive/2006/03/16/88.aspx). " _\[Udi Dahan sees the light\]_ BTW, Wally mentions in the podcast that Udi is working with Jimmy Nilsson on a [domain driven design book](https://www.amazon.com/exec/obidos/ASIN/0321268202/iserializable-20). Go Udi! ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - May 18, 2006 ### [HL7 Software Factory Project is a success in progress, says MS Architect Mauro Regio](https://osherove.com/blog/2006/5/18/hl7-software-factory-project-is-a-success-in-progress-says-m.html) - Mar 24, 2006 ### [Microsoft's Journal for architects](https://osherove.com/blog/2006/3/24/microsofts-journal-for-architects.html) - Feb 13, 2006 ### [Catch me at the Architects User Group: Partially Connected Smart Clients Architecture](https://osherove.com/blog/2006/2/13/catch-me-at-the-architects-user-group-partially-connected-sm.html) - Nov 26, 2005 ### [Nice article on ordering code construction tasks by Jeremy Miller](https://osherove.com/blog/2005/11/26/nice-article-on-ordering-code-construction-tasks-by-jeremy-m.html) --- title: "Weblogs.asp.net Community Server 2.0 upgrade sorely missed!" url: "https://osherove.com/blog/2006/3/23/weblogsaspnet-community-server-20-upgrade-sorely-missed.md" canonical: "https://osherove.com/blog/2006/3/23/weblogsaspnet-community-server-20-upgrade-sorely-missed.html" published: "2006-03-23T00:23:00" updated: "2006-03-23T00:23:00" tags: ["Community"] author: "Roy Osherove" description: "Speaking of CodeBetter.com - they have a wonderful new look both on the blogs and on the main page ! They recently upgraded to Community Server 2.0 and it seems like a wonderful idea. Which makes me wonder: When is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Weblogs.asp.net Community Server 2.0 upgrade sorely missed! By Roy Osherove March 23, 2006 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published March 23, 2006; technical details may be outdated. Speaking of CodeBetter.com - they have a **wonderful new look both on [the blogs](http://codebetter.com/blogs/) and on [the main page](http://codebetter.com/)!** They recently upgraded to Community Server 2.0 and it seems like a wonderful idea. Which makes me wonder: When is weblogs.asp.net going to get that much needed upgrade? It's been a couple of months already if I recall correctly, and still no word. Have we been forgotten? Is there a plan to actually do this some day? Should bloggers who want the new CS 2 features just move away to other places like GeeksWithBlogs.com, CodeBetter.com etc? Is anyone going to step up and actually tell us what's going to happen? **Update**: Alex Lowe (from Telligent) responds in the comments: _"We said that we'd perform an upgrade when we shipped CS 2.0. At the time, back in October we thought we'd ship CS 2.0 in early January but we slipped back to late February. The delay in the CS 2.0 RTM caused a delay in the upgrade. I posted to the forum created for the bloggers on forums.asp.net giving a timeline that we are working towards for the upgrade. "_ Thanks for the update Alex. At least we know were things stand now. CS2 looks like such a great release, it's tough to sit on the sidelines and watch \*everybody else\* get it... **Update 2:** One thing I don't get fully: A lot of bloggers on this site are not primarily "ASP.NET" bloggers, but generic .NET bloggers (myself included). Lots of folks got started on this site before it was renamed "weblogs.asp.net". In fact, the original name for this site was  "DotNetWeblogs.com" (still redirects to this URL too). The URL name is somewhat problematic in that regard, since suddenly lots of people regard this as a web development blogger effort, which is not entirely true. Lots of posts about all things .NET (and some not) can be found here, and there is great content to be found. I know that the guys at CodeBetter.com have developed some tool to let you export all the weblog content from your old blog into a new database. Perhaps they'd be kind enough to share it with the community? ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Mar 29, 2006 ### [New Israeli MVPs Announced](https://osherove.com/blog/2006/3/29/new-israeli-mvps-announced.html) - Mar 24, 2006 ### [Why Word Verification Isn't The Answer](https://osherove.com/blog/2006/3/24/why-word-verification-isnt-the-answer.html) - Mar 13, 2006 ### [Code from DevDays Belgium available: Design for Testability & Smart Client Offline Caching and Synchronization](https://osherove.com/blog/2006/3/13/code-from-devdays-belgium-available-design-for-testability-a.html) - Feb 27, 2006 ### [Tech-Ed Israel 2006 Dev Track list](https://osherove.com/blog/2006/2/27/tech-ed-israel-2006-dev-track-list.html) --- title: "Some goodness from CodeBetter.Com" url: "https://osherove.com/blog/2006/3/23/some-goodness-from-codebettercom.md" canonical: "https://osherove.com/blog/2006/3/23/some-goodness-from-codebettercom.html" published: "2006-03-23T00:20:00" updated: "2006-03-23T00:20:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Scott Bellware has some useful Unit Testing Code Snippets for VS 2005 here . Cool! Jeremy Miller has a series of laws for TDD . All sounds advice from what I've read so far. You should read him. Oh, and read my latest…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some goodness from CodeBetter.Com By Roy Osherove March 23, 2006 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published March 23, 2006; technical details may be outdated. - Scott Bellware has some useful [Unit Testing Code Snippets for VS 2005 here](http://codebetter.com/blogs/scott.bellware/archive/2006/02/28/139446.aspx). Cool! - Jeremy Miller has a series of [laws for TDD](http://codebetter.com/blogs/jeremy.miller/archive/2006/03/09/140465.aspx). All sounds advice from what I've read so far. You should read him. Oh, and read [my latest article about testable designs](http://weblogs.asp.net/rosherove/articles/Design4Tesatbility1.aspx) as a related resource for those rules. I think we are both trying to say the same things in different ways some of the time.. - [CodeBetter.com](http://codebetter.com/) should be on your feed reader ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Mar 29, 2006 ### [Photos and Slides from Agile Israel March Meeting Birthday Maddness!](https://osherove.com/blog/2006/3/29/photos-and-slides-from-agile-israel-march-meeting-birthday-m.html) - Mar 27, 2006 ### [Special Agile Israel Meeting Today!](https://osherove.com/blog/2006/3/27/special-agile-israel-meeting-today.html) - Mar 19, 2006 ### [\[Article\] Achieving And Recognizing Testable Software Designs – Part I](https://osherove.com/blog/2006/3/19/article-achieving-and-recognizing-testable-software-designs.html) - Mar 13, 2006 ### [Code from DevDays Belgium available: Design for Testability & Smart Client Offline Caching and Synchronization](https://osherove.com/blog/2006/3/13/code-from-devdays-belgium-available-design-for-testability-a.html) --- title: "Windows Complication Foundation" url: "https://osherove.com/blog/2006/3/22/windows-complication-foundation.md" canonical: "https://osherove.com/blog/2006/3/22/windows-complication-foundation.html" published: "2006-03-22T17:07:00" updated: "2006-03-22T17:07:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "I just thought of this term, and it may be the biggest problem developers will face with Vista and the whole WinFX stuff. this includes (but not limited to) Windows Presentation Foundation Windows Communication…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Windows Complication Foundation By Roy Osherove March 22, 2006 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published March 22, 2006; technical details may be outdated. I just thought of this term, and it may be the biggest problem developers will face with Vista and the whole WinFX stuff. this includes (but not limited to) - Windows Presentation Foundation - Windows Communication Foundation - Windows Workflow Foundation In short, developer lives got a lot more complicated. a.k.a "Windows Complication Foundation" ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - May 14, 2006 ### [Small Tip: Getting the name of the current or calling method at runtime for debugging](https://osherove.com/blog/2006/5/14/small-tip-getting-the-name-of-the-current-or-calling-method.html) - Apr 25, 2006 ### [Debugger Visualizer for MethodInfo, DynamicMethod, and MethodBase available for download](https://osherove.com/blog/2006/4/25/debugger-visualizer-for-methodinfo-dynamicmethod-and-methodb.html) - Mar 13, 2006 ### [Code from DevDays Belgium available: Design for Testability & Smart Client Offline Caching and Synchronization](https://osherove.com/blog/2006/3/13/code-from-devdays-belgium-available-design-for-testability-a.html) - Mar 1, 2006 ### [The 3 ways to create a Thread-Safe GUI with .NET 2.0, with one clear winner.](https://osherove.com/blog/2006/3/1/the-3-ways-to-create-a-thread-safe-gui-with-net-20-with-one.html) --- title: "Achieving And Recognizing Testable Software Designs – Part I" url: "https://osherove.com/blog/2006/3/19/achieving-and-recognizing-testable-software-designs-part-i.md" canonical: "https://osherove.com/blog/2006/3/19/achieving-and-recognizing-testable-software-designs-part-i.html" published: "2006-03-19T20:41:00" updated: "2006-03-19T20:41:00" tags: [] author: "Roy Osherove" description: "Roy Osherove Principal, Team Agile www.TeamAgile.com blog: www.ISerializable.com Recently, I’ve had the pleasure of speaking at a Microsoft Dev/IT Pro Days conference in Belgium. I was approached by the organizers…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Achieving And Recognizing Testable Software Designs – Part I By Roy Osherove March 19, 2006 **Historical article** · Originally published March 19, 2006; technical details may be outdated. Roy Osherove Principal, Team Agile [www.TeamAgile.com](http://www.teamagile.com/) blog: [www.ISerializable.com](http://www.iserializable.com/) Recently, I’ve had the pleasure of speaking at a Microsoft Dev/IT Pro Days conference in Belgium.  I was approached by the organizers asking if I would want to do a session on “Designing for testability”, as part of three talks I was to give there. The topic was not something I had spoken about before, but definitely something I had thought about, considered and wrestled with many times on many projects and occasions. I set out to first determine what the definition of a “Testable System” might be, in my eyes. I came to the realization that a testable system is not measured in a vacuum, but its testability has to be “mirrored” through external testing related factors. For example, how easy would it be to write **quality unit tests** against such a system? And for that question to be answered, one has to ask **what “quality unit tests” really means** in this context. In this article we’ll try to define what a testable system design really means, and explore some basic design rules to make sure we can keep that testability in the system from the beginning. Here’s my current definition of a testable system: _“For each **logical part** of the system, a unit test can be written **relatively** **easily and quickly** that satisfies **all** the following PC-COF rules at the same time:_ **_P_**_artial runs are possible_ **_C_**_onsistent results on every test run_ **_C_**_onfiguration is unneeded before run_ **_O_**_rder of tests does not matter_ **_F_**_ast run time”_ Here are examples for all five rules. The first and foremost rule is the consistency one. **Consistent results on every test run** The test always has to fail or pass, but never switches between modes until a bug is fixed. That’s all good and well for the test quality, but how does it relate to the testable system? Well, remember, the definition says writing such a test is relatively **easy and quick**.  Imagine trying to come up with testing a scenario that uses multiple threads. That would be neither easy to write a test for or quick. Not only that, threading-related tests often exhibit a “random” style of behavior, where the test usually passes and only sometimes fails. That can tell us several things. First, this is probably not a unit test, but an integration test (which is fine and dandy, but is not a replacement for a logic-level unit test) which may not be what we are looking for, assuming we just want to test the logic-level inside a single thread. Second this tells us that we have a dependency that we cannot control – that of the system threads (which is why I call it an integration test – we are testing our logic along with the threading utility). We will either have to remove that dependency or by changing the way we test things. Either way, a threading-related scenario is not a very testable one. Here’s a simpler example that makes us design the system in a specific way so as to make it more testable. Consider the following piece of code that needs to be tested:   public bool CanPurchase(Person p)         {             if (!(**PersonValidator.IsValid(p)**))             {                 return false;             }             if (p.SSID != null &&                 p.SubscriptionType != “Canceled” &&                 p.CreditOnFile > 0)             {                 return true;             }             return false;         }   The code marked in blue is the logic coded inside our method. The code highlighted in red in in fact an external dependency, in this case on a static method of a the PersonValidator Class. What’s the problem with this code? Why isn’t it considered testable? Consider the following: ·                           Suppose our test passes, that is, the logic is well tested. Then someone decides to put a bug in the IsValid() method of the PersonValidator class. Our unit test suddenly fails, even though the logic in the method works just fine. So, depending on the external method call, our test results may be inconsistent. ·                           In our test we’d like to test for a state where the person is valid, and another test where the person is \*not\* valid. Assume that the business rules for determining if a person is valid are obscure, hard to write and reside in a database somewhere. We can’t possibly know them while we’re writing the “CanPurchase” method. So how to we send in a person which is valid for one test, and not valid for another? That’s the problem of controlling an external resource such as the IsValid method. We can’t easily control it. The question for this scenario then is “How easy would it be to write a test that can be consistent in the face of bugs in other logic **and** can control the Validation result so that the code can be tested under various states of validation?” The answer in this case may be “Not very easy”. We can take this as a sign that the system design is not very testable (indeed, it’s spelled out right there in my definition of a testable system).             Here’s one way to make a system testable for this scenario: Use Interfaces. Consider the following refactoring of the code to use interfaces and think about the testability of the new code:               IValidator m\_validator;                 public void SetValidator(IValidator validator)                 {                     m\_validator = validator;                 }                 public bool CanPurchase(Person p)                 {                     if (!(m\_validator.IsValid(p)))                     {                         return false;                     }                     if (p.SSID != null &&                         p.SubscriptionType != “Canceled” &&                         p.CreditOnFile > 0)                     {                         return true;                     }                     return false;                 } What we’ve done is use an interface on a validator object, which allows us to **replace** that validator with a **fake validator** in our tests. That Fake validator can be made to do whatever we want – return true, false or even through an exception if we tell it to. It’s just a simple class in our tests that is a “dummie” object that looks like a validator. Here’s how a test with a fake object might look like with NUnit:      \[TestClass\]     public class PersonLogicTests     {         \[TestMethod\]         public void CanPurchase\_DefaultPersonValidated\_IsFalse()         {             MyFakeValidaor val = new MyFakeValidaor();             val.whatToReturn = true;             PersonLogic logic = new PersonLogic();             logic.SetValidator(val);             Person p = new Person();             bool result = logic.CanPurchase(p);             Assert.IsFalse(result);         }         public class MyFakeValidaor:IValidator         {             public bool whatToReturn;             public bool IsValid(Person p)             {                 return whatToReturn;             }         } } The code marked in blue is the one using the fake validator. Notice how easy it is to control the return values and replace the external dependency in this case. This is a perfect example of how **interfaces make code more testable**.  Using interfaces in this case it is truly easy and quick to write tests for the coded pieces of logic inside that method.             “But you had to add a whole new method just to replace the object, and I might not want to do that for my class” you may say. A solution could be to put the code that is there just for testing reasons (the setValidator method) in a conditionally compiled block or use the “Conditional” attribute on it. Antoehr solution is to use a constructor which takes the interface as a parameter instead or use a set property. The main thing is to understand that testing changes our code into testable state, which is not necessarily a bad thing. The design may be more “open” but that’s a “price” you might want to pay so that you know your code works as it should. Next we’ll take a look at the “Configuration is not needed” part of the equation. **Configuration is not needed** Why is Configuration a part of this article? The ability to configure a class at runtime is an important one for unit tests. If code requires external configuration before it is tested, it will take more time to create tests for that code. It can also make the tests less manageable and not as easy to write. Consider the following piece of code:         public bool IsConnectionStringValid()         {          string connString =            ConfigurationSettings.AppSettings\[“conString”\].ToString();             //do some stuff             //…             return true;         } The code marked in blue uses external configuration files to do its bidding. If we tried to write a unit test for this code we’d have to include a configuration file in our test. That’s not a bad idea sometimes, but then it wouldn’t really be a unit test, but **an integration test** – a test which uses more than one unit test do the testing of some logic. Integration testing has its place and time, but we’re talking about a system which is easily **unit testable**. So how do we overcome this problem of testability? We could introduce an interface into the mix – use a separate class to get the connection string settings, make it use an interface, and replace that class with a “fake” class of your own – providing a connection string of your own that does not need configuration. That’s one way to do it, indeed.             Here’s another way: **Use a virtual method** to get the external data you need. If  we use virtual methods, you could then **derive and override**  the virtual method in a different class, returning whatever value you like. You can then use that derived class in your tests. The trick is to separate into a virtual method only the simplest code possible that uses the external dependency. Don’t’ extract an “if” for example, because you’ll be overriding that logic in your test.             Here’s the same code refactored to use a virtual method: Class ConnectionHelper { public bool IsConnectionStringValid()         {          string connString = getConnectionString();             //do some stuff             //…             return true;         }         protected virtual string getConnectionString()         {             return ConfigurationSettings.AppSettings\[“conString”\].ToString();         } } The code in blue is the refactored code. By refactoring the code we were able to both keep the original functionality of the code, and make it more testable at the same time. That is the definition of the word “Refactoring” – Change existing code without changing its functionality. You’ve done this numerous times yourself – if you’ve ever change a method name, or extracted a long method into many little method calls. Let’s see how we’d write a test with that refactoring in place. First, we’ll create a class that in effect **derives** from the class we’d like to test. That class we’ll call it the “TestableConnectionHelper” class and then in fact write our tests against that testable class. Here’s how it looks: \[TestMethod\]         public void ConfigBased()         {             TestableConfigBasedClass myClass = new TestableConfigBasedClass();             myClass.mConnectString = “bad string”;             Assert.AreEqual(false,myClass.IsConnectionStringValid())         }         public class TestableConfigBasedClass:MyConfigBasedClass         {             public string mConnectString;             protected override string getConnectionString()             {                 return mConnectString;             }         } Note that the testable class only overrides one simple thing, and the rest of the functionality under test stays the same as if this was the original test. This testable class also resides in our **test** project, and is not an original part of the production code.             This method is called “Extract & Override” and is very powerful for Refactoring existing code into testability. It does require, however, the availability of a virtual method to override. That’s why I recommend, as a rule, to **be virtual by default** – make method calls virtual by default, and make sure to always use method calls when getting data from external resources in your logic. That guarantees a way in for writing tests. We went into this because we wanted it to be **easy and quick** to write tests that don’t’ use a configuration scheme. That’s been achieved in this scenario. **Fast Run Time** It may not sound like much, but being able to have very fast unit tests can make or break your development cycle. Is half a second per unit test fast enough? Not even close. Imagine having 5000 methods with logic, with at least a couple of unit tests per method. That’s 10,000 tests right there. If each of them took half a second (ok, only 30%) that’s 25 minutes of run time just for those tests. How often would you run a test suite that takes half an hour? Once, maybe twice or three times per day, but no more. If it took 2 minutes to run things would be much different and you’d run it much more often. But how does this “best practice” relate to a testable system? Well, in a non-testable system you would find it really hard, or really time consuming to write some of the tests against objects and make them run fast. That’s because you’d most likely have objects that do some sort of time=consuming activity using their external dependencies. For example, take the “Validator” example explained earlier.             if (!(**PersonValidator.IsValid(p)**))             {                 return false;             } What if the IsValid method calls a web service to do its bidding? Or it reads rules from the database? Or it simply performs a very length processing of in-memory rules that might take a few seconds or half a minute in some cases? Writing a test that runs fast with that method in place would be a non trivial task, as you would need to find a way to either make sure the data put in will not take too long to process, or that you configure the validator at runtime to not do so much processing. Either way you’ll end up writing more code in the test, making it more complicated, and having a harder time than you would have if this was a testable system. To make it testable you can take the same actions explained before: Refactor the code to use interfaces, or use a virtual method to check the validation and return a true/false result, then override it in your “testable” class. **Order Of tests does not matter** If you’re doing database related development, and tried to write “unit tests” for your data layer, you’re already familiar with this issue. bool Insert(Person p) { //insert person to database } bool Delete(Person p) { //Delete person from database } The issue here is that you are relying on external state in the database for the tests to work. SO, in order for the delete tests to work, there has to be some row in the database to delete successfully, and for the insert tests to work there should be no duplicate line in the database. Many people who first start out testing data related actions do the “obvious” thing and simply make sure that the delete test runs after the insert test, and that they both try to insert and delete the same row data. That, of course, is problematic, because most unit test frameworks cannot guarantee the order in which unit tests will be executed. SO just the fact that it runs fine today does not mean tomorrow the tests won’t run based on some other criteria. So how do you make sure that tests can be run in no specific order?  In this case that’s very hard. You need to make sure the database’s state is rolled back before and after each test, which can be both time consuming and hard to code.  That means we break at least the “runs fast” rule, and even if we didn’t, we are breaking the “easy to write” rule in the definition. What does that tell us? It could tell us that the system is not testable, and I’d agree. A data layer, in my mind, is not testable by itself, and should always be tested along with the Database it represents. That’s a whole other topic, but essentially, you would want to test the “logic” in the data layer, which is, like it or not, highly coupled with that in the database. So, even though the system is not “unit” testable, we still want to test it. Is making it testable unit interfaces and virtual methods a good idea? My opinion is that for anything \*but\* data layers, this is a good idea, but in the data layer case, this is a bad one because logic exists in the database as well. Which can lead to a different conclusion: We’d want to write \*integration tests\* for the data layer, which look like unit tests and use the unit test framework tools to do their work. Integration tests don’t test a class or method separately, but several items working together. If we subscribe to the fact that we would rather have integration and not unit tests for our data layer, everything falls into place: Because these are integration tests than: ·                           It will be harder to write them while making sure they run fast (or impossible) ·                           It will be harder (but necessary) to make sure the order of the tests does not matter ·                           It will be harder to make sure they stay consistent between runs The reason I’m using this example in here is that the ordering of tests, and the next part – the partial running of tests, both relate to integration-based tests problems, and these “problems” help us define not only what a testable design means, but what a “unit-testable” design means. If test ordering needs to be maintained and couldn’t be rewritten easily to make sure it does not matter, you’re probably writing integration tests anyway. What’s the design rule here? It’s mostly an observational rule. **Make sure you’re writing unit tests, unless you can’t, in which case you’ll have problems with ordering and partiality of the test runs.** **Partial Runs of tests are possible** This last case related directly to the latter. When you have external state you’re likely to have a problem if you don’t run all the tests in your suite, since the external state between specific tests may need to be adjusted for the next test (so that a row will be inserted just in time for the delete test, for example). Again, this problem is solvable, but how easy it is to solve it? Not as easy as writing simple unit tests without external state, that’s for sure. The whole problem of rolling back external state is that of controlling the before and after states and making sure they are the same for each test run. If you can’t do that easily you’re either not using a testable system design, or you’re not writing a unit test. **Summary** The main design rules I’ve described till now are: ·                           Use interface based design ·                           Make methods virtual by default In the next part of this article we’ll take a look at more specific examples of dependencies in code and who using these two simple techniques we can overcome them. We’ll talk about what refactoring the code had to undergo in order for these techniques to be effective, and see that refactoring the code for testability is easy to accomplish if you’re looking for the right things. ·                           Refactoring and Testing around singletons ·                           Refactoring and Testing Singletons ·                           Refactoring and testing direct object calls and static methods ·                           More.. --- title: "(untitled)" url: "https://osherove.com/blog/2006/3/19/roy-osherove-principal-team-agile-wwwteamagilecom.md" canonical: "https://osherove.com/blog/2006/3/19/roy-osherove-principal-team-agile-wwwteamagilecom.html" published: "2006-03-19T20:28:00" updated: "2006-03-19T20:28:00" tags: [] author: "Roy Osherove" description: "Roy Osherove Principal, Team Agile www.TeamAgile.com blog: www.ISerializable.com Recently, I’ve had the pleasure of speaking at a Microsoft Dev/IT Pro Days conference in Belgium. I was approached by the organizers…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # (untitled) By Roy Osherove March 19, 2006 **Historical article** · Originally published March 19, 2006; technical details may be outdated. Roy Osherove Principal, Team Agile [www.TeamAgile.com](http://www.teamagile.com/) blog: [www.ISerializable.com](http://www.iserializable.com/) Recently, I’ve had the pleasure of speaking at a Microsoft Dev/IT Pro Days conference in Belgium.  I was approached by the organizers asking if I would want to do a session on “Designing for testability”, as part of three talks I was to give there. The topic was not something I had spoken about before, but definitely something I had thought about, considered and wrestled with many times on many projects and occasions. I set out to first determine what the definition of a “Testable System” might be, in my eyes. I came to the realization that a testable system is not measured in a vacuum, but its testability has to be “mirrored” through external testing related factors. For example, how easy would it be to write **quality unit tests** against such a system? And for that question to be answered, one has to ask**what “quality unit tests” really means** in this context. In this article we’ll try to define what a testable system design really means, and explore some basic design rules to make sure we can keep that testability in the system from the beginning. Here’s my current definition of a testable system: _“For each **logical part** of the system, a unit test can be written **relatively** **easily and quickly** that satisfies **all** the following PC-COF rules at the same time:_ **_P_**_artial runs are possible_ **_C_**_onsistent results on every test run_ **_C_**_onfiguration is unneeded before run_ **_O_**_rder of tests does not matter_ **_F_**_ast run time”_ Here are examples for all five rules. The first and foremost rule is the consistency one. **Consistent results on every test run** The test always has to fail or pass, but never switches between modes until a bug is fixed. That’s all good and well for the test quality, but how does it relate to the testable system? Well, remember, the definition says writing such a test is relatively **easy and quick**.  Imagine trying to come up with testing a scenario that uses multiple threads. That would be neither easy to write a test for or quick. Not only that, threading-related tests often exhibit a “random” style of behavior, where the test usually passes and only sometimes fails. That can tell us several things. First, this is probably not a unit test, but an integration test (which is fine and dandy, but is not a replacement for a logic-level unit test) which may not be what we are looking for, assuming we just want to test the logic-level inside a single thread. Second this tells us that we have a dependency that we cannot control – that of the system threads (which is why I call it an integration test – we are testing our logic along with the threading utility). We will either have to remove that dependency or by changing the way we test things. Either way, a threading-related scenario is not a very testable one. Here’s a simpler example that makes us design the system in a specific way so as to make it more testable. Consider the following piece of code that needs to be tested:   public bool CanPurchase(Person p)         {             if (!(**PersonValidator.IsValid(p)**))             {                 return false;             }             if (p.SSID != null &&                 p.SubscriptionType != “Canceled” &&                 p.CreditOnFile > 0)             {                 return true;             }             return false;         }   The code marked in blue is the logic coded inside our method. The code highlighted in red in in fact an external dependency, in this case on a static method of a the PersonValidator Class. What’s the problem with this code? Why isn’t it considered testable? Consider the following: The question for this scenario then is “How easy would it be to write a test that can be consistent in the face of bugs in other logic **and** can control the Validation result so that the code can be tested under various states of validation?” The answer in this case may be “Not very easy”. We can take this as a sign that the system design is not very testable (indeed, it’s spelled out right there in my definition of a testable system).             Here’s one way to make a system testable for this scenario: Use Interfaces. Consider the following refactoring of the code to use interfaces and think about the testability of the new code:               IValidator m\_validator;                 public void SetValidator(IValidator validator)                 {                     m\_validator = validator;                 }                 public bool CanPurchase(Person p)                 {                     if (!(m\_validator.IsValid(p)))                     {                         return false;                     }                     if (p.SSID != null &&                         p.SubscriptionType != “Canceled” &&                         p.CreditOnFile > 0)                     {                         return true;                     }                     return false;                 } What we’ve done is use an interface on a validator object, which allows us to **replace** that validator with a **fake validator** in our tests. That Fake validator can be made to do whatever we want – return true, false or even through an exception if we tell it to. It’s just a simple class in our tests that is a “dummie” object that looks like a validator. Here’s how a test with a fake object might look like with NUnit:      \[TestClass\]     public class PersonLogicTests     {         \[TestMethod\]         public void CanPurchase\_DefaultPersonValidated\_IsFalse()         {             MyFakeValidaor val = new MyFakeValidaor();             val.whatToReturn = true;             PersonLogic logic = new PersonLogic();             logic.SetValidator(val);             Person p = new Person();             bool result = logic.CanPurchase(p);             Assert.IsFalse(result);         }         public class MyFakeValidaor:IValidator         {             public bool whatToReturn;             public bool IsValid(Person p)             {                 return whatToReturn;             }         } } The code marked in blue is the one using the fake validator. Notice how easy it is to control the return values and replace the external dependency in this case. This is a perfect example of how**interfaces make code more testable**.  Using interfaces in this case it is truly easy and quick to write tests for the coded pieces of logic inside that method.             “But you had to add a whole new method just to replace the object, and I might not want to do that for my class” you may say. A solution could be to put the code that is there just for testing reasons (the setValidator method) in a conditionally compiled block or use the “Conditional” attribute on it. Antoehr solution is to use a constructor which takes the interface as a parameter instead or use a set property. The main thing is to understand that testing changes our code into testable state, which is not necessarily a bad thing. The design may be more “open” but that’s a “price” you might want to pay so that you know your code works as it should. Next we’ll take a look at the “Configuration is not needed” part of the equation. **Configuration is not needed** Why is Configuration a part of this article? The ability to configure a class at runtime is an important one for unit tests. If code requires external configuration before it is tested, it will take more time to create tests for that code. It can also make the tests less manageable and not as easy to write. Consider the following piece of code:         public bool IsConnectionStringValid()         {          string connString =            ConfigurationSettings.AppSettings\[“conString”\].ToString();             //do some stuff             //…             return true;         } The code marked in blue uses external configuration files to do its bidding. If we tried to write a unit test for this code we’d have to include a configuration file in our test. That’s not a bad idea sometimes, but then it wouldn’t really be a unit test, but **an integration test** – a test which uses more than one unit test do the testing of some logic. Integration testing has its place and time, but we’re talking about a system which is easily **unit testable**. So how do we overcome this problem of testability? We could introduce an interface into the mix – use a separate class to get the connection string settings, make it use an interface, and replace that class with a “fake” class of your own – providing a connection string of your own that does not need configuration. That’s one way to do it, indeed.             Here’s another way: **Use a virtual method** to get the external data you need. If  we use virtual methods, you could then **derive and override**  the virtual method in a different class, returning whatever value you like. You can then use that derived class in your tests. The trick is to separate into a virtual method only the simplest code possible that uses the external dependency. Don’t’ extract an “if” for example, because you’ll be overriding that logic in your test.             Here’s the same code refactored to use a virtual method: Class ConnectionHelper { public bool IsConnectionStringValid()         {          string connString = getConnectionString();             //do some stuff             //…             return true;         }         protected virtual string getConnectionString()         {             return ConfigurationSettings.AppSettings\[“conString”\].ToString();         } } The code in blue is the refactored code. By refactoring the code we were able to both keep the original functionality of the code, and make it more testable at the same time. That is the definition of the word “Refactoring” – Change existing code without changing its functionality. You’ve done this numerous times yourself – if you’ve ever change a method name, or extracted a long method into many little method calls. Let’s see how we’d write a test with that refactoring in place. First, we’ll create a class that in effect **derives** from the class we’d like to test. That class we’ll call it the “TestableConnectionHelper” class and then in fact write our tests against that testable class. Here’s how it looks: \[TestMethod\]         public void ConfigBased()         {             TestableConfigBasedClass myClass = new TestableConfigBasedClass();             myClass.mConnectString = “bad string”;             Assert.AreEqual(false,myClass.IsConnectionStringValid())         }         public class TestableConfigBasedClass:MyConfigBasedClass         {             public string mConnectString;             protected override string getConnectionString()             {                 return mConnectString;             }         } Note that the testable class only overrides one simple thing, and the rest of the functionality under test stays the same as if this was the original test. This testable class also resides in our **test**project, and is not an original part of the production code.             This method is called “Extract & Override” and is very powerful for Refactoring existing code into testability. It does require, however, the availability of a virtual method to override. That’s why I recommend, as a rule, to **be virtual by default** – make method calls virtual by default, and make sure to always use method calls when getting data from external resources in your logic. That guarantees a way in for writing tests. We went into this because we wanted it to be **easy and quick** to write tests that don’t’ use a configuration scheme. That’s been achieved in this scenario. **Fast Run Time** It may not sound like much, but being able to have very fast unit tests can make or break your development cycle. Is half a second per unit test fast enough? Not even close. Imagine having 5000 methods with logic, with at least a couple of unit tests per method. That’s 10,000 tests right there. If each of them took half a second (ok, only 30%) that’s 25 minutes of run time just for those tests. How often would you run a test suite that takes half an hour? Once, maybe twice or three times per day, but no more. If it took 2 minutes to run things would be much different and you’d run it much more often. But how does this “best practice” relate to a testable system? Well, in a non-testable system you would find it really hard, or really time consuming to write some of the tests against objects and make them run fast. That’s because you’d most likely have objects that do some sort of time=consuming activity using their external dependencies. For example, take the “Validator” example explained earlier.             if (!(**PersonValidator.IsValid(p)**))             {                 return false;             } What if the IsValid method calls a web service to do its bidding? Or it reads rules from the database? Or it simply performs a very length processing of in-memory rules that might take a few seconds or half a minute in some cases? Writing a test that runs fast with that method in place would be a non trivial task, as you would need to find a way to either make sure the data put in will not take too long to process, or that you configure the validator at runtime to not do so much processing. Either way you’ll end up writing more code in the test, making it more complicated, and having a harder time than you would have if this was a testable system. To make it testable you can take the same actions explained before: Refactor the code to use interfaces, or use a virtual method to check the validation and return a true/false result, then override it in your “testable” class. **Order Of tests does not matter** If you’re doing database related development, and tried to write “unit tests” for your data layer, you’re already familiar with this issue. bool Insert(Person p) { //insert person to database } bool Delete(Person p) { //Delete person from database } The issue here is that you are relying on external state in the database for the tests to work. SO, in order for the delete tests to work, there has to be some row in the database to delete successfully, and for the insert tests to work there should be no duplicate line in the database. Many people who first start out testing data related actions do the “obvious” thing and simply make sure that the delete test runs after the insert test, and that they both try to insert and delete the same row data. That, of course, is problematic, because most unit test frameworks cannot guarantee the order in which unit tests will be executed. SO just the fact that it runs fine today does not mean tomorrow the tests won’t run based on some other criteria. So how do you make sure that tests can be run in no specific order?  In this case that’s very hard. You need to make sure the database’s state is rolled back before and after each test, which can be both time consuming and hard to code.  That means we break at least the “runs fast” rule, and even if we didn’t, we are breaking the “easy to write” rule in the definition. What does that tell us? It could tell us that the system is not testable, and I’d agree. A data layer, in my mind, is not testable by itself, and should always be tested along with the Database it represents. That’s a whole other topic, but essentially, you would want to test the “logic” in the data layer, which is, like it or not, highly coupled with that in the database. So, even though the system is not “unit” testable, we still want to test it. Is making it testable unit interfaces and virtual methods a good idea? My opinion is that for anything \*but\* data layers, this is a good idea, but in the data layer case, this is a bad one because logic exists in the database as well. Which can lead to a different conclusion: We’d want to write \*integration tests\* for the data layer, which look like unit tests and use the unit test framework tools to do their work. Integration tests don’t test a class or method separately, but several items working together. If we subscribe to the fact that we would rather have integration and not unit tests for our data layer, everything falls into place: Because these are integration tests than: - It will be harder to write them while making sure they run fast (or impossible) - It will be harder (but necessary) to make sure the order of the tests does not matter - It will be harder to make sure they stay consistent between runs The reason I’m using this example in here is that the ordering of tests, and the next part – the partial running of tests, both relate to integration-based tests problems, and these “problems” help us define not only what a testable design means, but what a “unit-testable” design means. If test ordering needs to be maintained and couldn’t be rewritten easily to make sure it does not matter, you’re probably writing integration tests anyway. What’s the design rule here? It’s mostly an observational rule. **Make sure you’re writing unit tests, unless you can’t, in which case you’ll have problems with ordering and partiality of the test runs.** **Partial Runs of tests are possible** This last case related directly to the latter. When you have external state you’re likely to have a problem if you don’t run all the tests in your suite, since the external state between specific tests may need to be adjusted for the next test (so that a row will be inserted just in time for the delete test, for example). Again, this problem is solvable, but how easy it is to solve it? Not as easy as writing simple unit tests without external state, that’s for sure. The whole problem of rolling back external state is that of controlling the before and after states and making sure they are the same for each test run. If you can’t do that easily you’re either not using a testable system design, or you’re not writing a unit test. **Summary** The main design rules I’ve described till now are: - Use interface based design - Make methods virtual by default In the next part of this article we’ll take a look at more specific examples of dependencies in code and who using these two simple techniques we can overcome them. We’ll talk about what refactoring the code had to undergo in order for these techniques to be effective, and see that refactoring the code for testability is easy to accomplish if you’re looking for the right things. - Refactoring and Testing around singletons - Refactoring and Testing Singletons - Refactoring and testing direct object calls and static methods --- title: "[Article] Achieving And Recognizing Testable Software Designs – Part I" url: "https://osherove.com/blog/2006/3/19/article-achieving-and-recognizing-testable-software-designs.md" canonical: "https://osherove.com/blog/2006/3/19/article-achieving-and-recognizing-testable-software-designs.html" published: "2006-03-19T09:35:00" updated: "2006-03-19T09:35:00" tags: ["Agile Related", "Team Agile News"] author: "Roy Osherove" description: "Recently, I’ve had the pleasure of speaking at a Microsoft Dev/IT Pro Days conference in Belgium . I was approached by the organizers asking if I would want to do a session on “Designing for testability”, as part of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Article\] Achieving And Recognizing Testable Software Designs – Part I By Roy Osherove March 19, 2006 In [Agile Related](https://osherove.com/blog/category/agile-related), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published March 19, 2006; technical details may be outdated. Recently, I’ve had the pleasure of speaking at a Microsoft Dev/IT Pro Days conference in Belgium.  I was approached by the organizers asking if I would want to do a session on “Designing for testability”, as part of three talks I was to give there. The topic was not something I had spoken about before, but definitely something I had thought about, considered and wrestled with many times on many projects and occasions. I set out to first determine what the definition of a “Testable System” might be, in my eyes. I came to the realization that a testable system is not measured in a vacuum, but its testability has to be “mirrored” through external testing related factors. For example, how easy would it be to write **quality unit tests** against such a system? And for that question to be answered, one has to ask **what “quality unit tests” really means** in this context. In this article we’ll try to define what a testable system design really means, and explore some basic design rules to make sure we can keep that testability in the system from the beginning. Here’s my current definition of a testable system: _“For each **logical part** of the system, a unit test can be written **relatively** **easily and quickly** that satisfies **all** the following PC-COF rules at the same time:_ **_P_**_artial runs are possible_ **_C_**_onsistent results on every test run_ **_C_**_onfiguration is unneeded before run_ **_O_**_rder of tests does not matter_ **_F_**_ast run time”_ [Read the rest of the article here](http://weblogs.asp.net/rosherove/articles/Design4Tesatbility1.aspx) and read about each of the five rules outlined here. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Mar 27, 2006 ### [Special Agile Israel Meeting Today!](https://osherove.com/blog/2006/3/27/special-agile-israel-meeting-today.html) - Mar 23, 2006 ### [Some goodness from CodeBetter.Com](https://osherove.com/blog/2006/3/23/some-goodness-from-codebettercom.html) - Mar 13, 2006 ### [Code from DevDays Belgium available: Design for Testability & Smart Client Offline Caching and Synchronization](https://osherove.com/blog/2006/3/13/code-from-devdays-belgium-available-design-for-testability-a.html) - Mar 10, 2006 ### [March at Agile Israel - Great presentations & The group's first birthday](https://osherove.com/blog/2006/3/10/march-at-agile-israel-great-presentations-amp-the-groups-fir.html) --- title: "Nice Google Desktop Trick" url: "https://osherove.com/blog/2006/3/16/nice-google-desktop-trick.md" canonical: "https://osherove.com/blog/2006/3/16/nice-google-desktop-trick.html" published: "2006-03-16T11:47:00" updated: "2006-03-16T11:47:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "Here's something I just discovered. If you installed *the latest version* of the Google Desktop Search, Hit \"Ctrl\" twice now. Update : Apparently this does not come in all versions of the Google desktop. So here's what…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice Google Desktop Trick By Roy Osherove March 16, 2006 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published March 16, 2006; technical details may be outdated. Here's something I just discovered. If you installed [\*the latest version\*](http://desktop.google.com/) of the Google Desktop Search, Hit "Ctrl" twice now. **Update**: Apparently this does not come in all versions of the Google desktop. So here's what you get if you ht Ctrl Twice: ![Quick Search Box](https://osherove.com/img/wb/e992d4cb_desktop.google.com_images_quicksearch.gif) Check out the [Quick Search Box](http://desktop.google.com/features.html#lock) ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Jun 25, 2007 ### [ThreadTester with new Ability: StopWhenTrue() and thread polling](https://osherove.com/blog/2007/6/25/threadtester-with-new-ability-stopwhentrue-and-thread-pollin.html) - Mar 31, 2006 ### [Solving those nasty "Out Of Memory" problems](https://osherove.com/blog/2006/3/31/solving-those-nasty-quotout-of-memoryquot-problems.html) - Feb 9, 2006 ### [Ask The Pros - Keyboard Shortcut Junkies (and some extra shortcuts from me)](https://osherove.com/blog/2006/2/9/ask-the-pros-keyboard-shortcut-junkies-and-some-extra-shortc.html) - Aug 18, 2005 ### [Cool Tip: Show a vertical rule after 80 chars in VS.NET](https://osherove.com/blog/2005/8/18/cool-tip-show-a-vertical-rule-after-80-chars-in-vsnet.html) --- title: "Code from DevDays Belgium available: Design for Testability & Smart Client Offline Caching and Synchronization" url: "https://osherove.com/blog/2006/3/13/code-from-devdays-belgium-available-design-for-testability-a.md" canonical: "https://osherove.com/blog/2006/3/13/code-from-devdays-belgium-available-design-for-testability-a.html" published: "2006-03-13T16:24:00" updated: "2006-03-13T16:24:00" tags: [".Net 2.0", "Agile Related", "Community", "Team Agile News"] author: "Roy Osherove" description: "I had a good time at DevDays Belgium and would love to go back there again sometime in the future. I just hope the crowd enjoyed my sessions. In any case, I'm making available the demo code from two of my presentations…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Code from DevDays Belgium available: Design for Testability & Smart Client Offline Caching and Synchronization By Roy Osherove March 13, 2006 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published March 13, 2006; technical details may be outdated. I had a good time at DevDays Belgium and would love to go back there again sometime in the future. I just hope the crowd enjoyed my sessions. In any case, I'm making available the demo code from two of my presentations (Designing for testability and Smart Client Caching and Synchronization). - [Smart Client Offline Caching and Synchronization](http://www.teamagile.com/downloads/SmartClientOfflineDataCachingAndSyncDemos.zip) (This code is adapted from [Brian Noyes](http://www.softinsight.com/bnoyes/)' excellent Original Demo code to fit VS 2005) (1.7MB) - [Designing for Testability](http://www.teamagile.com/downloads/TeamAgile.Design4TestabilityDemos.zip) (200k) - _**Note: Both downloads are built for VS 2005**_ One nice thing I noticed at the event is that there was noticeable user group activity. For example, there was a great booth from the [Belgian XP User group](http://www.xp.be/) right there, giving books and raffling nice stuff, and giving away a "planning game" tutorial. I'll have a separate post on this later on. Rock on Belgium! I got to meet some great people, and had two lovely geek dinners while I was there. I just love those kinds of experiences :) ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Apr 25, 2006 ### [Debugger Visualizer for MethodInfo, DynamicMethod, and MethodBase available for download](https://osherove.com/blog/2006/4/25/debugger-visualizer-for-methodinfo-dynamicmethod-and-methodb.html) - Mar 22, 2006 ### [Windows Complication Foundation](https://osherove.com/blog/2006/3/22/windows-complication-foundation.html) - Mar 1, 2006 ### [The 3 ways to create a Thread-Safe GUI with .NET 2.0, with one clear winner.](https://osherove.com/blog/2006/3/1/the-3-ways-to-create-a-thread-safe-gui-with-net-20-with-one.html) - Feb 6, 2006 ### [FIX: error message while rebuilding a solution and trying to view a Windows Form in Design view (VS 2005)](https://osherove.com/blog/2006/2/6/fix-error-message-while-rebuilding-a-solution-and-trying-to.html) --- title: "March at Agile Israel - Great presentations & The group's first birthday" url: "https://osherove.com/blog/2006/3/10/march-at-agile-israel-great-presentations-amp-the-groups-fir.md" canonical: "https://osherove.com/blog/2006/3/10/march-at-agile-israel-great-presentations-amp-the-groups-fir.html" published: "2006-03-10T21:20:00" updated: "2006-03-10T21:20:00" tags: ["Agile Israel News", "Agile Related", "Team Agile News"] author: "Roy Osherove" description: "Our upcoming March meeting of Agile Israel will be a special one. not only do we have a great set of presentations to dish out, we'll also be celebrating the group's first birthday! We'll have a cake, pizzas, and raffle…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # March at Agile Israel - Great presentations & The group's first birthday By Roy Osherove March 10, 2006 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published March 10, 2006; technical details may be outdated. Our upcoming March meeting of [Agile Israel](http://www.agileisrael.com/) will be a special one. not only do we have a great set of presentations to dish out, we'll also be celebrating the group's first birthday! We'll have a cake, pizzas, and raffle out some cool and interesting prizes! See you there! (see arrival instructions at end of email)
Date and Time:
March 27th, 2006
Gathering as of 17:30, we start promptly at 18:00.
 
This month we have the distinct pleasure of hosting two speakers which are internationally known in the agile conference world (Agile International conference, XP international conference etc..) for their research and studies into the adoption and management techniques in Agile Projects. Fortunately, they also live and work in Israel's Technion, and have both agreed to speak to our group!
 
Agenda:
17:30 – Gathering
18:00 – Part I - Introducing Agile Culture into Your Organization
19:15 – break
19:30 – Part II -  Managing Agile Software Development Projects
20:45: prize raffle
 
Description:
Though agile software development methods have been around for almost a decade, in many software organizations practitioners still keep asking themselves questions such as: how to establish an agile software development culture, how to achieve a full adoption of a specific agile software development method, and, how to maintain its implementation. Indeed, illustratively, with respect to Extreme Programming, Kent Beck starts the second edition of Extreme Programming Explained by stating that “Extreme Programming is about social change”. 
In this two-part presentation we will first address the nature of the cultural change that should take place when agile software development is introduced into the organization and second, we will work on specific management practices that support the development of agile software projects.
 Speaker Details 

Orit Hazzan is an Associate Professor at the Department of Education in Technology and Science of the Technion – Israel Institute of Technology. In May 2004 she published her book Human Aspects of Software Engineering, co-authored with the late Jim Tomayko. She is a software project consultant in the Israeli software industry. The way she combines research and practice enables her to bring a comprehensive picture into guidance processes of software teams. She presents her research in computer science and software engineering education conferences (e.g., SIGCSE) as well as in conferences that deal with agile software development (e.g., the Agile International Conference).

Yael Dubinsky is an adjunct lecturer at the Computer Science Department at the Technion and a consultant in the areas of software project management and computerization, working with the Israeli army and industry. She graduated B.Sc. and M.Sc. in Computer Science from the Technion, Israel, and was the head of the IT group in this department for ten years. During her Ph.D. research, she examined implementing software development methods in project-based courses in the higher education, and specializing in Extreme Programming. Yael has a significant experience with guiding agile implementation processes. Her current research interests deal with quality aspects of software project processes.
 
Getting There
Meeting will take place at Microsoft Ra'anana:
2 Hapnina St, Raanana
(09) 7625-100
Floor 0 , Dekel Room
 
It is the new building across from Amdocs.
After the first traffic circle, there is an area for (free) parking on the right.
 
## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Mar 29, 2006 ### [Photos and Slides from Agile Israel March Meeting Birthday Maddness!](https://osherove.com/blog/2006/3/29/photos-and-slides-from-agile-israel-march-meeting-birthday-m.html) - Mar 27, 2006 ### [Special Agile Israel Meeting Today!](https://osherove.com/blog/2006/3/27/special-agile-israel-meeting-today.html) - Feb 6, 2006 ### [February at Agile Israel: The FIT Testing Framework](https://osherove.com/blog/2006/2/6/february-at-agile-israel-the-fit-testing-framework.html) - Feb 1, 2006 ### [\[Audio Interview\] Johanna Rothman - Secrets of great management](https://osherove.com/blog/2006/2/1/audio-interview-johanna-rothman-secrets-of-great-management.html) --- title: "Just search for \"Roy\"" url: "https://osherove.com/blog/2006/3/10/just-search-for-quotroyquot.md" canonical: "https://osherove.com/blog/2006/3/10/just-search-for-quotroyquot.html" published: "2006-03-10T20:59:00" updated: "2006-03-10T20:59:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It's official. I'm number 2 when searching \"roy\" in Google , and Number 7 for the same search in the new MS Live Search . Now the pressure begins! Update : Well, I seem to be bouncing up and down on the main google…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Just search for "Roy" By Roy Osherove March 10, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 10, 2006; technical details may be outdated. It's official. I'm number 2 [when searching "roy" in Google](http://www.google.com/search?hl=en&lr=&q=roy), and Number 7 for the [same search in the new MS Live Search](http://search.live.com/#q=roy&offset=7). Now the pressure begins! **Update**: Well, I seem to be bouncing up and down on the main google page. But that's still gotta count for something :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 23, 2006 ### [Advertise your Tool/Component/Site on ISerializable.com Blog](https://osherove.com/blog/2006/4/23/advertise-your-toolcomponentsite-on-iserializablecom-blog.html) - Mar 24, 2006 ### [Introvert Speaker == Extrovert Writer?](https://osherove.com/blog/2006/3/24/introvert-speaker-extrovert-writer.html) - Feb 14, 2006 ### [\[OT\]Israeli group announces anti-Semitic cartoons contest](https://osherove.com/blog/2006/2/14/otisraeli-group-announces-anti-semitic-cartoons-contest.html) - Feb 11, 2006 ### [The future of interaction](https://osherove.com/blog/2006/2/11/the-future-of-interaction.html) --- title: "When *not* to use Invirtus VM Optimizer (Hint: with differencing disks!) + different space-saver way" url: "https://osherove.com/blog/2006/3/5/when-not-to-use-invirtus-vm-optimizer-hint-with-differencing.md" canonical: "https://osherove.com/blog/2006/3/5/when-not-to-use-invirtus-vm-optimizer-hint-with-differencing.html" published: "2006-03-05T01:35:00" updated: "2006-03-05T01:35:00" tags: [] author: "Roy Osherove" description: "When RTFM is not enough It was a fun experience downloading Invrituse's VM-Compacting solution , installing it, running it for a couple of hours on one of my VPC images, wait quite a bit, and only then realizing that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # When \*not\* to use Invirtus VM Optimizer (Hint: with differencing disks!) + different space-saver way By Roy Osherove March 5, 2006 **Historical article** · Originally published March 5, 2006; technical details may be outdated. **When RTFM is not enough** It was a fun experience downloading [Invrituse's VM-Compacting solution](http://www.invirtus.com/), installing it, running it for a couple of hours on one of my VPC images, wait quite a bit, and only then realizing that even though you can run the VM Compactor from within the running hosted operating system, the final step you need is an external one - using the Virtual PC Virtual Disk Wizard-Compact Disk, which **does not run on differencing disks**!. All that effort for nothing.  Invirtus would be very wise to put in on one of its top level headlines a big red line saying **don't use our product on differencing disks,** since you'll have to merge them with the parent disk before it can actually save you some space(which negates the whole idea of diff. disks..) . **So what \*can\* I do?** Luckily, there is another partial solution to this problem, which turned out to save me lots and lots of disk space: I put the parent images of my VPC into compressed NTFS folders. How much disk does it save? well, a standard 2GB sized image lots weight to around 300MB on disk. All by right clicking on the folder-> advanced->compressed folder check box. Don't do it on the actually diff. disk VPC, just on the parent disks, though, for perf reasons. **A workaround for differencing disks?** The Invirtus folk have [a different solution for using differencing disks](http://www.invirtus.com/blog/?p=8). a "workaround" if you will, which is weird but seems to work. basically, you rename your \*undo\* disk into a "vhd" extension file, and it works just like a differencing disk, but without the official title for it. What does that give you? not sure. haven't tried it. but perhaps it allows compacting it unlike the "real" diff. disks. Let me know if you have an answer.. --- title: "The Next Regex Regulator" url: "https://osherove.com/blog/2006/3/1/the-next-regex-regulator.md" canonical: "https://osherove.com/blog/2006/3/1/the-next-regex-regulator.html" published: "2006-03-01T13:23:00" updated: "2006-03-01T13:23:00" tags: ["Regex"] author: "Roy Osherove" description: "It hasn't left my mind! Here's a preview of the current build. I'll make it downloadable when it becomes a little more usable than its current state." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Next Regex Regulator By Roy Osherove March 1, 2006 In [Regex](https://osherove.com/blog/category/regex) **Historical article** · Originally published March 1, 2006; technical details may be outdated. It hasn't left my mind! Here's a preview of the current build. I'll make it downloadable when it becomes a little more usable than its current state. ## More in Regex [All posts in Regex](https://osherove.com/blog/category/regex) - Oct 9, 2006 ### [Regulazy 1.0.3 Released](https://osherove.com/blog/2006/10/9/regulazy-103-released.html) - Sep 10, 2006 ### [Regulazy 1.02 is out and about](https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.html) - Feb 28, 2006 ### [The Reanimator - Visualize How the Regex Engine Works](https://osherove.com/blog/2006/2/28/the-reanimator-visualize-how-the-regex-engine-works.html) - Nov 26, 2005 ### [Announcing Regex Kit: Regular Expression Visualizers for VS 2005](https://osherove.com/blog/2005/11/26/announcing-regex-kit-regular-expression-visualizers-for-vs-2.html) --- title: "The 3 ways to create a Thread-Safe GUI with .NET 2.0, with one clear winner." url: "https://osherove.com/blog/2006/3/1/the-3-ways-to-create-a-thread-safe-gui-with-net-20-with-one.md" canonical: "https://osherove.com/blog/2006/3/1/the-3-ways-to-create-a-thread-safe-gui-with-net-20-with-one.html" published: "2006-03-01T02:13:00" updated: "2006-03-01T02:13:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "With .NET 2.0 and with the new \"anonymous delegates\" feature in C#, doing multi threaded responsive GUIs is now easier. In fact, you get multiple choices on how to accomplish this task. But which choice is the best? and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The 3 ways to create a Thread-Safe GUI with .NET 2.0, with one clear winner. By Roy Osherove March 1, 2006 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published March 1, 2006; technical details may be outdated. With .NET 2.0 and with the new "anonymous delegates" feature in C#, doing multi threaded responsive GUIs is now easier. In fact, you get multiple choices on how to accomplish this task. But which choice is the best? and what does "best" really mean? more elegant? faster? more readable? all of the above? Here's a little scenario for you. Assume there is a method that displays a string on the GUI, but may be called by a different thread than the GUI. The method has only a single string parameter. here are three versions of how you can implement this method and keep it thread safe. The last one is my favorite. First, I'll declare two "generic" delegates. Each one is used in a different version of the method.  delegate void Func(T t); private void displayError(string message)         {             if (InvokeRequired)             {                 Func del = displayError;                 Invoke(del, message);                 return;             }             errorDisplay.Show(message);         } This version uses a generic delegate which takes a string argument, then if Invoke is needed, it "Invokes" the delegate passing in the string argument. Note that passing in the string is not a strongly typed operation and may result in runtime errors if we make a mistake in the parameter order for example. That's why I don't like this version at all. But it's the most commonly used that I've seen, which is why I'm writing this. --- --- delegate void Func();         private void displayError1(string message)         {             if (InvokeRequired)             {                 Func del = delegate { displayError1(message); };                 Invoke(del);                 return;             }             errorDisplay.Show(message);         }          This version uses a delegate with no parameters, and uses the "delegate" directive to create a delegate that calls the same method with the "message" parameter. Notice how lovely it is to be able to use a local scoped variable such as "message" in out delegate. It makes life much simpler because now all we ever need to do is just use **one delegate signature** for all of our thread-safe GUI work. This version is much better than the previous one because it's type-safe. We can't make a mistake in parameter order or type, or we'll have a build error. But this version is **still** not as elegant as I would like. --- ---         private void displayError2(string message)         {             Func del = delegate                 {                     errorDisplay.Show(message);                 };             Invoke(del);         } This version uses the delegate directive to actually create the full functionality of our method. Notice that we \*always\* invoke the code in here using the "Invoke" method which is thread-safe, even if this is not required. Also note how much less code we have to write here, and that we always use the same delegate signature to accomplish this. Not only that, in contrast to the other two implementations, we only write the calling code **once inside the delegate, and not another time outside of it which can lead to maintenance problem due to duplication.** This method, to me, is the most elegant and readable. I don't really care about one extra call to the "Invoke" method, since this method is GUI related, and obviously is called after a long operation which was async. 10 nano seconds more or less won't matter one bit. This is the method I'd encourage you to use, even though it seems a bit un-orthodox at first, it is clearly the simplest of the three, with less code, less duplication and more readability. --- Colorized by: [CarlosAg.CodeColorizer](http://www.carlosag.net/Tools/CodeColorizer/) Unfortunately, all three methods require you to use C#, since anonymous delegates are not present in VB.NET yet. Thoughts? ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Mar 22, 2006 ### [Windows Complication Foundation](https://osherove.com/blog/2006/3/22/windows-complication-foundation.html) - Mar 13, 2006 ### [Code from DevDays Belgium available: Design for Testability & Smart Client Offline Caching and Synchronization](https://osherove.com/blog/2006/3/13/code-from-devdays-belgium-available-design-for-testability-a.html) - Feb 6, 2006 ### [FIX: error message while rebuilding a solution and trying to view a Windows Form in Design view (VS 2005)](https://osherove.com/blog/2006/2/6/fix-error-message-while-rebuilding-a-solution-and-trying-to.html) - Feb 4, 2006 ### [.NET 2.0 certification study group in Israel? Your choice.](https://osherove.com/blog/2006/2/4/net-20-certification-study-group-in-israel-your-choice.html) --- title: "The Reanimator - Visualize How the Regex Engine Works" url: "https://osherove.com/blog/2006/2/28/the-reanimator-visualize-how-the-regex-engine-works.md" canonical: "https://osherove.com/blog/2006/2/28/the-reanimator-visualize-how-the-regex-engine-works.html" published: "2006-02-28T19:02:00" updated: "2006-02-28T19:02:00" tags: ["Regex"] author: "Roy Osherove" description: "If you're into Regular Expressions, check out the Reanimator . It provides a visual graphs of how the match was performed. \"The regular expression is compiled into a nondeterministic finite-state automaton (the first…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Reanimator - Visualize How the Regex Engine Works By Roy Osherove February 28, 2006 In [Regex](https://osherove.com/blog/category/regex) **Historical article** · Originally published February 28, 2006; technical details may be outdated. If you're into Regular Expressions, check out [the Reanimator](http://osteele.com/tools/reanimator/). It provides a visual graphs of how the match was performed. _"The regular expression is compiled into a nondeterministic finite-state automaton (the first graph). Most regular expression engines reduce this to a deterministic finite-state automaton (the second graph). This is like a board game. The input string is interpreted as a series of instructions to advance a "game counter" (the state) along the game board (the automaton). If it lands on a winning space (a final state), there's a match!"_ \[via [Addy Santo](http://blogs.msdn.com/asanto/)\] ## More in Regex [All posts in Regex](https://osherove.com/blog/category/regex) - Sep 10, 2006 ### [Regulazy 1.02 is out and about](https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.html) - Mar 1, 2006 ### [The Next Regex Regulator](https://osherove.com/blog/2006/3/1/the-next-regex-regulator.html) - Nov 26, 2005 ### [Announcing Regex Kit: Regular Expression Visualizers for VS 2005](https://osherove.com/blog/2005/11/26/announcing-regex-kit-regular-expression-visualizers-for-vs-2.html) - Jul 8, 2005 ### [Sessions done at TechEd](https://osherove.com/blog/2005/7/8/sessions-done-at-teched.html) --- title: "Tech-Ed Israel 2006 Dev Track list" url: "https://osherove.com/blog/2006/2/27/tech-ed-israel-2006-dev-track-list.md" canonical: "https://osherove.com/blog/2006/2/27/tech-ed-israel-2006-dev-track-list.html" published: "2006-02-27T12:32:00" updated: "2006-02-27T12:32:00" tags: ["Community"] author: "Roy Osherove" description: "The Dev track for Teched Israel 2006 is almost final, and Yosi Taguri has all the gory details . Lots of outside speakers this year! Browse and comment , or just check out what you'll be going to on the company's dime..…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tech-Ed Israel 2006 Dev Track list By Roy Osherove February 27, 2006 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published February 27, 2006; technical details may be outdated. The Dev track for Teched Israel 2006 is almost final, and [Yosi Taguri has all the gory details](http://blogs.msdn.com/yosit/archive/2006/02/26/539563.aspx). Lots of outside speakers this year! Browse and comment , or just check out what you'll be going to on the company's dime.. (or yours) ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Mar 23, 2006 ### [Weblogs.asp.net Community Server 2.0 upgrade sorely missed!](https://osherove.com/blog/2006/3/23/weblogsaspnet-community-server-20-upgrade-sorely-missed.html) - Mar 13, 2006 ### [Code from DevDays Belgium available: Design for Testability & Smart Client Offline Caching and Synchronization](https://osherove.com/blog/2006/3/13/code-from-devdays-belgium-available-design-for-testability-a.html) - Feb 16, 2006 ### [The Official Israel Video Blog](https://osherove.com/blog/2006/2/16/the-official-israel-video-blog.html) - Feb 13, 2006 ### [Catch me at the Architects User Group: Partially Connected Smart Clients Architecture](https://osherove.com/blog/2006/2/13/catch-me-at-the-architects-user-group-partially-connected-sm.html) --- title: "Possible Fix: Queuing service is not available - 0xc00E000B - Reinstall Message Queuing" url: "https://osherove.com/blog/2006/2/26/possible-fix-queuing-service-is-not-available-0xc00e000b-rei.md" canonical: "https://osherove.com/blog/2006/2/26/possible-fix-queuing-service-is-not-available-0xc00e000b-rei.html" published: "2006-02-26T03:05:00" updated: "2006-02-26T03:05:00" tags: [] author: "Roy Osherove" description: "Note to self (and anyone else who listens): If you're using MSMQ on your back end, and suddenly, without any reason, you start getting an error like this in your event log: \"An unexpected error was returned by the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Possible Fix: Queuing service is not available - 0xc00E000B - Reinstall Message Queuing By Roy Osherove February 26, 2006 **Historical article** · Originally published February 26, 2006; technical details may be outdated. Note to self (and anyone else who listens): If you're using MSMQ on your back end, and suddenly, without any reason, you start getting an error like this in your event log: "An unexpected error was returned by the Message Queuing API MQCreateQueue : The Message Queuing service is not available Server Application ID: {02D4B3F1-FD88-11D1-960D-00805FC79235} Server Application Instance ID: {248330A8-B483-4B3F-88E1-12414BE25062} Server Application Name: System Application Error Code = 0xc00e000b : COM+ Services Internals Information: File: d:\\qxp\_slp\\com\\com1x\\src\\comsv..." You may have had the misfortune of installing some hotfix from Microsoft which screw around with some of your NTFS permissions, including Queue related ones.  After googling around and emailing the whole world, [A friend of mine](http://www.shadowall.net/) helped me find the fix: **Uninstall and then reinstall Message Queuing.** **The symptoms I had** were that the Message Queuing Service was running just fine, but the Message Queue Triggers service was set to automatic, but not started, and you couldn't start it if you tried. Also, If open my computer management console, under applications and services, I couldn't even **see** the Message Queuing information node! after the reinstall, the triggers service was set on "started", and I could see message queuing node on the Computer management mmc. All was running fine after that. And it only took 5 hours to figure out! Arrrrg! --- title: "One more DevDays Talk: Introduction to Agile Methodologies and Concepts" url: "https://osherove.com/blog/2006/2/23/one-more-devdays-talk-introduction-to-agile-methodologies-an.md" canonical: "https://osherove.com/blog/2006/2/23/one-more-devdays-talk-introduction-to-agile-methodologies-an.html" published: "2006-02-23T21:57:00" updated: "2006-02-23T21:57:00" tags: ["Agile Related", "Team Agile News"] author: "Roy Osherove" description: "Looks like I'll be doing a third talk at the upcoming DevDays in Belgium . I'm taking the place of Rafal Lukawiecki, who couldn't make it in time, and will be talking about a topic near and dear to my heart. You guessed…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # One more DevDays Talk: Introduction to Agile Methodologies and Concepts By Roy Osherove February 23, 2006 In [Agile Related](https://osherove.com/blog/category/agile-related), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published February 23, 2006; technical details may be outdated. Looks like I'll be doing a third talk at the upcoming [DevDays in Belgium](http://www.microsoft.com/belux/nl/devitprodays/). I'm taking the place of Rafal Lukawiecki, who couldn't make it in time, and will be talking about a topic near and dear to my heart. You guessed it. **Agile**. **Introduction to Agile Methodologies and Concepts** March 8, 2006 - 14:30 - 15:45 Ever knew on your first day on the project that you’re going to miss the deadline? Ever been “surprised” that the customer changed their mind? Ever had long nights trying to fit your latest changes into code that just keeps on breaking? You’re not alone. Wondering where you should start if you want to go Agile? This talk is for you. We’ll take a look at the traditional “Engineering” based methodologies such as the waterfall model, how they came to be, why most projects today fail, and what the differences are between Engineering methodologies and “Agile” methodologies. We’ll explore what “Embrace Change” really means in the context of Agile development and what “People-Oriented” “Adaptive” development mean in that context. We’ll see how methodologies such as XP, Scrum, MSF-Agile and others fit into the context of Agile development and talk about the ways in which one can start adopting agile in their organization. Finally, we’ll talk about some of the most basic steps any organization can take in the road to becoming more and more Agile.  ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Mar 13, 2006 ### [Code from DevDays Belgium available: Design for Testability & Smart Client Offline Caching and Synchronization](https://osherove.com/blog/2006/3/13/code-from-devdays-belgium-available-design-for-testability-a.html) - Mar 10, 2006 ### [March at Agile Israel - Great presentations & The group's first birthday](https://osherove.com/blog/2006/3/10/march-at-agile-israel-great-presentations-amp-the-groups-fir.html) - Feb 6, 2006 ### [February at Agile Israel: The FIT Testing Framework](https://osherove.com/blog/2006/2/6/february-at-agile-israel-the-fit-testing-framework.html) - Feb 2, 2006 ### [HanselMinutes on CI tools, and a free EBook on Agile Skills](https://osherove.com/blog/2006/2/2/hanselminutes-on-ci-tools-and-a-free-ebook-on-agile-skills.html) --- title: "Microsoft releases cross-site-scripting prevention helper library" url: "https://osherove.com/blog/2006/2/23/microsoft-releases-cross-site-scripting-prevention-helper-li.md" canonical: "https://osherove.com/blog/2006/2/23/microsoft-releases-cross-site-scripting-prevention-helper-li.html" published: "2006-02-23T19:16:00" updated: "2006-02-23T19:16:00" tags: [] author: "Roy Osherove" description: "Looks like Microsoft has released a special library to help ASP.NET developers protect their applications from Cross-Site-Scripting attacks (a.k.a \"xss\")." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft releases cross-site-scripting prevention helper library By Roy Osherove February 23, 2006 **Historical article** · Originally published February 23, 2006; technical details may be outdated. Looks like Microsoft has released a [special library to help ASP.NET developers](http://www.microsoft.com/downloads/details.aspx?familyid=9a2b9c92-7ad9-496c-9a89-af08de2e5982&displaylang=en) protect their applications from Cross-Site-Scripting attacks (a.k.a "xss"). --- title: "KeePass + FolderShare = Store your passwords securely and share them at the same time" url: "https://osherove.com/blog/2006/2/16/keepass-foldershare-store-your-passwords-securely-and-share.md" canonical: "https://osherove.com/blog/2006/2/16/keepass-foldershare-store-your-passwords-securely-and-share.html" published: "2006-02-16T21:15:00" updated: "2006-02-16T21:15:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "I've been using KeePass for the past month or so and I love it. It stored all my passwords in encrypted form and I use FolderShare to automatically synchronize my passwords with all my machines. I only need to remember…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # KeePass + FolderShare = Store your passwords securely and share them at the same time By Roy Osherove February 16, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published February 16, 2006; technical details may be outdated. I've been using [KeePass](http://keepass.sourceforge.net/) for the past month or so and I love it. It stored all my passwords in encrypted form and I use [FolderShare](http://www.foldershare.com/) to automatically synchronize my passwords with all my machines. I only need to remember one unique password - the one to open KeePass. the rest is inside. It's got security features as far as the eye can see. Here are some: - [For full security information read this page.](http://keepass.sourceforge.net/infosec.php) - Password are saved in memory in encrypted form. you can make it "copy" a password and once, pasted, it automatically deletes it from memory (you need to copy it again). - The application can be automatically locked when minimized or after an amount of time - It can use a Disk-based key file for extra security - meaning you can only unlock it if you have the physical USB key with you connected to the machine. - It helps you generate good passwords with nice "randomizer" screens to customize the output. - You can make passwords expire after a certain period - etc.. It's free, and open source. Oh, and it's a nice UI too! [Check it out!](http://keepass.sourceforge.net/) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Apr 25, 2006 ### [Debugger Visualizer for MethodInfo, DynamicMethod, and MethodBase available for download](https://osherove.com/blog/2006/4/25/debugger-visualizer-for-methodinfo-dynamicmethod-and-methodb.html) - Apr 2, 2006 ### ["Cool Commands" for VS 2005 is a free and useful little Add-in!](https://osherove.com/blog/2006/4/2/quotcool-commandsquot-for-vs-2005-is-a-free-and-useful-littl.html) - Feb 6, 2006 ### [SqlAssist is to VS SQL text as CodeSmart is to VB 6 code - Wonderful](https://osherove.com/blog/2006/2/6/sqlassist-is-to-vs-sql-text-as-codesmart-is-to-vb-6-code-won.html) - Feb 6, 2006 ### [Need an online version of Word or Excel? Try Writely and iRows.](https://osherove.com/blog/2006/2/6/need-an-online-version-of-word-or-excel-try-writely-and-irow.html) --- title: "10 Hacker tricks to exploit SQL Server Systems + free chapter on reverse engineering" url: "https://osherove.com/blog/2006/2/16/10-hacker-tricks-to-exploit-sql-server-systems-free-chapter.md" canonical: "https://osherove.com/blog/2006/2/16/10-hacker-tricks-to-exploit-sql-server-systems-free-chapter.html" published: "2006-02-16T16:25:00" updated: "2006-02-16T16:25:00" tags: ["Free book chapters"] author: "Roy Osherove" description: "Reminder to self: Check this out: 10 Hacker tricks to exploit SQL Server Systems there's also a link to this sample chapter from the excellent book Exploiting Software: How to Break Code by Greg Hoglund and Gary McGraw,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 10 Hacker tricks to exploit SQL Server Systems + free chapter on reverse engineering By Roy Osherove February 16, 2006 In [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published February 16, 2006; technical details may be outdated. Reminder to self: Check this out: [10 Hacker tricks to exploit SQL Server Systems](http://searchsqlserver.techtarget.com/tip/1,289483,sid87_gci1165052_tax301336,00.html?track=NL-464&ad=541873&adg=301324&bucket=ETA) there's also a link to [this sample chapter](http://www.informit.com/articles/article.asp?p=353553&seqNum=4&rl=1) from the excellent book _[Exploiting Software: How to Break Code](https://www.amazon.com/exec/obidos/ASIN/0201786958/iserializable-20)_ by Greg Hoglund and Gary McGraw, you'll find a discussion about reverse engineering ploys. \[via [Robert](http://weblogs.asp.net/rhurlbut/archive/2006/02/16/438373.aspx)\] ## More in Free book chapters [All posts in Free book chapters](https://osherove.com/blog/category/free-book-chapters) - Aug 21, 2006 ### [Free E-Book: Developing Time-Oriented Database Applications in SQL](https://osherove.com/blog/2006/8/21/free-e-book-developing-time-oriented-database-applications-i.html) - Jun 19, 2006 ### [Free Sharepoint 2007 Book Download](https://osherove.com/blog/2006/6/19/free-sharepoint-2007-book-download.html) - Feb 2, 2006 ### [HanselMinutes on CI tools, and a free EBook on Agile Skills](https://osherove.com/blog/2006/2/2/hanselminutes-on-ci-tools-and-a-free-ebook-on-agile-skills.html) - Apr 8, 2005 ### [\[Free eBook\]FIT for Developing Software: Framework for Integrated Tests](https://osherove.com/blog/2005/4/8/free-ebookfit-for-developing-software-framework-for-integrat.html) --- title: "The Official Israel Video Blog" url: "https://osherove.com/blog/2006/2/16/the-official-israel-video-blog.md" canonical: "https://osherove.com/blog/2006/2/16/the-official-israel-video-blog.html" published: "2006-02-16T09:35:00" updated: "2006-02-16T09:35:00" tags: ["Community"] author: "Roy Osherove" description: "This is interesting. Israel is now officially one of the first countries in the world to have its own official video-blog . The pickings are pretty slim right now, but here's to hoping it gets lots of juicy content real…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Official Israel Video Blog By Roy Osherove February 16, 2006 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published February 16, 2006; technical details may be outdated. This is interesting. Israel is now officially one of the first countries in the world [to have its own official video-blog](http://israelvideoblog.org/). The pickings are pretty slim right now, but here's to hoping it gets lots of juicy content real soon! From the site: "The Israel Video Blog is a project of the Israeli Consulate in New York City. We know that Israel is not only at the cutting edge of technology and new media, but Israelis are seriously into artistic creation in all its forms. It’s a vibrant and diverse scene that includes everyone from rappers performing on street corners to archaeologists reconstructing ancient cities. These are the real Israelis, whose work and lives can be found behind the news headlines. We at the Israeli Consulate in New York City would like you to get to know them. We have created this video blog as a platform for Israelis to show the world their creations, to tell their stories in their own words, and to engage in conversations with like-minded people. Also, we will be happy if this project will encourage even more Israelis to start using new publishing tools, like weblogs and video blogs, in order to communicate with people from all over the world." ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Mar 13, 2006 ### [Code from DevDays Belgium available: Design for Testability & Smart Client Offline Caching and Synchronization](https://osherove.com/blog/2006/3/13/code-from-devdays-belgium-available-design-for-testability-a.html) - Feb 27, 2006 ### [Tech-Ed Israel 2006 Dev Track list](https://osherove.com/blog/2006/2/27/tech-ed-israel-2006-dev-track-list.html) - Feb 13, 2006 ### [Catch me at the Architects User Group: Partially Connected Smart Clients Architecture](https://osherove.com/blog/2006/2/13/catch-me-at-the-architects-user-group-partially-connected-sm.html) - Feb 12, 2006 ### [Catch me at IVCUG this week: TDD with VS 2005, and designing for testability](https://osherove.com/blog/2006/2/12/catch-me-at-ivcug-this-week-tdd-with-vs-2005-and-designing-f.html) --- title: "I've been DNR'ed" url: "https://osherove.com/blog/2006/2/16/ive-been-dnred.md" canonical: "https://osherove.com/blog/2006/2/16/ive-been-dnred.html" published: "2006-02-16T00:07:00" updated: "2006-02-16T00:07:00" tags: ["Interview"] author: "Roy Osherove" description: "I got an anonymous tip today at IVCUG, that my name has come up at one of the last .NET Rocks Shows. I looked it up, and indeed, it's mentioned in the last two minutes of Mark Dunne's InfoPath related show on DNR . Mark…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I've been DNR'ed By Roy Osherove February 16, 2006 In [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published February 16, 2006; technical details may be outdated. I got an anonymous tip today at IVCUG, that my name has come up at one of the last .NET Rocks Shows. I looked it up, and indeed, it's mentioned in the last two minutes of Mark Dunne's InfoPath related show on DNR. Mark gives some props to [The Regulator](https://osherove.com/) (thanks Mark!) and the boys generally have a lot of fun pronouncing my name (that's O-SHE-RO-V, BTW). I can't help it if InfoPath just don't drive me nuts so that's one of the only shows I haven't actually listened to, figures.. In any case, they also mentioned I might have a podcast somewhere, sort of a .NET Rocks, Israel style. Well, not quite. It's just my ongoing list of online interviews that I've been doing with several folks, some of them on .NET, but mostly they are about management, architecture and Agile methodologies. [Get the full list of recorded interviews here](http://www.teamagile.com/mainpages/Interviews.html). Have fun! ## More in Interview [All posts in Interview](https://osherove.com/blog/category/interview) - Jun 13, 2008 ### [Unit Testing Interview at TechEd](https://osherove.com/blog/2008/6/13/unit-testing-interview-at-teched.html) - Feb 5, 2006 ### [Simeon says I don't listen to what my interviewee has to say. Is he right?](https://osherove.com/blog/2006/2/5/simeon-says-i-dont-listen-to-what-my-interviewee-has-to-say.html) - Feb 1, 2006 ### [\[Audio Interview\] Johanna Rothman - Secrets of great management](https://osherove.com/blog/2006/2/1/audio-interview-johanna-rothman-secrets-of-great-management.html) --- title: "[OT]Israeli group announces anti-Semitic cartoons contest" url: "https://osherove.com/blog/2006/2/14/otisraeli-group-announces-anti-semitic-cartoons-contest.md" canonical: "https://osherove.com/blog/2006/2/14/otisraeli-group-announces-anti-semitic-cartoons-contest.html" published: "2006-02-14T09:19:00" updated: "2006-02-14T09:19:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm not sure what to think of this, and this has nothing to do with technology, but it seems like an interesting response to the \"Muhammad cartoon-gate\" that's been going on the past few weeks, I think. And it's kinda…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\]Israeli group announces anti-Semitic cartoons contest By Roy Osherove February 14, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 14, 2006; technical details may be outdated. I'm not sure what to think of this, and this has nothing to do with technology, but it seems like an interesting response to the "Muhammad cartoon-gate" that's been going on the past few weeks, I think. And it's kinda ironic, and kinda smart, and kinda provocative, and kinda makes you think before you burn someone's embassy down for drawing an offensive picture.  **[Israeli group announces anti-Semitic cartoons contest!](http://www.boomka.org/)** **A Danish paper publishes a cartoon that mocks Muslims.**** **An Iranian paper responds with a Holocaust cartoons contest -** **\- Now a group of Israelis announce their own anti-Semitic cartoons contest!**** }Amitai Sandy (29), graphic artist \[...\] from Tel-Aviv, Israel, has followed the unfolding of the "Muhammad cartoon-gate" events in amazement, until finally he came up with the right answer to all this insanity - and so he announced today the launch of a new anti-Semitic cartoons contest - this time drawn by Jews themselves!" "We'll show the world we can do the best, sharpest, most offensive Jew hating cartoons ever published!" said Sandy "No Iranian will beat us on our home turf!"  "...Sandy is now in the process of arranging sponsorships of large organizations, and promises lucrative prizes for the winners, including of course the famous Matzo-bread baked with the blood of Christian children." ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 24, 2006 ### [Introvert Speaker == Extrovert Writer?](https://osherove.com/blog/2006/3/24/introvert-speaker-extrovert-writer.html) - Mar 10, 2006 ### [Just search for "Roy"](https://osherove.com/blog/2006/3/10/just-search-for-quotroyquot.html) - Feb 11, 2006 ### [The future of interaction](https://osherove.com/blog/2006/2/11/the-future-of-interaction.html) - Feb 10, 2006 ### [VB6 Migration pains - captured as a conversation](https://osherove.com/blog/2006/2/10/vb6-migration-pains-captured-as-a-conversation.html) --- title: "Catch me at the Architects User Group: Partially Connected Smart Clients Architecture" url: "https://osherove.com/blog/2006/2/13/catch-me-at-the-architects-user-group-partially-connected-sm.md" canonical: "https://osherove.com/blog/2006/2/13/catch-me-at-the-architects-user-group-partially-connected-sm.html" published: "2006-02-13T22:06:00" updated: "2006-02-13T22:06:00" tags: ["Architecture", "Community"] author: "Roy Osherove" description: "This is one area where I see lots of frustration around, and justly. There's a lot of knowledge still missing about design guidelines, architecture and such. The reason its missing is because there is so much stuff out…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Catch me at the Architects User Group: Partially Connected Smart Clients Architecture By Roy Osherove February 13, 2006 In [Architecture](https://osherove.com/blog/category/architecture), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published February 13, 2006; technical details may be outdated. This is one area where I see lots of frustration around, and justly. There's a lot of knowledge still missing about design guidelines, architecture and such. The reason its missing is because there is **so much** stuff out there telling you how to do things on smart clients, it's like drinking water out of a fire hose.. Date: **February 26th, 2006** (26/2/2006) Time: **17:30 – 20:00** Location: **HP offices, 9 Daphna St, Kiryat Etgarim (northern industrial area), Ra’anana** Topic: **Partially-Connected Smart Clients: Challenges and Solutions for Offline Data Synchronization and Caching** **Agenda**: - 17:30 – 17:45 – Assembly - 17:45 – 18:45 – Partially-Connected Smart Clients: Challenges and Solutions for Offline Data Synchronization and Caching – Roy Osherove - 18:45 – 19:00 – Break - 19:00 – 20:00 – Partially-Connected Smart Clients: Challenges and Solutions for Offline Data Synchronization and Caching – Roy Osherove **Summary:** One of the challenges of Smart Client development and operations is supporting disconnected operations. As soon as you allow your application to be used offline, a whole new set of considerations need to be addressed in your design. This session explores what those challenges are, what the available choices are to address them, and what are the best choices for a variety of situations. The session includes demos for different options and shows what modifications are required to an application's architecture to support the different options discussed. ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Mar 24, 2006 ### [Microsoft's Journal for architects](https://osherove.com/blog/2006/3/24/microsofts-journal-for-architects.html) - Mar 23, 2006 ### [Udi Dahan on ...SOA!](https://osherove.com/blog/2006/3/23/udi-dahan-on-soa.html) - Nov 26, 2005 ### [Nice article on ordering code construction tasks by Jeremy Miller](https://osherove.com/blog/2005/11/26/nice-article-on-ordering-code-construction-tasks-by-jeremy-m.html) - Nov 23, 2005 ### [Slides from my talk on Guidance Automation Kit are available](https://osherove.com/blog/2005/11/23/slides-from-my-talk-on-guidance-automation-kit-are-available.html) --- title: "Catch me at IVCUG this week: TDD with VS 2005, and designing for testability" url: "https://osherove.com/blog/2006/2/12/catch-me-at-ivcug-this-week-tdd-with-vs-2005-and-designing-f.md" canonical: "https://osherove.com/blog/2006/2/12/catch-me-at-ivcug-this-week-tdd-with-vs-2005-and-designing-f.html" published: "2006-02-12T21:49:00" updated: "2006-02-12T21:49:00" tags: ["Community"] author: "Roy Osherove" description: "I'll be speaking this coming Wednesday at the Israeli Visual C# Users group on the following topics. See you there! (If you want to know of future Visual C# meetings send an email to Moshe Raab and tell him. It's free…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Catch me at IVCUG this week: TDD with VS 2005, and designing for testability By Roy Osherove February 12, 2006 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published February 12, 2006; technical details may be outdated. I'll be speaking this coming Wednesday at the Israeli [Visual C# Users group](http://www.comconix.com/ivcug/) on the following topics. See you there! _(If you want to know of future Visual C# meetings send an email to_ _Moshe Raab_ _and tell him. It's free to join)_ Date:    **Wednesday, February 15, 17:00 - 20:00** Place:   **Microsoft Israel**              **Hapnina 2  (Amdocs Building)**             **Ground Floor**             **Raanana** **+972 (9) 762-5100**          parking available at the Kurkar parking lot. Proceed straight past the traffic circle and the parking lot will be on your right. ## **_Topics_**:     ## **_Part I –Test Driven Development with VS 2005_** In this talk we’ll explore the basic practices and common sense behind Test Driven Development – using the new Visual Studio 2005 environment and it's built in tools. We’ll also talk about what you can do if you \*don’t have the full version of Visual Studio\*, but only the Express versions, which don’t have any testing tools or even Add-in Support. We’ll see what options we have of still practicing TDD with the help of external tools such as TestDriven.NET, NCover and others. ### **Part II - Best Practices: Designing for Testability: Putting quality first, in the real world** Unit Testing and Agile Methodologies seem to be the latest buzz in the software industry these days, but many people who actually try to Unit Test their application (whether new code or 'legacy' code) find out quickly that doing a thorough job can be tough if some thought about the code's design for testability is not considered. In this talk we'll discuss various methods of designing your APIs so that they are easy to test, how design patterns help, what 'evolving a design' really means in the context of Test Driven Development, and several techniques for approaching the task of unit testing "legacy code". We'll try to squeeze in some discussion about the build life cycle and how continuous integration fits into the mix, pending enough time. ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Feb 16, 2006 ### [The Official Israel Video Blog](https://osherove.com/blog/2006/2/16/the-official-israel-video-blog.html) - Feb 13, 2006 ### [Catch me at the Architects User Group: Partially Connected Smart Clients Architecture](https://osherove.com/blog/2006/2/13/catch-me-at-the-architects-user-group-partially-connected-sm.html) - Jan 24, 2006 ### [I have a dream: Geek Go-Karting in Israel](https://osherove.com/blog/2006/1/24/i-have-a-dream-geek-go-karting-in-israel.html) - Jan 23, 2006 ### [MS Israel Security Users Group is back in business](https://osherove.com/blog/2006/1/23/ms-israel-security-users-group-is-back-in-business.html) --- title: "The future of interaction" url: "https://osherove.com/blog/2006/2/11/the-future-of-interaction.md" canonical: "https://osherove.com/blog/2006/2/11/the-future-of-interaction.html" published: "2006-02-11T18:47:00" updated: "2006-02-11T18:47:00" tags: ["Off Topic"] author: "Roy Osherove" description: "absolutley amazing - the future of computer interaction [via here ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The future of interaction By Roy Osherove February 11, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 11, 2006; technical details may be outdated. absolutley amazing - [the future of computer interaction](http://weblogs.asp.net/nleghari/archive/2006/02/11/437960.aspx) \[via [here](https://www.youtube.com/watch?v=iVI6xw9Zph8)\][](http://weblogs.asp.net/nleghari/archive/2006/02/11/437960.aspx) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 10, 2006 ### [Just search for "Roy"](https://osherove.com/blog/2006/3/10/just-search-for-quotroyquot.html) - Feb 14, 2006 ### [\[OT\]Israeli group announces anti-Semitic cartoons contest](https://osherove.com/blog/2006/2/14/otisraeli-group-announces-anti-semitic-cartoons-contest.html) - Feb 10, 2006 ### [VB6 Migration pains - captured as a conversation](https://osherove.com/blog/2006/2/10/vb6-migration-pains-captured-as-a-conversation.html) - Jan 19, 2006 ### [Guess that conference](https://osherove.com/blog/2006/1/19/guess-that-conference.html) --- title: "VB6 Migration pains - captured as a conversation" url: "https://osherove.com/blog/2006/2/10/vb6-migration-pains-captured-as-a-conversation.md" canonical: "https://osherove.com/blog/2006/2/10/vb6-migration-pains-captured-as-a-conversation.html" published: "2006-02-10T00:17:00" updated: "2006-02-10T00:17:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Scott Swigart , at one of the mailing lists that I frequent, recently wrote one of those \"It'd be funny if it wasn't so sad\" kind of emails. With permission, I'm quoting parts of it here. If you're a consultant, this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VB6 Migration pains - captured as a conversation By Roy Osherove February 10, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 10, 2006; technical details may be outdated. [Scott Swigart](http://swigartconsulting.blogs.com/tech_blender/), at one of the mailing lists that I frequent, recently wrote one of those "It'd be funny if it wasn't so sad" kind of emails. With permission, I'm quoting parts of it here. If you're a consultant, this should sound **really** familiar. It's a rehash of a conversations between the consultant and customers moving from VB6 to .NET (especially 2.0);; "... People moving over from VB6 are really struggling with things like:  1. You really should use data binding now.  No, I know, you’ve never used it before.  No I know, you tried with earlier versions of VB and felt like you got burned.  No, it’s real this time.  No, really.  Stop typing txtUserName.Text = DataSet.DataTable(0).UserName.  Stop!!! 2. Ok, to use databinding, you just need a BindingSource, DataSource, DataMember, DataSet, DataTable, TableAdapter, and BindingNavigator.  No really, you want to do it this way.  It’s better.  Trust me.  It’s so much easier. 3. Oh, Autonumber.  Um, partial class the TableAdapter to get at the DataAdapter, uh, DataSetTableAdapter namespace, um, let’s see, AddHandler OnRowUpdated…  No really, this is better.  STOP TYPING txtUserName.Text = 4. Well, you see, if you would just use SQL Express…  Look, Access isn’t really supported.  Yes, I know the IDE lets you add an Access datasource, and builds the typed dataset, and all that, but trust me, it’s not really supported.   How big’s express?  About 50MB.  No, that’s not big.  Uh, no, that doesn’t include the Framework.  Yes, you’re looking at 70MB + however big your app is, but in this day and age, that’s really not so much.  Your app used to be a 3 MB download?  But that was before .NET.  “That’s the point.” You say?  Well, we think it’s secure.  Yes, we thought MSDE was secure too, but they’ve done a lot of work since they thought that was secure, and now they _really_ think this is secure.  No, I won’t refund my consulting fees if I advise you to use it, and there’s some security hole that no one knows about today, and it causes a major headache for you.  You have to take some risks you know.  Access isn’t safe either.  Well, I know Slammer didn’t affect Access, but SQL is safe and Access isn’t.  STOP TYPING txtUserName.Text =.  You’re doing it the hard way!  Don’t use Access, it’s not _really_ supported! 5. Oh, you want it to show up in a different format than in the database.  Uh, Databinding, uh, advanced.  See here, “Format type”, um, custom.  No, you just think it’s easy if you use txtUserName.text=, uh, what’s this warning, oh yeah, Format and Parse events.  Um let’s see, we get to the binding object for the textbox by, uh, AddHandler… 6. It’s not getting saved in the database?  Um, did you call Validate?  How about EndEdit?  Stop typing DataSet.DataTable(0).UserName = txtUserName.Text.  That’s the wrong way.  Wrong. Wrong. Wrong. Wrong!!!  So what if it works.  Microsoft says… What so you mean this isn’t working out?  What do you mean, you’re going to try another consultant?  BUT… MICROSOFT… SAYS…. ..." ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 14, 2006 ### [\[OT\]Israeli group announces anti-Semitic cartoons contest](https://osherove.com/blog/2006/2/14/otisraeli-group-announces-anti-semitic-cartoons-contest.html) - Feb 11, 2006 ### [The future of interaction](https://osherove.com/blog/2006/2/11/the-future-of-interaction.html) - Jan 19, 2006 ### [Guess that conference](https://osherove.com/blog/2006/1/19/guess-that-conference.html) - Jan 19, 2006 ### [FYI: "v7ndotcom elursrebmem"](https://osherove.com/blog/2006/1/19/fyi-quotv7ndotcom-elursrebmemquot.html) --- title: "Ask The Pros - Keyboard Shortcut Junkies (and some extra shortcuts from me)" url: "https://osherove.com/blog/2006/2/9/ask-the-pros-keyboard-shortcut-junkies-and-some-extra-shortc.md" canonical: "https://osherove.com/blog/2006/2/9/ask-the-pros-keyboard-shortcut-junkies-and-some-extra-shortc.html" published: "2006-02-09T10:19:00" updated: "2006-02-09T10:19:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "Jim Holmes has the latest batch of \"Ask The Pros\", this time on Keyboard Shortcuts . If you haven't been using the keyboard much inside Visual Studio, you could do well by taking a look at the article. Oh, and two…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ask The Pros - Keyboard Shortcut Junkies (and some extra shortcuts from me) By Roy Osherove February 9, 2006 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published February 9, 2006; technical details may be outdated. [Jim Holmes](http://www.iterativerose.com/) has the latest batch of "Ask The Pros", [this time on Keyboard Shortcuts](http://www.visualstudiohacks.com/atpkeyboard). If you haven't been using the keyboard much inside Visual Studio, you could do well by taking a look at the article. **Oh, and two shortcuts that I forgot to talk about there are:** Press Ctrl-X or Ctrl-C in a line where you have \*no selection\* - and you'll automatically copy or cut the entire current line. Save lots of time and pain, and just isn't well known. Another tidbit everyone should know: If you have a message box popup in Windows (any message box, like an error dialog or such, not just from within Visual Studio), you can simply press Ctrl-C when the dialog is active, and you'll be copying the text of the entire dialog to the windows clipboard. You'll hear a little sound to tell you that it worked, too. If you've found yourself pressing "PrtScn" to save the message text, this should be a nice way to get rid of that. ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Mar 31, 2006 ### [Solving those nasty "Out Of Memory" problems](https://osherove.com/blog/2006/3/31/solving-those-nasty-quotout-of-memoryquot-problems.html) - Mar 16, 2006 ### [Nice Google Desktop Trick](https://osherove.com/blog/2006/3/16/nice-google-desktop-trick.html) - Aug 18, 2005 ### [Cool Tip: Show a vertical rule after 80 chars in VS.NET](https://osherove.com/blog/2005/8/18/cool-tip-show-a-vertical-rule-after-80-chars-in-vsnet.html) - Aug 9, 2005 ### [Easy tip to speed up your Virtual PC](https://osherove.com/blog/2005/8/9/easy-tip-to-speed-up-your-virtual-pc.html) --- title: "SqlAssist is to VS SQL text as CodeSmart is to VB 6 code - Wonderful" url: "https://osherove.com/blog/2006/2/6/sqlassist-is-to-vs-sql-text-as-codesmart-is-to-vb-6-code-won.md" canonical: "https://osherove.com/blog/2006/2/6/sqlassist-is-to-vs-sql-text-as-codesmart-is-to-vb-6-code-won.html" published: "2006-02-06T22:59:00" updated: "2006-02-06T22:59:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Wow, what a cool addin for VS 2005 to add Intellisense to your SQL queries! Check out SqlAssist [via Hannes ] Best of all - it's in beta testing and is free to download! some of the coolest features: Intellisense for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SqlAssist is to VS SQL text as CodeSmart is to VB 6 code - Wonderful By Roy Osherove February 6, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published February 6, 2006; technical details may be outdated. Wow, what a cool addin for VS 2005 to add Intellisense to your SQL queries! Check out [SqlAssist](http://www.roundpolygons.com/Home/tabid/89/Default.aspx) \[via [Hannes](http://weblogs.asp.net/HPreishuber/archive/2006/02/06/437542.aspx)\] Best of all - it's in beta testing and is free to download! some of the coolest features: - Intellisense for tables, columns  and variables. works on temp tables and aliases just as well - Code formatting with changeable rules - Templates (like snippets) of SQL code with shortcut macros - Char completion - automatically closes '(', single quotes etc. even on selected text - Has an object explorer just like the SQL analyzer you know and love, complete with "Script to" ability. - Works in VS 2003 and VS 2005 ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Apr 2, 2006 ### ["Cool Commands" for VS 2005 is a free and useful little Add-in!](https://osherove.com/blog/2006/4/2/quotcool-commandsquot-for-vs-2005-is-a-free-and-useful-littl.html) - Feb 16, 2006 ### [KeePass + FolderShare = Store your passwords securely and share them at the same time](https://osherove.com/blog/2006/2/16/keepass-foldershare-store-your-passwords-securely-and-share.html) - Feb 6, 2006 ### [Need an online version of Word or Excel? Try Writely and iRows.](https://osherove.com/blog/2006/2/6/need-an-online-version-of-word-or-excel-try-writely-and-irow.html) - Feb 4, 2006 ### [Amazoner and iTunes](https://osherove.com/blog/2006/2/4/amazoner-and-itunes.html) --- title: "Google upgrades to \"BigDaddy\"" url: "https://osherove.com/blog/2006/2/6/google-upgrades-to-quotbigdaddyquot.md" canonical: "https://osherove.com/blog/2006/2/6/google-upgrades-to-quotbigdaddyquot.html" published: "2006-02-06T12:34:00" updated: "2006-02-06T12:34:00" tags: [] author: "Roy Osherove" description: "Weird headline, huh? Google is doing a major upgrade to their search data centers. during this upgrade, you can check out how the new data center acts and behaves (code named \"BigDaddy\") through several IP addresses.In…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Google upgrades to "BigDaddy" By Roy Osherove February 6, 2006 **Historical article** · Originally published February 6, 2006; technical details may be outdated. Weird headline, huh? Google is doing a major upgrade to their search data centers. during this upgrade, you can check out how the new data center acts and behaves (code named "BigDaddy") through several IP addresses.In addition to 66.249.93.104 and 64.233.179.104, BigDaddy is now up at 216.239.51.104. **How do I know if the version of Google is using "BigDaddy"?** A: There’s not a definitive way outside of Google. But the \[sf giants\] example [Here](http://www.mattcutts.com/blog/seo-advice-discussing-302-redirects/) remains a pretty good test. If the query \[sf giants\] returns giants.mlb.com, the odds are pretty good that you’re hitting BigDaddy. \[More info on this in [Matt Cutts](http://www.mattcutts.com/blog/bigdaddy-progress-update/)' blog.\] _PS (unrelated funny tidbit)_ This "[soldiers taking drugs](http://video.google.com/videoplay?docid=517198059628627413)" experiment certainly looks like a Monty python sketch.  (via [Google scoped blog](http://blog.outer-court.com/archive/2006-02-03.html#n63)) Or, if you're in a \*really\* good mood, go see "[BrokeBack to the Future](https://www.youtube.com/watch?v=zfODSPIYwpQ)"(same source) --- title: "Would you like to write an article for MSDN Magazine?" url: "https://osherove.com/blog/2006/2/6/would-you-like-to-write-an-article-for-msdn-magazine.md" canonical: "https://osherove.com/blog/2006/2/6/would-you-like-to-write-an-article-for-msdn-magazine.html" published: "2006-02-06T12:12:00" updated: "2006-02-06T12:12:00" tags: [] author: "Roy Osherove" description: "Ever wanted to write an article for MSDN Magazine? It's easier than you thought! Stephen Toub , one of the editors, tells you how to submit an article ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Would you like to write an article for MSDN Magazine? By Roy Osherove February 6, 2006 **Historical article** · Originally published February 6, 2006; technical details may be outdated. Ever wanted to write an article for MSDN Magazine? It's easier than you thought! [Stephen Toub](http://blogs.msdn.com/toub/), one of the editors, [tells you how to submit an article](http://blogs.msdn.com/toub/archive/2006/01/09/510849.aspx). --- title: "Need an online version of Word or Excel? Try Writely and iRows." url: "https://osherove.com/blog/2006/2/6/need-an-online-version-of-word-or-excel-try-writely-and-irow.md" canonical: "https://osherove.com/blog/2006/2/6/need-an-online-version-of-word-or-excel-try-writely-and-irow.html" published: "2006-02-06T11:55:00" updated: "2006-02-06T11:55:00" tags: ["Cool Tools", "Cool sites"] author: "Roy Osherove" description: "Ever wondered what an online version of Word might looks like? Try Writely . How about Excel? Well, the (Israeli) folks who brought you the coolest online calculator , now bring you iRows . I'm impressed." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Need an online version of Word or Excel? Try Writely and iRows. By Roy Osherove February 6, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published February 6, 2006; technical details may be outdated. Ever wondered what an online version of Word might looks like? Try [Writely](http://www.writely.com/). How about Excel? Well, the (Israeli) folks who brought you the [coolest online calculator](http://www.calcoolate.com/), now bring you [iRows](http://www.irows.com/xo/EditSheet.do). I'm impressed. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Feb 16, 2006 ### [KeePass + FolderShare = Store your passwords securely and share them at the same time](https://osherove.com/blog/2006/2/16/keepass-foldershare-store-your-passwords-securely-and-share.html) - Feb 6, 2006 ### [SqlAssist is to VS SQL text as CodeSmart is to VB 6 code - Wonderful](https://osherove.com/blog/2006/2/6/sqlassist-is-to-vs-sql-text-as-codesmart-is-to-vb-6-code-won.html) - Feb 4, 2006 ### [Amazoner and iTunes](https://osherove.com/blog/2006/2/4/amazoner-and-itunes.html) - Feb 4, 2006 ### [VMware Server to become a \*free\* product](https://osherove.com/blog/2006/2/4/vmware-server-to-become-a-free-product.html) --- title: ".NET Profiler for the compact framework, anyone?" url: "https://osherove.com/blog/2006/2/6/net-profiler-for-the-compact-framework-anyone.md" canonical: "https://osherove.com/blog/2006/2/6/net-profiler-for-the-compact-framework-anyone.html" published: "2006-02-06T10:01:00" updated: "2006-02-06T10:01:00" tags: [] author: "Roy Osherove" description: "Someone asked me the oter day about a good profiler for the .NET compact framework. Since I'm not all that into mobile development (yet!) I thought maybe you, kind reader, could help. So, What do you recommend my friend…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .NET Profiler for the compact framework, anyone? By Roy Osherove February 6, 2006 **Historical article** · Originally published February 6, 2006; technical details may be outdated. Someone asked me the oter day about a good profiler for the .NET compact framework. Since I'm not all that into mobile development (yet!) I thought maybe you, kind reader, could help. So, What do **you** recommend my friend tries out? They are interested mainly in memory related problems, keep that in mind. --- title: "February at Agile Israel: The FIT Testing Framework" url: "https://osherove.com/blog/2006/2/6/february-at-agile-israel-the-fit-testing-framework.md" canonical: "https://osherove.com/blog/2006/2/6/february-at-agile-israel-the-fit-testing-framework.html" published: "2006-02-06T07:56:00" updated: "2006-02-06T07:56:00" tags: ["Agile Israel News", "Agile Related", "Team Agile News"] author: "Roy Osherove" description: "[we currently have 240 members registered with the group(!). If you want to join (it's free!) just go to www.Agileisrael.com and press the register link] The next Agile Israel meeting will take place on the 27th of this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # February at Agile Israel: The FIT Testing Framework By Roy Osherove February 6, 2006 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published February 6, 2006; technical details may be outdated. _\[we currently have 240 members registered with the group(!). If you want to join (it's free!) just go to_ [_www.Agileisrael.com_](http://www.agileisrael.com/) _and press the register link\]_ The next Agile Israel meeting will take place on the 27th of this month (Monday) and will be about FIT testing. For more information and arrival instruction, [see the event page](http://www.agileisrael.com/Default.aspx?tabid=121). Time and date: February 27th, 2006 **Gathering and smalltalk: 17:30** We start **promptly** at 18:00 Speaker: Amir Kolsky The [Framework for Interactive Testing (FIT)](http://fit.c2.com/) is a mechanism to specify tests using a higher level language (namely HTML). By using human readable, writable and understandable language we are able to merge specifications and testing into a unified entity called the Executable Specification. This is also commonly referred to (but not limited to) Acceptance, User or Story Tests.   Story Test Driven Development is an an alternative to the traditional TDD approach (pun is intended). In this lecture we will look at: \- What is a unit test and how they are executed \- What is FIT and how FIT tests are executed \- How to marry unit tests and FIT \- The types of FIT tables   The second part will be a FIT demonstration - I.e. going from requirement to test to working code. **Amir Kolsky** has been in the software industry for longer than he cares to remember. He spent many years in IBM research working on everything from translation systems to operating systems. After leaving IBM he took the chief architect and CTO in several large and small companies, founded a company (MobileSpear) and eventually decided that what he likes to do best is rekindle peoples love of programming. He has been doing Agile since 2000 and has co-founded XPand Software with the agile tenets as its foundations. ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Mar 27, 2006 ### [Special Agile Israel Meeting Today!](https://osherove.com/blog/2006/3/27/special-agile-israel-meeting-today.html) - Mar 10, 2006 ### [March at Agile Israel - Great presentations & The group's first birthday](https://osherove.com/blog/2006/3/10/march-at-agile-israel-great-presentations-amp-the-groups-fir.html) - Feb 1, 2006 ### [\[Audio Interview\] Johanna Rothman - Secrets of great management](https://osherove.com/blog/2006/2/1/audio-interview-johanna-rothman-secrets-of-great-management.html) - Feb 1, 2006 ### [\[Audio Interview\] Kent Beck - An Agile conversation (First Iteration)](https://osherove.com/blog/2006/2/1/audio-interview-kent-beck-an-agile-conversation-first-iterat.html) --- title: "FIX: error message while rebuilding a solution and trying to view a Windows Form in Design view (VS 2005)" url: "https://osherove.com/blog/2006/2/6/fix-error-message-while-rebuilding-a-solution-and-trying-to.md" canonical: "https://osherove.com/blog/2006/2/6/fix-error-message-while-rebuilding-a-solution-and-trying-to.html" published: "2006-02-06T06:57:00" updated: "2006-02-06T06:57:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "\"One or more errors encountered while loading the designer. The errors are listed below. Some errors can be fixed by rebuilding your project, while others may require code changes. TypeLoad failure. Unable to load one…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # FIX: error message while rebuilding a solution and trying to view a Windows Form in Design view (VS 2005) By Roy Osherove February 6, 2006 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published February 6, 2006; technical details may be outdated. "One or more errors encountered while loading the designer. The errors are listed below. Some errors can be fixed by rebuilding your project, while others may require code changes. **TypeLoad failure. Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information**" Looks familiar? [There's a hotfix for that](http://support.microsoft.com/kb/912019/en-us?spid=3041), and you may want to turn off "edit and continue" in VS 2005. Yep. Stable. ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Mar 13, 2006 ### [Code from DevDays Belgium available: Design for Testability & Smart Client Offline Caching and Synchronization](https://osherove.com/blog/2006/3/13/code-from-devdays-belgium-available-design-for-testability-a.html) - Mar 1, 2006 ### [The 3 ways to create a Thread-Safe GUI with .NET 2.0, with one clear winner.](https://osherove.com/blog/2006/3/1/the-3-ways-to-create-a-thread-safe-gui-with-net-20-with-one.html) - Feb 4, 2006 ### [.NET 2.0 certification study group in Israel? Your choice.](https://osherove.com/blog/2006/2/4/net-20-certification-study-group-in-israel-your-choice.html) - Feb 1, 2006 ### [Finally a "stable enough" build of Resharper 2.0 Alpha?](https://osherove.com/blog/2006/2/1/finally-a-quotstable-enoughquot-build-of-resharper-20-alpha.html) --- title: "ASP.NET Team in Israel, Teched Israel sessions, and is an evangelist \"marketing\"?" url: "https://osherove.com/blog/2006/2/6/aspnet-team-in-israel-teched-israel-sessions-and-is-an-evang.md" canonical: "https://osherove.com/blog/2006/2/6/aspnet-team-in-israel-teched-israel-sessions-and-is-an-evang.html" published: "2006-02-06T06:19:00" updated: "2006-02-06T06:19:00" tags: [] author: "Roy Osherove" description: "\"At one point someone said that \"Yosi Taguri might have been a technical person BUT now he is MARKETING\" at some other point someone else said \"Because he is MARKETING he no longer blogs\". so this post is just to say 1…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ASP.NET Team in Israel, Teched Israel sessions, and is an evangelist "marketing"? By Roy Osherove February 6, 2006 **Historical article** · Originally published February 6, 2006; technical details may be outdated. _"At one point someone said that "Yosi Taguri might have been a technical person BUT now he is MARKETING"  at some other point someone else said "Because he is MARKETING he no longer blogs"._ _so this post is just to say 1 main thing: I AM NOT MARKETING and I will never be."_ \[[Yosi Taguri talks about his focus group experiences](http://blogs.msdn.com/yosit/default.aspx)\] Yosi may not feel like he's marketing, but I think no matter how technical he is, his job is Marketing. I wouldn't take it too personally though. That's just the way it is. you're either a dev or PM, or you're pushing the products one way or the other. Or am I being too "black or white" on this issue? Yosi also has some good news - The ASP.NET team is [coming to Israel March 13](http://blogs.msdn.com/yosit/archive/2006/02/05/525193.aspx), and they will also [host an "upgrade your code" day](http://blogs.msdn.com/yosit/archive/2006/02/05/525270.aspx) with the ASP.NET for customers here in Israel. Sounds like a plan! Lastly, Yosi [asks what sessions you'd like to see at TechEd Israel this year](http://blogs.msdn.com/yosit/archive/2006/02/05/525273.aspx). I'd recommend putting your comments on that post. _"But Roy, why so many links to Yosi suddenly?"_ The dude hasn't blogged in a while, and if he's asking for feedback, it's an opportunity to actually use the medium to help mold things to your liking. Take it. --- title: "Simeon says I don't listen to what my interviewee has to say. Is he right?" url: "https://osherove.com/blog/2006/2/5/simeon-says-i-dont-listen-to-what-my-interviewee-has-to-say.md" canonical: "https://osherove.com/blog/2006/2/5/simeon-says-i-dont-listen-to-what-my-interviewee-has-to-say.html" published: "2006-02-05T08:34:00" updated: "2006-02-05T08:34:00" tags: ["Interview"] author: "Roy Osherove" description: "Simeon has some harsh bits to say about my interview style with Kent Beck . \"...The best example is when Kent had to answer \"Moo\" due to the question been overly complex and not making sense. Another example was when…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Simeon says I don't listen to what my interviewee has to say. Is he right? By Roy Osherove February 5, 2006 In [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published February 5, 2006; technical details may be outdated. [Simeon has some harsh bits](http://spaces.msn.com/simeonpilgrim/Blog/cns!21C001D6D9CA7CEA!291.entry) to say about my interview style [with Kent Beck](http://weblogs.asp.net/rosherove/archive/2006/02/01/437077.aspx). _"...The best example is when Kent had to answer "Moo" due to the question been overly complex and not making sense._ _Another example was when Roy was asking Kent about how to deal with people not following the XP rules, and Kent reply that people follow the rules due to belief in the system not been told to do it. Roy just didn’t seam to comprehend what Kent was saying, and kept asking the same concept in different forms. I felt frustrated on Kent’s behalf...."_ At least he's honest :) I'll definitely take that into account in the next interviews, and see if I can locate the place where my listening stops. The purpose of the interview was specifically to conduct it as a conversation rather than an interview, but I'm not sure it turned out that way. Feel free to post your own comments on the that interview, or my interview style in particular. I hope to learn more as I go on doing these things! ## More in Interview [All posts in Interview](https://osherove.com/blog/category/interview) - Jun 13, 2008 ### [Unit Testing Interview at TechEd](https://osherove.com/blog/2008/6/13/unit-testing-interview-at-teched.html) - Feb 16, 2006 ### [I've been DNR'ed](https://osherove.com/blog/2006/2/16/ive-been-dnred.html) - Feb 1, 2006 ### [\[Audio Interview\] Johanna Rothman - Secrets of great management](https://osherove.com/blog/2006/2/1/audio-interview-johanna-rothman-secrets-of-great-management.html) - Feb 1, 2006 ### [\[Audio Interview\] Kent Beck - An Agile conversation (First Iteration)](https://osherove.com/blog/2006/2/1/audio-interview-kent-beck-an-agile-conversation-first-iterat.html) --- title: ".NET 2.0 certification study group in Israel? Your choice." url: "https://osherove.com/blog/2006/2/4/net-20-certification-study-group-in-israel-your-choice.md" canonical: "https://osherove.com/blog/2006/2/4/net-20-certification-study-group-in-israel-your-choice.html" published: "2006-02-04T17:29:00" updated: "2006-02-04T17:29:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "Justin Angel is in the process of creating a \"study group\" for the new Microsoft .NET 2.0 certifications. If you're interested, head on over to his post (in Hebrew) and post a comment. The more reactions he gets, the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .NET 2.0 certification study group in Israel? Your choice. By Roy Osherove February 4, 2006 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published February 4, 2006; technical details may be outdated. [Justin Angel is in the process of creating a "study group"](http://www.justinangel.net/CommentView,guid,b6cbead1-bfb3-4338-bd8f-947f0d4d698d.aspx) for the new Microsoft .NET 2.0 certifications. If you're interested, head on over to [his post](http://www.justinangel.net/CommentView,guid,b6cbead1-bfb3-4338-bd8f-947f0d4d698d.aspx) (in Hebrew) and post a comment. The more reactions he gets, the better he can convince MS Israel to help with the logistics (room, food etc..) ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Mar 1, 2006 ### [The 3 ways to create a Thread-Safe GUI with .NET 2.0, with one clear winner.](https://osherove.com/blog/2006/3/1/the-3-ways-to-create-a-thread-safe-gui-with-net-20-with-one.html) - Feb 6, 2006 ### [FIX: error message while rebuilding a solution and trying to view a Windows Form in Design view (VS 2005)](https://osherove.com/blog/2006/2/6/fix-error-message-while-rebuilding-a-solution-and-trying-to.html) - Feb 1, 2006 ### [Finally a "stable enough" build of Resharper 2.0 Alpha?](https://osherove.com/blog/2006/2/1/finally-a-quotstable-enoughquot-build-of-resharper-20-alpha.html) - Jan 15, 2006 ### [This week at the C# Users Group: Windows Communications Foundation (“Indigo”) with Ido Samuelson](https://osherove.com/blog/2006/1/15/this-week-at-the-c-users-group-windows-communications-founda.html) --- title: "Amazoner and iTunes" url: "https://osherove.com/blog/2006/2/4/amazoner-and-itunes.md" canonical: "https://osherove.com/blog/2006/2/4/amazoner-and-itunes.html" published: "2006-02-04T01:47:00" updated: "2006-02-04T01:47:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Looks like Dave Burke took my Amazoner application to search and link to Amazon books online, and modded it to help him put his iTunes Library online. He has some nice things to say about my code, but that's just…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Amazoner and iTunes By Roy Osherove February 4, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published February 4, 2006; technical details may be outdated. Looks like [Dave Burke](http://dbvt.com/blog/) took my [Amazoner](https://osherove.com/) application to search and link to Amazon books online, and [modded it](http://dbvt.com/blog/archive/2006/01/02/3748.aspx) to help him put his iTunes Library online. He has some nice things to say about my code, but that's just because it was a very simple application :) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Feb 6, 2006 ### [SqlAssist is to VS SQL text as CodeSmart is to VB 6 code - Wonderful](https://osherove.com/blog/2006/2/6/sqlassist-is-to-vs-sql-text-as-codesmart-is-to-vb-6-code-won.html) - Feb 6, 2006 ### [Need an online version of Word or Excel? Try Writely and iRows.](https://osherove.com/blog/2006/2/6/need-an-online-version-of-word-or-excel-try-writely-and-irow.html) - Feb 4, 2006 ### [VMware Server to become a \*free\* product](https://osherove.com/blog/2006/2/4/vmware-server-to-become-a-free-product.html) - Feb 2, 2006 ### [HanselMinutes on CI tools, and a free EBook on Agile Skills](https://osherove.com/blog/2006/2/2/hanselminutes-on-ci-tools-and-a-free-ebook-on-agile-skills.html) --- title: "VMware Server to become a *free* product" url: "https://osherove.com/blog/2006/2/4/vmware-server-to-become-a-free-product.md" canonical: "https://osherove.com/blog/2006/2/4/vmware-server-to-become-a-free-product.html" published: "2006-02-04T00:16:00" updated: "2006-02-04T00:16:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "\"Anyhow, here's the deal: as of Monday, VMware is releasing the beta version of a new product, VMware Server, which is the successor to their existing VMware GSX Server product. VMware Server will be a free product for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VMware Server to become a \*free\* product By Roy Osherove February 4, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published February 4, 2006; technical details may be outdated. _"Anyhow, here's the deal: as of Monday, VMware is releasing the beta version of a new product, VMware Server, which is the successor to their existing VMware GSX Server product. VMware Server will be a **free** product for server virtualization. This is, frankly, a market-changing move, and one that I expect a lot of people will take advantage of..."_ _"...VMware Server offers quite a nice list of features, including support for 64-bit operating systems in both host and guest, virtual SMP, and a remote management console. It will be available for download from_ [_http://www.vmware.com/download/VMwareServer_](http://www.vmware.com/download/VMwareServer) _(though that URL may not be active until Monday). With this coming out for free, I can't see why anyone would bother buying Microsoft Virtual Server - or run servers on bare metal"_ _\[via [Larkware](http://www.larkware.com/editorials/vmware.html)\]_ The server in question is their GSX product, not the ESX one, but that's still huge. Read the [CNet news on this here](http://news.com.com/VMware+to+make+server+product+free/2100-1012_3-6034615.html?tag=cd.top). Mike is right. This is **huge** news. I used to use VMware before MS came out with Virtual PC. I switched mainly because of the fact that VPC came in with my MSDN Subscription. But VMware was my favorite. I'd be testing this thing out come Monday (that link is dead for now), and I really hope their workstation product will be free as well, though who knows. It's also good news for VPC users, since the competition just grew up a notch, and MS is sure to try and beat out VMware for features/scalability etc.. It's going to be an interesting future! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Feb 6, 2006 ### [Need an online version of Word or Excel? Try Writely and iRows.](https://osherove.com/blog/2006/2/6/need-an-online-version-of-word-or-excel-try-writely-and-irow.html) - Feb 4, 2006 ### [Amazoner and iTunes](https://osherove.com/blog/2006/2/4/amazoner-and-itunes.html) - Feb 2, 2006 ### [HanselMinutes on CI tools, and a free EBook on Agile Skills](https://osherove.com/blog/2006/2/2/hanselminutes-on-ci-tools-and-a-free-ebook-on-agile-skills.html) - Feb 1, 2006 ### [Why Reboot? This software will help with the answer.](https://osherove.com/blog/2006/2/1/why-reboot-this-software-will-help-with-the-answer.html) --- title: "HanselMinutes on CI tools, and a free EBook on Agile Skills" url: "https://osherove.com/blog/2006/2/2/hanselminutes-on-ci-tools-and-a-free-ebook-on-agile-skills.md" canonical: "https://osherove.com/blog/2006/2/2/hanselminutes-on-ci-tools-and-a-free-ebook-on-agile-skills.html" published: "2006-02-02T01:21:00" updated: "2006-02-02T01:21:00" tags: ["Agile Related", "Cool Tools", "Free book chapters"] author: "Roy Osherove" description: "The new Hanselminutes is all about Continuous Integration tools. Should be worth a listen! Also, via David Hayden , I stumbled upon this freely downloadable EBook (though you can also buy it at Amazon in Print) called…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # HanselMinutes on CI tools, and a free EBook on Agile Skills By Roy Osherove February 2, 2006 In [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published February 2, 2006; technical details may be outdated. The new [Hanselminutes](http://www.hanselminutes.com/) is all about Continuous Integration tools. Should be worth a listen! Also, via [David Hayden](http://davidhayden.com/blog/dave/archive/2004/12/30/740.aspx), I stumbled upon this freely downloadable EBook (though you can also buy it at Amazon in Print) called [Essential Skills for Agile Development](https://www.amazon.com/exec/obidos/ASIN/9993776726/iserializable-20). You can download it as PDF from [www.AgileSkills.Org](http://www.agileskills.org/). I haven't read it yet, but it seems like a nice recap of some of the most essential skills a developer would want to learn first. they specifically state they are going for the 80-20 rule: teaching the 20% of skills that gets you 80% there in terms of agility. Nice. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Feb 23, 2006 ### [One more DevDays Talk: Introduction to Agile Methodologies and Concepts](https://osherove.com/blog/2006/2/23/one-more-devdays-talk-introduction-to-agile-methodologies-an.html) - Feb 6, 2006 ### [February at Agile Israel: The FIT Testing Framework](https://osherove.com/blog/2006/2/6/february-at-agile-israel-the-fit-testing-framework.html) - Feb 1, 2006 ### [\[Audio Interview\] Johanna Rothman - Secrets of great management](https://osherove.com/blog/2006/2/1/audio-interview-johanna-rothman-secrets-of-great-management.html) - Feb 1, 2006 ### [\[Audio Interview\] Kent Beck - An Agile conversation (First Iteration)](https://osherove.com/blog/2006/2/1/audio-interview-kent-beck-an-agile-conversation-first-iterat.html) --- title: "Read HackNot" url: "https://osherove.com/blog/2006/2/2/read-hacknot.md" canonical: "https://osherove.com/blog/2006/2/2/read-hacknot.html" published: "2006-02-02T01:14:00" updated: "2006-02-02T01:14:00" tags: ["Blogging", "Cool sites"] author: "Roy Osherove" description: "A small reminder to self (and all of you) read all the archives of HackNot . This person writes brilliantly (not that I subscribe to all his views, but the argument should be fun!)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Read HackNot By Roy Osherove February 2, 2006 In [Blogging](https://osherove.com/blog/category/blogging), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published February 2, 2006; technical details may be outdated. A small reminder to self (and all of you) read [all the archives of HackNot](http://www.hacknot.info/hacknot/action/archive). This person writes brilliantly (not that I subscribe to **all** his views, but the argument should be fun!) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Feb 8, 2013 ### [When I fight with legacy code](https://osherove.com/blog/2013/2/8/when-i-fight-with-legacy-code.html) - Nov 16, 2005 ### [Good technology audio I've been listening to](https://osherove.com/blog/2005/11/16/good-technology-audio-ive-been-listening-to.html) - Nov 5, 2005 ### [Top 31 weblogs.asp.net blogs to subsrcibe to](https://osherove.com/blog/2005/11/5/top-31-weblogsaspnet-blogs-to-subsrcibe-to.html) --- title: "Finally a \"stable enough\" build of Resharper 2.0 Alpha?" url: "https://osherove.com/blog/2006/2/1/finally-a-quotstable-enoughquot-build-of-resharper-20-alpha.md" canonical: "https://osherove.com/blog/2006/2/1/finally-a-quotstable-enoughquot-build-of-resharper-20-alpha.html" published: "2006-02-01T23:06:00" updated: "2006-02-01T23:06:00" tags: [".Net 2.0", "Cool sites"] author: "Roy Osherove" description: "\"I'm not uninstalling this one. 215 is \"good enough\" right now to boost my productivity. 2.0 has NUnit test-running capability through a UI widget, but I find that I still prefer the crude text output of TestDriven.Net…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Finally a "stable enough" build of Resharper 2.0 Alpha? By Roy Osherove February 1, 2006 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published February 1, 2006; technical details may be outdated. _"I'm not uninstalling this one.  215 is "good enough" right now to boost my productivity.  2.0 has NUnit test-running capability through a UI widget, but I find that I still prefer the crude text output of_ [_TestDriven.Net_](http://testdriven.net/)_. Bottom line:  If you are very used to Resharper 1.5, and you are working with VS 2005, give build 215 a shot.  It's working for me.  **P.S.  Remember to turn off VS intellisense.**"_ _\[via [Jeffrey Palermo](http://codebetter.com/blogs/jeffrey.palermo/archive/2006/01/31/137410.aspx)\]_ I knew **someone** had to be actually trying out every release that comes out of [Resharper 2.0](http://www.jetbrains.net/confluence/display/ReSharper/Download), and and **knew** I don't have the time to sit there and keep un/reinstalling the build just to see it break VS 2005 again and again. So thanks, Jeffry, for keeping us up to date. A stable "enough" build of [Resharper 2.0](http://www.jetbrains.net/confluence/display/ReSharper/Download) Alpha is just what the doctor ordered. I'll go download right now! **Note**: some of the comments on that post still talk about a high memory consumption in devenv and other things. I wonder.... is it **really** stable enough? ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Feb 6, 2006 ### [FIX: error message while rebuilding a solution and trying to view a Windows Form in Design view (VS 2005)](https://osherove.com/blog/2006/2/6/fix-error-message-while-rebuilding-a-solution-and-trying-to.html) - Feb 4, 2006 ### [.NET 2.0 certification study group in Israel? Your choice.](https://osherove.com/blog/2006/2/4/net-20-certification-study-group-in-israel-your-choice.html) - Jan 15, 2006 ### [This week at the C# Users Group: Windows Communications Foundation (“Indigo”) with Ido Samuelson](https://osherove.com/blog/2006/1/15/this-week-at-the-c-users-group-windows-communications-founda.html) - Dec 19, 2005 ### [New XML Features in VS 2005 and .NET 2.0](https://osherove.com/blog/2005/12/19/new-xml-features-in-vs-2005-and-net-20.html) --- title: "[Audio Interview] Johanna Rothman - Secrets of great management" url: "https://osherove.com/blog/2006/2/1/audio-interview-johanna-rothman-secrets-of-great-management.md" canonical: "https://osherove.com/blog/2006/2/1/audio-interview-johanna-rothman-secrets-of-great-management.html" published: "2006-02-01T22:32:00" updated: "2006-02-01T22:32:00" tags: ["Agile Israel News", "Agile Related", "Interview", "Team Agile News"] author: "Roy Osherove" description: "Got something important to say? If you feel you have something important to share with the community, something you're an expert at, and feel that everyone can learn a thing or two from you, read this , and maybe we'll…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Audio Interview\] Johanna Rothman - Secrets of great management By Roy Osherove February 1, 2006 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related), [Interview](https://osherove.com/blog/category/interview), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published February 1, 2006; technical details may be outdated. _**Got something important to say?**_ _If you feel you have something important to share with the community, something you're an expert at, and feel that everyone can learn a thing or two from you,_ [_read this_](http://www.teamagile.com/subpages/InterviewGuide.html)_, and maybe we'll get you on the air._ --- I've been procrastinating on editing this one since December, It's about time this one is heard in public! [Johanna Rothman](http://www.jrothman.com/) keeps coming back to Israel to teach management courses and consult and, well , I just love talking to her so much I keep asking her to do more and more interviews with me. Amazingly, she agrees every time. This time Johanna talks about topics from her new book out with Esther Derby - "[Behind Closed Doors : Secrets of Great Management](https://www.amazon.com/exec/obidos/ASIN/0976694026/iserializable-20)": Learning to delegate, coaching effectively, giving effective feedback, what makes for effective meetings, Solving problems and some planning tips. If you've listened to any of the other interviews with Johanna this is a nice take off from some of the topics Johanna has talked about in the past. This time we are concentrating more on the managerial side of things - things any new team lead or project lead needs to hear and read about.

Language - English.

Go Download (97 Min in 2 parts, MP3)

                               
## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Mar 10, 2006 ### [March at Agile Israel - Great presentations & The group's first birthday](https://osherove.com/blog/2006/3/10/march-at-agile-israel-great-presentations-amp-the-groups-fir.html) - Feb 6, 2006 ### [February at Agile Israel: The FIT Testing Framework](https://osherove.com/blog/2006/2/6/february-at-agile-israel-the-fit-testing-framework.html) - Feb 1, 2006 ### [\[Audio Interview\] Kent Beck - An Agile conversation (First Iteration)](https://osherove.com/blog/2006/2/1/audio-interview-kent-beck-an-agile-conversation-first-iterat.html) - Jan 25, 2006 ### [Bugs and Missing Features with Team System Unit Testing: Part I](https://osherove.com/blog/2006/1/25/bugs-and-missing-features-with-team-system-unit-testing-part.html) --- title: "Why Reboot? This software will help with the answer." url: "https://osherove.com/blog/2006/2/1/why-reboot-this-software-will-help-with-the-answer.md" canonical: "https://osherove.com/blog/2006/2/1/why-reboot-this-software-will-help-with-the-answer.html" published: "2006-02-01T18:03:00" updated: "2006-02-01T18:03:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Why Reboot? - Nifty little application that displays the pending file operations on your computer, so you know just why it's demanding a reboot after a software install. [via Larkware ] Nice!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why Reboot? This software will help with the answer. By Roy Osherove February 1, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published February 1, 2006; technical details may be outdated. - [Why Reboot?](http://www.exodus-dev.com/products/WhyReboot/) - Nifty little application that displays the pending file operations on your computer, so you know just why it's demanding a reboot after a software install. \[via [Larkware](http://www.larkware.com/dg5/TheDailyGrind810.html)\] Nice! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Feb 4, 2006 ### [VMware Server to become a \*free\* product](https://osherove.com/blog/2006/2/4/vmware-server-to-become-a-free-product.html) - Feb 2, 2006 ### [HanselMinutes on CI tools, and a free EBook on Agile Skills](https://osherove.com/blog/2006/2/2/hanselminutes-on-ci-tools-and-a-free-ebook-on-agile-skills.html) - Jan 17, 2006 ### [FixIt Reader - Possibly the Adobe Acrobat killer we've been waiting for](https://osherove.com/blog/2006/1/17/fixit-reader-possibly-the-adobe-acrobat-killer-weve-been-wai.html) - Jan 15, 2006 ### [A solution for easier ASP.NET Unit and GUI testing?](https://osherove.com/blog/2006/1/15/a-solution-for-easier-aspnet-unit-and-gui-testing.html) --- title: "[Audio Interview] Kent Beck - An Agile conversation (First Iteration)" url: "https://osherove.com/blog/2006/2/1/audio-interview-kent-beck-an-agile-conversation-first-iterat.md" canonical: "https://osherove.com/blog/2006/2/1/audio-interview-kent-beck-an-agile-conversation-first-iterat.html" published: "2006-02-01T16:16:00" updated: "2006-02-01T16:16:00" tags: ["Agile Israel News", "Agile Related", "Interview", "Team Agile News"] author: "Roy Osherove" description: "Got something important to say? If you feel you have something important to share with the community, something you're an expert at, and feel that everyone can learn a thing or two from you, read this , and maybe we'll…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Audio Interview\] Kent Beck - An Agile conversation (First Iteration) By Roy Osherove February 1, 2006 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related), [Interview](https://osherove.com/blog/category/interview), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published February 1, 2006; technical details may be outdated. _**Got something important to say?**_ _If you feel you have something important to share with the community, something you're an expert at, and feel that everyone can learn a thing or two from you,_ [_read this_](http://www.teamagile.com/subpages/InterviewGuide.html)_, and maybe we'll get you on the air._ --- After almost 8 months of scheduling nightmare, I've finally had the pleasure of having a great conversation with noted author and speaker, Kent Beck. This is more of a conversation rather than an interview. The conversation revolves around (but not limited to) the following subjects: Kent's upcoming book, "Implementation Patterns", Is Agile just another fad? What is Appreciative Inquiry? Why is the 1st edition of "XP Explained" totally wrong and misleading in its attitude, and what makes the 2nd Edition better? When does Pair Programming break and how does Kent feel about the book "XP Refactored"? All these and more topics in this intriguing conversation. There is much more we wanted to talk about, but Kent felt this would make for a nice "first iteration". **Post your comments on this interview in this blog post** and let us know what you'd like to hear about, or whether you agree or disagree with the topics in this conversation. We'll take all these into account during a future conversation we will record.

Language - English.

Go and Download  - 76 min., MP3 (35 MB)

        
Extreme Programming Explained : Embrace Change (2nd Edition)
                               
## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Feb 6, 2006 ### [February at Agile Israel: The FIT Testing Framework](https://osherove.com/blog/2006/2/6/february-at-agile-israel-the-fit-testing-framework.html) - Feb 1, 2006 ### [\[Audio Interview\] Johanna Rothman - Secrets of great management](https://osherove.com/blog/2006/2/1/audio-interview-johanna-rothman-secrets-of-great-management.html) - Jan 25, 2006 ### [Bugs and Missing Features with Team System Unit Testing: Part I](https://osherove.com/blog/2006/1/25/bugs-and-missing-features-with-team-system-unit-testing-part.html) - Jan 23, 2006 ### [TestDriven.NET aims to become a commercial product with added features](https://osherove.com/blog/2006/1/23/testdrivennet-aims-to-become-a-commercial-product-with-added.html) --- title: "Database Rollback with FIT tests: A nice adaptation" url: "https://osherove.com/blog/2006/1/27/database-rollback-with-fit-tests-a-nice-adaptation.md" canonical: "https://osherove.com/blog/2006/1/27/database-rollback-with-fit-tests-a-nice-adaptation.html" published: "2006-01-27T16:06:00" updated: "2006-01-27T16:06:00" tags: ["Agile Related", "Team Agile News"] author: "Roy Osherove" description: "Tim Gifford liked my solution to Handling Database rollback issues with nit/Integration tests. So he found a way to integrate that method into Fit/Fitness - What'sw Fit ? an acceptance tool which should be more well…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Database Rollback with FIT tests: A nice adaptation By Roy Osherove January 27, 2006 In [Agile Related](https://osherove.com/blog/category/agile-related), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published January 27, 2006; technical details may be outdated. [Tim Gifford](http://blogs.giffordconsulting.com/) liked my [solution to Handling Database rollback issues](http://weblogs.asp.net/rosherove/articles/DbUnitTesting.aspx) with nit/Integration tests. So he [found a way to integrate that method into Fit/Fitness](http://blogs.giffordconsulting.com/archive/2006/01/25/3779.aspx) - What'sw [Fit](http://fit.c2.com/)? an acceptance tool which should be more well known than it is. If you're using Fit tests in your projects, this is a nice adaptation of the Enterprise services transaction principle for rolling back your database changes. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Feb 1, 2006 ### [\[Audio Interview\] Johanna Rothman - Secrets of great management](https://osherove.com/blog/2006/2/1/audio-interview-johanna-rothman-secrets-of-great-management.html) - Feb 1, 2006 ### [\[Audio Interview\] Kent Beck - An Agile conversation (First Iteration)](https://osherove.com/blog/2006/2/1/audio-interview-kent-beck-an-agile-conversation-first-iterat.html) - Jan 25, 2006 ### [Bugs and Missing Features with Team System Unit Testing: Part I](https://osherove.com/blog/2006/1/25/bugs-and-missing-features-with-team-system-unit-testing-part.html) - Jan 24, 2006 ### [My Sessions at DevDays Belgium](https://osherove.com/blog/2006/1/24/my-sessions-at-devdays-belgium.html) --- title: "Bugs and Missing Features with Team System Unit Testing: Part I" url: "https://osherove.com/blog/2006/1/25/bugs-and-missing-features-with-team-system-unit-testing-part.md" canonical: "https://osherove.com/blog/2006/1/25/bugs-and-missing-features-with-team-system-unit-testing-part.html" published: "2006-01-25T12:22:00" updated: "2006-01-25T12:22:00" tags: ["Agile Israel News", "Agile Related", "Team Agile News"] author: "Roy Osherove" description: "Here are a couple more examples on the immaturity of the current Team System Unit Testing in \"Quality Tools\" . Both of these were submitted to the product feedback center, which, unfortunately, only seems to have been…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Bugs and Missing Features with Team System Unit Testing: Part I By Roy Osherove January 25, 2006 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published January 25, 2006; technical details may be outdated. Here are a couple more examples on the immaturity of the current Team System Unit Testing in "Quality Tools" . Both of these were submitted to the product feedback center, which, unfortunately, only seems to have been catered Towards the pre-release versions of VS.NET. But I still added them anyway, just so that maybe someone looks over at them. Feel free to click on the title links and vote for them if you think they are important enough. Both of these,BTW, apply to the situation in which you'd like to test than an Exception is indeed thrown from your code when expected. --- This one is a bug: [ExcepctedException Attribute's "Message" property is never checked](http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=8b2e9fff-da65-4755-91f3-33e4b3fb4ac0) While writing a unit test with an "ExpectedException" attribute and also setting the "Message" property on the excpected exception, the test passes even though the exception that was thrown has a different message.
Steps to Reproduce:
 
[TestMethod]
[ExpectedException(typeof(InvalidOperationException),"Some Message")]
public void MyTest()
{
//this test will pass, but it should fail on the exception  message being wrong
throw new InvalidOperationException("Some Other Message");
}
How this one went by into the release is a mystery to me. Obviously no onw has ever used this functionality to actually talk about the fact that it's broken (and no one actually tested for it). Bad. --- Here's the second one - it's a suggestion on a missing feature which should have been there. [ExcpectedException should allow testing for Any Exception Type, not just derived from Exception](http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=814b4be8-8a1f-4f17-a38a-2612c1adc1e2) Example: \[TestMethod\] \[ExpectedException(typeof(Exception),"Some Message")\] public void MyTest() { //this test will NOT COMPILE claiming that the attribute requires something that DERIVES from Exception ... } \[TestMethod\] \[ExpectedException(typeof(InvalidOperationException),"Some Message")\] public void MyTest() { //this test WILL COMPILE ... }  Right now if I want to write a test than expects an exception, I have to make sure that the thrown exception \*has\* to derive from Exception, and cannot use the Generic Exception object. In many cases, developers would like to use a generic exception, either because they are not sure what exception the code will throw, or they just want to use the simplest thing that works. The current situation makes the developer find some other generic exception, against their better judgment. This is different than the default behavior in NUnit and I'm curious as to why this is so. --- Here are some more observations: The Test List Window is not Usable for Test Driven Development: - **When the tests are running, you get to see a list of \*all the tests\*.** Passing and failing together. If I'm working with Test Driven Development, the last test is usually the one to fail, but that last test is also usually located waaay down then on the bottom of the list, making me scroll to reach it every time. It's be OK if I could at least **sort** the list based on pass/fail status, **but I can't!**. - **Workaround**: Use TestDriven.NET. It only shows you the failed tests. - **If a test fails, double clicking on it opens the test failure description dialog page, instead of the failing code**. I guess that's OK if that was a regular test, but for unit tests, the default behavior should at least be configurable to jump to the code of the test. Not only that: for an exception, it should put me exactly where the exception occurred (just like double clicking on a call stack line in the output window) .  - **Workaround**: Use TestDriven.NET: it allows clicking on a line of an exception or error in call stack, and it puts you right on that line in the code editor. - **Running the tests does not necessarily invoke the \*build\* process**. so in Test Driven Development, I have to continuously Build (Ctrl-Shift-B), and then run the current test project (Ctrl-Shift-X). Unacceptable, and should at least be configurable. - **Workaround**: Use TestDriven.NET : running tests automatically invokes the build first - **No default hierarchical view of the tests by namespace/class**. If you're trying to build an NUnit killer, at least build in the correct UI like NUnit inside the IDE. Right now, if I want to run only some of the test, I have to manually arrange them by class, or namespace, and create my own test lists. That sucks, I'd like a default arrangement that I can use ad-hoc. - **Workaround**: Use the latest version of NUnit GUI. It  allows running Team System Unit Tests these days too. Just point it at your Team System Dll with unit tests and your'e good to go. ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Feb 1, 2006 ### [\[Audio Interview\] Johanna Rothman - Secrets of great management](https://osherove.com/blog/2006/2/1/audio-interview-johanna-rothman-secrets-of-great-management.html) - Feb 1, 2006 ### [\[Audio Interview\] Kent Beck - An Agile conversation (First Iteration)](https://osherove.com/blog/2006/2/1/audio-interview-kent-beck-an-agile-conversation-first-iterat.html) - Jan 23, 2006 ### [TestDriven.NET aims to become a commercial product with added features](https://osherove.com/blog/2006/1/23/testdrivennet-aims-to-become-a-commercial-product-with-added.html) - Jan 23, 2006 ### [MS Israel Security Users Group is back in business](https://osherove.com/blog/2006/1/23/ms-israel-security-users-group-is-back-in-business.html) --- title: "My Sessions at DevDays Belgium" url: "https://osherove.com/blog/2006/1/24/my-sessions-at-devdays-belgium.md" canonical: "https://osherove.com/blog/2006/1/24/my-sessions-at-devdays-belgium.html" published: "2006-01-24T15:33:00" updated: "2006-01-24T15:33:00" tags: ["Agile Related", "Team Agile News"] author: "Roy Osherove" description: "I'll be speaking at Microsoft DevDays in Belgium taking place March 7-8. I hope to see you there! The sessions I'll be doing are: Best Practices: Designing for Testability: Putting quality first in the real world March…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My Sessions at DevDays Belgium By Roy Osherove January 24, 2006 In [Agile Related](https://osherove.com/blog/category/agile-related), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published January 24, 2006; technical details may be outdated. I'll be speaking at [Microsoft DevDays](http://www.microsoft.com/belux/nl/devitprodays/agenda/sessions2.aspx#dev_DAY2_SLOT2_DEV_2) in Belgium taking place March 7-8. I hope to see you there! The sessions I'll be doing are:
Best Practices: Designing for Testability: Putting quality first in the real world
March 8, 2006 - 16:15 - 17:30
Unit Testing and Agile Methodologies seem to be the latest buzz in the software industry these days, but many people who actually try to Unit Test their application (whether new code or 'legacy' code) find out quickly that doing a thorough job can be tough if some thought about the code's design for testability is not considered. In this talk we'll discuss various methods of designing your APIs so that they are easy to test, how design patterns help, what 'evolving a design' really means in the context of Test Driven Development, and several techniques for approaching the task of unit testing "legacy code". We'll try to squeeze in some discussion about the build life cycle and how continuous integration fits into the mix.
Partially-Connected Smart Clients: Challenges and solutions for Offline Data Synchronization and Caching
March 8, 2006 - 10:45 - 12:00
(Note: This talk is adapted from a highly rated talk given by Brian Noyes at TechEd Europe)
One of the challenges of Smart Client development and operations is supporting disconnected operations. As soon as you allow your application to be used offline, a whole host of new considerations need to be addressed in your design. This session explores what those challenges are, what the available choices are to address them, and what the best choices are for a variety of situations. Some of the options explored include the use of client side DataSet caching, DataSet and business object caching through SQL Express, Queued Components, Web services, and the Offline Application Block. The session includes demos for different options and shows what modifications are required to an application's architecture to support the different options discussed.
## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jan 27, 2006 ### [Database Rollback with FIT tests: A nice adaptation](https://osherove.com/blog/2006/1/27/database-rollback-with-fit-tests-a-nice-adaptation.html) - Jan 25, 2006 ### [Bugs and Missing Features with Team System Unit Testing: Part I](https://osherove.com/blog/2006/1/25/bugs-and-missing-features-with-team-system-unit-testing-part.html) - Jan 23, 2006 ### [TestDriven.NET aims to become a commercial product with added features](https://osherove.com/blog/2006/1/23/testdrivennet-aims-to-become-a-commercial-product-with-added.html) - Jan 22, 2006 ### [Agile Israel: Advanced TDD Workshop is open for registration](https://osherove.com/blog/2006/1/22/agile-israel-advanced-tdd-workshop-is-open-for-registration.html) --- title: "I have a dream: Geek Go-Karting in Israel" url: "https://osherove.com/blog/2006/1/24/i-have-a-dream-geek-go-karting-in-israel.md" canonical: "https://osherove.com/blog/2006/1/24/i-have-a-dream-geek-go-karting-in-israel.html" published: "2006-01-24T11:33:00" updated: "2006-01-24T11:33:00" tags: ["Community"] author: "Roy Osherove" description: "Here's a thought. Instead of doing a geek dinner, how about a Geek Go Karting League ?? you need at least 8 people to join in, but we can meet bi-monthly and rip the runways (probably in Natanya, or other places if you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I have a dream: Geek Go-Karting in Israel By Roy Osherove January 24, 2006 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published January 24, 2006; technical details may be outdated. Here's a thought. Instead of doing a geek dinner, how about a **Geek Go Karting League**?? you need at least 8 people to join in, but we can meet bi-monthly and rip the runways (probably in Natanya, or other places if you want). So - if \- you're a geek living in Israel \- would like nothing better than to make all the other geeks eat your smoke \- Want a geeky prize if you're the winner in that tournament (I have plenty to share!) Send an email to **Karting At Osherove.Com** with the following details:  - Your full name \- Phone number (hopefully Mobile) \- What Day you'd like to go: Tuesday or Thursday \- Assuming the cost is around 170 NIS per person, would you do it on a bi-monthly basis, or every 3 months? \- Assuming the cost is FREE, would you attend? (every 2 months, or every 3?) Let's see if we can get this thing off the ground! just some thoughts: we can make this an international event as well: have a site with top scorers, and once a year, at some conference, have a go kart race between top scorers from countries. ~Maybe **Microsoft** will be willing to pick up the tab for something like this...~ No they wont.. ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Feb 13, 2006 ### [Catch me at the Architects User Group: Partially Connected Smart Clients Architecture](https://osherove.com/blog/2006/2/13/catch-me-at-the-architects-user-group-partially-connected-sm.html) - Feb 12, 2006 ### [Catch me at IVCUG this week: TDD with VS 2005, and designing for testability](https://osherove.com/blog/2006/2/12/catch-me-at-ivcug-this-week-tdd-with-vs-2005-and-designing-f.html) - Jan 23, 2006 ### [MS Israel Security Users Group is back in business](https://osherove.com/blog/2006/1/23/ms-israel-security-users-group-is-back-in-business.html) - Jan 22, 2006 ### [New audio from Agile Israel is available: Johanna Rothman and more!](https://osherove.com/blog/2006/1/22/new-audio-from-agile-israel-is-available-johanna-rothman-and.html) --- title: "HanselMinutes Episode 2 rocks the boat" url: "https://osherove.com/blog/2006/1/23/hanselminutes-episode-2-rocks-the-boat.md" canonical: "https://osherove.com/blog/2006/1/23/hanselminutes-episode-2-rocks-the-boat.html" published: "2006-01-23T20:32:00" updated: "2006-01-23T20:32:00" tags: [] author: "Roy Osherove" description: "Scott's first attempt at a podcast (which was not half bad) is now extremely well superseded by his second episode. Quick, to the point tips and tricks and techno babble galore about interesting things - that's what I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # HanselMinutes Episode 2 rocks the boat By Roy Osherove January 23, 2006 **Historical article** · Originally published January 23, 2006; technical details may be outdated. [Scott's](http://computerzen.com/) first attempt at a podcast (which was not half bad) is now extremely well superseded by his second episode. Quick, to the point tips and tricks and techno babble galore about interesting things - that's what I like, that's what I want. [Great work](http://hanselminutes.com/)! Now, if it only was 60 minutes instead of 30, with double the amount of information.. --- title: "TestDriven.NET aims to become a commercial product with added features" url: "https://osherove.com/blog/2006/1/23/testdrivennet-aims-to-become-a-commercial-product-with-added.md" canonical: "https://osherove.com/blog/2006/1/23/testdrivennet-aims-to-become-a-commercial-product-with-added.html" published: "2006-01-23T19:40:00" updated: "2006-01-23T19:40:00" tags: ["Agile Israel News", "Agile Related"] author: "Roy Osherove" description: "Is TestDriven.NET , everyone's favorite addin for Unit Testing support in practically all versions of Visual Studio .NET, going to cost money soon? Yes and no. According to the recent post by Jamie Cansdale , he's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TestDriven.NET aims to become a commercial product with added features By Roy Osherove January 23, 2006 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published January 23, 2006; technical details may be outdated. Is [TestDriven.NET](http://testdriven.net/), everyone's favorite addin for Unit Testing support in practically all versions of Visual Studio .NET, going to cost money soon? Yes and no. According to the [recent post](http://weblogs.asp.net/nunitaddin/archive/2006/01/23/436227.aspx) by [Jamie Cansdale](http://weblogs.asp.net/nunitaddin/), he's planning a "TestDriven.NET Team Edition" which will not be free, but will include added features, one of them will be integration with code coverage tools found inside Visual Studio .NET 2005 Team System. Other features were not mentioned, but Jamie promises to elaborate more on the topic soon. Cansdale: _"Code Coverage support is the first of many features that will be included in a commercial TestDriven.NET Team Edition. This however won't be the death of FREE versions of TestDriven.NET. Expect more news in the next day or two."_ TD.NET has been enjoying a growing popularity among developers who write Unit Tests with Visual Studio .NET. It's been the one and only tool to support "Ad hoc"  testing and debugging inside VS.NET, and Jamie promises the current, free, editions will remain free even though the commercial editions will not. Making TD.NET a commercial product is both a blessing and a curse. The curse is the obvious part, but the blessing lies in having a tool that has support, a proper website, and a guaranteed stream of development. Many companies don't like their developers using such "anonymous" tools in fear that they may contain viruses, bugs, or may lead to "unique tools" within the organization - tools which no one other than the original developer will now how to operate, even though they have been essential to the development and maintenance of large amounts of code. TD.NET may not be included in those tools just yet, but future versions may include other features which make it even more valuable to an organization and indispensable. The blessing also lies in the fact that Jamie gets rewarded for his huge efforts in this product. Having created such an innovative and powerful product, Jamie deserves not only recognition, but to actually cash in on his efforts. That will help him stay focused on the task, support and future features. Good going Jamie, and good luck! ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Feb 1, 2006 ### [\[Audio Interview\] Kent Beck - An Agile conversation (First Iteration)](https://osherove.com/blog/2006/2/1/audio-interview-kent-beck-an-agile-conversation-first-iterat.html) - Jan 25, 2006 ### [Bugs and Missing Features with Team System Unit Testing: Part I](https://osherove.com/blog/2006/1/25/bugs-and-missing-features-with-team-system-unit-testing-part.html) - Jan 23, 2006 ### [MS Israel Security Users Group is back in business](https://osherove.com/blog/2006/1/23/ms-israel-security-users-group-is-back-in-business.html) - Jan 22, 2006 ### [Agile Israel: Advanced TDD Workshop is open for registration](https://osherove.com/blog/2006/1/22/agile-israel-advanced-tdd-workshop-is-open-for-registration.html) --- title: "MS Israel Security Users Group is back in business" url: "https://osherove.com/blog/2006/1/23/ms-israel-security-users-group-is-back-in-business.md" canonical: "https://osherove.com/blog/2006/1/23/ms-israel-security-users-group-is-back-in-business.html" published: "2006-01-23T13:12:00" updated: "2006-01-23T13:12:00" tags: ["Agile Israel News", "Community"] author: "Roy Osherove" description: "The Security User's group at Microsoft Israel has rekindled it's operations, and will have it's re-opening meeting on Feb. 7Th. Here are the details (in Hebrew) PS How's my new picture on the blog main page ?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MS Israel Security Users Group is back in business By Roy Osherove January 23, 2006 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published January 23, 2006; technical details may be outdated. The Security User's group at Microsoft Israel has rekindled it's operations, and will have it's re-opening meeting on Feb. 7Th. [Here are the details](http://www.microsoft.com/israel/events/default.aspx?pageType=1&idType=1&id=15519) (in Hebrew) _PS_ _How's my new picture on the [blog main page](http://iserializable.com/)?_ ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Jan 25, 2006 ### [Bugs and Missing Features with Team System Unit Testing: Part I](https://osherove.com/blog/2006/1/25/bugs-and-missing-features-with-team-system-unit-testing-part.html) - Jan 23, 2006 ### [TestDriven.NET aims to become a commercial product with added features](https://osherove.com/blog/2006/1/23/testdrivennet-aims-to-become-a-commercial-product-with-added.html) - Jan 22, 2006 ### [Agile Israel: Advanced TDD Workshop is open for registration](https://osherove.com/blog/2006/1/22/agile-israel-advanced-tdd-workshop-is-open-for-registration.html) - Jan 22, 2006 ### [New audio from Agile Israel is available: Johanna Rothman and more!](https://osherove.com/blog/2006/1/22/new-audio-from-agile-israel-is-available-johanna-rothman-and.html) --- title: "Agile Israel: Advanced TDD Workshop is open for registration" url: "https://osherove.com/blog/2006/1/22/agile-israel-advanced-tdd-workshop-is-open-for-registration.md" canonical: "https://osherove.com/blog/2006/1/22/agile-israel-advanced-tdd-workshop-is-open-for-registration.html" published: "2006-01-22T22:16:00" updated: "2006-01-22T22:16:00" tags: ["Agile Israel News", "Agile Related", "Team Agile News"] author: "Roy Osherove" description: "Just a reminder : there is no Agile Israel meeting tomorrow due to the meeting we had at the beginning of the month. The next meeting will take place on Feb. 27th. However , I'm pleased to announce the Advanced TDD…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Israel: Advanced TDD Workshop is open for registration By Roy Osherove January 22, 2006 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published January 22, 2006; technical details may be outdated. **Just a reminder**: there is no Agile Israel meeting tomorrow due to the meeting we had at the beginning of the month. The next meeting will take place on Feb. 27th. **However**, I'm _pleased_ to announce the Advanced TDD workshop is open for registration! If you've attended the basic TDD workshop we arranged, or if you have some real experience trying to write Unit Tests in the real world and always wanted to know how to solve those real world problems, this session is for you. for more details and registration see this URL: **[http://www.agileisrael.com/Default.aspx?tabid=108](http://www.agileisrael.com/Default.aspx?tabid=108)** The workshop is held on **February 5th** (Sunday) at 18:00 at Amdocs Hod Hasharon, and will hold **up to 12 people**, so hurry up and register. Note: There is a limit of up to 2 people from the same company, so that more people from different places can attend, sorry! See you there! ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Jan 23, 2006 ### [TestDriven.NET aims to become a commercial product with added features](https://osherove.com/blog/2006/1/23/testdrivennet-aims-to-become-a-commercial-product-with-added.html) - Jan 23, 2006 ### [MS Israel Security Users Group is back in business](https://osherove.com/blog/2006/1/23/ms-israel-security-users-group-is-back-in-business.html) - Jan 22, 2006 ### [New audio from Agile Israel is available: Johanna Rothman and more!](https://osherove.com/blog/2006/1/22/new-audio-from-agile-israel-is-available-johanna-rothman-and.html) - Jan 15, 2006 ### [A solution for easier ASP.NET Unit and GUI testing?](https://osherove.com/blog/2006/1/15/a-solution-for-easier-aspnet-unit-and-gui-testing.html) --- title: "New audio from Agile Israel is available: Johanna Rothman and more!" url: "https://osherove.com/blog/2006/1/22/new-audio-from-agile-israel-is-available-johanna-rothman-and.md" canonical: "https://osherove.com/blog/2006/1/22/new-audio-from-agile-israel-is-available-johanna-rothman-and.html" published: "2006-01-22T21:55:00" updated: "2006-01-22T21:55:00" tags: ["Agile Israel News", "Agile Related", "Community", "Interview", "Team Agile News"] author: "Roy Osherove" description: "I've finally managed to edit and clean up the audio from two sessions we had at Agile Israel . The first one is by Johanna Rothman, and the second one is by Amir Kolsky (in Hebrew). I highly recommend you download them…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New audio from Agile Israel is available: Johanna Rothman and more! By Roy Osherove January 22, 2006 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community), [Interview](https://osherove.com/blog/category/interview), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published January 22, 2006; technical details may be outdated. I've finally managed to edit and clean up the audio from two sessions we had at [Agile Israel](http://www.agileisrael.com/). The first one is by Johanna Rothman, and the second one is by Amir Kolsky (in Hebrew). I highly recommend you download them and listen while driving your car on the way to and from work. I made sure each MP3 file fits on a single CD, so that shouldn't be a problem. Have fun! **[Johanna Rothman: Moving Towards Agile Project Management](http://www.agileisrael.com/Default.aspx?tabid=113)** [http://TeamAgile.com/interviews/AgileIsrael\_Dec05\_JRothman1.mp3](http://teamagile.com/interviews/AgileIsrael_Dec05_JRothman1.mp3 "http") [http://TeamAgile.com/interviews/AgileIsrael\_Dec05\_JRothman2.mp3](http://teamagile.com/interviews/AgileIsrael_Dec05_JRothman2.mp3 "http")   [**Amir Kolsky: The Planning Game (Hebrew)**](http://www.agileisrael.com/Default.aspx?tabid=112) [http://TeamAgile.com/interviews/AgileIsrael05\_AmirKolsky1.mp3](http://teamagile.com/interviews/AgileIsrael05_AmirKolsky1.mp3 "http") [http://TeamAgile.com/interviews/AgileIsrael05\_AmirKolsky2.mp3](http://teamagile.com/interviews/AgileIsrael05_AmirKolsky2.mp3 "http") ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Jan 23, 2006 ### [MS Israel Security Users Group is back in business](https://osherove.com/blog/2006/1/23/ms-israel-security-users-group-is-back-in-business.html) - Jan 22, 2006 ### [Agile Israel: Advanced TDD Workshop is open for registration](https://osherove.com/blog/2006/1/22/agile-israel-advanced-tdd-workshop-is-open-for-registration.html) - Jan 15, 2006 ### [A solution for easier ASP.NET Unit and GUI testing?](https://osherove.com/blog/2006/1/15/a-solution-for-easier-aspnet-unit-and-gui-testing.html) - Jan 5, 2006 ### [Reminder: Agile Israel Meets \*Today\*: Refactoring and Mock Objects](https://osherove.com/blog/2006/1/5/reminder-agile-israel-meets-today-refactoring-and-mock-objec.html) --- title: "Guess that conference" url: "https://osherove.com/blog/2006/1/19/guess-that-conference.md" canonical: "https://osherove.com/blog/2006/1/19/guess-that-conference.html" published: "2006-01-19T15:02:00" updated: "2006-01-19T15:02:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Update: Dale got it in the comments. That's the author guidelines for submitting a research article to the \"Agile 2006\" conference, no less. It's following IEEE guidelines for submissions. I'll let you ponder the irony…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Guess that conference By Roy Osherove January 19, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 19, 2006; technical details may be outdated. _**Update:**_ _Dale got it in the comments._ _That's the author guidelines for submitting a research article to the "Agile 2006" conference, no less. It's following IEEE guidelines for submissions. I'll let you ponder the irony in that situation.._ Can you guess what conference (or type of conference) the following piece of guidance document for submitting papers is taken from? " # 7\. Main text Type your main text in 10-point Times, single-spaced. Do **not** use double-spacing. All paragraphs should be indented 1/4 inch (approximately 0.5 cm). Be sure your text is fully justified—that is, flush left and flush right. Please do not place any additional blank lines between paragraphs. **Figure and table captions** should be 10-point boldface Helvetica (or a similar sans-serif font). Callouts should be 9-point non-boldface Helvetica. Initially capitalize only the first word of each figure caption and table title. Figures and tables must be numbered separately. For example: “Figure 1. Database contexts”, “Table 1. Input data”. Figure captions are to be centered _below_ the figures. Table titles are to be centered _above_ the tables. # 8\. First-order headings For example, “1. Introduction”, should be Times 12-point boldface, initially capitalized, flush left, with one blank line before, and one blank line after. Use a period (“.”) after the heading number, not a colon." ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 11, 2006 ### [The future of interaction](https://osherove.com/blog/2006/2/11/the-future-of-interaction.html) - Feb 10, 2006 ### [VB6 Migration pains - captured as a conversation](https://osherove.com/blog/2006/2/10/vb6-migration-pains-captured-as-a-conversation.html) - Jan 19, 2006 ### [FYI: "v7ndotcom elursrebmem"](https://osherove.com/blog/2006/1/19/fyi-quotv7ndotcom-elursrebmemquot.html) - Jan 16, 2006 ### [Cool Outlook Trick: Sync schedules with multiple computers, without using Exchange](https://osherove.com/blog/2006/1/16/cool-outlook-trick-sync-schedules-with-multiple-computers-wi.html) --- title: "FYI: \"v7ndotcom elursrebmem\"" url: "https://osherove.com/blog/2006/1/19/fyi-quotv7ndotcom-elursrebmemquot.md" canonical: "https://osherove.com/blog/2006/1/19/fyi-quotv7ndotcom-elursrebmemquot.html" published: "2006-01-19T01:05:00" updated: "2006-01-19T01:05:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Now, this is a lovely idea for a contest, not to mention a Google Rank-Tester. Let's just hope no one who works at Google on that algorithm tries to win this.. \"Here’s how it works: Savvy SEO people enter this contest…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # FYI: "v7ndotcom elursrebmem" By Roy Osherove January 19, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 19, 2006; technical details may be outdated. Now, this is a lovely idea for a contest, not to mention a Google Rank-Tester. Let's just hope no one who works at Google on that algorithm tries to win this.. _"Here’s how it works: Savvy SEO people enter this contest using the words **V7ndotcom Elursrebmem**. Then, on May 15, 2006, noon, Pacific standard time, whoever has a page on their site listed highest in a_ [_Google search for v7ndotcom elursrebmem_](http://www.google.com/search?q=v7ndotcom+elursrebmem) _wins a variety of prizes up to $4000 in cash._ _So what does v7ndotcom elursrebmem mean? V7ndotcom elursrebmem is essentially ‘V7N.com Members Rule spelled backwards."_ _\[via [the Gadgetizer](http://www.gadgetizer.com/2006/01/16/v7ndotcom-elursrebmem/)\]_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 10, 2006 ### [VB6 Migration pains - captured as a conversation](https://osherove.com/blog/2006/2/10/vb6-migration-pains-captured-as-a-conversation.html) - Jan 19, 2006 ### [Guess that conference](https://osherove.com/blog/2006/1/19/guess-that-conference.html) - Jan 16, 2006 ### [Cool Outlook Trick: Sync schedules with multiple computers, without using Exchange](https://osherove.com/blog/2006/1/16/cool-outlook-trick-sync-schedules-with-multiple-computers-wi.html) - Jan 15, 2006 ### [HanselMinutia](https://osherove.com/blog/2006/1/15/hanselminutia.html) --- title: "FixIt Reader - Possibly the Adobe Acrobat killer we've been waiting for" url: "https://osherove.com/blog/2006/1/17/fixit-reader-possibly-the-adobe-acrobat-killer-weve-been-wai.md" canonical: "https://osherove.com/blog/2006/1/17/fixit-reader-possibly-the-adobe-acrobat-killer-weve-been-wai.html" published: "2006-01-17T19:59:00" updated: "2006-01-17T19:59:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "I just discovered this cool, free and fast PDF reader, which looks like (finally!) an Adobe Acrobat Reader Killer. Adobe Acrobat has been getting on many people's nerves, with all its plugins, commercials and long load…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # FixIt Reader - Possibly the Adobe Acrobat killer we've been waiting for By Roy Osherove January 17, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published January 17, 2006; technical details may be outdated. I just discovered this cool, free and fast PDF reader, which looks like (finally!) an Adobe Acrobat Reader Killer. Adobe Acrobat has been getting on many people's nerves, with all its plugins, commercials and long load times - it's a behemoth which I'm surprised didn't have much competition. The Acro-Killer in question is called: [FoxIt Reader](http://www.foxitsoftware.com/pdf/rd_intro.php) and in the zip file you'll find only one EXE file. That's it. It loads fast and runs inside the browser just great! They also have a [Pro version](http://www.foxitsoftware.com/pdf/rd_pro.php) of this which includes many features people might need. _\[found via_ [_the latest .NET Rocks show_](http://www.dotnetrocks.com/default.aspx?showID=162)_\]_ ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Feb 2, 2006 ### [HanselMinutes on CI tools, and a free EBook on Agile Skills](https://osherove.com/blog/2006/2/2/hanselminutes-on-ci-tools-and-a-free-ebook-on-agile-skills.html) - Feb 1, 2006 ### [Why Reboot? This software will help with the answer.](https://osherove.com/blog/2006/2/1/why-reboot-this-software-will-help-with-the-answer.html) - Jan 15, 2006 ### [A solution for easier ASP.NET Unit and GUI testing?](https://osherove.com/blog/2006/1/15/a-solution-for-easier-aspnet-unit-and-gui-testing.html) - Jan 15, 2006 ### [Code Partitioning - The next big thing in protecting .NET code?](https://osherove.com/blog/2006/1/15/code-partitioning-the-next-big-thing-in-protecting-net-code.html) --- title: "Jeremy Miller: Best and Worst Practices for Mock Objects" url: "https://osherove.com/blog/2006/1/16/jeremy-miller-best-and-worst-practices-for-mock-objects.md" canonical: "https://osherove.com/blog/2006/1/16/jeremy-miller-best-and-worst-practices-for-mock-objects.html" published: "2006-01-16T16:58:00" updated: "2006-01-16T16:58:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "Jeremy Miller writes some of his recommendations for best and worst practices for using Mock Objects in your Unit Tests. He makes a lot of sense and I wholeheartedly agree with his conclusions. His writing is clear and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Jeremy Miller: Best and Worst Practices for Mock Objects By Roy Osherove January 16, 2006 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published January 16, 2006; technical details may be outdated. [Jeremy Miller writes some of his recommendations](http://codebetter.com/blogs/jeremy.miller/archive/2006/01/10/136407.aspx) for best and worst practices for using Mock Objects in your Unit Tests. He makes a lot of sense and I wholeheartedly agree with his conclusions. His writing is clear and elegant (not to mention great person stories). ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jan 22, 2006 ### [Agile Israel: Advanced TDD Workshop is open for registration](https://osherove.com/blog/2006/1/22/agile-israel-advanced-tdd-workshop-is-open-for-registration.html) - Jan 22, 2006 ### [New audio from Agile Israel is available: Johanna Rothman and more!](https://osherove.com/blog/2006/1/22/new-audio-from-agile-israel-is-available-johanna-rothman-and.html) - Jan 15, 2006 ### [A solution for easier ASP.NET Unit and GUI testing?](https://osherove.com/blog/2006/1/15/a-solution-for-easier-aspnet-unit-and-gui-testing.html) - Jan 5, 2006 ### [Reminder: Agile Israel Meets \*Today\*: Refactoring and Mock Objects](https://osherove.com/blog/2006/1/5/reminder-agile-israel-meets-today-refactoring-and-mock-objec.html) --- title: "Cool Outlook Trick: Sync schedules with multiple computers, without using Exchange" url: "https://osherove.com/blog/2006/1/16/cool-outlook-trick-sync-schedules-with-multiple-computers-wi.md" canonical: "https://osherove.com/blog/2006/1/16/cool-outlook-trick-sync-schedules-with-multiple-computers-wi.html" published: "2006-01-16T16:44:00" updated: "2006-01-16T16:44:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Sahil malik shares some Oulook 2003 Wisdom. The trick: How do you make sure your Outlook at home is not stepping on any of your Work schedule? Here's How . It's not the most usable thing in the world, but it seems to do…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool Outlook Trick: Sync schedules with multiple computers, without using Exchange By Roy Osherove January 16, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 16, 2006; technical details may be outdated. [Sahil malik](http://codebetter.com/blogs/sahil.malik/) shares some Oulook 2003 Wisdom. The trick: How do you make sure your Outlook at home is not stepping on any of your Work schedule? [Here's How](http://codebetter.com/blogs/sahil.malik/archive/2006/01/14/136531.aspx). It's not the most usable thing in the world, but it seems to do the trick.. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 19, 2006 ### [Guess that conference](https://osherove.com/blog/2006/1/19/guess-that-conference.html) - Jan 19, 2006 ### [FYI: "v7ndotcom elursrebmem"](https://osherove.com/blog/2006/1/19/fyi-quotv7ndotcom-elursrebmemquot.html) - Jan 15, 2006 ### [HanselMinutia](https://osherove.com/blog/2006/1/15/hanselminutia.html) - Jan 7, 2006 ### [VB.NET 2.0 Vs. C# 2.0: Nice event photo](https://osherove.com/blog/2006/1/7/vbnet-20-vs-c-20-nice-event-photo.html) --- title: "Cheat Sheets for ASP.NET and Browsers [The Browser Book]" url: "https://osherove.com/blog/2006/1/15/cheat-sheets-for-aspnet-and-browsers-the-browser-book.md" canonical: "https://osherove.com/blog/2006/1/15/cheat-sheets-for-aspnet-and-browsers-the-browser-book.html" published: "2006-01-15T13:54:00" updated: "2006-01-15T13:54:00" tags: ["Product Reviews"] author: "Roy Osherove" description: "Firoz points to some very nice \"cheat sheet\" pages for ASP.NET developers located here: JavaScript Cheat Sheet CSS Cheat Sheet HTML Character Entities Cheat Sheet MySQL Cheat Sheet They are ready to be printed and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cheat Sheets for ASP.NET and Browsers \[The Browser Book\] By Roy Osherove January 15, 2006 In [Product Reviews](https://osherove.com/blog/category/product-reviews) **Historical article** · Originally published January 15, 2006; technical details may be outdated. Firoz [points to some very nice](http://weblogs.asp.net/Firoz/archive/2006/01/15/435418.aspx) "cheat sheet" pages for ASP.NET developers located here: [JavaScript Cheat Sheet](http://www.ilovejackdaniels.com/article/javascript-cheat-sheet/) [CSS Cheat Sheet](http://www.ilovejackdaniels.com/article/css-cheat-sheet/) [HTML Character Entities Cheat Sheet](http://www.ilovejackdaniels.com/article/html-character-entities-cheat-sheet/) [MySQL Cheat Sheet](http://www.ilovejackdaniels.com/article/mysql-cheat-sheet/) They are ready to be printed and mounted up on the wall. **Speaking of which**, I received a copy of the [VisiBone Browser book for web designers](https://www.amazon.com/exec/obidos/ASIN/0967826373/iserializable-20): [![](https://osherove.com/img/wb/0b807205_images.amazon.com_images_P_0967826373.01._SCMZZZZZZZ_.jpg)](https://www.amazon.com/exec/obidos/ASIN/0967826373/iserializable-20) and it's really really nice. After a short usage period by one of my web-dev friends, they seemed to really like it. Think of it really as a bunch of cheat sheets mounted together, printed and wrapped, ready for putting up on the wall. It contains the following cheat sheets: Colors (Visible color charts), Fonts and characters, HTML and XHTML tags, CSS Styles, JavaScript, DOM reference and regular expressions reference. The nice thing about it is that all the references are color coded so that you know, for example, which tags are available only for IE< or which tags are not supported by Mozilla and Netscape browsers. I'd recommend it, even though the price is a bit steep, since it's of really high quality, and to be used sort of a "buy once, hang forever" on the wall kind of thing. ## More in Product Reviews [All posts in Product Reviews](https://osherove.com/blog/category/product-reviews) - May 22, 2006 ### [Review - Automise: Automise almost anything](https://osherove.com/blog/2006/5/22/review-automise-automise-almost-anything.html) - Apr 30, 2006 ### [Review: {SmartAssembly}- Assembly Improvement and Protection Tool](https://osherove.com/blog/2006/4/30/review-smartassembly-assembly-improvement-and-protection-too.html) - Jan 15, 2006 ### [HanselMinutia](https://osherove.com/blog/2006/1/15/hanselminutia.html) - Dec 3, 2005 ### [\[Review\] JustCode! Universal 1.0 - Productivity Addin for VS 2005 and a0023](https://osherove.com/blog/2005/12/3/review-justcode-universal-10-productivity-addin-for-vs-2005.html) --- title: "A solution for easier ASP.NET Unit and GUI testing?" url: "https://osherove.com/blog/2006/1/15/a-solution-for-easier-aspnet-unit-and-gui-testing.md" canonical: "https://osherove.com/blog/2006/1/15/a-solution-for-easier-aspnet-unit-and-gui-testing.html" published: "2006-01-15T13:42:00" updated: "2006-01-15T13:42:00" tags: ["Agile Israel News", "Agile Related", "Cool Tools", "Team Agile News"] author: "Roy Osherove" description: "\"Integrating NUnit with Ruby/Watir Unit Tests\" \"Testing ASP.NET web applications can be a painful process. Wouldn't it be nice to have a unit testing framework that covered both the API and the web UI testing in an…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A solution for easier ASP.NET Unit and GUI testing? By Roy Osherove January 15, 2006 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published January 15, 2006; technical details may be outdated. "Integrating NUnit with Ruby/Watir Unit Tests" "Testing ASP.NET web applications can be a painful process. Wouldn't it be nice to have a unit testing framework that covered both the API and the web UI testing in an integrated fashion?" That's how [Travis Illig starts to explain](http://www.paraesthesia.com/blog/comments.php?id=949_0_1_0_C) (download links included) what he built to help with this issue, and point to [his CodeProject article](http://www.codeproject.com/useritems/RubyTestExecutor.asp), in which he gives all the gory details of NUnit, Watir and Ruby integration. Built on top of [a proof of concept](http://www.hanselman.com/blog/NUnitWatirRubyTestIntegration.aspx) by Scott Hanselman, Travis seems to have built something which many people will find useful, provided they know how to code in Ruby, that is. ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Jan 22, 2006 ### [Agile Israel: Advanced TDD Workshop is open for registration](https://osherove.com/blog/2006/1/22/agile-israel-advanced-tdd-workshop-is-open-for-registration.html) - Jan 22, 2006 ### [New audio from Agile Israel is available: Johanna Rothman and more!](https://osherove.com/blog/2006/1/22/new-audio-from-agile-israel-is-available-johanna-rothman-and.html) - Jan 5, 2006 ### [Reminder: Agile Israel Meets \*Today\*: Refactoring and Mock Objects](https://osherove.com/blog/2006/1/5/reminder-agile-israel-meets-today-refactoring-and-mock-objec.html) - Dec 19, 2005 ### [January 2006 at Agile Israel - Mock Objects & Refactoring](https://osherove.com/blog/2005/12/19/january-2006-at-agile-israel-mock-objects-amp-refactoring.html) --- title: "This week at the C# Users Group: Windows Communications Foundation (“Indigo”) with Ido Samuelson" url: "https://osherove.com/blog/2006/1/15/this-week-at-the-c-users-group-windows-communications-founda.md" canonical: "https://osherove.com/blog/2006/1/15/this-week-at-the-c-users-group-windows-communications-founda.html" published: "2006-01-15T11:25:00" updated: "2006-01-15T11:25:00" tags: [".Net 2.0", "Community"] author: "Roy Osherove" description: "Topics : Windows Communications Foundation (“Indigo”) Lecturer : Ido Samuelson, Advantech (Magen) Date: Wednesday, January 18, 17:00 - 20:00 Place: Microsoft Israel Hapnina 2 ( Amdocs Building ) Ground Floor Raanana…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # This week at the C\# Users Group: Windows Communications Foundation (“Indigo”) with Ido Samuelson By Roy Osherove January 15, 2006 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published January 15, 2006; technical details may be outdated. **Topics****:** **Windows Communications Foundation (“Indigo”)** **Lecturer****:** **Ido Samuelson, Advantech (Magen)** Date:    **Wednesday, January 18, 17:00 - 20:00** Place:   **Microsoft Israel**              **Hapnina 2  (Amdocs Building)**             **Ground Floor**             **Raanana** **+972 (9) 762-5100**          Parking available at the Kurkar parking lot. Proceed straight past the traffic circle and the parking lot will be on your right. Windows Communications Foundation (formerly codename “Indigo”) is Microsoft’s new platform technology for building distributed applications. WCF is a unified framework bringing the best of ASP.NET Web services, .NET Remoting, Enterprise Services, WSE, and System.Messaging. This session introduces the WCF programming model-(the ABC) and presents: hosting, reliable messaging, security, queues, transactions, duplex, peer channel and more. If you have never seen an introduction to Windows Communication Framework, this is a must attend session! Ido Samuelson is a .NET specialist and a senior consultant at Advantech (Magen). Ido leads and mentors clients' projects.  He is an excellent problem solver with extensive expertise in C#.  His passions are frameworks, best practices and internals. Come to this Community Launch event and participate in a raffle for free versions of SQL Server 2005 and Visual Studio 2005. As always, although admission is free and you may attend without reserving a place, we kindly request that you notify us if you plan to attend so that we can be sure to have enough chairs and FOOD! Thank you. ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Feb 4, 2006 ### [.NET 2.0 certification study group in Israel? Your choice.](https://osherove.com/blog/2006/2/4/net-20-certification-study-group-in-israel-your-choice.html) - Feb 1, 2006 ### [Finally a "stable enough" build of Resharper 2.0 Alpha?](https://osherove.com/blog/2006/2/1/finally-a-quotstable-enoughquot-build-of-resharper-20-alpha.html) - Dec 19, 2005 ### [New XML Features in VS 2005 and .NET 2.0](https://osherove.com/blog/2005/12/19/new-xml-features-in-vs-2005-and-net-20.html) - Dec 13, 2005 ### [\[Slides and code\] VS Launch Israel: .NET 2.0 Things You Need To Know](https://osherove.com/blog/2005/12/13/slides-and-code-vs-launch-israel-net-20-things-you-need-to-k.html) --- title: "Code Partitioning - The next big thing in protecting .NET code?" url: "https://osherove.com/blog/2006/1/15/code-partitioning-the-next-big-thing-in-protecting-net-code.md" canonical: "https://osherove.com/blog/2006/1/15/code-partitioning-the-next-big-thing-in-protecting-net-code.html" published: "2006-01-15T11:03:00" updated: "2006-01-15T11:03:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "The guys at SecuredDimentions have something new up their sleeve. If you don't know them, it's because they are relatively new on the market. What they've designed is what seems to be a very good way to prevent…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Code Partitioning - The next big thing in protecting .NET code? By Roy Osherove January 15, 2006 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published January 15, 2006; technical details may be outdated. The guys at [SecuredDimentions](http://www.secureddimensions.com/) have something new up their sleeve. If you don't know them, it's because they are relatively new on the market. What they've designed is what seems to be a very good way to prevent code-theft, i.e. someone decompiling your .NET applications, without the need to use code obfuscators. They are actually offering this as part of a suite of licensing service, all underlined with their technology to protect .NET code. Technically, it's a bit hard to explain, but they are able to do something called "[code partitioning](http://www.secureddimensions.com/sd/secureVirtualMachine.asp)" on selected parts of the code base and "decrypt" them on demand, using their own virtual runtime which sits on top of the CLR. This also allows them to detect whenever "important" code was reached and do anything about it (like a popup dialog for example). The solution is still not as perfect as it could be. Usability wise, it's OK, but could be much better. Performance wise, it seems to do OK compared to unprotected code, but you still wouldn't want to protect \*all\* your code at the same time. This is one of the most important technologies that are going to thrive in the coming years, when people will start realizing the importance of keeping their code safe, as they release more and more applications into the wild. I've seen many "solutions" to the code protection scheme, but this one seems like it actually works. I believe in it to the degree that I agreed to endorse their product publicly. So, if you actually go to their site, and end up buying one of their products, **mention my name** and you'll get **10% off** the price(I also get a pittance). They are arranging a small conference this month (Jan 25th) at the Daniel Hotel in Hertzlia along with the Emerset company about code security. I'm not sure announcing such as conference so quickly is the best idea, but nevertheless, it's free to attend (half day until 13:00 I think). A link to the conference announcement should be on their site soon. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jan 17, 2006 ### [FixIt Reader - Possibly the Adobe Acrobat killer we've been waiting for](https://osherove.com/blog/2006/1/17/fixit-reader-possibly-the-adobe-acrobat-killer-weve-been-wai.html) - Jan 15, 2006 ### [A solution for easier ASP.NET Unit and GUI testing?](https://osherove.com/blog/2006/1/15/a-solution-for-easier-aspnet-unit-and-gui-testing.html) - Dec 17, 2005 ### [NUnit 2.2.4: .NET 2.0 Support, Extensibility Support and new Asserts and Attributes](https://osherove.com/blog/2005/12/17/nunit-224-net-20-support-extensibility-support-and-new-asser.html) - Nov 30, 2005 ### [FinalBuilder 4.0 is out - Lightweight, Scalable Build Managment Tool](https://osherove.com/blog/2005/11/30/finalbuilder-40-is-out-lightweight-scalable-build-managment.html) --- title: "HanselMinutia" url: "https://osherove.com/blog/2006/1/15/hanselminutia.md" canonical: "https://osherove.com/blog/2006/1/15/hanselminutia.html" published: "2006-01-15T08:33:00" updated: "2006-01-15T08:33:00" tags: ["Off Topic", "Product Reviews"] author: "Roy Osherove" description: "Scott Hansleman Introduces his brand new podcast - \" Hanselminutes \". First - what a cool name. In fact, everything about the way this podcast is presented is \"cool\". I mean, if there ever was someone that made us MS…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # HanselMinutia By Roy Osherove January 15, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic), [Product Reviews](https://osherove.com/blog/category/product-reviews) **Historical article** · Originally published January 15, 2006; technical details may be outdated. [Scott Hansleman Introduces](http://www.hanselman.com/blog/HanselminutesPodcast1.aspx) his brand new podcast - "[Hanselminutes](http://hanselminutes.com/)". First - what a cool name. In fact, everything about the way this podcast is presented is "cool". I mean, if there ever was someone that made us MS geeks look cool, [Scott Hansleman](http://www.hanselman.com/blog) would be up there in the top three. His ultra-geeky lifestyle (the guy makes even [diabetes look cool](http://www.hanselman.com/blog/CategoryView.aspx?category=Diabetes)) and superb knowledge of tools, utilities, code and technology makes him the perfect, coolest candidate to have a podcast about...well, technology and utilities. So Scott teamed up with the boys at [Franklins.Net](http://www.pwop.com/) (Pwop productions)- the same people who brought one of the very first (highly successfully) podcasts and audio shows in the .NET world - [.NET Rocks](http://www.dotnetrocks.com/), and together they made a show. I have to say I was surprised at the amount at which Carl Franklin appears in the show. Perhaps that has to do with the fact that I thought this was **Scott's** show, but it's actually Carl's in which he decided to interview Scott on a weekly basis.  Carl acts really as the host, and Scott acts as the all-knowledgeable, all-encompassing guest of the show. You might as well have called it "The weekly interview with Scott" since that's essentially what it is. Some people have complained about the length of the commercials in the beginning and the end, but I think that's a non-issue. These things need some kind of sponsoring to pay for people's time doing them, and that's a good way to do it. Don't like it? skip ahead. I did find that the first 5 minutes **after** the commercials were practically a praise and song for the new hero in the podcast world - Scott-be-thy-name. Heck, even Scott noticed that, being the pragmatic creature that he is, and said he feels he does not want to waste the listener's time. Frankly, I don't need another .NET Rocks in my life - I want something different. It was weird because Scott has enough muscle on his own to generate interest, topics and agenda for his show, and if he doesn't want to look like another .NET Rocks wannabe, he may as well find his own voice and rhythm of things. As far as my ears heard, Scott didn't sound too cozy doing the show in that format, but then again, he didn't sound sure about doing the show at all. A little more confidence would have made things a lot better. **The topics** on the show were interesting if you're an ultra geek and a coder. If you've read Scott's blog, it's more of the same stuff, sometimes even a rehash of old topics. If you've never read his blog, it has some great content. "Bug fix of the week" has a future, and I dare say they should add a "news of the week" where Carl reads the news and Scott comments on them, some real meat, juicy stuff. The topics range from XBox 360 to .NET caching. Really a plethora of topics anyone can find something interesting in. But please don't make us listen to all the names of the people who ever built das-blog. This isn't a credit show, or a name-dropping show. As Scott says "You're wasting my time". Since Scott is a funny guy when he want to, how about "Geek joke of the week"? Have some sort of predefined format where people can expect something at some point of the show. otherwise it's just an ongoing conversation instead of a steady stream of useful tidbits. **The format** The show could be much better if there was actually anything which resembles a conversation and more than one opinion. Hearing two people discuss something on a weekly basis is OK, but having one person simply lead up and ask questions of the other without actually reflecting any of their own views is another ("discussion" vs. "interview"). If the show took more of a discussion point of view Scott may have more "meat" to chew on and sound even more interesting.  **The "soothing voice" problem**       The main problem for me in the show was Scott's voice and intonation. I can't say it any different - In his first podcast Scott spoke slowly and monotonously. His voice stayed on the same pitch/wavelength for the entire show, which, combined with a car stereo and an air conditioning set on "heat" can lead to some serious car crashes. Scott has some great content to give and I suspect that the voice thing is not because he's bored or something, but that's the way he talks. Some people talk like that and it makes them sound very cynical and cool (I don't think Scott does that on purpose). It may work great on stage (he's a very good presenter), but in audio it just doesn't.  If Scott wants to make the show better, he's going to need to take lessons from Carl Franklin, who, during the conversation, sounded interested, laughing, asking, and the whole range of human emotion bursting from him as can be expressed through audio. That's Carl's gift and anyone doing a podcast should be taking notes. Perhaps that's the real reason Carl did the show with Scott. To make it sound more interesting. Again, I don't think that was required. I just think Scott needs to get the hang of it a little bit, find his own voice and just have fun, because it doesn't sound like he's having fun now. In the "professionalism" department, the show scores very high. You'll find links to download the show directly, with audio bits specifically for iPods or other formats, and RSS enclosures galore. If there ever was a way to get audio on the net - the Franklin boys made it available on the show's site. That's a great start. The site looks polished and professional, Just continue on like that. **In summary**, [Hanselminutes](http://hanselminutes.com/) is a show with a great future, provided the Scott can find his own voice instead of making another .NET Rocks, and that Carl Franklin doesn't intervene too much in the process. Let each person do what he does best, and this will be a good geek fest. Continue on like the current situation, and the show will end up only marginally successful, attracting on geeks who are "closer to home" - people who know Scott/Carl and just can't get enough of them. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 19, 2006 ### [FYI: "v7ndotcom elursrebmem"](https://osherove.com/blog/2006/1/19/fyi-quotv7ndotcom-elursrebmemquot.html) - Jan 16, 2006 ### [Cool Outlook Trick: Sync schedules with multiple computers, without using Exchange](https://osherove.com/blog/2006/1/16/cool-outlook-trick-sync-schedules-with-multiple-computers-wi.html) - Jan 7, 2006 ### [VB.NET 2.0 Vs. C# 2.0: Nice event photo](https://osherove.com/blog/2006/1/7/vbnet-20-vs-c-20-nice-event-photo.html) - Jan 4, 2006 ### [Back, Relaxed and Recharged](https://osherove.com/blog/2006/1/4/back-relaxed-and-recharged.html) --- title: "I'll be Available for some short time gigs in the London Area" url: "https://osherove.com/blog/2006/1/8/ill-be-available-for-some-short-time-gigs-in-the-london-area.md" canonical: "https://osherove.com/blog/2006/1/8/ill-be-available-for-some-short-time-gigs-in-the-london-area.html" published: "2006-01-08T22:05:00" updated: "2006-01-08T22:05:00" tags: ["Community", "Team Agile News"] author: "Roy Osherove" description: "It looks like there's a big chance I'll get to be in London (and the Cambridge area) during March 19 through March 30. I'll be there as part of the MVP open days forum, and am looking for gigs to do there while I'm in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'll be Available for some short time gigs in the London Area By Roy Osherove January 8, 2006 In [Community](https://osherove.com/blog/category/community), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published January 8, 2006; technical details may be outdated. It looks like there's a big chance I'll get to be in London (and the Cambridge area) during March 19 through March 30. I'll be there as part of the MVP open days forum, and am looking for gigs to do there while I'm in the area. - If you're interested in me doing agile training or mentoring for your dev team during these dates (Test Driven Development, XP, Scrum, Continuous Integration and the build process etc..) - If you'd like me to teach you all about new stuff your team needs to know about .NET 2.0 or a productivity course about Refactoring and Refactoring tools - If you'd like me to speak at your user groups about anything from .NET 2.0, ADO.NET, Agile Development, Regular Expressions, Architecture - If you want to arrange for a geek dinner Contact me at **Roy At** [**TeamAgile.com**](http://teamagile.com/). Needless to say, if I don't get any gigs to do there, I'll be cutting the trip short, or may not even go at all. ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Jan 22, 2006 ### [New audio from Agile Israel is available: Johanna Rothman and more!](https://osherove.com/blog/2006/1/22/new-audio-from-agile-israel-is-available-johanna-rothman-and.html) - Jan 15, 2006 ### [This week at the C# Users Group: Windows Communications Foundation (“Indigo”) with Ido Samuelson](https://osherove.com/blog/2006/1/15/this-week-at-the-c-users-group-windows-communications-founda.html) - Dec 19, 2005 ### [January 2006 at Agile Israel - Mock Objects & Refactoring](https://osherove.com/blog/2005/12/19/january-2006-at-agile-israel-mock-objects-amp-refactoring.html) - Dec 4, 2005 ### [Special Agile Israel Meeting with Johanna Rothman: Moving Towards Agile Project Management](https://osherove.com/blog/2005/12/4/special-agile-israel-meeting-with-johanna-rothman-moving-tow.html) --- title: "VB.NET 2.0 Vs. C# 2.0: Nice event photo" url: "https://osherove.com/blog/2006/1/7/vbnet-20-vs-c-20-nice-event-photo.md" canonical: "https://osherove.com/blog/2006/1/7/vbnet-20-vs-c-20-nice-event-photo.html" published: "2006-01-07T01:15:00" updated: "2006-01-07T01:15:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Ohad has published some of the event photos from the VS Launch event held in Israel last month. Here's one from the session Jackie Goldstein and me did together on new stuff in .NET 2.0 people should know about. Jackie…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VB.NET 2.0 Vs. C\# 2.0: Nice event photo By Roy Osherove January 7, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 7, 2006; technical details may be outdated. Ohad has [published some of the event photos](http://weblogs.asp.net/israelio/archive/2006/01/05/434590.aspx) from the VS Launch event held in Israel last month.  Here's one from the session [Jackie Goldstein](http://weblogs.asp.net/jackieg/archive/2005/12/21/433707.aspx) and me did together on new stuff in .NET 2.0 people should know about. Jackie represented the VB side while I represented the C# side. It was a pretty funny face off, which hopefully you can tell from the picture (Jackie is on the right, I'm on the left) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 16, 2006 ### [Cool Outlook Trick: Sync schedules with multiple computers, without using Exchange](https://osherove.com/blog/2006/1/16/cool-outlook-trick-sync-schedules-with-multiple-computers-wi.html) - Jan 15, 2006 ### [HanselMinutia](https://osherove.com/blog/2006/1/15/hanselminutia.html) - Jan 4, 2006 ### [Back, Relaxed and Recharged](https://osherove.com/blog/2006/1/4/back-relaxed-and-recharged.html) - Dec 19, 2005 ### [Going to Thailand for a couple of weeks](https://osherove.com/blog/2005/12/19/going-to-thailand-for-a-couple-of-weeks.html) --- title: "Reminder: Agile Israel Meets *Today*: Refactoring and Mock Objects" url: "https://osherove.com/blog/2006/1/5/reminder-agile-israel-meets-today-refactoring-and-mock-objec.md" canonical: "https://osherove.com/blog/2006/1/5/reminder-agile-israel-meets-today-refactoring-and-mock-objec.html" published: "2006-01-05T07:18:00" updated: "2006-01-05T07:18:00" tags: ["Agile Israel News", "Agile Related", "Team Agile News"] author: "Roy Osherove" description: "I'll remind you that there is an Agile Israel meeting today . The meeting topics are Refactoring and Mock Objects Techniques. More details in this link . You can freely show up, but we start promptly at 18:00. We gather…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Reminder: Agile Israel Meets \*Today\*: Refactoring and Mock Objects By Roy Osherove January 5, 2006 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published January 5, 2006; technical details may be outdated. I'll remind you that there is an Agile Israel meeting **today**. The meeting topics are Refactoring and Mock Objects Techniques. [More details in this link](http://www.agileisrael.com/Default.aspx?tabid=118). You can freely show up, but we start promptly at 18:00. We gather and talk shop at 17:30. **Update:** We will be raffling out the following book: [ Refactoring Workbook](https://www.amazon.com/exec/obidos/ASIN/0321109295/iserializable-20) See you there!  ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Jan 22, 2006 ### [New audio from Agile Israel is available: Johanna Rothman and more!](https://osherove.com/blog/2006/1/22/new-audio-from-agile-israel-is-available-johanna-rothman-and.html) - Jan 15, 2006 ### [A solution for easier ASP.NET Unit and GUI testing?](https://osherove.com/blog/2006/1/15/a-solution-for-easier-aspnet-unit-and-gui-testing.html) - Dec 19, 2005 ### [January 2006 at Agile Israel - Mock Objects & Refactoring](https://osherove.com/blog/2005/12/19/january-2006-at-agile-israel-mock-objects-amp-refactoring.html) - Dec 19, 2005 ### [Fowler's "The New Methodology" - Updated](https://osherove.com/blog/2005/12/19/fowlers-quotthe-new-methodologyquot-updated.html) --- title: "Back, Relaxed and Recharged" url: "https://osherove.com/blog/2006/1/4/back-relaxed-and-recharged.md" canonical: "https://osherove.com/blog/2006/1/4/back-relaxed-and-recharged.html" published: "2006-01-04T22:47:00" updated: "2006-01-04T22:47:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Wow! It's been an amazing two weeks at Thailand. The only way to sum up the overall feeling would be this picture of Tal sitting on the beach at the Phi Phi Islands:" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Back, Relaxed and Recharged By Roy Osherove January 4, 2006 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 4, 2006; technical details may be outdated. Wow! It's been an **amazing** two weeks at Thailand. The only way to sum up the overall feeling would be this picture of Tal sitting on the beach at the Phi Phi Islands: ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 15, 2006 ### [HanselMinutia](https://osherove.com/blog/2006/1/15/hanselminutia.html) - Jan 7, 2006 ### [VB.NET 2.0 Vs. C# 2.0: Nice event photo](https://osherove.com/blog/2006/1/7/vbnet-20-vs-c-20-nice-event-photo.html) - Dec 19, 2005 ### [Going to Thailand for a couple of weeks](https://osherove.com/blog/2005/12/19/going-to-thailand-for-a-couple-of-weeks.html) - Dec 10, 2005 ### [Media Center Fix: Multiple Concurrent Logins to Windows](https://osherove.com/blog/2005/12/10/media-center-fix-multiple-concurrent-logins-to-windows.html) --- title: "See you in two weeks! (Guess what I'll be reading)" url: "https://osherove.com/blog/2005/12/20/see-you-in-two-weeks-guess-what-ill-be-reading.md" canonical: "https://osherove.com/blog/2005/12/20/see-you-in-two-weeks-guess-what-ill-be-reading.html" published: "2005-12-20T23:51:00" updated: "2005-12-20T23:51:00" tags: [] author: "Roy Osherove" description: "I'm leaving today - see you in two weeks. Here's what I'll be catching up on: so far this is one hell of a book. Agile Software Development by Alistair Cockburn" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # See you in two weeks! (Guess what I'll be reading) By Roy Osherove December 20, 2005 **Historical article** · Originally published December 20, 2005; technical details may be outdated. I'm [leaving](http://weblogs.asp.net/rosherove/archive/2005/12/19/433503.aspx) today - see you in two weeks. Here's what I'll be catching up on: so far this is one hell of a book. [![](https://osherove.com/img/ext/ec1.images-amazon.com_images_P_0201699699.01._SCMZZZZZZZ_.jpg) Agile Software Development](https://www.amazon.com/exec/obidos/ASIN/0201699699/iserializable-20) by Alistair Cockburn --- title: "New XML Features in VS 2005 and .NET 2.0" url: "https://osherove.com/blog/2005/12/19/new-xml-features-in-vs-2005-and-net-20.md" canonical: "https://osherove.com/blog/2005/12/19/new-xml-features-in-vs-2005-and-net-20.html" published: "2005-12-19T19:05:00" updated: "2005-12-19T19:05:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "I attended a session hosted by Alan Griver a few weeks ago at the Israel C# Users Group (IVCUG). It was a lovely talk, who's first part centered around the new XML features in VS 2005. Amazingly, I don't think I've…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New XML Features in VS 2005 and .NET 2.0 By Roy Osherove December 19, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published December 19, 2005; technical details may be outdated. I attended a session hosted by [Alan Griver](http://blogs.msdn.com/vsdata/archive/2004/05/06/127495.aspx) a few weeks ago at the Israel C# Users Group (IVCUG). It was a lovely talk, who's first part centered around the new XML features in VS 2005. Amazingly, I don't think I've heard anyone talk about these before, because most of it was brand new to me! Here's a short list of the new cool stuff he talks about: \- **XSL is actually compiled in IL**, which means you can actually debug into XSLT statements. Which leaves me wondering - maybe someone should write a visualizer for XSL objects? \- **There's a cool XML toolbar** to let you do all sorts of cool stuff while editing and viewing XML files \- **XML Snippets**: This is a cool thing. Let's say you have an XML that contains something like this: ``` 1 Roy ``` you can write this: ``` [Cursor] ``` How cool? \- **The properties window** for an XML file contains a "schema" setting with a button that allows schema for the document form a bunch of preknown schemas (you can also add your own to this list). ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Feb 1, 2006 ### [Finally a "stable enough" build of Resharper 2.0 Alpha?](https://osherove.com/blog/2006/2/1/finally-a-quotstable-enoughquot-build-of-resharper-20-alpha.html) - Jan 15, 2006 ### [This week at the C# Users Group: Windows Communications Foundation (“Indigo”) with Ido Samuelson](https://osherove.com/blog/2006/1/15/this-week-at-the-c-users-group-windows-communications-founda.html) - Dec 13, 2005 ### [\[Slides and code\] VS Launch Israel: .NET 2.0 Things You Need To Know](https://osherove.com/blog/2005/12/13/slides-and-code-vs-launch-israel-net-20-things-you-need-to-k.html) - Dec 3, 2005 ### [December at IVBUG: Xml Editing and Debugging + LINQ](https://osherove.com/blog/2005/12/3/december-at-ivbug-xml-editing-and-debugging-linq.html) --- title: "[Book of the month] Behind Closed Doors : Secrets of Great Management" url: "https://osherove.com/blog/2005/12/19/book-of-the-month-behind-closed-doors-secrets-of-great-manag.md" canonical: "https://osherove.com/blog/2005/12/19/book-of-the-month-behind-closed-doors-secrets-of-great-manag.html" published: "2005-12-19T15:29:00" updated: "2005-12-19T15:29:00" tags: [] author: "Roy Osherove" description: "Behind Closed Doors : Secrets of Great Management (Pragmatic Programmers) Having been reading this book by Johanna Rothman and Esther Derby all night and getting about half way, I can say this is one of the best,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Book of the month\] Behind Closed Doors : Secrets of Great Management By Roy Osherove December 19, 2005 **Historical article** · Originally published December 19, 2005; technical details may be outdated. [![](https://osherove.com/img/wb/50f40080_images.amazon.com_images_P_0976694026.01._SCMZZZZZZZ_.jpg) Behind Closed Doors : Secrets of Great Management (Pragmatic Programmers)](https://www.amazon.com/exec/obidos/ASIN/0976694026/iserializable-20) Having been reading this book by [Johanna Rothman](http://www.jrothman.com/) and [Esther Derby](http://www.estherderby.com/) all night and getting about half way, I can say this is one of the best, simplest management books I've read. It really does shed light on the day-to-day behavior of a great manager, and is filled with practical advice, HOW-TO and especially "How Not To"s. I wish some of the managers I've known in the past have read this (including myself in a couple of projects!). "Behind Closed Doors" wins my "book of the month" club award (which usually means it says on for several months until I finish the next one...) _PS_ Book links made with [The Amazoner](https://osherove.com/) --- title: "January 2006 at Agile Israel - Mock Objects & Refactoring" url: "https://osherove.com/blog/2005/12/19/january-2006-at-agile-israel-mock-objects-amp-refactoring.md" canonical: "https://osherove.com/blog/2005/12/19/january-2006-at-agile-israel-mock-objects-amp-refactoring.html" published: "2005-12-19T14:46:00" updated: "2005-12-19T14:46:00" tags: ["Agile Israel News", "Agile Related", "Community", "Team Agile News"] author: "Roy Osherove" description: "More Info: http://www.agileisrael.com/Default.aspx?tabid=118 When : January 5th, 2006 Gathering at 17:30, we start promptly at 18:00 Part I : Mock Objects - Asher Sterkin Mock Objects are a powerful mechanism for unit…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # January 2006 at Agile Israel - Mock Objects & Refactoring By Roy Osherove December 19, 2005 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published December 19, 2005; technical details may be outdated.
 
When: January 5th, 2006

Gathering at 17:30, we start promptly at 18:00

Part I : Mock Objects - Asher Sterkin

Mock Objects are a powerful mechanism for unit testing of classes, which depend on various environment elements: database, communication, clock, calendar, etc. Sometimes Mocks are confused with Stubs, Fakes, Simulators. Mocks are slightly more complex, though more flexible, than Stubs or Fakes and are much simpler than Simulators. In fact Mocks are so simple that sometimes developers miss the whole point and find themselves to be completely puzzled about effective usage of Mocks for unit testing and Test-Driven Development. And this is a shame: when properly used especially in combination with Design Patterns Mocks can be an extremely powerful mechanism of Test-Driven Development supporting very aggressive parallel implementation of multiple tasks related to the same story.

In this presentation I will provide a systematic introduction of Mocks and will demonstrate how Mocks could be turned into an integral part of the Agile software development process.

Part II: Refactoring 101 - Justin Angel

Do you write Agile code or do you write Fragile code? Does your code embrace changes or does it crush and burn? Do you find yourself debugging over-commented, over-duplicated, over-complicated and over-bloated code?
This talk will be about Agile coding techniques that will assist us in writing code that can last the duration. We will see examples on common coding problems such as Code duplication, redundant commenting, hard-coded code smells and bloated code. And we'll work togather on finding solutions for these problems.
Agenda:

18:00 - 19:15 - Mock Objects Techniques - Asher Sterkin

19:15 - 19:30 - Break

19:30 - 20:45 - Refactoring Techniques - Justin Angel
 Speaker Details 

About Asher Sterkin
Asher has about 25 years of professional software development. His areas of specialization include Object-Oriented Analysis and Design, Design Patterns, UML, Agile Development Practices,  Configuration Management, Generic and Generative Programming, and Statecharts.
Asher firmly believes in "hamayan hamitgaber" approach to education, especially when it's applied to the professional knowledge: the more you share with others the more you learn. For that reason Asher spent three years on teaching Advanced C++ and Design Patterns course in Hadassah Technology College, Jerusalem. In his current position of Principal Engineer at NDS technologies Israel Asher spends a substantial portion of his time on coaching and consulting activities helping others to work less time, smarter and yet to earn and enjoy more from their work.
 
About Justin Angel
Justin-Josef Angel is a senior web developer. He's been working for the last four years as a web developer, the better half of which in the .Net framework. He's been helping inexperienced .Net developers for a year now at the Tapuz .Net forum and he has helped over 500 developers successfully. He also has the only .Net blog in Hebrew at www.JustinAngel.Net
## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Jan 15, 2006 ### [A solution for easier ASP.NET Unit and GUI testing?](https://osherove.com/blog/2006/1/15/a-solution-for-easier-aspnet-unit-and-gui-testing.html) - Jan 5, 2006 ### [Reminder: Agile Israel Meets \*Today\*: Refactoring and Mock Objects](https://osherove.com/blog/2006/1/5/reminder-agile-israel-meets-today-refactoring-and-mock-objec.html) - Dec 19, 2005 ### [Fowler's "The New Methodology" - Updated](https://osherove.com/blog/2005/12/19/fowlers-quotthe-new-methodologyquot-updated.html) - Dec 19, 2005 ### [Video: Johanna Rothman at Agile Israel: Moving Towards Agile Project Management](https://osherove.com/blog/2005/12/19/video-johanna-rothman-at-agile-israel-moving-towards-agile-p.html) --- title: "Going to Thailand for a couple of weeks" url: "https://osherove.com/blog/2005/12/19/going-to-thailand-for-a-couple-of-weeks.md" canonical: "https://osherove.com/blog/2005/12/19/going-to-thailand-for-a-couple-of-weeks.html" published: "2005-12-19T14:43:00" updated: "2005-12-19T14:43:00" tags: ["Off Topic"] author: "Roy Osherove" description: "My wife an I are going on a two week trip to Thailand this Wednesday (2 days from now..ack!). It's a long awaited, and well deserved vacation for the both of us. Our \"plan\" is pretty agile :) We have a two week…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Going to Thailand for a couple of weeks By Roy Osherove December 19, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 19, 2005; technical details may be outdated. My wife an I are going on a two week trip to Thailand this Wednesday (2 days from now..ack!). It's a long awaited, and well deserved vacation for the both of us. Our "plan" is pretty _agile_ :) We have a two week _iteration_ with a _design goal_ of getting lots of rest, seeing some island beaches, ride bikes, have a new year's party and have lots of pictures. We're not sure how to do that yet, but the first two days are _signed off_ on, as we will be meeting up [with a friend](http://www.shabthai.com/) who lives there. Another design goal is no blogging for two weeks. Sorry. This past year saw Tail almost finishing up her CS degree (she's been studying like mad) and the rise of my new business. It's been eventful, interesting and most of all - **fun**!. May the next year contain all three! Happy early new year and happy Hanukkah! See you all on the flip side :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 7, 2006 ### [VB.NET 2.0 Vs. C# 2.0: Nice event photo](https://osherove.com/blog/2006/1/7/vbnet-20-vs-c-20-nice-event-photo.html) - Jan 4, 2006 ### [Back, Relaxed and Recharged](https://osherove.com/blog/2006/1/4/back-relaxed-and-recharged.html) - Dec 10, 2005 ### [Media Center Fix: Multiple Concurrent Logins to Windows](https://osherove.com/blog/2005/12/10/media-center-fix-multiple-concurrent-logins-to-windows.html) - Nov 26, 2005 ### [For the ego trip bag: Google Book Search](https://osherove.com/blog/2005/11/26/for-the-ego-trip-bag-google-book-search.html) --- title: "Fowler's \"The New Methodology\" - Updated" url: "https://osherove.com/blog/2005/12/19/fowlers-quotthe-new-methodologyquot-updated.md" canonical: "https://osherove.com/blog/2005/12/19/fowlers-quotthe-new-methodologyquot-updated.html" published: "2005-12-19T14:34:00" updated: "2005-12-19T14:34:00" tags: ["Agile Israel News", "Agile Related"] author: "Roy Osherove" description: "A couple of years ago I got to read Martin Fowler's fascinating paper on \" The New Methodology \". That paper/very short book summarizes the approaches taken by Agile development methodologies, how the came to be, and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Fowler's "The New Methodology" - Updated By Roy Osherove December 19, 2005 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published December 19, 2005; technical details may be outdated. A couple of years ago I got to read Martin Fowler's fascinating paper on "[The New Methodology](http://martinfowler.com/articles/newMethodology.html)". That paper/very short book summarizes the approaches taken by Agile development methodologies, how the came to be, and what the differences between Agile and "Engineering Methodologies" usually are. that paper gave me a new outlook on concepts I thought I had grasped before, giving more depth and understanding of the "why" and "how it came to be" parts of things I firmly believed and believe today, and not a week goes by that I don't talk about some of the things I've learned from it. I was happy to learn that the paper has been "refurbished" and underwent "General overhaul" to include a better list reference of methodologies and other subjects. It is still one of the most useful references I can find to the overall "subject matter", and a great place to start if you're thinking to yourself "what is this guy smoking?" Take an hour. [Read it](http://martinfowler.com/articles/newMethodology.html). ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Jan 5, 2006 ### [Reminder: Agile Israel Meets \*Today\*: Refactoring and Mock Objects](https://osherove.com/blog/2006/1/5/reminder-agile-israel-meets-today-refactoring-and-mock-objec.html) - Dec 19, 2005 ### [January 2006 at Agile Israel - Mock Objects & Refactoring](https://osherove.com/blog/2005/12/19/january-2006-at-agile-israel-mock-objects-amp-refactoring.html) - Dec 19, 2005 ### [Video: Johanna Rothman at Agile Israel: Moving Towards Agile Project Management](https://osherove.com/blog/2005/12/19/video-johanna-rothman-at-agile-israel-moving-towards-agile-p.html) - Dec 19, 2005 ### [3rd Agile Israel TDD workshop registration is now closed](https://osherove.com/blog/2005/12/19/3rd-agile-israel-tdd-workshop-registration-is-now-closed.html) --- title: "Video: Johanna Rothman at Agile Israel: Moving Towards Agile Project Management" url: "https://osherove.com/blog/2005/12/19/video-johanna-rothman-at-agile-israel-moving-towards-agile-p.md" canonical: "https://osherove.com/blog/2005/12/19/video-johanna-rothman-at-agile-israel-moving-towards-agile-p.html" published: "2005-12-19T07:48:00" updated: "2005-12-19T07:48:00" tags: ["Agile Israel News", "Team Agile News"] author: "Roy Osherove" description: "Ohad Israeli has put a video online from the first part of Johanna Rothman's talk last week at Agile Israel. The talk was about \"Moving Towards Agile Project Management\". Check it out here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video: Johanna Rothman at Agile Israel: Moving Towards Agile Project Management By Roy Osherove December 19, 2005 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published December 19, 2005; technical details may be outdated. [Ohad Israeli](http://weblogs.asp.net/israelio/) has put a video online from the first part of [Johanna Rothman's](http://www.jrothman.com/) talk last week at Agile Israel. The talk was about "Moving Towards Agile Project Management". [Check it out here](http://weblogs.asp.net/israelio/archive/2005/12/18/433447.aspx). ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Dec 19, 2005 ### [January 2006 at Agile Israel - Mock Objects & Refactoring](https://osherove.com/blog/2005/12/19/january-2006-at-agile-israel-mock-objects-amp-refactoring.html) - Dec 19, 2005 ### [Fowler's "The New Methodology" - Updated](https://osherove.com/blog/2005/12/19/fowlers-quotthe-new-methodologyquot-updated.html) - Dec 19, 2005 ### [3rd Agile Israel TDD workshop registration is now closed](https://osherove.com/blog/2005/12/19/3rd-agile-israel-tdd-workshop-registration-is-now-closed.html) - Dec 17, 2005 ### [NUnit 2.2.4: .NET 2.0 Support, Extensibility Support and new Asserts and Attributes](https://osherove.com/blog/2005/12/17/nunit-224-net-20-support-extensibility-support-and-new-asser.html) --- title: "3rd Agile Israel TDD workshop registration is now closed" url: "https://osherove.com/blog/2005/12/19/3rd-agile-israel-tdd-workshop-registration-is-now-closed.md" canonical: "https://osherove.com/blog/2005/12/19/3rd-agile-israel-tdd-workshop-registration-is-now-closed.html" published: "2005-12-19T07:44:00" updated: "2005-12-19T07:44:00" tags: ["Agile Israel News", "Team Agile News"] author: "Roy Osherove" description: "The registration to the 3rd TDD workshop is now closed. We have 12 people willing to learn and have fun on January 8th. If you want to be there next time, be sure to be registered at www.AgileIsrael.com and you'll get…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 3rd Agile Israel TDD workshop registration is now closed By Roy Osherove December 19, 2005 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published December 19, 2005; technical details may be outdated. The registration to the [3rd TDD workshop](http://www.agileisrael.com/Default.aspx?tabid=120) is now closed. We have 12 people willing to learn and have fun on January 8th. If you want to be there next time, be sure to be registered at [www.AgileIsrael.com](http://www.agileisrael.com/) and you'll get an email notification what a new meeting will take place. We're working on making an \*advanced\* workshop happen involving Mock Objects and interaction testing. Expect info soon.. ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Dec 19, 2005 ### [Fowler's "The New Methodology" - Updated](https://osherove.com/blog/2005/12/19/fowlers-quotthe-new-methodologyquot-updated.html) - Dec 19, 2005 ### [Video: Johanna Rothman at Agile Israel: Moving Towards Agile Project Management](https://osherove.com/blog/2005/12/19/video-johanna-rothman-at-agile-israel-moving-towards-agile-p.html) - Dec 17, 2005 ### [NUnit 2.2.4: .NET 2.0 Support, Extensibility Support and new Asserts and Attributes](https://osherove.com/blog/2005/12/17/nunit-224-net-20-support-extensibility-support-and-new-asser.html) - Dec 15, 2005 ### [Agile Israel News: RSS Feed and 3rd TDD Workshop are now open!](https://osherove.com/blog/2005/12/15/agile-israel-news-rss-feed-and-3rd-tdd-workshop-are-now-open.html) --- title: "NUnit 2.2.4: .NET 2.0 Support, Extensibility Support and new Asserts and Attributes" url: "https://osherove.com/blog/2005/12/17/nunit-224-net-20-support-extensibility-support-and-new-asser.md" canonical: "https://osherove.com/blog/2005/12/17/nunit-224-net-20-support-extensibility-support-and-new-asser.html" published: "2005-12-17T19:26:00" updated: "2005-12-17T19:26:00" tags: ["Agile Israel News", "Agile Related", "Cool Tools", "Team Agile News"] author: "Roy Osherove" description: "Got this from Charlie Poole today: We just released NUnit 2.2.4, the first production release of NUnit since 2.2 was released in August 2004. That means it's the release we recommend you use now - as opposed to all the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NUnit 2.2.4: .NET 2.0 Support, Extensibility Support and new Asserts and Attributes By Roy Osherove December 17, 2005 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published December 17, 2005; technical details may be outdated. Got this from [Charlie Poole](http://nunit.com/blogs) today: We just released NUnit 2.2.4, the first production release of NUnit since 2.2 was released in August 2004. That means it's the release we recommend you use now - as opposed to all the warnings we give with our development releases. If you haven't followed the development releases, here are a few highlights of what's new, as compared to NUnit 2.2: - NUnit 2.2.4 runs under .Net 2.0 and works with VS2005. If you work exclusively with .Net 2.0, you can download a version that is actually built with that framework version, which eliminates dealing with the config file. - You can run tests built against older versions - 2.0 or later - of NUnit without recompiling. As a bonus, you can run tests built against CSUnit without recompiling. - A number of new Asserts and Attributes have been added. It is now much easier to create your own custom Asserts while still taking advantage of NUnit's built-in error message formatting. -  An extensibility mechanism allows you to define your own attributes for test fixtures and cases that behave in non-standard ways. \[This feature is Still a bit experimental, and will appear in final form in the 2.4 release. - Documentation is substantially improved and is provided as a set of html files. The packaged documentation includes only version-specific details, with info that may change over time, such as contacts, kept on the web site. You can read the full release notes at [http://nunit.com/testweb/index.php?p=releaseNotes&r=2.2.4](http://nunit.com/testweb/index.php?p=releaseNotes&r=2.2.4). Note that the nunit.org site has not yet been updated to reflect this release. You can download NUnit 2.2.4 at [http://sourceforge.net/project/showfiles.php?group\_id=10749](http://sourceforge.net/project/showfiles.php?group_id=10749). ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Dec 19, 2005 ### [Video: Johanna Rothman at Agile Israel: Moving Towards Agile Project Management](https://osherove.com/blog/2005/12/19/video-johanna-rothman-at-agile-israel-moving-towards-agile-p.html) - Dec 19, 2005 ### [3rd Agile Israel TDD workshop registration is now closed](https://osherove.com/blog/2005/12/19/3rd-agile-israel-tdd-workshop-registration-is-now-closed.html) - Dec 15, 2005 ### [Agile Israel News: RSS Feed and 3rd TDD Workshop are now open!](https://osherove.com/blog/2005/12/15/agile-israel-news-rss-feed-and-3rd-tdd-workshop-are-now-open.html) - Dec 15, 2005 ### [Reminder: Agile Israel meets today!](https://osherove.com/blog/2005/12/15/reminder-agile-israel-meets-today.html) --- title: "Agile Israel News: RSS Feed and 3rd TDD Workshop are now open!" url: "https://osherove.com/blog/2005/12/15/agile-israel-news-rss-feed-and-3rd-tdd-workshop-are-now-open.md" canonical: "https://osherove.com/blog/2005/12/15/agile-israel-news-rss-feed-and-3rd-tdd-workshop-are-now-open.html" published: "2005-12-15T23:52:00" updated: "2005-12-15T23:52:00" tags: ["Agile Israel News", "Team Agile News"] author: "Roy Osherove" description: "Today's Agile Israel meeting with Johanna Rothman was a great experience, and I hope to share some photos from it as soon as I get them from Johanna. Audio and Video(Thanks to Ohad ) were recorded, and it won't take…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Israel News: RSS Feed and 3rd TDD Workshop are now open! By Roy Osherove December 15, 2005 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published December 15, 2005; technical details may be outdated. [Today's Agile Israel meeting](http://www.agileisrael.com/Default.aspx?tabid=113) with [Johanna Rothman](http://www.jrothman.com/) was a great experience, and I hope to share some photos from it as soon as I get them from Johanna. Audio and Video(Thanks to [Ohad](http://weblogs.asp.net/israelio)) were recorded, and it won't take longer than a year or so until that's online :) Some more news regarding [Agile Israel](http://www.agileisrael.com/): - We have [an RSS Feed](http://weblogs.asp.net/rosherove/category/10089.aspx/rss)! - The third [Test Driven Development Workshop](http://www.agileisrael.com/Default.aspx?tabid=120) is now open for registration. We limit it at 12 people, so you better hurry up and register if you want to attend (only if you're serious about attending it, don't just "save seats") **Future topics requested at the session:** 1. Agile And performance (not sure what that means) 2. TDD for non OO dev environments 3. Life story about moving the organization to agile 4. Facing anti-agile stakeholders in the organization 5. Scrum No. of people who requested to register themselves to the group site: 8 Total number of participants - 50'ish ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Dec 19, 2005 ### [3rd Agile Israel TDD workshop registration is now closed](https://osherove.com/blog/2005/12/19/3rd-agile-israel-tdd-workshop-registration-is-now-closed.html) - Dec 17, 2005 ### [NUnit 2.2.4: .NET 2.0 Support, Extensibility Support and new Asserts and Attributes](https://osherove.com/blog/2005/12/17/nunit-224-net-20-support-extensibility-support-and-new-asser.html) - Dec 15, 2005 ### [Reminder: Agile Israel meets today!](https://osherove.com/blog/2005/12/15/reminder-agile-israel-meets-today.html) - Dec 13, 2005 ### [\[Article\] Unit Testing Tips - Write Maintainable Unit Tests That Will Save You Time And Tears](https://osherove.com/blog/2005/12/13/article-unit-testing-tips-write-maintainable-unit-tests-that.html) --- title: "Reminder: Agile Israel meets today!" url: "https://osherove.com/blog/2005/12/15/reminder-agile-israel-meets-today.md" canonical: "https://osherove.com/blog/2005/12/15/reminder-agile-israel-meets-today.html" published: "2005-12-15T05:29:00" updated: "2005-12-15T05:29:00" tags: ["Agile Israel News", "Agile Related", "Team Agile News"] author: "Roy Osherove" description: "Reminder: Agile Israel meets TODAY with Johanna Rothman . More info here (including how to get there). It'd be great if you sent me an email ( roy @ agileisrael.com ) telling me you're coming but you can just as easily…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Reminder: Agile Israel meets today! By Roy Osherove December 15, 2005 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published December 15, 2005; technical details may be outdated. Reminder: Agile Israel meets TODAY with [Johanna Rothman](http://www.jrothman.com/). [More info here](http://www.agileisrael.com/Default.aspx?tabid=113) (including how to get there). It'd be great if you sent me an email ( _**roy @ agileisrael.com**_ ) telling me you're coming but you can just as easily show up (as long as its before 18:00) and enter. **When**: December 15 Gathering at 17:30, we start promptly at 18:00 **Moving Towards Agile Project Management** Your project's ship date seems short for the necessary work. Your requirements are sure to change. Everyone's pounding on you for even more features. So, you realize that a conventional waterfall lifecycle is unlikely to solve your problems. You'd like to try an Agile lifecycle, but your organization is suspicious of Agile techniques, or doesn't know how to cope without the false assurance of a detailed Gantt chart. What can you do? Without completely changing everything you do in your projects, you can apply Agile principles to your projects--providing business value to your stakeholders and customers. In this session, through practice, we'll develop a framework--based on the kinds of risks you typically encounter--for integrating selected agile practices into different types of projects. **Learning Objectives:** - Learn about frameworks based on project risk - Develop a framework project managers can use to select agile practices that fit their projects - Illuminate key Agile practices. - Practice these Agile practices ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Dec 17, 2005 ### [NUnit 2.2.4: .NET 2.0 Support, Extensibility Support and new Asserts and Attributes](https://osherove.com/blog/2005/12/17/nunit-224-net-20-support-extensibility-support-and-new-asser.html) - Dec 15, 2005 ### [Agile Israel News: RSS Feed and 3rd TDD Workshop are now open!](https://osherove.com/blog/2005/12/15/agile-israel-news-rss-feed-and-3rd-tdd-workshop-are-now-open.html) - Dec 13, 2005 ### [\[Article\] Unit Testing Tips - Write Maintainable Unit Tests That Will Save You Time And Tears](https://osherove.com/blog/2005/12/13/article-unit-testing-tips-write-maintainable-unit-tests-that.html) --- title: "[Slides and code] VS Launch Israel: .NET 2.0 Things You Need To Know" url: "https://osherove.com/blog/2005/12/13/slides-and-code-vs-launch-israel-net-20-things-you-need-to-k.md" canonical: "https://osherove.com/blog/2005/12/13/slides-and-code-vs-launch-israel-net-20-things-you-need-to-k.html" published: "2005-12-13T19:17:00" updated: "2005-12-13T19:17:00" tags: [".Net 2.0", "Agile Related", "Team Agile News"] author: "Roy Osherove" description: "You can download the code demos and presentations from my talk with Jackie Goldstein at the VS Launch in Israel about .NET 2.0 things you need to know. Jackie played the part of the VB Fanatic, while I played th part of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Slides and code\] VS Launch Israel: .NET 2.0 Things You Need To Know By Roy Osherove December 13, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Agile Related](https://osherove.com/blog/category/agile-related), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published December 13, 2005; technical details may be outdated. You can download the code demos and presentations from my talk with [Jackie Goldstein](http://weblogs.asp.net/jackieg) at the VS Launch in Israel about .NET 2.0 things you need to know. Jackie played the part of the VB Fanatic, while I played th part of the C# fanatic. In the end, the VB refactoring demos got some pretty serious applause from a crowd of mostly C# developers, which is a good to way to show people that there are alternatives (which are sometimes more productive than) to C#. You can [download the slides and code here](http://www.teamagile.com/downloads/VS_Launch_ThingsYouNeedToKnow.zip) (3.5 MB) ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Jan 15, 2006 ### [This week at the C# Users Group: Windows Communications Foundation (“Indigo”) with Ido Samuelson](https://osherove.com/blog/2006/1/15/this-week-at-the-c-users-group-windows-communications-founda.html) - Dec 19, 2005 ### [New XML Features in VS 2005 and .NET 2.0](https://osherove.com/blog/2005/12/19/new-xml-features-in-vs-2005-and-net-20.html) - Dec 3, 2005 ### [December at IVBUG: Xml Editing and Debugging + LINQ](https://osherove.com/blog/2005/12/3/december-at-ivbug-xml-editing-and-debugging-linq.html) - Nov 30, 2005 ### [A Better XML Visualizer](https://osherove.com/blog/2005/11/30/a-better-xml-visualizer.html) --- title: "[Article] Unit Testing Tips - Write Maintainable Unit Tests That Will Save You Time And Tears" url: "https://osherove.com/blog/2005/12/13/article-unit-testing-tips-write-maintainable-unit-tests-that.md" canonical: "https://osherove.com/blog/2005/12/13/article-unit-testing-tips-write-maintainable-unit-tests-that.html" published: "2005-12-13T16:54:00" updated: "2005-12-13T16:54:00" tags: ["Agile Israel News", "Agile Related", "Cool Articles", "Team Agile News", "Testing Guidelines"] author: "Roy Osherove" description: "My latest MSDN Magazine article titled \" Unit Testing Tips - Write Maintainable Unit Tests That Will Save You Time And Tears \" is out in the online January Issue here. It's based on real issues, guidelines I've…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Article\] Unit Testing Tips - Write Maintainable Unit Tests That Will Save You Time And Tears By Roy Osherove December 13, 2005 In [Agile Israel News](https://osherove.com/blog/category/agile-israel-news), [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Articles](https://osherove.com/blog/category/cool-articles), [Team Agile News](https://osherove.com/blog/category/team-agile-news), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published December 13, 2005; technical details may be outdated. My latest MSDN Magazine article titled "[Unit Testing Tips - Write Maintainable Unit Tests That Will Save You Time And Tears](http://msdn.microsoft.com/msdnmag/issues/06/01/UnitTesting/default.aspx)" is out in the online January Issue here. It's based on real issues, [guidelines I've developed](http://weblogs.asp.net/rosherove/category/9834.aspx?Show=All) and questions I've encountered during the last few years teaching and mentoring teams in test driven and agile development, and contains general rules I think no person writing unit tests should go without. It took blood sweat and tears to make this one, and I hope you like it (though the editor seems to have thoroughly cut down large pieces of it including changing all my samples to be VB.NET instead of C#.. especially the part that says that this article is targeted at developers using any version of a unit test framework out there.. grr!) Anyways, here's the summary: "There's a lot of talk these days about unit testing and how one should go about writing unit tests for their applications under different scenarios (for starters, see my June 2005 _MSDN_®_Magazine_ article on testing your data layer, available at [Know Thy Code: Simplify Data Layer Unit Testing using Enterprise Services](http://msdn.microsoft.com/msdnmag/issues/05/06/UnitTesting/)). That means there are a lot of developers who say to themselves (and to their teams) "_Hey, we should start writing tests, too_!" And so they begin writing unit test upon unit test until they reach a point where the tests themselves become a problem. Perhaps maintaining them is too hard and takes too long, or they are not readable enough to make sense, or maybe they have bugs. It is at that point that developers are forced to make a tough decision: dedicate precious time to improving their tests or ignore the problem, effectively throwing away their hard work. The cause of this problem is simply inexperience writing unit tests. In this article, I'll try to bring you some of the most important practices I've learned over the years while developing and consulting, and while training developers. These tips should help you write effective, maintainable, and robust unit tests. And I hope this advice helps you to avoid huge amounts of wasted time and effort." ## More in Agile Israel News [All posts in Agile Israel News](https://osherove.com/blog/category/agile-israel-news) - Dec 15, 2005 ### [Agile Israel News: RSS Feed and 3rd TDD Workshop are now open!](https://osherove.com/blog/2005/12/15/agile-israel-news-rss-feed-and-3rd-tdd-workshop-are-now-open.html) - Dec 15, 2005 ### [Reminder: Agile Israel meets today!](https://osherove.com/blog/2005/12/15/reminder-agile-israel-meets-today.html) --- title: "Team Agile is looking for a TDD/Unit Testing Expert" url: "https://osherove.com/blog/2005/12/12/team-agile-is-looking-for-a-tddunit-testing-expert.md" canonical: "https://osherove.com/blog/2005/12/12/team-agile-is-looking-for-a-tddunit-testing-expert.html" published: "2005-12-12T19:07:00" updated: "2005-12-12T19:07:00" tags: ["Agile Related", "Team Agile News"] author: "Roy Osherove" description: "Team Agile is looking for a Unit testing/Test Driven development expert in C++/Java · Expertise in Test-Driven Development of projects employing C++ and/or Java · Knowledge of Unit-test development and tools for unit…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Team Agile is looking for a TDD/Unit Testing Expert By Roy Osherove December 12, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published December 12, 2005; technical details may be outdated. Team Agile is looking for a Unit testing/Test Driven development expert in C++/Java ·        Expertise in Test-Driven Development of projects employing C++ and/or Java ·        Knowledge of Unit-test development and tools for unit testing ·        Practical proven knowledge in the theory of testing and testability ·        Familiarity with tools that can help the construction, management, execution, validation and logging of testing scenarios This is for a long term position at one of out clients, to help build and maintain and system of unit tests for an existing legacy product. It's not going to be easy, but it's going to be very very interesting and challenging. I'm looking for someone who can either do this now, or can be trained to do this quickly (that is - you have some experience in TDD/Unit Testing, but feel you have more to learn) Contact me at **jobs @ TeamAgile.com** with the subject "TDD Expert" ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Dec 13, 2005 ### [\[Slides and code\] VS Launch Israel: .NET 2.0 Things You Need To Know](https://osherove.com/blog/2005/12/13/slides-and-code-vs-launch-israel-net-20-things-you-need-to-k.html) - Dec 13, 2005 ### [\[Article\] Unit Testing Tips - Write Maintainable Unit Tests That Will Save You Time And Tears](https://osherove.com/blog/2005/12/13/article-unit-testing-tips-write-maintainable-unit-tests-that.html) - Dec 6, 2005 ### [Nice audio recordings about (Agile) management practices](https://osherove.com/blog/2005/12/6/nice-audio-recordings-about-agile-management-practices.html) - Dec 6, 2005 ### [Johanna at Agile Israel topic is set: Moving Towards Agile Project Management](https://osherove.com/blog/2005/12/6/johanna-at-agile-israel-topic-is-set-moving-towards-agile-pr.html) --- title: "Media Center Fix: Multiple Concurrent Logins to Windows" url: "https://osherove.com/blog/2005/12/10/media-center-fix-multiple-concurrent-logins-to-windows.md" canonical: "https://osherove.com/blog/2005/12/10/media-center-fix-multiple-concurrent-logins-to-windows.html" published: "2005-12-10T11:44:00" updated: "2005-12-10T11:44:00" tags: ["Off Topic"] author: "Roy Osherove" description: "So I can find it later: Concurrent Remote Desktop Sessions in Windows XP SP2" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Media Center Fix: Multiple Concurrent Logins to Windows By Roy Osherove December 10, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 10, 2005; technical details may be outdated. So I can find it later: [Concurrent Remote Desktop Sessions in Windows XP SP2](http://sig9.com/articles/concurrent-remote-desktop) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 4, 2006 ### [Back, Relaxed and Recharged](https://osherove.com/blog/2006/1/4/back-relaxed-and-recharged.html) - Dec 19, 2005 ### [Going to Thailand for a couple of weeks](https://osherove.com/blog/2005/12/19/going-to-thailand-for-a-couple-of-weeks.html) - Nov 26, 2005 ### [For the ego trip bag: Google Book Search](https://osherove.com/blog/2005/11/26/for-the-ego-trip-bag-google-book-search.html) - Nov 25, 2005 ### [Google Ads Gets Better - Targeted ads for specific sites](https://osherove.com/blog/2005/11/25/google-ads-gets-better-targeted-ads-for-specific-sites.html) --- title: "Nice audio recordings about (Agile) management practices" url: "https://osherove.com/blog/2005/12/6/nice-audio-recordings-about-agile-management-practices.md" canonical: "https://osherove.com/blog/2005/12/6/nice-audio-recordings-about-agile-management-practices.html" published: "2005-12-06T23:09:00" updated: "2005-12-06T23:09:00" tags: ["Agile Related", "Cool sites", "Team Agile News"] author: "Roy Osherove" description: "From Johanna Rothman : The Orasi folks have posted my fall webinars, both the audio and PDF presentation. If you missed What Makes a Great Product Manager? Managing the Project Portfolio Delivering the Right Product on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice audio recordings about (Agile) management practices By Roy Osherove December 6, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Cool sites](https://osherove.com/blog/category/cool-sites), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published December 6, 2005; technical details may be outdated. From [Johanna Rothman](http://www.jrothman.com/weblog/2005/11/orasi-webinars-posted.html): _The Orasi folks have_ [**_posted_**](http://www.orasi.com/download.php?pg=expert_series) _my fall webinars, both the audio and PDF presentation. If you missed_ - _What Makes a Great Product Manager?_ - _Managing the Project Portfolio_ - _Delivering the Right Product on Time: Setting Expectations between Engineering and the Three PMs_ _check out the webinars._ And I'll add, not only should you check out the webinars, go there and download lots of other **interesting audio** as well. I was looking for some good talk audio to burn and listen to in my car CD and this seems to hold some nice gems in there. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Dec 13, 2005 ### [\[Article\] Unit Testing Tips - Write Maintainable Unit Tests That Will Save You Time And Tears](https://osherove.com/blog/2005/12/13/article-unit-testing-tips-write-maintainable-unit-tests-that.html) - Dec 12, 2005 ### [Team Agile is looking for a TDD/Unit Testing Expert](https://osherove.com/blog/2005/12/12/team-agile-is-looking-for-a-tddunit-testing-expert.html) - Dec 6, 2005 ### [Johanna at Agile Israel topic is set: Moving Towards Agile Project Management](https://osherove.com/blog/2005/12/6/johanna-at-agile-israel-topic-is-set-moving-towards-agile-pr.html) - Dec 4, 2005 ### [Special Agile Israel Meeting with Johanna Rothman: Moving Towards Agile Project Management](https://osherove.com/blog/2005/12/4/special-agile-israel-meeting-with-johanna-rothman-moving-tow.html) --- title: "Johanna at Agile Israel topic is set: Moving Towards Agile Project Management" url: "https://osherove.com/blog/2005/12/6/johanna-at-agile-israel-topic-is-set-moving-towards-agile-pr.md" canonical: "https://osherove.com/blog/2005/12/6/johanna-at-agile-israel-topic-is-set-moving-towards-agile-pr.html" published: "2005-12-06T20:57:00" updated: "2005-12-06T20:57:00" tags: ["Agile Related", "Team Agile News"] author: "Roy Osherove" description: "Just an FYI: We finally have a session topic set for Johanna Rothman's visit to Agile Israel. It's Moving Towards Agile Project Management ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Johanna at Agile Israel topic is set: Moving Towards Agile Project Management By Roy Osherove December 6, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published December 6, 2005; technical details may be outdated. Just an FYI: We finally have a session topic set for Johanna Rothman's visit to Agile Israel. It's [Moving Towards Agile Project Management](http://www.agileisrael.com/Default.aspx?tabid=113) . ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Dec 12, 2005 ### [Team Agile is looking for a TDD/Unit Testing Expert](https://osherove.com/blog/2005/12/12/team-agile-is-looking-for-a-tddunit-testing-expert.html) - Dec 6, 2005 ### [Nice audio recordings about (Agile) management practices](https://osherove.com/blog/2005/12/6/nice-audio-recordings-about-agile-management-practices.html) - Dec 4, 2005 ### [Special Agile Israel Meeting with Johanna Rothman: Moving Towards Agile Project Management](https://osherove.com/blog/2005/12/4/special-agile-israel-meeting-with-johanna-rothman-moving-tow.html) - Nov 28, 2005 ### [Agile Israel meets today! The Planning Game](https://osherove.com/blog/2005/11/28/agile-israel-meets-today-the-planning-game.html) --- title: "Special Agile Israel Meeting with Johanna Rothman: Moving Towards Agile Project Management" url: "https://osherove.com/blog/2005/12/4/special-agile-israel-meeting-with-johanna-rothman-moving-tow.md" canonical: "https://osherove.com/blog/2005/12/4/special-agile-israel-meeting-with-johanna-rothman-moving-tow.html" published: "2005-12-04T21:35:00" updated: "2005-12-04T21:35:00" tags: ["Agile Related", "Community", "Team Agile News"] author: "Roy Osherove" description: "I'm happy to announce that Agile Israel will host Johanna Rothman at an upcoming special meeting of the group. The meeting will take place next week, on December 15th (Thursday), at the Microsoft Offices in Ra'anana.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Special Agile Israel Meeting with Johanna Rothman: Moving Towards Agile Project Management By Roy Osherove December 4, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published December 4, 2005; technical details may be outdated. I'm happy to announce that Agile Israel will host [Johanna Rothman](http://www.jrothman.com/) at an upcoming special meeting of the group. The meeting will take place next week, on **December 15th (Thursday),** at the Microsoft Offices in Ra'anana. **Please confirm your arrival so that we know how many people to expect.** This is Johanna's **second** talk at our group, the first one being on our second ever meeting. Her last talk was a huge success and audio recording of it can be downloaded from the Agile Israel site. Due to Johanna's visit this month and Hanukkah, **we're postponing** the next meeting of Agile Israel to January 5th. the meeting after that will occur on January 23rd **When**: December 15 Gathering at 17:30, we start promptly at 18:00 **Moving Towards Agile Project Management** Your project's ship date seems short for the necessary work. Your requirements are sure to change. Everyone's pounding on you for even more features. So, you realize that a conventional waterfall lifecycle is unlikely to solve your problems. You'd like to try an Agile lifecycle, but your organization is suspicious of Agile techniques, or doesn't know how to cope without the false assurance of a detailed Gantt chart. What can you do? Without completely changing everything you do in your projects, you can apply Agile principles to your projects--providing business value to your stakeholders and customers. In this session, through practice, we'll develop a framework--based on the kinds of risks you typically encounter--for integrating selected agile practices into different types of projects. **Learning Objectives:** - Learn about frameworks based on project risk - Develop a framework project managers can use to select agile practices that fit their projects - Illuminate key Agile practices. - Practice these Agile practices Johanna has been [interviewed](http://www.itconversations.com/shows/detail392.html "http") on topics such as project management and hiring technical people. You can [listen to the interview over here](http://www.itconversations.com/shows/detail392.html "http"). **Location** Meeting will take place at **Microsoft Ra'anana**: 2 Hapnina St, Raanana (09) 7625-100 Floor 0 , Dekel Room It is the new building across from Amdocs. After the first traffic circle, there is an area for (free) parking on the right. **A little about Johanna** Johanna Rothman is a well-known consultant, speaker, and author on managing high-technology product development. During her decade-long consulting career, she has enabled managers, teams, and organizations become more effective applying her pragmatic approaches to the issues of project management, risk management, and people management. She’s helped Engineering organizations, IT organizations, and startups hire, manage, and release successful products faster. Her assessment reports have helped managers and teams create and execute action plans that help them improve their projects and their processes. She is a sought-after speaker and teacher in the areas of project management, people management, and problem-solving. Johanna has written over 100 articles and papers and is now a columnist for Fast Company’s online career center, Software Development, Computerworld.com, and StickyMinds.com. Johanna is the author of the highly acclaimed [Hiring the Best Knowledge Workers, Techies & Nerds](https://www.amazon.com/exec/obidos/ASIN/0932633595/ref=nosim/rds-20 "http"), and is the coauthor of [Corrective Action for the Software Industry](https://www.amazon.com/exec/obidos/ASIN//0971323194/ref=nosim/rds-20 "http"). Johanna is also a host and session leader at the Amplifying Your Effectiveness (AYE) conference. **See you there!** ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Dec 6, 2005 ### [Nice audio recordings about (Agile) management practices](https://osherove.com/blog/2005/12/6/nice-audio-recordings-about-agile-management-practices.html) - Dec 6, 2005 ### [Johanna at Agile Israel topic is set: Moving Towards Agile Project Management](https://osherove.com/blog/2005/12/6/johanna-at-agile-israel-topic-is-set-moving-towards-agile-pr.html) - Nov 28, 2005 ### [Agile Israel meets today! The Planning Game](https://osherove.com/blog/2005/11/28/agile-israel-meets-today-the-planning-game.html) - Nov 26, 2005 ### [Nice article on ordering code construction tasks by Jeremy Miller](https://osherove.com/blog/2005/11/26/nice-article-on-ordering-code-construction-tasks-by-jeremy-m.html) --- title: "December at IVBUG: Xml Editing and Debugging + LINQ" url: "https://osherove.com/blog/2005/12/3/december-at-ivbug-xml-editing-and-debugging-linq.md" canonical: "https://osherove.com/blog/2005/12/3/december-at-ivbug-xml-editing-and-debugging-linq.html" published: "2005-12-03T22:41:00" updated: "2005-12-03T22:41:00" tags: [".Net 2.0", "Community"] author: "Roy Osherove" description: "Here's the email I got from Jackie , head of the Israel VB User Group on the upcoming meeting. --- This month I was able to arrange for a special speaker from Microsoft in Redmond . Yair Alan Griver is the Group Manager…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # December at IVBUG: Xml Editing and Debugging + LINQ By Roy Osherove December 3, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published December 3, 2005; technical details may be outdated. Here's the email I got from [Jackie](http://weblogs.asp.net/jackieg), head of the Israel VB User Group on the upcoming meeting. \--- This month I was able to arrange for a special speaker from Microsoft in Redmond.  Yair Alan Griver is the Group Manager for Visual Studio Data. As such, he works with all the teams responsible for data features across all programming languages and tools to drive a coherent story around data for developers. In his first presentation, “yag” will present and discuss XML editing and debugging in Visual Studio 2005.   In his second presentation, he will give us a glimpse of the future with his discussion on Language INtegrated Query (LINQ). He’ll cover how LINQ can be used to query objects, databases and XML and talk about where it might be heading. As always, we'll have our special "Hatzilu" session at our meeting. So please come prepared to discuss your most frustrating problems (or at least some of them!) and to share some of your own techniques and solutions that you have found useful in your applications. Please remember that it is important for me to know as accurately as possible how many people will be attending each meeting, so that I can arrange for the right amount of food.  Please confirm your attendance. **NOTE: The presentations will be in English** See you there !! The December meeting of the Israel Visual Basic User Group [http://www.renaissance.co.il/ivbug](http://www.renaissance.co.il/ivbug "http"): December 7, 2005 **Location****:** **Microsoft Israel** **2 Hapnina St****, Ra'anana** **(09) 7625-100** **Floor 0 , Dekel Room** **It is the new building across from Amdocs.** **After the first traffic circle, there is an area for parking on the right.** 17:30 - 18:00   Assembly 18:00 - 18:10   Introduction 18:10 - 19:15    **“****XML editing and debugging in Visual Studio 2005"** Yair Alan Griver, Microsoft  Corp. 19:15 - 19:30    Break 19:30 – 19:45   "Hatzilu !"                        Open session, with questions and answers/ideas from everyone 19:45 - 20:45   **“****A look at data in the future - Language INtegrated Query (LINQ)"**                       Yair Alan Griver, Microsoft  Corp. \--- ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Dec 19, 2005 ### [New XML Features in VS 2005 and .NET 2.0](https://osherove.com/blog/2005/12/19/new-xml-features-in-vs-2005-and-net-20.html) - Dec 13, 2005 ### [\[Slides and code\] VS Launch Israel: .NET 2.0 Things You Need To Know](https://osherove.com/blog/2005/12/13/slides-and-code-vs-launch-israel-net-20-things-you-need-to-k.html) - Nov 30, 2005 ### [A Better XML Visualizer](https://osherove.com/blog/2005/11/30/a-better-xml-visualizer.html) - Nov 30, 2005 ### [Ask The Pros: Debugging Tips](https://osherove.com/blog/2005/11/30/ask-the-pros-debugging-tips.html) --- title: "[Review] JustCode! Universal 1.0 - Productivity Addin for VS 2005 and a0023" url: "https://osherove.com/blog/2005/12/3/review-justcode-universal-10-productivity-addin-for-vs-2005.md" canonical: "https://osherove.com/blog/2005/12/3/review-justcode-universal-10-productivity-addin-for-vs-2005.html" published: "2005-12-03T01:56:00" updated: "2005-12-03T01:56:00" tags: ["Product Reviews", "Team Agile News"] author: "Roy Osherove" description: "Let’s face it. JetBrains , the company who created Resharper for Visual Studio 2003, set a standard for refactoring and “quick-fix” addins which has the whole “productivity addins” industry taking notes. Their two…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Review\] JustCode! Universal 1.0 - Productivity Addin for VS 2005 and a0023 By Roy Osherove December 3, 2005 In [Product Reviews](https://osherove.com/blog/category/product-reviews), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published December 3, 2005; technical details may be outdated. Let’s face it. [JetBrains](http://jetbrains.com/), the company who created [Resharper](http://www.jetbrains.com/resharper) for Visual Studio 2003, set a standard for refactoring and “quick-fix” addins which has the whole “productivity addins” industry taking notes. Their two biggest problems these days are that 1. Resharper does not support VB.NET, only C# 2. Resharper does not support Visual Studio 2005 (a public alpha is available, and it’s practically unusable as I write this)  That’s why when I saw the [cool demonstration video of JustCode!](http://www.omnicore.com/justcode_video.htm) I immediately thought to myself that this is the addin to fill the gap that Resharper left behind. JustCode! supports C#, VB.NET and J# editing and runs on VS 2005 and 2003.  I set out to start building a simple product in both C# and VB.NET that would make me exercise this new addin.  How did it measure up? [Read the full review](http://weblogs.asp.net/rosherove/articles/ReviewJustCode.aspx) ## More in Product Reviews [All posts in Product Reviews](https://osherove.com/blog/category/product-reviews) - Jan 15, 2006 ### [Cheat Sheets for ASP.NET and Browsers \[The Browser Book\]](https://osherove.com/blog/2006/1/15/cheat-sheets-for-aspnet-and-browsers-the-browser-book.html) - Jan 15, 2006 ### [HanselMinutia](https://osherove.com/blog/2006/1/15/hanselminutia.html) --- title: "Raise your hand if you want an interview with Jamie Cansdale (the NUnit Addin guy)" url: "https://osherove.com/blog/2005/12/1/raise-your-hand-if-you-want-an-interview-with-jamie-cansdale.md" canonical: "https://osherove.com/blog/2005/12/1/raise-your-hand-if-you-want-an-interview-with-jamie-cansdale.html" published: "2005-12-01T00:29:00" updated: "2005-12-01T00:29:00" tags: ["Community"] author: "Roy Osherove" description: "OK, Andrew started it, so raise your hand if you want Jamie Cansdale , the guy who created TestDriven.NET (one of the coolest addins out there), to be interviewed by me for my interview series . He's a little shy, and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Raise your hand if you want an interview with Jamie Cansdale (the NUnit Addin guy) By Roy Osherove December 1, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published December 1, 2005; technical details may be outdated. OK, Andrew [started](http://weblogs.asp.net/astopford/archive/2005/11/30/431891.aspx) it, so raise your hand if you want [Jamie Cansdale](http://weblogs.asp.net/nunitaddin/), the guy who created [TestDriven.NET](http://www.testdriven.net/) (one of the coolest addins out there), to be interviewed by me for [my interview series](http://www.teamagile.com/mainpages/interviews.html). He's a little shy, and refused an interview offer 6 months ago, but I bet if he read the comments on this post he'd comply and do it. **What say you?** ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Dec 4, 2005 ### [Special Agile Israel Meeting with Johanna Rothman: Moving Towards Agile Project Management](https://osherove.com/blog/2005/12/4/special-agile-israel-meeting-with-johanna-rothman-moving-tow.html) - Dec 3, 2005 ### [December at IVBUG: Xml Editing and Debugging + LINQ](https://osherove.com/blog/2005/12/3/december-at-ivbug-xml-editing-and-debugging-linq.html) - Nov 28, 2005 ### [Agile Israel meets today! The Planning Game](https://osherove.com/blog/2005/11/28/agile-israel-meets-today-the-planning-game.html) - Nov 21, 2005 ### [Taken the MS Israel Speaker Challenge? Omer did.](https://osherove.com/blog/2005/11/21/taken-the-ms-israel-speaker-challenge-omer-did.html) --- title: "FinalBuilder 4.0 is out - Lightweight, Scalable Build Managment Tool" url: "https://osherove.com/blog/2005/11/30/finalbuilder-40-is-out-lightweight-scalable-build-managment.md" canonical: "https://osherove.com/blog/2005/11/30/finalbuilder-40-is-out-lightweight-scalable-build-managment.html" published: "2005-11-30T23:30:00" updated: "2005-11-30T23:30:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "The good people at VSoft have done it again. FinalBuilder 4.0 is out and running , and I couldn't be happier advertising for it on this blog. One of the best products I've used for build management, and it gets better…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # FinalBuilder 4.0 is out - Lightweight, Scalable Build Managment Tool By Roy Osherove November 30, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 30, 2005; technical details may be outdated. The good people at VSoft have done it again. [FinalBuilder 4.0 is out and running](http://images.blogads.com/spzptifspwfdpn/iserializable/3280508/readmore?r=2&d=http%3A%2F%2Fwww.finalbuilder.com%2F), and I couldn't be happier advertising for it on this blog. One of the best products I've used for build management, and it gets better every release. If you don't have a team large enough to justify Team System, This thing is definitely one of the first options I'd check for a light and easy build process that can scale and be maintained easily. **P.S** _(If you have a product so good that I'd ramble about it on and on like this, tell me about it. If I like it, you can advertise on this blog too and appear near the top left)_ ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jan 15, 2006 ### [Code Partitioning - The next big thing in protecting .NET code?](https://osherove.com/blog/2006/1/15/code-partitioning-the-next-big-thing-in-protecting-net-code.html) - Dec 17, 2005 ### [NUnit 2.2.4: .NET 2.0 Support, Extensibility Support and new Asserts and Attributes](https://osherove.com/blog/2005/12/17/nunit-224-net-20-support-extensibility-support-and-new-asser.html) - Nov 30, 2005 ### [A Better XML Visualizer](https://osherove.com/blog/2005/11/30/a-better-xml-visualizer.html) - Nov 30, 2005 ### [Ask The Pros: Debugging Tips](https://osherove.com/blog/2005/11/30/ask-the-pros-debugging-tips.html) --- title: "A Better XML Visualizer" url: "https://osherove.com/blog/2005/11/30/a-better-xml-visualizer.md" canonical: "https://osherove.com/blog/2005/11/30/a-better-xml-visualizer.html" published: "2005-11-30T20:05:00" updated: "2005-11-30T20:05:00" tags: [".Net 2.0", "Cool Tools"] author: "Roy Osherove" description: "Here's another cool visualizer for your use. It's a better XML Visualizer than the one currently in the VS IDE, written by Howard van Rooijen ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Better XML Visualizer By Roy Osherove November 30, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 30, 2005; technical details may be outdated. [Here's another cool visualizer](http://blogs.conchango.com/howardvanrooijen/archive/2005/11/24/2424.aspx) for your use. It's a better XML Visualizer than the one currently in the VS IDE, written by [Howard van Rooijen](http://blogs.conchango.com/howardvanrooijen/). ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Dec 13, 2005 ### [\[Slides and code\] VS Launch Israel: .NET 2.0 Things You Need To Know](https://osherove.com/blog/2005/12/13/slides-and-code-vs-launch-israel-net-20-things-you-need-to-k.html) - Dec 3, 2005 ### [December at IVBUG: Xml Editing and Debugging + LINQ](https://osherove.com/blog/2005/12/3/december-at-ivbug-xml-editing-and-debugging-linq.html) - Nov 30, 2005 ### [Ask The Pros: Debugging Tips](https://osherove.com/blog/2005/11/30/ask-the-pros-debugging-tips.html) - Nov 26, 2005 ### [Announcing Regex Kit: Regular Expression Visualizers for VS 2005](https://osherove.com/blog/2005/11/26/announcing-regex-kit-regular-expression-visualizers-for-vs-2.html) --- title: "Ask The Pros: Debugging Tips" url: "https://osherove.com/blog/2005/11/30/ask-the-pros-debugging-tips.md" canonical: "https://osherove.com/blog/2005/11/30/ask-the-pros-debugging-tips.html" published: "2005-11-30T08:32:00" updated: "2005-11-30T08:32:00" tags: [".Net 2.0", "Cool Tools"] author: "Roy Osherove" description: "The latest round of VisualStudioHacks.Com 's \"Ask The Pros\" article is out, and this time it's about debugging . While I did contribute my own tips into the mix, I was pleasantly surprised how much new information I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ask The Pros: Debugging Tips By Roy Osherove November 30, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 30, 2005; technical details may be outdated. The latest round of [VisualStudioHacks.Com](http://visualstudiohacks.com/)'s "Ask The Pros" article is out, and [this time it's about debugging](http://visualstudiohacks.com/atpDebugging). While I did contribute my own tips into the mix, I was pleasantly surprised how much new information I learned from that article. Very nice! ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Dec 3, 2005 ### [December at IVBUG: Xml Editing and Debugging + LINQ](https://osherove.com/blog/2005/12/3/december-at-ivbug-xml-editing-and-debugging-linq.html) - Nov 30, 2005 ### [A Better XML Visualizer](https://osherove.com/blog/2005/11/30/a-better-xml-visualizer.html) - Nov 26, 2005 ### [Announcing Regex Kit: Regular Expression Visualizers for VS 2005](https://osherove.com/blog/2005/11/26/announcing-regex-kit-regular-expression-visualizers-for-vs-2.html) - Nov 26, 2005 ### [SQL 2005 management studio lacks.. lots of stuff.](https://osherove.com/blog/2005/11/26/sql-2005-management-studio-lacks-lots-of-stuff.html) --- title: "Agile Israel meets today! The Planning Game" url: "https://osherove.com/blog/2005/11/28/agile-israel-meets-today-the-planning-game.md" canonical: "https://osherove.com/blog/2005/11/28/agile-israel-meets-today-the-planning-game.html" published: "2005-11-28T13:29:00" updated: "2005-11-28T13:29:00" tags: ["Agile Related", "Community"] author: "Roy Osherove" description: "Update : Meeting went great! Amir is certainly a good speaker and kept people awake until 21:00. Now *that's* saying something... Expect audio and slides as soon as humanly possible on the site. Don't forget: Agile…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Israel meets today! The Planning Game By Roy Osherove November 28, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published November 28, 2005; technical details may be outdated. _**Update**: Meeting went great! Amir is certainly a good speaker and kept people awake until 21:00. Now \*that's\* saying something... Expect audio and slides as soon as humanly possible on the site._ Don't forget: Agile Israel meets [Today at 18:00](http://www.agileisrael.com/Default.aspx?tabid=112)! Draft Giveaway:   [![](https://osherove.com/img/wb/b95bd301_images.amazon.com_images_P_020161622X.01._SCMZZZZZZZ_.jpg) The Pragmatic Programmer: From Journeyman to Master](https://www.amazon.com/exec/obidos/ASIN/020161622X/iserializable-20) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Dec 6, 2005 ### [Johanna at Agile Israel topic is set: Moving Towards Agile Project Management](https://osherove.com/blog/2005/12/6/johanna-at-agile-israel-topic-is-set-moving-towards-agile-pr.html) - Dec 4, 2005 ### [Special Agile Israel Meeting with Johanna Rothman: Moving Towards Agile Project Management](https://osherove.com/blog/2005/12/4/special-agile-israel-meeting-with-johanna-rothman-moving-tow.html) - Nov 26, 2005 ### [Nice article on ordering code construction tasks by Jeremy Miller](https://osherove.com/blog/2005/11/26/nice-article-on-ordering-code-construction-tasks-by-jeremy-m.html) - Nov 24, 2005 ### [Test-First vs. Implementation-First : What Microsoft really meant](https://osherove.com/blog/2005/11/24/test-first-vs-implementation-first-what-microsoft-really-mea.html) --- title: "Nice article on ordering code construction tasks by Jeremy Miller" url: "https://osherove.com/blog/2005/11/26/nice-article-on-ordering-code-construction-tasks-by-jeremy-m.md" canonical: "https://osherove.com/blog/2005/11/26/nice-article-on-ordering-code-construction-tasks-by-jeremy-m.html" published: "2005-11-26T23:32:00" updated: "2005-11-26T23:32:00" tags: ["Agile Related", "Architecture", "Cool Articles", "Project Management"] author: "Roy Osherove" description: "Jeremy Miller has some sound advice and an interesting read on the order of code construction (a nice \"Where should I start building my project, and how do I continue to implement the various pieces of the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice article on ordering code construction tasks by Jeremy Miller By Roy Osherove November 26, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Architecture](https://osherove.com/blog/category/architecture), [Cool Articles](https://osherove.com/blog/category/cool-articles), [Project Management](https://osherove.com/blog/category/project-management) **Historical article** · Originally published November 26, 2005; technical details may be outdated. [Jeremy Miller](http://codebetter.com/blogs/jeremy.miller/) has some sound advice and an interesting read on the [order of code construction](http://codebetter.com/blogs/jeremy.miller/archive/2005/11/26/135098.aspx) (a nice "Where should I start building my project, and how do I continue to implement the various pieces of the infrastructure" piece) _"it’s easier to make a change by going around a framework or drilling exception cases into a framework with “if/then” statements, you’ve created a viscous framework that’s might be causing you more harm than good.  If you start to hear the phrases “can’t we just go around the framework?” or “this would be easier without the framework” or even worse “we need to get \[Some Guy\] to change the framework first” you’ll know that you’re going down a painful path with your framework. "_ _"Time and time again I’ve learned or observed that projects go much smoother when you build vertically instead of horizontally.  What I mean by this is that you build a new system by creating a feature at a time with the entire stack of UI, business logic, and database work to make the feature fully functional.  As you build new features you religiously eliminate duplication to avoid creating a_ [_Stovepipe anti-pattern_](http://c2.com/cgi/wiki?StovepipeAntiPattern) _and harvest reusable code."_ This is a good read mostly because Jeremy talks out of his own experiences and also failures, taking pride in what h and his teams have learned from them. [Subscribed](http://codebetter.com/blogs/jeremy.miller/rss.aspx). ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Dec 4, 2005 ### [Special Agile Israel Meeting with Johanna Rothman: Moving Towards Agile Project Management](https://osherove.com/blog/2005/12/4/special-agile-israel-meeting-with-johanna-rothman-moving-tow.html) - Nov 28, 2005 ### [Agile Israel meets today! The Planning Game](https://osherove.com/blog/2005/11/28/agile-israel-meets-today-the-planning-game.html) - Nov 24, 2005 ### [Test-First vs. Implementation-First : What Microsoft really meant](https://osherove.com/blog/2005/11/24/test-first-vs-implementation-first-what-microsoft-really-mea.html) - Nov 23, 2005 ### [Webcast: Agile and eXtreme Programming from patterns & practices (Level 200)](https://osherove.com/blog/2005/11/23/webcast-agile-and-extreme-programming-from-patterns-amp-prac.html) --- title: "For the ego trip bag: Google Book Search" url: "https://osherove.com/blog/2005/11/26/for-the-ego-trip-bag-google-book-search.md" canonical: "https://osherove.com/blog/2005/11/26/for-the-ego-trip-bag-google-book-search.html" published: "2005-11-26T21:30:00" updated: "2005-11-26T21:30:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Here's another trick for the Ego Trip enhancement bag: Search your name in Google Books . Funnily enough, I was mentioned in one book I didn't even know about, while another book that I *do* know about , is not listed." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # For the ego trip bag: Google Book Search By Roy Osherove November 26, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 26, 2005; technical details may be outdated. Here's another trick for the Ego Trip enhancement bag: Search [your name in Google Books](http://print.google.com/print?q=roy+osherove&hl=en&lr=&sa=N&tab=wp). Funnily enough, I was mentioned in [one book](https://www.amazon.com/exec/obidos/ASIN/059600799X/iserializable-20) I didn't even know about, while [another book that I \*do\* know about](https://www.amazon.com/exec/obidos/ASIN/078214327X/iserializable-20), is not listed. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 19, 2005 ### [Going to Thailand for a couple of weeks](https://osherove.com/blog/2005/12/19/going-to-thailand-for-a-couple-of-weeks.html) - Dec 10, 2005 ### [Media Center Fix: Multiple Concurrent Logins to Windows](https://osherove.com/blog/2005/12/10/media-center-fix-multiple-concurrent-logins-to-windows.html) - Nov 25, 2005 ### [Google Ads Gets Better - Targeted ads for specific sites](https://osherove.com/blog/2005/11/25/google-ads-gets-better-targeted-ads-for-specific-sites.html) - Nov 24, 2005 ### [\[OT\] MSDN Wars? Part 1?? The Movie???](https://osherove.com/blog/2005/11/24/ot-msdn-wars-part-1-the-movie.html) --- title: "Announcing Regex Kit: Regular Expression Visualizers for VS 2005" url: "https://osherove.com/blog/2005/11/26/announcing-regex-kit-regular-expression-visualizers-for-vs-2.md" canonical: "https://osherove.com/blog/2005/11/26/announcing-regex-kit-regular-expression-visualizers-for-vs-2.html" published: "2005-11-26T15:32:00" updated: "2005-11-26T15:32:00" tags: [".Net 2.0", "Cool Tools", "Regex", "Team Agile News"] author: "Roy Osherove" description: "I've been hibernating with everything relating to regular expressions for quite sometime now. I'm still working on the Regulator 3.0 (built on .NET 2.0), but for now, I thought I'd release these: Regex Debug Visualizers…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Announcing Regex Kit: Regular Expression Visualizers for VS 2005 By Roy Osherove November 26, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Regex](https://osherove.com/blog/category/regex), [Team Agile News](https://osherove.com/blog/category/team-agile-news) **Historical article** · Originally published November 26, 2005; technical details may be outdated. I've been hibernating with everything relating to regular expressions for quite sometime now. I'm still working on the Regulator 3.0 (built on .NET 2.0), but for now, I thought I'd release these: [**Regex Debug Visualizers for Visual Studio 2005**](https://osherove.com/Articles/RegexKit.html) Visual Studio allows creating "Debug Visualizers" for all types in .NET framework as well as custom types. You can find such visualizers for Datasets, strings and XML. There wasn't one for Regular expressions, until now. These visualizers allow you to "visualize" the following types: System.String System.Text.RegularExpressions.Regex System.Text.RegularExpressions.Match System.Text.RegularExpressions.MatchCollection _Download_ [_Version 1.00_](http://teamagile.com/Downloads/TeamAgile.RegexKit10.zip) _(90k)_ _Read the_ [_installation and usage instructions_](https://osherove.com/Articles/RegexKitInstallation.html) **Some Screenshots:** This is the visualizer for a _MatchCollection_ object. Contains Syntax Highlighting,  hierarchical match view, input and regex options. This is the 2nd tab located on the left side of the dialog. A verbal description of the pattern text. (By Eric Gunnerson) ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Nov 30, 2005 ### [A Better XML Visualizer](https://osherove.com/blog/2005/11/30/a-better-xml-visualizer.html) - Nov 30, 2005 ### [Ask The Pros: Debugging Tips](https://osherove.com/blog/2005/11/30/ask-the-pros-debugging-tips.html) - Nov 26, 2005 ### [SQL 2005 management studio lacks.. lots of stuff.](https://osherove.com/blog/2005/11/26/sql-2005-management-studio-lacks-lots-of-stuff.html) - Nov 21, 2005 ### [Slides Available for my talks on C# 2.0, LINQ, Agile Methodologies and TDD Best Practices](https://osherove.com/blog/2005/11/21/slides-available-for-my-talks-on-c-20-linq-agile-methodologi.html) --- title: "SQL 2005 management studio lacks.. lots of stuff." url: "https://osherove.com/blog/2005/11/26/sql-2005-management-studio-lacks-lots-of-stuff.md" canonical: "https://osherove.com/blog/2005/11/26/sql-2005-management-studio-lacks-lots-of-stuff.html" published: "2005-11-26T13:11:00" updated: "2005-11-26T13:11:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "Looks like the SQL 2005 Management Studio needs some work too these days. Just a quick heads up. I can't say my experiences with it are much different, unfortunately." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SQL 2005 management studio lacks.. lots of stuff. By Roy Osherove November 26, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published November 26, 2005; technical details may be outdated. Looks like the SQL 2005 Management Studio [needs some work too](http://jaysonknight.com/blog/archive/2005/11/22/4655.aspx) these days. Just a quick heads up. I can't say my experiences with it are much different, unfortunately. ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Nov 30, 2005 ### [Ask The Pros: Debugging Tips](https://osherove.com/blog/2005/11/30/ask-the-pros-debugging-tips.html) - Nov 26, 2005 ### [Announcing Regex Kit: Regular Expression Visualizers for VS 2005](https://osherove.com/blog/2005/11/26/announcing-regex-kit-regular-expression-visualizers-for-vs-2.html) - Nov 21, 2005 ### [Slides Available for my talks on C# 2.0, LINQ, Agile Methodologies and TDD Best Practices](https://osherove.com/blog/2005/11/21/slides-available-for-my-talks-on-c-20-linq-agile-methodologi.html) - Nov 12, 2005 ### [Test Driven .NET's new version supports all versions of VS 2005 including Express](https://osherove.com/blog/2005/11/12/test-driven-nets-new-version-supports-all-versions-of-vs-200.html) --- title: "Google Ads Gets Better - Targeted ads for specific sites" url: "https://osherove.com/blog/2005/11/25/google-ads-gets-better-targeted-ads-for-specific-sites.md" canonical: "https://osherove.com/blog/2005/11/25/google-ads-gets-better-targeted-ads-for-specific-sites.html" published: "2005-11-25T09:57:00" updated: "2005-11-25T09:57:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Looks like Google has added a new feature to its Google Ads: The ability to let you bid directly on a specific site with your own ad (see my own blog page on the top left - you get a new \"advertise on this site\" link).…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Google Ads Gets Better - Targeted ads for specific sites By Roy Osherove November 25, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 25, 2005; technical details may be outdated. Looks like Google has added a new feature to its Google Ads: The ability to let you bid directly on a specific site with your own ad (see my own blog page on the top left - you get a new "advertise on this site" link). Nice. So now you can tell Google that you'd like to spend up to X amount for 1000 page views etc on any given day. I'm starting to really get into this technology related issue of managing this complexity.. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 10, 2005 ### [Media Center Fix: Multiple Concurrent Logins to Windows](https://osherove.com/blog/2005/12/10/media-center-fix-multiple-concurrent-logins-to-windows.html) - Nov 26, 2005 ### [For the ego trip bag: Google Book Search](https://osherove.com/blog/2005/11/26/for-the-ego-trip-bag-google-book-search.html) - Nov 24, 2005 ### [\[OT\] MSDN Wars? Part 1?? The Movie???](https://osherove.com/blog/2005/11/24/ot-msdn-wars-part-1-the-movie.html) - Nov 23, 2005 ### [Has Microsoft screwed up with VS 2005, or is it a perception problem? Some thoughts.](https://osherove.com/blog/2005/11/23/has-microsoft-screwed-up-with-vs-2005-or-is-it-a-perception.html) --- title: "Test-First vs. Implementation-First : What Microsoft really meant" url: "https://osherove.com/blog/2005/11/24/test-first-vs-implementation-first-what-microsoft-really-mea.md" canonical: "https://osherove.com/blog/2005/11/24/test-first-vs-implementation-first-what-microsoft-really-mea.html" published: "2005-11-24T22:03:00" updated: "2005-11-24T22:03:00" tags: ["Agile Related"] author: "Roy Osherove" description: "The following diagram is borrowed from Scott Dockendorf's blog , where he explains an article he's written about unit testing with VS 2005 (a different article than the one posted on MSDN). It explains clearly the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test-First vs. Implementation-First : What Microsoft really meant By Roy Osherove November 24, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published November 24, 2005; technical details may be outdated. The following diagram is borrowed from [Scott Dockendorf's blog](http://weblogs.asp.net/scottdockendorf/), where he [explains an article he's written about unit testing with VS 2005](http://weblogs.asp.net/scottdockendorf/archive/2005/01/25/360485.aspx)(a different article than the one posted on MSDN). It explains clearly the difference between the approach Microsoft is enabling (as in the now infamous article) for Unit Test related work and the approach of Test Driven Development. Even though he's talking about a whole different article that the one I discussed in previous posts, it does explain the difference in approaches so clearly that I had to borrow it here.  

Approach #1:  Test-First

Approach #2: Code/Interface First

Description:

Born from Extreme Programming methodology, was the initial implementation.  This is the traditional approach

Evolved after birth of Test-First, where Interfaces are created before the tests

Where does the “Design” occur

During TDD cycle

Up-front, when designing the solution.

Steps:

  1. Design
  2. Code your Tests
  3. Run Your Test – (.NET Compiler won’t let you continue, because you’re referencing objects that don’t exist yet
  4. Fix Compile Errors by creating object with public interfaces (as defined in your test)
  5. Rerun Test – Watch them fail “Red”
  6. Complete Implementation Code
  7. Rerun Tests – Watch them pass
  8. Review Code / Refactor as necessary
  9. Go Onto The Next Test
  1. Design
  2. Code your Interfaces based on your design
  3. Code your Tests
  4. Run Test – Watch them fail “Red”
  5. Complete Implementation Code
  6. Rerun Tests – Watch them pass
  7. Review Code / Refactor as necessary
Clearly, Microsoft's approach in their (now expired) article on so called "Test Driven Development" landed squarely in approach #2 while the blogsphere (myself included) was [shouting](http://weblogs.asp.net/rosherove/archive/2005/11/23/431341.aspx) that Microsoft mistakenly calls it "Test-First" (a.k.a approach #1). Scott's article on the subject is probably what the Microsoft article wished it could be, with all the clarifications by Scott attached at the bottom. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 28, 2005 ### [Agile Israel meets today! The Planning Game](https://osherove.com/blog/2005/11/28/agile-israel-meets-today-the-planning-game.html) - Nov 26, 2005 ### [Nice article on ordering code construction tasks by Jeremy Miller](https://osherove.com/blog/2005/11/26/nice-article-on-ordering-code-construction-tasks-by-jeremy-m.html) - Nov 23, 2005 ### [Webcast: Agile and eXtreme Programming from patterns & practices (Level 200)](https://osherove.com/blog/2005/11/23/webcast-agile-and-extreme-programming-from-patterns-amp-prac.html) - Nov 23, 2005 ### [Microsoft fails miserably to explain or promote Test Driven Development in Team System](https://osherove.com/blog/2005/11/23/microsoft-fails-miserably-to-explain-or-promote-test-driven.html) --- title: "[OT] MSDN Wars? Part 1?? The Movie???" url: "https://osherove.com/blog/2005/11/24/ot-msdn-wars-part-1-the-movie.md" canonical: "https://osherove.com/blog/2005/11/24/ot-msdn-wars-part-1-the-movie.html" published: "2005-11-24T06:34:00" updated: "2005-11-24T06:34:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm not sure what to say when I see something like \" MSDN Wars - Part 1 \". Perhaps I shouldn't say anything.. [via msdn webcasts blog ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] MSDN Wars? Part 1?? The Movie??? By Roy Osherove November 24, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 24, 2005; technical details may be outdated. I'm not sure what to say when I see something like "[MSDN Wars - Part 1](http://blogcastrepository.com/Upload/CH9_GUY_EP1_SML_SND.wmv)". Perhaps I shouldn't say anything.. _\[via_ [_msdn webcasts blog_](http://blogs.msdn.com/msdnwebcasts/archive/2005/11/23/496556.aspx)_\]_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 26, 2005 ### [For the ego trip bag: Google Book Search](https://osherove.com/blog/2005/11/26/for-the-ego-trip-bag-google-book-search.html) - Nov 25, 2005 ### [Google Ads Gets Better - Targeted ads for specific sites](https://osherove.com/blog/2005/11/25/google-ads-gets-better-targeted-ads-for-specific-sites.html) - Nov 23, 2005 ### [Has Microsoft screwed up with VS 2005, or is it a perception problem? Some thoughts.](https://osherove.com/blog/2005/11/23/has-microsoft-screwed-up-with-vs-2005-or-is-it-a-perception.html) - Nov 14, 2005 ### [Be an MS Paint MVP](https://osherove.com/blog/2005/11/14/be-an-ms-paint-mvp.html) --- title: "Father of Rational Unified Process Goes to Redmond" url: "https://osherove.com/blog/2005/11/24/father-of-rational-unified-process-goes-to-redmond.md" canonical: "https://osherove.com/blog/2005/11/24/father-of-rational-unified-process-goes-to-redmond.html" published: "2005-11-24T06:13:00" updated: "2005-11-24T06:13:00" tags: ["Project Management"] author: "Roy Osherove" description: "This is pretty big. \"Microsoft has tapped Ivar Jacobson, known as one of the fathers of the popular Rational Unified Process (RUP), to lead an effort to deliver a lightweight unified process to the Microsoft Solutions…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Father of Rational Unified Process Goes to Redmond By Roy Osherove November 24, 2005 In [Project Management](https://osherove.com/blog/category/project-management) **Historical article** · Originally published November 24, 2005; technical details may be outdated. [This is](http://devhawk.net/PermaLink,guid,ffdb7145-6ab2-4433-95e7-034f620b544e.aspx) pretty big. _"Microsoft has tapped Ivar Jacobson, known as one of the fathers of the popular Rational Unified Process (RUP), to lead an effort to deliver a lightweight unified process to the Microsoft Solutions Framework._ _..._ _ Jacobson said the first fruits of his company's relationship with Microsoft will be through the delivery of the Essential Unified Process (Essential UP), which is based on the Microsoft Solutions Framework and integrated with VSTS. " _ ## More in Project Management [All posts in Project Management](https://osherove.com/blog/category/project-management) - Dec 6, 2006 ### [I screwed up with a client. Here's what I've learned.](https://osherove.com/blog/2006/12/6/i-screwed-up-with-a-client-heres-what-ive-learned.html) - Nov 26, 2005 ### [Nice article on ordering code construction tasks by Jeremy Miller](https://osherove.com/blog/2005/11/26/nice-article-on-ordering-code-construction-tasks-by-jeremy-m.html) - Nov 22, 2005 ### [QA Podcast: The Journey From Business Needs to Test and User Acceptance](https://osherove.com/blog/2005/11/22/qa-podcast-the-journey-from-business-needs-to-test-and-user.html) - Apr 15, 2005 ### [What does an Agile work environment look like? Here's one variation](https://osherove.com/blog/2005/4/15/what-does-an-agile-work-environment-look-like-heres-one-vari.html) --- title: "Has Microsoft screwed up with VS 2005, or is it a perception problem? Some thoughts." url: "https://osherove.com/blog/2005/11/23/has-microsoft-screwed-up-with-vs-2005-or-is-it-a-perception.md" canonical: "https://osherove.com/blog/2005/11/23/has-microsoft-screwed-up-with-vs-2005-or-is-it-a-perception.html" published: "2005-11-23T21:32:00" updated: "2005-11-23T21:32:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Mike Gunderloy writes in an article for SearchVB.Com about what he believes is more of a perception problem by developers regarding VS 2005 rather than an actual lower quality in the product. \"Every single version of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Has Microsoft screwed up with VS 2005, or is it a perception problem? Some thoughts. By Roy Osherove November 23, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 23, 2005; technical details may be outdated. [Mike Gunderloy](http://larkware.com/) writes in an [article for SearchVB.Com](http://searchvb.techtarget.com/originalContent/0,289142,sid8_gci1146746,00.html) about what he believes is more of a perception problem by developers regarding VS 2005 rather than an actual lower quality in the product. _"Every single version of Windows, Office, and Visual Studio (and any other product of similar size, for that matter) has shipped with bugs of the magnitude that people are reporting in VS2005. So why are we suddenly so hyper-aware of the VS2005 bugs? **The difference is not in product quality**, but in two other areas. **First, the developers at Microsoft were incredibly open about the development process in this product cycle**. For the first time multitudes of people got to see the realities of bugs being triaged to meet a ship schedule. I've seen some online expressions of shock that a bug-fix could be postponed to the next release of the product, but in fact this has always happened. If you don't stop fixing bugs and ship software at some point, you don't stay in the software business for long._ _**Second, the blogosphere makes it incredibly easy to find and publicize the people who are finding the bugs**; previously you had to be in product support to hear those conversations..."_ I started writing a reply and midway realized I agree with mike rather than disagree, but personally I arrive at a different conclusion than him. that conclusion is that the products were always this buggy, we're just now getting used to ask for better quality, using some new channels like blogs. _"First, the developers at Microsoft were incredibly open about the development process in this product cycle"_ From my experience, the amount of opacity in a project toward the customer is inversely related to the amount of "shock" and "surprise" the customer experiences. The more the customer knows the things you've been facing in the project (assume you had a customer on site everyday), they **know** what you're going through, and they **know** the overall pace of the project and features that need to be cut. They might dislike that some features or bugs are left in, but that's different than expecting that the features that actually **stay in the product work correctly**. If anything, the amount of opacity on the side of Microsoft has helped to _soften the blow_ for the "customer". Try to imagine what would happen if one day, out of the blue, you'd have gotten the final version of VS 2005 as-is. You wouldn't know what was cut, or why. You'd just see what's there and see that some of is is not working as well as you expect it to.  You remember to yourself that the last time you got a product from Microsoft (VS 2003) it was pretty darn stable, albeit had several lacking features, but the things that worked, worked well. You're much more likely to be shocked and annoyed at something that you feel you had no control over rather than something you feel you were part of, which is what Microsoft was striving for with all of its community effort.    Now, just for the sake of argument, let's imagine the first point by Mike is true. The amount of exposure is directly related to the amount of annoyance. How many actual developers took the time to check which features were being cut, changed or anything else? less than 1% is my bet. Less than 100 blogs do direct coverage of this, and less than 50 that I know of actually participated in the product feedback from Microsoft. The only thing that would make the general developer community believe that MS screwed up big time is the 2nd argument by Mike: that the widely read blogs basically set the public opinion against Microsoft's products. This is one thing I can't argue with. The media and the power of one are different than they were 2-3 years ago. But these people usually know what they are talking about, and that usually means their complaints are based on some experience in he field. In other words, the complaints from the widely read blogs are usually justified, while complaints from the less read blogs are,well, less read. so even if they are not justified, they are eliminated by the power of "strongest survives" evolution.  What you get is that the blogs that really tell you what's going on are being read, and the real problems surface. They just get more echo. As an analogy, Mike could have been saying "The government is no more corrupt than it used to be, there is just better coverage of it in the papers". Taking this analogy back to where we came from, you could then say "Microsoft's products are no more buggier than they were before, there is just better coverage" which would mean that they **were always this buggy**, we just were more quiet as consumers. My assumption has to be that as developers, and as a community that is more involved than ever in the process Microsoft is using to ship products, we care more, and we demand more. We **want** better quality than we used to. We **want** to be heard because we feel more involved. It's like a T-Shirt I saw somewhere. "I yell because I care". If you ask me, that's a much better situation than it used to be. It puts me and MS in the same barrel where the relationship affects both sides for better and for worse. That, my friends, is the new "techno-democracy" as I see it. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 25, 2005 ### [Google Ads Gets Better - Targeted ads for specific sites](https://osherove.com/blog/2005/11/25/google-ads-gets-better-targeted-ads-for-specific-sites.html) - Nov 24, 2005 ### [\[OT\] MSDN Wars? Part 1?? The Movie???](https://osherove.com/blog/2005/11/24/ot-msdn-wars-part-1-the-movie.html) - Nov 14, 2005 ### [Be an MS Paint MVP](https://osherove.com/blog/2005/11/14/be-an-ms-paint-mvp.html) - Nov 10, 2005 ### [The unbearable ease of domain names](https://osherove.com/blog/2005/11/10/the-unbearable-ease-of-domain-names.html) --- title: "Slides from my talk on Guidance Automation Kit are available" url: "https://osherove.com/blog/2005/11/23/slides-from-my-talk-on-guidance-automation-kit-are-available.md" canonical: "https://osherove.com/blog/2005/11/23/slides-from-my-talk-on-guidance-automation-kit-are-available.html" published: "2005-11-23T20:22:00" updated: "2005-11-23T20:22:00" tags: ["Architecture"] author: "Roy Osherove" description: "A little late, but still. Here are the slides from the Guidance Automation Toolkit talk I did at the .NET Architects User group last month. I also talked about LINQ, which you can download the slides for here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Slides from my talk on Guidance Automation Kit are available By Roy Osherove November 23, 2005 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published November 23, 2005; technical details may be outdated. A little late, but still. [Here are the slides](http://teamagile.com/downloads/Architects_Osherove_gat.zip) from the Guidance Automation Toolkit talk I did at the .NET Architects User group last month. I also talked about LINQ, which you can download the slides for [here](http://teamagile.com/Downloads/IVCUG_Osherove_16-11-05.zip). ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Feb 13, 2006 ### [Catch me at the Architects User Group: Partially Connected Smart Clients Architecture](https://osherove.com/blog/2006/2/13/catch-me-at-the-architects-user-group-partially-connected-sm.html) - Nov 26, 2005 ### [Nice article on ordering code construction tasks by Jeremy Miller](https://osherove.com/blog/2005/11/26/nice-article-on-ordering-code-construction-tasks-by-jeremy-m.html) - Oct 27, 2005 ### [Reminder: My Architects talk is today (GAT and LINQ)](https://osherove.com/blog/2005/10/27/reminder-my-architects-talk-is-today-gat-and-linq.html) - Oct 21, 2005 ### [Nice Guidance Automation kit hands on lab from TechEd (with a fix for a build problem it contains)](https://osherove.com/blog/2005/10/21/nice-guidance-automation-kit-hands-on-lab-from-teched-with-a.html) --- title: "Webcast: Agile and eXtreme Programming from patterns & practices (Level 200)" url: "https://osherove.com/blog/2005/11/23/webcast-agile-and-extreme-programming-from-patterns-amp-prac.md" canonical: "https://osherove.com/blog/2005/11/23/webcast-agile-and-extreme-programming-from-patterns-amp-prac.html" published: "2005-11-23T07:13:00" updated: "2005-11-23T07:13:00" tags: ["Agile Related"] author: "Roy Osherove" description: "this next web cast may be interesting: Hopefully this will hold better insight than MSDN's little fiasco on Test Driven Development. \"Agile and eXtreme Programming from patterns & practices (Level 200) (Level 200)\"…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Webcast: Agile and eXtreme Programming from patterns & practices (Level 200) By Roy Osherove November 23, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published November 23, 2005; technical details may be outdated. this next web cast may be interesting: Hopefully this will hold better insight than [MSDN's little fiasco](http://weblogs.asp.net/rosherove/archive/2005/11/23/431341.aspx) on Test Driven Development. "Agile and eXtreme Programming from patterns & practices (Level 200) (Level 200)" [http://tinyurl.com/8j72y](http://tinyurl.com/8j72y "http")  _\[via_ [_Gadi Meir_](http://www.idag.co.il/)_\]_ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 26, 2005 ### [Nice article on ordering code construction tasks by Jeremy Miller](https://osherove.com/blog/2005/11/26/nice-article-on-ordering-code-construction-tasks-by-jeremy-m.html) - Nov 24, 2005 ### [Test-First vs. Implementation-First : What Microsoft really meant](https://osherove.com/blog/2005/11/24/test-first-vs-implementation-first-what-microsoft-really-mea.html) - Nov 23, 2005 ### [Microsoft fails miserably to explain or promote Test Driven Development in Team System](https://osherove.com/blog/2005/11/23/microsoft-fails-miserably-to-explain-or-promote-test-driven.html) - Nov 22, 2005 ### [QA Podcast: The Journey From Business Needs to Test and User Acceptance](https://osherove.com/blog/2005/11/22/qa-podcast-the-journey-from-business-needs-to-test-and-user.html) --- title: "Microsoft fails miserably to explain or promote Test Driven Development in Team System" url: "https://osherove.com/blog/2005/11/23/microsoft-fails-miserably-to-explain-or-promote-test-driven.md" canonical: "https://osherove.com/blog/2005/11/23/microsoft-fails-miserably-to-explain-or-promote-test-driven.html" published: "2005-11-23T07:10:00" updated: "2005-11-23T07:10:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Update : Looks like they're working on fixing it as we speak. Update 2 : It's now obsolete. Going to the link provides and empty article. Microsoft publishes it's own version of Guidelines for Test-Driven Development…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft fails miserably to explain or promote Test Driven Development in Team System By Roy Osherove November 23, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published November 23, 2005; technical details may be outdated. _**Update**: Looks like [they're working on fixing it](http://blogs.msdn.com/robcaron/archive/2005/11/22/496086.aspx) as we speak._ _**Update 2**: It's now obsolete. Going to the link provides and empty article._ --- Microsoft publishes it's own version of [Guidelines for Test-Driven Development article](http://msdn2.microsoft.com/en-us/library/ms182521.aspx), and seems to miss the point completely. If you want to learn what TDD really is, **do not read that article**, as it will confuse and lead you in the wrong direction. Just Google for it and you'll find lots of very good simple explanations, and [guidelines for writing unit tests correctly](http://weblogs.asp.net/rosherove/category/9834.aspx?Show=All) to make them last. [![](https://osherove.com/img/wb/0368c897_files.osherove.com_images_badrating1.gif)](http://msdn2.microsoft.com/en-us/library/ms182521.aspx) Someone over there at MSDN messed up and didn't do even that. They seem to think that the fact that you can "generate test method stubs automatically from **existing** code" makes you test-driven. That is wrong on many levels. "Test Driven" means your tests drive the creation of code. Even empty methods should be written before a test is run or compiled. When there is no existing code you are free to write tests that: 1\. call the method to be created the way \*you\* would want to call it, and not the way you already implemented it 2\. written one by one and them implemented to pass instead of writing many many tests only to figure out a problem in the design which renders half of them useless down the line. 3\. make you think more about the problem domain instead of "fill in the blanks" sort of thinking **Do Microsoft's tools actually support TDD?** No and yes. The "Quality tools" in VS 2005 indeed provide means to write unit tests, but in no way provide the means to write in a test-driven fashion. The **only** feature that remotely supports test-driven development is the refactoring support in C# and VB.NET, and especially the "Create method stub" smart-tag which lets you create a method stub from a call to a method which does not exist. That hardly enough, but its a start. Automatic test generation does allow however creating test stubs for existing code (i.e. "legacy code"), which is \*something\*. Testing legacy code is even harder, and most definitely you'd want to write tests for legacy code one by one, and most times you won't be able to call any more than a few methods on an existing class, let alone be able to call all the methods on many classes, since they have so many dependencies on other classes its not even funny. You''ll find that **generating many test method stubs is usually the least helpful thing to do in any unit-testing scenario**, let alone test-driven development, yet Microsoft toots it as one of the enabling features for TDD in Team System. That's an insult to the reader's intelligence and frankly, annoys me a lot. I do see good things in VSTS. The fact that it brings Unit Tests to the mainstream tools of .NET developers is **huge**. Java developers have had this support in their IDEs for years, and now that it's coming to Microsoft, some things will definitely change for the better. but this is just a marketing guy or an intern trying to point a pig with lipstick. Don't sell something it's not. You're embarrassing me and all the other folks who actually try to talk people into doing TDD, and will want to use VSTS to do it. **Where can I read more on this?** I'll point you to two places which talk about this and how MS is making itself look totally clueless when it comes to TDD, which is not the case, since there are some very good people working there which actually know their stuff. The only thing left now is to remove the offending MSDN post, and hope that the Google archives somehow spit it out of their system. no one should even **accidentally** come across that article. [Scott Bellware](http://codebetter.com/blogs/scott.bellware/archive/2005/11/21/134910.aspx)(contains lots of references to other bloggers and what they had to say): _"Rather than shape up Visual Studio to be amenable to Test-Driven Development, and in its ignorance of the nature of Test-Driven Development, Microsoft’s marketing people have simply tried to snow job the developer community into swallowing a wholly different definition of Test-Driven Development. And the very text outlining Microsoft’s understanding of Test-Driven Development betrays its almost complete ignorance of why Test-Driven Development is effective and why it is practiced in the way that it is._ _So, this is for the folks at MSDN. Listen up… you’ve already embarrassed yourself once, and you’ve embarrassed your insider and MVP communities by association this time as well.._ [Larkware](http://www.larkware.com/dg4/TheDailyGrind759.html): _"Microsoft really needs to do a couple of things here. First, they need to yank the offending content from MSDN before any more people notice how stupid they look. Second, some of the more prominent Microsoft agile bloggers need to step up to the plate to explain what they're doing to evangelize within the company so that this sort of thing is less likely to happen again in the future. "_ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 24, 2005 ### [Test-First vs. Implementation-First : What Microsoft really meant](https://osherove.com/blog/2005/11/24/test-first-vs-implementation-first-what-microsoft-really-mea.html) - Nov 23, 2005 ### [Webcast: Agile and eXtreme Programming from patterns & practices (Level 200)](https://osherove.com/blog/2005/11/23/webcast-agile-and-extreme-programming-from-patterns-amp-prac.html) - Nov 22, 2005 ### [QA Podcast: The Journey From Business Needs to Test and User Acceptance](https://osherove.com/blog/2005/11/22/qa-podcast-the-journey-from-business-needs-to-test-and-user.html) - Nov 21, 2005 ### [Slides Available for my talks on C# 2.0, LINQ, Agile Methodologies and TDD Best Practices](https://osherove.com/blog/2005/11/21/slides-available-for-my-talks-on-c-20-linq-agile-methodologi.html) --- title: "QA Podcast: The Journey From Business Needs to Test and User Acceptance" url: "https://osherove.com/blog/2005/11/22/qa-podcast-the-journey-from-business-needs-to-test-and-user.md" canonical: "https://osherove.com/blog/2005/11/22/qa-podcast-the-journey-from-business-needs-to-test-and-user.html" published: "2005-11-22T19:35:00" updated: "2005-11-22T19:35:00" tags: ["Agile Related", "Project Management"] author: "Roy Osherove" description: "Got this in the emails, and it sounds itneresting: \"Hi Roy, Just a quick note to say that I thought you might be interested in this recent podcast we completed, entitled \"The Journey From Business Needs to Test and User…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # QA Podcast: The Journey From Business Needs to Test and User Acceptance By Roy Osherove November 22, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Project Management](https://osherove.com/blog/category/project-management) **Historical article** · Originally published November 22, 2005; technical details may be outdated. Got this in the emails, and it sounds itneresting: "Hi Roy, Just a quick note to say that I thought you might be interested in this recent podcast we completed, entitled "The Journey From Business Needs to Test and User Acceptance". It's at: [http://www.qapodcast.com/news/2005/11/18/qa-podcast-8-the-journey-from-business-needs-to-test-and-user-acceptance-with-fergal-mcgovern](http://www.qapodcast.com/news/2005/11/18/qa-podcast-8-the-journey-from-business-needs-to-test-and-user-acceptance-with-fergal-mcgovern "http") It touches on Agile development and XP. Our next session is scheduled with Kent Beck, so you might be interested in that one as well. Cheers. DB." 23 minutes, should be fun. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 23, 2005 ### [Webcast: Agile and eXtreme Programming from patterns & practices (Level 200)](https://osherove.com/blog/2005/11/23/webcast-agile-and-extreme-programming-from-patterns-amp-prac.html) - Nov 23, 2005 ### [Microsoft fails miserably to explain or promote Test Driven Development in Team System](https://osherove.com/blog/2005/11/23/microsoft-fails-miserably-to-explain-or-promote-test-driven.html) - Nov 21, 2005 ### [Slides Available for my talks on C# 2.0, LINQ, Agile Methodologies and TDD Best Practices](https://osherove.com/blog/2005/11/21/slides-available-for-my-talks-on-c-20-linq-agile-methodologi.html) - Nov 21, 2005 ### [I'll be speaking at Oracle Week \[TDD Intro and Best Practices\]](https://osherove.com/blog/2005/11/21/ill-be-speaking-at-oracle-week-tdd-intro-and-best-practices.html) --- title: "Experiment: Free advertising on this blog" url: "https://osherove.com/blog/2005/11/21/experiment-free-advertising-on-this-blog.md" canonical: "https://osherove.com/blog/2005/11/21/experiment-free-advertising-on-this-blog.html" published: "2005-11-21T15:55:00" updated: "2005-11-21T15:55:00" tags: ["Cool sites"] author: "Roy Osherove" description: "Update : Already got two- . 1 to go... Let's make this more interesting. If you submit an ad without the offer code (not free), I'll get rid of the Google ads today and your ad stays on top for the duration requested (1…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Experiment: Free advertising on this blog By Roy Osherove November 21, 2005 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published November 21, 2005; technical details may be outdated. _**Update:** Already got two- . 1 to go..._ _Let's make this more interesting. If you submit an ad **without** the offer code (not free), I'll get rid of the Google ads **today** and your ad stays on top for the duration requested (1 week - 3 months), meaning it stays visible **without scrolling** on every page of this blog._ I'm going to try a little experiment. Hopefully, this should benefit everyone involved. I'm going to allow targeted advertising on my blog, **for free,** for a period of 2 weeks. If all goes well, I'll get rid of Google ads, and only keep BlogAds (so only one ad will be on the blog at all times) **Why?** I could use the money to buy books online, pay for the various materials I purchase and basically pay for the time I spend on this blog. Yes, I'd spend the time anyway, but it would be nice to have some virtual cash to spend at Amazon or eBay for it, so I can get interesting stuff to talk about on the blog and to use in my personal life. Hopefully, the readers will like the ads and click on them, and I can prove that the ads are actually good enough to publish, and are not too crappy for this blog, and prove to advertisers that my blog is worth advertising on. Hopefully, the advertisers will realize that they are getting good hits and will want to continue to put up ads out of their own pocket when the two weeks are over. **How?** If you're selling a product, book or cool website that you think might be related to anyone reading this blog, this is your chance to put up an ad that will appear on the top left of this blog, right below the Google Ads (The ad for The Regulator is an example). **The ad only goes up if I personally believe the product suggested is of any value,** so that the readers know that any ad put up here is my own personal choice. Go to this link: [http://www.blogads.com/spzptifspwfdpn/iserializable/advertise](http://www.blogads.com/spzptifspwfdpn/iserializable/advertise) and put up your ad as a suggestion. if/when I approve it, it will appear immediately. **Use the following offer code** on the page to allow free submission: **i41magile** **The first 3 advertisers** will get 2 weeks free (no need to order more than 2 weeks. No money actually has to be paid, or reimbursed).  This offer is valid until the end of this month (December 1st 00:00 GMT+2) **What?** I'm only publishing stuff I can personally attest to. For example, Reshaper, Code Smart, FinalBuilder. If any of these companies approached me with an ad, they would get one (hint!). If you have an interesting book, website or blog, developer tool, addin, IDE or anything to do with .NET or agile development I might be interested in publishing it. For more information contact me directly at **Roy at Osherove.com** . Let's see if the experiment works. ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Feb 1, 2006 ### [Finally a "stable enough" build of Resharper 2.0 Alpha?](https://osherove.com/blog/2006/2/1/finally-a-quotstable-enoughquot-build-of-resharper-20-alpha.html) - Dec 6, 2005 ### [Nice audio recordings about (Agile) management practices](https://osherove.com/blog/2005/12/6/nice-audio-recordings-about-agile-management-practices.html) - Jul 1, 2005 ### [How to see the TechEd US sessions online](https://osherove.com/blog/2005/7/1/how-to-see-the-teched-us-sessions-online.html) - Jun 20, 2005 ### [Nice Free Stock Photos site](https://osherove.com/blog/2005/6/20/nice-free-stock-photos-site.html) --- title: "Taken the MS Israel Speaker Challenge? Omer did." url: "https://osherove.com/blog/2005/11/21/taken-the-ms-israel-speaker-challenge-omer-did.md" canonical: "https://osherove.com/blog/2005/11/21/taken-the-ms-israel-speaker-challenge-omer-did.html" published: "2005-11-21T15:03:00" updated: "2005-11-21T15:03:00" tags: ["Community"] author: "Roy Osherove" description: "Good luck to Omer . He's taken the MS Israel \" Looking for a speaker \" (registration seems to be closed by now) challenge and is waiting for any results. From the technical side, I *know* he knows his stuff. On the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Taken the MS Israel Speaker Challenge? Omer did. By Roy Osherove November 21, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published November 21, 2005; technical details may be outdated. [Good luck to Omer](http://weblogs.asp.net/OKloeten/archive/2005/11/20/431011.aspx). He's taken the MS Israel "[Looking for a speaker](http://www.microsoft.com/israel/traincert/stars/)" _(registration seems to be closed by now)_ challenge and is waiting for any results. From the technical side, I \*know\* he knows his stuff. On the presentation side, I don't really know, but I hope he's coming out on top. I could use him in some lectures in various user groups... Speaking of unrelated things: [here's an Israeli Java  Developer's blog](http://javachaos.blogspot.com/). Just because it seems nice. ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Dec 1, 2005 ### [Raise your hand if you want an interview with Jamie Cansdale (the NUnit Addin guy)](https://osherove.com/blog/2005/12/1/raise-your-hand-if-you-want-an-interview-with-jamie-cansdale.html) - Nov 28, 2005 ### [Agile Israel meets today! The Planning Game](https://osherove.com/blog/2005/11/28/agile-israel-meets-today-the-planning-game.html) - Nov 21, 2005 ### [Slides Available for my talks on C# 2.0, LINQ, Agile Methodologies and TDD Best Practices](https://osherove.com/blog/2005/11/21/slides-available-for-my-talks-on-c-20-linq-agile-methodologi.html) - Nov 21, 2005 ### [November at Agile Israel - The XP Planning Game](https://osherove.com/blog/2005/11/21/november-at-agile-israel-the-xp-planning-game.html) --- title: "Slides Available for my talks on C# 2.0, LINQ, Agile Methodologies and TDD Best Practices" url: "https://osherove.com/blog/2005/11/21/slides-available-for-my-talks-on-c-20-linq-agile-methodologi.md" canonical: "https://osherove.com/blog/2005/11/21/slides-available-for-my-talks-on-c-20-linq-agile-methodologi.html" published: "2005-11-21T13:37:00" updated: "2005-11-21T13:37:00" tags: [".Net 2.0", "Agile Related", "Community"] author: "Roy Osherove" description: "Here are the slides for the IVCUG Talk I did last week. The slide topics were \"What's new and cool in C# 2.0 and Visual Studio 2005\" and \"Language Integrated Query\".…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Slides Available for my talks on C\# 2.0, LINQ, Agile Methodologies and TDD Best Practices By Roy Osherove November 21, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published November 21, 2005; technical details may be outdated. Here are the slides for the IVCUG Talk I did last week. The slide topics were "What's new and cool in C# 2.0 and Visual Studio 2005" and "Language Integrated Query". [http://TeamAgile.com/Downloads/IVCUG\_Osherove\_16-11-05.zip](http://teamagile.com/Downloads/IVCUG_Osherove_16-11-05.zip)  (1 MB) Also, I was asked if I could provide the slides for my talks at INDA Ireland about TDD best practices and Agile methodologies. Here they are: [http://TeamAgile.com/Downloads/Inda\_Osherove\_5-8-05.ZIP](http://teamagile.com/Downloads/Inda_Osherove_5-8-05.ZIP)  (130 k) ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Nov 26, 2005 ### [Announcing Regex Kit: Regular Expression Visualizers for VS 2005](https://osherove.com/blog/2005/11/26/announcing-regex-kit-regular-expression-visualizers-for-vs-2.html) - Nov 26, 2005 ### [SQL 2005 management studio lacks.. lots of stuff.](https://osherove.com/blog/2005/11/26/sql-2005-management-studio-lacks-lots-of-stuff.html) - Nov 12, 2005 ### [Test Driven .NET's new version supports all versions of VS 2005 including Express](https://osherove.com/blog/2005/11/12/test-driven-nets-new-version-supports-all-versions-of-vs-200.html) - Nov 10, 2005 ### [Cool Error Correction Dialog in VS 2005](https://osherove.com/blog/2005/11/10/cool-error-correction-dialog-in-vs-2005.html) --- title: "I'll be speaking at Oracle Week [TDD Intro and Best Practices]" url: "https://osherove.com/blog/2005/11/21/ill-be-speaking-at-oracle-week-tdd-intro-and-best-practices.md" canonical: "https://osherove.com/blog/2005/11/21/ill-be-speaking-at-oracle-week-tdd-intro-and-best-practices.html" published: "2005-11-21T13:05:00" updated: "2005-11-21T13:05:00" tags: ["Agile Related"] author: "Roy Osherove" description: "I'll be speaking at OracleWeek in Israel which takes place from the 27th for 5 full days. My talk will be on day 2, on the 28th, from 10.45 to 12.30 and it will be about Test Driven Development Intro and Best Practices.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'll be speaking at Oracle Week \[TDD Intro and Best Practices\] By Roy Osherove November 21, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published November 21, 2005; technical details may be outdated. I'll be speaking at [OracleWeek](http://www.oracleweek.com/) in Israel which takes place from the 27th for 5 full days. My talk will be on day 2, on the 28th, from 10.45 to 12.30 and it will be about Test Driven Development Intro and Best Practices. If you're planning to go to Oracle Week, come by and say hi! [Here's the link](http://www.oracleweek.com/view_seminar.php?seminar_number=9114) with my talk details (and the seminar details) The presentation is meant for developers, team leads and testers. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 22, 2005 ### [QA Podcast: The Journey From Business Needs to Test and User Acceptance](https://osherove.com/blog/2005/11/22/qa-podcast-the-journey-from-business-needs-to-test-and-user.html) - Nov 21, 2005 ### [Slides Available for my talks on C# 2.0, LINQ, Agile Methodologies and TDD Best Practices](https://osherove.com/blog/2005/11/21/slides-available-for-my-talks-on-c-20-linq-agile-methodologi.html) - Nov 21, 2005 ### [November at Agile Israel - The XP Planning Game](https://osherove.com/blog/2005/11/21/november-at-agile-israel-the-xp-planning-game.html) - Nov 16, 2005 ### [Agile Dilbert](https://osherove.com/blog/2005/11/16/agile-dilbert.html) --- title: "November at Agile Israel - The XP Planning Game" url: "https://osherove.com/blog/2005/11/21/november-at-agile-israel-the-xp-planning-game.md" canonical: "https://osherove.com/blog/2005/11/21/november-at-agile-israel-the-xp-planning-game.html" published: "2005-11-21T12:53:00" updated: "2005-11-21T12:53:00" tags: ["Agile Related", "Community"] author: "Roy Osherove" description: "The next meeting will be held on the 28th of this Month, Monday. For session and speaker details go the the event page . This month's meeting will be dedicated to \"The Planning Game\", held by Amir Kolsky. In the first…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # November at Agile Israel - The XP Planning Game By Roy Osherove November 21, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published November 21, 2005; technical details may be outdated. **The next meeting will be held on the 28th of this Month, Monday.** For session and speaker details go the the event page. This month's meeting will be dedicated to "The Planning Game", held by Amir Kolsky. In the first part Amir will talk about:       "The planning game" - How to plan releases and iterations in extreme programming. The division of responsibility and the roles played by the participants in the game. We will address the following issues: 1\. Responsibilities and consequences 2\. Release stories, iteration stories and tasks 3\. How to estimate release and iteration stories 4\. Tracking mechanisms. The second part of the meeting we will attempt to play the game with the attendees  **Agenda:** 17:30 - 18:00 - **Arrival & Registration** 18:00 - 19:15 - **The Planning Game – Amir Kolsky** **break** 19:30 - 20:45 – **Play the Game - Amir Kolsky** ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 21, 2005 ### [Slides Available for my talks on C# 2.0, LINQ, Agile Methodologies and TDD Best Practices](https://osherove.com/blog/2005/11/21/slides-available-for-my-talks-on-c-20-linq-agile-methodologi.html) - Nov 21, 2005 ### [I'll be speaking at Oracle Week \[TDD Intro and Best Practices\]](https://osherove.com/blog/2005/11/21/ill-be-speaking-at-oracle-week-tdd-intro-and-best-practices.html) - Nov 16, 2005 ### [Agile Dilbert](https://osherove.com/blog/2005/11/16/agile-dilbert.html) - Nov 9, 2005 ### [The Agile Blog](https://osherove.com/blog/2005/11/9/the-agile-blog.html) --- title: "Good technology audio I've been listening to" url: "https://osherove.com/blog/2005/11/16/good-technology-audio-ive-been-listening-to.md" canonical: "https://osherove.com/blog/2005/11/16/good-technology-audio-ive-been-listening-to.html" published: "2005-11-16T19:36:00" updated: "2005-11-16T19:36:00" tags: ["Blogging"] author: "Roy Osherove" description: "Here's the stuff I've been listening to in my car lately. It's very geeky. Beware. Rick Rashid - From the Labs at Microsoft Research - some very cool stuff. Trent Henry - Enterprise Security Architecture kinda of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good technology audio I've been listening to By Roy Osherove November 16, 2005 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published November 16, 2005; technical details may be outdated. Here's the stuff I've been listening to in my car lately. It's very geeky. Beware. [Rick Rashid - From the Labs at Microsoft Research](http://www.itconversations.com/shows/detail451.html) - some very cool stuff. [Trent Henry - Enterprise Security Architecture](http://www.itconversations.com/shows/detail692.html)  kinda of "heavy" but some good stuff in there. [Peter Norvig - Inside Google](http://www.itconversations.com/shows/detail453.html) -  need I say more? Good stuff coming from Google Labs [David Fogel - Accelerating Problem Solving](http://www.itconversations.com/shows/detail718.html) - some amazing talk about machine learning algorithms [Paul Graham on Business and Open Source](http://www.itconversations.com/shows/detail657.html)  very insightful [Ray Kurzweil](http://www.itconversations.com/shows/detail755.html) - "When Humans Transcend Biology" a totally futuristic talk, with lots of interesting questions to think about [LugRadio](http://www.lugradio.org/episodes/37) - Funny show about Linux, but very very funny. What [DotNetRocks](http://www.dotnetrocks.com/) \*used\* to be. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Feb 8, 2013 ### [When I fight with legacy code](https://osherove.com/blog/2013/2/8/when-i-fight-with-legacy-code.html) - Feb 2, 2006 ### [Read HackNot](https://osherove.com/blog/2006/2/2/read-hacknot.html) - Nov 5, 2005 ### [Top 31 weblogs.asp.net blogs to subsrcibe to](https://osherove.com/blog/2005/11/5/top-31-weblogsaspnet-blogs-to-subsrcibe-to.html) - Aug 31, 2005 ### [Another Israeli .NET Blogger - Ilan Assayag](https://osherove.com/blog/2005/8/31/another-israeli-net-blogger-ilan-assayag.html) --- title: "[Larkware Contest Winner] Snapper: Snap your daily computer usage" url: "https://osherove.com/blog/2005/11/16/larkware-contest-winner-snapper-snap-your-daily-computer-usa.md" canonical: "https://osherove.com/blog/2005/11/16/larkware-contest-winner-snapper-snap-your-daily-computer-usa.html" published: "2005-11-16T19:12:00" updated: "2005-11-16T19:12:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "The Larkware Coding Contest came to an end this week , and boy, were they giving out some grand prizes. As a judge I couldn't participate in it, but I did get to check out all the cool stuff. The first place goes to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Larkware Contest Winner\] Snapper: Snap your daily computer usage By Roy Osherove November 16, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 16, 2005; technical details may be outdated. The [Larkware Coding Contest came to an end this week](http://www.larkware.com/contests/contest2005winners.html), and boy, were they giving out some grand prizes. As a judge I couldn't participate in it, but I did get to check out all the cool stuff. The **first place** goes to Snapper (By [Leon Bambrick](http://secretgeek.net/) & Atli Björgvin Oddsson) , which simply sits in the tray and captures your daily computer activities into images ever X seconds. Then you can looks back at your day to remember what you've done for the hourly report. I like the concept, especially since I was listening the other day to an [ITConversations](http://www.itconversations.com/) recorded show regarding [cool stuff coming from the Microsoft Research Labs](http://www.itconversations.com/shows/detail451.html). One of the things mentioned there is a "life recorder" which you wear around your neck and it takes pictures and records sound based on various events. Very cool. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Nov 30, 2005 ### [Ask The Pros: Debugging Tips](https://osherove.com/blog/2005/11/30/ask-the-pros-debugging-tips.html) - Nov 26, 2005 ### [Announcing Regex Kit: Regular Expression Visualizers for VS 2005](https://osherove.com/blog/2005/11/26/announcing-regex-kit-regular-expression-visualizers-for-vs-2.html) - Nov 12, 2005 ### [Test Driven .NET's new version supports all versions of VS 2005 including Express](https://osherove.com/blog/2005/11/12/test-driven-nets-new-version-supports-all-versions-of-vs-200.html) - Nov 3, 2005 ### ["Ask The Pros" article about favorite .NET addins at VisualStudioHacks.Com](https://osherove.com/blog/2005/11/3/quotask-the-prosquot-article-about-favorite-net-addins-at-vi.html) --- title: "Agile Dilbert" url: "https://osherove.com/blog/2005/11/16/agile-dilbert.md" canonical: "https://osherove.com/blog/2005/11/16/agile-dilbert.html" published: "2005-11-16T18:45:00" updated: "2005-11-16T18:45:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Agile Dilbert: a post by Roy Osherove." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Dilbert By Roy Osherove November 16, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published November 16, 2005; technical details may be outdated. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 21, 2005 ### [I'll be speaking at Oracle Week \[TDD Intro and Best Practices\]](https://osherove.com/blog/2005/11/21/ill-be-speaking-at-oracle-week-tdd-intro-and-best-practices.html) - Nov 21, 2005 ### [November at Agile Israel - The XP Planning Game](https://osherove.com/blog/2005/11/21/november-at-agile-israel-the-xp-planning-game.html) - Nov 9, 2005 ### [The Agile Blog](https://osherove.com/blog/2005/11/9/the-agile-blog.html) - Oct 16, 2005 ### [My Agile talk at Ireland Devs group finally has permanent links](https://osherove.com/blog/2005/10/16/my-agile-talk-at-ireland-devs-group-finally-has-permanent-li.html) --- title: "Be an MS Paint MVP" url: "https://osherove.com/blog/2005/11/14/be-an-ms-paint-mvp.md" canonical: "https://osherove.com/blog/2005/11/14/be-an-ms-paint-mvp.html" published: "2005-11-14T07:30:00" updated: "2005-11-14T07:30:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Note: This whole post is under the assumption that this guy is not sarcastic to the point that nobody gets it. Looks like you can get on the MVP program by drawing a nice icon these days. Seriously, this guy just got…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Be an MS Paint MVP By Roy Osherove November 14, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 14, 2005; technical details may be outdated. _Note: This whole post is under the assumption that this guy is not sarcastic to the point that nobody gets it._ Looks like you can get [on the MVP program by drawing a nice icon these days.](http://weblogs.asp.net/Alex_Papadimoulis/archive/2005/11/13/430478.aspx) Seriously, this guy just got his MS Paint MVP award, and has been a big help in the MSPaint newsgroups which is what the MVP program is all about - helping the community not matter what tool they use (even though it sounds funny to say that about MS Paint) So why am I pointing to his post? well, it's funny. Check out the "HOW TO" samples later in his post. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 24, 2005 ### [\[OT\] MSDN Wars? Part 1?? The Movie???](https://osherove.com/blog/2005/11/24/ot-msdn-wars-part-1-the-movie.html) - Nov 23, 2005 ### [Has Microsoft screwed up with VS 2005, or is it a perception problem? Some thoughts.](https://osherove.com/blog/2005/11/23/has-microsoft-screwed-up-with-vs-2005-or-is-it-a-perception.html) - Nov 10, 2005 ### [The unbearable ease of domain names](https://osherove.com/blog/2005/11/10/the-unbearable-ease-of-domain-names.html) - Nov 5, 2005 ### [Problem creating mail enabled Contact on Exchange 2003](https://osherove.com/blog/2005/11/5/problem-creating-mail-enabled-contact-on-exchange-2003.html) --- title: "Test Driven .NET's new version supports all versions of VS 2005 including Express" url: "https://osherove.com/blog/2005/11/12/test-driven-nets-new-version-supports-all-versions-of-vs-200.md" canonical: "https://osherove.com/blog/2005/11/12/test-driven-nets-new-version-supports-all-versions-of-vs-200.html" published: "2005-11-12T18:27:00" updated: "2005-11-12T18:27:00" tags: [".Net 2.0", "Cool Tools"] author: "Roy Osherove" description: "Jamie Cansdale is a a pretty sharp guy. He's released the latest version of TestDriven.NET, one of the most productive addins for testing and debugging your code, and it works with Visual Studio 2005. Not only does it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven .NET's new version supports all versions of VS 2005 including Express By Roy Osherove November 12, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 12, 2005; technical details may be outdated. [Jamie Cansdale](http://weblogs.asp.net/nunitaddin/) is a a pretty sharp guy. He's released the latest version of TestDriven.NET, one of the most productive addins for testing and debugging your code, and it works with Visual Studio 2005. Not only does it work with the Pro versions of VS 2005, it also works with the  **Express** versions of VB and C#. **That's in spite of the fact the the Express versions don't support the ability to host add-ins** :) The clever dude figured out a way to "trick" VS 2005 into hosting his Add-in in Express, which is very cool, and will help lots of developers. If you're planning to work with TD.NET with an express Version of Visual Studio, you should know theres a small caveat with it - the Code file must be "touched" first before the addin is available. Jamie has posted a specific movie showing exactly how to install and enable TD.NET in an Express edition. [Watch the "How To" here](http://www.mutantdesign.co.uk/demos/VCSExpress.html). You can download [TD.NET](http://www.testdriven.net/) from the main site, or through FolderShare.com, [where Jamie is hosting the latest version directly](http://weblogs.asp.net/nunitaddin/archive/2005/11/07/429774.aspx) (the main site requires registration, FolderShare does not) ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Nov 26, 2005 ### [SQL 2005 management studio lacks.. lots of stuff.](https://osherove.com/blog/2005/11/26/sql-2005-management-studio-lacks-lots-of-stuff.html) - Nov 21, 2005 ### [Slides Available for my talks on C# 2.0, LINQ, Agile Methodologies and TDD Best Practices](https://osherove.com/blog/2005/11/21/slides-available-for-my-talks-on-c-20-linq-agile-methodologi.html) - Nov 10, 2005 ### [Cool Error Correction Dialog in VS 2005](https://osherove.com/blog/2005/11/10/cool-error-correction-dialog-in-vs-2005.html) - Nov 10, 2005 ### [Microsoft solves my RTM Bug (By Design..)](https://osherove.com/blog/2005/11/10/microsoft-solves-my-rtm-bug-by-design.html) --- title: "The unbearable ease of domain names" url: "https://osherove.com/blog/2005/11/10/the-unbearable-ease-of-domain-names.md" canonical: "https://osherove.com/blog/2005/11/10/the-unbearable-ease-of-domain-names.html" published: "2005-11-10T23:45:00" updated: "2005-11-10T23:45:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It's almost ridiculous how easy it's become to get your own domain name. So easy in fact, that when I found out that the business cards I had ordered had my blog address wrong becuase of my own mistake, \"ISeria z…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The unbearable ease of domain names By Roy Osherove November 10, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 10, 2005; technical details may be outdated. It's almost ridiculous how easy it's become to get your own domain name. So easy in fact, that when I found out that the business cards I had ordered had my blog address wrong becuase of my own mistake, "ISeria**z**liable.com" I simply spent $8 at GoDaddy.com to purchase a domain name for a year that will automatically forward to ISerializable.com (which forwards to weblogs.asp.net/rosherove ) Some may call it a waste of money, I call it "Saving money on extra business cards". ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 23, 2005 ### [Has Microsoft screwed up with VS 2005, or is it a perception problem? Some thoughts.](https://osherove.com/blog/2005/11/23/has-microsoft-screwed-up-with-vs-2005-or-is-it-a-perception.html) - Nov 14, 2005 ### [Be an MS Paint MVP](https://osherove.com/blog/2005/11/14/be-an-ms-paint-mvp.html) - Nov 5, 2005 ### [Problem creating mail enabled Contact on Exchange 2003](https://osherove.com/blog/2005/11/5/problem-creating-mail-enabled-contact-on-exchange-2003.html) - Nov 5, 2005 ### [Google AdSense Referral Program Open to the public](https://osherove.com/blog/2005/11/5/google-adsense-referral-program-open-to-the-public.html) --- title: "Cool Error Correction Dialog in VS 2005" url: "https://osherove.com/blog/2005/11/10/cool-error-correction-dialog-in-vs-2005.md" canonical: "https://osherove.com/blog/2005/11/10/cool-error-correction-dialog-in-vs-2005.html" published: "2005-11-10T19:12:00" updated: "2005-11-10T19:12:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "I didn't know this, and this is something I could have used ... \" For most of the System errors that the compiler is reporting if you place your cursor over the little glyph at the end of the error squiqqle you get an…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool Error Correction Dialog in VS 2005 By Roy Osherove November 10, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published November 10, 2005; technical details may be outdated. I didn't know this, and this is something I [could have used](http://weblogs.asp.net/rosherove/archive/2005/11/04/429455.aspx)... " For most of the System errors that the compiler is reporting **if you place your cursor over the little glyph at the end of the error squiqqle you get an Error Correction dialogue** which offers up the fix to add Global as the very first option." Cameron McCol ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Nov 21, 2005 ### [Slides Available for my talks on C# 2.0, LINQ, Agile Methodologies and TDD Best Practices](https://osherove.com/blog/2005/11/21/slides-available-for-my-talks-on-c-20-linq-agile-methodologi.html) - Nov 12, 2005 ### [Test Driven .NET's new version supports all versions of VS 2005 including Express](https://osherove.com/blog/2005/11/12/test-driven-nets-new-version-supports-all-versions-of-vs-200.html) - Nov 10, 2005 ### [Microsoft solves my RTM Bug (By Design..)](https://osherove.com/blog/2005/11/10/microsoft-solves-my-rtm-bug-by-design.html) - Nov 9, 2005 ### [I'll be speaking at IVCUG this month: New stuff in .NET and C# 2.0 + Deep LINQ Preview](https://osherove.com/blog/2005/11/9/ill-be-speaking-at-ivcug-this-month-new-stuff-in-net-and-c-2.html) --- title: "Microsoft solves my RTM Bug (By Design..)" url: "https://osherove.com/blog/2005/11/10/microsoft-solves-my-rtm-bug-by-design.md" canonical: "https://osherove.com/blog/2005/11/10/microsoft-solves-my-rtm-bug-by-design.html" published: "2005-11-10T17:09:00" updated: "2005-11-10T17:09:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "Microsoft did a hell of a job following up on the obscure bug that I posted (I'm sure that the fact the post was published on eWeek , The Register and other places helped a bit in speeding things up..) . It involved…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft solves my RTM Bug (By Design..) By Roy Osherove November 10, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published November 10, 2005; technical details may be outdated. Microsoft did a hell of a job following up on [the obscure bug that I posted](http://weblogs.asp.net/rosherove/archive/2005/11/04/429455.aspx) _(I'm sure that the fact the post was published on [eWeek](http://eweek.com/article2/0,1895,1882644,00.asp) , [The Register](http://theregister.co.uk/2005/11/09/microsoft_testers_criticism/) and [other places](http://minimsft.blogspot.com/2005/11/hey-shareholders-vs-2005-is-fantastic.html) helped a bit in speeding things up..)_. It involved lots of emails, my creating a mini-dump and FTPing it over, and sending the the full project code. But it worked. **So what was it, Roy?** It was a namespace thing. Before I give out the full answer I got, it's important to realize that even though this was something which is a "feature" rather than a bug (I screwed up namespace bindings for the compiler in my own code) it should not be this hard to understand what went wrong and how to fix this. Microsoft has promised that this specific issue and error ID will be address directly in a help topic online, which will be easily "findable" using the various search engines out there given the error description. "Hi Roy,  I took a look at your project and have found the problem.  This code will repro the problem: Namespace System.ComponentModel End Namespace Module Module1     Sub Main()         Dim x As System.Object     End Sub End Module When you declare the namespace System.ComponentModel you are really defining the namespace Global.ConsoleApplication1.System.ComponentModel assuming your project’s rootnamespace is ConsoleApplication1. Thus when the compiler try’s to bind to System.Object it will find and look inside of Global.ConsoleApplication1.System and it will now not find Object. Hence the error. If you wants to bind to the real System.Object you will have to qualify with the Global keyword to get to the right System namespace:             Dim x as Global.System.Object However, are you sure that you want to be defining your own namespaces underneath the Rootnamespace that shadow .NET Framework namespaces? **Perhaps your intention was to extend the .NET Framework namespaces. If that’s the case you need to set your Rootnamespace to blank in your project properties. This will also resolve your problem**." I highlighted the last paragraph because that's exactly what I was trying to do. This is also reproducible in C#. Like I said the main problem here was the discover-ability of the underlying problem and its solution. It shouldn't take a team of engineers (who actually built the thing) a couple of days to track down what the problem really is. How do I know this is reproducible in C#? I asked. Here's the answer I got: "Actually, the problem does exist in C#. This code will repro the problem: namespace ConsoleApplication167 {     namespace System     {     }    class Program     {         static void Main(string\[\] args)         {             object x = new System.Object();           ß-- This line will give an error         }     } }             In VB a new class or module is implicity defined inside of the Root namespace. In C# they spit the explicit Namespace for the Root Namespace. Thus if the definition of Namespace System is placed outside of the explicit Namespace ConsoleApplication67 you are extending the “real”  system namespace. But (as in the example above) if it’s placed inside of the root namespace you end up with the same problem." In the end, thanks to MS this was resolved. Good job hunting this down. ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Nov 12, 2005 ### [Test Driven .NET's new version supports all versions of VS 2005 including Express](https://osherove.com/blog/2005/11/12/test-driven-nets-new-version-supports-all-versions-of-vs-200.html) - Nov 10, 2005 ### [Cool Error Correction Dialog in VS 2005](https://osherove.com/blog/2005/11/10/cool-error-correction-dialog-in-vs-2005.html) - Nov 9, 2005 ### [I'll be speaking at IVCUG this month: New stuff in .NET and C# 2.0 + Deep LINQ Preview](https://osherove.com/blog/2005/11/9/ill-be-speaking-at-ivcug-this-month-new-stuff-in-net-and-c-2.html) - Nov 9, 2005 ### [A better BackgroundWorker : CancelImmediately and other goodies](https://osherove.com/blog/2005/11/9/a-better-backgroundworker-cancelimmediately-and-other-goodie.html) --- title: "I'll be speaking at IVCUG this month: New stuff in .NET and C# 2.0 + Deep LINQ Preview" url: "https://osherove.com/blog/2005/11/9/ill-be-speaking-at-ivcug-this-month-new-stuff-in-net-and-c-2.md" canonical: "https://osherove.com/blog/2005/11/9/ill-be-speaking-at-ivcug-this-month-new-stuff-in-net-and-c-2.html" published: "2005-11-09T22:47:00" updated: "2005-11-09T22:47:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "I'll be presenting at this month's upcoming C++/C# user's group meeting about new stuff in .NET 2.0 and a deep introduction to the LINQ project. The LINQ presentation will be different than the one I did at the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'll be speaking at IVCUG this month: New stuff in .NET and C\# 2.0 + Deep LINQ Preview By Roy Osherove November 9, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published November 9, 2005; technical details may be outdated. I'll be presenting at this month's upcoming [C++/C# user's group](http://www.comconix.com/ivcug/) meeting about new stuff in .NET 2.0 and a deep introduction to the LINQ project. The LINQ presentation will be **different**  than the one I did at the Architects user group in that I won't discuss data design patterns associated with DLINQ, but instead delve into the C# 3.0 and 2.0 features that make LINQ work under the hood, including extension methods, lambdas and more fun things! Date:    **Wednesday, November 16, 17:00 - 20:00** Place:   **Microsoft Israel**              **Hapnina 2  (Amdocs Building)**             **Ground Floor**             **Raanana** **+972 (9) 762-5100**          Parking is available at the Kurkar parking lot. Proceed straight past the traffic circle and the parking lot will be on your right. **Topics****:** **Part I: Cool new stuff in .NET 2.0 and C# 2.0** **Part II: A preview of the LINQ project: An extensible Language Integrated Query infrastructure in .NET 3.0 ** Celebrating the release of Visual Studio 2005 and the .NET Framework 2, this month’s meeting will consist of two parts: **Part I: Cool new stuff in .NET 2.0  and C# 2.0** We'll take a look at some of the newest additions to the C# languages including anonymous methods, generics (part of the framework), iterators, partial classes, and more We'll also take a look at the new enhanced VS 2005 IDE including the Winforms designer, data binding to objects and other nice stuff. Roy will present his top 10 list of favorite new features to look for in the IDE for productivity enhancements.  **Part II: A preview of the LINQ project: An extensible Language Integrated Query infrastructure in .NET 3.0 ** The LINQ Project is a codename for a set of extensions to the .NET Framework that encompass language-integrated query, set, and transform operations. It extends C# and Visual Basic with native language syntax for queries and provides class libraries to take advantage of these capabilities. Find out about the general-purpose query facilities added to the .NET Framework that apply to all sources of information, including (but not limited to) relational or XML data. We'll also have some very cool demos of this LINQ in action. If time permits, we'll delve in to how LINQ works underneath, including some cool C# 2.0 features such as anonymous types, lambdas, extension methods and more. A geek fest! For more information about this topic, browse to: [http://msdn.microsoft.com/netframework/future/linq/](http://msdn.microsoft.com/netframework/future/linq/ "http") ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Nov 10, 2005 ### [Cool Error Correction Dialog in VS 2005](https://osherove.com/blog/2005/11/10/cool-error-correction-dialog-in-vs-2005.html) - Nov 10, 2005 ### [Microsoft solves my RTM Bug (By Design..)](https://osherove.com/blog/2005/11/10/microsoft-solves-my-rtm-bug-by-design.html) - Nov 9, 2005 ### [A better BackgroundWorker : CancelImmediately and other goodies](https://osherove.com/blog/2005/11/9/a-better-backgroundworker-cancelimmediately-and-other-goodie.html) - Nov 9, 2005 ### [A better Safe Cast using Generics](https://osherove.com/blog/2005/11/9/a-better-safe-cast-using-generics.html) --- title: "The Agile Blog" url: "https://osherove.com/blog/2005/11/9/the-agile-blog.md" canonical: "https://osherove.com/blog/2005/11/9/the-agile-blog.html" published: "2005-11-09T22:34:00" updated: "2005-11-09T22:34:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Check out the Agile Blog for lots of good Agile related content. I've said this before, and I'll say it again. Rally Software are doing something right. Keep it up!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Agile Blog By Roy Osherove November 9, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published November 9, 2005; technical details may be outdated. Check out [the Agile Blog](http://www.theagileblog.com/) for lots of good Agile related content. I've said this before, and I'll say it again. Rally Software are doing something right. Keep it up! ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 21, 2005 ### [November at Agile Israel - The XP Planning Game](https://osherove.com/blog/2005/11/21/november-at-agile-israel-the-xp-planning-game.html) - Nov 16, 2005 ### [Agile Dilbert](https://osherove.com/blog/2005/11/16/agile-dilbert.html) - Oct 16, 2005 ### [My Agile talk at Ireland Devs group finally has permanent links](https://osherove.com/blog/2005/10/16/my-agile-talk-at-ireland-devs-group-finally-has-permanent-li.html) - Sep 14, 2005 ### [What 2 questions would you ask Kent Beck?](https://osherove.com/blog/2005/9/14/what-2-questions-would-you-ask-kent-beck.html) --- title: "Creating a better BackgroundWorker: CancelImmediately and other goodies" url: "https://osherove.com/blog/2005/11/9/creating-a-better-backgroundworker-cancelimmediately-and-oth.md" canonical: "https://osherove.com/blog/2005/11/9/creating-a-better-backgroundworker-cancelimmediately-and-oth.html" published: "2005-11-09T20:30:00" updated: "2005-11-09T20:30:00" tags: [] author: "Roy Osherove" description: "One of the nice new features you get in .NET 2.0 Winforms is the new BackgroundWorker component. It allows safely executing long tasks in a different thread than the GUI, while allowing an easy event-driven interface to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Creating a better BackgroundWorker: CancelImmediately and other goodies By Roy Osherove November 9, 2005 **Historical article** · Originally published November 9, 2005; technical details may be outdated. One of the nice new features you get in .NET 2.0 Winforms is the new BackgroundWorker component. It allows safely executing long tasks in a different thread than the GUI, while allowing an easy event-driven interface to perform the task and respond to events (such as detecting work progress). There are even [versions of this for .NET 1.1](http://weblogs.asp.net/rosherove/archive/2004/06/16/156948.aspx) courtesy of [Juval Lowy](http://www.idesign.net/). However, one of the things that to me still are missing with this components is support for one important key scenario. Right now the (only) scenario supported by this component is the one where the long running task to be executed is made of a series of short-term actions one after the other. For example, calling a web service multiple times, calculating stuff, getting things from the database etc.. This scenario is based on the fact that each small part of the long-running task takes a small amount of time, so that after that part is done, the code can check a “Cancel” argument on the component to see of the user wishes to cancel the task. That means that from the moment I press “cancel” on a button, nothing really happens except a flag is set, and it’s up to the application’s code to cancel; as soon as possible. That might be  half a second, it might be 10 seconds. It’s the 10 seconds thing that is problematic. Suppose most of the work in the long running task was made up of little tasks, each taking a long time? It will take a long amount of time for the application’s code to notice that a Cancel was requested by the user. In fact, it may notice a cancel request only after it finishes it’s task. Right now BackgroundWorker has only one way to cancel: “CancelAsync()”. The feature I was missing was “CancelImmediately()”.  I’ve even gotten to talk a little with **Mark Rideout**, Program Manager for the .NET Client who supported my claim that this is not possible with the current version of BackgroundWorker. _“Roy – The BackgroundWorker gets its thread from the thread pool. As such, it doesn’t manage the creation or termination of the thread nor does it expose the thread that it is using. After the BackgroundWorker completes its processing the thread is released back to the “pool” and will be terminated by the thread pool when it is no longer needed. The BackgroundWorker actually doesn’t know what thread it is running on._ _Regarding your case where you need to cancel a long running query that you don’t have control over – the BackgroundWorker doesn’t help in this case since it doesn’t know its thread. You’ll need to resort to manually creating a thread and terminating the thread. “_ Which is exactly what I’ve always had to do until now, and I didn’t want to do it again. Take The Regulator for example. It’s possible to create a Regular Expression that will run for minutes or hours and hang, a perfect example of a single blocking task that the current BW is not built for, so running it on the same thread as the GUI when testing Regex is out of the question. You \*have\* to use a different thread. I wanted to be able to do the same thing using BW. I’ve created two classes: 1. **ExtendedBackgroundWorker** - this is the one most of you will want to use 2. **BackgroundWorkerEx** - This is the one some of you might want to try if you still have some features missing Both classes are available for download in VB or C# sources. Before I get on with all the technical stuff of what it took to add this functionality and why the hell did I create two classes, download them. [Download for VB.NET](http://teamagile.com/Downloads/ExtendedBW_VB.zip) [Download for C#](http://teamagile.com/Downloads/ExtendedBW_CS.zip) **Technical babble** **The ExtendedBackgroundWorker class  - CancelImmediately and its consequences** My solution was to create a class that inherits from BackgroundWorker, and overrides the “OnDoWork” method. Since the OnDoWork method is already executing on a Thread Pool Thread, I was able to save the thread to a local variable and have the ability to call “Abort” on the thread at a user’s request. Of course, this has consequences. Calling thread.Abort throws a “ThreadAbortException” which, no matter how many times you catch it, [will always propagate to all the callers](http://www.ondotnet.com/pub/a/dotnet/2003/02/18/threadabort.html).  There is one solution to this, which worked for me in this specific scenario: Calling Thread.ResetAbort() resets the abort state and the exception is effectively “swallowed” for all the callers. That also means that the Thread actually keeps running, only this time it’s running at a point **after** the long running task has executed and aborted, effectively finishing its job (sort of like a crude “goto” statement for Multi Threading). That’s the solution I used in the component, but there is still a scenario where a user of this component will get the exception: \- if the code inside the “DoWork” event catches an “Exception”, a ThreadAbortException will also be caught. In that case, that code should have two catch clauses: one for ThreadAbortException which does nothing, simply ignores it and returns, and the other for any other exception. \- if the code inside the “DoWork” event does not catch any exception, no specific action needs to be taken. The ThreadAbortException will be caught by the component and all will be well in the world once again. The component also takes care of calling the “Completed” event in case of an immediate cancellation,. It uses reflection to bring in the local members pertaining to the async operation and invokes them accordingly. **The BackgroundWorkerEx class - Support fast Progress Reports** One thing which is \*not\* solved by my class is a limitation of the BackgroundWorker, and essentially a “bug”. If you loop quickly inside the “DoWork” method and simply call “ReportProgress” on each loop fast enough, you’ll get a thread hang. however, calling Thread.Sleep(10) before each loop fixes this problem. Mark Rideout also responded about this: _“flooding the GUI thread with progress keeps the GUI thread from being able to process paint and other windows_ _messages, so the Sleep call is the correct way to deal with this. We have documented this as well in the topic titled “How to: Run an operation in the background”_ [_http://msdn2.microsoft.com/en-us/library/hybbz6ke.aspx_](http://msdn2.microsoft.com/en-us/library/hybbz6ke.aspx)_” \[the link seems broken, see the [cached version](http://tinyurl.com/cjb4r)\]_ I wanted to try and implement this solution directly inside my new class (called ExtendedBackgroundWorker), but it was impossible to do, mainly because some of the methods I wanted to override were not virtual. So, using Reflector and the Decompiler addin for Reflector, I recreated the source for BackgroundWorker in C# and VB, and implemented this functionality myself, including the “CancelImmediately”  feature. So, with the “BackgroundWorkerEx” component, you get both features - support for fast progress reports \*and\* immediate cancellations ability. Most applications won’t need this one, but the simpler one, that inherits from BW, since most scenarios have plenty of time between ReportProgress Calls (If any), but it was a nice exercise just in case and it allowed me to study a new construct available in .NET 2.0, called the “AsyncOpreation” class. I’ll be doing a short article on that one later this week hopefully. It’s pretty darn cool. Hope you like this and that these classes help you in your efforts! --- title: "A better BackgroundWorker : CancelImmediately and other goodies" url: "https://osherove.com/blog/2005/11/9/a-better-backgroundworker-cancelimmediately-and-other-goodie.md" canonical: "https://osherove.com/blog/2005/11/9/a-better-backgroundworker-cancelimmediately-and-other-goodie.html" published: "2005-11-09T18:14:00" updated: "2005-11-09T18:14:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "One of the nice new features you get in .NET 2.0 Winforms is the new BackgroundWorker component. It allows safely executing long tasks in a different thread than the GUI, while allowing an easy event-driven interface to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A better BackgroundWorker : CancelImmediately and other goodies By Roy Osherove November 9, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published November 9, 2005; technical details may be outdated. One of the nice new features you get in .NET 2.0 Winforms is the new BackgroundWorker component. It allows safely executing long tasks in a different thread than the GUI, while allowing an easy event-driven interface to perform the task and respond to events (such as detecting work progress). There are even [versions of this for .NET 1.1](http://weblogs.asp.net/rosherove/archive/2004/06/16/156948.aspx) courtesy of [Juval Lowy](http://www.idesign.net/). One of the things it does **not** support is the ability to Cancel the running task **immediately** rather than waiting for the code to process the Cancel Request (which is vital if your “DoWork” code contains tasks that individually take a long time to process). With some Reflectoring, I was able to overcome this obstacle and provide a solution for this problem. For the full details and download in VB.NET and C#, read the full article: [Creating a better BackgroundWorker: CancelImmediately and other goodies](http://weblogs.asp.net/rosherove/articles/BackgroundWorkerEx.aspx) ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Nov 10, 2005 ### [Microsoft solves my RTM Bug (By Design..)](https://osherove.com/blog/2005/11/10/microsoft-solves-my-rtm-bug-by-design.html) - Nov 9, 2005 ### [I'll be speaking at IVCUG this month: New stuff in .NET and C# 2.0 + Deep LINQ Preview](https://osherove.com/blog/2005/11/9/ill-be-speaking-at-ivcug-this-month-new-stuff-in-net-and-c-2.html) - Nov 9, 2005 ### [A better Safe Cast using Generics](https://osherove.com/blog/2005/11/9/a-better-safe-cast-using-generics.html) - Nov 4, 2005 ### [My first real frustration with VS 2005 RTM](https://osherove.com/blog/2005/11/4/my-first-real-frustration-with-vs-2005-rtm.html) --- title: "A better Safe Cast using Generics" url: "https://osherove.com/blog/2005/11/9/a-better-safe-cast-using-generics.md" canonical: "https://osherove.com/blog/2005/11/9/a-better-safe-cast-using-generics.html" published: "2005-11-09T10:38:00" updated: "2005-11-09T10:38:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "Update : the code has changed a bit in the C# version to reflect *exactly* the same behavior as \"as\". See the comments. Here's a nice way to make something like the \"as\" word in C# apply to both value types and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A better Safe Cast using Generics By Roy Osherove November 9, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published November 9, 2005; technical details may be outdated. **Update**: the code has changed a bit in the C# version to reflect \*exactly\* the same behavior as "as". See the comments. Here's a nice way to make something like the "as" word in C# apply to both value types and reference types. It takes advantage of Generics in .NET 2.0 and the "default" word in C#, which returns the default value for a given type. The equivalent to that word in VB.NET as far as I've found is "Nothing".  With this function you can cast to any generic type you'd like, and if the value does not cast to it, you don't get an exception, but the default value for that type of object. Important note: for value type, this will cause a [boxing](http://www.c-sharpcorner.com/Code/2003/July/BoxNUnboxSSF.asp) operation to occur and a little perf hit because of two type checks. _8:_         **private** T safeCastTo**(**object obj**)** 9:         **{** 10:             **if** **(**obj == null**)** 11:             **{**                   _//same behavior as "as"_ 12:                 **return** **null;**                  _//or you could return the default value if you need to_ 12:                 //**return** **default****(**T**)****;** 13:             **}** 14:             **if** **(**!**(**obj is T**)****)** 15:             **{**                   _//same behavior as "as"_ 6:                 **return** **null;**                  _//or you could return the default value if you need to_ 12:                 //**return** **default****(**T**)****;** 17:             **}** 18:             **return** **(**T**)**obj**;** 19:         **}** Or in VB.NET: _9:_     **Function** SafeCast**(**Of T**)****(****ByVal** value **As** **Object****)** **As** T 10:         **If** value **Is** **Nothing** **Then** **Return** **Nothing** 11:         **If** TypeOf **(**value**)** **Is** T **Then** **Return** value 12:         **Return** **Nothing** 13:     **End** **Function** have fun! ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Nov 9, 2005 ### [I'll be speaking at IVCUG this month: New stuff in .NET and C# 2.0 + Deep LINQ Preview](https://osherove.com/blog/2005/11/9/ill-be-speaking-at-ivcug-this-month-new-stuff-in-net-and-c-2.html) - Nov 9, 2005 ### [A better BackgroundWorker : CancelImmediately and other goodies](https://osherove.com/blog/2005/11/9/a-better-backgroundworker-cancelimmediately-and-other-goodie.html) - Nov 4, 2005 ### [My first real frustration with VS 2005 RTM](https://osherove.com/blog/2005/11/4/my-first-real-frustration-with-vs-2005-rtm.html) - Oct 30, 2005 ### [Amazoner 1.0.1 - Larger Images for Books and a dedicated website](https://osherove.com/blog/2005/10/30/amazoner-101-larger-images-for-books-and-a-dedicated-website.html) --- title: "The Browser Book - cool bunch of cheat sheets" url: "https://osherove.com/blog/2005/11/8/the-browser-book-cool-bunch-of-cheat-sheets.md" canonical: "https://osherove.com/blog/2005/11/8/the-browser-book-cool-bunch-of-cheat-sheets.html" published: "2005-11-08T03:58:00" updated: "2005-11-08T03:58:00" tags: [] author: "Roy Osherove" description: "These guys offered to send me a sample of this book, and I like it already just based on the book's site . This looks like a cool book to have if you do any kind of web development work. It's sort of like a bunch of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Browser Book - cool bunch of cheat sheets By Roy Osherove November 8, 2005 **Historical article** · Originally published November 8, 2005; technical details may be outdated. These guys offered to send me a sample of this book, and I like it already just based on the [book's site](http://www.visibone.com/products/browserbook.html). [This looks like a cool book](http://www.visibone.com/products/browserbook.html) to have if you do any kind of web development work. It's sort of like a bunch of cheat sheets bundled together by topic, easy to search and with nice big samples of everything to do with browser programming, java script reference, code Dom reference, HTML, css, regular expressions etc.. --- title: "Predefined CodeDOM implementations for common .NET usage patterns" url: "https://osherove.com/blog/2005/11/8/predefined-codedom-implementations-for-common-net-usage-patt.md" canonical: "https://osherove.com/blog/2005/11/8/predefined-codedom-implementations-for-common-net-usage-patt.html" published: "2005-11-08T03:51:00" updated: "2005-11-08T03:51:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Omer Van Kloeten adds some predefined CodeDOM implementations for common .NET usage patterns . Very cool and pretty darn useful for anyone doing some development with the Microsoft .NET Code DOM to generate source code…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Predefined CodeDOM implementations for common .NET usage patterns By Roy Osherove November 8, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published November 8, 2005; technical details may be outdated. [Omer Van Kloeten adds some predefined CodeDOM implementations for common .NET usage patterns](http://weblogs.asp.net/okloeten/archive/2005/11/01/429153.aspx). Very cool and pretty darn useful for anyone doing some development with the Microsoft .NET Code DOM to generate source code on the fly. I've known Omer for a while now, and if there's one thing this guys knows well, it's generating code. (Of course he knows lots more, but seems like that's his passion lately) _"The CLR and other .NET code contain many recurring patterns. As these patterns appear in code, they may also appear in CodeDom, yet generating those patterns takes much work, which is quite repetitive. This library contains several pattern implementations for use in your CodeDom code."_ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 23, 2006 ### [Faster builds of web projects with VS 2005](https://osherove.com/blog/2006/9/23/faster-builds-of-web-projects-with-vs-2005.html) - May 18, 2006 ### [CLR Generics Vs. C++ Templates - some good links](https://osherove.com/blog/2006/5/18/clr-generics-vs-c-templates-some-good-links.html) - Oct 30, 2005 ### [Automating the reinvention of the wheel](https://osherove.com/blog/2005/10/30/automating-the-reinvention-of-the-wheel.html) - Oct 30, 2005 ### [Strongly Typed Reflection Calls in .NET 2.0](https://osherove.com/blog/2005/10/30/strongly-typed-reflection-calls-in-net-20.html) --- title: "Problem creating mail enabled Contact on Exchange 2003" url: "https://osherove.com/blog/2005/11/5/problem-creating-mail-enabled-contact-on-exchange-2003.md" canonical: "https://osherove.com/blog/2005/11/5/problem-creating-mail-enabled-contact-on-exchange-2003.html" published: "2005-11-05T09:05:00" updated: "2005-11-05T09:05:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I don't usually do this - use the blog as a public forum post, unless I've searched the answer in all the places I know. This one is a favor for a friend I can't seem to get done on my own.My friend is desperately…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Problem creating mail enabled Contact on Exchange 2003 By Roy Osherove November 5, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 5, 2005; technical details may be outdated. I don't usually do this - use the blog as a public forum post, unless I've searched the answer in all the places I know. This one is a favor for a friend I can't seem to get done on my own.My friend is desperately trying to solve this problem: They are trying to create a "Mail Enabled" Contact on an Exchange Server 2003 under Windows 2003 Server, using .NET 1.1. they are using this article as a base for their work: [http://www.codeproject.com/csharp/CDOExchangeCode.asp](http://www.codeproject.com/csharp/CDOExchangeCode.asp "http") However, they keep getting a "Cast is not valid" exception when trying out this line: cdoRecipient = (IMailRecipient) cdoPerson (IMailRecipient)userObj.NativeObject they get this: com error -532459699 unspecified error If Anyone has any idea why that's happening (the cast or the 2nd error) and how to do this without causing this error, feel free to post a comment here directing us to the right article/solution. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 14, 2005 ### [Be an MS Paint MVP](https://osherove.com/blog/2005/11/14/be-an-ms-paint-mvp.html) - Nov 10, 2005 ### [The unbearable ease of domain names](https://osherove.com/blog/2005/11/10/the-unbearable-ease-of-domain-names.html) - Nov 5, 2005 ### [Google AdSense Referral Program Open to the public](https://osherove.com/blog/2005/11/5/google-adsense-referral-program-open-to-the-public.html) - Oct 30, 2005 ### [My blog is not worthless after all](https://osherove.com/blog/2005/10/30/my-blog-is-not-worthless-after-all.html) --- title: "Top 31 weblogs.asp.net blogs to subsrcibe to" url: "https://osherove.com/blog/2005/11/5/top-31-weblogsaspnet-blogs-to-subsrcibe-to.md" canonical: "https://osherove.com/blog/2005/11/5/top-31-weblogsaspnet-blogs-to-subsrcibe-to.html" published: "2005-11-05T04:35:00" updated: "2005-11-05T04:35:00" tags: ["Blogging"] author: "Roy Osherove" description: "In the early days of weblogs.asp.net (when it was still called \"DotNetWeblogs\") the main page had a list of all the bloggers sorted by number of posts and last date. That made for a good way to find out which blogs are…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Top 31 weblogs.asp.net blogs to subsrcibe to By Roy Osherove November 5, 2005 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published November 5, 2005; technical details may be outdated. In the early days of weblogs.asp.net (when it was still called "DotNetWeblogs") the main page had a list of all the bloggers sorted by number of posts and last date. That made for a good way to find out which blogs are most active/have the most content/are worth subscribing to (true, some blogs are unique - small amount of posts with big value, like [Chris Brumme's blog](http://blogs.msdn.com/cbrumme/)). That's gone, I have no idea why, but if you wanted a list of top blogs to subscribe to independently of the main weblogs.asp.net feed,  [Jon Galloway posted the output of a little .NET code he wrote](http://weblogs.asp.net/jgalloway/archive/2005/11/04/429559.aspx) to calculate the blog worth of every feed on the weblogs.asp.net site. He then sorted the list by order of "worth". What you get back is is good way to get the "essential" list of bloggers which have content/links/track backs which may suggest they are worth subscribing to. Here's the final results, with the full result set [posted in Jon's post](http://weblogs.asp.net/jgalloway/archive/2005/11/04/429559.aspx), along with links (I'm glad to be among it). | Blog | Worth | | --- | --- | | [ScottGu's Blog](http://weblogs.asp.net/scottgu) | 239,929.50 | | [Rob Howard's Blog](http://weblogs.asp.net/rhoward) | 154,119.42 | | [Christian Weyer: Smells like service spirit](http://weblogs.asp.net/cweyer) | 102,746.28 | | [ISerializable - Roy Osherove's Blog](http://weblogs.asp.net/rosherove) | 88,068.24 | | [Carl Franklin](http://weblogs.asp.net/cfranklin) | 73,954.74 | | [Robert McLaws: FunWithCoding.NET](http://weblogs.asp.net/rmclaws) | 73,390.20 | | [Jan Tielens' Bloggings \[MVP\]](http://weblogs.asp.net/jan) | 72,825.66 | | [Paul Wilson's .NET Blog](http://weblogs.asp.net/pwilson) | 62,663.94 | | [Dino Esposito's WebLog](http://weblogs.asp.net/despos) | 59,841.24 | | [Wallace B. McClure](http://weblogs.asp.net/wallym/) | 49,679.52 | | [Frans Bouma's blog](http://weblogs.asp.net/fbouma) | 47,985.90 | | [JonGalloway.ToString()](http://weblogs.asp.net/jgalloway) | 46,856.82 | | [Fear and Loathing](http://weblogs.asp.net/bsimser/) (Bil Simser) | 45,727.74 | | [Jeff Key](http://weblogs.asp.net/jkey) | 45,727.74 | | [eXtensible Mind Lounge](http://weblogs.asp.net/cazzu/) (Daniel Cazzulino) | 41,775.96 | | [Datagrid Girl](http://weblogs.asp.net/datagridgirl/) | 40,646.88 | | [help.net](http://weblogs.asp.net/pleloup) | 40,082.34 | | [Fabrice's weblog](http://weblogs.asp.net/fmarguerie/) | 38,953.26 | | [Ajax.NET Professional](http://weblogs.asp.net/mschwarz/) | 37,824.18 | | [Erik Porter's Blog](http://weblogs.asp.net/eporter/) | 35,001.48 | | [Robert Hurlbut's .NET Blog](http://weblogs.asp.net/RHurlbut) | 32,743.32 | | [Christian Nagel's OneNotes](http://weblogs.asp.net/cnagel) | 31,049.70 | | [Serge van den Oever \[Macaw\]](http://weblogs.asp.net/soever/) | 29,356.08 | | [Eli Robillard's World of Blog](http://weblogs.asp.net/erobillard/). | 28,227.00 | | [#region /\* mads's thoughts \*/](http://weblogs.asp.net/mnissen/) | 27,662.46 | | [Ralf's Sudelbücher](http://weblogs.asp.net/ralfw) | 26,533.38 | | [DonXML Blog](http://weblogs.asp.net/donxml) | 25,968.84 | | [Test Driven .NET](http://weblogs.asp.net/NUnitAddin/) | 23,146.14 | | [Dev Notes](http://weblogs.asp.net/ssadasivuni) | 23,146.14 | | [Nauman Leghari's Blog](http://weblogs.asp.net/nleghari/) | 22,017.06 | | [eWorld.UI - Matt Hawley](http://weblogs.asp.net/mhawley/) | 20,887.98 | ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Feb 2, 2006 ### [Read HackNot](https://osherove.com/blog/2006/2/2/read-hacknot.html) - Nov 16, 2005 ### [Good technology audio I've been listening to](https://osherove.com/blog/2005/11/16/good-technology-audio-ive-been-listening-to.html) - Aug 31, 2005 ### [Another Israeli .NET Blogger - Ilan Assayag](https://osherove.com/blog/2005/8/31/another-israeli-net-blogger-ilan-assayag.html) - Aug 2, 2005 ### [What blog community site do you recommend for a new .NET blogger?](https://osherove.com/blog/2005/8/2/what-blog-community-site-do-you-recommend-for-a-new-net-blog.html) --- title: "Google AdSense Referral Program Open to the public" url: "https://osherove.com/blog/2005/11/5/google-adsense-referral-program-open-to-the-public.md" canonical: "https://osherove.com/blog/2005/11/5/google-adsense-referral-program-open-to-the-public.html" published: "2005-11-05T03:56:00" updated: "2005-11-05T03:56:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Looks like Google AdSense just went another mile further. They now have a referral program. So if people sign up for AdSense through me, I actually get some money for it. All I can say is that so far, AdSense has…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Google AdSense Referral Program Open to the public By Roy Osherove November 5, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 5, 2005; technical details may be outdated. Looks like Google AdSense just went another mile further. They now have a referral program. So if people sign up for AdSense through me, I actually get some money for it. All I can say is that so far, AdSense has actually made me some money for my blogging efforts. And it seems to provide mostly good ads (such as for unit testing tools, which are pretty interesting) That's why I've decided to take on the referral program and recommend this program for bloggers. It seems to do the job (I'm still not rich, but I get enough to buy a book or two each month) and it doesn't do these horrible popups (that was my stats counter - NedStat. Get rid of that thing fast!) So, if you're a blogger and wanna sign up for this through me , click the button located on the top left site of my blog's page, just below the Google ads banner. It's free and relatively painless to setup. Good luck! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 10, 2005 ### [The unbearable ease of domain names](https://osherove.com/blog/2005/11/10/the-unbearable-ease-of-domain-names.html) - Nov 5, 2005 ### [Problem creating mail enabled Contact on Exchange 2003](https://osherove.com/blog/2005/11/5/problem-creating-mail-enabled-contact-on-exchange-2003.html) - Oct 30, 2005 ### [My blog is not worthless after all](https://osherove.com/blog/2005/10/30/my-blog-is-not-worthless-after-all.html) - Oct 21, 2005 ### [More popups?](https://osherove.com/blog/2005/10/21/more-popups.html) --- title: "My first real frustration with VS 2005 RTM" url: "https://osherove.com/blog/2005/11/4/my-first-real-frustration-with-vs-2005-rtm.md" canonical: "https://osherove.com/blog/2005/11/4/my-first-real-frustration-with-vs-2005-rtm.html" published: "2005-11-04T01:35:00" updated: "2005-11-04T01:35:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "Update: This bug was reviewed and solved by MS as soon as is humanly possible (probably due to the huge amount of exposure it got). See this post for details . It's completely amazing to me that VS.NET 2005 RTM, after a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My first real frustration with VS 2005 RTM By Roy Osherove November 4, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published November 4, 2005; technical details may be outdated. **Update:** _This bug was reviewed and solved by MS as soon as is humanly possible (probably due to the huge amount of exposure it got). [See this post for details](http://weblogs.asp.net/rosherove/archive/2005/11/10/SolvedBug.aspx)._ --- It's completely amazing to me that VS.NET 2005 RTM, after a big cycle of testing, alphas, betas and LOTS of community feedback, can be this buggy. All I'm really doing is working on a very small Winforms projects on a VPC with 1 GIG of ram, and appearing out of nowhere, the compiler decided that it can't find any "StringBuilder, Form or Component types in any assemblies. As if I've lost all the references to System assemblies in my project (which of course, I did not!) Now what? What on earth do I do with this this amazingly stupid and bizarre case? do I even bother to look this up? Probably. Because if I can come across this so easily, many other devs will have come across this too, sadly. After a little searching, I actually couldn't come up with anything useful. This is terribly frustrating and the last thing I would expect from this (I expect bugs, but not this kind of horribly huge amazingly \*can't even find a word to describe this\* annoying bugs). It's 3.30 am. I'll go to sleep now. I hope in the morning VS 2005 will decide it will let me work again. I wouldn't be surprised if a reboot solved this, though I will never understand why (or refuse to understand even if I could). ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Nov 9, 2005 ### [A better BackgroundWorker : CancelImmediately and other goodies](https://osherove.com/blog/2005/11/9/a-better-backgroundworker-cancelimmediately-and-other-goodie.html) - Nov 9, 2005 ### [A better Safe Cast using Generics](https://osherove.com/blog/2005/11/9/a-better-safe-cast-using-generics.html) - Oct 30, 2005 ### [Amazoner 1.0.1 - Larger Images for Books and a dedicated website](https://osherove.com/blog/2005/10/30/amazoner-101-larger-images-for-books-and-a-dedicated-website.html) - Oct 30, 2005 ### [Strongly Typed Reflection Calls in .NET 2.0](https://osherove.com/blog/2005/10/30/strongly-typed-reflection-calls-in-net-20.html) --- title: "\"Ask The Pros\" article about favorite .NET addins at VisualStudioHacks.Com" url: "https://osherove.com/blog/2005/11/3/quotask-the-prosquot-article-about-favorite-net-addins-at-vi.md" canonical: "https://osherove.com/blog/2005/11/3/quotask-the-prosquot-article-about-favorite-net-addins-at-vi.html" published: "2005-11-03T12:22:00" updated: "2005-11-03T12:22:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "There's a new article series over at www.VisualStudioHacks.com (the book) called \"Ask the pros\". It asks various personalities in the .NET world about their favorite hacking tools and methods with VS.NET. I'm proud to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # "Ask The Pros" article about favorite .NET addins at VisualStudioHacks.Com By Roy Osherove November 3, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 3, 2005; technical details may be outdated. There's a new article series over at [www.VisualStudioHacks.com](http://www.visualstudiohacks.com/) (the book) called "Ask the pros". It asks various personalities in the .NET world about their favorite hacking tools and methods with VS.NET. I'm proud to be included in the same list as some of the most known bloggers and speakers I know. [This week's article](http://www.visualstudiohacks.com/atpAddins) ask's the pros about their favorite VS.NET Addins. Guess what I replied! _"Leaders in our software development industry are incredibly productive for a number of reasons, one of which is their intimate familiarity with the ins and outs of the tools they use. This article is the first in the "Ask The Pros" series..."_ ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Nov 16, 2005 ### [\[Larkware Contest Winner\] Snapper: Snap your daily computer usage](https://osherove.com/blog/2005/11/16/larkware-contest-winner-snapper-snap-your-daily-computer-usa.html) - Nov 12, 2005 ### [Test Driven .NET's new version supports all versions of VS 2005 including Express](https://osherove.com/blog/2005/11/12/test-driven-nets-new-version-supports-all-versions-of-vs-200.html) - Oct 31, 2005 ### [FinalBuilder is approaching version 4, and still the coolest build tool out there](https://osherove.com/blog/2005/10/31/finalbuilder-is-approaching-version-4-and-still-the-coolest.html) - Oct 30, 2005 ### [Amazoner 1.0.1 - Larger Images for Books and a dedicated website](https://osherove.com/blog/2005/10/30/amazoner-101-larger-images-for-books-and-a-dedicated-website.html) --- title: "How To: Perform a Security Code Review for Managed Code" url: "https://osherove.com/blog/2005/11/3/how-to-perform-a-security-code-review-for-managed-code.md" canonical: "https://osherove.com/blog/2005/11/3/how-to-perform-a-security-code-review-for-managed-code.html" published: "2005-11-03T11:31:00" updated: "2005-11-03T11:31:00" tags: [] author: "Roy Osherove" description: "Recently I was asked by one of my clients to do a security review of some of their code. I'm no security expert (and stated this to them) but I was still requested to do this. Having gotten this task I decided to look…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How To: Perform a Security Code Review for Managed Code By Roy Osherove November 3, 2005 **Historical article** · Originally published November 3, 2005; technical details may be outdated. Recently I was asked by one of my clients to do a security review of some of their code. I'm no security expert (and stated this to them) but I was still requested to do this. Having gotten this task I decided to look for lots of sources to do with security. I ended up scratching my head and use the old method of "do what feels right" , that is, try to pretend I was a hacker and see if any of the code could be compromised (lots of web services, queues etc.) I'm not sure I did a great job, but I learned a lot. If only I had access to this article I'd be more sure of that: [How To: Perform a Security Code Review for Managed Code (.NET Framework 2.0)](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/PAGHT000027.asp) (via [varad](http://weblogs.asp.net/Varad/archive/2005/11/02/429314.aspx)) --- title: "FinalBuilder is approaching version 4, and still the coolest build tool out there" url: "https://osherove.com/blog/2005/10/31/finalbuilder-is-approaching-version-4-and-still-the-coolest.md" canonical: "https://osherove.com/blog/2005/10/31/finalbuilder-is-approaching-version-4-and-still-the-coolest.html" published: "2005-10-31T12:34:00" updated: "2005-10-31T12:34:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "If you haven't heard of FinalBuilder yet, there's no better time than now. Especially with Microsoft's new \"If you want a build process, you'll wanna get VSTS\" way of doing things. In short, it the most usable and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # FinalBuilder is approaching version 4, and still the coolest build tool out there By Roy Osherove October 31, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 31, 2005; technical details may be outdated. If you haven't heard of [FinalBuilder](http://www.finalbuilder.com/) yet, there's no better time than now. Especially with Microsoft's new "If you want a build process, you'll wanna get VSTS" way of doing things. In short, it the most usable and powerful Build engine and process configuration tool I've used, and I'm not the only one loving it. [Joel On Software has kind words for it](http://www.joelonsoftware.com/news/20020813.html), as does [Mike Gunderloy](http://larkware.com/Reviews/FinalBuilder3.html)(larkware) The main things I like about it: - The visual way of doing things (since build configuration is not simple - you are actually documenting your company's process of doing things) including changing and updating it. it makes it easier to "get" for newcomers and it's not as scary in first glance, even for really big project (I've used it on a .NET solution with 120 sub projects with success. Wasn't easy, but the fact that it was doable at all and actually maintainable after the fact is very good) - They keep updating the product in new and wonderful ways. For example, the current product is in version 3, and version 4 is just around the corner. The have an active customer forum and all questions seem to be answer as fast as possible. Not only that, requests by customers are heard and sometimes features are put in just because some customer came up with a good scenario for them. - They [have developer blogs](http://blogs.finalbuilder.com/). They get it. The blogs talk about what's coming up in version 4 and that's pretty cool. - It has tasks that support practically anything you can think of. It's almost like visual programming. - It's extensible using .NET so if you want a task that's not there, you can create one pretty easily. The way I see it, the fact that Microsoft has MSBuild and the team build server, they should be at least up to par with the folks from FinalBuilder, and right now that's not the case. You may wonder why I'm gushing, but that shouldn't surprise you, I've done it [before](http://weblogs.asp.net/rosherove/articles/resharper.aspx). When I like something, I just like it. No hidden agenda. Yes, I do get review copies of software, including this one. Sometimes they're just this good. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Nov 12, 2005 ### [Test Driven .NET's new version supports all versions of VS 2005 including Express](https://osherove.com/blog/2005/11/12/test-driven-nets-new-version-supports-all-versions-of-vs-200.html) - Nov 3, 2005 ### ["Ask The Pros" article about favorite .NET addins at VisualStudioHacks.Com](https://osherove.com/blog/2005/11/3/quotask-the-prosquot-article-about-favorite-net-addins-at-vi.html) - Oct 30, 2005 ### [Amazoner 1.0.1 - Larger Images for Books and a dedicated website](https://osherove.com/blog/2005/10/30/amazoner-101-larger-images-for-books-and-a-dedicated-website.html) - Oct 19, 2005 ### [Introducing Amazoner: Create Amazon Associate Links with ease](https://osherove.com/blog/2005/10/19/introducing-amazoner-create-amazon-associate-links-with-ease.html) --- title: "A little DotNetWebloggers uproar" url: "https://osherove.com/blog/2005/10/30/a-little-dotnetwebloggers-uproar.md" canonical: "https://osherove.com/blog/2005/10/30/a-little-dotnetwebloggers-uproar.html" published: "2005-10-30T22:53:00" updated: "2005-10-30T22:53:00" tags: ["Community"] author: "Roy Osherove" description: "Update : Alex Lowe of Telligent posts the following in response: \"I've created a forum that will make it easy for us (Telligent) to share information and solicit feedback from the bloggers here at weblogs.asp.net.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A little DotNetWebloggers uproar By Roy Osherove October 30, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published October 30, 2005; technical details may be outdated. **Update**: [Alex Lowe](http://callmealex.com/) of Telligent posts the following in response: _"I've created a forum that will make it easy for us (Telligent) to share information and solicit feedback from the bloggers here at weblogs.asp.net. However, I need you to send me your username so I can add you to the appopriate role and give you more details. If you are interested in this kind of interaction then please send me your username via_ [_http://callmealex.com/contact.aspx_](http://callmealex.com/contact.aspx) _._ _You can, of course, continue to post in the public whatever you want about Telligent. The forum will simply be a mechanism for us to share information that only pertains to the bloggers. "_ _\[**Sending an email through the contact form seems broken**, I just sent my email directly to **alowe at telligent.com** \]_ --- Lance Hunt [wrote in a blog post](http://weblogs.asp.net/lhunt/archive/2005/10/28/428809.aspx) a lot of things that I think many weblogs.asp.net bloggers feel, including myself. There are many comments and [further discussion by lance](http://weblogs.asp.net/lhunt/archive/2005/10/30/428914.aspx) on this issue, all in all, a very important one for both MS and the bloggers here. I can't say that it's impossible to live without upgrades to this site, but it does make you wonder. Personally, I'm enjoying the vast attention this site gets and is one of the main reasons I'm staying here. I miss the fact that the main page used to have a list of bloggers by the number of posts. It was really helpful to someone coming into the site to catch the top bloggers, the ones who write the most posts, plus, it felt like a large family. Now, the MSDN bloggers get upgrades while the "other" bloggers don't. That kinda sucks as a management decision, don't you think? So, this site needs a caring parent. For the past half year or even more, it didn't have that (or at least the parent was staying somewhere else). ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Nov 21, 2005 ### [Slides Available for my talks on C# 2.0, LINQ, Agile Methodologies and TDD Best Practices](https://osherove.com/blog/2005/11/21/slides-available-for-my-talks-on-c-20-linq-agile-methodologi.html) - Nov 21, 2005 ### [November at Agile Israel - The XP Planning Game](https://osherove.com/blog/2005/11/21/november-at-agile-israel-the-xp-planning-game.html) - Oct 11, 2005 ### [Wanna be a Microsoft Israel Presenter?](https://osherove.com/blog/2005/10/11/wanna-be-a-microsoft-israel-presenter.html) - Sep 7, 2005 ### [September at Agile Israel - Why Agile, and lessons learned from implementing SCRUM](https://osherove.com/blog/2005/9/7/september-at-agile-israel-why-agile-and-lessons-learned-from.html) --- title: "My blog is not worthless after all" url: "https://osherove.com/blog/2005/10/30/my-blog-is-not-worthless-after-all.md" canonical: "https://osherove.com/blog/2005/10/30/my-blog-is-not-worthless-after-all.html" published: "2005-10-30T22:41:00" updated: "2005-10-30T22:41:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Just so you know: My blog is worth $88,068.24 . How much is your blog worth?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My blog is not worthless after all By Roy Osherove October 30, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 30, 2005; technical details may be outdated. Just so you know: ![](https://osherove.com/img/wb/55562379_static.flickr.com_23_25822676_789bf55448_t.jpg) My [blog](http://weblogs.asp.net/rosherove) is worth **$88,068.24**. [How much is your blog worth?](http://www.business-opportunities.biz/projects/how-much-is-your-blog-worth/) [![](https://osherove.com/img/wb/700f2462_technorati.com_pix_tech-logo-embed.gif)](http://www.technorati.com/) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 5, 2005 ### [Problem creating mail enabled Contact on Exchange 2003](https://osherove.com/blog/2005/11/5/problem-creating-mail-enabled-contact-on-exchange-2003.html) - Nov 5, 2005 ### [Google AdSense Referral Program Open to the public](https://osherove.com/blog/2005/11/5/google-adsense-referral-program-open-to-the-public.html) - Oct 21, 2005 ### [More popups?](https://osherove.com/blog/2005/10/21/more-popups.html) - Oct 19, 2005 ### [Annoying pop up on this blog? No more, I hope.](https://osherove.com/blog/2005/10/19/annoying-pop-up-on-this-blog-no-more-i-hope.html) --- title: "Automating the reinvention of the wheel" url: "https://osherove.com/blog/2005/10/30/automating-the-reinvention-of-the-wheel.md" canonical: "https://osherove.com/blog/2005/10/30/automating-the-reinvention-of-the-wheel.html" published: "2005-10-30T22:27:00" updated: "2005-10-30T22:27:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "John posts a macro how to automate creating connection strings in visual studio .NET, and demonstrates a few key points (which have nothing to do with him probably being a great guy, good blogger etc..) 1. The blog…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Automating the reinvention of the wheel By Roy Osherove October 30, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published October 30, 2005; technical details may be outdated. [John posts a macro](http://geekswithblogs.net/johnsPerfBlog/archive/2005/10/26/58165.aspx) how to automate creating connection strings in visual studio .NET, and demonstrates a few key points (which have nothing to do with him probably being a great guy, good blogger etc..) 1\. The blog space keep reinventing things, meaning that if I write something two years ago, it may as well have never been written. Case in point is [the macro I wrote in 2003](http://weblogs.asp.net/rosherove/archive/2003/06/23/9119.aspx) to do the same thing. 2\. People don't take the time to [search before solving things](http://www.google.com/search?ie=UTF-8&oe=UTF-8&q=connection+string+macro). 3\. VB.NET preserves the awesome power of \*late binding\* (and I don't mean data binding) to unknown object interfaces, which shines in the face of such a simple macro. Just compare the length and complexity of the macros that [John posted](http://geekswithblogs.net/johnsPerfBlog/archive/2005/10/26/58165.aspx) and [I posted](http://weblogs.asp.net/rosherove/archive/2003/06/23/9119.aspx). 4\. Lack of knowledge of the language and its main advantages puts you at this special place where you are both "with" and "without". "Yes, I just bought a car, but I still drive at 2 miles per hour" would be a good analogy. Again, this has nothing to do with John, just a good case to make a few points to learn from: - Learn all the ins and outs of the tool you are using and the language you use, and you could be 100 times more productive. - Search before embarking on a task. Chances are you're not the first one who either had to do something like this or faced with a problem such as this. Oh, and yes, my crazed ego **demanded** that I write this (nobody's perfect). ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 18, 2006 ### [CLR Generics Vs. C++ Templates - some good links](https://osherove.com/blog/2006/5/18/clr-generics-vs-c-templates-some-good-links.html) - Nov 8, 2005 ### [Predefined CodeDOM implementations for common .NET usage patterns](https://osherove.com/blog/2005/11/8/predefined-codedom-implementations-for-common-net-usage-patt.html) - Oct 30, 2005 ### [Strongly Typed Reflection Calls in .NET 2.0](https://osherove.com/blog/2005/10/30/strongly-typed-reflection-calls-in-net-20.html) - Aug 18, 2005 ### [Cool Tip: Show a vertical rule after 80 chars in VS.NET](https://osherove.com/blog/2005/8/18/cool-tip-show-a-vertical-rule-after-80-chars-in-vsnet.html) --- title: "Amazoner 1.0.1 - Larger Images for Books and a dedicated website" url: "https://osherove.com/blog/2005/10/30/amazoner-101-larger-images-for-books-and-a-dedicated-website.md" canonical: "https://osherove.com/blog/2005/10/30/amazoner-101-larger-images-for-books-and-a-dedicated-website.html" published: "2005-10-30T02:20:00" updated: "2005-10-30T02:20:00" tags: [".Net 2.0", "Cool Tools"] author: "Roy Osherove" description: "A new version of Amazoner is out. Not many changes, but the main thing is that the book images are now bigger, oh and it's compiled using Visual Studio 2005 RTM out 2 days ago (relies on .NET 2.0 final). I Created a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Amazoner 1.0.1 - Larger Images for Books and a dedicated website By Roy Osherove October 30, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 30, 2005; technical details may be outdated. A new version of Amazoner is out. Not many changes, but the main thing is that the book images are now bigger, oh and it's compiled using Visual Studio 2005 RTM out 2 days ago (relies on .NET 2.0 final). I Created a dedicated Site for this tool, from now on located here: [/](https://osherove.com/) **The latest version is 1.0.1** . [Download Program](http://files.osherove.com/amazoner/amazoner101.zip) (148k) [Download Source](http://files.osherove.com/amazoner/amazoner101Src.zip) (151k) _Created using MS **Visual Studio .NET 2005 RTM** (.NET 2.0)_ --- Change List Version 1.0.1 \------------ added:        search button disabled while searching fixed:          Error dialog appears if any problem arises during query instead of crashing added:        if not connected, clicking the search button will provide an informational dialog telling you so changed:    Medium sized images are now being used for books instead of the original small size                   (due to public requests) ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Nov 9, 2005 ### [A better Safe Cast using Generics](https://osherove.com/blog/2005/11/9/a-better-safe-cast-using-generics.html) - Nov 4, 2005 ### [My first real frustration with VS 2005 RTM](https://osherove.com/blog/2005/11/4/my-first-real-frustration-with-vs-2005-rtm.html) - Oct 30, 2005 ### [Strongly Typed Reflection Calls in .NET 2.0](https://osherove.com/blog/2005/10/30/strongly-typed-reflection-calls-in-net-20.html) - Oct 27, 2005 ### [Representing void methods with generic delegates](https://osherove.com/blog/2005/10/27/representing-void-methods-with-generic-delegates.html) --- title: "Strongly Typed Reflection Calls in .NET 2.0" url: "https://osherove.com/blog/2005/10/30/strongly-typed-reflection-calls-in-net-20.md" canonical: "https://osherove.com/blog/2005/10/30/strongly-typed-reflection-calls-in-net-20.html" published: "2005-10-30T00:10:00" updated: "2005-10-30T00:10:00" tags: [".Net 2.0", ".Net Quotations"] author: "Roy Osherove" description: "Oren Eini is trying to cheat Reflection , that is, create his own, \"strongly typed\" version of reflection, and what he's done so far seems like a very cool and nice workaround: \" I don't like strings and Reflection. In…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Strongly Typed Reflection Calls in .NET 2.0 By Roy Osherove October 30, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published October 30, 2005; technical details may be outdated. [Oren Eini is trying to cheat Reflection](http://www.ayende.com/Blog/PermaLink,guid,77361179-d764-4a34-a33c-df19add9792b.aspx), that is, create his own, "strongly typed" version of reflection, and what he's done so far seems like a very cool and nice workaround: _" I don't like strings and Reflection. In fact, you could say that I hate them with a passion. I hate them because they hide important information from the compiler. This post is actually not a rant, it presents a solution to the problem._ _I hate them so much that I wrote my own_ [_Mocking Framework_](http://www.ayende.com/Blog/ct.ashx?id=77361179-d764-4a34-a33c-df19add9792b&url=http%3a%2f%2fwww.ayende.com%2fprojects%2frhino-mocks.aspx) _that don't use strings at all. .Net has some really great stuff that you can do with Reflection, but it has two **big** problems._ - _It is a performance hit._ - _It uses strings. "_ Read how he solves this [in his blog post](http://www.ayende.com/Blog/PermaLink,guid,77361179-d764-4a34-a33c-df19add9792b.aspx). ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Nov 4, 2005 ### [My first real frustration with VS 2005 RTM](https://osherove.com/blog/2005/11/4/my-first-real-frustration-with-vs-2005-rtm.html) - Oct 30, 2005 ### [Amazoner 1.0.1 - Larger Images for Books and a dedicated website](https://osherove.com/blog/2005/10/30/amazoner-101-larger-images-for-books-and-a-dedicated-website.html) - Oct 27, 2005 ### [Representing void methods with generic delegates](https://osherove.com/blog/2005/10/27/representing-void-methods-with-generic-delegates.html) - Oct 21, 2005 ### [Nice Guidance Automation kit hands on lab from TechEd (with a fix for a build problem it contains)](https://osherove.com/blog/2005/10/21/nice-guidance-automation-kit-hands-on-lab-from-teched-with-a.html) --- title: "Representing void methods with generic delegates" url: "https://osherove.com/blog/2005/10/27/representing-void-methods-with-generic-delegates.md" canonical: "https://osherove.com/blog/2005/10/27/representing-void-methods-with-generic-delegates.html" published: "2005-10-27T14:20:00" updated: "2005-10-27T14:20:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "Generics are cool. Learn about them . I want to talk about a specific query that I had which right now I can only guess the answer. To begin, here's the scenario. You can create a Generic Delegate to point to a method…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Representing void methods with generic delegates By Roy Osherove October 27, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published October 27, 2005; technical details may be outdated. Generics are cool. [Learn about them](http://msdn2.microsoft.com/en-us/library/0x6a29h6.aspx). I want to talk about a specific query that I had which right now I can only guess the answer. To begin, here's the scenario. You can create a Generic Delegate to point to a method you want to execute. For example this simple method : **void myMethod(int number)** you could create a generic delegate: **delegate void invokeDelegate(T input)** can invoke it like this: **invokeDelegate invoker = myMethod;** _(I'm using the new c# 2.0 syntax that allows me to create an "inferred delegate" instead of writing "**new invokeDelegate(myMethod)**" )_ it even cool if the method had a return type like this: **bool myMethod(int number)** you could create a generic delegate: **delegate RET invokeDelegate(T input)** and invoke it thusly: **invokeDelegate invoker = myMethod;** but how do you take the delegate I've just written and apply it to the \*first\* method which returns a void? Turns out you can't, at least from my poking around. The more I thought about it the more it makes sense. If you allow a "void" type to be used as generic type parameter, it is implied that this parameter can be used not only as a return value but as a parameter to the generic function/delegate itself. Here's what someone \*could\* write if this was possible: **delegate void invokeDelegate(T input,RET moreinput)** assuming someone does this (if the compiler allowed it): **invokeDelegate invoker = myMethod;** it would have to implicitly mean that there's a method somewhere looking like this: **void myMethod(int number,void IhaveNoIdeaWhatThisIs)** which means, in essence, that to represent all method signatures you'd always need at least two generic delegates, one void and one with a generic return value. That's just my line of thinking, but I'd love for someone from MS to comment on this. ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Oct 30, 2005 ### [Amazoner 1.0.1 - Larger Images for Books and a dedicated website](https://osherove.com/blog/2005/10/30/amazoner-101-larger-images-for-books-and-a-dedicated-website.html) - Oct 30, 2005 ### [Strongly Typed Reflection Calls in .NET 2.0](https://osherove.com/blog/2005/10/30/strongly-typed-reflection-calls-in-net-20.html) - Oct 21, 2005 ### [Nice Guidance Automation kit hands on lab from TechEd (with a fix for a build problem it contains)](https://osherove.com/blog/2005/10/21/nice-guidance-automation-kit-hands-on-lab-from-teched-with-a.html) - Oct 19, 2005 ### [Early experiences from .NET 2.0 Winforms](https://osherove.com/blog/2005/10/19/early-experiences-from-net-20-winforms.html) --- title: "Reminder: My Architects talk is today (GAT and LINQ)" url: "https://osherove.com/blog/2005/10/27/reminder-my-architects-talk-is-today-gat-and-linq.md" canonical: "https://osherove.com/blog/2005/10/27/reminder-my-architects-talk-is-today-gat-and-linq.html" published: "2005-10-27T11:41:00" updated: "2005-10-27T11:41:00" tags: ["Architecture"] author: "Roy Osherove" description: "Don't forget. Today is my .NET architect's talk about Guidance Automation Toolkit and LINQ Preview . More details here . I'll be giving away a book from the MSCD training kit, especially for the architect's group: MCSD…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Reminder: My Architects talk is today (GAT and LINQ) By Roy Osherove October 27, 2005 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published October 27, 2005; technical details may be outdated. Don't forget. [Today is my .NET architect's talk about Guidance Automation Toolkit and LINQ Preview](http://weblogs.asp.net/rosherove/archive/2005/10/08/426963.aspx). [More details here](http://weblogs.asp.net/rosherove/archive/2005/10/08/426963.aspx). I'll be giving away a book from the MSCD training kit, especially for the architect's group: [![](https://osherove.com/img/ext/ec1.images-amazon.com_images_P_0735618941.01._SCTHUMBZZZ_.jpg) MCSD Self-Paced Training Kit: Analyzing Requirements and Defining Microsoft .NET Solution Architectures, Exam 70-300](https://www.amazon.com/exec/obidos/ASIN/0735618941/iserializable-20) ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Nov 26, 2005 ### [Nice article on ordering code construction tasks by Jeremy Miller](https://osherove.com/blog/2005/11/26/nice-article-on-ordering-code-construction-tasks-by-jeremy-m.html) - Nov 23, 2005 ### [Slides from my talk on Guidance Automation Kit are available](https://osherove.com/blog/2005/11/23/slides-from-my-talk-on-guidance-automation-kit-are-available.html) - Oct 21, 2005 ### [Nice Guidance Automation kit hands on lab from TechEd (with a fix for a build problem it contains)](https://osherove.com/blog/2005/10/21/nice-guidance-automation-kit-hands-on-lab-from-teched-with-a.html) - Oct 16, 2005 ### [When LINQ and Yukon meet](https://osherove.com/blog/2005/10/16/when-linq-and-yukon-meet.html) --- title: "Nice Guidance Automation kit hands on lab from TechEd (with a fix for a build problem it contains)" url: "https://osherove.com/blog/2005/10/21/nice-guidance-automation-kit-hands-on-lab-from-teched-with-a.md" canonical: "https://osherove.com/blog/2005/10/21/nice-guidance-automation-kit-hands-on-lab-from-teched-with-a.html" published: "2005-10-21T23:39:00" updated: "2005-10-21T23:39:00" tags: [".Net 2.0", "Architecture", "TechEd 05"] author: "Roy Osherove" description: "There's a nice guidance automation hands-on-lab available from teched, created by Daniel Cszzulino . Unfortunlately, if you tried to compile the source from the download on a VS 2005 Beta 2 or later without VSIP…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice Guidance Automation kit hands on lab from TechEd (with a fix for a build problem it contains) By Roy Osherove October 21, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Architecture](https://osherove.com/blog/category/architecture), [TechEd 05](https://osherove.com/blog/category/teched-05) **Historical article** · Originally published October 21, 2005; technical details may be outdated. There's a nice guidance automation hands-on-lab available from teched, created by [Daniel Cszzulino](http://weblogs.asp.net/cazzu/). Unfortunlately, if you tried to compile the source from the download on a VS 2005 Beta 2 or later without VSIP installed(which you don't really need), you're going to run into some problems. It's a good thing that Daniel posted a note about how to get over these hurdles and make the thing compile. It's actually a very cool sample of generating a data layer tier for an application using the GAT extensions. - Learn [what GAT is](http://lab.msdn.microsoft.com/teamsystem/workshop/gat/intro.aspx) - Download [GAT and GAT extensions](http://lab.msdn.microsoft.com/teamsystem/workshop/gat/download.aspx) (VS 2005 beta 2 needed) - Download the [Guidance Hands on lab here](http://guidanceautomation.net/cs/library/View.aspx?tab=3&Id=7) - Read [how to fix the broken references in the solution here](http://guidanceautomation.net/cs/forums/61/ShowPost.aspx#61) ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Oct 30, 2005 ### [Strongly Typed Reflection Calls in .NET 2.0](https://osherove.com/blog/2005/10/30/strongly-typed-reflection-calls-in-net-20.html) - Oct 27, 2005 ### [Representing void methods with generic delegates](https://osherove.com/blog/2005/10/27/representing-void-methods-with-generic-delegates.html) - Oct 19, 2005 ### [Early experiences from .NET 2.0 Winforms](https://osherove.com/blog/2005/10/19/early-experiences-from-net-20-winforms.html) - Oct 19, 2005 ### [Introducing Amazoner: Create Amazon Associate Links with ease](https://osherove.com/blog/2005/10/19/introducing-amazoner-create-amazon-associate-links-with-ease.html) --- title: "More popups?" url: "https://osherove.com/blog/2005/10/21/more-popups.md" canonical: "https://osherove.com/blog/2005/10/21/more-popups.html" published: "2005-10-21T23:30:00" updated: "2005-10-21T23:30:00" tags: ["Off Topic"] author: "Roy Osherove" description: "The popups still keep on coming, so I've removed the google ads. If you still see popups, let me know. If you don't, but you used to, let me know to." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More popups? By Roy Osherove October 21, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 21, 2005; technical details may be outdated. The popups still keep on coming, so I've removed the google ads. If you still see popups, let me know. If you don't, but you used to, let me know to. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 5, 2005 ### [Google AdSense Referral Program Open to the public](https://osherove.com/blog/2005/11/5/google-adsense-referral-program-open-to-the-public.html) - Oct 30, 2005 ### [My blog is not worthless after all](https://osherove.com/blog/2005/10/30/my-blog-is-not-worthless-after-all.html) - Oct 19, 2005 ### [Annoying pop up on this blog? No more, I hope.](https://osherove.com/blog/2005/10/19/annoying-pop-up-on-this-blog-no-more-i-hope.html) - Oct 16, 2005 ### [When LINQ and Yukon meet](https://osherove.com/blog/2005/10/16/when-linq-and-yukon-meet.html) --- title: "Annoying pop up on this blog? No more, I hope." url: "https://osherove.com/blog/2005/10/19/annoying-pop-up-on-this-blog-no-more-i-hope.md" canonical: "https://osherove.com/blog/2005/10/19/annoying-pop-up-on-this-blog-no-more-i-hope.html" published: "2005-10-19T19:33:00" updated: "2005-10-19T19:33:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I seem to have inadvertently let in a pop up ad into this blog through one of the amazon or google ads. This was unintentional and I'm freaked out that I haven't noticed it. I still haven't, but I've gotten 3 emails…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Annoying pop up on this blog? No more, I hope. By Roy Osherove October 19, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 19, 2005; technical details may be outdated. I seem to have inadvertently let in a pop up ad into this blog through one of the amazon or google ads. This was unintentional and I'm freaked out that I haven't noticed it. I still haven't, but I've gotten 3 emails today about this so I went ahead and fiddled with the HTML of this blog a bit. Please let me know if you still see any annoying pop up ads. It would help if you could tell me all the details you can about them so that I can track this down. If push comes to shove I'll just take down all the ads and add them one by one until I find the culprit. My main suspicion though is an old amazon ad I had lying around here with an old link. I removed that so hopefully there should be the end of it. **Please** let me know, either in a comment or email to Roy at osherove.com that I still have a problem. Thanks, and sorry. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 30, 2005 ### [My blog is not worthless after all](https://osherove.com/blog/2005/10/30/my-blog-is-not-worthless-after-all.html) - Oct 21, 2005 ### [More popups?](https://osherove.com/blog/2005/10/21/more-popups.html) - Oct 16, 2005 ### [When LINQ and Yukon meet](https://osherove.com/blog/2005/10/16/when-linq-and-yukon-meet.html) - Oct 10, 2005 ### [The new MS 4000 keyboard and a ThinkPad go great together](https://osherove.com/blog/2005/10/10/the-new-ms-4000-keyboard-and-a-thinkpad-go-great-together.html) --- title: "Early experiences from .NET 2.0 Winforms" url: "https://osherove.com/blog/2005/10/19/early-experiences-from-net-20-winforms.md" canonical: "https://osherove.com/blog/2005/10/19/early-experiences-from-net-20-winforms.html" published: "2005-10-19T18:27:00" updated: "2005-10-19T18:27:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "One of the reasons I wrote this little application is to get to know the .NET 2.0 Winforms API a little better. Here are some of the things I have on my mind after playing with it for a while: Data Binding The Data…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Early experiences from .NET 2.0 Winforms By Roy Osherove October 19, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published October 19, 2005; technical details may be outdated. One of the reasons I wrote [this little application](http://weblogs.asp.net/rosherove/archive/2005/10/19/Amazoner10.aspx) is to get to know the .NET 2.0 Winforms API a little better. Here are some of the things I have on my mind after playing with it for a while: **Data Binding** The Data Binding Story in .NET 2.0 winforms is absolutely cool. data binding to custom objects is so much easier and less clunky than it used to be in 1.1, there really is no way to compare the two. I was able to create a custom class and bind it to a grid, pictures and all, in less than a minute, and setting the data source is one line of code. **Configuration** \- The configuration story in .NET 2.0 is, again, much much better. The project contains a Settings object which contains a strongly typed property list of the values you put in in the project properties page. Those settings are easily accessible, and, at last, can actually be changed and persisted at runtime. Settings have two modes: user and application mode. Application mode is still read only, but the user mode is writable at runtime. Setting a value as a user mode setting is simply a matter of choosing from a combo. \- In a VB.NET project you get some really nice out of the box usability bonuses in the project settings dialogs. Some examples would be a check box for "Save configuration settings on exit" and another one for "Keep only one instance of the application running". These are both possible to do manually, but this saves you from writing that repetitive code. Lots of other small nuggets in there... **Data binding to configuration settings** This totally deserves a section on its own. It's really simple and intuitive to bind practically any simple property of a form or other component to a configuration setting. It's done through the properties window and allows seamless customizability of the application by the user. For example, in my little app, I created a setting called "LastSearch" in the project settings dialog, and then simply set a binding on a text box on the main form to that setting. Couple that with a "Save settings on exit" check box, and you've got zero lines of code history (a simple one, but still!). You can use it to save Form locations, size and anything else you might think of. **Writing code in VB.NET - Refactor is not enough!** I still feel that using VS.NET 2003 with [Resharper](http://jetbrains.com/resharper) installed is much much more productive that using VS 2005 in either C# or VB.NET with Refactor! installed (Freely downloadable). C# does not have better code snippets than VB.NET, but some of them, like creating properties are better and nicer than VB (which, IIRC, does not have a snippet for properties??) The main problem in the IDE is Navigation. It's hard to find a fine in a large project without using the mouse or hitting the find in files dialog. It's hard to find a method in a large file, it's hard to find all the references to a method or a class in a solution (although there is such a menu) and frankly, after using Resharper for a log time, everything is much harder and tedious to do than it used to be. Yes, i have a "rename" refactoring, but it's really hard to trigger. In fact, all the refactorings are really hard to trigger because the shortcuts to them suck(Shift+Alt+F10? C'Mon!) **The Class Designer - a work in progress** I like the [class designer](http://msdn.microsoft.com/library/en-us/dv_vstechart/html/clssdsgnr.asp). It's a nice visual way of adding stuff or changing stuff in classes. Sort of like a visual refactoring tool, though a very limited one. One key thing its missing (in both languages) is some common sense. If I'm adding a property "Name" of type string, it should be able to figure out that I also want a private member "mName" of type string and to return and set that variable in the property get and set methods. In the 0.2% of the time I \*wouldn't\* want this behavior I could just delete it but right now, it's the most annoying thing in the world: visually creating a property, visually creating a private member and then **manually** going to the code and connecting the two together. Here's a tip - If I need to switch two views to create a property - something's missing. **The BackgroundWorker Component - a work in progress** _(See update on this at the end of this post)_ The [BackgroundWorker](http://msdn2.microsoft.com/en-us/library/4852et58) component is one of those things where everyone says "Why didn't I think of that?", and it's been around for a while now, [even as a 1.1 version](http://weblogs.asp.net/rosherove/articles/BackgroundWorker.aspx) courtesy of Juval Lowy. It's nice and I've used it, but it's still clunky to use in some obvious well lit corners. For example - it's really easy to display progress to the client by calling the worker.ReportProgress(percentage, someDataObject) method. However, if I wanted to send an **end result** of my long processing, there isn't any easy obvious way to do it. Basically, by calling the "ReportProgress" with a percentage of 100, the "WorkEnded" event is triggered at the GUI thread, but the "UserData" object that is send when triggering the event is lost, which is a shame. The event arguments actually contain an object called "result" but I couldn't find any way of setting it from the triggering code. In short - it's nice, but I don't want to have a global variables to send end results to my GUI code, thanks. **Menus** **Finally!** we get a "Set image" when right clicking on a menu item! How hard was that? I'll add more as it comes to me. **Update on BackgroundWorker** Here's an update on the query I had regarding the backgroundworker component in winforms, directly from **Keith Yedlin**, the Product Unit Manager for Winforms: "Essentially in the DoWork method, you can assign a result set (as a BindingList or other object) to e.result as follows:         **private void backgroundWorker1\_DoWork(object sender, DoWorkEventArgs e)**         **{**             **string  fullpath = e.Argument as string;**             **int     idx = fullpath.LastIndexOf('\\\\');**             **BindingList bl = new BindingList();**             **AddFiles(fullpath.Substring(0, idx),**                 **fullpath.Substring(idx + 1), bl);**             **e.Result = bl;**         **}** When the DoWork method exits, the RunWorkCompleted event is thrown which in turn will execute the RunWorkerCompleted method defined.  One can take the result set returned in the EventArgs e, and bind as follows:         **private void backgroundWorker1\_RunWorkerCompleted(object sender,                                           RunWorkerCompletedEventArgs e)**    **{**             **this.Text = "Formatting Data....";**             **//Bind**             **bl = e.Result as BindingList;**             **this.dataGridView1.DataSource = e.Result;**             **this.Text = "Data Loaded!!";**             **this.listCount.Text = "Rows Loaded...." + (e.Result as IList).Count.ToString();**             **//Change Cursor**             **this.Cursor = Cursors.Default;**         **}** So you can see there is an easy way to utilize the results of the long running background worker.  " ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Oct 27, 2005 ### [Representing void methods with generic delegates](https://osherove.com/blog/2005/10/27/representing-void-methods-with-generic-delegates.html) - Oct 21, 2005 ### [Nice Guidance Automation kit hands on lab from TechEd (with a fix for a build problem it contains)](https://osherove.com/blog/2005/10/21/nice-guidance-automation-kit-hands-on-lab-from-teched-with-a.html) - Oct 19, 2005 ### [Introducing Amazoner: Create Amazon Associate Links with ease](https://osherove.com/blog/2005/10/19/introducing-amazoner-create-amazon-associate-links-with-ease.html) - Jun 26, 2005 ### [.NET CLR Data counters are wrong - Official](https://osherove.com/blog/2005/6/26/net-clr-data-counters-are-wrong-official.html) --- title: "Introducing Amazoner: Create Amazon Associate Links with ease" url: "https://osherove.com/blog/2005/10/19/introducing-amazoner-create-amazon-associate-links-with-ease.md" canonical: "https://osherove.com/blog/2005/10/19/introducing-amazoner-create-amazon-associate-links-with-ease.html" published: "2005-10-19T16:11:00" updated: "2005-10-19T16:11:00" tags: [".Net 2.0", "Cool Tools"] author: "Roy Osherove" description: "Update (30/10/2005) There's a new version of this tool available . This tool also has a dedicated site from now on. For the latest version downloads and information, go to this URL: / Thanks, Roy. A while ago I posted…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing Amazoner: Create Amazon Associate Links with ease By Roy Osherove October 19, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 19, 2005; technical details may be outdated. **_Update (30/10/2005)_** **There's a new version of this tool available**. This tool also has a dedicated site from now on. For the latest version downloads and information, go to this URL: [/](https://osherove.com/) Thanks, Roy. --- A while ago I posted about a little tool that I used to create [Amazon Associate](https://www.amazon.com/exec/obidos/redirect-home/iserializable-20) links on my blog. If you're not sure what that is, associate links are links to Amazon stuff I recommend. If you purchase them, I get a little bit of money for it. I always recommend stuff I stand behind, so that people can trust my reviews and recommendations. Anyway, the tool I did back then was pretty un-usable. you had to find the product page in amazon, paste it into the tool and copy the link it generated for you (which was not always successful). You then had to use the link in a specially formatted HTML segment on your blog or wherever you needed it. As part of my getting to know .NET 2.0 and my re-acquaintance with VB.NET, I've decided to create a tool that I would actually use without breaking a sweat. That's how Amazoner came to be. The idea is simple: It uses Amazon's Web Services to allow you to query for the book you want to recommend (search by title) and then simply right click and copy an HTML ready link to your blog. Here's what it looks like: [![](https://osherove.com/img/wb/a09975cc_teamagile.com_images_amazoner.jpg)](http://teamagile.com/Downloads/Amazoner10.zip) Download is available in two versions: - [Simple version](http://teamagile.com/Downloads/Amazoner10.zip) (145k): Just the executable and a readme file. - [Full version](http://teamagile.com/Downloads/Amazoner10Full.zip) (710k): includes installer and the source code for the application. All downloads require the [.NET 2.0 Beta 2 re-dist.](http://go.microsoft.com/fwlink/?LinkId=9832) to run properly. Here's a sample of a link for a good book I'll be writing about soon, created with it: [![](https://osherove.com/img/wb/82288ff6_images.amazon.com_images_P_0735619670.01._SCTHUMBZZZ_.jpg) Code Complete, Second Edition](https://www.amazon.com/exec/obidos/ASIN/0735619670/iserializable-20) **From the Readme file:** Amazoner was designed to make one thing very easy if you're a blog writer who's also an [Amazon Associate](https://www.amazon.com/exec/obidos/redirect-home/iserializable-20): The ability to recommend books that you like using your associate ID so that you'll get a pittance whenever someone actually buys them. The main form allows you to enter a search query for a book's title (or part of it). You'll then get a list of the first 10 books that match that title along with their authors and a small screenshot of the book cover. That should be enough information for you to select the book you wanted to recommend. The next step is to create an associate link from the book you chose. That's very easy. Simply right click on the row of the book you want and select one of three choices. 1. Copy title as link: Copies to the clipboard an HTML link with the title as text and the link referring to the book's homepage along with your associate ID 2. Copy image as link: the same as the first only instead of the title text, you get the small cover image as a link with your associate ID 3. Copy both as link: Creates a center-aligned HTML with the book image and title below it as a link with your associate ID. Now simply go to your favorite HTML editor (Can be a WYSIWYG editor as well) and simply PASTE (CTRL-V) into the place you want. **Important notes: \---------------- **1\. This application uses the Amazon Web Services account for me: Roy Osherove. **I encourage you to [create your own amazon web services account](https://www.amazon.com/gp/browse.html/103-1456462-0270240?%5Fencoding=UTF8&node=3435361)** at amazon and changing the Web Service account ID for this application to your own. You can do this by going to _**Options->Change Web Service Credentials**_. If you're going to use my account -please be respectful and don't hammer any servers with it, or I'll be the one screwed over by your actions! 2\. You can only search books, and only by title. That's all I needed so that all I created. 3\. **Change the associate ID** at the bottom of the form to your own ID, or I'll get all the credit for someone purchasing your recommended books. ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Oct 21, 2005 ### [Nice Guidance Automation kit hands on lab from TechEd (with a fix for a build problem it contains)](https://osherove.com/blog/2005/10/21/nice-guidance-automation-kit-hands-on-lab-from-teched-with-a.html) - Oct 19, 2005 ### [Early experiences from .NET 2.0 Winforms](https://osherove.com/blog/2005/10/19/early-experiences-from-net-20-winforms.html) - Jun 26, 2005 ### [.NET CLR Data counters are wrong - Official](https://osherove.com/blog/2005/6/26/net-clr-data-counters-are-wrong-official.html) - Jun 19, 2005 ### [\[Audio Interview\] Brian Noyes: Deep .NET Q&A](https://osherove.com/blog/2005/6/19/audio-interview-brian-noyes-deep-net-qampa.html) --- title: "My Agile talk at Ireland Devs group finally has permanent links" url: "https://osherove.com/blog/2005/10/16/my-agile-talk-at-ireland-devs-group-finally-has-permanent-li.md" canonical: "https://osherove.com/blog/2005/10/16/my-agile-talk-at-ireland-devs-group-finally-has-permanent-li.html" published: "2005-10-16T19:34:00" updated: "2005-10-16T19:34:00" tags: ["Agile Related"] author: "Roy Osherove" description: "A while ago I present at the Ireland .NET Developers user group on an intro to Agile development and on Unit Testing best practices. The links kind of disappeared from that site for a bit, but now I have direct links…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My Agile talk at Ireland Devs group finally has permanent links By Roy Osherove October 16, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published October 16, 2005; technical details may be outdated. A while ago I present at the Ireland .NET Developers user group on an intro to Agile development and on Unit Testing best practices. The links kind of disappeared from that site for a bit, but now I have direct links for you: [Agile part 1](http://media.scoilnet.ie/inda/Agile%20Final%20part1.wmv) - feel free to pass through the first 5 minutes of me talking with people in the crowd. [Agile part 2](http://media.scoilnet.ie/inda/Agile%20part2.wmv) [Unit Testing Best Practices.](http://media.scoilnet.ie/inda/Unit%20Testing.wmv) Again,  I'd like to thank [Paschal](http://weblogs.asp.net/pleloup) for hosting me there! ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 16, 2005 ### [Agile Dilbert](https://osherove.com/blog/2005/11/16/agile-dilbert.html) - Nov 9, 2005 ### [The Agile Blog](https://osherove.com/blog/2005/11/9/the-agile-blog.html) - Sep 14, 2005 ### [What 2 questions would you ask Kent Beck?](https://osherove.com/blog/2005/9/14/what-2-questions-would-you-ask-kent-beck.html) - Sep 14, 2005 ### [New blog from NUnit primary maintainer - Charlie Poole](https://osherove.com/blog/2005/9/14/new-blog-from-nunit-primary-maintainer-charlie-poole.html) --- title: "A better command line parsing class" url: "https://osherove.com/blog/2005/10/16/a-better-command-line-parsing-class.md" canonical: "https://osherove.com/blog/2005/10/16/a-better-command-line-parsing-class.html" published: "2005-10-16T17:22:00" updated: "2005-10-16T17:22:00" tags: [".Net Original"] author: "Roy Osherove" description: "Mike has recently recommended a command line parser library for .NET called Param.NET . Personally, I don't think this sort of thing should be driven (as is param.net) by a configuration file. In fact, custom attributes…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A better command line parsing class By Roy Osherove October 16, 2005 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published October 16, 2005; technical details may be outdated. Mike has [recently recommended](http://www.larkware.com/dg4/TheDailyGrind729.html) a command line parser library for .NET called [Param.NET](http://www.codeproject.com/useritems/ParamNET.asp). Personally, I don't think this sort of thing should be driven (as is param.net) by a configuration file. In fact, custom attributes could be put to some great use here. I while I ago I tried and liked a different solution to the same problem using Attributes. [Check it out here](http://www.codeproject.com/csharp/commandlineparser.asp). I think it's a cleaner design with less hassle and a nice use of the technology. I based a class on this with some modification, but this is a good place to start! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 10, 2006 ### [Regulazy 1.02 is out and about](https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.html) - Sep 9, 2006 ### [How to create your own Auto Login Remote Desktop Application](https://osherove.com/blog/2006/9/9/how-to-create-your-own-auto-login-remote-desktop-application.html) - Aug 22, 2005 ### [Tips for a successful MSMQ-enabled application](https://osherove.com/blog/2005/8/22/tips-for-a-successful-msmq-enabled-application.html) - Aug 17, 2005 ### [\[Audio Interview\] Ingo Rammer and Christian Weyer On Distributed Applications Architecture And Practices](https://osherove.com/blog/2005/8/17/audio-interview-ingo-rammer-and-christian-weyer-on-distribut.html) --- title: "When LINQ and Yukon meet" url: "https://osherove.com/blog/2005/10/16/when-linq-and-yukon-meet.md" canonical: "https://osherove.com/blog/2005/10/16/when-linq-and-yukon-meet.html" published: "2005-10-16T17:08:00" updated: "2005-10-16T17:08:00" tags: ["Architecture", "Off Topic"] author: "Roy Osherove" description: "I think the award for \"coolest upcoming technology preview\" for this year's PDC has to go to the LINQ stuff. That's \"Language Integrated Query\" if you haven't heard this yet. If I had to sum up the idea behind LINQ in a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # When LINQ and Yukon meet By Roy Osherove October 16, 2005 In [Architecture](https://osherove.com/blog/category/architecture), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 16, 2005; technical details may be outdated. I think the award for "coolest upcoming technology preview" for this year's PDC has to go to the [LINQ](http://msdn.microsoft.com/vbasic/future/) stuff. That's "Language Integrated Query" if you haven't heard this yet. If I had to sum up the idea behind LINQ in a sentence it would probably go something like this: "The ability to do SELECTs from any .NET list of objects, including Database and XML, using an SQL like syntax and compiler checks. Oh and it can be extended to other stuff." While not very very precise, it's more understandable that way I believe. So, here's a thought. With LINQ, and particularly with DLINQ, you'll be able to write database SQL SELECTs using C$ or VB.NET code. Now, consider this. with SQL server 2005 (Yukon) you'll be able to write stored procedures using C# or VB.NET inside the database. Right? Right. You **know** where I'm going with this, right? I can almost picture it now - some consultant **somewhere** is going to be SO thrilled to have their customer use all the new "cool stuff" and they'll end up writing DLINQ stuff inside a SQL 2005 Stored procedure using C#. It is on that day, my friends, that Microsoft will have come the full circle between application and database technologies. PS Mike has an [interesting writeup](http://searchvb.techtarget.com/originalContent/0,289142,sid8_gci1132686,00.html) on stuff to think about with LINQ coming up (more interesting to VBers, but Csharpers will see some value as well). ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Oct 27, 2005 ### [Reminder: My Architects talk is today (GAT and LINQ)](https://osherove.com/blog/2005/10/27/reminder-my-architects-talk-is-today-gat-and-linq.html) - Oct 21, 2005 ### [Nice Guidance Automation kit hands on lab from TechEd (with a fix for a build problem it contains)](https://osherove.com/blog/2005/10/21/nice-guidance-automation-kit-hands-on-lab-from-teched-with-a.html) - Oct 9, 2005 ### [Good architecture content from Udi Dahan](https://osherove.com/blog/2005/10/9/good-architecture-content-from-udi-dahan.html) - Oct 8, 2005 ### [Come to my .NET Architects talk this month: Guidance Automation Tookit and LINQ preview](https://osherove.com/blog/2005/10/8/come-to-my-net-architects-talk-this-month-guidance-automatio.html) --- title: "Wanna be a Microsoft Israel Presenter?" url: "https://osherove.com/blog/2005/10/11/wanna-be-a-microsoft-israel-presenter.md" canonical: "https://osherove.com/blog/2005/10/11/wanna-be-a-microsoft-israel-presenter.html" published: "2005-10-11T10:57:00" updated: "2005-10-11T10:57:00" tags: ["Community"] author: "Roy Osherove" description: "Microsoft Israel is looking for \"star quality\" presenters on Microsoft content. Basically, if you can muster up a 15 min. technical presentation in front of some of Microsoft's finest in Israel and are found to have…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Wanna be a Microsoft Israel Presenter? By Roy Osherove October 11, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published October 11, 2005; technical details may be outdated. Microsoft Israel is looking for "star quality" presenters on Microsoft content. Basically, if you can muster up a 15 min. technical presentation in front of some of Microsoft's finest in Israel and are found to have what it takes, you'll be invited to present at some of Microsoft Israel's biggest and well respected conferences such as Tech-Ed and such. Now, I'd \*pay\* someone for this kind of opportunity a couple of years ago, so If you think you'd like to give it a shot, **go to this page for explanations:** [http://www.microsoft.com/israel/traincert/stars/](http://www.microsoft.com/israel/traincert/stars/)  (note: content is in Hebrew, with a slightly annoying flash animation in the beginning which cannot be avoided...) **Or you can directly register in this page:** [http://www.microsoft.com/israel/events/default.aspx?pageType=4&idType=3&id=207](http://www.microsoft.com/israel/events/default.aspx?pageType=4&idType=3&id=207) and sign up. I don't think you get any money for speaking there(I might be mistaken though), but you sure do get recognition and a feeling of doing something cool (not to mention getting lots of experience presenting at large events!) ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Nov 21, 2005 ### [November at Agile Israel - The XP Planning Game](https://osherove.com/blog/2005/11/21/november-at-agile-israel-the-xp-planning-game.html) - Oct 30, 2005 ### [A little DotNetWebloggers uproar](https://osherove.com/blog/2005/10/30/a-little-dotnetwebloggers-uproar.html) - Sep 7, 2005 ### [September at Agile Israel - Why Agile, and lessons learned from implementing SCRUM](https://osherove.com/blog/2005/9/7/september-at-agile-israel-why-agile-and-lessons-learned-from.html) - Aug 31, 2005 ### [Agile conference coming to Israel - Your input is required.](https://osherove.com/blog/2005/8/31/agile-conference-coming-to-israel-your-input-is-required.html) --- title: "The new MS 4000 keyboard and a ThinkPad go great together" url: "https://osherove.com/blog/2005/10/10/the-new-ms-4000-keyboard-and-a-thinkpad-go-great-together.md" canonical: "https://osherove.com/blog/2005/10/10/the-new-ms-4000-keyboard-and-a-thinkpad-go-great-together.html" published: "2005-10-10T12:24:00" updated: "2005-10-10T12:24:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I just got the new keyboard from Microsoft - the ergo 4000 , and it's pretty cool. The coolest feature for me, forgetting the shortcut keys and all that, is the fact that the keyboard is high enough in the air to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The new MS 4000 keyboard and a ThinkPad go great together By Roy Osherove October 10, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 10, 2005; technical details may be outdated. I just got the new keyboard from Microsoft - the [ergo 4000](http://froogle.google.com/froogle?q=ergo+4000&hl=en&lr=&pwst=1&sa=N&tab=ff&oi=froogler), and it's pretty cool. The coolest feature for me, forgetting the shortcut keys and all that, is the fact that the keyboard is high enough in the air to actually fit on top of my ThinkPad T41's keyboard covering it completely, effectively allow me to save space while replacing my laptop's keyboard. I don't know if that was intentional or not, but **that's** the killer app for me. **Update:** \- The included software also allows you to **disable the damn caps-lock key**. About time. \- Nice zoom button, though it seems to be mainly used for scrolling.. \- It even comes with special keys for "=", "(" and ")"   (dare I say "programmer keys"?). Unfortunately, they are positioned right above the Numpad keys, so it's not that comfortable to use them while programming :( \- The ergonomic positioning is great. Really comfortable! \- You can't install the keyboard software inside a VPC image (VPC is officially not supported on install), but the main functionality seems to work just fine anyway, including the scrolling in VS.NET. \- The F-Lock key stays **on** by default when you reboot your machine! Thank you!(at least on my ThinkPad) \- If there's one thing missing from this keyboard it's a set of two buttons for the left and right mouse clicks and a mouse moving little red pad(just like in a notebook). Do that and I can free my hands from the mouse for about 90% of the time. (yes I know that enter and application keys play the same role and left and right, but still.) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 19, 2005 ### [Annoying pop up on this blog? No more, I hope.](https://osherove.com/blog/2005/10/19/annoying-pop-up-on-this-blog-no-more-i-hope.html) - Oct 16, 2005 ### [When LINQ and Yukon meet](https://osherove.com/blog/2005/10/16/when-linq-and-yukon-meet.html) - Oct 2, 2005 ### [Two small irrelevant tips](https://osherove.com/blog/2005/10/2/two-small-irrelevant-tips.html) - Aug 23, 2005 ### [The DIMES project aims to map the internet - with your help](https://osherove.com/blog/2005/8/23/the-dimes-project-aims-to-map-the-internet-with-your-help.html) --- title: "Good architecture content from Udi Dahan" url: "https://osherove.com/blog/2005/10/9/good-architecture-content-from-udi-dahan.md" canonical: "https://osherove.com/blog/2005/10/9/good-architecture-content-from-udi-dahan.html" published: "2005-10-09T13:13:00" updated: "2005-10-09T13:13:00" tags: ["Architecture"] author: "Roy Osherove" description: "Udi Dahan , a Solution Architect MVP and a friend, has been writing some good stuff on his weblog lately. Unfortunately, he hasn't been able to attend the MVP summit, so I though I'd direct your attention to his…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good architecture content from Udi Dahan By Roy Osherove October 9, 2005 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published October 9, 2005; technical details may be outdated. [Udi Dahan](http://udidahan.weblogs.us/), a Solution Architect MVP and a friend, has been writing some good stuff on his weblog lately. Unfortunately, he hasn't been able to attend the MVP summit, so I though I'd direct your attention to his writings about, since he does have plenty to say on various .NET architecture related stuff. SO, here's a few pointers: - ["Select an O/R mapping tool" article](http://www.developer.com/design/article.php/3531871) on Developer.com (see [blog post](http://udidahan.weblogs.us/archives/031892.html)) - ["SOA Support, SOA Therapy, SOA Treatment"](http://www.devx.com/ibm/Article/29325)  article on Devx.com (see [blog post](http://udidahan.weblogs.us/archives/032312.html)) - [Just go read his blog](http://udidahan.weblogs.us/) once in a while. ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Oct 21, 2005 ### [Nice Guidance Automation kit hands on lab from TechEd (with a fix for a build problem it contains)](https://osherove.com/blog/2005/10/21/nice-guidance-automation-kit-hands-on-lab-from-teched-with-a.html) - Oct 16, 2005 ### [When LINQ and Yukon meet](https://osherove.com/blog/2005/10/16/when-linq-and-yukon-meet.html) - Oct 8, 2005 ### [Come to my .NET Architects talk this month: Guidance Automation Tookit and LINQ preview](https://osherove.com/blog/2005/10/8/come-to-my-net-architects-talk-this-month-guidance-automatio.html) - Aug 9, 2005 ### [Small Domain Specific Language for the GoF Design patterns](https://osherove.com/blog/2005/8/9/small-domain-specific-language-for-the-gof-design-patterns.html) --- title: "Come to my .NET Architects talk this month: Guidance Automation Tookit and LINQ preview" url: "https://osherove.com/blog/2005/10/8/come-to-my-net-architects-talk-this-month-guidance-automatio.md" canonical: "https://osherove.com/blog/2005/10/8/come-to-my-net-architects-talk-this-month-guidance-automatio.html" published: "2005-10-08T09:48:00" updated: "2005-10-08T09:48:00" tags: ["Architecture"] author: "Roy Osherove" description: "I'll be doing the next talk at the Israeli .NET Architects user group this month, at the 27/10. Here's a summary of the talk. Should be interesting! (see the link for location details) This month, we will focus on 2…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Come to my .NET Architects talk this month: Guidance Automation Tookit and LINQ preview By Roy Osherove October 8, 2005 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published October 8, 2005; technical details may be outdated. I'll be doing the next talk at [the Israeli .NET Architects user group](http://www.microsoft.com/israel/events/default.aspx?pageType=1&idType=1&id=28) this month, at the 27/10. Here's a summary of the talk. Should be interesting! (see the link for location details) This month, we will focus on 2 very interesting toolkits and technologies. **Part I: Establishing a development architecture using the Microsoft Guidance Automation Toolkit** For more information about this topic, browse to: [http://lab.msdn.microsoft.com/teamsystem/workshop/gat](http://lab.msdn.microsoft.com/teamsystem/workshop/gat "http") Using the patterns & practices of the Guidance Automation Toolkit, you can make reusable code and pattern assets directly available in Visual Studio 2005. The toolkit is designed to simplify integrating reusable code into applications allowing architects to automate development activities that developers would usually have to perform manually; often by following a series of instructions. By using the toolkit, architects can also ensure that repetitive and often error-prone activities are performed in a consistent manner, streamlining and accelerating the development process. The toolkit can be used with assets developed in-house or by third parties; such as the assets created by the Microsoft patterns & practices team. These assets can be exposed to developers within Visual Studio, and in some cases, configured by using configuration files, templates, and wizards. Expect demos and code examples. **Part II: A preview of the LINQ project: An extensible Language Integrated Query infrastructure in .NET 3.0** For more information about this topic, browse to: [http://msdn.microsoft.com/netframework/future/linq/](http://msdn.microsoft.com/netframework/future/linq/ "http") The LINQ Project is a codename for a set of extensions to the .NET Framework that encompass language-integrated query, set, and transform operations. It extends C# and Visual Basic with native language syntax for queries and provides class libraries to take advantage of these capabilities. Find out about the general-purpose query facilities added to the .NET Framework that apply to all sources of information, including (but not limited to) relational or XML data. We'll hopefully have some very cool demos of this LINQ in action. Details summary: Date: **October 27th, 2005** (27/10/2005) (**NOT SUNDAY**) Time: **17:30 – 20:00** Location: **HP offices, 9 Daphna St, Kiryat Etgarim (northern industrial area), Ra’anana** Topic: **Guidance Automation Toolkit for Architects and the LINQ project** Agenda: 17:30 – 17:45 – Assembly 17:45 – 18:45 – GAT – Roy Osherove - TeamAgile 18:45 – 19:00 – Break 19:00 – 20:00 – LINQ – Roy Osherove - TeamAgile ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Oct 16, 2005 ### [When LINQ and Yukon meet](https://osherove.com/blog/2005/10/16/when-linq-and-yukon-meet.html) - Oct 9, 2005 ### [Good architecture content from Udi Dahan](https://osherove.com/blog/2005/10/9/good-architecture-content-from-udi-dahan.html) - Aug 9, 2005 ### [Small Domain Specific Language for the GoF Design patterns](https://osherove.com/blog/2005/8/9/small-domain-specific-language-for-the-gof-design-patterns.html) - Jul 14, 2005 ### [\[Audio Interview\] Steve Cook -Software Factories and Domain Specific Languages](https://osherove.com/blog/2005/7/14/audio-interview-steve-cook-software-factories-and-domain-spe.html) --- title: "Two small irrelevant tips" url: "https://osherove.com/blog/2005/10/2/two-small-irrelevant-tips.md" canonical: "https://osherove.com/blog/2005/10/2/two-small-irrelevant-tips.html" published: "2005-10-02T18:13:00" updated: "2005-10-02T18:13:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is something I didn't find out until a few days ago. What happens when you search for \"new York weather\" on google? Find out. How do you get rid of the annoying irritating useless \"personal tabs\" in MSN Messenger ?…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Two small irrelevant tips By Roy Osherove October 2, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 2, 2005; technical details may be outdated. This is something I didn't find out until a few days ago. **What happens** when you search for "new York weather" on google? [Find out.](http://www.google.com/search?ie=UTF-8&oe=UTF-8&q=new+york+weather) **How do you get rid of the annoying irritating useless "personal tabs" in MSN Messenger**? It seems like MS does not want you to do that, so they "hid" the option for this under "tools-options-security". Simply check the "this is  a public computer so don't show my tabs". I have to wonder if this is a simple usability issue or a little hidden agenda (or both). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 16, 2005 ### [When LINQ and Yukon meet](https://osherove.com/blog/2005/10/16/when-linq-and-yukon-meet.html) - Oct 10, 2005 ### [The new MS 4000 keyboard and a ThinkPad go great together](https://osherove.com/blog/2005/10/10/the-new-ms-4000-keyboard-and-a-thinkpad-go-great-together.html) - Aug 23, 2005 ### [The DIMES project aims to map the internet - with your help](https://osherove.com/blog/2005/8/23/the-dimes-project-aims-to-map-the-internet-with-your-help.html) - Aug 22, 2005 ### [Can you Digg it? Digg.Com](https://osherove.com/blog/2005/8/22/can-you-digg-it-diggcom.html) --- title: "Philosophical development questions and the rule of the lowest common denominator" url: "https://osherove.com/blog/2005/9/15/philosophical-development-questions-and-the-rule-of-the-lowe.md" canonical: "https://osherove.com/blog/2005/9/15/philosophical-development-questions-and-the-rule-of-the-lowe.html" published: "2005-09-15T00:24:00" updated: "2005-09-15T00:24:00" tags: [] author: "Roy Osherove" description: "I really am a fan of Agile development, and smart people are abound in any methodology camp I attend (mailing lists and such). But sometimes, *plenty of sometimes*, instead of talking about details, and \"how\" to do…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Philosophical development questions and the rule of the lowest common denominator By Roy Osherove September 15, 2005 **Historical article** · Originally published September 15, 2005; technical details may be outdated. I really am a fan of Agile development, and smart people are abound in any methodology camp I attend (mailing lists and such). But sometimes, \*plenty of sometimes\*, instead of talking about details, and "how" to do things, people start getting very philosophical about it. What do I mean by that? Well, there are several signs that things are going astray: - People start to argue about the smallest insignificant things, such as naming for various practices, what does the XYZ acronym really mean, how long is an X amount of time \*really\* supposed to mean, or was it just an example of a more elaborate part of the author's idea for the methodology.  (for example, trying to find an acronym that means [the opposite of BDUF](http://groups.yahoo.com/group/extremeprogramming/message/111089)) - Someone would go into the forum or mailing list, and ask a simple question such as "We're trying to do small iterations but management won't let us" and in response they would get stuff like "Leave your Job" or "If they don't let you do all of it, you might as well forget it" instead of something that actually helps people out I'm more of a pragmatist. You'd think that people that implement all this stuff would have far fewer time to sit down and simply chit chat with the whole world about whether an [XP Oath](http://www.jamesshore.com/Blog/An-Extreme-Stake-in-the-Ground.html) is worth taking all over again (even if you decided that the answer is "yes", can you convince anyone but the 50 people who actually try to read the whole thread?) I don't like people who simply talk too much about something until it starts to live in a different dimension (an old saying about Buddhism I think it was, goes "Look at something until it becomes boring. Continue to look at it until it becomes interesting again") once it starts to get into the "But what does "Energized Work" really mean?" kinda stuff, I start to lose my patience. i see no value to real life there. I would never use that term because I would use the term best suited to describe to people what I want them to do. Just like I wouldn't use the term "pair programming" in some companies, but still encourage people to "try and solve this problem together" to achieve the same target. Useless discussion. In the same way, while I really do like the idea of software architecture, and do believe in clear architectural practices of various sorts, I can't really stand any long winded discussion about things that are so high up in the sky, that they don't even matter to any development organization I would ever encounter. Take any highly acclaimed book-architect(the kind who write architecture and methodology books for a living) and ask them to help design the smallest piece of software, something simple. Would they over-architect it? Assuming they follow all their own prescriptions, you bet. Now, have them architect a very complex system - would they over-architect that as well? Assuming they follow all their own prescriptions  - probably! and they would probably take much longer too. Oh, and take more money of course. Why? because people who speak in terms of "We are all building part of one large software the whole world is using" will always always only be able to architect systems that fit into the gigantic terms that they use. They have no use or interest in smaller scale, uninteresting, simple systems. Like billing, banking and so on. I'm not against architects - I'm against all the fluff that surrounds all the "high level" discussion about architecture. People have been discussing the term "Service Orientation" for a couple of years now. The only thing this has brought us is only more discussion. Artifacts for a Service Oriented world are just now starting to arrive and what you'll find is that everything is pretty much what is used to be, if you ever tried to build a large distributed system. Things only got easier, but nothing has fundamentally changed. Actually  -some things changed. Many people spoke for a lot of hours about concepts that only 2% of the developer population would ever really understand. In the end, the lowest common denominator still rules. Most systems are still built and will be built in a client-server fashion. \*some\* systems will be services, but how many systems will use "service conversations" and Service discovery mechanisms?  Take UML - that amazingly rich language which allows you to explain systems in many many ways. But most people would not have the slightest concept of how to use all the facets of UML other than drawing some squares and straw man on the white board and connect the dots, because that's what really matters. Yet very smart people have slaved over this standard for years, talking in a very high lever about earth shattering ideas. But I've been drawing squares on the white board for as long as I can remember, and before I ever read one design book. Some of the people who invented UML actually work at MS now, helping to create Microsoft's version of a system design tool - you can call it a stripped down UML with specific names for squares and lines, but no other types of diagrams (software factories). The lowers denominator one that contest too. The lowest denominator will win the Service oriented architecture contest in just the same way. Architecture principals, the simples ones, will be used. All the others will be known by 5% of the dev population and never really used (which is why I think COM+ was not as widely used as it should have been - the explanations and the architecture was a little too high up there for many people who had more important things to do like creating a system instead of reading a full book to learn that they can save lots and lots of code - what a shame). I also think the lowest common denominator will win the Methodology Contest. People will speak high and mighty into deep, very deep methodological issues and concepts. But in the end, only the simplest things will survive and ever be aired in public. The others just won't last because the dev community will only listen to what's easy to consume. In short, when I hear people start to go "deep down" into things that don't really mean anything in the real world. I know I can turn off the old conversation radar - it's just water passing down the stream, not rocks. --- title: "Back to Basics before Indigo: [Book] Understanding COM+" url: "https://osherove.com/blog/2005/9/14/back-to-basics-before-indigo-book-understanding-com.md" canonical: "https://osherove.com/blog/2005/9/14/back-to-basics-before-indigo-book-understanding-com.html" published: "2005-09-14T23:32:00" updated: "2005-09-14T23:32:00" tags: ["Recommended books"] author: "Roy Osherove" description: "Lately, I've had to give back what has to has come to be, for me at least, the ultimate guide to COM+ services and infrastructure. Interestingly enough, this book is not recent. It was actually published way back in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Back to Basics before Indigo: \[Book\] Understanding COM+ By Roy Osherove September 14, 2005 In [Recommended books](https://osherove.com/blog/category/recommended-books) **Historical article** · Originally published September 14, 2005; technical details may be outdated. Lately, I've had to give back what has to has come to be, for me at least, the ultimate guide to COM+ services and infrastructure. Interestingly enough, this book is not recent. It was actually published way back in 1999, and it's called "[Understanding COM+](https://www.amazon.com/exec/obidos/ASIN/0735606668/ref=pd_sim_2/iserializable-20)". It was written by one of the funniest geeks I've come to appreciate deeply- [David Platt](http://www.rollthunder.com/) _(which, incidentally, you can [hear in an audio interview](http://www.teamagile.com/mainpages/Interviews.html) along with Juval Lowy - it gets pretty funny)_. The book was written when the term "COM+" was pretty much a newborn, in the days of COM and MTS, when VB developers ruled the world of Microsoft IT applications. I reread the book lately (since I had to give it up to the friend who lent it to me) and it's pretty much just as relevant today. It does not mention .NET at all (there was nothing of the sort back then) but it doesn't have to. The whole point is to understand what COM+ brings to the plate (in .NET it's called "Component Services" but it ties in to the same technology) In that regard, all I can say is that this is a wonderful book for anyone who's ever wondered what all the hype was about COM+ ,and what's in this thing, really. Yes, it does distributed transactions, but **what else** does it do? only a handful of developers that I know can name all the services that COM+ brings to the plate, and even less have used more than one of them. Nevertheless, I do believe that COM+ is one of the biggest underestimates by developers in recent years when it comes to development technologies. People just don't get what they get in the package, and that's a damn shame. Especially now, when Indigo is up and about, almost. In my mind, it would be crucial to understand where COM+ ends and Indigo begins to reap the full benefits for distributed applications. Understanding MSMQ, Queued Components, Loosely coupled events and Interception is just as vital as it is to understand what web services are, what Service Orientation is, and what a ServiceContract is. I think any developer who wants to understand the architectural and infrastructural challenges and changes Indigo brings, owes themselves a little trip to recent history and current events, to understand the infrastructure that already drives large parts of many applications, or, at least, should have been. The writing is funny at times and the text is very informative, with great examples telling you the "Why", not only the "How". The text is a bit unique because it doesn't really tell you how to program against COM+ (there are some code samples, but they are not the point), but more like a functional spec telling you what COM+ is supposed to be to everyone who uses it, and how it gets about its business of adding all those services. David has forgotten more about COM+ than most developers will ever know about it, and that was 6 years ago. One can only assume what he's going to forget about .NET 2.0 :) [**Understanding COM+,**](https://www.amazon.com/exec/obidos/ASIN/0735606668/ref=pd_sim_2/iserializable-20) **by David S. Platt** _On that note, I'd also recommend_ [_Transactional COM+ by Tim Ewald_](https://www.amazon.com/exec/obidos/ASIN/0201615940/ref=pd_sim_2/iserializable-20) _as a very good compliment to David's book._ ## More in Recommended books [All posts in Recommended books](https://osherove.com/blog/category/recommended-books) - Apr 15, 2005 ### [\[Book of the month\] Working effectively with legacy code](https://osherove.com/blog/2005/4/15/book-of-the-month-working-effectively-with-legacy-code.html) - May 7, 2004 ### [Got new books!](https://osherove.com/blog/2004/5/7/got-new-books.html) --- title: "What 2 questions would you ask Kent Beck?" url: "https://osherove.com/blog/2005/9/14/what-2-questions-would-you-ask-kent-beck.md" canonical: "https://osherove.com/blog/2005/9/14/what-2-questions-would-you-ask-kent-beck.html" published: "2005-09-14T22:58:00" updated: "2005-09-14T22:58:00" tags: ["Agile Related", "Interview"] author: "Roy Osherove" description: "If you had an hour to talk with Kent Beck , a proud father of eXtreme Programming , and you could only ask two questions , what would you ask? I'll be interviewing Kent as part of my audio interview series this week. I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What 2 questions would you ask Kent Beck? By Roy Osherove September 14, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published September 14, 2005; technical details may be outdated. If you had an hour to talk with [Kent Beck](http://c2.com/ppr/about/author/kent.html), a proud father of [eXtreme Programming](http://www.xprogramming.com/), and **you could only ask two questions**, what would you ask? I'll be interviewing Kent as part of [my audio interview series](http://www.teamagile.com/mainpages/Interviews.html) this week. I promise to take into consideration any good questions that come up in the comments. One of the things we plan to talk about is the whole notion of "BDUF" ("Big Design Up Front") in agile projects, and we'll also touch on [the column that Joel On Software wrote on this subject](http://www.joelonsoftware.com/articles/AardvarkSpec.html) (and [all the responses to it](http://www.google.com/search?hl=en&lr=&q=joel+bduf)). I await your inputs. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 9, 2005 ### [The Agile Blog](https://osherove.com/blog/2005/11/9/the-agile-blog.html) - Oct 16, 2005 ### [My Agile talk at Ireland Devs group finally has permanent links](https://osherove.com/blog/2005/10/16/my-agile-talk-at-ireland-devs-group-finally-has-permanent-li.html) - Sep 14, 2005 ### [New blog from NUnit primary maintainer - Charlie Poole](https://osherove.com/blog/2005/9/14/new-blog-from-nunit-primary-maintainer-charlie-poole.html) - Sep 7, 2005 ### [September at Agile Israel - Why Agile, and lessons learned from implementing SCRUM](https://osherove.com/blog/2005/9/7/september-at-agile-israel-why-agile-and-lessons-learned-from.html) --- title: "New blog from NUnit primary maintainer - Charlie Poole" url: "https://osherove.com/blog/2005/9/14/new-blog-from-nunit-primary-maintainer-charlie-poole.md" canonical: "https://osherove.com/blog/2005/9/14/new-blog-from-nunit-primary-maintainer-charlie-poole.html" published: "2005-09-14T11:38:00" updated: "2005-09-14T11:38:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Charlie Poole finally has a blog . Charlie is the primary maintainer and caretaker of NUnit for quite some time now, and it's great to finally be able to read his thoughts and comment on them, rather than doing so on a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New blog from NUnit primary maintainer - Charlie Poole By Roy Osherove September 14, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published September 14, 2005; technical details may be outdated. [Charlie Poole](http://www.pooleconsulting.com/) finally [has a blog](http://nunit.com/blogs). Charlie is the primary maintainer and caretaker of [NUnit](http://www.nunit.org/) for quite some time now, and it's great to finally be able to read his thoughts and comment on them, rather than doing so on a mailing-list basis. I'd recommend anyone interested in Agile, XP, Unit testing and test driven development to read his blog. Hopefully - he'll keep it up (and from my experience - the more you realize someone actually reads your blog, the more you'll maintain it) His [first real post](http://nunit.com/blogs/?p=8) talks about slow-vs. fast unit tests (i.e integration tests?) and starts an interesting discussion correlating them to user stories and costs in an XP project. I'd have to sleep on that thought a little, but it sure is interesting. Subscribed! ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Oct 16, 2005 ### [My Agile talk at Ireland Devs group finally has permanent links](https://osherove.com/blog/2005/10/16/my-agile-talk-at-ireland-devs-group-finally-has-permanent-li.html) - Sep 14, 2005 ### [What 2 questions would you ask Kent Beck?](https://osherove.com/blog/2005/9/14/what-2-questions-would-you-ask-kent-beck.html) - Sep 7, 2005 ### [September at Agile Israel - Why Agile, and lessons learned from implementing SCRUM](https://osherove.com/blog/2005/9/7/september-at-agile-israel-why-agile-and-lessons-learned-from.html) - Aug 31, 2005 ### [Agile conference coming to Israel - Your input is required.](https://osherove.com/blog/2005/8/31/agile-conference-coming-to-israel-your-input-is-required.html) --- title: "Hear MSDN webcasts on your favorite audio player" url: "https://osherove.com/blog/2005/9/14/hear-msdn-webcasts-on-your-favorite-audio-player.md" canonical: "https://osherove.com/blog/2005/9/14/hear-msdn-webcasts-on-your-favorite-audio-player.html" published: "2005-09-14T11:30:00" updated: "2005-09-14T11:30:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "How to download MSDN webcasts and listen on your MP3 player - level 100" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hear MSDN webcasts on your favorite audio player By Roy Osherove September 14, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 14, 2005; technical details may be outdated. [How to download MSDN webcasts and listen on your MP3 player - level 100](http://codebetter.com/blogs/jeffrey.palermo/archive/2005/09/13/131925.aspx) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Oct 30, 2005 ### [Amazoner 1.0.1 - Larger Images for Books and a dedicated website](https://osherove.com/blog/2005/10/30/amazoner-101-larger-images-for-books-and-a-dedicated-website.html) - Oct 19, 2005 ### [Introducing Amazoner: Create Amazon Associate Links with ease](https://osherove.com/blog/2005/10/19/introducing-amazoner-create-amazon-associate-links-with-ease.html) - Aug 23, 2005 ### [Picasa "Hello" is cool + a nice tip about using Hello](https://osherove.com/blog/2005/8/23/picasa-quothelloquot-is-cool-a-nice-tip-about-using-hello.html) - Jul 19, 2005 ### [Resharper 2.0 for VS 2005!](https://osherove.com/blog/2005/7/19/resharper-20-for-vs-2005.html) --- title: "September at Agile Israel - Why Agile, and lessons learned from implementing SCRUM" url: "https://osherove.com/blog/2005/9/7/september-at-agile-israel-why-agile-and-lessons-learned-from.md" canonical: "https://osherove.com/blog/2005/9/7/september-at-agile-israel-why-agile-and-lessons-learned-from.html" published: "2005-09-07T16:32:00" updated: "2005-09-07T16:32:00" tags: ["Agile Related", "Community"] author: "Roy Osherove" description: "The next meeting will be held on the 26th of this Month, Monday. For session and speaker details go the the event page . The first part of this month's meeting will be dedicated to a session we never got to finish at…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # September at Agile Israel - Why Agile, and lessons learned from implementing SCRUM By Roy Osherove September 7, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published September 7, 2005; technical details may be outdated. **The next meeting will be held on the 26th of this Month, Monday.** For session and speaker details [go the the event page](http://www.agileisrael.com/Default.aspx?tabid=111). The first part of this month's meeting will be dedicated to a session we never got to finish at the first meeting of Agile Israel - “Why Agile” - an introduction to the “Why” behind the various Agile Methodologies and the differences between Agile methodologies and Engineering methodologies today. The talk will be given by [Roy Osherove](http://www.iserializable.com/). The second part of the meeting will be held by Joe Weisblatt, a technical leader on a large software project, encompassing almost 150 developers on 3 continents in 4 time zones. He spearheaded the initiative to move this project to an Agile methodology. Joe will describe his efforts and the results, including many of the arguments for and against within the project, challenges to adoption of Agile methodology, and the results of his effort - both positive and negative. **Agenda:** 17:30 - 18:00 - **Arrival & Registration** 18:00 - 19:15 - **Why Agile - Roy Osherove** **break** 19:30 - 20:45 - **Lessons from implementing a large Agile Project - Joe Weisblatt** It's important for us to know if you'll be attending the meeting, so that we can prepare enough food and seats. If you plan to attend, send an email to **yes at AgileIsrael.com** specifying your name and that you will attend. If you're not already a member of the Agile Israel group and you live in Israel, I encourage you to register at the site for free, to gain access to downloadable presentation slides and audio from the meetings(most audio is in Hebrew) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Sep 14, 2005 ### [What 2 questions would you ask Kent Beck?](https://osherove.com/blog/2005/9/14/what-2-questions-would-you-ask-kent-beck.html) - Sep 14, 2005 ### [New blog from NUnit primary maintainer - Charlie Poole](https://osherove.com/blog/2005/9/14/new-blog-from-nunit-primary-maintainer-charlie-poole.html) - Aug 31, 2005 ### [Agile conference coming to Israel - Your input is required.](https://osherove.com/blog/2005/8/31/agile-conference-coming-to-israel-your-input-is-required.html) - Aug 30, 2005 ### [Interesting Agile related blog - Cory Foy](https://osherove.com/blog/2005/8/30/interesting-agile-related-blog-cory-foy.html) --- title: "[OT] Horrible movie about how fur coats are made" url: "https://osherove.com/blog/2005/9/4/ot-horrible-movie-about-how-fur-coats-are-made.md" canonical: "https://osherove.com/blog/2005/9/4/ot-horrible-movie-about-how-fur-coats-are-made.html" published: "2005-09-04T20:53:00" updated: "2005-09-04T20:53:00" tags: [] author: "Roy Osherove" description: "This horrible and very hard to watch movie was emailed as a link that's going around these days. It shows how furs are actually \"made\". It's amazing how much cruelty there is to animals here, being stripped alive. I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] Horrible movie about how fur coats are made By Roy Osherove September 4, 2005 **Historical article** · Originally published September 4, 2005; technical details may be outdated. [This horrible and very hard to watch movie](http://www.strasbourgcurieux.com/fourrure) was emailed as a link that's going around these days. It shows how furs are actually "made". It's amazing how much cruelty there is to animals here, being stripped alive. I actually stopped watching 20 seconds in. I'm putting this here so that I'll always remember why people are the worst predator of all. I'm no saint myself. I eat meat, burgers, all that. But truly - this movie is the reason I'll \*at least\* never buy a fur coat . ever. **Update (15.9):** Looks like Castro , a big clothing store chain in Israel has [announced it will stop marketing fur](http://www.ynet.co.il/articles/0,7340,L-3142530,00.html), due to customer ban and pressure from various groups. This was the result of a couple of months of angry emails on the Internet, some of them showing the horrible movie I mentioned above. (news link is in Hebrew) --- title: "Agile conference coming to Israel - Your input is required." url: "https://osherove.com/blog/2005/8/31/agile-conference-coming-to-israel-your-input-is-required.md" canonical: "https://osherove.com/blog/2005/8/31/agile-conference-coming-to-israel-your-input-is-required.html" published: "2005-08-31T14:51:00" updated: "2005-08-31T14:51:00" tags: ["Agile Related", "Community"] author: "Roy Osherove" description: "I'm in the process of trying to implement an Agile Conference here in Israel somewhere in the first half of next year. The plan is to have a two day event with talks and workshops from well known international speakers…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile conference coming to Israel - Your input is required. By Roy Osherove August 31, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published August 31, 2005; technical details may be outdated. I'm in the process of trying to implement an Agile Conference here in Israel somewhere in the first half of next year. The plan is to have a two day event with talks and workshops from well known international speakers in the Agile Field coupled with talks from local speakers on Agile development tools for .NET and Other languages (Java for example) To create something like this, one needs to justify the cost of creating such an event for the sponsors. The main thing is to actually be sure that **enough people show up** and pay up the entrance fee. I'm still not sure how much an entrance will cost, but I'm asking you , the Israeli reader - do you think your company would pay up to send you to such an event? If so - what do you expect to hear and learn there? I'd appreciate you leaving a comment on this post telling me what you think. I'm also checking the feasibility through other channels, but I figure the readers of this blog are a great source of information on this. Feel free to write if you'd like this idea or not, and how much would you be willing to shell out to listen or attend the workshops in this two day event. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Sep 14, 2005 ### [New blog from NUnit primary maintainer - Charlie Poole](https://osherove.com/blog/2005/9/14/new-blog-from-nunit-primary-maintainer-charlie-poole.html) - Sep 7, 2005 ### [September at Agile Israel - Why Agile, and lessons learned from implementing SCRUM](https://osherove.com/blog/2005/9/7/september-at-agile-israel-why-agile-and-lessons-learned-from.html) - Aug 30, 2005 ### [Interesting Agile related blog - Cory Foy](https://osherove.com/blog/2005/8/30/interesting-agile-related-blog-cory-foy.html) - Aug 23, 2005 ### [\[Article\] Issues in breaking dependencies for unit testing](https://osherove.com/blog/2005/8/23/article-issues-in-breaking-dependencies-for-unit-testing.html) --- title: "Another Israeli .NET Blogger - Ilan Assayag" url: "https://osherove.com/blog/2005/8/31/another-israeli-net-blogger-ilan-assayag.md" canonical: "https://osherove.com/blog/2005/8/31/another-israeli-net-blogger-ilan-assayag.html" published: "2005-08-31T14:45:00" updated: "2005-08-31T14:45:00" tags: ["Blogging"] author: "Roy Osherove" description: "There's another Israeli blogger out there, though he hasn't written a lot.. yet. Hopefully, exposing Ilan Assayag's blog out in public view will make him write more stuff like the interesting MessageLoop component he…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another Israeli .NET Blogger - Ilan Assayag By Roy Osherove August 31, 2005 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published August 31, 2005; technical details may be outdated. There's another Israeli blogger out there, though he hasn't written a lot.. yet. Hopefully, exposing [Ilan Assayag's blog](http://ilanas.blogspot.com/) out in public view will make him write more stuff like the interesting [MessageLoop component he wrote for CodeProject](http://www.codeproject.com/useritems/messageloop.asp). The ball is in your court, Ilan :) **Update:** Just found a couple more: [Oren Ellenbogen](http://www.lnbogen.com/default.aspx) : .NET and Agile development [Pvel Bitz](http://www.pashabitz.com/): .NET etc. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Nov 16, 2005 ### [Good technology audio I've been listening to](https://osherove.com/blog/2005/11/16/good-technology-audio-ive-been-listening-to.html) - Nov 5, 2005 ### [Top 31 weblogs.asp.net blogs to subsrcibe to](https://osherove.com/blog/2005/11/5/top-31-weblogsaspnet-blogs-to-subsrcibe-to.html) - Aug 2, 2005 ### [What blog community site do you recommend for a new .NET blogger?](https://osherove.com/blog/2005/8/2/what-blog-community-site-do-you-recommend-for-a-new-net-blog.html) - Jul 17, 2005 ### [Selling my soul to AdSense](https://osherove.com/blog/2005/7/17/selling-my-soul-to-adsense.html) --- title: "Interesting Agile related blog - Cory Foy" url: "https://osherove.com/blog/2005/8/30/interesting-agile-related-blog-cory-foy.md" canonical: "https://osherove.com/blog/2005/8/30/interesting-agile-related-blog-cory-foy.html" published: "2005-08-30T21:43:00" updated: "2005-08-30T21:43:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Cory Foy has a very interesting Agile related blog. He also talks about other languages than .NET which is a refreshing read. Subscribed! - um, I mean I would have if I could only find an RSS feed link on that blog :(…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Interesting Agile related blog - Cory Foy By Roy Osherove August 30, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published August 30, 2005; technical details may be outdated. [Cory Foy](http://www.cornetdesign.com/) has a very interesting Agile related blog. He also talks about other languages than .NET which is a refreshing read. [Subscribed!](http://feeds.feedburner.com/CoryFoy)  ~_\-  um, I mean I **would have** if I could only find an RSS feed link on that blog :(_~ ~_Blogger.Com should really make the blogs RSS links more visible. I bet there's a hidden link to the RSS somewhere on there..._~ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Sep 7, 2005 ### [September at Agile Israel - Why Agile, and lessons learned from implementing SCRUM](https://osherove.com/blog/2005/9/7/september-at-agile-israel-why-agile-and-lessons-learned-from.html) - Aug 31, 2005 ### [Agile conference coming to Israel - Your input is required.](https://osherove.com/blog/2005/8/31/agile-conference-coming-to-israel-your-input-is-required.html) - Aug 23, 2005 ### [\[Article\] Issues in breaking dependencies for unit testing](https://osherove.com/blog/2005/8/23/article-issues-in-breaking-dependencies-for-unit-testing.html) - Aug 21, 2005 ### [Rally Software are doing it right](https://osherove.com/blog/2005/8/21/rally-software-are-doing-it-right.html) --- title: "[Audio Interview] David Platt & Juval Lowy - Why Software Sucks And Other Architectural Insights" url: "https://osherove.com/blog/2005/8/26/audio-interview-david-platt-amp-juval-lowy-why-software-suck.md" canonical: "https://osherove.com/blog/2005/8/26/audio-interview-david-platt-amp-juval-lowy-why-software-suck.html" published: "2005-08-26T21:39:00" updated: "2005-08-26T21:39:00" tags: ["Interview"] author: "Roy Osherove" description: "What do you ask when you get two software legends in one place? High level, world shattering questions, of course. Listen to this semi-serious chat mostly between Juval and David as they discuss matters such as Why…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Audio Interview\] David Platt & Juval Lowy - Why Software Sucks And Other Architectural Insights By Roy Osherove August 26, 2005 In [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published August 26, 2005; technical details may be outdated. What do you ask when you get two software legends in one place? High level, world shattering questions, of course. Listen to this semi-serious chat mostly between Juval and David as they discuss matters such as Why software today sucks, Rich Client Vs. the browser, ClickOnce and unprotected sex (you heard correctly), the anthology of TLAs, how to know you're a geek, their upcoming books, top things to watch out for in .NET 2.0, where is software architecture heading, top 3 things every .NET developer should have done by now, Platt's laws of the universe and much more discussion, jokes and good ol' geeky fun. Truly a one of kind human experiment, is all I can say about this one.

Language - English.

Go and Download  - 61 minutes, MP3 (28 MB)

**Who are those people?** **Juval Löwy** is the founder of IDesign and its Chief Architect. Juval is a seasoned software architect specializing in system architecture and large applications design. Juval helps IDesign customers design scaleable, robust, reusable, and extensible Enterprise applications, verifying that the customer has the design it takes to achieve the required quality, scalability, security, availability and throughput goals. Juval is [Microsoft’s Regional Director](http://www.microsoft.com/rd) for the Silicon Valley, working with Microsoft on on helping the industry adopt .NET. Juval also participates in the Microsoft internal design reviews for future versions of .NET. Juval is a frequent speaker at the major international software development conferences, where he talks about .NET, component-oriented design and development process. Click [here](http://www.idesign.net/idesign/BAC/DesktopDefault.aspx?tabindex=4&tabid=22#lowy) for complete list of conference talks by Juval. Juval authored [Programming .NET Components](https://www.amazon.com/exec/obidos/tg/detail/-/0596003471/qid=1032142147/sr=8-2/ref=sr_8_2/104-2684363-4400768?v=glance&s=books&n=507846) by O’Reilly. The book is dedicated to component-oriented programming and design using .NET, as well as the related system issues, such as remoting, threading and security. Juval also authored [COM and .NET Component Services: Mastering COM+](http://www.oreilly.com/catalog/comdotnetsvs) a book which talks at length about the challenging topic of .NET Enterprise Services. Juval published numerous articles, regarding almost every aspect of developing with .NET. Click [here](http://www.idesign.net/idesign/BAC/DesktopDefault.aspx?tabindex=3&tabid=21#lowy) for complete article list by Juval, as well as links to the articles. Microsoft recognized Juval as a [Software Legend](http://www.softwarelegends.com/) as one of the world top .NET experts and industry leaders. **David S. Platt**  teaches [Programming .NET at Harvard University](http://www.teamagile.com/mainpages/Harvard/harvardframe.htm) and at companies all over the world. He was selected by Microsoft as one of their Software Legends, which you can read about at [www.softwarelegends.com](http://www.softwarelegends.com/). He has taught classes on ACORD insurance standards since the very first OLifE class in 1995. He is the author of eight programming books, most recently _[Introducing Microsoft .NET, 3rd Edition](http://www.teamagile.com/mainpages/Books/imdn.aspx)_ from Microsoft Press, with three more on the way. It is currently outselling Tom Clancy's _Every Man a Tiger_ on Amazon.com, which tells you what kind of geeks buy their books there. "He's the only guy I know that can actually make an article on COM's apartment threading model funny," said Tana Sabatino. ## More in Interview [All posts in Interview](https://osherove.com/blog/category/interview) - Jan 22, 2006 ### [New audio from Agile Israel is available: Johanna Rothman and more!](https://osherove.com/blog/2006/1/22/new-audio-from-agile-israel-is-available-johanna-rothman-and.html) - Sep 14, 2005 ### [What 2 questions would you ask Kent Beck?](https://osherove.com/blog/2005/9/14/what-2-questions-would-you-ask-kent-beck.html) - Aug 23, 2005 ### [\[Audio Recording\] Juval Lowy on Project Planning and Tracking](https://osherove.com/blog/2005/8/23/audio-recording-juval-lowy-on-project-planning-and-tracking.html) - Aug 17, 2005 ### [\[Audio Interview\] Ingo Rammer and Christian Weyer On Distributed Applications Architecture And Practices](https://osherove.com/blog/2005/8/17/audio-interview-ingo-rammer-and-christian-weyer-on-distribut.html) --- title: "[Audio Recording] Juval Lowy on Project Planning and Tracking" url: "https://osherove.com/blog/2005/8/23/audio-recording-juval-lowy-on-project-planning-and-tracking.md" canonical: "https://osherove.com/blog/2005/8/23/audio-recording-juval-lowy-on-project-planning-and-tracking.html" published: "2005-08-23T23:22:00" updated: "2005-08-23T23:22:00" tags: ["Interview"] author: "Roy Osherove" description: "Juval was invited to speak to in Israel in front of a group of .NET related folks. Juval's visit was sponsored by Gadi Meir, of Idag Israel. Juval spent 2 hours talking about something he usually does not address in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Audio Recording\] Juval Lowy on Project Planning and Tracking By Roy Osherove August 23, 2005 In [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published August 23, 2005; technical details may be outdated. [Juval](http://www.idesign.net/) was invited to speak to in Israel in front of a group of .NET related folks. Juval's visit was sponsored by Gadi Meir, of [Idag](http://www.idag.co.il/) Israel. Juval spent 2 hours talking about something he usually does not address in public conferences and such, not even in his books - the issues of software development process and project management. In these two hours he presents his vision and way of work in projects he managed (when he had both an architect and a project lead role) and the things he believes bring on the best result. The outcome is "Staged Delivery" which he outlines in broad strokes, yet specific enough to gain some good understanding of the concepts behind it. Some of the issues addressed include: Staffing, the product life cycle, component integration plan and the component life cycle, component testing, Estimation and estimation tools, Earned Value tracking and more. The talk ends 5 minutes prematurely due to technical difficulties, but let me assure you that you don't miss anything terribly important (no "surprise ending" :) ) Download in available in two parts, one hour each, in MP3 format, for your car listening pleasure.. Unfortunately slides were not available for this talk. For the slides, and a full talk on this subject you'll have to attend Juval's Master class (which I can attest is pretty deep..) [**Go download.**](http://www.teamagile.com/mainpages/Interviews.html) ## More in Interview [All posts in Interview](https://osherove.com/blog/category/interview) - Sep 14, 2005 ### [What 2 questions would you ask Kent Beck?](https://osherove.com/blog/2005/9/14/what-2-questions-would-you-ask-kent-beck.html) - Aug 26, 2005 ### [\[Audio Interview\] David Platt & Juval Lowy - Why Software Sucks And Other Architectural Insights](https://osherove.com/blog/2005/8/26/audio-interview-david-platt-amp-juval-lowy-why-software-suck.html) - Aug 17, 2005 ### [\[Audio Interview\] Ingo Rammer and Christian Weyer On Distributed Applications Architecture And Practices](https://osherove.com/blog/2005/8/17/audio-interview-ingo-rammer-and-christian-weyer-on-distribut.html) - Jul 28, 2005 ### [\[Audio Interview\] Randy Miller on MSF Agile and software modeling techniques](https://osherove.com/blog/2005/7/28/audio-interview-randy-miller-on-msf-agile-and-software-model.html) --- title: "[Article] Issues in breaking dependencies for unit testing" url: "https://osherove.com/blog/2005/8/23/article-issues-in-breaking-dependencies-for-unit-testing.md" canonical: "https://osherove.com/blog/2005/8/23/article-issues-in-breaking-dependencies-for-unit-testing.html" published: "2005-08-23T22:36:00" updated: "2005-08-23T22:36:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "One of the most important issues I've come to realize is the various ways of dealing with legacy code, mainly - how to deal with breaking multiple dependencies on an existing class or method that needs to be tested.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Article\] Issues in breaking dependencies for unit testing By Roy Osherove August 23, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published August 23, 2005; technical details may be outdated. One of the most important issues I've come to realize is the various ways of dealing with legacy code, mainly - how to deal with breaking multiple dependencies on an existing class or method that needs to be tested. There are two basic ways to break dependencies, with various "dialects"  for each one. They both have their pros and cons and I won't explain in detail how to do them, but mainly, which of them you should choose and when. Go read [Issues in breaking dependencies for unit testing](https://osherove.com/rosherove/articles/DependencyIssues.aspx)  ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Aug 31, 2005 ### [Agile conference coming to Israel - Your input is required.](https://osherove.com/blog/2005/8/31/agile-conference-coming-to-israel-your-input-is-required.html) - Aug 30, 2005 ### [Interesting Agile related blog - Cory Foy](https://osherove.com/blog/2005/8/30/interesting-agile-related-blog-cory-foy.html) - Aug 21, 2005 ### [Rally Software are doing it right](https://osherove.com/blog/2005/8/21/rally-software-are-doing-it-right.html) - Aug 10, 2005 ### [Video of my "Intro to Agile Development" talk at INDA is online](https://osherove.com/blog/2005/8/10/video-of-my-quotintro-to-agile-developmentquot-talk-at-inda.html) --- title: "The DIMES project aims to map the internet - with your help" url: "https://osherove.com/blog/2005/8/23/the-dimes-project-aims-to-map-the-internet-with-your-help.md" canonical: "https://osherove.com/blog/2005/8/23/the-dimes-project-aims-to-map-the-internet-with-your-help.html" published: "2005-08-23T20:15:00" updated: "2005-08-23T20:15:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Update : I've just installed the agent and it is pretty cool. It gives you a visual map of your agent's \"traceroute\"s based on IP, country or ISP. Simple and lovable. The DIMES project (Distributed Internet MEasurements…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The DIMES project aims to map the internet - with your help By Roy Osherove August 23, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 23, 2005; technical details may be outdated. **Update**: I've just installed the agent and it is pretty cool. It gives you a visual map of your agent's "traceroute"s based on IP, country or ISP. Simple and lovable. The [DIMES](http://www.netdimes.org/data.php) project_(Distributed Internet MEasurements & Simulations)_ is an Israeli research initiative that aims to map the Internet. That's a pretty big task but they seem to have found a great way to do it. Like Seti@Home, they use volunteer computers to do their job (so if you want to help - [you're welcome](http://www.netdimes.org/download.html) ), and it's working great. For example, they have a map of over 1,250,000 routers - the biggest one of all the other research labs, and we're basically talking about two programmers here, and not even enough money to keep all the data they are collecting... In any case, [they have a website](http://www.netdimes.org/data.php), and even an [RSS feed](http://www.netdimes.org/news.xml).  Did I mention it's all open source? You can check out some of the cool graphical maps they've created [here](http://www.netdimes.org/community.html). For example - The [In](http://www.netdimes.org/ipmap.png)[ternet IP graph](http://www.netdimes.org/ipmap.png) Now, here's a really cool thing: _"We have developed a new mapping and visualization tool based on Google Maps: The_ [_DIMES Internet Mapper_](http://www.netdimes.org/maps/mapBrowser.html)_. For the first time, it allows you to visually study the connectivity of every city in the world. "_ **If you do plan on joining the effort** - when you first install the agent on your machine - you are able to pick a group you belong to. I've created a specialized group for us bloggers and blog reader. Let's see how many we can put on there. It's called the **"Blog-Geeks"** group and you join it when you first install the application on your machine. See you there! Great idea, great execution. Israeli Coolness. _\[via_ [_YNet_](http://www.ynet.co.il/articles/0,7340,L-3131528,00.html) _(Hebrew)\]_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 10, 2005 ### [The new MS 4000 keyboard and a ThinkPad go great together](https://osherove.com/blog/2005/10/10/the-new-ms-4000-keyboard-and-a-thinkpad-go-great-together.html) - Oct 2, 2005 ### [Two small irrelevant tips](https://osherove.com/blog/2005/10/2/two-small-irrelevant-tips.html) - Aug 22, 2005 ### [Can you Digg it? Digg.Com](https://osherove.com/blog/2005/8/22/can-you-digg-it-diggcom.html) - Aug 17, 2005 ### [Installing Exchange overnight, oh my!](https://osherove.com/blog/2005/8/17/installing-exchange-overnight-oh-my.html) --- title: "Issues in breaking dependencies for unit testing" url: "https://osherove.com/blog/2005/8/23/issues-in-breaking-dependencies-for-unit-testing.md" canonical: "https://osherove.com/blog/2005/8/23/issues-in-breaking-dependencies-for-unit-testing.html" published: "2005-08-23T19:43:00" updated: "2005-08-23T19:43:00" tags: [] author: "Roy Osherove" description: "One of the most important issues I’ve come to realize is the various ways of dealing with legacy code, mainly - how to deal with breaking multiple dependencies on an existing class or method that needs to be tested.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Issues in breaking dependencies for unit testing By Roy Osherove August 23, 2005 **Historical article** · Originally published August 23, 2005; technical details may be outdated. One of the most important issues I’ve come to realize is the various ways of dealing with legacy code, mainly - how to deal with breaking multiple dependencies on an existing class or method that needs to be tested. There are two basic ways to break dependencies, with various “dialects”  for each one. The both have their pros and cons and I won’t explain in detail how to do them, but mainly, which of them you should choose and when. _**Mock Objects**_ **The first method of breaking dependencies is that of “Mock Objects”.** In short, it relates to how one would send an instance of a “fake” class to be interacted with from the class under test instead of the \*real\* class. For example. to test a method that calls various Logging methods against a class that logs stuff to the database, you might be inclined to replace the instance of the logging class with that of a fake one, so that any calls made to the log will not actually go to a database, and thus will run much faster and won’t need any configurations before the tests are run. That fake class can also tell us whether the “Log” method was called or not and how many times, since it is totally under our tester’s control (they created it). This article will deal mainly with the second main approach to testability, so if you’d like to read more about the Mock Objects method, there is plenty of material available on this over at [www.MockObjects.com](http://www.mockobjects.com/) (also called the “Dependency Inversion” or “Inversion of Control” pattern). Martin Fowler also writes about this pattern in [this fine article](http://www.martinfowler.com/articles/injection.html), though it is less related to testing and more generic in nature. _**Extract & Override**_ The second method of breaking dependencies is much closer to the tested code, and relies heavily on inheritance. **It is usually called “Extract & Override”.** The main idea here is that instead of “faking” the objects which are problematic. you “fake” the actual calls to them. An example might be in order. Suppose we have a class called “MyCalculator” which contains code like this: public double Calculate(int x, int y) {    if(x>1000)    {    **Logger.StaticLog(“Calc”:Got an illegal number”);****//problematic call**     throw new Exception(“Illegal number”);    } } suppose we want to test this method.  And suppose Logger.StaticLog() takes 10 seconds to do its magic (you’d probably do that asynchronous but this example is good enough). Obviously any tests that run this method will take too long to run, and unfortunately, this is a static method, so we can’t easily “inject” or “replace” the Logger with a fake instance since there is no instance to work with. So instead, we will refactor our code to make it testable like this: public double Calculate(int x, int y) {    if(x>1000)    {    callLog(“Calc”:Got an illegal number”);//refactored     throw new Exception(“Illegal number”);    } } protected virtual void callLog(string text) {    Logger.StaticLog(text); } the idea is that in our tests, we won’t really use this original calc class, but instead **inherit from it** and override the “callLog” method to not really do anything (which means you’ll want to make those overridable methods with as little logic as possible) like this \[Test\] \[ExpectedException(typeof(Exception))\] public void Calculate\_IllegalNumber\_ThrowsException() {    TestableCalc c = new TestableCalc();    c.Calculate(1001, 0); } class TestableCalc: Calculator { public string callLogText = string.Empty;    protected override void callLog(string text)    {    callLogtext = text;    } } Notice that the second method allows you to break even very hard dependencies in a relatively easy manner. **Pros and Cons of Mock Objects** **Pros** \-         Most mock object frameworks allow you test test interaction between objects in a very easy manner, by allowing you to add any number of “expectations” and return values to your mock objects that will be tested against. The syntax is clear and all of the hard work of maintaining the state of the cals to the mock object is performed with the mock object system. \-         The last sentence means that tests involving a single mock object will be very readable and easy to write, especially when multiple calls are expected against it, or when parameter values are being tests for method calls (for example, to make sure that a Logger class is called 3 times with different values each time would be very easy to write with a framework such as NMock or NUnit.Mocks) **Cons** \-         the more depdencies you need to break on the tested object (legacy systems are usually just the thing that might have that) the mock Mock objects and stub objects you’ll need to create and initialize in your tests, and the more refactoring you will have to do to the system to make it testable (adding new interfaces, constructors, parameters and such..). this may prove almost impossible on some systems where you don’t own all the code and where refactoring needs to be done on code that you don’t own. \-         The more dependencies means also less readable tests because all the initialization is not readable at all when its 20 lines of code or more before the actual test takes place. Even if you refactor your mock initialization code it might still not be very readable. \-         Mock objects don’t help when you try to deal with code that calls static methods, singletons and other types of calls in which an object instance cannot be replaced (there are ways to refactor singletons into testability but you might not have that luxury) **Pros & Cons od Extract & Override** **Pros** \-         It’s much faster and easier to refactor the system into testability with Extract& Override (perhaps this should be named “Extractoring” ? ) You don’t need to introduce new interfaces into a system and the only requirements are that the class is overridable and that the methods are overridable (protected) \-         It’s faster and easier to write tests for such a system because test setup and object initialization is easier and clearer. o       To mimic system behavior override a method and return what you want using a publicly exposed member on the inheritor class or throw an exception by checking a public flag o       To check interaction calls simply check a publicly exposed member (“wasMethodXXCalled” or “GetMethodXXPassedValues()” on the inheritor class \-         You can break any dependency you like right at the source. o       You can override a Boolean validation check such as if(configurationSettings\[“key”\]==value) into if(hasKeyValue(value)) o       You can override full calls for static methods such as turning LogClass.StaticLog(“text”) into callLog(“text”) **Cons** \-         You have to do all the grunt work of verifying calls to methods, including parameter values, yourself. When we used mock objects, the mock object framework we used did that for us automatically. But when we do this manually  (i.e inherit our own class and override methods) we need to make the code work on our own which can lead to long code inside the overriding class. \-         If you need to override some methods and not others in a dynamic way (i.e different tests override different methods) you need to either implement base-forwariding logic into the overridden methods or create multiple inheriting classes which override different methods. In either case, it can get out of hand quickly. \-         In some types of applications, especially Real-Time, where performance matters a lot, adding many virtual method calls may actually be a hindrance. There are ways around that though, using various conditional-compilation techniques which are not discussed in this article. **Hidden bugs with E&O – biggest hazard of all** \-         When you override a method call, you usually end up with at least (hopefully only) one line of code in the actually virtual base method which simply calls some external dependency and may return a value. There is a problem here that may not be recognizable at first. To explain the problem I’ll need a little example. Here’s the code from the refactored class in the first example: **public double Calculate(int x, int y)** {    if(x>1000)    {    callLog(“Calc”:Got an illegal number”);//refactored     throw new Exception(“Illegal number”);    } } **protected virtual void callLog(string text)** {    Logger.StaticLog(text); } Now, consider what happens if suddenly, the design changes a bit and the logger takes in another parameter (and designs change with time). The new signature for the Logger.StaticLog now looks like this: Public static void StaticLog(string text) Public static void StaticLog(int severity, string text) There is a new parameter for severity of type int, and this is a new overload for the previous method. Fine and dandy. Now suppose we want to change our code to send a severity each time we call the log instead of using the old method. We might refactor the virtual method to take another parameter such as : **protected virtual void callLog(int severity,string text)** {    Logger.StaticLog(text); } But notice that we don’t actually change the actual call to the static log method. In fact, in our test we would do the same thing as in the first example – override the virtual method and make sure it is called with the correct parameters. So our tests might look like this: **\[Test\]** **public void Calculate\_IllegalNumber\_LogsSeverity()** {    TestableCalc c = new TestableCalc();    c.Calculate(1, 0);    Assert.AreEqual(100, c.callLogSeverity);    Assert.AreEqual(“illegal number”, c.callLogText); } **class TestableCalc: Calculator** { public string callLogText = string.Empty; public int callLogSeverity = 0;    **protected override void callLog(int severity,string text)**    {    callLogtext = text; callLogSeverity = severity    } } We’re overridng the callLog method to make sure it is called with the correct values. To make this test pass our code might look like this: **//the method we are testing** **public double Calculate(int x, int y)** {    if(x>1000)    {    **callLog**(100,”illegal number”);    throw new Exception(“Illegal number”);    } } **protected virtual void callLog(int severity,string text)** { **//notice that there is a bug here!!**    Logger.StaticLog(text); } Yes – this example will actually pass the callLog test, even though there is an obvious bug in it – we don’t really call the logger correctly! When you think about it, who’s to say that inside the **real virtual method** the code actually calls the correct static method? No one. We could make our code call the “callLog” refactored method correctly, but we have no way to assure that the actual line inside the CallLog method actually calls the method correctly. That’s because we actually override that call in our tests. That’s a dangerous place to be and you need to watch out for making mistakes on this. Your interaction test might say that everything is ok, but you may forget to actually call the real methods correctly in the virtual calls. This type of hazard does not exist with mock objects since with mock objects we don’t override any real implementation – just interfaces and method signatures. This problem may not be as big as you think – I’ve rarely come across it. It’s kinda hard to find though, and it requires debugging to dig out. It would have been cought earlier with real Mock objects instead of using Mock Methods **Summary** Hopefully, you’ve seen that all good things have a dark side, but that doesn’t mean we can’t use them, we just need to know where the dark side begins and make sure we don’t go there (or that we at least know the way back). Mock objects and E&O(“close refactoring” as I like to call it)  are two great routes to a testable application. You’ll find the need to use E&O much more in legacy code than you would in new, green-field code, where you get the chance to write it testable from the beginning (Test-Driven code is often a great example of using interfaces and Mock Objects with the possibility of never needing to E&O anything). The end result is all about being able to produce something out of these tests, and you’ll need to figure out which of these approaches works best for you. I’d also recommend Michael Feathers’ great book entitled  “[Working Effectively with legacy code](https://www.amazon.com/exec/obidos/ASIN/0131177052/iserializable-20)” for more methods and refactoring patterns to break code dependencies. Indeed, everything I’ve outlined here also appears there and may be considered an extension to some of the books ideas and thoughts. You can also check out some of the Unit Testing Guidelines I keep adding to over time – there’s a [whole category of them in my weblog](http://weblogs.asp.net/rosherove/category/9834.aspx). --- title: "Picasa \"Hello\" is cool + a nice tip about using Hello" url: "https://osherove.com/blog/2005/8/23/picasa-quothelloquot-is-cool-a-nice-tip-about-using-hello.md" canonical: "https://osherove.com/blog/2005/8/23/picasa-quothelloquot-is-cool-a-nice-tip-about-using-hello.html" published: "2005-08-23T08:38:00" updated: "2005-08-23T08:38:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "I you haven't tried \" Hello \" from Picasa, you should seriously give it a try. It's a way to share pictures and chat with your friends at the same time. Sounds lame but it's actually pretty nice. You can also blog…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Picasa "Hello" is cool + a nice tip about using Hello By Roy Osherove August 23, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published August 23, 2005; technical details may be outdated. I you haven't tried "[Hello](http://www.hello.com/)" from Picasa, you should seriously give it a try. It's a way to share pictures and chat with your friends at the same time. Sounds lame but it's actually pretty nice. You can also blog pictures directly from it (if you have Picasa along with it it's perfect) into a Blogger.Com blog. Now, here's a cool tip I just discovered using Hello. Start a chat with a friend and send them a picture. Now, when the picture is in the preview pane, write any of the following: lol :) :( See what happens. If you wanna something really cool just paste in the following: :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol :) :) lol lol ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Oct 19, 2005 ### [Introducing Amazoner: Create Amazon Associate Links with ease](https://osherove.com/blog/2005/10/19/introducing-amazoner-create-amazon-associate-links-with-ease.html) - Sep 14, 2005 ### [Hear MSDN webcasts on your favorite audio player](https://osherove.com/blog/2005/9/14/hear-msdn-webcasts-on-your-favorite-audio-player.html) - Jul 19, 2005 ### [Resharper 2.0 for VS 2005!](https://osherove.com/blog/2005/7/19/resharper-20-for-vs-2005.html) - Jun 26, 2005 ### [\[Tool\] Convert NUnit tests to Team System Tests](https://osherove.com/blog/2005/6/26/tool-convert-nunit-tests-to-team-system-tests.html) --- title: "Can you Digg it? Digg.Com" url: "https://osherove.com/blog/2005/8/22/can-you-digg-it-diggcom.md" canonical: "https://osherove.com/blog/2005/8/22/can-you-digg-it-diggcom.html" published: "2005-08-22T16:16:00" updated: "2005-08-22T16:16:00" tags: ["Off Topic"] author: "Roy Osherove" description: "At first sight, Digg.Com looks like a really interesting site/blog/community information center. Plus, it has info on cool hacking tools and stuff. I am such a L33t h4x0r, ain't I? I can Digg it." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Can you Digg it? Digg.Com By Roy Osherove August 22, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 22, 2005; technical details may be outdated. At first sight, [Digg.Com](http://www.digg.com/) looks like a really interesting site/blog/community information center. Plus, it has info on cool hacking tools and stuff. I am such a L33t h4x0r, ain't I? I can Digg it. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 2, 2005 ### [Two small irrelevant tips](https://osherove.com/blog/2005/10/2/two-small-irrelevant-tips.html) - Aug 23, 2005 ### [The DIMES project aims to map the internet - with your help](https://osherove.com/blog/2005/8/23/the-dimes-project-aims-to-map-the-internet-with-your-help.html) - Aug 17, 2005 ### [Installing Exchange overnight, oh my!](https://osherove.com/blog/2005/8/17/installing-exchange-overnight-oh-my.html) - Aug 16, 2005 ### [\[OT\] Watch The Anchorman for the commentary](https://osherove.com/blog/2005/8/16/ot-watch-the-anchorman-for-the-commentary.html) --- title: "Tips for a successful MSMQ-enabled application" url: "https://osherove.com/blog/2005/8/22/tips-for-a-successful-msmq-enabled-application.md" canonical: "https://osherove.com/blog/2005/8/22/tips-for-a-successful-msmq-enabled-application.html" published: "2005-08-22T01:02:00" updated: "2005-08-22T01:02:00" tags: [".Net Original"] author: "Roy Osherove" description: "For the past few weeks I've been deep down inside a client's project. It's a large distributed application and one of the features I was working on made me realize just how little I've gotten the chance to use MSMQ in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tips for a successful MSMQ-enabled application By Roy Osherove August 22, 2005 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published August 22, 2005; technical details may be outdated. For the past few weeks I've been deep down inside a client's project. It's a large distributed application and one of the features I was working on made me realize just how little I've gotten the chance to use MSMQ in my projects, which is a total shame, really. MSMQ (Microsoft Message Queue) is a great bridge for helping you distribute messages between applications in an asynchronous manner (kinda like email). The syntax for using MSMQ is pretty easy (a couple of lines to send a message to a queue in the simplest form) and the benefits are huge if you need asynchronous conversations between your disconnected application components. However. MSMQ, like many other products and components, has its dark corners, as I've found during the past couple of weeks. I'll list them here so that I (and you) don't lose track of them. Some of them I've gotten straight off [Yoel Arnon](http://msmq.biz/) - MSMQ Guru and once part of the original MSMQ Team at Microsoft. [You can read his blog over here](http://spaces.msn.com/members/msmq/)(guess what its about..). 1. The problems with remote queues and COM+ transactions I had quite a simple scenario laid out for me. Get some info from a remote queue and try to insert it into a database. If the database insert fails, rollback the "get" from the queue as well so that the info stays queued for the next time around to be inserted into the DB again. Easy enough I tried to open a new transaction context using COM+ before calling "receive" from the queue and abort it if the DB failed. My integration tests (driven by NUnit) showed that even though Rollback was called, the message did not return into the queue. Weird because this was a transactional Queue and that should have worked. After asking Yoel it turns out that the fact that this queue was **remote**(residing on a different computer) meant that you couldn't actually do that. Remote queues do not support a transactional receive inside a transaction. If the queue had been local (on the local machine) this would have worked. "Send" does work in both ways, but receive is somehow special. There are ways around it, [detailed here](http://spaces.msn.com/members/msmq/Blog/cns!1pGjsZEQBluYM9y4YjJoNkTg!129.entry), but I've managed to get around it by doing the following: Create a local, private queue(cannot be used from remote machines) which acts as a transactional queue cache. The receive from the remote queue is actually a two-phase receive: get the info from the remote queue and put it into the local cache queue. Then do all your transactional work using the local queue. That guarantees that you never lose a message if you need to rollback on multiple actions. 2\. CanSend and CanRecieve = damn lies If your remote queue tells you that you can't sent or can't receive using its public boolean properties- don't trust it. It might be wrong. That's just how it is. 3\. Make sure you have the right permissions On windows Server 2003 in order to receive from a remote queue you need to explicitly go to the queue permissions page, click on the "Anonymous Logon" role and add the "Receive" ability to it, or you won't be able to receive from the remote queue It took me several hours to capture these important insights - so now you don't have to. If you have any more "Watch out for" tips on MSMQ - feel free to post a comment to this post. Good luck! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 9, 2006 ### [How to create your own Auto Login Remote Desktop Application](https://osherove.com/blog/2006/9/9/how-to-create-your-own-auto-login-remote-desktop-application.html) - Oct 16, 2005 ### [A better command line parsing class](https://osherove.com/blog/2005/10/16/a-better-command-line-parsing-class.html) - Aug 17, 2005 ### [\[Audio Interview\] Ingo Rammer and Christian Weyer On Distributed Applications Architecture And Practices](https://osherove.com/blog/2005/8/17/audio-interview-ingo-rammer-and-christian-weyer-on-distribut.html) - Aug 17, 2005 ### [Sherpa: Another Code/Layer/Application Generator](https://osherove.com/blog/2005/8/17/sherpa-another-codelayerapplication-generator.html) --- title: "PDC Blogging Contest is over - I lost to a cooool entry!" url: "https://osherove.com/blog/2005/8/21/pdc-blogging-contest-is-over-i-lost-to-a-cooool-entry.md" canonical: "https://osherove.com/blog/2005/8/21/pdc-blogging-contest-is-over-i-lost-to-a-cooool-entry.html" published: "2005-08-21T21:45:00" updated: "2005-08-21T21:45:00" tags: [] author: "Roy Osherove" description: "Looks like the PDC blogging contest is over and my poor entry lost to something which was definitely very cool . Congratulations Bonk ! You deserve it :) Totally cool animated movie there!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # PDC Blogging Contest is over - I lost to a cooool entry! By Roy Osherove August 21, 2005 **Historical article** · Originally published August 21, 2005; technical details may be outdated. Looks like the [PDC blogging contest is over](http://channel9.msdn.com/ShowPost.aspx?PostID=74816) and [my poor entry](http://weblogs.asp.net/rosherove/articles/pdc.aspx) lost to [something which was definitely very cool](http://pdc05.blogspot.com/2005/08/trying-to-blog-my-way-to-pdc.html). Congratulations [Bonk](http://pdc05.blogspot.com/)! You deserve it :) Totally cool animated movie there! --- title: ".NET Architecture clinic with Juval Lowy this week at Israel (free)" url: "https://osherove.com/blog/2005/8/21/net-architecture-clinic-with-juval-lowy-this-week-at-israel.md" canonical: "https://osherove.com/blog/2005/8/21/net-architecture-clinic-with-juval-lowy-this-week-at-israel.html" published: "2005-08-21T21:20:00" updated: "2005-08-21T21:20:00" tags: [] author: "Roy Osherove" description: "The August IVBUG meeting will be on Wednesday August 24 . This is so that we can take advantage of Juval Lowy being in Israel that week and agreeing to speak to us. It will be a combined meeting together with the C#…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .NET Architecture clinic with Juval Lowy this week at Israel (free) By Roy Osherove August 21, 2005 **Historical article** · Originally published August 21, 2005; technical details may be outdated. The **August [IVBUG](http://www.renaissance.co.il/ivbug) meeting will be on Wednesday August 24**.  This is so that we can take advantage of [Juval Lowy](http://www.idesign.net/idesign/DesktopDefault.aspx?tabindex=3&tabid=4 "http") being in Israel that week and agreeing to speak to us.  It will be a combined meeting together with the C# User Group.  Here is the topic outline: **NET Architecture Clinic** Wonder about .NET architecture best practices, guidelines and pitfalls? Wonder how to design world-class .NET-based systems? You understand the concepts but not how to apply them? Bring your questions to this real-time design session with Juval Lowy. In the first half of this high pace session, Juval will explain his original approach to large system analysis design and his IDesign Method™. Then, he will solicit, from a volunteer, requirements for an actual application, and will proceed in real time to design the system, outlining the architecture that addresses the requirements, discussing logical tiers, security, interoperability, scalability, transactions, and other aspects of an Enterprise .NET application. You will see how to approach rarely discussed topics such as allocation of components to assemblies, allocation of assemblies to processes, identity management, authorization and authentication boundaries and more. Juval will also be offering several seminars and classes while in Israel – details can be found at [www.idag.co.il](http://www.idag.co.il/ "http") Please remember that it is important for me to know as accurately as possible how many people will be attending each meeting, so that I can arrange for the right amount of food and the proper setup of the chairs.  Please confirm your attendance. See you there !! The August meeting of the Israel Visual Basic User Group [http://www.renaissance.co.il/ivbug](http://www.renaissance.co.il/ivbug "http"): **August 24, 2005 ** **Location****:** **Date:**    **Wednesday, August 24  Please note special date !!!** **Time:   Assembly at 5:30 PM.  Presentations/discussions from 6:00 PM until ….** **Place:**   **Note change of location for this meeting only!!!!** **Eretz** **Yisrael Hayafa Center** **Ganei Yehoshua, Park Hayarkon** **Tel Aviv** **(Lots of parking, right off the Ayalon)** Please be sure to email me to confirm  participation or for more information.  Space may be limited. Take Care, Jackie Goldstein --- title: "Rally Software are doing it right" url: "https://osherove.com/blog/2005/8/21/rally-software-are-doing-it-right.md" canonical: "https://osherove.com/blog/2005/8/21/rally-software-are-doing-it-right.html" published: "2005-08-21T21:19:00" updated: "2005-08-21T21:19:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Rally Software are an Agile development-related company. Personally, I think someone over there \"gets\" how the web works, and how the Agile world and the blogsphere world work, and they combine the knowledge with some…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Rally Software are doing it right By Roy Osherove August 21, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published August 21, 2005; technical details may be outdated. [Rally Software](http://www.rallydev.com/) are an Agile development-related company. Personally, I think someone over there "gets" how the web works, and how the Agile world and the blogsphere world work, and they combine the knowledge with some very cool things that they provide on their website, for free. That is, free after you answer some personal questions (not too bad, methinks). For example, they have several white papers and webinars (power point+ voice over media player) on Agile development with some of the top Agile folks in the world ([Jim Highsmith](http://www.adaptivesd.com/), for example) ready for download, and they have quite an informational and interesting newsletter that comes out every once in a while. In any case, the point I'm trying to make here is that, no, I am not affiliated with them, but I applaud their efforts in contributing to the community and by that also helping themselves. May we see more like this! ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Aug 30, 2005 ### [Interesting Agile related blog - Cory Foy](https://osherove.com/blog/2005/8/30/interesting-agile-related-blog-cory-foy.html) - Aug 23, 2005 ### [\[Article\] Issues in breaking dependencies for unit testing](https://osherove.com/blog/2005/8/23/article-issues-in-breaking-dependencies-for-unit-testing.html) - Aug 10, 2005 ### [Video of my "Intro to Agile Development" talk at INDA is online](https://osherove.com/blog/2005/8/10/video-of-my-quotintro-to-agile-developmentquot-talk-at-inda.html) - Aug 9, 2005 ### [NUnitASP Architecture walkthrough video from Jim Shore](https://osherove.com/blog/2005/8/9/nunitasp-architecture-walkthrough-video-from-jim-shore.html) --- title: "Cool Tip: Show a vertical rule after 80 chars in VS.NET" url: "https://osherove.com/blog/2005/8/18/cool-tip-show-a-vertical-rule-after-80-chars-in-vsnet.md" canonical: "https://osherove.com/blog/2005/8/18/cool-tip-show-a-vertical-rule-after-80-chars-in-vsnet.html" published: "2005-08-18T00:47:00" updated: "2005-08-18T00:47:00" tags: [".Net Quotations", "Tips & Tricks"] author: "Roy Osherove" description: "I have no idea why this is not actually an editor option built in, but still, nice to know it's *possible*. I got this nice tip from a guy named Herfried K. Wagner (MVP) \"Once upon a time I asked if it was possible to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool Tip: Show a vertical rule after 80 chars in VS.NET By Roy Osherove August 18, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published August 18, 2005; technical details may be outdated. I have no idea why this is not actually an editor option built in, but still, nice to know it's \*possible\*. I got this nice tip from a guy named Herfried K. Wagner (MVP) "Once upon a time I asked if it was possible to display a vertical rule after 80 characters in the IDE's text editor.  Today I read the following suggestion in one of the public groups: _**Note: Before touching your registry, make sure to back it up. Use this at your own risk!**_ Start RegEdit and open the following key: 'HKEY\_CURRENT\_USER\\Software\\Microsoft\\VisualStudio\\7.1\\Text Editor' Create a new string named "Guides" and assign the value "RGB(128,0,0) 80". This will display a vertical rule after 80 characters.  It's even possible to create more than one rule, for example "RGB(128,0,0) 95, 100". This seems to work fine with VS 2003 and 2005 Beta 2! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 30, 2005 ### [Automating the reinvention of the wheel](https://osherove.com/blog/2005/10/30/automating-the-reinvention-of-the-wheel.html) - Oct 30, 2005 ### [Strongly Typed Reflection Calls in .NET 2.0](https://osherove.com/blog/2005/10/30/strongly-typed-reflection-calls-in-net-20.html) - Aug 15, 2005 ### [Two interesting Israeli .NET related blogs](https://osherove.com/blog/2005/8/15/two-interesting-israeli-net-related-blogs.html) - Aug 9, 2005 ### [Small Domain Specific Language for the GoF Design patterns](https://osherove.com/blog/2005/8/9/small-domain-specific-language-for-the-gof-design-patterns.html) --- title: "[Audio Interview] Ingo Rammer and Christian Weyer On Distributed Applications Architecture And Practices" url: "https://osherove.com/blog/2005/8/17/audio-interview-ingo-rammer-and-christian-weyer-on-distribut.md" canonical: "https://osherove.com/blog/2005/8/17/audio-interview-ingo-rammer-and-christian-weyer-on-distribut.html" published: "2005-08-17T22:43:00" updated: "2005-08-17T22:43:00" tags: [".Net Original", "Interview"] author: "Roy Osherove" description: "I chatted with Ingo Rammer and Christian Weyer of the ThinkTecture team shortly after both of them had finished doing their talks about Distributed architectures at TechEd Europe. The interviews starts with Christian…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Audio Interview\] Ingo Rammer and Christian Weyer On Distributed Applications Architecture And Practices By Roy Osherove August 17, 2005 In [.Net Original](https://osherove.com/blog/category/net-original), [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published August 17, 2005; technical details may be outdated. I chatted with [Ingo Rammer](http://www.thinktecture.com/staff/ingo/default.html) and [Christian Weyer](http://www.thinktecture.com/staff/christian/default.html) of the [ThinkTecture](http://www.thinktecture.com/) team shortly after both of them had finished doing their talks about Distributed architectures at TechEd Europe. The interviews starts with Christian and we talk about web services, security and scalability. 10 minutes into the interview Ingo Rammer shows up after having been delayed a bit. The conversation turns to various architecture horror stories they've experienced during their career and a nice discussion about DOs and DONTs on distributed application scalability and worst mistakes. Some heavy .NET Architecture talk in here, is all I can say. Go [Download, burn and listen on your way to work](http://www.teamagile.com/mainpages/Interviews.html) 78 Min. MP3 ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 16, 2005 ### [A better command line parsing class](https://osherove.com/blog/2005/10/16/a-better-command-line-parsing-class.html) - Aug 22, 2005 ### [Tips for a successful MSMQ-enabled application](https://osherove.com/blog/2005/8/22/tips-for-a-successful-msmq-enabled-application.html) - Aug 17, 2005 ### [Sherpa: Another Code/Layer/Application Generator](https://osherove.com/blog/2005/8/17/sherpa-another-codelayerapplication-generator.html) - Jul 14, 2005 ### [\[Audio Interview\] Steve Cook -Software Factories and Domain Specific Languages](https://osherove.com/blog/2005/7/14/audio-interview-steve-cook-software-factories-and-domain-spe.html) --- title: "Sherpa: Another Code/Layer/Application Generator" url: "https://osherove.com/blog/2005/8/17/sherpa-another-codelayerapplication-generator.md" canonical: "https://osherove.com/blog/2005/8/17/sherpa-another-codelayerapplication-generator.html" published: "2005-08-17T16:12:00" updated: "2005-08-17T16:12:00" tags: [".Net Original"] author: "Roy Osherove" description: "I'm not much of a fan of various \"Application Generators\" software, but Sherpa seems to be an interesting find. It's allows full application generation but with inherent extensibility (by changing templates, XSLT and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Sherpa: Another Code/Layer/Application Generator By Roy Osherove August 17, 2005 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published August 17, 2005; technical details may be outdated. I'm not much of a fan of various "Application Generators" software, but [Sherpa](http://www.propersonal.com/) seems to be an interesting find. It's allows full application generation but with inherent extensibility (by changing templates, XSLT and other measures) I haven't gotten the change to use it yet on anything real, but it does seem promising. The nice thing about these kinds of apps is that they \*can\* save lots of time when creating standard boilerplate code and such (which [CodeSmith](http://www.codesmithtools.com/) helps with as well, as do other tools), but they can also help with creating full blown simple applications to be customized later. Yes, there is an architecture-Lock in: Once you have a working app you're bound to use the architecture generated to change stuff, but if you play your cards right and simply enough, you might find that most changes require part of code-regeneration rather than fiddling with unknown APIs too much. Again - there's a thin line between a code generator and application generator. Sherpa seems to provide both abilities: Generate as much as you want, including Data Layer, business layer and I believe a UI layer as well. And it's supposed to do it in a manner which will not make experienced developer cringe at the thought of looking at the code. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 22, 2005 ### [Tips for a successful MSMQ-enabled application](https://osherove.com/blog/2005/8/22/tips-for-a-successful-msmq-enabled-application.html) - Aug 17, 2005 ### [\[Audio Interview\] Ingo Rammer and Christian Weyer On Distributed Applications Architecture And Practices](https://osherove.com/blog/2005/8/17/audio-interview-ingo-rammer-and-christian-weyer-on-distribut.html) - Jul 14, 2005 ### [\[Audio Interview\] Steve Cook -Software Factories and Domain Specific Languages](https://osherove.com/blog/2005/7/14/audio-interview-steve-cook-software-factories-and-domain-spe.html) - Jun 22, 2005 ### ["Visual C# .NET compiler could not be created" - Possible solution?](https://osherove.com/blog/2005/6/22/quotvisual-c-net-compiler-could-not-be-createdquot-possible.html) --- title: "Installing Exchange overnight, oh my!" url: "https://osherove.com/blog/2005/8/17/installing-exchange-overnight-oh-my.md" canonical: "https://osherove.com/blog/2005/8/17/installing-exchange-overnight-oh-my.html" published: "2005-08-17T00:11:00" updated: "2005-08-17T00:11:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Last night spent 6 or so hours installing Microsoft Exchange on our home server, so that I can *finally* be able to synchronize my mail, calendar and tasks through my laptop when I go off to various places. It all…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Installing Exchange overnight, oh my! By Roy Osherove August 17, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 17, 2005; technical details may be outdated. Last night spent 6 or so hours installing Microsoft Exchange on our home server, so that I can \*finally\* be able to synchronize my mail, calendar and tasks through my laptop when I go off to various places. It all really hit home when, for my upcoming birthday(today!), I asked (and got) permission spend the funds to upgrade an old computer into a Windows Media Center at home. That also meant \*finally\* getting a wireless network setup at home so things are starting to actually look like something here. It was my first time installing exchange and boy was that **not** a piece of cake! But, 6 hours in, with the help of some friends on line, I was able to make it. It actually says a lot, that someone with virtually no experience installing the thing can get up and running with such a complex server system in less than a full night's work. I pretty much bet that this would not have been as easy with Linux, though I really can't be too sure. Kudos for making the installation guide actually usable, Microsoft. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 23, 2005 ### [The DIMES project aims to map the internet - with your help](https://osherove.com/blog/2005/8/23/the-dimes-project-aims-to-map-the-internet-with-your-help.html) - Aug 22, 2005 ### [Can you Digg it? Digg.Com](https://osherove.com/blog/2005/8/22/can-you-digg-it-diggcom.html) - Aug 16, 2005 ### [\[OT\] Watch The Anchorman for the commentary](https://osherove.com/blog/2005/8/16/ot-watch-the-anchorman-for-the-commentary.html) - Aug 15, 2005 ### [\[OT\] Evacuating the Gaza strip](https://osherove.com/blog/2005/8/15/ot-evacuating-the-gaza-strip.html) --- title: "[OT] Watch The Anchorman for the commentary" url: "https://osherove.com/blog/2005/8/16/ot-watch-the-anchorman-for-the-commentary.md" canonical: "https://osherove.com/blog/2005/8/16/ot-watch-the-anchorman-for-the-commentary.html" published: "2005-08-16T23:59:00" updated: "2005-08-16T23:59:00" tags: ["Off Topic"] author: "Roy Osherove" description: "If you have a chance, pick up the DVD for \" Anchorman \". Not for the movie, but explicitly for the movie commentary. Just watch it all with commentary on. It is hilarious and unlike any movie commentary you've heard…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] Watch The Anchorman for the commentary By Roy Osherove August 16, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 16, 2005; technical details may be outdated. If you have a chance, pick up the DVD for "[Anchorman](http://www.imdb.com/title/tt0357413/)". Not for the movie, but explicitly for the movie commentary. Just watch it all with commentary on. It is hilarious and unlike any movie commentary you've heard before. That's all I can say. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 22, 2005 ### [Can you Digg it? Digg.Com](https://osherove.com/blog/2005/8/22/can-you-digg-it-diggcom.html) - Aug 17, 2005 ### [Installing Exchange overnight, oh my!](https://osherove.com/blog/2005/8/17/installing-exchange-overnight-oh-my.html) - Aug 15, 2005 ### [\[OT\] Evacuating the Gaza strip](https://osherove.com/blog/2005/8/15/ot-evacuating-the-gaza-strip.html) - Aug 8, 2005 ### [Still alive, in Ireland.](https://osherove.com/blog/2005/8/8/still-alive-in-ireland.html) --- title: "Two interesting Israeli .NET related blogs" url: "https://osherove.com/blog/2005/8/15/two-interesting-israeli-net-related-blogs.md" canonical: "https://osherove.com/blog/2005/8/15/two-interesting-israeli-net-related-blogs.html" published: "2005-08-15T20:54:00" updated: "2005-08-15T20:54:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Some technical news from the wild wild middle east: My ex-colleague, Shahar Nechmad, has finally opened a blog of his own dealing with Windows Vista, Indigo and various .NET things. He's the friend I was asking about a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Two interesting Israeli .NET related blogs By Roy Osherove August 15, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published August 15, 2005; technical details may be outdated. Some technical news from the wild wild middle east: My ex-colleague, Shahar Nechmad, has finally opened a blog of his own dealing with Windows Vista, Indigo and various .NET things. He's the friend I was asking about a little while ago. [Go check it out.](http://www.geekswithblogs.net/shaharn/)  If you live in Israel most chances are you've seen Shahar speaking in various Microsoft conferences on behalf of Magen (now part of Advantech), and probably in several user groups relating to architecture. He's a good guy with a good grasp of the .NET world we live in and the experience to back it up. In other news, [Tomer Gabel](https://osherove.com/blog/2005/8/15/at%20http://www.tomergabel.com/), who's recently opened his own blog, [has written a short piece on .NET events Vs. Remoting](http://www.tomergabel.com/Events+And+NET+Remoting.aspx). I haven't gotten to read it yet, but this guy is as sharp as a razor, and can get down to technical business quite deep (though his blog is not \*only\* about .NET, beware). These are worth watching, if they can just manage to write continuously :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 30, 2005 ### [Strongly Typed Reflection Calls in .NET 2.0](https://osherove.com/blog/2005/10/30/strongly-typed-reflection-calls-in-net-20.html) - Aug 18, 2005 ### [Cool Tip: Show a vertical rule after 80 chars in VS.NET](https://osherove.com/blog/2005/8/18/cool-tip-show-a-vertical-rule-after-80-chars-in-vsnet.html) - Aug 9, 2005 ### [Small Domain Specific Language for the GoF Design patterns](https://osherove.com/blog/2005/8/9/small-domain-specific-language-for-the-gof-design-patterns.html) - Jul 30, 2005 ### [.Math - Open Source math expression compiler in C#](https://osherove.com/blog/2005/7/30/math-open-source-math-expression-compiler-in-c.html) --- title: "[OT] Evacuating the Gaza strip" url: "https://osherove.com/blog/2005/8/15/ot-evacuating-the-gaza-strip.md" canonical: "https://osherove.com/blog/2005/8/15/ot-evacuating-the-gaza-strip.html" published: "2005-08-15T11:45:00" updated: "2005-08-15T11:45:00" tags: ["Off Topic"] author: "Roy Osherove" description: "On a purely non technical and unrelated note to anything, I'd like to take this moment to talk about how I feel when today Israel is starting to move people outside of their homes from the Gaza strip. I really don't…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] Evacuating the Gaza strip By Roy Osherove August 15, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 15, 2005; technical details may be outdated. On a purely non technical and unrelated note to anything, I'd like to take this moment to talk about how I feel when today Israel is starting to move people outside of their homes from the Gaza strip. I really don't like to talk politics on this blog, but this act is painful, hard to see, watch and hear and yet feels needed in a way. I don't claim to be someone who knows the full history between Israel and Palestine, because I don't. I only know what I learned by myself, my parents, society, TV and friends. That's enough to have my own little version of the truth I guess, but not the whole picture for sure. There are arguments each way to be heard until the end of time. I simply live here, in the center of Israel. It's hard for me to see this even though in a way I feel disconnected from it all and shielded because I don't live close enough to the "action". ![צילום: אבי כהן](https://osherove.com/img/ext/www.ynet.co.il_PicServer2_01082004_612062_morg1_a.jpg) Israel is doing something big these days. whether it's for good or bad - that remains to be seen. What **can** be said, however, is that today, more than ever, we live in a skewed, convoluted and painful reality of blood, terror, fear, brotherhood and normal life. Everyone wants this to be over. Everyone hates living like this. I have no idea how long this will  last. Hopefully, my children will be born to a better place. For now I will keep avoiding this issue on my blog and stick to technicalities. It's much easier to deal with, and even the most serious "problems" can be solved with enough will power and plain sense. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 17, 2005 ### [Installing Exchange overnight, oh my!](https://osherove.com/blog/2005/8/17/installing-exchange-overnight-oh-my.html) - Aug 16, 2005 ### [\[OT\] Watch The Anchorman for the commentary](https://osherove.com/blog/2005/8/16/ot-watch-the-anchorman-for-the-commentary.html) - Aug 8, 2005 ### [Still alive, in Ireland.](https://osherove.com/blog/2005/8/8/still-alive-in-ireland.html) - Jul 28, 2005 ### [Microsoft "Genuine Advantage" cracked in 24h](https://osherove.com/blog/2005/7/28/microsoft-quotgenuine-advantagequot-cracked-in-24h.html) --- title: "Video of my \"Intro to Agile Development\" talk at INDA is online" url: "https://osherove.com/blog/2005/8/10/video-of-my-quotintro-to-agile-developmentquot-talk-at-inda.md" canonical: "https://osherove.com/blog/2005/8/10/video-of-my-quotintro-to-agile-developmentquot-talk-at-inda.html" published: "2005-08-10T18:39:00" updated: "2005-08-10T18:39:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Paschal has posted online Part I of my Talk at the INDA group . It's roughly 3/4 of my full \"Into to Agile development\" talk and Parts II and III (Unit Testing Best Practices) will be posted later on, in audio format as…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Video of my "Intro to Agile Development" talk at INDA is online By Roy Osherove August 10, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published August 10, 2005; technical details may be outdated. Paschal [has posted online Part I of my Talk at the INDA group](http://weblogs.asp.net/pleloup/archive/2005/08/10/422104.aspx). It's roughly 3/4 of my full "Into to Agile development" talk and Parts II and III (Unit Testing Best Practices) will be posted later on, in audio format as well. A few points to note before watching the video: - The real talk starts 5 full minutes into the video. before that I'm just telling jokes and passing the time until we start. So feel free to scroll past those lost minutes. I look and sound silly. - I say waaay too much "OK" and "like", probably because I'm trying to sound too "American". Hopefully it's not that bad but I'll try to work on it for my next talks. - The video is rough around the edges and kinda blurry at times, plus you can't really see the slides in it. It was Paschal's first time behind a camcorder so I guess it'll get better. The slides should be available at [http://www.developers.ie](http://www.developers.ie/) for members only. I've sent an email to Paschal asking for them to be openly available to non members as well. If that does not work I'll make them available through my own server. Otherwise, I think it turned out pretty good, even though I feel really silly looking at myself "trying" to speak English.. I'd like to thank Paschal again for helping to arrange this. It was really fun! ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Aug 23, 2005 ### [\[Article\] Issues in breaking dependencies for unit testing](https://osherove.com/blog/2005/8/23/article-issues-in-breaking-dependencies-for-unit-testing.html) - Aug 21, 2005 ### [Rally Software are doing it right](https://osherove.com/blog/2005/8/21/rally-software-are-doing-it-right.html) - Aug 9, 2005 ### [NUnitASP Architecture walkthrough video from Jim Shore](https://osherove.com/blog/2005/8/9/nunitasp-architecture-walkthrough-video-from-jim-shore.html) - Jul 29, 2005 ### [Nice article: Agile Top-Down](https://osherove.com/blog/2005/7/29/nice-article-agile-top-down.html) --- title: "NUnitASP Architecture walkthrough video from Jim Shore" url: "https://osherove.com/blog/2005/8/9/nunitasp-architecture-walkthrough-video-from-jim-shore.md" canonical: "https://osherove.com/blog/2005/8/9/nunitasp-architecture-walkthrough-video-from-jim-shore.html" published: "2005-08-09T17:23:00" updated: "2005-08-09T17:23:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Jim Shore , one of the Agile folks out there, has created a nice animated video using Camtasia that talks about how the NUnitASP Architecture works. It's not really for those without any NUnitASP experience but it's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NUnitASP Architecture walkthrough video from Jim Shore By Roy Osherove August 9, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published August 9, 2005; technical details may be outdated. [Jim Shore](http://www.jamesshore.com/Blog), one of the Agile folks out there, has created a nice animated video using Camtasia that talks about how the NUnitASP Architecture works. It's not really for those without any NUnitASP experience but it's definitely interesting and I hope there will be more of this to come. Here's the full excerpt from his email to the Test-First user interfaces mailing list at Yahoo: _At the Agile 2005 conference, Joshua Kerievsky talked about using alternatives to hands-on coaching to "commoditize" training in XP.  I found it to be a thought-provoking talk.  Well, tI've tried out one of Joshua's ideas and I'm very pleased with the result._ _NUnitAsp is a tool for test-driven development of ASP.NET.  I've produced a video that talks about NUnitAsp's architecture, the challenges that you face in NUnitAsp, and ways to overcome them.  It's a neat presentation, very compact at eight minutes, and well illustrated with animation and figures, if I do say so myself.  Although it's intended for advanced users, I think anybody interested in NUnitAsp or TDD in general will learn something from watching it._ _I'm very happy with the way this turned out and I hope you'll take a look.  Please let me know what you think.  You can find the video on the NUnitAsp web site:_ [_http://nunitasp.sf.net/AdvancedNUnitAsp.html_](http://nunitasp.sf.net/AdvancedNUnitAsp.html) _This is the first time I've produced a video like this and I've blogged about the experience here:_ [_http://www.jamesshore.com/Blog/Advanced-NUnitAsp-Video.html_](http://www.jamesshore.com/Blog/Advanced-NUnitAsp-Video.html) _Enjoy! Jim_ _\-- James Shore - Titanium IT - Recipient of 2005 Gordon Pask award New Course! "Test-Driven ASP.NET" Sept 13-15 in Bellevue, WA. Details at_ [_http://nunitasp.sourceforge.net/tdd-course.html_](http://nunitasp.sourceforge.net/tdd-course.html) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Aug 21, 2005 ### [Rally Software are doing it right](https://osherove.com/blog/2005/8/21/rally-software-are-doing-it-right.html) - Aug 10, 2005 ### [Video of my "Intro to Agile Development" talk at INDA is online](https://osherove.com/blog/2005/8/10/video-of-my-quotintro-to-agile-developmentquot-talk-at-inda.html) - Jul 29, 2005 ### [Nice article: Agile Top-Down](https://osherove.com/blog/2005/7/29/nice-article-agile-top-down.html) - Jul 28, 2005 ### [Unit test readability should not come in place of maintainability - they go hand in hand](https://osherove.com/blog/2005/7/28/unit-test-readability-should-not-come-in-place-of-maintainab.html) --- title: "Easy tip to speed up your Virtual PC" url: "https://osherove.com/blog/2005/8/9/easy-tip-to-speed-up-your-virtual-pc.md" canonical: "https://osherove.com/blog/2005/8/9/easy-tip-to-speed-up-your-virtual-pc.html" published: "2005-08-09T17:17:00" updated: "2005-08-09T17:17:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "Here's a great way to easily speed up your Virtual PC performance: Filter the process name from your anti virus scanner's real time monitoring. Since I have ETRUST antivirus installed, I simply double click on the icon…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Easy tip to speed up your Virtual PC By Roy Osherove August 9, 2005 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published August 9, 2005; technical details may be outdated. Here's a great way to easily speed up your Virtual PC performance: Filter the process name from your anti virus scanner's real time monitoring. Since I have ETRUST antivirus installed, I simply double click on the icon in the tray and go to the "Filters" tab. I then add "virtualpc.exe" to the excluded processes list and I should be able to see better performance next time I restart it. Haven't yet tested this out myself, but it sounds promising.. (Tip passed in by Amit Marlov, passed down by Ariel Raunstein, both of which are blogless in Israel) ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Feb 9, 2006 ### [Ask The Pros - Keyboard Shortcut Junkies (and some extra shortcuts from me)](https://osherove.com/blog/2006/2/9/ask-the-pros-keyboard-shortcut-junkies-and-some-extra-shortc.html) - Aug 18, 2005 ### [Cool Tip: Show a vertical rule after 80 chars in VS.NET](https://osherove.com/blog/2005/8/18/cool-tip-show-a-vertical-rule-after-80-chars-in-vsnet.html) - Jun 8, 2005 ### [Cool Resharper hidden gem](https://osherove.com/blog/2005/6/8/cool-resharper-hidden-gem.html) - Jun 8, 2005 ### [Logon as a different user on the same local desktop: in win 2003](https://osherove.com/blog/2005/6/8/logon-as-a-different-user-on-the-same-local-desktop-in-win-2.html) --- title: "Had fun speaking at INDA (Ireland .NET user group)" url: "https://osherove.com/blog/2005/8/9/had-fun-speaking-at-inda-ireland-net-user-group.md" canonical: "https://osherove.com/blog/2005/8/9/had-fun-speaking-at-inda-ireland-net-user-group.html" published: "2005-08-09T16:02:00" updated: "2005-08-09T16:02:00" tags: ["Community"] author: "Roy Osherove" description: "I'd like to thank Paschal for arranging my speaking at the INDA users group in Ireland last Friday. It was really a great bunch of people and I was pretty excited (and tired from a full week f training I've done just…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Had fun speaking at INDA (Ireland .NET user group) By Roy Osherove August 9, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published August 9, 2005; technical details may be outdated. I'd like to thank [Paschal](http://weblogs.asp.net/pleloup) for arranging my speaking at the [INDA users group](http://developers.ie/) in Ireland last Friday. It was really a great bunch of people and I was pretty excited (and tired from a full week f training I've done just before coming on) to do it. I did two talks: Intro to Agile development and Unit testing best practices. I'll hopefully have links to the slides later this week. the talk was also audio recorded and(!) video recorded. When that's up I'll let you know... In any case, some pictures from the event are attached from your viewing pleasure. _Those who have not seen me in a while might notice a slight(ly large) weight gain. All I can say is - I'm working on it :)_ [![](https://osherove.com/img/ext/photos22.flickr.com_32361461_a47a77375a_m.jpg)](http://www.flickr.com/photos/royo/32361461/) Me speaking at the Ireland .NET Users group [![](https://osherove.com/img/ext/photos22.flickr.com_32361390_64f23a1f24_m.jpg)](http://www.flickr.com/photos/royo/32361390/) The INDA crowd was... engaged ;) [![](https://osherove.com/img/ext/photos22.flickr.com_32361298_6aa023dcaa_m.jpg)](http://www.flickr.com/photos/royo/32361298/) Geek dinner with some Irish developers - much fun was had by all ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Sep 7, 2005 ### [September at Agile Israel - Why Agile, and lessons learned from implementing SCRUM](https://osherove.com/blog/2005/9/7/september-at-agile-israel-why-agile-and-lessons-learned-from.html) - Aug 31, 2005 ### [Agile conference coming to Israel - Your input is required.](https://osherove.com/blog/2005/8/31/agile-conference-coming-to-israel-your-input-is-required.html) - Aug 8, 2005 ### [Announcing a New Larkware Contest](https://osherove.com/blog/2005/8/8/announcing-a-new-larkware-contest.html) - Jul 17, 2005 ### [TDD Workshop tomorrow!](https://osherove.com/blog/2005/7/17/tdd-workshop-tomorrow.html) --- title: "Small Domain Specific Language for the GoF Design patterns" url: "https://osherove.com/blog/2005/8/9/small-domain-specific-language-for-the-gof-design-patterns.md" canonical: "https://osherove.com/blog/2005/8/9/small-domain-specific-language-for-the-gof-design-patterns.html" published: "2005-08-09T15:43:00" updated: "2005-08-09T15:43:00" tags: [".Net Quotations", "Architecture"] author: "Roy Osherove" description: "I've met some very nice people while I was at Ireland, some of them MVPs and quite brilliant (and good drinkers!) Take for example, Eamon O'Tuathail , who created a small Domain Specific Language for some of the most…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Small Domain Specific Language for the GoF Design patterns By Roy Osherove August 9, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published August 9, 2005; technical details may be outdated. I've met some very nice people while I was at Ireland, some of them MVPs and quite brilliant (and good drinkers!) Take for example, [Eamon O'Tuathail](http://www.clipcode.biz/workshops/dsl.html) , who created a small Domain Specific Language for some of the most common Gang-Of-Four design patterns out there, [fully downloadable](http://www.clipcode.biz/workshops/dsl.html) with source and all. There's a nice discussion on this package over at another one of the Irish developer's blogs - [Claudio Peronne's blog](http://developers.ie/blogs/cperrone/archive/2005/08/08/1585.aspx). ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 18, 2005 ### [Cool Tip: Show a vertical rule after 80 chars in VS.NET](https://osherove.com/blog/2005/8/18/cool-tip-show-a-vertical-rule-after-80-chars-in-vsnet.html) - Aug 15, 2005 ### [Two interesting Israeli .NET related blogs](https://osherove.com/blog/2005/8/15/two-interesting-israeli-net-related-blogs.html) - Jul 30, 2005 ### [.Math - Open Source math expression compiler in C#](https://osherove.com/blog/2005/7/30/math-open-source-math-expression-compiler-in-c.html) - Jun 26, 2005 ### [.NET CLR Data counters are wrong - Official](https://osherove.com/blog/2005/6/26/net-clr-data-counters-are-wrong-official.html) --- title: "Announcing a New Larkware Contest" url: "https://osherove.com/blog/2005/8/8/announcing-a-new-larkware-contest.md" canonical: "https://osherove.com/blog/2005/8/8/announcing-a-new-larkware-contest.html" published: "2005-08-08T19:04:00" updated: "2005-08-08T19:04:00" tags: ["Community"] author: "Roy Osherove" description: "It's time for a new contest , and I'm one of the judges. \"As you undoubtedly know by now, the release of Microsoft Visual Studio 2005 and Microsoft SQL Server 2005 is scheduled for the week of November 7. That's just…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Announcing a New Larkware Contest By Roy Osherove August 8, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published August 8, 2005; technical details may be outdated. [It's time for a new contest](http://www.larkware.com/contests/contest2005.html), and I'm one of the judges. _"As you undoubtedly know by now, the release of Microsoft Visual Studio 2005 and Microsoft SQL Server 2005 is scheduled for the week of November 7. That's just three months from now, and the current beta versions are plenty solid enough to build some useful and interesting software. And you all know that I'm a sucker for useful and interesting software. So, here's your chance to build some for me, using the next generation of Microsoft tools! Even better, it's a chance for you to win a batch of nifty_ [_prizes_](http://www.larkware.com/contests/contest2005.html#Prizes) _in return. So put on your thinking caps, break out the beta software, and get to work. I know there are a lot of talented developers among the Larkware readership, and I expect great things from your collective efforts."_ _"All told, the contest features over $15,000 worth of prizes. I expect that should be enough to motivate some superb contest entries - so what are you waiting for? Get coding!"_ I'd get going if I were you... ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Aug 31, 2005 ### [Agile conference coming to Israel - Your input is required.](https://osherove.com/blog/2005/8/31/agile-conference-coming-to-israel-your-input-is-required.html) - Aug 9, 2005 ### [Had fun speaking at INDA (Ireland .NET user group)](https://osherove.com/blog/2005/8/9/had-fun-speaking-at-inda-ireland-net-user-group.html) - Jul 17, 2005 ### [TDD Workshop tomorrow!](https://osherove.com/blog/2005/7/17/tdd-workshop-tomorrow.html) - Jul 10, 2005 ### [Udi Dahan - MVP, finally.](https://osherove.com/blog/2005/7/10/udi-dahan-mvp-finally.html) --- title: "Still alive, in Ireland." url: "https://osherove.com/blog/2005/8/8/still-alive-in-ireland.md" canonical: "https://osherove.com/blog/2005/8/8/still-alive-in-ireland.html" published: "2005-08-08T12:53:00" updated: "2005-08-08T12:53:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm still very much alive, and Ireland is very beautiful. I just can't find any time to blog. Hopefully I'll have something interesting to say in the coming days.." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Still alive, in Ireland. By Roy Osherove August 8, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 8, 2005; technical details may be outdated. I'm still very much alive, and Ireland is very beautiful. I just can't find any time to blog. Hopefully I'll have something interesting to say in the coming days.. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 16, 2005 ### [\[OT\] Watch The Anchorman for the commentary](https://osherove.com/blog/2005/8/16/ot-watch-the-anchorman-for-the-commentary.html) - Aug 15, 2005 ### [\[OT\] Evacuating the Gaza strip](https://osherove.com/blog/2005/8/15/ot-evacuating-the-gaza-strip.html) - Jul 28, 2005 ### [Microsoft "Genuine Advantage" cracked in 24h](https://osherove.com/blog/2005/7/28/microsoft-quotgenuine-advantagequot-cracked-in-24h.html) - Jul 28, 2005 ### [How many services does windows need to run?](https://osherove.com/blog/2005/7/28/how-many-services-does-windows-need-to-run.html) --- title: "What blog community site do you recommend for a new .NET blogger?" url: "https://osherove.com/blog/2005/8/2/what-blog-community-site-do-you-recommend-for-a-new-net-blog.md" canonical: "https://osherove.com/blog/2005/8/2/what-blog-community-site-do-you-recommend-for-a-new-net-blog.html" published: "2005-08-02T16:17:00" updated: "2005-08-02T16:17:00" tags: ["Blogging"] author: "Roy Osherove" description: "I have a very knowledgeable friend who would like to start a blog about topics such as Windows Vista and VS 2005. He asked me where he should open his blog. I didn't have a good answer. So, what blog community site…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What blog community site do you recommend for a new .NET blogger? By Roy Osherove August 2, 2005 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published August 2, 2005; technical details may be outdated. I have a very knowledgeable friend who would like to start a blog about topics such as Windows Vista and VS 2005. He asked me where he should open his blog. I didn't have a good answer. So, what blog community site would **you** recommend he start with? It has to be free and well maintained. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Nov 5, 2005 ### [Top 31 weblogs.asp.net blogs to subsrcibe to](https://osherove.com/blog/2005/11/5/top-31-weblogsaspnet-blogs-to-subsrcibe-to.html) - Aug 31, 2005 ### [Another Israeli .NET Blogger - Ilan Assayag](https://osherove.com/blog/2005/8/31/another-israeli-net-blogger-ilan-assayag.html) - Jul 17, 2005 ### [Selling my soul to AdSense](https://osherove.com/blog/2005/7/17/selling-my-soul-to-adsense.html) - Jul 12, 2005 ### [Bloggers call to action: Fight comment spammers by moderating comments easily with .TEXT](https://osherove.com/blog/2005/7/12/bloggers-call-to-action-fight-comment-spammers-by-moderating.html) --- title: ".Math - Open Source math expression compiler in C#" url: "https://osherove.com/blog/2005/7/30/math-open-source-math-expression-compiler-in-c.md" canonical: "https://osherove.com/blog/2005/7/30/math-open-source-math-expression-compiler-in-c.html" published: "2005-07-30T00:09:00" updated: "2005-07-30T00:09:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Welcome to .Math, the Open Source expression compiler for the .NET platform written entirely in C#. Offering speed through compilation of expressions, the library allows for variable handling, an entire function library…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Math - Open Source math expression compiler in C\# By Roy Osherove July 30, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 30, 2005; technical details may be outdated. _Welcome to .Math, the Open Source expression compiler for the .NET platform written entirely in C#. Offering speed through compilation of expressions, the library allows for variable handling, an entire function library and the ability to add your own functions._ link [here](http://hebertsoft.com/dotmath/) via [Green Dragon's Lair](http://orb-software.com/cs/blogs/green_dragons_lair/default.aspx) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 15, 2005 ### [Two interesting Israeli .NET related blogs](https://osherove.com/blog/2005/8/15/two-interesting-israeli-net-related-blogs.html) - Aug 9, 2005 ### [Small Domain Specific Language for the GoF Design patterns](https://osherove.com/blog/2005/8/9/small-domain-specific-language-for-the-gof-design-patterns.html) - Jun 26, 2005 ### [.NET CLR Data counters are wrong - Official](https://osherove.com/blog/2005/6/26/net-clr-data-counters-are-wrong-official.html) - Jun 26, 2005 ### [Great article on Reflection and Performance on MSDN Mag](https://osherove.com/blog/2005/6/26/great-article-on-reflection-and-performance-on-msdn-mag.html) --- title: "Nice article: Agile Top-Down" url: "https://osherove.com/blog/2005/7/29/nice-article-agile-top-down.md" canonical: "https://osherove.com/blog/2005/7/29/nice-article-agile-top-down.html" published: "2005-07-29T21:34:00" updated: "2005-07-29T21:34:00" tags: ["Agile Related", "Cool Articles"] author: "Roy Osherove" description: "\"There's a recent thread on the Scrum list about how an executive or highly-placed manager could get Agile going. I've been one of those guys, and I know a bit about Agile, and here's how I'd proceed. First, focus…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice article: Agile Top-Down By Roy Osherove July 29, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published July 29, 2005; technical details may be outdated. _"There's a recent thread on the Scrum list about how an executive or highly-placed manager could get Agile going. I've been one of  those guys, and I know a bit about Agile, and here's how I'd proceed. First, focus management attention on cyclic delivery of running tested software. Second, provide the resources to learn how to do that." _ [http://www.xprogramming.com/xpmag/AgileTopDown.htm](http://www.xprogramming.com/xpmag/AgileTopDown.htm) Ron Jeffries If you a manager in the right place - you can probably **do** these things in your company. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Aug 10, 2005 ### [Video of my "Intro to Agile Development" talk at INDA is online](https://osherove.com/blog/2005/8/10/video-of-my-quotintro-to-agile-developmentquot-talk-at-inda.html) - Aug 9, 2005 ### [NUnitASP Architecture walkthrough video from Jim Shore](https://osherove.com/blog/2005/8/9/nunitasp-architecture-walkthrough-video-from-jim-shore.html) - Jul 28, 2005 ### [Unit test readability should not come in place of maintainability - they go hand in hand](https://osherove.com/blog/2005/7/28/unit-test-readability-should-not-come-in-place-of-maintainab.html) - Jul 28, 2005 ### [\[Audio Interview\] Randy Miller on MSF Agile and software modeling techniques](https://osherove.com/blog/2005/7/28/audio-interview-randy-miller-on-msf-agile-and-software-model.html) --- title: "Microsoft \"Genuine Advantage\" cracked in 24h" url: "https://osherove.com/blog/2005/7/28/microsoft-quotgenuine-advantagequot-cracked-in-24h.md" canonical: "https://osherove.com/blog/2005/7/28/microsoft-quotgenuine-advantagequot-cracked-in-24h.html" published: "2005-07-28T23:53:00" updated: "2005-07-28T23:53:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This in unbelievably and funnily simple" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft "Genuine Advantage" cracked in 24h By Roy Osherove July 28, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 28, 2005; technical details may be outdated. [This in unbelievably and funnily simple](http://www.boingboing.net/2005/07/28/microsoft_genuine_ad.html) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 15, 2005 ### [\[OT\] Evacuating the Gaza strip](https://osherove.com/blog/2005/8/15/ot-evacuating-the-gaza-strip.html) - Aug 8, 2005 ### [Still alive, in Ireland.](https://osherove.com/blog/2005/8/8/still-alive-in-ireland.html) - Jul 28, 2005 ### [How many services does windows need to run?](https://osherove.com/blog/2005/7/28/how-many-services-does-windows-need-to-run.html) - Jul 27, 2005 ### [The solution is out \*there\*, NOT on in my chat window!](https://osherove.com/blog/2005/7/27/the-solution-is-out-there-not-on-in-my-chat-window.html) --- title: "How many services does windows need to run?" url: "https://osherove.com/blog/2005/7/28/how-many-services-does-windows-need-to-run.md" canonical: "https://osherove.com/blog/2005/7/28/how-many-services-does-windows-need-to-run.html" published: "2005-07-28T23:50:00" updated: "2005-07-28T23:50:00" tags: ["Off Topic"] author: "Roy Osherove" description: "None, it seems. (via SlashDot)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How many services does windows need to run? By Roy Osherove July 28, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 28, 2005; technical details may be outdated. [None, it seems.](http://www.sysinternals.com/blog/2005/07/running-windows-with-no-services.html) (via SlashDot) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 8, 2005 ### [Still alive, in Ireland.](https://osherove.com/blog/2005/8/8/still-alive-in-ireland.html) - Jul 28, 2005 ### [Microsoft "Genuine Advantage" cracked in 24h](https://osherove.com/blog/2005/7/28/microsoft-quotgenuine-advantagequot-cracked-in-24h.html) - Jul 27, 2005 ### [The solution is out \*there\*, NOT on in my chat window!](https://osherove.com/blog/2005/7/27/the-solution-is-out-there-not-on-in-my-chat-window.html) - Jul 26, 2005 ### [\[OT\]The Friday Page](https://osherove.com/blog/2005/7/26/otthe-friday-page.html) --- title: "Unit test readability should not come in place of maintainability - they go hand in hand" url: "https://osherove.com/blog/2005/7/28/unit-test-readability-should-not-come-in-place-of-maintainab.md" canonical: "https://osherove.com/blog/2005/7/28/unit-test-readability-should-not-come-in-place-of-maintainab.html" published: "2005-07-28T23:11:00" updated: "2005-07-28T23:11:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "Brian Button writes this post about a best practice he believes in when writing unit tests. The main idea in that post is that when you use Setup and TearDown methods in your tests, you're essentially separating parts…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit test readability should not come in place of maintainability - they go hand in hand By Roy Osherove July 28, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published July 28, 2005; technical details may be outdated. [Brian Button writes this post](http://www.agileprogrammer.com/oneagilecoder/archive/2005/07/23/6261.aspx) about a best practice he believes in when writing unit tests. The main idea in that post is that when you use Setup and TearDown methods in your tests, you're essentially separating parts of the unit tests into 2 or three areas in the class, thus making the person _reading_ the tests more likely to miss out on some subtleties inside the test method. In short, the test is less readable if there is a "hidden" setup  that occurs before it happens. He also notes this best practice is valid for things that are \*not\* resource based (such as initializing things inside the file system etc..). The final thought in that post says that you would rather have a little duplication in your tests rather than remove readability. While I do believe that using Setup makes the test less readable, I do **not** believe that a little duplication is OK. The problem with **code duplication** in your tests is that it soon (very soon) leads to _unmaintainable_ tests.    You're creating an object instance inside 20-50 tests in your test fixture, and now suddenly the design changes and the class constructor signature changes. Do you _really_ think fixing 50 tests is something a developer will take the time to do? Maybe once. What about the second time this happens? and the third? And what specific point in time will this developer start thinking "_Gosh darn it, these tests are more trouble than their worth, and I have a deadline to reach!_" and finally **let the tests keep on failing**? Sooner than you think. I've seen this happen time and time again. With Unit tests the _slightest_ duplication of code is orders of magnitude a bigger problem than duplication in production code might be, because tests come in large numbers on each class or even function. So, does all this mean you should still use Setup and TearDown? Not necessarily. You can still remove duplication _and_  keep your tests fairly readable by following a few simple rules. The three rules of test duplication are: 1. Never instantiate objects inside a test - always use a factory method 2. Refactor configuring(preparing for test) object state into shared methods (not static, but common to be used by multiple tests) 3. Refactor duplicated Act-Assert combinations into common methods (very methods) **Never instantiate objects inside a test - always use a factory method** instead of **\[Test\]** **public void Create()** **{** **MyOBject x = new MyObject();** **}**  do: **\[Test\]** **public void Create()** **{** **MyOBject x = makeDefaultMyObject();** **}** **private MyObject makeDefaultMyObject()** **{** **return new MyOBject();** **}**  **Refactor configuring(preparing for test) object state into shared methods (not static, but common to be used by multiple tests)** instead of **\[Test\]** **public void NumOfUsers\_2UsersAdded\_Returns2()** **{** **MyOBject x = makeDefaultMyObject();** **x.AddUser("a","b");** **x.AddUser("c","d");** **Assert.AreEqual(1,x.NumOfUsers);** **}**  **\[Test\]** **public void HasUsers\_2Users\_ReturnsTrue()** **{** **MyOBject x = makeDefaultMyObject();** **x.AddUser("a","b");** **x.AddUser("c","d");** **Assert.IsTrue(x.HasUsers);** **}**  do: **\[Test\]** **public void NumOfUsers\_2UsersAdded\_Returns2()** **{** **MyOBject x = makeDefaultMyObject();** ** **init\_AddDefault2UsersToMyObject(x);** **Assert.AreEqual(2,x.NumOfUsers);** }**  **\[Test\]** **public void HasUsers\_2Users\_ReturnsTrue()** **{** **MyOBject x = makeDefaultMyObject();** ****init\_AddDefault2UsersToMyObject(x);** **Assert.IsTrue(x.HasUsers);** } private void init\_AddDefault2UsersToMyObject(MyObject x) { x.AddUser("A","b"); x.AddUser("C","D"); }**  **Refactor duplicated Act-Assert combinations into common methods (very methods)** Instead of **\[Test\]** **public void ParseSum\_3NumbersSingleDigit\_ReturnsSum1()** **{** **Calc c = makeDefulatCalculator();** **int sum = c.ParseSum("1,2,3");** **Assert.AreEqual(6,sum);** **}**  **\[Test\]** **public void ParseSum\_3NumbersSingleDigit\_ReturnsSum2()** **{** **Calc c = makeDefulatCalculator();** **int sum = c.ParseSum("4,5,6");** **Assert.AreEqual(15,sum);** **}**  **do:** **\[Test\]** **public void ParseSum\_3NumbersSingleDigit\_ReturnsSum1()** **{** **Calc c = makeDefulatCalculator();** **int expectedSum=6;** **verify\_ParseSum(c,"1,2,3", expectedSum);** **}**  **\[Test\]** **public void ParseSum\_3NumbersSingleDigit\_ReturnsSum2()** **{** **Calc c = makeDefulatCalculator();** **int expectedSum=15;** **verify\_ParseSum(c,"4,5,6", expectedSum);** **}**  **private void verify\_ParseSum(Calc c,string input, int expectedSum)** **{** **int result = c.ParseSum(input);** **Assert.AreEqual(expectedSum,result);** **}** No Setup or TearDown code present, tests are still readable, but are also still maintainable. Next time a constructor changes - you'll only have to change one method in this test fixture. Next time configuration of an object changes functionality (and thus needs to be modified in all tests requiring such an instance) you only need to change one method (or a small number of common methods) instead of tens or hundreds of tests. Re-usability and Readability are possible. You just need to follow some guidelines on how to implement them. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Aug 9, 2005 ### [NUnitASP Architecture walkthrough video from Jim Shore](https://osherove.com/blog/2005/8/9/nunitasp-architecture-walkthrough-video-from-jim-shore.html) - Jul 29, 2005 ### [Nice article: Agile Top-Down](https://osherove.com/blog/2005/7/29/nice-article-agile-top-down.html) - Jul 28, 2005 ### [\[Audio Interview\] Randy Miller on MSF Agile and software modeling techniques](https://osherove.com/blog/2005/7/28/audio-interview-randy-miller-on-msf-agile-and-software-model.html) - Jul 27, 2005 ### [Unit Testing Best Practices and guidelines](https://osherove.com/blog/2005/7/27/unit-testing-best-practices-and-guidelines.html) --- title: "[Audio Interview] Randy Miller on MSF Agile and software modeling techniques" url: "https://osherove.com/blog/2005/7/28/audio-interview-randy-miller-on-msf-agile-and-software-model.md" canonical: "https://osherove.com/blog/2005/7/28/audio-interview-randy-miller-on-msf-agile-and-software-model.html" published: "2005-07-28T19:40:00" updated: "2005-07-28T19:40:00" tags: ["Agile Related", "Interview"] author: "Roy Osherove" description: "I chatted with Randy Miller , the guy who practically wrote MSF, for a very interesting half hour (due to technical difficulties we had to stop early). The interview revolves around MSF- the Microsoft Solution Framework…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Audio Interview\] Randy Miller on MSF Agile and software modeling techniques By Roy Osherove July 28, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published July 28, 2005; technical details may be outdated. I chatted with [Randy Miller](http://blogs.msdn.com/randymiller), the guy who practically _wrote_ MSF, for a very interesting half hour (due to technical difficulties we had to stop early). The interview revolves around MSF-  the Microsoft Solution Framework for creating software processes, its origins, its main goals and benefits and how it fits in with Microsoft Team System. We also talk a little about how it compares to other processes such as the Rational Unified Process. The conversation also turns into the fascinating topic of software modeling today and the use of "[Personas](http://www.cooper.com/content/insights/newsletters/2003_08/Origin_of_Personas.asp)" to capture design requirements. more stuff: MSF vs. CMMI, empowering developers in the development process, and the future of MSF. [**Go Download**](http://www.teamagile.com/mainpages/Interviews.html) (36 minutes,MP3) _(as always, there are many other interviews on the download page which you may find interesting.)_ _Randy Miller (also known as Granville Miller) is author of Advanced Use Case Modeling and A Practical Guide to Extreme Programming.  He has spoken at many national events including OOPSLA, Web Services Edge, Software Development West, Microsoft TechEd and others.  He has also spoken for SPIN in the past (_[_http://www.rtpspin.org_](http://www.rtpspin.org/ "http")_). You can find out more about Randy's work from his blog at:_ [_http://blogs.msdn.com/randymiller_](http://blogs.msdn.com/randymiller "http")_.  You can learn more about Visual Studio 2005 Team System at:_ [_http://lab.msdn.microsoft.com/teamsystem_](http://lab.msdn.microsoft.com/teamsystem "http")_.  And specifically about its plans to support the Agile methodology at:_ [_http://blogs.msdn.com/team\_foundation/archive/2005/02/07/368599.aspx_](http://blogs.msdn.com/team_foundation/archive/2005/02/07/368599.aspx "http") _._ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 29, 2005 ### [Nice article: Agile Top-Down](https://osherove.com/blog/2005/7/29/nice-article-agile-top-down.html) - Jul 28, 2005 ### [Unit test readability should not come in place of maintainability - they go hand in hand](https://osherove.com/blog/2005/7/28/unit-test-readability-should-not-come-in-place-of-maintainab.html) - Jul 27, 2005 ### [Unit Testing Best Practices and guidelines](https://osherove.com/blog/2005/7/27/unit-testing-best-practices-and-guidelines.html) - Jul 25, 2005 ### [XP Games links](https://osherove.com/blog/2005/7/25/xp-games-links.html) --- title: "The solution is out *there*, NOT on in my chat window!" url: "https://osherove.com/blog/2005/7/27/the-solution-is-out-there-not-on-in-my-chat-window.md" canonical: "https://osherove.com/blog/2005/7/27/the-solution-is-out-there-not-on-in-my-chat-window.html" published: "2005-07-27T21:06:00" updated: "2005-07-27T21:06:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Here's a small hint before you try to \"chat\" with someone on your MSN Messenger about solving a specific problem in .NET. It will save you (and them) a lot of time in a many cases. It may seem silly, but a lot of people…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The solution is out \*there\*, NOT on in my chat window! By Roy Osherove July 27, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 27, 2005; technical details may be outdated. Here's a small hint before you try to "chat" with someone on your MSN Messenger about solving a specific problem in .NET. It will save you (and them) a lot of time in a many cases. It may seem silly, but a lot of people don't realize that they can find the answer **on their own**. Here's a short tutorial: Let's say that you have a problem such as "I can't install my C# Winforms application on Windows 98" **Instead of:**  - Google for ".NET programmer MSN details", register the account as your "friend" and try to ask them this question **Try:**  - [Google](http://www.google.com/): "[Install C# on windows 98](http://www.google.com/search?hl=en&lr=&q=install+c%23+on+windows+98)" ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 28, 2005 ### [Microsoft "Genuine Advantage" cracked in 24h](https://osherove.com/blog/2005/7/28/microsoft-quotgenuine-advantagequot-cracked-in-24h.html) - Jul 28, 2005 ### [How many services does windows need to run?](https://osherove.com/blog/2005/7/28/how-many-services-does-windows-need-to-run.html) - Jul 26, 2005 ### [\[OT\]The Friday Page](https://osherove.com/blog/2005/7/26/otthe-friday-page.html) - Jul 20, 2005 ### [\[OT\] If you can't stand the heat, take your ThinkPad out of the oven](https://osherove.com/blog/2005/7/20/ot-if-you-cant-stand-the-heat-take-your-thinkpad-out-of-the.html) --- title: "Unit Testing Best Practices and guidelines" url: "https://osherove.com/blog/2005/7/27/unit-testing-best-practices-and-guidelines.md" canonical: "https://osherove.com/blog/2005/7/27/unit-testing-best-practices-and-guidelines.html" published: "2005-07-27T17:01:00" updated: "2005-07-27T17:01:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Someone asked me about this the other day - there are currently no concrete set of guidelines for unit testing best practices (not talking about HOW-TOs, but about HOW_NOT_TOs). So it occurred to me that I've been…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing Best Practices and guidelines By Roy Osherove July 27, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 27, 2005; technical details may be outdated. Someone asked me about this the other day - there are currently no concrete set of guidelines for unit testing best practices (not talking about HOW-TOs, but about HOW\_NOT\_TOs). So it occurred to me that I've been keeping such a list on this blog for a while now (I keep adding whenever I get the time to post something new to it) only its buried on the left side of my blog page. So, you can get the full list here: http://weblogs.asp.net/rosherove/archive/tags/Testing+Guidelines/default.aspx There's also an RSS feed especially for that if you'd like on that page. I'm working on publishing an article on this topic (some sort of a top-10 tips for better unit tests) for MSDN Magazine so I'm holding off some of the content, and it's killing me I swear. Hopefully it won't be long now. This Monday (August 1st) I'm heading off to Ireland to do some training over there. I'll also stop by at the [Irish .NET user group](http://blogs.msdn.com/clare_dillon/archive/2005/07/26/443774.aspx) and give two talks: intro to Agile development and Unit Testing Best Practices (more elaborate than the category I just linked to + some new stuff) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 28, 2005 ### [Unit test readability should not come in place of maintainability - they go hand in hand](https://osherove.com/blog/2005/7/28/unit-test-readability-should-not-come-in-place-of-maintainab.html) - Jul 28, 2005 ### [\[Audio Interview\] Randy Miller on MSF Agile and software modeling techniques](https://osherove.com/blog/2005/7/28/audio-interview-randy-miller-on-msf-agile-and-software-model.html) - Jul 25, 2005 ### [XP Games links](https://osherove.com/blog/2005/7/25/xp-games-links.html) - Jul 25, 2005 ### [\[Article\] The Test Feasibility Matrix](https://osherove.com/blog/2005/7/25/article-the-test-feasibility-matrix.html) --- title: "[OT]The Friday Page" url: "https://osherove.com/blog/2005/7/26/otthe-friday-page.md" canonical: "https://osherove.com/blog/2005/7/26/otthe-friday-page.html" published: "2005-07-26T06:52:00" updated: "2005-07-26T06:52:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Just found \" The Friday Page \". Some disturbing stuff in there, but some of it's really funny. View at your own risk.." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\]The Friday Page By Roy Osherove July 26, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 26, 2005; technical details may be outdated. Just found "[The Friday Page](http://www.gregbruns.com/friday.htm)". Some disturbing stuff in there, but some of it's really funny. View at your own risk.. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 28, 2005 ### [How many services does windows need to run?](https://osherove.com/blog/2005/7/28/how-many-services-does-windows-need-to-run.html) - Jul 27, 2005 ### [The solution is out \*there\*, NOT on in my chat window!](https://osherove.com/blog/2005/7/27/the-solution-is-out-there-not-on-in-my-chat-window.html) - Jul 20, 2005 ### [\[OT\] If you can't stand the heat, take your ThinkPad out of the oven](https://osherove.com/blog/2005/7/20/ot-if-you-cant-stand-the-heat-take-your-thinkpad-out-of-the.html) - Jul 16, 2005 ### [\[OT\] What's inside the food we eat?](https://osherove.com/blog/2005/7/16/ot-whats-inside-the-food-we-eat.html) --- title: "The Testing Feasibility Matrix" url: "https://osherove.com/blog/2005/7/25/the-testing-feasibility-matrix.md" canonical: "https://osherove.com/blog/2005/7/25/the-testing-feasibility-matrix.html" published: "2005-07-25T19:52:00" updated: "2005-07-25T19:52:00" tags: [] author: "Roy Osherove" description: "One of the toughest questions in projects that contain legacy code that would like to write unit tests from part of that code (it may need to change) are: “Where should I start?” When one of my clients faced this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Testing Feasibility Matrix By Roy Osherove July 25, 2005 **Historical article** · Originally published July 25, 2005; technical details may be outdated. One of the toughest questions in projects that contain legacy code that would like to write unit tests from part of that code (it may need to change) are: “Where should I start?” When one of my clients faced this question a while ago I came up with a small formula to help understand where we should focus our testing efforts on. I call it the “Test Feasibility Matrix” (TFM - not to be confused with RTFM :) ) The most obvious way to approach testing legacy code components is to think of them in at least two ways: How much Logic do I have in there (The Logical Complexity (LO) factor) and how many dependencies do I have to break in order to bring this class under test (does it communicate with an outside Email Component perhaps? does it call a Static “Log” method somewhere?). I call The second factor “Dependency Level” (DL) factor. The consideration in the most obvious method (which I call “Complexity Oriented Incentive”) simply means: The more complex it is, and the easier it is to test - the more I’d like to test it. That means that testing some validation class with some simple methods that don’t rely on anything but have a lot of logic inside has more incentive because it’s easier to test than, say, a Data Layer class which talks to a database which has less logic and more dependencies. One could go about mapping each component considered for testing in this sort of chart: By simply putting a component name inside the chart in the location most suitable for it you are able to map a distinction between components with higher and lower test incentive. You should of course take into account things such as feature priority and so on, but that’s the basic idea. I’ve said earlier that this is “the most obvious” way. Let’s consider something a little less obvious. One of the side effects of testing a component who has many dependencies is that you end up breaking those dependencies leaving behind a better design which is more modularized. You might have more interfaces, or some new “injection points” where you can insert different behavior for various components. In essence - the component will be much easier to test the next time around. Not only that - you’ll also get the benefit that some of the compoenent’s dependencies, which are components themselves, will now be easier to test as well. This does not **always** apply but it does most of the time. That means that the more you test components with a high dependency level, the easier you make it to test other high dependent components later on. If you put the testing effort it takes during project lifetime into a graph it might look a little like this: This means that in a complexity oriented incentive - we leave the “best” for last - we tackle the hardest to test components last. This is a good plan if you want to make sure you get \*something\* done without bogging down development in hard-to realize testing scenarios yet. But you may be leaving off the toughest part (which may be mostly unknown) to the project crunch-time before release. Now, think what happened if you went the other way around. You’d try to tackle the hardest parts first. This is what I call “Dependency Oriented Incentive” where you decrease future dependencies as a calculated effort. The graph might look like this for your components (notice the bottom dependency levels are now **reveres ed** from 10 to 1): This kind of planning can lead you to a development effort that looks somewhat like this: Notice that this time the amount of “large effort; is smaller (not as wide) as the one in the opposite diagram. That’s because, like dominoes, dependencies depend on each other and hardest you hit the more dependencies at the same tie you’re gonna remove from multiple components. In the opposite diagram you’re _going around_ the problem and testing components which might have even been much easier to test after you’ve broken dependencies for the tougher ones. So, testing an Email Sender might be much easier to test after you’ve tested the MailServer Component. In the two approaches I’ve outlined, you’d test them both in different order. To Summarize: I don’t have a “favorite” among these two approaches. They both fit well on a per-project-per team basis. Use them as a means to understand where your priorities lie when approaching unit testing. Comments are welcome! --- title: "XP Games links" url: "https://osherove.com/blog/2005/7/25/xp-games-links.md" canonical: "https://osherove.com/blog/2005/7/25/xp-games-links.html" published: "2005-07-25T06:51:00" updated: "2005-07-25T06:51:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Some links to various \"XP Games\" - small games to simulate Agile Development practices and benefits (via the XP Mailing list at Yahoo) The XP Game XP War Some nice games fro developers from Bill Wake Offing the Off-Site…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # XP Games links By Roy Osherove July 25, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 25, 2005; technical details may be outdated. Some links to various "XP Games" - small games to simulate Agile Development practices and benefits (via the XP Mailing list at Yahoo) - [The XP Game](http://www.xp.be/xpgame.html) - [XP War](http://www.industriallogic.com/games/xpwar.html\)) - [Some nice games fro developers](http://xp123.com/g4p/index.shtml) from Bill Wake - [Offing the Off-Site customer workshop](http://www.jamesshore.com/Presentations/OffingTheOffsiteCustomer.html) materials - [Extreme Hour](http://xp.c2.com/ExtremeHour.html) I'm planning to have one of these games at the upcoming Agile Israel Meetings. Any recommendations? ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 28, 2005 ### [\[Audio Interview\] Randy Miller on MSF Agile and software modeling techniques](https://osherove.com/blog/2005/7/28/audio-interview-randy-miller-on-msf-agile-and-software-model.html) - Jul 27, 2005 ### [Unit Testing Best Practices and guidelines](https://osherove.com/blog/2005/7/27/unit-testing-best-practices-and-guidelines.html) - Jul 25, 2005 ### [\[Article\] The Test Feasibility Matrix](https://osherove.com/blog/2005/7/25/article-the-test-feasibility-matrix.html) - Jul 10, 2005 ### [Performance vs. Testability and semi-virtual method calls](https://osherove.com/blog/2005/7/10/performance-vs-testability-and-semi-virtual-method-calls.html) --- title: "[Article] The Test Feasibility Matrix" url: "https://osherove.com/blog/2005/7/25/article-the-test-feasibility-matrix.md" canonical: "https://osherove.com/blog/2005/7/25/article-the-test-feasibility-matrix.html" published: "2005-07-25T01:21:00" updated: "2005-07-25T01:21:00" tags: ["Agile", "Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "One of the toughest questions in projects that contain legacy code that would like to write unit tests from part of that code (it may need to change) are: \"Where should I start?\" When one of my clients faced this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Article\] The Test Feasibility Matrix By Roy Osherove July 25, 2005 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published July 25, 2005; technical details may be outdated. One of the toughest questions in projects that contain legacy code that would like to write unit tests from part of that code (it may need to change) are: "Where should I start?" When one of my clients faced this question a while ago I came up with a small formula to help understand where we should focus our testing efforts on. I call it the "[Test Feasibility Matrix](http://weblogs.asp.net/rosherove/pages/The-Testing-Feasibility-Matrix.aspx)" ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 11, 2006 ### [Architecting in an Agile World - My ArcCast with Ron Jabobs in online](https://osherove.com/blog/2006/6/11/architecting-in-an-agile-world-my-arccast-with-ron-jabobs-in.html) - Jun 7, 2006 ### [News: TestDriven, SideKick, Expression Evaluators and Security to boot](https://osherove.com/blog/2006/6/7/news-testdriven-sidekick-expression-evaluators-and-security.html) - Apr 3, 2005 ### [Naming standards for unit tests](https://osherove.com/blog/2005/4/3/naming-standards-for-unit-tests.html) --- title: "[OT] If you can't stand the heat, take your ThinkPad out of the oven" url: "https://osherove.com/blog/2005/7/20/ot-if-you-cant-stand-the-heat-take-your-thinkpad-out-of-the.md" canonical: "https://osherove.com/blog/2005/7/20/ot-if-you-cant-stand-the-heat-take-your-thinkpad-out-of-the.html" published: "2005-07-20T06:48:00" updated: "2005-07-20T06:48:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It might be a well designed commercial for an IBM ThinkPad, but I'll give them the benefit of the doubt. This is one of the reasons I got a ThinkPad : (Translated and paraphrased from Hebrew, but Nice picture int he…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] If you can't stand the heat, take your ThinkPad out of the oven By Roy Osherove July 20, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 20, 2005; technical details may be outdated. It might be a well designed commercial for an IBM ThinkPad, but I'll give them the benefit of the doubt. [This is one of the reasons I got a ThinkPad](http://www.themarker.com/tmc/archive/arc.jhtml): (Translated and paraphrased from Hebrew, but Nice picture int he article) "Michal Feldman and Dr. Mati Ziv tried to hide their laptop which contains highly sensitive (and not backed up) medical information from intruders by placing it in the baking oven.. later they realized the mistake after the computer has been baked in a 220 Cel. heat. Surprisingly other than some melting on the outer rim, the computer keep working perfectly (though the CD door was melted shut)" So you can learn a few lessons: - Do \*NOT\* go for a checkup at Dr. Mati Ziv, based o how he treats sensitive data (no backup?, on a personal computer? at home?) - If you're going to put a laptop in the oven, might as well be an IBM one. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 27, 2005 ### [The solution is out \*there\*, NOT on in my chat window!](https://osherove.com/blog/2005/7/27/the-solution-is-out-there-not-on-in-my-chat-window.html) - Jul 26, 2005 ### [\[OT\]The Friday Page](https://osherove.com/blog/2005/7/26/otthe-friday-page.html) - Jul 16, 2005 ### [\[OT\] What's inside the food we eat?](https://osherove.com/blog/2005/7/16/ot-whats-inside-the-food-we-eat.html) - Jul 15, 2005 ### [Open for work during September(L.A or Bellevue)](https://osherove.com/blog/2005/7/15/open-for-work-during-septemberla-or-bellevue.html) --- title: "Resharper 2.0 for VS 2005!" url: "https://osherove.com/blog/2005/7/19/resharper-20-for-vs-2005.md" canonical: "https://osherove.com/blog/2005/7/19/resharper-20-for-vs-2005.html" published: "2005-07-19T21:03:00" updated: "2005-07-19T21:03:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "If you're in love with Resharper as I am, you'll be glad to read that the new Resharper 2.0 public access download (beta beta!) is now supported in VS 2005 as well!! and some very cool new features ! (via Peter Provost )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Resharper 2.0 for VS 2005! By Roy Osherove July 19, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published July 19, 2005; technical details may be outdated. If you're in love with Resharper as I am, you'll be glad to read that [the new Resharper 2.0 public access download](http://www.jetbrains.net/confluence/display/ReSharper/Download) (beta beta!) is now supported in VS 2005 as well!!  and some [very cool new features](http://www.jetbrains.net/confluence/display/ReSharper/Changes)! (via [Peter Provost](http://www.peterprovost.org/archive/2005/07/19/6094.aspx)) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Sep 14, 2005 ### [Hear MSDN webcasts on your favorite audio player](https://osherove.com/blog/2005/9/14/hear-msdn-webcasts-on-your-favorite-audio-player.html) - Aug 23, 2005 ### [Picasa "Hello" is cool + a nice tip about using Hello](https://osherove.com/blog/2005/8/23/picasa-quothelloquot-is-cool-a-nice-tip-about-using-hello.html) - Jun 26, 2005 ### [\[Tool\] Convert NUnit tests to Team System Tests](https://osherove.com/blog/2005/6/26/tool-convert-nunit-tests-to-team-system-tests.html) - Jun 20, 2005 ### [ComputerZen: Top 120 cool tools every developer must have](https://osherove.com/blog/2005/6/20/computerzen-top-120-cool-tools-every-developer-must-have.html) --- title: "TDD Workshop tomorrow!" url: "https://osherove.com/blog/2005/7/17/tdd-workshop-tomorrow.md" canonical: "https://osherove.com/blog/2005/7/17/tdd-workshop-tomorrow.html" published: "2005-07-17T08:15:00" updated: "2005-07-17T08:15:00" tags: ["Community"] author: "Roy Osherove" description: "If you'd like to sign up for the free basic Test Driven Development workshop tomorrow, July 18th, there are still a few places left. for more information on this workshop:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Workshop tomorrow! By Roy Osherove July 17, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published July 17, 2005; technical details may be outdated. If you'd like to sign up for the free basic Test Driven Development workshop tomorrow, July 18th, there are still a few places left. for more information on this workshop: [http://www.agileisrael.com/Default.aspx?tabid=95](http://www.agileisrael.com/Default.aspx?tabid=95) (You have to register with the Agile Israel site to participate, so that we have your details for contact in case of changes, and so you get agile Israel meeting announcements) Thanks, Roy Osherove ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Aug 9, 2005 ### [Had fun speaking at INDA (Ireland .NET user group)](https://osherove.com/blog/2005/8/9/had-fun-speaking-at-inda-ireland-net-user-group.html) - Aug 8, 2005 ### [Announcing a New Larkware Contest](https://osherove.com/blog/2005/8/8/announcing-a-new-larkware-contest.html) - Jul 10, 2005 ### [Udi Dahan - MVP, finally.](https://osherove.com/blog/2005/7/10/udi-dahan-mvp-finally.html) - Jul 10, 2005 ### [Upcoming Audio Interviews from TechEd Europe](https://osherove.com/blog/2005/7/10/upcoming-audio-interviews-from-teched-europe.html) --- title: "Selling my soul to AdSense" url: "https://osherove.com/blog/2005/7/17/selling-my-soul-to-adsense.md" canonical: "https://osherove.com/blog/2005/7/17/selling-my-soul-to-adsense.html" published: "2005-07-17T00:28:00" updated: "2005-07-17T00:28:00" tags: ["Blogging"] author: "Roy Osherove" description: "I'm doing an AdSense experiment on my blog page on the the interview page at Team Agile . We'll see what happens, and if the ads are \"good enough\" and not too annoying. Let me know what you think! I wonder if putting…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Selling my soul to AdSense By Roy Osherove July 17, 2005 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 17, 2005; technical details may be outdated. I'm doing an [AdSense](http://www.google.com/adsense) experiment on my blog page on the the [interview page at Team Agile](http://www.teamagile.com/mainpages/Interviews.html). We'll see what happens, and if the ads are "good enough" and not too annoying. Let me know what you think! I wonder if putting AdSense in blog posts is a good idea or not. Currently, I'm not liking it that much. We'll see if my greediness outshines my morality (which is [exactly what my wife is studying these days](http://weblogs.asp.net/rosherove/archive/2005/07/17/419677.aspx)..) BTW - [this is a nice overview](http://www.problogger.net/archives/2004/09/23/adsense-tips-for-bloggers-1/) on maximizing profits using AdSense, at least on the strategy level. Found it via [Scoble](http://radio.weblogs.com/0001011/2005/07/16.html#a10653) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Aug 31, 2005 ### [Another Israeli .NET Blogger - Ilan Assayag](https://osherove.com/blog/2005/8/31/another-israeli-net-blogger-ilan-assayag.html) - Aug 2, 2005 ### [What blog community site do you recommend for a new .NET blogger?](https://osherove.com/blog/2005/8/2/what-blog-community-site-do-you-recommend-for-a-new-net-blog.html) - Jul 12, 2005 ### [Bloggers call to action: Fight comment spammers by moderating comments easily with .TEXT](https://osherove.com/blog/2005/7/12/bloggers-call-to-action-fight-comment-spammers-by-moderating.html) - Jul 7, 2005 ### [Another Semi Israeli Blogger](https://osherove.com/blog/2005/7/7/another-semi-israeli-blogger.html) --- title: "[OT] What's inside the food we eat?" url: "https://osherove.com/blog/2005/7/16/ot-whats-inside-the-food-we-eat.md" canonical: "https://osherove.com/blog/2005/7/16/ot-whats-inside-the-food-we-eat.html" published: "2005-07-16T21:02:00" updated: "2005-07-16T21:02:00" tags: ["Off Topic"] author: "Roy Osherove" description: "My wife is doing a paper for university on Morality in business. She's decided to explore the wonderful world of food additives and how they kill us slowly but surely(a lot of them, anyway). One of the articles we…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] What's inside the food we eat? By Roy Osherove July 16, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 16, 2005; technical details may be outdated. My wife is doing a paper for university on Morality in business. She's decided to explore the wonderful world of food additives and how they kill us slowly but surely(a lot of them, anyway). One of the articles we stumbled upon when searching for articles on dishonesty by food companies talks about the dishonest/misguiding labeling many food manufacturers put on food products in order to make customers think better of the product, or at least not be alarmed at the junk they are going to eat. Here are a couple of phrases from that article. You can [read the rest here](http://www.newstarget.com/001529.html). Enlightening. "..As a good example of the kind of ingredients that are hidden on food labels, let's take a look at MSG, also called monosodium glutamate ([_see related ebook on monosodium glutamate_](http://www.truthpublishing.com/grocerywarning.html)). MSG is an excitotoxin -- an ingredient known to cause nerve damage by overexciting nerves. This is exactly how MSG enhances the taste of foods: by overexciting the taste buds on your tongue. While MSG is sometimes listed directly on the label, it is more frequently hidden in other ingredients, such as [yeast extract](http://www.newstarget.com/005778.html), autolyzed vegetable protein, or hydrolyzed vegetable protein. All three of these ingredients contain [monosodium glutamate](http://www.newstarget.com/001528.html), and yet they are designed to mislead consumers by avoiding mentioning MSG directly on the label..." "...Other ingredients may be misleading without necessarily being dangerous. One such ingredient is [carmine](http://www.newstarget.com/002043.html) -- a red coloring frequently used in yogurt, candies, fruit drinks and sweets. Carmine is actually made from the dead, ground-up husks of female red beetles. These beetles, which are typically raised in the Canary Islands, are dried and ground up to create a red paste. This red paste is then exported to the United States and other countries where food is produced. It is added to foods to give them a rose-like color, something similar to a strawberry color. It's listed on the label as "carmine", not as "ground-up red beetles." And while carmine doesn't necessarily pose a health risk to American consumers, it is still an example of dishonest labeling, because people have the right to know when ground-up insects are being used in their foods. There are probably 100 items in your grocery store right now with carmine listed right on the label. You can go to your store right now and check it out, and verify that what I'm relating here is true. (Pick up practically any strawberry yogurt...) " ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 26, 2005 ### [\[OT\]The Friday Page](https://osherove.com/blog/2005/7/26/otthe-friday-page.html) - Jul 20, 2005 ### [\[OT\] If you can't stand the heat, take your ThinkPad out of the oven](https://osherove.com/blog/2005/7/20/ot-if-you-cant-stand-the-heat-take-your-thinkpad-out-of-the.html) - Jul 15, 2005 ### [Open for work during September(L.A or Bellevue)](https://osherove.com/blog/2005/7/15/open-for-work-during-septemberla-or-bellevue.html) - Jul 15, 2005 ### [My contests actually make a difference :)](https://osherove.com/blog/2005/7/15/my-contests-actually-make-a-difference.html) --- title: "Open for work during September(L.A or Bellevue)" url: "https://osherove.com/blog/2005/7/15/open-for-work-during-septemberla-or-bellevue.md" canonical: "https://osherove.com/blog/2005/7/15/open-for-work-during-septemberla-or-bellevue.html" published: "2005-07-15T23:34:00" updated: "2005-07-15T23:34:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It looks like I'll be attending the MVP summit this September, and I'll be looking to do a small time gig (speaking, training, consulting, development) during the week after that, in the hope of making it profitable…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Open for work during September(L.A or Bellevue) By Roy Osherove July 15, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 15, 2005; technical details may be outdated. It looks like I'll be attending the MVP summit this September, and I'll be looking to do a small time gig (speaking, training, consulting, development) during the week after that, in the hope of making it profitable enough for me to justify my going to the PDC (a week and a half beforethe MVP summit). So, if you by any chance know of a place where my skills will be appreciated (and paid for) during that week, **either in L.A or near Bellevue (near the MS Campus)** drop me a line. I'd also be happy to share a "finder's fee" if that's your usual method of work. **Possible work** might include: - Speaking: Agile development, unit testing best practices, regular expressions, deep .NET, architecture - Training: 1-3 days agile workshops: Test Driven development in .NET, Java, C++ or VB, 1 – 2 day .NET 2.0 training, vs 2005 training - Consulting on all of the above topics - Development in .NET (either on laptop or at client site) - Writing: articles, white papers,specs, design docs.. - Speaking at user groups (for free is a possibility if I'm able to find an income for the rest of the time) If any of these sounds interesting to you or someone you might know, you know what to do :) **Possible dates**:    all week of Sep. 19th, or Monday sep. 26th. For more information about me and my company, feel free to drop by the [Team Agile website](http://www.teamagile.com/), or [download my CV](http://www.teamagile.com/Downloads/RoyOsheroveCV.zip). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 20, 2005 ### [\[OT\] If you can't stand the heat, take your ThinkPad out of the oven](https://osherove.com/blog/2005/7/20/ot-if-you-cant-stand-the-heat-take-your-thinkpad-out-of-the.html) - Jul 16, 2005 ### [\[OT\] What's inside the food we eat?](https://osherove.com/blog/2005/7/16/ot-whats-inside-the-food-we-eat.html) - Jul 15, 2005 ### [My contests actually make a difference :)](https://osherove.com/blog/2005/7/15/my-contests-actually-make-a-difference.html) - Jul 14, 2005 ### [Important:Need someone to help me with DotNetNuke](https://osherove.com/blog/2005/7/14/importantneed-someone-to-help-me-with-dotnetnuke.html) --- title: "My contests actually make a difference :)" url: "https://osherove.com/blog/2005/7/15/my-contests-actually-make-a-difference.md" canonical: "https://osherove.com/blog/2005/7/15/my-contests-actually-make-a-difference.html" published: "2005-07-15T17:27:00" updated: "2005-07-15T17:27:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm glad my little Add-in contest helped someone get to Redmond for a tour with their friends :) What other contests would you like to see? Geekiest Joke? Coolest Avalon App? A \"Self Documenting Code\" contest? \"Best…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My contests actually make a difference :) By Roy Osherove July 15, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 15, 2005; technical details may be outdated. I'm glad my little Add-in contest [helped someone get to Redmond for a tour with their friends](http://weblogs.asp.net/rweigelt/archive/2005/07/01/417160.aspx) :) What other contests would you like to see? Geekiest Joke? Coolest Avalon App? A "Self Documenting Code" contest? "Best Software Development Horror Story"? I'd love more ideas... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 16, 2005 ### [\[OT\] What's inside the food we eat?](https://osherove.com/blog/2005/7/16/ot-whats-inside-the-food-we-eat.html) - Jul 15, 2005 ### [Open for work during September(L.A or Bellevue)](https://osherove.com/blog/2005/7/15/open-for-work-during-septemberla-or-bellevue.html) - Jul 14, 2005 ### [Important:Need someone to help me with DotNetNuke](https://osherove.com/blog/2005/7/14/importantneed-someone-to-help-me-with-dotnetnuke.html) - Jul 13, 2005 ### [Spell it with Flickr Images!](https://osherove.com/blog/2005/7/13/spell-it-with-flickr-images.html) --- title: "[Audio Interview] Steve Cook -Software Factories and Domain Specific Languages" url: "https://osherove.com/blog/2005/7/14/audio-interview-steve-cook-software-factories-and-domain-spe.md" canonical: "https://osherove.com/blog/2005/7/14/audio-interview-steve-cook-software-factories-and-domain-spe.html" published: "2005-07-14T20:38:00" updated: "2005-07-14T20:38:00" tags: [".Net Original", "Architecture", "Interview"] author: "Roy Osherove" description: "The first of several Interviews I managed to do during TechEd Europe: I chatted with Steve cook for a very interesting hour about his role in the development of UML, the concept behind software factories and domain…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Audio Interview\] Steve Cook -Software Factories and Domain Specific Languages By Roy Osherove July 14, 2005 In [.Net Original](https://osherove.com/blog/category/net-original), [Architecture](https://osherove.com/blog/category/architecture), [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published July 14, 2005; technical details may be outdated. The first of several Interviews I managed to do during TechEd Europe: I chatted with [Steve cook](http://blogs.msdn.com/stevecook/) for a very interesting hour about his role in the development of UML, the concept behind software factories and domain specific languages, and the role DSLs play within Visual Studio .NET 2005. Steve even takes us on a short step by step walk through on making a simple DSL and the technical steps this entails. Steve also discusses the present and the future of Modeling as a way to design software, and later offers his own view of what software factories might look like in 10 years time. There's lots more in this packed 56 minute talk, but I'll leave you to find out all the rest... _Language - English._ [Go Download](http://www.teamagile.com/mainpages/Interviews.html)  \- 56 minutes, MP3 (26 MB) _Steve Cook works in the Enterprise Frameworks and Tools group at Microsoft, which he joined at the beginning of 2003.  He is the architect responsible for the Domain Specific Language Tools.  Previously he was a Distinguished Engineer at IBM. He has worked in the IT industry for 30 years, as architect, programmer, author, consultant and teacher. He was one of the first people to introduce object-oriented programming into the UK, and has concentrated on languages, methods and tools for modeling since the early 1990s. He is a member of the Editorial Board of the Software and Systems Modeling Journal, a Fellow of the British Computer Society, and holds an Honorary Doctor of Science degree from De Montford University._ ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 17, 2005 ### [\[Audio Interview\] Ingo Rammer and Christian Weyer On Distributed Applications Architecture And Practices](https://osherove.com/blog/2005/8/17/audio-interview-ingo-rammer-and-christian-weyer-on-distribut.html) - Aug 17, 2005 ### [Sherpa: Another Code/Layer/Application Generator](https://osherove.com/blog/2005/8/17/sherpa-another-codelayerapplication-generator.html) - Jun 22, 2005 ### ["Visual C# .NET compiler could not be created" - Possible solution?](https://osherove.com/blog/2005/6/22/quotvisual-c-net-compiler-could-not-be-createdquot-possible.html) - Jun 8, 2005 ### [Popping up custom forms in the .NET PropertyGrid control](https://osherove.com/blog/2005/6/8/popping-up-custom-forms-in-the-net-propertygrid-control.html) --- title: "Important:Need someone to help me with DotNetNuke" url: "https://osherove.com/blog/2005/7/14/importantneed-someone-to-help-me-with-dotnetnuke.md" canonical: "https://osherove.com/blog/2005/7/14/importantneed-someone-to-help-me-with-dotnetnuke.html" published: "2005-07-14T12:21:00" updated: "2005-07-14T12:21:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I need someone who has good DotNetNuke installation experience - the www.agileisrael.com site keeps falling and This is a community site, so whoever can help is helping a growing community here in Israel. I'm not sure…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Important:Need someone to help me with DotNetNuke By Roy Osherove July 14, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 14, 2005; technical details may be outdated. I need someone who has good DotNetNuke installation experience - the [www.agileisrael.com](http://www.agileisrael.com/) site keeps falling and This is a community site, so whoever can help is helping a growing community here in Israel. I'm not sure what the problem is: _\[OleDbException (0x80004005): Unspecified error\]    System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr) +20    System.Data.OleDb.OleDbConnection.InitializeProvider() +57    System.Data.OleDb.OleDbConnection.Open() +203    Access.ApplicationBlocks.Data.AccessHelper.ExecuteReader(String connectionString, CommandType commandType, String commandText, OleDbParameter\[\] commandParameters) +119    Access.ApplicationBlocks.Data.AccessHelper.ExecuteReader(String connectionString, CommandType commandType, String commandText) +11    DotNetNuke.Data.AccessDataProvider.GetDatabaseVersion() +31    DotNetNuke.Upgrade.AutoUpgrade() +294    DotNetNuke.Global.Application\_Start(Object Sender, EventArgs E) +153 _ and then I get a database version error as well.... This all seems to fix itself after an IIS Restart. so - if you know anyone who can help out, even for a small fee, let me know : [my contact form](https://osherove.com/contact) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 15, 2005 ### [Open for work during September(L.A or Bellevue)](https://osherove.com/blog/2005/7/15/open-for-work-during-septemberla-or-bellevue.html) - Jul 15, 2005 ### [My contests actually make a difference :)](https://osherove.com/blog/2005/7/15/my-contests-actually-make-a-difference.html) - Jul 13, 2005 ### [Spell it with Flickr Images!](https://osherove.com/blog/2005/7/13/spell-it-with-flickr-images.html) - Jul 13, 2005 ### [Geekiest joke ever](https://osherove.com/blog/2005/7/13/geekiest-joke-ever.html) --- title: "Spell it with Flickr Images!" url: "https://osherove.com/blog/2005/7/13/spell-it-with-flickr-images.md" canonical: "https://osherove.com/blog/2005/7/13/spell-it-with-flickr-images.html" published: "2005-07-13T22:40:00" updated: "2005-07-13T22:40:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is cool ! Spell whatever you want using Flickr Images :) (via the Hebrew YNet blog )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Spell it with Flickr Images! By Roy Osherove July 13, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 13, 2005; technical details may be outdated. [![R - Reflective Letter](https://osherove.com/img/ext/photos14.flickr.com_14002574_22c2d31577_s.jpg)](http://flickr.com/photos/38634939@N00/14002574/ "'")[![O](https://osherove.com/img/ext/photos3.flickr.com_4067865_eacc130fcd_s.jpg)](http://flickr.com/photos/33041675@N00/4067865/ "'")[![broken neon Y](https://osherove.com/img/ext/photos4.flickr.com_8358360_cd2407f7b7_s.jpg)](http://flickr.com/photos/18619970@N00/8358360/ "'") [This is cool](http://www.metaatem.net/words/) ! Spell _whatever you want_ using Flickr Images :) (via the [Hebrew YNet blog](http://www.ynet.co.il/home/1,7340,L-2537-1-4,00.html#n)) [![O](https://osherove.com/img/ext/photos4.flickr.com_9595487_6b79cd752c_s.jpg)](http://flickr.com/photos/49968232@N00/9595487/ "O")[![tat3](https://osherove.com/img/ext/photos3.flickr.com_3661199_f9bf0e0680_s.jpg)](http://flickr.com/photos/57825706@N00/3661199/ "tat3")[!['Smartie lid \\](https://osherove.com/img/ext/photos3.flickr.com_12971865_c1ac56da13_s.jpg)](http://flickr.com/photos/35468140399@N01/12971865/ "'Smartie lid \")[![no paRking](https://osherove.com/img/ext/photos4.flickr.com_5335556_3a3c066c67_s.jpg)](http://flickr.com/photos/94832693@N00/5335556/ "no paRking")[![M](https://osherove.com/img/ext/photos6.flickr.com_6960065_11ae07c559_s.jpg)](http://flickr.com/photos/99849138@N00/6960065/ "M")[![V](https://osherove.com/img/ext/photos3.flickr.com_3559240_0c08252e9d_s.jpg)](http://flickr.com/photos/48600085265@N01/3559240/ "V")[![E](https://osherove.com/img/ext/photos14.flickr.com_17565358_7ce15061ce_s.jpg)](http://flickr.com/photos/33451089@N00/17565358/ "E") ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 15, 2005 ### [My contests actually make a difference :)](https://osherove.com/blog/2005/7/15/my-contests-actually-make-a-difference.html) - Jul 14, 2005 ### [Important:Need someone to help me with DotNetNuke](https://osherove.com/blog/2005/7/14/importantneed-someone-to-help-me-with-dotnetnuke.html) - Jul 13, 2005 ### [Geekiest joke ever](https://osherove.com/blog/2005/7/13/geekiest-joke-ever.html) - Jul 12, 2005 ### [Visual Basic 1.0, all over again](https://osherove.com/blog/2005/7/12/visual-basic-10-all-over-again.html) --- title: "Geekiest joke ever" url: "https://osherove.com/blog/2005/7/13/geekiest-joke-ever.md" canonical: "https://osherove.com/blog/2005/7/13/geekiest-joke-ever.html" published: "2005-07-13T12:14:00" updated: "2005-07-13T12:14:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This joke courtesy of David Platt : \"What do you get when you combine Lee Iaccoca and Dracula?\" \"Auto-Exec bat\"" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Geekiest joke ever By Roy Osherove July 13, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 13, 2005; technical details may be outdated. This joke courtesy of [David Platt](http://www.rollthunder.com/): _"What do you get when you combine [Lee Iaccoca](http://en.wikipedia.org/wiki/Lee_Iacocca) and  Dracula?"_ _"Auto-Exec bat"_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 14, 2005 ### [Important:Need someone to help me with DotNetNuke](https://osherove.com/blog/2005/7/14/importantneed-someone-to-help-me-with-dotnetnuke.html) - Jul 13, 2005 ### [Spell it with Flickr Images!](https://osherove.com/blog/2005/7/13/spell-it-with-flickr-images.html) - Jul 12, 2005 ### [Visual Basic 1.0, all over again](https://osherove.com/blog/2005/7/12/visual-basic-10-all-over-again.html) - Jul 11, 2005 ### [I might be in L.A in October, and open for consulting/speaking engagements](https://osherove.com/blog/2005/7/11/i-might-be-in-la-in-october-and-open-for-consultingspeaking.html) --- title: "Bloggers call to action: Fight comment spammers by moderating comments easily with .TEXT" url: "https://osherove.com/blog/2005/7/12/bloggers-call-to-action-fight-comment-spammers-by-moderating.md" canonical: "https://osherove.com/blog/2005/7/12/bloggers-call-to-action-fight-comment-spammers-by-moderating.html" published: "2005-07-12T13:03:00" updated: "2005-07-12T13:03:00" tags: ["Blogging"] author: "Roy Osherove" description: "Right now the best way I have to fight comment spammers is to moderate all comments. That means that automatically, any comment on the blog is not shown unless I specifically allow it to. If you have a .TEXT blog, you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Bloggers call to action: Fight comment spammers by moderating comments easily with .TEXT By Roy Osherove July 12, 2005 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 12, 2005; technical details may be outdated. Right now the best way I have to fight comment spammers is to moderate all comments. That means that automatically, any comment on the blog is not shown unless I specifically allow it to. If you have a .TEXT blog, you can easily do this as well. If we all do this, comment spammers will eventually figure out that this is not working and will have to come up with something else, but in the meantime we'll get rid of them. here's how: go into the administration part of your .TEXT blog. - click the "options" tab - click "preferences" - mark the check box that says "moderate comments" - that's it. Now, every comment that you get will be sent to you by email. If you'd like to make it visible, there's already a link in the email to do that with one simple click. It really takes no time at all and if we all do this it should have a serious impact on the comment spammers. I hope everyone does this. Now. If you agree, do these steps and link back to this post. We'll see if we can make this into something that actually helps. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Aug 2, 2005 ### [What blog community site do you recommend for a new .NET blogger?](https://osherove.com/blog/2005/8/2/what-blog-community-site-do-you-recommend-for-a-new-net-blog.html) - Jul 17, 2005 ### [Selling my soul to AdSense](https://osherove.com/blog/2005/7/17/selling-my-soul-to-adsense.html) - Jul 7, 2005 ### [Another Semi Israeli Blogger](https://osherove.com/blog/2005/7/7/another-semi-israeli-blogger.html) - Jun 30, 2005 ### [A \[Newer\] new way to fight blog trackback spam](https://osherove.com/blog/2005/6/30/a-newer-new-way-to-fight-blog-trackback-spam.html) --- title: "Looking for an architect for a medium project" url: "https://osherove.com/blog/2005/7/12/looking-for-an-architect-for-a-medium-project.md" canonical: "https://osherove.com/blog/2005/7/12/looking-for-an-architect-for-a-medium-project.html" published: "2005-07-12T11:16:00" updated: "2005-07-12T11:16:00" tags: ["Architecture"] author: "Roy Osherove" description: "I'm looking for an architect for a 5 week project. Good people are hard to find. Do the math. You don't have to live in Israel to do this. You may need to get on a plane to get there, though.. You need to know .NET and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Looking for an architect for a medium project By Roy Osherove July 12, 2005 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published July 12, 2005; technical details may be outdated. I'm looking for an architect for a 5 week project. Good people are hard to find. Do the math. You don't have to live in Israel to do this. You may need to get on a plane to get there, though.. You need to know .NET and Java at an Architect's level, and be able to handle and design **large traffic websites** with these technologies. Oh, and it's in **Singapore** starting by the end of this month. If you know anyone who'd be interested and answers this criteria, or maybe you are that person yourself   - email me. We may work something out. ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Aug 9, 2005 ### [Small Domain Specific Language for the GoF Design patterns](https://osherove.com/blog/2005/8/9/small-domain-specific-language-for-the-gof-design-patterns.html) - Jul 14, 2005 ### [\[Audio Interview\] Steve Cook -Software Factories and Domain Specific Languages](https://osherove.com/blog/2005/7/14/audio-interview-steve-cook-software-factories-and-domain-spe.html) - Jun 19, 2005 ### [\[Audio Interview\] Brian Noyes: Deep .NET Q&A](https://osherove.com/blog/2005/6/19/audio-interview-brian-noyes-deep-net-qampa.html) - Jun 19, 2005 ### [A very nice .NET architecture blog discovered](https://osherove.com/blog/2005/6/19/a-very-nice-net-architecture-blog-discovered.html) --- title: "Visual Basic 1.0, all over again" url: "https://osherove.com/blog/2005/7/12/visual-basic-10-all-over-again.md" canonical: "https://osherove.com/blog/2005/7/12/visual-basic-10-all-over-again.html" published: "2005-07-12T01:24:00" updated: "2005-07-12T01:24:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Looks like we're getting back to our roots , people. VB 1 is here to stay! :) Actually, it seems like a pretty nice GUI specification application. I wonder how it will fare in my next agile project.. (via TSS.net )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Visual Basic 1.0, all over again By Roy Osherove July 12, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 12, 2005; technical details may be outdated. [Looks like we're getting back to our roots](http://www.elegancetech.com/LS_Tutorial.aspx), people. VB 1 is here to stay! :) Actually, it seems like a pretty nice GUI specification application. I wonder how it will fare in my next agile project.. _(via_ [_TSS.net_](http://www.theserverside.net/news/thread.tss?thread_id=35064)_)_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 13, 2005 ### [Spell it with Flickr Images!](https://osherove.com/blog/2005/7/13/spell-it-with-flickr-images.html) - Jul 13, 2005 ### [Geekiest joke ever](https://osherove.com/blog/2005/7/13/geekiest-joke-ever.html) - Jul 11, 2005 ### [I might be in L.A in October, and open for consulting/speaking engagements](https://osherove.com/blog/2005/7/11/i-might-be-in-la-in-october-and-open-for-consultingspeaking.html) - Jul 8, 2005 ### [Sessions done at TechEd](https://osherove.com/blog/2005/7/8/sessions-done-at-teched.html) --- title: "Fixing MSDN's bad DPAPI examples (And what's DPAPI anyway?)" url: "https://osherove.com/blog/2005/7/11/fixing-msdns-bad-dpapi-examples-and-whats-dpapi-anyway.md" canonical: "https://osherove.com/blog/2005/7/11/fixing-msdns-bad-dpapi-examples-and-whats-dpapi-anyway.html" published: "2005-07-11T18:38:00" updated: "2005-07-11T18:38:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "DPAPI (Data Protection API) is something that most developers still don't know enough about. The good news is that working with it is much easier with .NET 2.0 and VS 2005, but in the meantime, if you want to work with…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Fixing MSDN's bad DPAPI examples (And what's DPAPI anyway?) By Roy Osherove July 11, 2005 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published July 11, 2005; technical details may be outdated. DPAPI (Data Protection API) is something that most developers **still** don't know enough about. The good news is that working with it is much easier with .NET 2.0 and VS 2005, but in the meantime, if you want to work with secure data (encrypted), using DPAPI is not the easiest thing in the word. It's mostly unmanaged APIs, and you'd have to create a wrapper class (or set of classes) to work with it. Fortunately for us developers, Microsoft has an MSDN article on the subject. The only problem is that it's code samples (which many people use to start of their own class wrappers) are of very bad quality and even contains some serious bugs, So feel free to [read the MSDN article](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secmod/html/secmod21.asp), but **don't use the code samples from it**. Instead, use the code samples from [**this article**](http://devprime.com/Article2061.aspx) which goes through the painful process of detailing all the **bad things** in the code sample in the first article including a bad memory leak bug. And if anyone at MS is reading this that can help fix those code samples - that'd be great! _(found via_ [_this blog_](http://devauthority.com/blogs/devprime/archive/2005/07/10/215.aspx)_, located in the newly formed_ [_DeveAuthority blogsphere_](http://devauthority.com/blogs/)_)_ _**Update**: Joe writes in the comments:_ _Even better than the corrected sample: use NCrypto (_[_http://ncrypto.sourceforge.net/default.htm_](http://ncrypto.sourceforge.net/default.htm)_)._ _The API is very similar to what's coming in .NET 2.0._ Thanks Joe! ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Nov 26, 2005 ### [Nice article on ordering code construction tasks by Jeremy Miller](https://osherove.com/blog/2005/11/26/nice-article-on-ordering-code-construction-tasks-by-jeremy-m.html) - Jul 29, 2005 ### [Nice article: Agile Top-Down](https://osherove.com/blog/2005/7/29/nice-article-agile-top-down.html) - Jun 26, 2005 ### [Great article on Reflection and Performance on MSDN Mag](https://osherove.com/blog/2005/6/26/great-article-on-reflection-and-performance-on-msdn-mag.html) - May 10, 2005 ### [\[Article\]Simplify Data Layer Unit Testing using Enterprise Services](https://osherove.com/blog/2005/5/10/articlesimplify-data-layer-unit-testing-using-enterprise-ser.html) --- title: "I might be in L.A in October, and open for consulting/speaking engagements" url: "https://osherove.com/blog/2005/7/11/i-might-be-in-la-in-october-and-open-for-consultingspeaking.md" canonical: "https://osherove.com/blog/2005/7/11/i-might-be-in-la-in-october-and-open-for-consultingspeaking.html" published: "2005-07-11T09:03:00" updated: "2005-07-11T09:03:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It looks like I might be in the neighborhood of L.A this October for several weeks. Possible things I'd like to do while there: Speak at a user group or two about Agile/Regex/.NET stuff Consult/Train on Agile/.NET Have…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I might be in L.A in October, and open for consulting/speaking engagements By Roy Osherove July 11, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 11, 2005; technical details may be outdated. It looks like I might be in the neighborhood of L.A this October for several weeks. Possible things I'd like to do while there: - Speak at a user group or two about Agile/Regex/.NET stuff - Consult/Train on Agile/.NET - Have a blogger/geek dinner? So, If your company may be interested in me consulting regarding Agile development (Courses, training or mentoring on Test Driven Development, Agile Project Management etc.) or .NET Architecture and best practices, contact me as soon as possible by email to [my contact form](https://osherove.com/contact) and we'll see if we can set something up. And, If your user group would like me to come over, contact me by the same email listed above and we'll see if we can set something up. Cheers! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 13, 2005 ### [Geekiest joke ever](https://osherove.com/blog/2005/7/13/geekiest-joke-ever.html) - Jul 12, 2005 ### [Visual Basic 1.0, all over again](https://osherove.com/blog/2005/7/12/visual-basic-10-all-over-again.html) - Jul 8, 2005 ### [Sessions done at TechEd](https://osherove.com/blog/2005/7/8/sessions-done-at-teched.html) - Jul 3, 2005 ### [Congratulations, Ohad. Twofold!](https://osherove.com/blog/2005/7/3/congratulations-ohad-twofold.html) --- title: "Performance vs. Testability and semi-virtual method calls" url: "https://osherove.com/blog/2005/7/10/performance-vs-testability-and-semi-virtual-method-calls.md" canonical: "https://osherove.com/blog/2005/7/10/performance-vs-testability-and-semi-virtual-method-calls.html" published: "2005-07-10T22:58:00" updated: "2005-07-10T22:58:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "I won't try to sit here and say that the issue of performance vs. testability can be summed up in one blog post (or a full article for that matter). However, it's an important one and during my consulting gigs I've come…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Performance vs. Testability and semi-virtual method calls By Roy Osherove July 10, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published July 10, 2005; technical details may be outdated. I won't try to sit here and say that the issue of performance vs. testability can be summed up in one blog post (or a full article for that matter). However, it's an important one and during my consulting gigs I've come across some interesting questions and answers regarding this area. Here are some of my thoughts on this. In languages like C++ developing real-time performing applications may also mean having coding-call standards such as "do not use virtual functions" in the feat that a virtual call repeated enough times may slow the system substantially. Unfortunately, avoiding virtual calls takes away a lot of the testability aspect of code, especially when dealing with legacy code, or real time code. The problem is that for your tests to be able to instantiate specific classes or simulate specific situations, a virtual call may save the day by allowing you to perform what's commonly known as "Inherit & Override" whereby you'd create a class that \*inherits\* from your class under test and then overrides specific methods which may control various inputs into the class or solve timing and other dependency issues. Taking a simple MailSender class as an example, you might want to override a MailSender's "SendDataToExchangeServer" virtual method and implement it as an empty method instead of making all the way through to a real exchange server. This in turn allows your tests to use the \*inherited\* class and avoid any unneeded or timely calls to real servers. They can then simulate various problems with the server such as throwing an exception in the overridden call and see what happens in the class under test. The concept is not a very complicated one but you may need a few readings in order to get it (I suggest you try it with one of your own classes you'd like to test). In any case, this simple method of removing a dependency is impossible to implement without a virtual method (not an an easy enough manner, anyway). What should you do when faced with the problem of conflicting constraints-- you'd like to test the class but testing it might make it less performing: - "[Premature optimization is the root of all evil](http://www.cookcomputing.com/blog/archives/000084.html)": Consider making the method virtual anyway. In fact, one of the first things you learn in a software optimization course is this: "Make it work, **then** optimize it". Same thing here. Make the software work, and make sure you know it works with tests. When it does work, if you still need to optimize it, you'll have what I call as "**known optimization points**"  - profile your code and see what part of code is the most problematic perf wise. If it's due to a virtual method that could have been non virtual, you can remove that "virtual" part and you've just optimized your application. Of course, that part is now no longer testable. - Optimize early - lose testability, That's the worst way to go. - Combine the two approaches: use what I fondly call "Semi-Virtual method calls". What are those? well, they're methods which, when compiled with tests, act as virtual functions, and when compiled without tests act as non virtual functions. The easiest way to do this is to simply write the "virtual" part on a different line and surround it with "#ifdef"s or macros like so: **public** **#ifdef(UNIT\_TEST) virtual #endif** **void domeSomethingFast(int num){...}** You can apply this approach in many different syntaxes, but the main thing is that the tests get what they need and your code gets what it needs. Notice however, that you're taking the "premature optimization" approach here for your Production code anyway. You're testing its logic, yes. but you're still optimizing really early. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 25, 2005 ### [XP Games links](https://osherove.com/blog/2005/7/25/xp-games-links.html) - Jul 25, 2005 ### [\[Article\] The Test Feasibility Matrix](https://osherove.com/blog/2005/7/25/article-the-test-feasibility-matrix.html) - Jul 1, 2005 ### [Rhino.Mocks v. 2.0 Announced. Yes, it's a Mock Object Framework.](https://osherove.com/blog/2005/7/1/rhinomocks-v-20-announced-yes-its-a-mock-object-framework.html) - Jun 30, 2005 ### [The Mock Objects elevator speech](https://osherove.com/blog/2005/6/30/the-mock-objects-elevator-speech.html) --- title: "Udi Dahan - MVP, finally." url: "https://osherove.com/blog/2005/7/10/udi-dahan-mvp-finally.md" canonical: "https://osherove.com/blog/2005/7/10/udi-dahan-mvp-finally.html" published: "2005-07-10T21:21:00" updated: "2005-07-10T21:21:00" tags: ["Community"] author: "Roy Osherove" description: "Congratulations to Udi Dahan on getting his Solutions Architect MVP award ! Udi has been speaking at user groups for a long time now and has an interesting blog where he posts his thoughts on architecture and software…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Udi Dahan - MVP, finally. By Roy Osherove July 10, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published July 10, 2005; technical details may be outdated. Congratulations to [Udi Dahan](http://www.udidahan.com/) on getting his [Solutions Architect MVP award](http://udidahan.weblogs.us/archives/029739.html)! Udi has been speaking at user groups for a long time now and has an [interesting blog](http://www.udidahan.com/) where he posts his thoughts on architecture and software development. He's a great guy and totally deserves this award both from the architectural standpoint and from the community standpoint (which is what being an MVP is all about, really). Way to go Udi! See you at the MVP Summit :) BTW,  you can read the full list of Israeli MVPs (some are not Developer MVPs) [over here](http://www.microsoft.com/israel/support/mvp/experts/default.mspx). Some recent new additions include [Alon Fleiss](http://www.microsoft.com/israel/support/mvp/experts/Alon_Fliess.mspx), [Leon Langlayben](http://www.microsoft.com/israel/support/mvp/experts/Leon_Langleyben.mspx) and more ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Aug 8, 2005 ### [Announcing a New Larkware Contest](https://osherove.com/blog/2005/8/8/announcing-a-new-larkware-contest.html) - Jul 17, 2005 ### [TDD Workshop tomorrow!](https://osherove.com/blog/2005/7/17/tdd-workshop-tomorrow.html) - Jul 10, 2005 ### [Upcoming Audio Interviews from TechEd Europe](https://osherove.com/blog/2005/7/10/upcoming-audio-interviews-from-teched-europe.html) - Jul 1, 2005 ### [Agile Israel News & Updates](https://osherove.com/blog/2005/7/1/agile-israel-news-amp-updates.html) --- title: "Upcoming Audio Interviews from TechEd Europe" url: "https://osherove.com/blog/2005/7/10/upcoming-audio-interviews-from-teched-europe.md" canonical: "https://osherove.com/blog/2005/7/10/upcoming-audio-interviews-from-teched-europe.html" published: "2005-07-10T20:50:00" updated: "2005-07-10T20:50:00" tags: ["Community", "Interview"] author: "Roy Osherove" description: "TechEd Europe is Done. Here's a great summary of some of the sessions and the overall spirit of things. I've been pretty busy networking and getting to know many of the speakers I've always read or heard and wanted to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Upcoming Audio Interviews from TechEd Europe By Roy Osherove July 10, 2005 In [Community](https://osherove.com/blog/category/community), [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published July 10, 2005; technical details may be outdated. TechEd Europe is Done. [Here's a great summary](http://www.styledesign.biz/weblogs/macinnesm/archive/2005/07/10/950.aspx) of some of the sessions and the overall spirit of things. I've been pretty busy networking and getting to know many of the speakers I've always read or heard and wanted to get closer to. It was hard, but by the last day of the conference I managed to end up with 6 recorded interviews, 1 failed one (which will be redone) and some new friends. 2 of the interviews: A chat with **BJ Holtgrewe**, Evangelist for Visual Studio Tools for Office at the conference and a chat with [**Scott Woodgate**](http://blogs.msdn.com/scottwoo/) about BizTalk, will only be released in the coming weeks as part of the MS EMEA Beta 2 Experience, and I'll share the download links directly from them as they become available. The others are: - A chat with [Randy Miller](http://blogs.msdn.com/randymiller/), one of the people behind MSF and MSF Agile - A chat with [Steve Cook](http://blogs.msdn.com/stevecook/default.aspx), one of the people behind the book "Software Factories" - A chat with [Ingo Rammer](http://www.thinktecture.com/staff/ingo/weblog/) and [Christian Weyer](http://weblogs.asp.net/cweyer/) about distributed systems architecture - A chat with [David Platt](http://www.rollthunder.com/) (which was screwed up with bad audio and will be re-recorded) The last four will be published on the coming weeks on the [Team Agile Website](http://www.teamagile.com/mainpages/Interviews.html), along with [the other interviews I've already done](http://www.teamagile.com/mainpages/Interviews.html). I've also done some video shooting on the exhibition floor at TechEd. Hopefully that will be on a more or less viewable quality and I'll have that downloadable as well sometime in the near weeks or so, but that one is still a little shaky since it wasn't my camera and so on... ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Jul 17, 2005 ### [TDD Workshop tomorrow!](https://osherove.com/blog/2005/7/17/tdd-workshop-tomorrow.html) - Jul 10, 2005 ### [Udi Dahan - MVP, finally.](https://osherove.com/blog/2005/7/10/udi-dahan-mvp-finally.html) - Jul 1, 2005 ### [Agile Israel News & Updates](https://osherove.com/blog/2005/7/1/agile-israel-news-amp-updates.html) - Jun 29, 2005 ### [TDD workshop today - CANCELED](https://osherove.com/blog/2005/6/29/tdd-workshop-today-canceled.html) --- title: "Sessions done at TechEd" url: "https://osherove.com/blog/2005/7/8/sessions-done-at-teched.md" canonical: "https://osherove.com/blog/2005/7/8/sessions-done-at-teched.html" published: "2005-07-08T08:56:00" updated: "2005-07-08T08:56:00" tags: ["Off Topic", "Regex"] author: "Roy Osherove" description: "I just finished doing all my sessions and chalk talks at TechEd. phew. I didn't imagine it would be so demanding physically (the mileage you walk between sessions is huge!). I've gotten feedback scores on all of them -…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Sessions done at TechEd By Roy Osherove July 8, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic), [Regex](https://osherove.com/blog/category/regex) **Historical article** · Originally published July 8, 2005; technical details may be outdated. I just finished doing all my sessions and chalk talks at TechEd. phew. I didn't imagine it would be so demanding physically (the mileage you walk between sessions is huge!). I've gotten feedback scores on all of them - and came out just above average on the overall score. You'd be amazed, but at the speaker lounge, the session scores are what matters most. There's actually a screen up there detailing the top ten scored session (Kimberly Tripp appears 3 times there...). Whenever a speaker finishes their session, they quickly login to the MS Events website to find out their given scores. The scores later make a large part in deciding what speakers to bring on next year or next conference. So basically, even some of the biggest names you know as speakers can sometimes be found running up the stairs to the speaker lounge to check their score. As a side note, some of them are pretty damn puffy about doing well in there. There's certainly a lot of ego running around the halls, mine included. The last session was at 8.30 am after the party night at TechEd. The party rocked (though I think the Israeli Party was better - people actually, like, danced) I got about 150 people in which is not that bad! I gave out two T Shirts with "Got Regex" printed on them and a few Got Regex key chains :) Someone even took a picture with me as the Guy who Wrote The Regulator. That was weird and fun :) The first two sessions were chalk talks about Unit Testing. They went well though were very crowded. They should have been full sessions, really. Anyway, I'll have more details when I can rest myself a bit. I have a full day of interviews ahead of me (speaking to various interesting people to publish later on) and I have to get ready. Also got a bit of video filmed on the show floor, so maybe you'll get that sometime when I can manage to share it (through the MS Emea team). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 12, 2005 ### [Visual Basic 1.0, all over again](https://osherove.com/blog/2005/7/12/visual-basic-10-all-over-again.html) - Jul 11, 2005 ### [I might be in L.A in October, and open for consulting/speaking engagements](https://osherove.com/blog/2005/7/11/i-might-be-in-la-in-october-and-open-for-consultingspeaking.html) - Jul 3, 2005 ### [Congratulations, Ohad. Twofold!](https://osherove.com/blog/2005/7/3/congratulations-ohad-twofold.html) - Jul 1, 2005 ### [Dictionellisense](https://osherove.com/blog/2005/7/1/dictionellisense.html) --- title: "Another Semi Israeli Blogger" url: "https://osherove.com/blog/2005/7/7/another-semi-israeli-blogger.md" canonical: "https://osherove.com/blog/2005/7/7/another-semi-israeli-blogger.html" published: "2005-07-07T16:55:00" updated: "2005-07-07T16:55:00" tags: ["Blogging"] author: "Roy Osherove" description: "Another semi-Israeli Blogger about .NET out there: Yaniv Pessach .He lives in Redmond. A Microsoftie?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another Semi Israeli Blogger By Roy Osherove July 7, 2005 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 7, 2005; technical details may be outdated. Another semi-Israeli Blogger about .NET out there: [Yaniv Pessach](http://blogonsoftware.blogspot.com/).He lives in Redmond. A Microsoftie? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 17, 2005 ### [Selling my soul to AdSense](https://osherove.com/blog/2005/7/17/selling-my-soul-to-adsense.html) - Jul 12, 2005 ### [Bloggers call to action: Fight comment spammers by moderating comments easily with .TEXT](https://osherove.com/blog/2005/7/12/bloggers-call-to-action-fight-comment-spammers-by-moderating.html) - Jun 30, 2005 ### [A \[Newer\] new way to fight blog trackback spam](https://osherove.com/blog/2005/6/30/a-newer-new-way-to-fight-blog-trackback-spam.html) - Jun 20, 2005 ### [The Regex Challenge: Blogn' my way to the PDC](https://osherove.com/blog/2005/6/20/the-regex-challenge-blogn-my-way-to-the-pdc.html) --- title: "Some Teched Pics" url: "https://osherove.com/blog/2005/7/5/some-teched-pics.md" canonical: "https://osherove.com/blog/2005/7/5/some-teched-pics.html" published: "2005-07-05T13:10:00" updated: "2005-07-05T13:10:00" tags: ["TechEd 05"] author: "Roy Osherove" description: "Some photos from day 1 of TechEd: There are some beanbag places like this - just sit down and wi-fi your way home. Very nice. There are a few dozen PCs like this: Pick up the phone, press a \"New Call\" button in Outlook…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some Teched Pics By Roy Osherove July 5, 2005 In [TechEd 05](https://osherove.com/blog/category/teched-05) **Historical article** · Originally published July 5, 2005; technical details may be outdated. [Some photos](http://www.flickr.com/photos/royo/sets/) from day 1 of TechEd: ![](https://osherove.com/img/ext/photos18.flickr.com_23749031_9a623b126d.jpg_v_0) There are some beanbag places like this - just sit down and wi-fi your way home. Very nice. ![](https://osherove.com/img/ext/photos18.flickr.com_23749113_307868aecd.jpg_v_0) There are a few dozen PCs like this: Pick up the phone, press a "New Call" button in Outlook and you've got a long distance free call anywhere. VOIP rocks. ![](https://osherove.com/img/ext/photos18.flickr.com_23749125_30b3e9e414.jpg_v_0) This is the speaker briefing. You'll notice [Jackie Goldstein](http://weblogs.asp.net/jackieg) on the bottom right. ![](https://osherove.com/img/ext/photos18.flickr.com_23749231_7bcd593b37.jpg_v_1120568445) [Brian Noyes](http://www.softinsight.com/bnoyes/) getting ready for his talks. Great guy. ![](https://osherove.com/img/ext/photos18.flickr.com_23749280_c9e3096655.jpg_v_0) This is one of the things present at the exhibitor lounge. That car is currently booting.. ![](https://osherove.com/img/ext/photos18.flickr.com_23749338_44eab8a520.jpg_v_0) ![](https://osherove.com/img/ext/photos18.flickr.com_23749358_e0ae1146ef.jpg_v_0) Lots of wireless stations around. LOTS. ![](https://osherove.com/img/ext/photos18.flickr.com_23749459_2fa3b731b9.jpg_v_0) I just had to put this in.  Flicker greeted me in Arabic. that's \*almost\* Hebrew but at least there was an effort... ## More in TechEd 05 [All posts in TechEd 05](https://osherove.com/blog/category/teched-05) - Oct 21, 2005 ### [Nice Guidance Automation kit hands on lab from TechEd (with a fix for a build problem it contains)](https://osherove.com/blog/2005/10/21/nice-guidance-automation-kit-hands-on-lab-from-teched-with-a.html) - Jul 5, 2005 ### [TechEd: David Platt on Smart Clients Vs. Browsers](https://osherove.com/blog/2005/7/5/teched-david-platt-on-smart-clients-vs-browsers.html) --- title: "TechEd: David Platt on Smart Clients Vs. Browsers" url: "https://osherove.com/blog/2005/7/5/teched-david-platt-on-smart-clients-vs-browsers.md" canonical: "https://osherove.com/blog/2005/7/5/teched-david-platt-on-smart-clients-vs-browsers.html" published: "2005-07-05T12:46:00" updated: "2005-07-05T12:46:00" tags: ["TechEd 05"] author: "Roy Osherove" description: "It's the first time I've been to a speaker lounge in TechEd (and 2nd time in TechEd at all, for that matter) and boy there are some interesting people in here. Phone posted later. For now, David Platt about Smart Client…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TechEd: David Platt on Smart Clients Vs. Browsers By Roy Osherove July 5, 2005 In [TechEd 05](https://osherove.com/blog/category/teched-05) **Historical article** · Originally published July 5, 2005; technical details may be outdated. It's the first time I've been to a speaker lounge in TechEd (and 2nd time in TechEd at all, for that matter) and boy there are some interesting people in here. Phone posted later. For now, [David Platt](http://www.rollthunder.com/) about Smart Client Vs. Browser:  "InProc vs. Out of Proc is kinda like sex. InProc is like sex without a condom - much more intimate but not very secure. OutProc is not as intimate, you may have more performance problems as well, but it's much more secure." "Think of paper as an Energy in-energy out scenario.There is little energy required to burn a piece of paper, and also very little energy (heat) is produced. Coal, on the other hand, needs lots of energy to get going, but produces lots of energy in return. Now transfer this idea to the discussion about smart clients vs. browsers. For a browser app, the client needs very little energy to produce a working installation. But gets little in return (you wouldn't run a whole Word editing session inside a browser, would you?). For a smart client app, the amount of energy is higher (installation, security issues) but you get lots more in return. ClickOnce aims to make the energy investment lower and lower, but it still is not a browser-like installation." I'll be doing a full interview with david during TechEd, to be posted in the coming weeks.. ## More in TechEd 05 [All posts in TechEd 05](https://osherove.com/blog/category/teched-05) - Oct 21, 2005 ### [Nice Guidance Automation kit hands on lab from TechEd (with a fix for a build problem it contains)](https://osherove.com/blog/2005/10/21/nice-guidance-automation-kit-hands-on-lab-from-teched-with-a.html) - Jul 5, 2005 ### [Some Teched Pics](https://osherove.com/blog/2005/7/5/some-teched-pics.html) --- title: "Congratulations, Ohad. Twofold!" url: "https://osherove.com/blog/2005/7/3/congratulations-ohad-twofold.md" canonical: "https://osherove.com/blog/2005/7/3/congratulations-ohad-twofold.html" published: "2005-07-03T19:39:00" updated: "2005-07-03T19:39:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Congratulations to Ohad on his newborn, shira ! Ohad just got his Security MVP as well, so that's double reason to be glad :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Congratulations, Ohad. Twofold! By Roy Osherove July 3, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 3, 2005; technical details may be outdated. Congratulations to [Ohad on his newborn, shira](http://weblogs.asp.net/israelio/archive/2005/07/03/417559.aspx)! Ohad just got his Security MVP as well, so that's double reason to be glad :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 11, 2005 ### [I might be in L.A in October, and open for consulting/speaking engagements](https://osherove.com/blog/2005/7/11/i-might-be-in-la-in-october-and-open-for-consultingspeaking.html) - Jul 8, 2005 ### [Sessions done at TechEd](https://osherove.com/blog/2005/7/8/sessions-done-at-teched.html) - Jul 1, 2005 ### [Dictionellisense](https://osherove.com/blog/2005/7/1/dictionellisense.html) - Jul 1, 2005 ### [William Safire's Rules for Writers](https://osherove.com/blog/2005/7/1/william-safires-rules-for-writers.html) --- title: "Agile Israel News & Updates" url: "https://osherove.com/blog/2005/7/1/agile-israel-news-amp-updates.md" canonical: "https://osherove.com/blog/2005/7/1/agile-israel-news-amp-updates.html" published: "2005-07-01T23:40:00" updated: "2005-07-01T23:40:00" tags: ["Community"] author: "Roy Osherove" description: "If you haven't been to the last Agile Israel meeting in June, here are some things announced there: Fixed meeting date The Agile Israel group has a fixed date each month. The group meets on the fourth Monday of each…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Israel News & Updates By Roy Osherove July 1, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published July 1, 2005; technical details may be outdated. If you haven't been to the last [Agile Israel](http://www.agileisrael.com/) meeting in June, here are some things announced there: - **Fixed meeting date** The Agile Israel group has a fixed date each month. The group meets on the **fourth Monday of each month**. That means the next group meeting is **Monday - July 25th**. Please update your calendars for all future meetings as well. - **Next TDD workshop on July 18th**  The previous workshop scheduled to be on June was canceled due to the horrible traffic jams that were expected. The next meeting however will be on July 18 and will focus on Basic Unit testing and test driven principles using Nunit and .NET (VB or C#). We already have 10 attendees and 2 more are required to fill the quota for that meeting. If you'd like to attend, send an email to **TDDWorkshop AT AgileIsrael.com** expressing your wish. You have to be confirmed in order to attend. It will **not** be possible to just show up, since the number of people per group is limited to 12 (so each person get more attention during training). - **Express your interest in a future events and workshops** If you'd like to attend a future TDD workshop after July 18th, we're planning several types of events: 1. **NUnit** Basic training workshop (just like July 18th) 2. **NUnit** advanced workshop (If you've done the first or have basic knowledge in NUnit) 3. **NUnit** Expert workshop (If you're familiar with Mock Objects and have done your share of testing already) 4. \------------------- 5. **JUnit** Basic training workshop (just like July 18th) 6. **JUnit** advanced workshop (If you've done the first or have basic knowledge in JUnit) 7. **JUnit** Expert workshop (If you're familiar with Mock Objects and have done your share of testing already) 8. **Blogger/Geek Dinner** If you'd like to attend one of these (please choose \*only one\* for now), please send an email to **TDDWorkhop at AgileIsrael.com** copying the exact line you're interested in. The most popular workshops will be done first and you'll be notified with an option to register for them. All workshops are 3 hours length, are **totally free**, and fun. 1 hour presentation +2 hours hands-on exercises with a guide looking over your shoulder. How's that for an opportunity to learn? One more thing - you have to be registered on the Agile Israel site to attend. That's our way of making sure you get notified if some things change, and that you'll know about future meetings. If you'd like to bring a friend or three, that's cool - as long as they register on the site and register separately to the events. We need to know **exactly** who's coming. If you'd like to do a Blogger/Geek dinner at some nice restaurant - send an email to **dinner at agileisrael.com** saying what kind of food you like and whether you'd like Kosher or veggie meals. Might be fun to just hang out and maybe talk agile on some beers/pizza :) - **Talk at the next Agile Israel meeting** If you have a topic you'd like to talk about in front of the group, or maybe a nice subject to bring up on which we can have a nice discussion - send an email to **suggestions at agileisrael.com** . In fact, use this email to suggest **anything** that's on your mind that could be better. Let us know what we can do better. - **Microphone purchase** Last meeting I've announced that I'm collecting money from people (10-20 NIS each) for two purposes. The first was registering the group with the Agile Alliance organization. The second was to purchase a low cost wireless clip-on microphone so that future meetings could be recorded easily with better sound quality. Some of you have already donated some money which, you'd like to know, has already been spent on making both of this causes come true. The group is now officially recognized as part of the [Agile Alliance](http://www.agilealliance.org/) which as it turns out, did not cost anything. Membership is free. However, the microphone should be on its way and arrive by the time the next meeting will take place. The Microphone cost has been covered partially by funds from the people in the group and the rest by my own. Hopefully ,the next meeting's sound quality will be superb. (The last meeting's audio is still being edited and perfected for better quality and will be online in the coming week or two) That's it for this update batch. Feel free to reply if you have anything in terms of feedback. See you next meeting! ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Jul 10, 2005 ### [Udi Dahan - MVP, finally.](https://osherove.com/blog/2005/7/10/udi-dahan-mvp-finally.html) - Jul 10, 2005 ### [Upcoming Audio Interviews from TechEd Europe](https://osherove.com/blog/2005/7/10/upcoming-audio-interviews-from-teched-europe.html) - Jun 29, 2005 ### [TDD workshop today - CANCELED](https://osherove.com/blog/2005/6/29/tdd-workshop-today-canceled.html) - Jun 26, 2005 ### [Wanna record a geeky interview at Tech-Ed Europe?](https://osherove.com/blog/2005/6/26/wanna-record-a-geeky-interview-at-tech-ed-europe.html) --- title: "Rhino.Mocks v. 2.0 Announced. Yes, it's a Mock Object Framework." url: "https://osherove.com/blog/2005/7/1/rhinomocks-v-20-announced-yes-its-a-mock-object-framework.md" canonical: "https://osherove.com/blog/2005/7/1/rhinomocks-v-20-announced-yes-its-a-mock-object-framework.html" published: "2005-07-01T21:58:00" updated: "2005-07-01T21:58:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Ayende has announced that he's released Rhino.Mocks v. 2.0 : his own version of what he'd like in a Mock Object framework. I haven't yet got a chance to try it out, but it certainly sounds interesting! \"Rhino.Mocks is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Rhino.Mocks v. 2.0 Announced. Yes, it's a Mock Object Framework. By Roy Osherove July 1, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 1, 2005; technical details may be outdated. [Ayende](http://www.ayende.com/Blog/) has [announced](http://www.ayende.com/Blog/RhinoMocks20Released.aspx) that he's released [Rhino.Mocks v. 2.0](http://www.codeproject.com/useritems/Rhino_Mocks_Version_20.asp): his own version of what he'd like in a Mock Object framework. I haven't yet got a chance to try it out, but it certainly sounds interesting! _"Rhino.Mocks is an attempt to create easier way to build and use mock objects and allow better refactoring support from the current tools. It's a hybrid approach between the pure Record/Replay of_ [_EasyMock.Net_](http://sourceforge.net/projects/easymocknet/)_'s model and_ [_NMock_](http://www.nmock.org/)_'s expectation based model. Rhino.Mocks originated from_ [_EasyMock.Net_](http://sourceforge.net/projects/easymocknet/) _and attempt to improve on their model to create easy to use and power mocking framework. It's free for use and modification for free and commercial software._ _I created Rhino.Mocks because I wanted better support from refactoring tools such as ReSharper and because I don't like the way_ [_NMock_](http://www.nmock.org/) _handle parameterized methods (you need to pass fake constraints to get it to recognize the correct method) and the lack of extensibility \[I required hacks to get to the result that I wanted\]."_ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 25, 2005 ### [\[Article\] The Test Feasibility Matrix](https://osherove.com/blog/2005/7/25/article-the-test-feasibility-matrix.html) - Jul 10, 2005 ### [Performance vs. Testability and semi-virtual method calls](https://osherove.com/blog/2005/7/10/performance-vs-testability-and-semi-virtual-method-calls.html) - Jun 30, 2005 ### [The Mock Objects elevator speech](https://osherove.com/blog/2005/6/30/the-mock-objects-elevator-speech.html) - Jun 29, 2005 ### [TDD workshop today - CANCELED](https://osherove.com/blog/2005/6/29/tdd-workshop-today-canceled.html) --- title: "Dictionellisense" url: "https://osherove.com/blog/2005/7/1/dictionellisense.md" canonical: "https://osherove.com/blog/2005/7/1/dictionellisense.html" published: "2005-07-01T21:13:00" updated: "2005-07-01T21:13:00" tags: ["Off Topic"] author: "Roy Osherove" description: "OK, never mind. I don't have the time or energy to build this, but maybe one of you can. And earn billions of dollars: Dictionellisense: Type the beginning of a word in Word , press CTRL+SPACE and have a list of words…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Dictionellisense By Roy Osherove July 1, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 1, 2005; technical details may be outdated. OK, never mind. I don't have the time or energy to build this, but maybe one of you can. And earn billions of dollars: Dictionellisense: Type the beginning of a word in Word , press CTRL+SPACE and have a list of words starting with that word appear and let you choose one. Press CTRL+SHIFT+SPACE and you'll see a list of synonyms for that word. Simple? Easy? IDEs do it. Mobile telephones do it (T9). Even some text editors do it. Why isn't Word? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 8, 2005 ### [Sessions done at TechEd](https://osherove.com/blog/2005/7/8/sessions-done-at-teched.html) - Jul 3, 2005 ### [Congratulations, Ohad. Twofold!](https://osherove.com/blog/2005/7/3/congratulations-ohad-twofold.html) - Jul 1, 2005 ### [William Safire's Rules for Writers](https://osherove.com/blog/2005/7/1/william-safires-rules-for-writers.html) - Jul 1, 2005 ### [Nice PDC Contest Entry from Steve Hebert](https://osherove.com/blog/2005/7/1/nice-pdc-contest-entry-from-steve-hebert.html) --- title: "William Safire's Rules for Writers" url: "https://osherove.com/blog/2005/7/1/william-safires-rules-for-writers.md" canonical: "https://osherove.com/blog/2005/7/1/william-safires-rules-for-writers.html" published: "2005-07-01T19:45:00" updated: "2005-07-01T19:45:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I found a quite funny tidbit today by reading the weekend papers, where it was translated into Hebrew. The English source is pretty nice as well!: William Safire's Rules for Writers : Remember to never split an…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # William Safire's Rules for Writers By Roy Osherove July 1, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 1, 2005; technical details may be outdated. I found a quite funny tidbit today by reading the weekend papers, where it was translated into Hebrew. The English source is pretty nice as well!: **William Safire's [Rules for Writers](http://www.chem.gla.ac.uk/protein/pert/safire.rules.html):** 1. Remember to never split an infinitive. 2. The passive voice should never be used. 3. Do not put statements in the negative form. 4. Verbs have to agree with their subjects. 5. Proofread carefully to see if you words out. 6. If you reread your work, you can find on rereading a great deal of repetition can be by rereading and editing. 7. A writer must not shift your point of view. 8. And don't start a sentence with a conjunction. (Remember, too, a preposition is a terrible word to end a sentence with.) 9. Don't overuse exclamation marks!! 10. Place pronouns as close as possible, especially in long sentences, as of 10 or more words, to their antecedents. 11. Writing carefully, dangling participles must be avoided. 12. If any word is improper at the end of a sentence, a linking verb is. 13. Take the bull by the hand and avoid mixing metaphors. 14. Avoid trendy locutions that sound flaky. 15. Everyone should be careful to use a singular pronoun with singular nouns in their writing. 16. Always pick on the correct idiom. 17. The adverb always follows the verb. 18. Last but not least, avoid cliches like the plague; seek viable alternatives. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 3, 2005 ### [Congratulations, Ohad. Twofold!](https://osherove.com/blog/2005/7/3/congratulations-ohad-twofold.html) - Jul 1, 2005 ### [Dictionellisense](https://osherove.com/blog/2005/7/1/dictionellisense.html) - Jul 1, 2005 ### [Nice PDC Contest Entry from Steve Hebert](https://osherove.com/blog/2005/7/1/nice-pdc-contest-entry-from-steve-hebert.html) - Jun 30, 2005 ### [Who's reading me?](https://osherove.com/blog/2005/6/30/whos-reading-me.html) --- title: "How to see the TechEd US sessions online" url: "https://osherove.com/blog/2005/7/1/how-to-see-the-teched-us-sessions-online.md" canonical: "https://osherove.com/blog/2005/7/1/how-to-see-the-teched-us-sessions-online.html" published: "2005-07-01T13:22:00" updated: "2005-07-01T13:22:00" tags: ["Cool sites"] author: "Roy Osherove" description: "Here's a simple way to view the recorded sessions from TechEd US from your browser, even if you didn't attend TechEd. Let's say you browse the breakout session catalog and you see an interesting session like : \" ARC313…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to see the TechEd US sessions online By Roy Osherove July 1, 2005 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published July 1, 2005; technical details may be outdated. Here's a simple way to view the recorded sessions from TechEd US from your browser, even if you didn't attend TechEd. Let's say you browse [the breakout session catalog](http://www.msteched.com/content/sessions.aspx) and you see an interesting session like : "**ARC313**  Patterns for Service-Oriented Architecture Speaker(s): Ron Jacobs" Simply go to the URL: _[http://microsoft.sitestream.com/TechEd2005/**\[TrackName\]/\[TrackName\]\[SessionNumber\]**\_files/Default.htm](http://microsoft.sitestream.com/TechEd2005/[TrackName]/[TrackName][SessionNumber]_files/Default.htm)_ So the recorded session above would be: [http://microsoft.sitestream.com/TechEd2005/ARC/ARC313\_files/Default.htm](http://microsoft.sitestream.com/TechEd2005/ARC/ARC313_files/Default.htm) If the session is available, you should be OK. While you're at it - see [Scott Hanselman](http://www.hanselman.com/blog/TheRecordedVersionOfMyTechEd2005CodeGenerationTalkIsAvailable.aspx)'s [Code Generation Talk.](http://microsoft.sitestream.com/TechEd2005/ARC/ARC305.htm) It's very good. ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Dec 6, 2005 ### [Nice audio recordings about (Agile) management practices](https://osherove.com/blog/2005/12/6/nice-audio-recordings-about-agile-management-practices.html) - Nov 21, 2005 ### [Experiment: Free advertising on this blog](https://osherove.com/blog/2005/11/21/experiment-free-advertising-on-this-blog.html) - Jun 20, 2005 ### [Nice Free Stock Photos site](https://osherove.com/blog/2005/6/20/nice-free-stock-photos-site.html) - Jun 19, 2005 ### [New Advanced .NET Debugging Blog](https://osherove.com/blog/2005/6/19/new-advanced-net-debugging-blog.html) --- title: "Nice PDC Contest Entry from Steve Hebert" url: "https://osherove.com/blog/2005/7/1/nice-pdc-contest-entry-from-steve-hebert.md" canonical: "https://osherove.com/blog/2005/7/1/nice-pdc-contest-entry-from-steve-hebert.html" published: "2005-07-01T10:05:00" updated: "2005-07-01T10:05:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Steve Hebert has a very nice contest entry about why he should go to the PDC. Why didn't *I* think of a poem?? :) Update : OK, I just found out that Brenden has a pretty darn innovative PDC post as well. Guess I should…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice PDC Contest Entry from Steve Hebert By Roy Osherove July 1, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 1, 2005; technical details may be outdated. [Steve Hebert has a very nice contest entry](http://codebetter.com/blogs/steve.hebert/archive/2005/06/30/send_steve_hebert_to_pdc.aspx) about why he should go to the PDC. Why didn't \*I\* think of a poem?? :) **Update**: OK, I just found out that [Brenden has a pretty darn innovative PDC post](http://codebetter.com/blogs/brendan.tompkins/archive/2005/06/30/128695.aspx) as well. Guess I should have waited a bit! _"I wish I could just connect to a service, tell it a bit about me, and it would do all the work for me,”  I thought “but who would waste an entire evening writing such a service?”_   ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 1, 2005 ### [Dictionellisense](https://osherove.com/blog/2005/7/1/dictionellisense.html) - Jul 1, 2005 ### [William Safire's Rules for Writers](https://osherove.com/blog/2005/7/1/william-safires-rules-for-writers.html) - Jun 30, 2005 ### [Who's reading me?](https://osherove.com/blog/2005/6/30/whos-reading-me.html) - Jun 26, 2005 ### [The ultimate gamer keyboard?](https://osherove.com/blog/2005/6/26/the-ultimate-gamer-keyboard.html) --- title: "The Mock Objects elevator speech" url: "https://osherove.com/blog/2005/6/30/the-mock-objects-elevator-speech.md" canonical: "https://osherove.com/blog/2005/6/30/the-mock-objects-elevator-speech.html" published: "2005-06-30T18:33:00" updated: "2005-06-30T18:33:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "A friend asked me by email the other day :\"So why do I need mock objects?\" I came up with this in roughly 3 minutes so it's a bit rough, but it'll do to drive the point home, I hope. Note, that this does not really…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Mock Objects elevator speech By Roy Osherove June 30, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published June 30, 2005; technical details may be outdated. A friend asked me by email the other day :"So why do I need mock objects?" I came up with this in roughly 3 minutes so it's a bit rough, but it'll do to drive the point home, I hope. Note, that this does not really explain the \*technical\* side of it too much. Just the logic behind the concept. Mock objects are there for when you need to replace or remove dependencies from code under test. Let's say you have a class that manages user logins. Whenever a user login fails the class needs to report to a logger class, or maybe even an email class, or some remote web service to authenticate. If you want to write a test for the logic in the login class (an tests are just methods that call methods on the tested class, really) you want your test to run fast, and to run easily without too much fussing and configuration so that you can get fast feedback. Also - if you replace that emailer class or authentication service class with a "fake" one you can mimic various scenarios of failures which are hard to recreate in real life or would take LOT of code. An example would be "Authentication fails/succeeds for user name". Without faking it, you'd need a lot of configuration to test that you class indeed handless success of login failure correctly each time.  Mocks are **spies in disguise** for you tests - double agents. they let you do what you want without your real code knowing about it, and tell you everything that happened to them like _"your class \*should\* have called my 'authenticate' method with param x and Y but it actually called it with the wrong value.. Your test should \*fail\*". _ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 10, 2005 ### [Performance vs. Testability and semi-virtual method calls](https://osherove.com/blog/2005/7/10/performance-vs-testability-and-semi-virtual-method-calls.html) - Jul 1, 2005 ### [Rhino.Mocks v. 2.0 Announced. Yes, it's a Mock Object Framework.](https://osherove.com/blog/2005/7/1/rhinomocks-v-20-announced-yes-its-a-mock-object-framework.html) - Jun 29, 2005 ### [TDD workshop today - CANCELED](https://osherove.com/blog/2005/6/29/tdd-workshop-today-canceled.html) - Jun 26, 2005 ### [Tomorrow on Agile Israel - some very cool talks](https://osherove.com/blog/2005/6/26/tomorrow-on-agile-israel-some-very-cool-talks.html) --- title: "Who's reading me?" url: "https://osherove.com/blog/2005/6/30/whos-reading-me.md" canonical: "https://osherove.com/blog/2005/6/30/whos-reading-me.html" published: "2005-06-30T14:42:00" updated: "2005-06-30T14:42:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I've been getting some referees from this address: http://teams/information services/application support/default.aspx Is this a Microsoft internal address? Who's reading me in there?In fact - who's reading me at all?…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Who's reading me? By Roy Osherove June 30, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 30, 2005; technical details may be outdated. I've been getting some referees from this address: **http://teams/information services/application support/default.aspx** Is this a Microsoft internal address? Who's reading me in there?In fact - who's reading me at all? From what country? Care to identify yourselves so I know you people better? Why am I asking all these questions? Could I have my own little ego trip if I have more than 3 comments? Answers to all these and more... sometime when I feel less silly. Thing is - I'm really excited about TechEd, and working on the new Regulator, and doing unit testing talks - I can't wait! Feel free to hit me with a brick to stop my gushing. Or buy me a beer when you see me :) _(Yes, I know I'm setting myself up for a fall. I know!)_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 1, 2005 ### [William Safire's Rules for Writers](https://osherove.com/blog/2005/7/1/william-safires-rules-for-writers.html) - Jul 1, 2005 ### [Nice PDC Contest Entry from Steve Hebert](https://osherove.com/blog/2005/7/1/nice-pdc-contest-entry-from-steve-hebert.html) - Jun 26, 2005 ### [The ultimate gamer keyboard?](https://osherove.com/blog/2005/6/26/the-ultimate-gamer-keyboard.html) - Jun 26, 2005 ### [\[OT\] What are you afraid of?](https://osherove.com/blog/2005/6/26/ot-what-are-you-afraid-of.html) --- title: "A [Newer] new way to fight blog trackback spam" url: "https://osherove.com/blog/2005/6/30/a-newer-new-way-to-fight-blog-trackback-spam.md" canonical: "https://osherove.com/blog/2005/6/30/a-newer-new-way-to-fight-blog-trackback-spam.html" published: "2005-06-30T03:04:00" updated: "2005-06-30T03:04:00" tags: ["Blogging"] author: "Roy Osherove" description: "\" Hi Roy, Just thought that you might be interested to know that I’ve just posted a new trackback spam solution on my blog here: http://briandela.com/blog/archive/2005/06/29/652.aspx This solution will work for any…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A \[Newer\] new way to fight blog trackback spam By Roy Osherove June 30, 2005 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 30, 2005; technical details may be outdated. _"Hi Roy,_ _Just thought that you might be interested to know that I’ve just posted a new trackback spam solution on my blog here:_ [_http://briandela.com/blog/archive/2005/06/29/652.aspx_](http://briandela.com/blog/archive/2005/06/29/652.aspx "http") _This solution will work for any ASP.NET based blogging engine including dasBlog and .Text and doesn’t require any changes to the applications themselves._ _Brian"_ Coolness. This should be integrated into [SubText](http://haacked.com/archive/2005/05/04/2953.aspx), don't you think? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 12, 2005 ### [Bloggers call to action: Fight comment spammers by moderating comments easily with .TEXT](https://osherove.com/blog/2005/7/12/bloggers-call-to-action-fight-comment-spammers-by-moderating.html) - Jul 7, 2005 ### [Another Semi Israeli Blogger](https://osherove.com/blog/2005/7/7/another-semi-israeli-blogger.html) - Jun 20, 2005 ### [The Regex Challenge: Blogn' my way to the PDC](https://osherove.com/blog/2005/6/20/the-regex-challenge-blogn-my-way-to-the-pdc.html) - Jun 20, 2005 ### [Blog'n your way to the PDC - A reality in the works](https://osherove.com/blog/2005/6/20/blogn-your-way-to-the-pdc-a-reality-in-the-works.html) --- title: "TDD workshop today - CANCELED" url: "https://osherove.com/blog/2005/6/29/tdd-workshop-today-canceled.md" canonical: "https://osherove.com/blog/2005/6/29/tdd-workshop-today-canceled.html" published: "2005-06-29T10:45:00" updated: "2005-06-29T10:45:00" tags: ["Agile Related", "Community"] author: "Roy Osherove" description: "I'm sorry to say that the TDD workshop today will be cancelled due to low participation rate – primarily due to the expected traffic gams today . The next one is expected to be at July 18 th . If you'd like to attend…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD workshop today - CANCELED By Roy Osherove June 29, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published June 29, 2005; technical details may be outdated. I'm sorry to say that the TDD workshop today will be cancelled due to low participation rate – primarily due to the [expected traffic gams today](http://www.ynet.co.il/articles/0,7340,L-3105606,00.html). The next one is expected to be at July 18th. If you'd like to attend that one: - send email with a "Yes, I'd like to attend the next Nunit basics workshop on July 18th " to **Roy at AgileIsrael.com** - Be sure you are registered remembers on the Agile Israel site : [www.agileisrael.com](http://www.agileisrael.com/ "http") in order to attend and receive notifications of future meetings. (it's free!) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 1, 2005 ### [Rhino.Mocks v. 2.0 Announced. Yes, it's a Mock Object Framework.](https://osherove.com/blog/2005/7/1/rhinomocks-v-20-announced-yes-its-a-mock-object-framework.html) - Jun 30, 2005 ### [The Mock Objects elevator speech](https://osherove.com/blog/2005/6/30/the-mock-objects-elevator-speech.html) - Jun 26, 2005 ### [Tomorrow on Agile Israel - some very cool talks](https://osherove.com/blog/2005/6/26/tomorrow-on-agile-israel-some-very-cool-talks.html) - Jun 26, 2005 ### [TDD Workshop - JUnit basics, open for registration](https://osherove.com/blog/2005/6/26/tdd-workshop-junit-basics-open-for-registration.html) --- title: "The ultimate gamer keyboard?" url: "https://osherove.com/blog/2005/6/26/the-ultimate-gamer-keyboard.md" canonical: "https://osherove.com/blog/2005/6/26/the-ultimate-gamer-keyboard.html" published: "2005-06-26T21:43:00" updated: "2005-06-26T21:43:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I don't play much games anymore, but if I did, oh boy. I'd buy this sucker immediately for my upcoming birthday." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The ultimate gamer keyboard? By Roy Osherove June 26, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 26, 2005; technical details may be outdated. I don't play much games anymore, but if I did, oh boy. I'd buy [this sucker](http://www.tomshardware.com/game/20050308/index.html) immediately for my upcoming birthday. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 1, 2005 ### [Nice PDC Contest Entry from Steve Hebert](https://osherove.com/blog/2005/7/1/nice-pdc-contest-entry-from-steve-hebert.html) - Jun 30, 2005 ### [Who's reading me?](https://osherove.com/blog/2005/6/30/whos-reading-me.html) - Jun 26, 2005 ### [\[OT\] What are you afraid of?](https://osherove.com/blog/2005/6/26/ot-what-are-you-afraid-of.html) - Jun 22, 2005 ### [Evil code in disguise](https://osherove.com/blog/2005/6/22/evil-code-in-disguise.html) --- title: ".NET CLR Data counters are wrong - Official" url: "https://osherove.com/blog/2005/6/26/net-clr-data-counters-are-wrong-official.md" canonical: "https://osherove.com/blog/2005/6/26/net-clr-data-counters-are-wrong-official.html" published: "2005-06-26T09:50:00" updated: "2005-06-26T09:50:00" tags: [".Net 2.0", ".Net Quotations"] author: "Roy Osherove" description: "\"Original counters (in V1.0 and V1.1) reported wrong numbers in almost all scenarios.\" http://www.gotdotnet.com/team/changeinfo/Backwards1.1to2.0/default.aspx#00000123 \"We’ve created a new set of Performance Counters in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .NET CLR Data counters are wrong - Official By Roy Osherove June 26, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published June 26, 2005; technical details may be outdated. "Original counters (in V1.0 and V1.1) reported wrong numbers in almost all scenarios." [http://www.gotdotnet.com/team/changeinfo/Backwards1.1to2.0/default.aspx#00000123](http://www.gotdotnet.com/team/changeinfo/Backwards1.1to2.0/default.aspx#00000123) "We’ve created a new set of Performance Counters in V2.0 that are specific to each provider. We're obsoleting all the counters under the .NET CLR Data category..." _\[via_ [_Phil_](http://weblogs.asp.net/plip/archive/2005/03/21/395410.aspx)_\]_ How **on earth** did this go unnoticed past the testers? ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Oct 19, 2005 ### [Early experiences from .NET 2.0 Winforms](https://osherove.com/blog/2005/10/19/early-experiences-from-net-20-winforms.html) - Oct 19, 2005 ### [Introducing Amazoner: Create Amazon Associate Links with ease](https://osherove.com/blog/2005/10/19/introducing-amazoner-create-amazon-associate-links-with-ease.html) - Jun 19, 2005 ### [\[Audio Interview\] Brian Noyes: Deep .NET Q&A](https://osherove.com/blog/2005/6/19/audio-interview-brian-noyes-deep-net-qampa.html) - Apr 14, 2005 ### [Debug Visualizers in VS 2005: Almost there, one big feature missing](https://osherove.com/blog/2005/4/14/debug-visualizers-in-vs-2005-almost-there-one-big-feature-mi.html) --- title: "Tomorrow on Agile Israel - some very cool talks" url: "https://osherove.com/blog/2005/6/26/tomorrow-on-agile-israel-some-very-cool-talks.md" canonical: "https://osherove.com/blog/2005/6/26/tomorrow-on-agile-israel-some-very-cool-talks.html" published: "2005-06-26T08:03:00" updated: "2005-06-26T08:03:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Reminder about tomorrow's presentation on Agile Israel: http://www.agileisrael.com/Default.aspx?tabid=60 Please notify us of arrival to [email removed] 18:00-19:15 - Eli Lopian, Amdocs: Helping cause change in a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tomorrow on Agile Israel - some very cool talks By Roy Osherove June 26, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 26, 2005; technical details may be outdated. Reminder about tomorrow's presentation on Agile Israel: [http://www.agileisrael.com/Default.aspx?tabid=60](http://www.agileisrael.com/Default.aspx?tabid=60) Please **notify us of arrival** to \[email removed\] **18:00-19:15** \- Eli Lopian, Amdocs:  **Helping cause change in a large organization** Eli Lopian, Group Co-Manager, Will discuss the problems and strategies in implementation change in you workspace, this will help in performing the cultural change needed to move to a more agile development process. Eli will discuss the motivation to change, resistance and how to overcome the resistance, the 4P's strategy and other tactics that can help. He will also give his personal experience from implementing TDD in amdocs. **Part II** **19:30 - 20:45** \- Roy Sharon, K2K software: **A Bug's Life** [K2K](http://www.k2k.com/) is among the only software companies in Israel that had successfully undergone ISO9000 certification on its use of Extreme Programming and Test Driven Development. Roy Sharon will present insights from this process, with a focus on one specific aspect of Test Driven Development: preventing Bugs that Fight Back. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 30, 2005 ### [The Mock Objects elevator speech](https://osherove.com/blog/2005/6/30/the-mock-objects-elevator-speech.html) - Jun 29, 2005 ### [TDD workshop today - CANCELED](https://osherove.com/blog/2005/6/29/tdd-workshop-today-canceled.html) - Jun 26, 2005 ### [TDD Workshop - JUnit basics, open for registration](https://osherove.com/blog/2005/6/26/tdd-workshop-junit-basics-open-for-registration.html) - Jun 26, 2005 ### [TDD Workshop - NUnit Basics, 5 places left](https://osherove.com/blog/2005/6/26/tdd-workshop-nunit-basics-5-places-left.html) --- title: "Wanna record a geeky interview at Tech-Ed Europe?" url: "https://osherove.com/blog/2005/6/26/wanna-record-a-geeky-interview-at-tech-ed-europe.md" canonical: "https://osherove.com/blog/2005/6/26/wanna-record-a-geeky-interview-at-tech-ed-europe.html" published: "2005-06-26T07:51:00" updated: "2005-06-26T07:51:00" tags: ["Community"] author: "Roy Osherove" description: "If you're attending Tech-Ed Europe and would be interested in doing anything between a 10-60 minute recorded interview about some interesting facet of technology, or just geeking out in the community lounge with me,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Wanna record a geeky interview at Tech-Ed Europe? By Roy Osherove June 26, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published June 26, 2005; technical details may be outdated. If you're attending Tech-Ed Europe and would be interested in doing anything between a 10-60 minute recorded interview about some interesting facet of technology, or just geeking out in the community lounge with me, ping me by email to **\[email removed\]**. All recorded interviews will end up on [Team Agile's interview list](http://www.teamagile.com/mainpages/Interviews.html). Hope we can get some good ones! You don't have to be a big celebrity speaker to interview. You just have to be an interested geek which, hopefully, specializes in something deeply. SO, if you're a reflection king, we might talk about Reflection, what's new in 2.0, and other geeky stuff. If you're into SOA, we could talk architecture. If you're just a happy camper at TechEd with nothing in particular to say, well, there's nothing to interview you on, is there? :) ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Jul 1, 2005 ### [Agile Israel News & Updates](https://osherove.com/blog/2005/7/1/agile-israel-news-amp-updates.html) - Jun 29, 2005 ### [TDD workshop today - CANCELED](https://osherove.com/blog/2005/6/29/tdd-workshop-today-canceled.html) - Jun 20, 2005 ### [Blog'n your way to the PDC - A reality in the works](https://osherove.com/blog/2005/6/20/blogn-your-way-to-the-pdc-a-reality-in-the-works.html) - Jun 20, 2005 ### [Impressions from the "Get ready for VS 2005" conference in Israel](https://osherove.com/blog/2005/6/20/impressions-from-the-quotget-ready-for-vs-2005quot-conferenc.html) --- title: "TDD Workshop - JUnit basics, open for registration" url: "https://osherove.com/blog/2005/6/26/tdd-workshop-junit-basics-open-for-registration.md" canonical: "https://osherove.com/blog/2005/6/26/tdd-workshop-junit-basics-open-for-registration.html" published: "2005-06-26T07:26:00" updated: "2005-06-26T07:26:00" tags: ["Agile Related"] author: "Roy Osherove" description: "If you'd like to participate in this you must send an email to [email removed] with your name and contact details. Since we have a limit on the number of people, this is a must to be able to attend. Your name…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Workshop - JUnit basics, open for registration By Roy Osherove June 26, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 26, 2005; technical details may be outdated. **If you'd like to participate** in this **you must** send an email to \[email removed\] with your name and contact details. Since we have a limit on the number of people, this is a must to be able to attend. Your name will also be used to add as a security pass to enter Amdocs, so it won't be possible to simply show up up at the door on that day without pre-arranging it, sorry. [more info](http://www.agileisrael.com/Default.aspx?tabid=95) The meeting will be held at: **Wednesday, 18/7/2005** **18:00** At Amdocs Hod Hasharon (See arrival instructions [here](http://www.agileisrael.com/Default.aspx?tabid=95)). The meeting will be a total of 3 hours with the following **agenda**: **18:00 - 19:00** Test Driven Development basics with JUnit (on Eclipse) **19:00-21:00**   Hands on lab - test driven development with JUnit. **Material covered:** - Writing unit tests, naming standards - What's TDD? (+ demo) and what's TestDriven.NET? - Hands on exercises with everything you've seen. We'll also have some food during the lab, courtesy of Amdocs. **More info:** This TDD workshop is the perfect place if you'd like to get a taste of what Test Driven Development is all about, but never really got the chance to find out on your own. The only thing required as a participant is working knowledge of basic Java (1 year experience) and basic use of Eclipse IDE. The rest is on us. Don't expect to leave the workshop as an expert. [A standard course on this](http://www.teamagile.com/) can take up to 5 days, so 3 hours is just a glimpse. But, expect to leave with better knowledge and many more questions in your head! :) Once you've finished this workshop, we are planning advanced workshops as well for people who've already done the basics, so consider this just the beginning! The first hour is a lecture by [Roy Osherove](http://www.iserializable.com/), one of the leading voices in Israel in the topic of Agile Development. The rest is a pure coding exercise where you are required to perform some simple coding tasks in a test driven manner. The exerices are escorted by Roy, making sure you do the right moves and not the wrong moves every step of the way. **Up to 12 people:** the last sentence should explain to you why only up to 12 people per workshop: so that each one gets a good share of the instructor's time to learn things. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 29, 2005 ### [TDD workshop today - CANCELED](https://osherove.com/blog/2005/6/29/tdd-workshop-today-canceled.html) - Jun 26, 2005 ### [Tomorrow on Agile Israel - some very cool talks](https://osherove.com/blog/2005/6/26/tomorrow-on-agile-israel-some-very-cool-talks.html) - Jun 26, 2005 ### [TDD Workshop - NUnit Basics, 5 places left](https://osherove.com/blog/2005/6/26/tdd-workshop-nunit-basics-5-places-left.html) - Jun 26, 2005 ### [\[Tool\] Convert NUnit tests to Team System Tests](https://osherove.com/blog/2005/6/26/tool-convert-nunit-tests-to-team-system-tests.html) --- title: "TDD Workshop - NUnit Basics, 5 places left" url: "https://osherove.com/blog/2005/6/26/tdd-workshop-nunit-basics-5-places-left.md" canonical: "https://osherove.com/blog/2005/6/26/tdd-workshop-nunit-basics-5-places-left.html" published: "2005-06-26T07:21:00" updated: "2005-06-26T07:21:00" tags: ["Agile Related"] author: "Roy Osherove" description: "If you'd like to participate in this you must send an email to [email removed] with your name and contact details. Since we have a limit on the number of people, this is a must to be able to attend. Your name…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Workshop - NUnit Basics, 5 places left By Roy Osherove June 26, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 26, 2005; technical details may be outdated.
If you'd like to participate in this you must send an email to [email removed] with your name and contact details. Since we have a limit on the number of people, this is a must to be able to attend. Your name will also be used to add as a security pass to enter Amdocs, so it won't be possible to simply show up up at the door on that day without pre-arranging it, sorry.
 
The meeting will be held at:
Wednesday, 29/6/2005
18:00
At Amdocs Hod Hasharon (See arrival instructions here).
 
The meeting will be a total of 3 hours with the following agenda:
 
18:00 - 19:00 Test Driven Development basics with NUnit and .NET
19:00-21:00   Hands on lab - test driven development with NUnit.
 
Material covered:
  • NUnit attributes
  • Writing unit tests, naming standards
  • What's TDD? (+ demo) and what's TestDriven.NET?
  • Hands on exercises with everything you've seen.
 
We'll also have some food during the lab, courtesy of Amdocs.
 
More info:
This TDD workshop is the perfect place if you'd like to get a taste of what Test Driven Development is all about, but never really got the chance to find out on your own. The only thing required as a participant is working knowledge of .NET (1 year experience) either with C# or VB.NET. The rest is on us.
 
Don't expect to leave the workshop as an expert. A standard course on this can take up to 5 days, so 3 hours is just a glimpse. But, expect to leave with better knowledge and many more questions in your head! :)
 
Once you've finished this workshop, we are planning advanced workshops as well for people who've already done the basics, so consider this just the beginning!
 
The first hour is a lecture by Roy Osherove, one of the leading voices in Israel in the topic of Agile Development. The rest is a pure coding exercise where you are required to perform some simple coding tasks in a test driven manner.
The exe rices are escorted by Roy, making sure you do the right moves and not the wrong moves every step of the way.
[More information here.](http://www.agileisrael.com/Default.aspx?tabid=93) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 26, 2005 ### [Tomorrow on Agile Israel - some very cool talks](https://osherove.com/blog/2005/6/26/tomorrow-on-agile-israel-some-very-cool-talks.html) - Jun 26, 2005 ### [TDD Workshop - JUnit basics, open for registration](https://osherove.com/blog/2005/6/26/tdd-workshop-junit-basics-open-for-registration.html) - Jun 26, 2005 ### [\[Tool\] Convert NUnit tests to Team System Tests](https://osherove.com/blog/2005/6/26/tool-convert-nunit-tests-to-team-system-tests.html) - Jun 20, 2005 ### [June at Agile Israel: Implementing change in an organization + A Bug's Life](https://osherove.com/blog/2005/6/20/june-at-agile-israel-implementing-change-in-an-organization.html) --- title: "[OT] What are you afraid of?" url: "https://osherove.com/blog/2005/6/26/ot-what-are-you-afraid-of.md" canonical: "https://osherove.com/blog/2005/6/26/ot-what-are-you-afraid-of.html" published: "2005-06-26T07:14:00" updated: "2005-06-26T07:14:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is scary. How many phobias(chronic fears) do you think there are? Take a look at the ultimate phobia list and count them. I didn't see a fear of large lists of fears though. Some may sound eerily familiar from work…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] What are you afraid of? By Roy Osherove June 26, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 26, 2005; technical details may be outdated. [This is scary.](http://www.phobialist.com/) How many phobias(chronic fears) do you think there are? Take a look at [the ultimate phobia list](http://www.phobialist.com/) and count them. I didn't see a fear of large lists of fears though. **Some may sound eerily familiar from work**: Allodoxaphobia- Fear of opinions. Atychiphobia- Fear of failure. Autodysomophobia- Fear of one that has a vile odor. Allodoxaphobia- Fear of opinions. Caligynephobia- Fear of beautiful women. Bibliophobia- Fear of books Cenophobia or Centophobia- Fear of new things or ideas. Coitophobia- Fear of coitus. Decidophobia- Fear of making decisions. Doxophobia- Fear of expressing opinions or of receiving praise. Enosiophobia or Enissophobia- Fear of having committed an unpardonable sin or of criticism. Ergophobia- Fear of work. Geliophobia- Fear of laughter. Glossophobia- Fear of speaking in public or of trying to speak. Gnosiophobia- Fear of knowledge. Heresyphobia or Hereiophobia- Fear of challenges to official doctrine or of radical deviation. Hypengyophobia or Hypegiaphobia- Fear of responsibility. Ideophobia- Fear of ideas. Linonophobia- Fear of string. (_pun intended :-)_ ) Kakorrhaphiophobia- Fear of failure or defeat. Logizomechanophobia- Fear of computers. Mechanophobia- Fear of machines. Metathesiophobia- Fear of changes. Phronemophobia- Fear of thinking. Ponophobia- Fear of overworking or of pain. Prosophobia- Fear of progress. **And some are utterly weird:** Ambulophobia- Fear of walking. Anglophobia- Fear of England or English culture, etc. Atomosophobia- Fear of atomic explosions. Ballistophobia- Fear of missiles or bullets. Bolshephobia- Fear of Bolsheviks. Barophobia- Fear of gravity. Dextrophobia- Fear of objects at the right side of the body. Ephebiphobia- Fear of teenagers. Francophobia- Fear of France or French culture. (Gallophobia, Galiophobia) Geniophobia- Fear of chins. Helminthophobia- Fear of being infested with worms. Nomatophobia- Fear of names. Ouranophobia or Uranophobia- Fear of heaven. Paraskavedekatriaphobia- Fear of Friday the 13th. (??!!) _Phobophobia- Fear of phobias.(aha!)_ Pteronophobia- Fear of being tickled by feathers. Sophophobia- Fear of learning. Zemmiphobia- Fear of the great mole rat. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 30, 2005 ### [Who's reading me?](https://osherove.com/blog/2005/6/30/whos-reading-me.html) - Jun 26, 2005 ### [The ultimate gamer keyboard?](https://osherove.com/blog/2005/6/26/the-ultimate-gamer-keyboard.html) - Jun 22, 2005 ### [Evil code in disguise](https://osherove.com/blog/2005/6/22/evil-code-in-disguise.html) - Jun 22, 2005 ### [My Session schedule at Tech-Ed Europe](https://osherove.com/blog/2005/6/22/my-session-schedule-at-tech-ed-europe.html) --- title: "Great article on Reflection and Performance on MSDN Mag" url: "https://osherove.com/blog/2005/6/26/great-article-on-reflection-and-performance-on-msdn-mag.md" canonical: "https://osherove.com/blog/2005/6/26/great-article-on-reflection-and-performance-on-msdn-mag.html" published: "2005-06-26T00:17:00" updated: "2005-06-26T00:17:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Joel Pobar (master of all things dynamic) wrote a great piece on reflection in this month’s MSDN Mag.. Reflection: Dodge Common Performance Pitfalls to Craft Speedy Applications [via Brad Abrams ] Just skimming this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Great article on Reflection and Performance on MSDN Mag By Roy Osherove June 26, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published June 26, 2005; technical details may be outdated. [Joel Pobar](http://blogs.msdn.com/joelpob/) (master of all things dynamic) wrote a great piece on reflection in this month’s MSDN Mag..  [Reflection: Dodge Common Performance Pitfalls to Craft Speedy Applications](http://msdn.microsoft.com/msdnmag/issues/05/07/Reflection/default.aspx) _\[via_ [_Brad Abrams_](http://blogs.msdn.com/brada/archive/2005/06/15/429206.aspx)_\]_ Just skimming this article I can tell you that it is enlightening. I've been doing a lot of work with reflection and there are certainly some great tips in this article, but also on the "WHY"s behind the tips. Also you'll find a discussion of some of what's new in Reflection in .NET 2.0 and how it helps us to achieve our goal of better performance with Reflection (sometimes out-of-the-box!) Very nice. Very Technical. You'll find this hard to grok without a good understanding of Reflection already, methinks. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 30, 2005 ### [.Math - Open Source math expression compiler in C#](https://osherove.com/blog/2005/7/30/math-open-source-math-expression-compiler-in-c.html) - Jun 26, 2005 ### [.NET CLR Data counters are wrong - Official](https://osherove.com/blog/2005/6/26/net-clr-data-counters-are-wrong-official.html) - Jun 19, 2005 ### [New Advanced .NET Debugging Blog](https://osherove.com/blog/2005/6/19/new-advanced-net-debugging-blog.html) - Jun 19, 2005 ### [LibCheck: List breaking changes between assembly versions](https://osherove.com/blog/2005/6/19/libcheck-list-breaking-changes-between-assembly-versions.html) --- title: "[Tool] Convert NUnit tests to Team System Tests" url: "https://osherove.com/blog/2005/6/26/tool-convert-nunit-tests-to-team-system-tests.md" canonical: "https://osherove.com/blog/2005/6/26/tool-convert-nunit-tests-to-team-system-tests.html" published: "2005-06-26T00:05:00" updated: "2005-06-26T00:05:00" tags: ["Agile Related", "Cool Tools"] author: "Roy Osherove" description: "\" Jim Newkirk has released an alpha version of a utility to convert NUnit tests to VSTS tests . What he doesn't mention in the post is that he's using GAT to integrate this conversion functionality into VS05.\" [via…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Tool\] Convert NUnit tests to Team System Tests By Roy Osherove June 26, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published June 26, 2005; technical details may be outdated. "[Jim Newkirk](http://blogs.msdn.com/jamesnewkirk) has [released](http://blogs.msdn.com/jamesnewkirk/archive/2005/06/24/432485.aspx) an alpha version of a utility to convert [NUnit](http://nunit.org/) tests to [VSTS tests](http://msdn.com/library/en-us/dnvs05/html/vstsunittesting.asp). What he doesn't mention in the post is that he's using [GAT](http://lab.msdn.microsoft.com/teamsystem/workshop/gat/) to integrate this conversion functionality into VS05." _\[via_ [_DevHawk_](http://devhawk.net/Real+World+GAT++NUnit+Converter.aspx)_\]_ I don't think a lot of us will have lots of use for this just yet, but it's good to know it's there. Alternatively, you can simply do some [Quick & Dirty Compatibility](http://blogs.msdn.com/jamesnewkirk/archive/2004/06/16/157703.aspx): Add some namespace aliases and "Find and Replace" to make things work on VSTS.  I bet that's what the tool does too, but I haven't checked it out yet. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 26, 2005 ### [TDD Workshop - JUnit basics, open for registration](https://osherove.com/blog/2005/6/26/tdd-workshop-junit-basics-open-for-registration.html) - Jun 26, 2005 ### [TDD Workshop - NUnit Basics, 5 places left](https://osherove.com/blog/2005/6/26/tdd-workshop-nunit-basics-5-places-left.html) - Jun 20, 2005 ### [June at Agile Israel: Implementing change in an organization + A Bug's Life](https://osherove.com/blog/2005/6/20/june-at-agile-israel-implementing-change-in-an-organization.html) - Jun 18, 2005 ### [Use Mock Logs instead of expectations when it makes sense](https://osherove.com/blog/2005/6/18/use-mock-logs-instead-of-expectations-when-it-makes-sense.html) --- title: "Evil code in disguise" url: "https://osherove.com/blog/2005/6/22/evil-code-in-disguise.md" canonical: "https://osherove.com/blog/2005/6/22/evil-code-in-disguise.html" published: "2005-06-22T22:48:00" updated: "2005-06-22T22:48:00" tags: ["Off Topic"] author: "Roy Osherove" description: "The Underhanded C Contest \"..we hereby announce an annual contest to write innocent-looking C code implementing malicious behavior. In many ways this is the exact opposite of the Obfuscated C Code Contest: in this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Evil code in disguise By Roy Osherove June 22, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 22, 2005; technical details may be outdated. [The Underhanded C Contest](http://www.brainhz.com/underhanded/) _"..we hereby announce an annual contest to write innocent-looking C code implementing malicious behavior. In many ways this is the exact opposite of the Obfuscated C Code Contest: in this contest you must write code that is as readable, clear, innocent and straightforward as possible, and yet it must fail to perform at its apparent function._ _To be more specific, it should do something subtly evil. "_ (via [James Robertson](http://www.brainhz.com/underhanded/) ) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 26, 2005 ### [The ultimate gamer keyboard?](https://osherove.com/blog/2005/6/26/the-ultimate-gamer-keyboard.html) - Jun 26, 2005 ### [\[OT\] What are you afraid of?](https://osherove.com/blog/2005/6/26/ot-what-are-you-afraid-of.html) - Jun 22, 2005 ### [My Session schedule at Tech-Ed Europe](https://osherove.com/blog/2005/6/22/my-session-schedule-at-tech-ed-europe.html) - Jun 22, 2005 ### [$50,000 to build a Cool Tool?](https://osherove.com/blog/2005/6/22/50000-to-build-a-cool-tool.html) --- title: "My Session schedule at Tech-Ed Europe" url: "https://osherove.com/blog/2005/6/22/my-session-schedule-at-tech-ed-europe.md" canonical: "https://osherove.com/blog/2005/6/22/my-session-schedule-at-tech-ed-europe.html" published: "2005-06-22T22:25:00" updated: "2005-06-22T22:25:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Here's the list of my upcoming sessions at Tech-Ed Europe. Hope to see as many people from the blogsphere there! Testing, Testing... (CHT019) Date: 7 July 2005 12:00 -13:15 (My Chalk & Talk about Unit Testing at TechEd…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My Session schedule at Tech-Ed Europe By Roy Osherove June 22, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 22, 2005; technical details may be outdated. Here's the list of my upcoming sessions at Tech-Ed Europe.  Hope to see as many people from the blogsphere there! **Testing, Testing... (CHT019) **Date: 7 July 2005 12:00  -13:15 (My Chalk & Talk about Unit Testing at TechEd Europe seems to be popular and we're going to schedule a Repeat session so that it won't be too crowded. Here's the current date and abstract:) _In this Chalk-&-Talk we'll try to talk a little bit about some of the real problems developers face when trying to implement unit testing and test driven development in the real world, with real applications, perhaps even with legacy code as part of development. We'll explore some techniques for making legacy code a little more testable (refactoring it, for example) and try to have an open discussion about when and where we might want and might not want to implement unit tests in real world applications. Questions are welcome and we'll try and make the topics go along with what really interests you - the attendees, as we move along._ Look for the repeat session on July 6th (the day before, so it's sort of a "prequel"!) at the same time. **Maximizing your Abilities with Regular Expressions in .NET (DEV390)** Date: 8 July 2005 08:30  -09:45  _(early, but worth it! I promise)_ _In this session you'll learn how Regular Expressions can help you with difficult tasks such as parsing and searching complex texts or even transforming them into various other formats. Regular expressions (Regex) can be used almost anywhere and once you get to know them you can save many coding hours and lines of code to developer applications that deal with text is a robust and scalable manner. I will also show "The Regulator" a tool to help you debug regex which is free, plus you'll see how a cool "Regex Visualizer" for vs 2005 to be used in future development which is also free._ **Agile Development Panel(PNL006) **Date: 7 July 2005 13:45 - 14:30 Speakers: Mr James World, Mr Randy Miller, Mr Andrew Cheeseman, Mr Roy Osherove _This panel discussion will focus on development techniques and technologies. What is Agile Development? What are the problems associated with getting your organization to become more agile?_   ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 26, 2005 ### [\[OT\] What are you afraid of?](https://osherove.com/blog/2005/6/26/ot-what-are-you-afraid-of.html) - Jun 22, 2005 ### [Evil code in disguise](https://osherove.com/blog/2005/6/22/evil-code-in-disguise.html) - Jun 22, 2005 ### [$50,000 to build a Cool Tool?](https://osherove.com/blog/2005/6/22/50000-to-build-a-cool-tool.html) - Jun 22, 2005 ### [Annoying problem (+Solution) of the week: "One or more projects in Solution X needs to be updated to use Crystal Reports 10."](https://osherove.com/blog/2005/6/22/annoying-problem-solution-of-the-week-quotone-or-more-projec.html) --- title: "$50,000 to build a Cool Tool?" url: "https://osherove.com/blog/2005/6/22/50000-to-build-a-cool-tool.md" canonical: "https://osherove.com/blog/2005/6/22/50000-to-build-a-cool-tool.html" published: "2005-06-22T21:49:00" updated: "2005-06-22T21:49:00" tags: ["Off Topic"] author: "Roy Osherove" description: "hmmm... $50,000. Sounds like fun. Let the thinking game begin. (via Rocky )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # $50,000 to build a Cool Tool? By Roy Osherove June 22, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 22, 2005; technical details may be outdated. hmmm... $50,000. Sounds like fun. [Let the thinking game begin.](http://www.csdevcompetition.com/) (via [Rocky](http://www.lhotka.net/WeBlog/PermaLink.aspx?guid=f18d4ee3-aa01-4b03-bca7-481d144a6c18)) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 22, 2005 ### [Evil code in disguise](https://osherove.com/blog/2005/6/22/evil-code-in-disguise.html) - Jun 22, 2005 ### [My Session schedule at Tech-Ed Europe](https://osherove.com/blog/2005/6/22/my-session-schedule-at-tech-ed-europe.html) - Jun 22, 2005 ### [Annoying problem (+Solution) of the week: "One or more projects in Solution X needs to be updated to use Crystal Reports 10."](https://osherove.com/blog/2005/6/22/annoying-problem-solution-of-the-week-quotone-or-more-projec.html) - Jun 18, 2005 ### [Nice Handwriting fonts in Hebrew](https://osherove.com/blog/2005/6/18/nice-handwriting-fonts-in-hebrew.html) --- title: "\"Visual C# .NET compiler could not be created\" - Possible solution?" url: "https://osherove.com/blog/2005/6/22/quotvisual-c-net-compiler-could-not-be-createdquot-possible.md" canonical: "https://osherove.com/blog/2005/6/22/quotvisual-c-net-compiler-could-not-be-createdquot-possible.html" published: "2005-06-22T08:37:00" updated: "2005-06-22T08:37:00" tags: [".Net Original"] author: "Roy Osherove" description: "We started getting this weird exception when trying to build some solution manually: \"Project could not be opened because the Microsoft Visual C# .NET compiler could not be created\" It might be one of these…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # "Visual C\# .NET compiler could not be created" - Possible solution? By Roy Osherove June 22, 2005 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 22, 2005; technical details may be outdated. We started getting this weird exception when trying to build some solution manually: _"Project could not be opened because the Microsoft Visual C# .NET compiler could not be created"_ It might be one of [these things here](http://www.google.com/search?hl=en&lr=lang_en&biw=1004&q=%22could+not+be+opened+because+the+Microsoft+Visual+C%23+.NET+compiler+could+not+be+created.%22), but for me it was something different. **The path of  one of the project files inside the solution was just too long**. How long? With **System.IO** it seems impossible to access any files or directories if the total name (.FullName) is longer than 260 characters or else you get a "PathTooLongException". Of course - VS.NET 2003 was not polite enough to reveal that information to me. No. I had to find out through a mistress - [Resharper](http://www.jetbrains.com/resharper). This wonderful add in popped up with a dialog box explaining there was an error in loading the project data: _JetBrains.ReSharper.Util.InternalErrorException: An exception has occurred during initialization of a solution component ---> System.IO.PathTooLongException: The path is too long after being fully qualified.  Make sure path is less than 260 characters._ Thanks, JetBrains. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 17, 2005 ### [Sherpa: Another Code/Layer/Application Generator](https://osherove.com/blog/2005/8/17/sherpa-another-codelayerapplication-generator.html) - Jul 14, 2005 ### [\[Audio Interview\] Steve Cook -Software Factories and Domain Specific Languages](https://osherove.com/blog/2005/7/14/audio-interview-steve-cook-software-factories-and-domain-spe.html) - Jun 8, 2005 ### [Popping up custom forms in the .NET PropertyGrid control](https://osherove.com/blog/2005/6/8/popping-up-custom-forms-in-the-net-propertygrid-control.html) - May 23, 2005 ### [UISafeInvoker: Making UI Thread safe methods - a little more easily](https://osherove.com/blog/2005/5/23/uisafeinvoker-making-ui-thread-safe-methods-a-little-more-ea.html) --- title: "Annoying problem (+Solution) of the week: \"One or more projects in Solution X needs to be updated to use Crystal Reports 10.\"" url: "https://osherove.com/blog/2005/6/22/annoying-problem-solution-of-the-week-quotone-or-more-projec.md" canonical: "https://osherove.com/blog/2005/6/22/annoying-problem-solution-of-the-week-quotone-or-more-projec.html" published: "2005-06-22T07:54:00" updated: "2005-06-22T07:54:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is weird and annoying: Upon the daily build we started getting this dialog box: \"--------------------------- Crystal Reports 10 --------------------------- One or more projects in Solution…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Annoying problem (+Solution) of the week: "One or more projects in Solution X needs to be updated to use Crystal Reports 10." By Roy Osherove June 22, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 22, 2005; technical details may be outdated. This is weird and annoying: Upon the daily build we started getting this dialog box: _"--------------------------- Crystal Reports 10 \--------------------------- One or more projects in Solution "C:\\Build\\CurrentBuild\\DailyBuild.sln" needs to be updated to use Crystal Reports 10._ _If you choose "Yes", the update will be applied permanently.  If you choose "No", some design-time features may not work properly._ _Would you like to upgrade your solution? \--------------------------- Yes   No   \---------------------------"_ First, this just happens on one of our machines. Second - saying yes does not apply this permanently. Third - This happens both in command line mode and in VS.NET mode. If anyone has any clue - now would be a great time to share. **Update:** This problem was resolved by following steps:   1\. Remove all references of Crystal from projects. 2\. Remove projects that used Crystal from the Solution. 3\. Adding of removed projects to the Solution again. 4\. Remove all references of Crystal from added projects again (The references of some of Crystal dlls were added automatically again :( ) 5\. Add required Crystal references to relevant projects.   Finally, the popup of Crystal has disappeared!:) Isn't technology grand?  Thanks for the help in the comments!   ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 22, 2005 ### [My Session schedule at Tech-Ed Europe](https://osherove.com/blog/2005/6/22/my-session-schedule-at-tech-ed-europe.html) - Jun 22, 2005 ### [$50,000 to build a Cool Tool?](https://osherove.com/blog/2005/6/22/50000-to-build-a-cool-tool.html) - Jun 18, 2005 ### [Nice Handwriting fonts in Hebrew](https://osherove.com/blog/2005/6/18/nice-handwriting-fonts-in-hebrew.html) - Jun 17, 2005 ### [\[OT \]It's Yamaka pattern time!](https://osherove.com/blog/2005/6/17/ot-its-yamaka-pattern-time.html) --- title: "The Regex Challenge: Blogn' my way to the PDC" url: "https://osherove.com/blog/2005/6/20/the-regex-challenge-blogn-my-way-to-the-pdc.md" canonical: "https://osherove.com/blog/2005/6/20/the-regex-challenge-blogn-my-way-to-the-pdc.html" published: "2005-06-20T23:24:00" updated: "2005-06-20T23:24:00" tags: ["Blogging"] author: "Roy Osherove" description: "Here's my official Blogn' for the PDC entry. I've tried to make it...different. http://weblogs.asp.net/rosherove/articles/pdc.aspx \"I tried to come up with something innovative and fun to deliver my message. Something…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regex Challenge: Blogn' my way to the PDC By Roy Osherove June 20, 2005 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 20, 2005; technical details may be outdated. [![blogging my way to pdc](https://osherove.com/img/wb/f25d8784_channel9.msdn.com_pdc_Flairs_Blogmyway-h.jpg)](http://channel9.msdn.com/pdc/pdcfriends.aspx?contest=true) Here's my official Blogn' for the PDC entry. I've tried to make it...different. [http://weblogs.asp.net/rosherove/articles/pdc.aspx](http://weblogs.asp.net/rosherove/articles/pdc.aspx) _"I tried to come up with something innovative and fun to deliver my message. Something that I like doing and that I think other people might find intriguing. I didn't want to simply write stuff down and be like all the rest of the other blog entries. After all, creativity points matter. So , consider this creativity not just for creativity's sake, but also as a way to discover a world of powerful techniques to manipulate text.   I'm speaking, of course, about **Regular Expressions**. "_ [Read the rest](http://weblogs.asp.net/rosherove/articles/pdc.aspx) and accept the Regex Challenge. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 7, 2005 ### [Another Semi Israeli Blogger](https://osherove.com/blog/2005/7/7/another-semi-israeli-blogger.html) - Jun 30, 2005 ### [A \[Newer\] new way to fight blog trackback spam](https://osherove.com/blog/2005/6/30/a-newer-new-way-to-fight-blog-trackback-spam.html) - Jun 20, 2005 ### [Blog'n your way to the PDC - A reality in the works](https://osherove.com/blog/2005/6/20/blogn-your-way-to-the-pdc-a-reality-in-the-works.html) - Jun 20, 2005 ### [Geeky Podcasts list](https://osherove.com/blog/2005/6/20/geeky-podcasts-list.html) --- title: "Blog'n your way to the PDC - A reality in the works" url: "https://osherove.com/blog/2005/6/20/blogn-your-way-to-the-pdc-a-reality-in-the-works.md" canonical: "https://osherove.com/blog/2005/6/20/blogn-your-way-to-the-pdc-a-reality-in-the-works.html" published: "2005-06-20T21:53:00" updated: "2005-06-20T21:53:00" tags: ["Blogging", "Community"] author: "Roy Osherove" description: "Wanna go to the PDC? For free? If you have a blog or are in the mood to write a little software - you should really really check this out then . All I can say is that very soon you'll see my own entry for this contest.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blog'n your way to the PDC - A reality in the works By Roy Osherove June 20, 2005 In [Blogging](https://osherove.com/blog/category/blogging), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published June 20, 2005; technical details may be outdated. Wanna go to the PDC? For free? If you have a blog or are in the mood to write a little software - you should really really [check this out then](http://channel9.msdn.com/PDC). All I can say is that very soon you'll see my own entry for this contest. Like I'm gonna pass on such an opportunity, pfft. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 30, 2005 ### [A \[Newer\] new way to fight blog trackback spam](https://osherove.com/blog/2005/6/30/a-newer-new-way-to-fight-blog-trackback-spam.html) - Jun 20, 2005 ### [The Regex Challenge: Blogn' my way to the PDC](https://osherove.com/blog/2005/6/20/the-regex-challenge-blogn-my-way-to-the-pdc.html) - Jun 20, 2005 ### [Geeky Podcasts list](https://osherove.com/blog/2005/6/20/geeky-podcasts-list.html) - Jun 19, 2005 ### [A new way to fight blog trackback spam?](https://osherove.com/blog/2005/6/19/a-new-way-to-fight-blog-trackback-spam.html) --- title: "Geeky Podcasts list" url: "https://osherove.com/blog/2005/6/20/geeky-podcasts-list.md" canonical: "https://osherove.com/blog/2005/6/20/geeky-podcasts-list.html" published: "2005-06-20T21:36:00" updated: "2005-06-20T21:36:00" tags: ["Blogging"] author: "Roy Osherove" description: "Looks like the \"Podcasting\" craze is upon us. Slowly but surely, small independent audio talk shows are starting to show up on the blogsphere. I'll try to list the ones I know about here, and I welcome your input in the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Geeky Podcasts list By Roy Osherove June 20, 2005 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 20, 2005; technical details may be outdated. Looks like the "Podcasting" craze is upon us. Slowly but surely, small independent audio talk shows are starting to show up on the blogsphere. I'll try to list the ones I know about here, and I welcome your input in the comments if I've missed some. Note: I'll only be listing shows that have something to do with software development/technology, hopefully in, but not limited to, English . - [Polymorphic Podcast](http://polymorphicpodcast.com/) - Various mp3 interviews about software development. Latest includes Paul Wilson in a 40 minute interview about O/R mappers. Sounds interesting! ([cast feed](http://www.polymorphicpodcast.com/podcast/feed/)) - [.NET Rocks](http://www.dotnetrocks.com/) - Really should be no need to introduce these guys. Probably the first, most likely the best known in the MS world. ([mp3 cast](http://www.dotnetrocks.com/DotNetRocks_FullMP3.xml), more feed types on site) - [IT Conversations](http://www.itconversations.com/) - One of the oldest, contains audio interviews of many many kinds. ([Podcast/RSS](http://www.itconversations.com/rss.html)) - [Interviews at Team Agile](http://www.teamagile.com/mainpages/Interviews.html) - My own place where I interview the people I'd like most to hear from about geeky stuff. Also contains various recorded lectures, most in English. Currently no Podcast-able feed. Working on it. More Resources: - [PodCast.NET](http://www.podcast.net/search) looks like a nice place to start looking As you can see, the list is pretty slim. I'm sure I'm missing some good ones.  C'mon people - what do you recommend I listen to on my way to work? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 20, 2005 ### [The Regex Challenge: Blogn' my way to the PDC](https://osherove.com/blog/2005/6/20/the-regex-challenge-blogn-my-way-to-the-pdc.html) - Jun 20, 2005 ### [Blog'n your way to the PDC - A reality in the works](https://osherove.com/blog/2005/6/20/blogn-your-way-to-the-pdc-a-reality-in-the-works.html) - Jun 19, 2005 ### [A new way to fight blog trackback spam?](https://osherove.com/blog/2005/6/19/a-new-way-to-fight-blog-trackback-spam.html) - Jun 19, 2005 ### [A very nice .NET architecture blog discovered](https://osherove.com/blog/2005/6/19/a-very-nice-net-architecture-blog-discovered.html) --- title: "Blogn' my way to the PDC: The Regex Challenge" url: "https://osherove.com/blog/2005/6/20/blogn-my-way-to-the-pdc-the-regex-challenge.md" canonical: "https://osherove.com/blog/2005/6/20/blogn-my-way-to-the-pdc-the-regex-challenge.html" published: "2005-06-20T19:54:00" updated: "2005-06-20T19:54:00" tags: [] author: "Roy Osherove" description: "Yes, me too. Now that that’s out of the way, let’s get down to business. I tried to come up with something innovative and fun to deliver my message. Something that I like doing and that I think other people might find…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blogn' my way to the PDC: The Regex Challenge By Roy Osherove June 20, 2005 **Historical article** · Originally published June 20, 2005; technical details may be outdated. Yes, me too.  Now that that’s out of the way, let’s get down to business. I tried to come up with something innovative and fun to deliver my message. Something that I like doing and that I think other people might find intriguing. I didn’t want to simply write stuff down and be like all the rest of the other blog entries. After all, creativity points matter. So , consider this creativity not just for creativity’s sake, but also as a way to discover a world of powerful techniques to manipulate text.   I’m speaking, of course, about **Regular Expressions, or Regex for short**. The “gibberish” you see down below actually contains the actual message text that explains why I think I should be sent to the PDC. I’m warning you now, it’s a little banal, but it has its good points. The fun part is supposed to be getting there. Once you get there I’m just a regular Joe shmo with a little broken English and some misconceptions about reality. Like most of us out there. Back to Regular Expressions. I believe Regular Expressions are so powerful that they can elevate our productivity in a very short time. The below snippet of Gibberish, for example, can be parsed and transformed into readable English text in one line of code and would take about a microsecond to complete – all thanks to Regular Expression (Or “Regex” as they are fondly called from now on). The thing is, there is a slight learning curve when first encountering them. So, I thought I’d give you a little challenge **Try to see if you can decrypt the text below and read my message for the PDC Contest** _**“I don’t feel like playing. Can I just read the message?”**_ _\*Sigh\*_ _Yes._ [_Download the Decryptor tool_](https://osherove.com/LinkClick.aspx?link=http%3a%2f%2fwww.osherove.com%2fdownloads%2fPDCRegexDecryptor.zip&mid=347)_. It has a “cheat” button to show you the correct regex and will also parse the message for you. But, if you like puzzles, keep reading…._ I’ll give you exact directions on what your regular expression should be able to find in order to make this text readable again.  Don’t worry if you don’t really make it in the end. I’ve included a little “cheat” spell to take the edge off if you’re getting to a point where banging your head against the wall just isn’t helping anymore. It’s all explained right after the encrypted text below. Scroll down past it.. **———-SNIP————-** w1BiPP9BAx#I9#B #c2HW7s4Hgc|H3| L#x8#l #|e2| 6#o1# Sf7rvA|r2| E#g6# jh1eCF|xx|e |#n9# S|t9|’ |#F7#’ #h6sli|bb|s |91 6Cp1 Wv#y7#  #t2 bLt3 N6|xx|  |#KK#m #|41|t |#y7# J|c9|h |#Z1#  #|m5|e |#w3# u|i7|  |#jj#a #B3lpeH5lnZ|ee|l |h2yjW#y7# N|21|i |#19#  #|69|s |#V8#t #27tdDG7tCa|t4| n#A2#o #|z7|  |#j8#  #A1oOYo6oZ2|o4| Gv9t6zo6tKAm8tMS#t3# G|J7|f |Z4hGBv8hkZ#OO#h #| 5| 8#e9# 1K5pjcC7pzY|p5| tN4 XH93 PA59 gD#f8#  #|e8| t#UU#P #33odcX5oCO|X2|o |Y3DjKx1Dnc#D4# V|U3|p |#G8#C #Q6lAfq5liD|mm|l |m8 UY83 9V#rr#  #s9e8m63eVw|Z5|e |#-2# w|77|  |G2-UAo1-OCw8-iu#S5#- #v8IjIH3I8er7IgX|I3| b#BB#- #|ZZ|’ |p6-Y3#69#- #c1dtk|UU|d |#y5#- #| 7| b#X9#- #U1lwsA1lHW|UU|l |#j1#- #A9iNQH3iTTf9iMa|72|i |#G9#- #d3kjQr6kVjj3kzE|T5|k |78-TS#-6# 5u3eHF|h3|e |72-Q7E8-Ue#l2#- #|H8|  |r4-rl#k1#- #|c9|t |#C7#- #|D7|o |J7-dQJ4-nJ#-9# sP4 HAA4 LrL1 9c|L6|  |#N7#- #O2mOjZ4mxQ|oo|m |Z8-1q#KK#- #w8eezm5e1761eXDL1eYq|79|e |q2-xY#33#- #|T8|e |#t4#- #|z8|t |K1-uH#R2#- #|r8|  |#A1#- #|K5|a |V4-hpz8-vJ#f3#- #|T6|t |Q5-Bz#VV#- #|T7|  |S6-kg22-4b#-2# Y|t2| 3O3-KvX4-xi#rr#- #|u7|h |#u6#- #|f4|e |D3-qOv2-HG#-4# W| 2| Dk1-vAy1-1E#ss#- #x7P8a|yy|P |#l8#  #y9DPsR1DVJ|ZZ|D |78B3aD6BK6N3B8V#zz#B #g9C5HP6C6O|C2| pO5ySja6y5t#y8# 3F7:xpl5:Fz|:1| kF8 Aqv9 gZt6 sA# 4# r|p7|  |22R5c#S6#R #r7 lx|N1|  |#o3# 2N9-ez|c3|- |X7ydqA4ybh#P2#y #O3-Ed|-4| 2#m2#  #94-WoB2-CT|L6|- |#S1#O #|-6| Zi1sbMi8suj#p1#s #|uu|- |19hZMV6h9F#72#h #|v4|- |Z9eIS#e3# Z|vv|- |#U4#r #|z8|- |X6odhk5oMH#o9# K|uu|- |#Y4#v #|J9|- |i1egWd3e1h#e4# d|-7| f# 6# Y|J2|- |55RsTP5RTP#L4#R #o3-zVY1-Ce|-1| d#LL#o #|hh|- |34yhyV6yyK#c5#y #|-2| WN2@kx#M6#@ #|E7|- |#88#O #|72|- |#f4#s #66-J3Y4-3GW5-MR|C9|- |m9hrVm7hBi#X8#h #|oo|- |D2ecL91ezlk9ej6#r6#e #|DD|- |#r6# 3|nn|- |#oo#o #N2-EKO5-Z1|RR|- |d1vODI6vizo8vWa#v9# j|U4|- |I3eMLu1egq#e3# m|I9|- |F9.g7r1.w393.mE#.7# cu8-uvv7-fC|m5|- |#b9#c #|-4| X#N3#o #|-6| 6h7mmx#QQ#m #C7-fL35-Ij|z8|- |R4 Ux#56#  #|n5|- |#d5#  #E7-Nn|14|- |A1Fdem3FMbW3FWz#N9#F #47-6Oq8-2l|GG|- |#OO#i #|TT|- |68rDH#r2# 6c4-fpd7-6ht9-jT|-8| y#s2# FT6-C3m6-kAj6-1M|Q8|- |#ff#t #|98|- |46,pRP4,oX#c2#, #M1-wyw2-XQ|-9| 9k6 4L37 oY#t9#  #34-ws|q8|- |N4TGN#T2# n|D8|- |#pp#h #B6-Ag55-Jf|j9|- |#u8#a #|K5|- |#LL#n #t2-sF52-oK86-Jr83-bl|r4|- |17kqz#uu#k #m7-buG5-6B|-7| a44sNTs1sPr#s5# 8z2-YVc1-rB|mm|- |78 OBw6 Ds# 3# T|-3| e#j2#f #w8-jKl8-SF|JJ|- |#o4# eW3-Dx|-4| D#r2# gL9-sn|-7| BQ9 Nz# 2# 3z5-ZMC8-oM12-Lg|-7| J#16#t #q9-hIi6-CG|P1|- |n9aCYd1aSv#P4#a #T5-vtK5-RbB5-Sk|N8|- |w7kLFU8kEh#a5#k #|11|- |#i8# ih3-RKF1-z854-fQ|cc|- |#55#n #|27|- |d7gk2#n8#g #R2-n8|-7| p#h2#  #a7-LcP4-PxT3-RJ|-3| Hd3tQb#cc#t #P4-bre2-g4|t5|- |H3hKPy5hrdl2hWR#kk#h #48 lJb5 61| 1| uc7eqUI3eKc#e5# v|S5|  |e8 kNZ8 bW#o5#  #U3(AUQ2(r5x1(Wk|h1|( |r2tsY#11#t #|f7|O |k6iwh#M5#i #W6rJx|zz|r |#27#m #b2dOL69d46D8dWL|22|d |f5e3t57eDG#N2#e #|F9|e |#G2#  #x4rijP3rF7|h8|r |r9tBhd4tXV#44#t #R6 Xry7 7h| 2| 1Q8onPJ3o6H#o2# F|dd|i |39 r9# 4# FQ7sSNM6siD|g1|s |#k2#g #|UU|  |#o8# Aj1nB8|ww|n |H7 d9M3 sb#55#  #|o5| uH4tZd#D1#t #|f4|t |D5hVy54h6tN1h1E#E3#h #|d7|  |Y2rJbV7rDt#r7# 3|88|r |d5oJpJ4oyn#l3#o #|F4|e |u7uUJu6uKa#u5# r64lQLJ8lvk|l8|l |F3g5by7gYp#k8#g #k1ejrp6e6Ie5eYY|O8|e |#h5# e|AA|v |i9 rtO2 Jy#11#  #|x2|a |#uu#m #g5nIr14nsNS1nNf|B5|n |#b9#y #v4t5GW3t4W|t9| W#P3#  #H3)SVK8)UR|)3| cl8lix#II#l #|yy|  |u4iawr5iIjj3iWy#d8#i #t1 Av|uu|  |#n1#t #d6SgN|oo|S |p6ts7K4tR2l1txhV5tle#L4#t #d3cdp|44|c |#yy#l #86oDFC2oO2|f1|o |R6eTnv4eW8l3epl#b5#e #X4tnxW9taV|Z2|t |87 IBL9 GrO3 zw#l3#  #|V1|t |#ii#c #|S3|  |#AA#h #|B8|H |85as3L1aSO#a3# z|a5| Y#l1# q|n6|n |#g3#l #|s6| mY4egr#jj#e #H9eTCf2eZe|CC|e |#n9# l|v2|l |#z4#g #|WW|m |#z5#e #h3ahC44atg|ww|a |X5.vdk5.K9H3.L1#y5#. #|PP|n |L7 XJb6 Ju#KK#  #S6 PnW8 QR|D9|  |D6HKLO5HQbB9Hrv#d2#H #| 4| ZY3on3#o6# P|67|A |e2pEGf8pfWU1p9t#p2# M|l1|d |#k6#e #|d5| A#44#f #Y8yOHk5yBC|y5| J72unq#u5# d|f6|  |q8lXeN3lDV#l7# JX5SBlA3SPc|q8|S |#T9#l #|WW|a |u7y5Q#G1#y #|n3| U#jj#  #|QQ|t |#kk#a #I5on7|o2| oF3lZVg1lpx#pp#l #79 8UL4 zqY1 vdm6 GZ|Z3|  |#32#o #| 9| i#KK#n #|m6|K |H2gOaF9gXO#g6# i39is347iUP|WW|i |H8 Qy#EE#  #|N3|e |z2tg368tAx#t4# wE7r4B|d5|r |L3h9C#I9#h #|p4|a |#e6# C|BB|n |#T3#  #B3 EwD5 7f|OO|  |#k4#w #f1MqTY2MXQ|k4|M |g2aDBL6aWnW3aLs#a6# vP1ou9S4osi|w8|o |S3yX8d6yB4R7yuE#y2# m|22|c |#W2#  #|k7| S#y4# gf2fVJ|bb|f |J3oq2#ll#o #o6oQE|o1| eU5uqf#u4# Y|r7| rj1’pJc6’2x11’jie3’Td#34#’ #|d5| r#w4#v #x5 tz|ii|  |#A4#e #76(fQ|l9|( |l6 ywP6 Yn# 6# E|A5|M |#NN#r #T8Sdeo9S7o|55|S |v3eCkd8eaz#e9# t|x5|B |#j1#a #d1umKu5usMa3uKx|u5| d#Y8#l #14iMb98i63|NN|i |h2iWhX3iev#p5#i #Y4llB|l6| 9#SS#z #R1dAav5dlyY5dVo|33|d |#44#e #P3 Hu|33|  |Q3dxi#pp#d #R5TjZN2TeQ|e7|T |D7 13Z9 mY#rr#  #|RR|e |#ZZ#t #P1axBR7axl|s1|a |U5hpD#94#h #|m1| M#W9#a #c9)x7Z4)pH|c8|) |#Z1#t #78 Mqv8 fP22 Vx|d5|  |#S3#  #| 6| 5#r9# S|J6| i#MM#e #|V1|e |#g4# Sl9fLC|E9|f |o5uxF31u8gw2unZ#c6#u #|Z5|f |#k4#l #| 7| S#L3#a #|B8|S |#r5# g35aqot4aIK|D5|a |#p3#  #|n9| 7#t8#e #|Y8|d |#x6# w|q5| Mm9pDE#d5#p #47u4t|ee|u |#E3#r #|i5| Cy8eYIW5eSI#u1#e #N6sCk|c7|s |d2sy5i6sPHP6sbh#H3#s #|E9|t |#s2# hi1 5sn8 NE|G7|  |#i1# A| 9| sn9obes7oaN#XX#o #t2DxAS3DGh|G1|D |W9nfz#Z1#n #E5aYg|51|a |24sOHU6sqs#AA#s #K4rxEQ2rhn|31|r |#,8# eI6rFv|r9| K# 5# sT5eIwj3e3N|N1|e |#b7#t #|CC|l |B6h3373hqd#h5# ld9lfWa6lIQ|l7| rq7ozpi8o29#WW#o #|RR|  |#ZZ#u #E3NCem2NZD|LL|N |#T8#g #|d9|o |E7hGgQ6hGiV5hhBt7hCj#u2#h #S6r43P2rsNd6rhv|J9|r |H8tT5#e6#t #|NN|t |#11#  #H4oaBs1oPqF3odEg5oLS|EE|o |#y5#a #|n8| c# 6# ME5 mp|ee|  |57bqSB1be1#vv#b #d7 9zg7 bm| 9| 851ikrT6iZN#jj#i #|Z8|D |#j9#t #z5oQVZ5oBnV6ofo|B6|o |# 9# RI1nCUc4nshL9nIH|n6| 5#w9#c #r5 CKW3 Zy|c5|  |#e3#r #|B4| C#t5#y #|FF|o |#p6# C|x8| G#t7# 2|a4|  |#YY#i #|s6|  |#kk#c #D7MNU|w9|M |85 Vt# 7# T|OO|i |m8aX2Z9aIpZ8afgd6aqd#a8# VZ7kX4z3kpH|S8|k |R9thxA6t1K#55#t #|ll|e |# 4# B|W9|  |e7tqnB2t9ga1tYC17tPQ#t9# z|J4|W |z4ipn#51#i #P3odBz4oyyO9onK|o1| D#29#m #|o7| k57eDv#xx#e #d7dgLt7dRp|s8|d |D9svVW3sfw#k6#s #|r3| YZ2,U5#j4#, #|A3|i |S9 Tt#L1#  #|n4| P#PP#c #|g8| hl4ahPd9aKd#K4#a #|47|  |F9nnW46n4657nd895nD8#u2#n #x8 rLb4 qc|Y4|  |# 5# n61T48|w7|T |66bi2W7bSy#JJ#b #q1hYPY1hqN|h3| 2#e2# Hw5eNp|ZZ|e |#Z3#  #| 7| c#j3#a #|.6| 1# 4# GJ5NWGB7Ncw|R7|N |K5vGH#v9# k|B3|E |e5aKm#AA#a #v2TMkO2Tl2K5TM7|T9| rp4loK#c5#l #c5 DzW8 WS|f2|  |#zz#u #W4RI4r3RhI|R2| XN3a67#a8# G|o9| q74b8hB1bSq#b5# 1|c4| zN2lrRj8lJq#CC#l #r2kypI5kGE|LL|k |#e6# FZ8sjPN7s6y|s2| y#RR#  #n4 wQ69 Hc|DD|  |#N7#a #|V6|C |#bb#n #|P7|r |#t8#d #|e6| f81 DNs9 Kg#T8#  #|rr|w |31peF#aa#p #64 qI|s8|  |c6o9JF1obN#75#o #u4 rV| 6| xG4wiS#p5#w #|M2|R |#e8# lX5oFD|zz|o |#r3# a|r3| 7E7fdos3fvj#YY#f #|J9|y |#u2# JS4 tf| 7| Fc5lAB#UU#l #36”YH76”2P|44|” |#ww#  #I5InO32IK3E1IBT|I8| S#zz#t #O5 e8W2 wwk2 NTP9 la|ll|  |48oSY#17#o #N7WCy|yy|W |J8oypd6oTw#p9#o #42a7Sh8a6s|a9| h#l3# ED9sFp|x1|s |# 4# Z|h6|  |#t6# HA5Io1g9I8T13Igfp2IX5|13|I |g1oncv3o68f7oGb#o7# z|P3|n |U9 9i75 jK#x1#  #|m7|v |#DD#d #|g3|i |#o9# x|gg|t |n6 2n#p1#  #|P8|e |#22#v #|d1| 194aPzI4adXH8apg54aLY#a7# 1s3”iU|77|” |K7ruOh7rPG#r9# 1|W8|  |#qq#i #46B9Ka9BGv|z7|B |u1o91N7oOs#W6#o #w6lWv89lHj32lra|T9|l |A6uvtr3uI285uET#E7#u #U7ySul6yqS|y4| E#m1#s #d2tv5|t1| YE5 Rx#gg#  #T7hTLy4hZB|h1| M#h2# hd5 7Z|O3|  |95aoE#hh#a #57 yQ23 vl|UU|  |u6rux#V7#r #C7SNqV6S2YQ8SvP|S2| e#j9#d #B5appW7asu|a3| o71 W246 lT#QQ#  #|g8|m |#t9# u|e5| 4#t5#a #L9 1Xr9 PS|b8|  |#s5# P|82|G |v6kAZ#O9#k #j4e8UC3eBh|s2|e |#F1#s #|33|n |B7 Ijv6 UM#RR#  #|F7|t |#Y6#i #|vv|i |P2nBiu6nUZ#44#n #|e9|l |y3 KkX8 NE#z4#  #A1eaf|e3| Z#L4#a #| 4| 1q5 hbK1 whK9 kC#o7#  #|c2|  |#bb#v #78JWw|J1| qo8eBE#V3#e #K2oaWp7oKK|22|o |#p4#r #|e4| B#y1# HN5lBlf1l9f|95|l |B4 4S#NN#  #m4 uxe7 cha8 ybQ2 zV|k9|  |E7fQ5x2fpS#f3# 5|i2|S |#K1#a #k2pVuF9pPR|99|p |M4sEQ#H8#s #|GG|o |#t4# V|l3| 1#I1#  #E7saWL6s2R|s6| y#31#a #J5kRSm8kvg|C2|k |n3ndk99neQG4nXK#M6#n #|U6|y |#r4#d #67 nYN1 6nl2 cYw3 ML|y5|  |# 7# U|WW|( |#e2# K|54|I |#x9#f #X5sH7W7sec|j9|s |#f2# hb3 45|ZZ|  |Q2igr#N2#i #|h6| n93cU8S3c1AI2cKrT5coc#c7# v|33|e |O9itxp6irM71iOq#b6#i #|x2|  |a2ex3#e2# lI1aLTk4arUI3aUf|U3|a |C7nyuI9nyre3nUp#JJ#n #k9tcmb7tcst9tPN|ii|t |#t6# u25 UIQ2 HD|u2|  |# 9# Z|41|a |#F7#m #|36|l |#v8#a #|x6|l |W6nok28ncm#n9# T|99|  |#b2#n #o5cmDQ5cXq|c1| ON5ehE#e1# Y|S2|o |#59#r #88m6U|O1|m |F3.rBn6.fPx4.Mj#i7#. #g3iIGq8igqa3isE|l5|i |# 2# os5nNRa7nPQ|F9|n |# 3# oS2gsn|SS|g |#e3#I #66?qX|?4| W#u5#  #k9)bFo2)Z7m6)Tu|)5| 2#B6#s #|w5|  |S4p1WR4p7e#Y6#p #97 BdH8 Ap|m6|  |n5eYS65eXp#e5# L|h9|P |24cVG53crpU5czt#c3# 8A8aDf48aT1|a5| DY1i2w#X6#i #B7uej|E1|u |y5fGhB2fZAK1f7N#N2#f #|C3|l |t2i3Fz5i7y#xx#i #|15|  |Z9c4J#K7#c #T8VO3q4VRI|MM|V |#N3#a #44iwD|C7|i |32lus#rr#l #|m6|c |J1lu1M5lesA4lh2#TT#l #|b2|k |#II#y #65 NSj4 ZF|t1|  |Y2 Sll1 Ld#g7#  #l5 RO|Y7|  |#N9#c #|vv|I |#u5#h #|h3|n |#q2#o #|72|g |#A3#s #u3oswD9o5L|o4| kY6eb854efU#n9#e #|R4|  |H8 EvO8 3Y91 7H79 m8#t7#  #|R9| vi2toq86t3D#OO#t #c2aVHr1acDU8aVN|u5|a |h5hDw#55#h #|FF|m |#13#i #T1mXry7mByD5ma5|m6| ti9sSuN3s8s#CC#s #a3exbO9enP|e9| y#kk#  #47r5H|r6| gs4lt5#41#l #|yy|  |o5io3b3iaa#bb#i #| 7| J#88#t #|C3| c41tLc#ii#t #|N1|h |l3lHel2l5i#l4# OU9rx9R1rLk|i9|r |T6e2HI1ePX#m5#e #d2ioY|Q6|i |k7 tTZ6 VF# 6# FR4sdZg2scl|W9|s |M9ega#i7#e #V8 oi| 8| e#x9# uF9S3y|oo|S |#P9#e #|nn|e |#EE#r #|H1|l |#c2# s|l5| 1#x2#i #J9saBJ3svj|XX|s |P6suxl9sAuW5sV9#F6#s #| 8| ni2e8oM8eFJ#e1# zT5 z138 SX83 EE52 Jy|G2|  |#xx#  #|F4|M |#b2# eM8a3fp2a4t|a6| 5y6e3MR5eMGn7eIeP7evH#v3#e #|t9|r |15c6o#S7#c #|DD|t |93azD#h6#a #|i3| U#Z1#u #|V4|n |F1s3u#s7# w| 2| Mx1eMBF7ecw#BB#e #v1F8H|F2| T#i1#  #H9ocjL4o1Y|y1|o |b7RDMB8R6f#ee#R #|JJ|w |a1e8v#D9#e #|66|l |#w8#g #|e4| YI6u9D#Q8#u #|r6| W#ii#l #n2 d6D1 rC| 3| 397aR5#uu#a #|(4| wg7rNY#r1#r #|k1|A |#22#  #22sz5F4su4|Q9|s |#E2# i|C8|  |q8xg1#x7# T|l5| 1#kk#p #T9oDWD2ojRg6oi8|JJ|o |#n1#r #|32|n |#e4# E|g1| S#d8#s #|GG|  |d6swm#u1#s #|j9|a |#JJ#i #V4sUHz5sRB|Q5|s |#s4#o #|a9|  |#C6#n #y3wR8|UU|w |#RR#s #|X4|e |L6 FKw2 h696 9O#AA#  #v8’3898’yV|’3| ld7(AA#(4# a36r2268rZp|y9|r |#K5#R #F5eLId1eYN|ff|e |A8e2KQ3egC#rr#e #|tt|  |D8gTZH4ggV#q5#g #x8wSvm6wEFA6waLC2wof|B6|w |i2e3O98e3l#y5#e #M3r7YI8rLn|r6| Ue1xNe#x5# Op9iSrX5imZV3i6y|i5|i |c1)z5#TT#) #s2tgrD5tp1|n1|t |#c8#  #|Q4|i |#I6#a #|EE|n |#r3# z|ww|g |n1eRjS4edt#zz#e #c3 1rS5 Zc44 j2| 4| AG8 d2#j9#  #|a5| G51oQH#O1#o #|91|  |#m6#n #N1lys|HH|l |L6eCw53e8E#k2#e #|i2| O94 vLr6 OF#pp#  #R8sI541srw|O6|s |O5oUCG1oud#o4# I|99|t |K9fHKX6fxd#f4# MP3.cU84.7k|n9|. |U5 mhp7 JAp5 GF# 5# se6.HVG8.PVR2.8M|b3|. |n3mRWJ5miv#m7# yZ8.NVG7.oFY9.je|.9| Gl3oxRi1oQ4#z1#o #75)mF|zz|) |W9s4L27ssy#L5#s #| 4| v#G6#t #|91|  |#B5#  #F1RqXh7RiG|R1| A#11#p #z9oJKI8oky|G1|o |j1of6n4oDb#i1#o #I9bIIn7bt7u6bKH|b1| a#w7# PV4eVwj1eu7|e3| y#U5#e #x4rEvz6rH9|D2|r |#dd#r #j6tHOv2tJ6|21|t |#ww#f #|H6|  |#k3#u #|88|S |#Y5#l #|FF|c |#RR#  #|u7|o |V3tNTg4tuCX3tVb#ll#t #|JJ|b |#h5# gA4logv2lP6|WW|l |82iyQP4ifQl2iU8#e1#i #T1epOC5eFe|b8|e |x3nrnL3nPx#V9#n #| 4| i#H8#g #V6 XXl6 ua|49|  |#qq#s #|z7|S |#E2#  #F8thM38tdO|d5|t |#cc#n #b3eVkO8eFN|bb|e |#M5#o #|Q7|p |c3bG1j6bTi#D4#b #|24|e |#Q3#o #p5hFn|oo|h |e1dhmF6dFN28dHw#D2#d #f7ndKT7n2F|m1|n |#b3#y #a9 8u59 TW|X4|  |w7 U5Z1 Bzp2 bN# 7# I|MM|F |d6kPpg1kfO#pp#k #M3osoj2oyn45oIJY9oII|49|o |#R4#n #|zz|r |g5oSBd6ozj#o8# N|32|t |k8w1W#w7# GW1eMzt8eZj|DD|e |76sVVR6s8O#J1#s #|r5|  |K2 juB9 8z# 2# NV3 UV|o5|  |#63#h #|yy|J |R3oris6oma#j1#o #R4umDZ6uKq|y6|u |#JJ#w #|AA|v |s8 Sb22 mC#h6#  #M4avCC4afM|a5| UK6tjlC1tme#94#t #|n2|l |#O3#o #| 2| h#D6#  #53LYS12LBvj5Lhx|d8|L |#55#u #U3oRDv1oPZ|LL|o |j5s8U#nn#s #|T4|w |#aa#e #|N4|e |#aa#  #|dd|y |#39#t #|K9|  |#h3# 992 KFa2 Fv| 9| Q#f7#e #61JiZ|TT|J |#R7#s #O7aDK|gg|a |#e4# H|11|m |w6 Ga# 1# bE5e5bQ6eY6X2eYI59eID|98|e |#PP#d #|s4| 9l2aNYp5aCH#T2#a #T6 fr|XX|  |#e3#y #Z7NxX49NHA|qq|N |#n3#s #|q9|e |#,1# h|N1|w |#e9#  #|t7|k |v3aBe#OO#a #|D8|i |#u3#n #h1r6rC9rre|c6|r |m3drS#33#d #|FF|k |#ii#  ##K7#a #Z2 y978 bx#m7#  #E1cCyW7cNH#V3#c ##a7# F#n9# Dt7 18o3 hcJ2 oC#qq#  #b4ssdZ5sMz#79#s #76ei7v4ebb#RR#e ##35#r ##h2#i ##UU#o #g9uple9u7rF6ulQ#H8#u #D6sg928sZm#u9#s ##32#l ##y9# 3o1 K1# 3# I#jj#b #Q5osQ#61#o ##F7#o #V1shLV7slWB5sv394sUC#J2#s ##n2#t #Q7 fxV2 Gzh8 v4m5 4w#pp#  ##p2# 1#r5# NK3o5Mo3olLM6oT1#o2# CF7dX735dQk#d5# QD1uosh6uUf#u6# 2i7cweh6c2M#vv#c ##t9# B#F7#i ##R1#v ##HH#i ##t5# g#y3# Oi6 qrS7 gd#c6#  ##r3#f #c4oq8#f6#o ##r1# Tn1 58m2 Dq#79#  ##n6#d #I9eR9Q6ekk41eSWJ1eCm#aa#e ##H4#v ##e5# Mn4l5vR8lg563lp1l5lzi#s8#l #E4oFOp9ouj#ll#o #n8pcC#33#p ##R7#e ##r1# Y#ss#s ##76#  ##a3#o ##g5#f ##i2#  ##44#a #J6lQ1z1lXqj7lRE#j8#l #j3lKGb8lVT#l8# kN8 mVh9 crR5 aS# 6# a#nn#l ##D9#e #K2vFA42vod#ll#v ##II#e #L7lL6o9lQzS4lHT#LL#l #P4s8Z#t7#s #T8.HX66.TK#.2# pu5 Jf#77#  #j4i4Ee5i3S#ee#i ##s4#n #w6 6O#95#  ##.8# Iy8NiGC6Nx4#N6# 8v7EtNe9EV6v8ElU#E9# lp7TZ1S3T9S#l6#T ## 3# d69e45b4eTC#f8#e ##M8#s #k3pugU7ps798p16#h6#p ##qq#e ##P6#c #M7iKR38iH7B8icf#t3#i #H2au1l2asR#H2#a ##l5# KM4laiT8lKR#o1#l #j1yOXu9yIY#13#y #g8,dL#rr#, ##aa#  #29RiDR2RmF#R9# 5#e7# Qb4gFt#w1#g ##VV#e ##k7#x #w7 adm2 iT# 3# ip7i7L#22#i ##94#s #31 Ah#EE#  ##v9# sf1ejiP7ekl#22#e #J9rGc#L9#r #j4yCI#y2# 8#Z3#  ##p1# jd4olRv8og589oEA#LL#o #I9wOR55wTz#e2#w #P6ebY#xx#e ##e5#r ##44#f #n9u9t#u2# L#X7#l ##K4#, ##GG#  ##X9#a #j7lTrN2lP7#f4#l ##l1# o#w6#o #F2wMWi6whB#A7#w #E2iea42ijS#RR#i ##n4# GX5g4x#w8#g ##v3#  ##b2# Gi4oRfu9oh9#YY#o ##t7# G#F3#h #B5 Hm82 aO#kk#  ##j1#e ##G3#a ##s8# AV1e9RD9eMP#e5# Nw8 Ob#v4#  ##j8#o #K8fxC#f2# S#uu#  ##37#u #x5s7kp9sIvY3scf#J4#s #w8eHb#69#e #s4 yW#k6#  ##yy#a #q9nKut7njBa4nEV#T6#n ##d7# wd6 rtY6 DLH7 QW# 6# R#Q6#a ##26#c ##72#c ##u3#e #b3sim#s5# U#D6#s #h9 Bi# 6# t#J7#t #n2olK37oYCQ3obg#uu#o #x8 wDV4 WoJ2 yr# 7# Qn5sCk#a6#s #r6omtr2oLc#hh#o ##m3# kG1ejU#EE#e ## 5# Hm9ojJ92otY13oMd#d1#o ##k5#f ## 2# bp5tqZi7tqb#93#t ##s8#h #V1edsn6eRy#t2#e #L8 Iz# 4# Y#m3# U#z4#o #W2sFR48s2z#f5#s ##XX#t #Z4 4N# 8# z#i6#p ##XX#o #U2wP2S3wrR#99#w ##e3# h#r4# Y#z4#f #g3uYOR1u5Pa5ul5#X1#u ##l9# w#U5#  #f6RgQ#R2# Z#Q7#e ##II#g ##q9#e #47xzYR2xSG72xld#EE#x #M4 a9G4 16#H6#  ##f7# L55epk45eoA#21#e ##ww#a ##F4#t #k5uWKG5uAN#O5#u #O4roHE7rSB#r6# tR8e59#D8#e ##M8#s ## 9# rM6e2U#r8#e #v6xxei6xNi#ww#x ##uu#i #Q3sOgL4sOX#83#s #J6txGV1tCT#I2#t ##i9# Yp1nLVp5nGj#n6# F#q5#g #I7 fb#z8#  #w8tV2R4tAr#ff#t ##EE#o #P6dZI#JJ#d #T2atDS9au7#tt#a #q7yy2z3yen#Q3#y #D5.3SI2.Zg#.1# d93 RQA2 Dk#uu#  ##47#  ##a2#I ##uu#f ##W1#  ##Q9#I ##p7#  ##kk#w ##P4#e ##n8# FR1t99S6t61#PP#t ##A4#  ##t3# uI1o4Q#pp#o ## 6# O#G9#t ##ii#h #T7eQxg3eWA#L7#e ##XX#  ##P9# wg3Dk8#d1#D #e6CMhn4CQr#C4# N41:om#47#: ##K4#  #U6-q9I5-YN#M9#- #N3-XU65-k8#99#- #Q2-XLL7-Vt#s3#- #z3-6t#46#- #g4-BQd2-yx#-4# l#x2#- ##w7#- ##-4# 5#ll#- ##GG#- ##-2# a#e5#- #74-hXo6-8L#-3# bT5-TGK4-eq#h6#- #72-8LV5-Re#VV#- #w1-pq#I9#- #a4-ha#w5#- #N8-f5T4-ZCe7-dn#FF#- ##c2#- ##q7#- #n5-bv#X8#- #X3-OF#s9#- ##I8#- #l9-Ci#UU#- #T9-l3Z1-Sj#-5# S#53#- #N2-mLD4-pY#k2#- #j6-ogd1-w4#q5#- ##19#- #y8-wVO2-s7u6-1t#M9#- ##s7#- #74-8SK1-iV#O6#- #M8-ZU#y5#- #F1-Dzd2-8R#L2#- ##Z9#- #f7-jwI6-6Y#-5# CR4-wzk3-MGq1-Gh#WW#- ##-7# m#h2#- ##j5#- ##D2#- #q9-pR#VV#- #S7-YVY9-57#F5#- ##A8#- #R7-NW32-e8#34#- #F2 kl#88#  #V6 Q3c6 k6#88#  #11-Vu26-xm#L4#- #X4 Hy# 9# co4IKV#77#I #Z2 yEU2 pb64 wZ#A6#  #D6w5E#mm#w #y1o4mG9ot3#DD#o #q9ut1m9ubq#a2#u #n1lYZy9lpJ#11#l ##d2#d #m2 Dyh1 Wo# 7# AN7beio3bvb#b1# K#YY#l #Z6ocb#p5#o #78gKFw8gd5#o5#g #m2 pI#X2#  #q9eGL#A1#e ##55#v ##A9#e ##r3# RF1yMU#53#y ##G7#  ##e9# D#v7# Vp7ebd78e4V#S3#e #F6nTRg3nWXo5n5J#g6#n #22iDAJ1iLP#D2#i #C2ndjL3nky#94#n #m7gFgP6gMO53gSym7gSl#i5#g #Y4 qLS5 aX#55#  #R6aUzB7aaEi8aRH#v3#a ##b1# bZ9oMoM8ovMm5oQC#P1#o ##u5# km5tTu78t3A#o4#t ##bb#  ##s6# ZD7ttNt2tzS#t2# X#V2#u ##R5#f #I9fzB#12#f ## 4# P14Imm#n3#I ##A4#’ #Q3vxka5vBZ#H1#v #U9ecQB7eYp#e5# tZ7 9Qb3 rj# 1# N#c7#l ##z2#e ##jj#a ##rr#r #i5nmG#W9#n ##e7# bL5dXLK9dUp#B4#d ##P7#  #W2t2mx7tGi#ll#t #R1hdEn2hE524hcq#T7#h ##a9# x#i5#t #B4 tV#SS#  ##d6# k#K5#a #K4yksu2y9A#A1#y #L6.aT#.2# Yp6 okM2 kI#V2#  ##I4# xj8’cj#’3# B#J6#v ##v7#e ##L2#  ##c7#b #92eZmA6e5I#LL#e ##ll#e #n8nZ4#S7#n ##27#  #87dDT#55#d ##o1# Im6iMK12iIf#I8#i ##p5#n #y7gJ9L8gWP65gCk#V8#g #p3 hLO2 sM# 7# O68t9x#t3# CK9h9Dd2haxA4hGi#WW#h #l1iAni1ibe#i2# g#vv#s ## 3# u#QQ#f #n9o57#B9#o ##S9#r #A6 bca6 Zw#a2#  #y8oNEt6o4T#o4# BL5vpBj2vZe#ff#v ##w2#e #d7rCWN2rLw#L3#r #34 pv#c1#  #y5tzGh8t8I#t6# eY7wYjS1wDd#J4#w ##91#o ## 2# h#k5#y #j2eRik3ew1#L7#e ##a4# 173rGSO3rYi#89#r #n3sfY#O3#s #O3,Wu#,3# Bd3 dW#I5#  #g4sEpD2shC#g5#s #O1ofZ#o2# vW3 38z1 NjW6 bw#J1#  #w8iUgT1inI#u4#i ##n8#t #19 LWd1 lRO2 Jr#Z6#  ##aa#s ##u8#h #D5ovd68ohq#VV#o #p1uJkR3ugM#WW#u #H9lBN#l1# xl6de6Q3dps15dQi#vv#d ##l7#  ##b3# g#P8#e #16 i4g6 41#RR#  ##a4# B#vv#  #e9pbkI1pbaM9pny#p5# 5#l6#r ##q1#o ##b2# D#l9# 2a6e2F53eYh#u8#e #w3m5A#12#m ## 8# r#t4# 1p4o7Fw8oFs#55#o ##S9#  ##s7# U#N3#e ##J9#e ##J4#  #U6tQik6tQzY6t5D#HH#t #O3hU5O7hyx#G5#h #c5aMh#a1# Uj3tQld2tpi#t7# H# 8# WJ2IdCZ4IM199IXF#m8#I #a2 2AQ6 xIS2 eG#d3#  ##c7# aS4oIoJ9oGc#o8# Zs1ueyW8uh5#aa#u ##l2# Ii8dE9#O1#d ##y2#  #p7bERL2bcc#R5#b ##a7#e #m5 iyv4 l3# 5# 9#c2#c ##JJ#o ##n4# U25seUf8sy3X7sfR#s6# X#13#i #C9sT5a9sDA#s8# 6x2tge#t2# 167eS2z1eFH#v8#e #G9nTd#33#n #a9ty5#JJ#t ##D6#  ##E1#i #f2nYq#n1# l#F3#  ##d3# M#o9# q#o4#i ##89#n #F5gAp#bb#g ## 5# A#cc#t #l9hEko4hCiN5hjFk8hZz#O9#h #75iiZO4ib4#E4#i #95sXEf8s5yh4sOQf3sD9#HH#s #d5.LDI2.gJ#.2# a# 1# i#ll#- #J6 s4#78#  ##VV#I ##G3#  ##A2#w #g3o6f#QQ#o ##VV#u ##l5# 1t4dgJI2dxP#d4# G# 1# t#K4#N ##88#O #S2TgO#CC#T ## 8# y#KK#b #r8lXZ#I1#l #n1ojB#CC#o ##e5#g #e8 G1W6 zj#YY#  ##mm#a ##yy#b #U7onT#X1#o #15uwvo7ug9#55#u ##66#t #a3 urF2 ar# 8# J#TT#p #w1azR#a4# c#j6#r #G3twtd5tgo#t3# n#D4#i ##92#e #B7shg#ff#s ## 1# oU9axR#O7#a #77npRB7n7Hn2nd5#u2#n #c2dDQ#d7# G#ss#  ##B6#m ##55#e ##e5# RA4tIb#B5#t ##q1#i ##oo#n ##XX#g #E5 qql3 2ur9 jY91 em#LL#  #c2cJMv5cepS4cQp#11#c ##b6#o #E6o5HE1oo7#A6#o #E3l9ls9lwC#C9#l ##X3#  ##p7# K#z2#e ##z2#o #Q1pAq#J4#p #g8l9H#m9#l #E7ev249e7s#e4# S#w5#  #X4(jkj6(rb#l3#( ##JJ#w #V4hMNf3hSk#h5#h ##K2#i #k9cOZU3cLnf1cfK#22#c #V6hqDT8h8nM1hP7#h6# O34 xGd8 kX# 9# L#S3#w #R5its98iqG#ww#i #x9lqLF1l9oJ1lAn#I6#l ##l6# G66 TL# 7# Wq6pDl27pdZ#c4#p #j1rb4#r1# 2#o5# Vq2bhQ#x9#b #R9ag6N7aXg#r3#a ##b3# L#q3#l ##N4#y #Y7 Nlq3 FX#Y7#  #q2hPOB7h4b#37#h ##a1# qf7pdA#F4#p #42psT#ww#p ##h6#e #M1nii14nUR#T1#n ##J5#) #c4 OEM4 m5P8 U3#T2#  ##H9#a #d5sR3d2s71#o9#s #F9 d6Z6 b1# 5# c68IPfd7Io5#77#I ##l8#  #n2pKtK3pQe#p2# f#H4#e ##r2# 218s3Ic2ssg#BB#s #y7oTX#QQ#o #53n8U59nKpi2nd4#n2# 386aLf#II#a #M3lqd#l5# 1#l2# TQ7yJyT1yaD#xx#y ##a7#  ##96#h #u6a9Z#Q4#a ##AA#t #P1eKS#MM#e ##89#  #v9rxrB1rfgb3rNJ#52#r ##L9#e #55aV6w1awW#B8#a ##E5#d ##J6#i #a7noyL6nYv#n5# i#g7# R#C5#  ##11#t #86hzy#69#h #H2aOb33aPQ#Z6#a ##d8#t #R6 mPn5 jRt9 wr#J5#  ##S1#s ##q8#o ##g3#r #W9tqrG9tNd37t9f#r9#t #58 tO#VV#  #f1oy6T6oxh#22#o ##t4#f ##j2#  ##ww#t ##ff#h ##d9#i ##n7# LW8gJZ#j4#g #X6,wY#u1#, ##o7#  ##w7# M#KK#h ##48#e #B7nHc58ndg#J6#n #B8 fCT5 TM#11#  ##s1#t #M1hBNs9hrnr1hr4#77#h ##c8#e #S5rue#77#r ##k7#e #G7’EeH5’jK#’7# 4B7s6b#aa#s ##67#  ##H9#n ##o2# Kl3 ds97 hR# 7# a#jj#r ##K7#e #w4adev9aqu#m5#a #69lVbN3lqS#b1#l #84 Ebv9 tj#ii#  #l4di6t7dOo#p8#d ##nn#a #p3tMtk4tfHg2th8#t7# Z#RR#a #Y8 g2# 7# 2n2iPG#H8#i #k8nRZ#u5#n #l4vgoX7vnM#v5# I#85#o ##Y4#l #a9vGtt5v16#39#v #e3eXGD5emz#C3#e #l3dZp#d5# t83,AP#11#, #m5 qmQ3 pwd6 RUt5 Hw#g5#  #P6jnOl9j37#C7#j #C6uG2#zz#u ##XX#s ##H1#t ##77#  #L3nEvq8nCXn6nI7#W5#n ##a5# pj5m1Jc3m4Vz9mKV#X4#m ##e2# x#n7#  ##G3#t ##y1#h #l3rUHk9r2V#r6# 5#o3# Ic7wjxv7w41#w4# Kp5iGHx5iZJC3iGA#FF#i #79ncz91n7s#R2#n ##g1# UN5.jS#ZZ#. #Y2 Eso2 nO#PP#  #P1 fv#18#  ##-5# X#FF#  ##I1# M#36#  ##x2#w #d4oPeK3o8bl3oIq#tt#o #18uNT#22#u ##dd#l #B8dTYD6dN3#51#d #W3 aY# 4# pa1twed5twO#t2# WG9rkCi3rtW#d1#r ##E5#y #V7 EH#Q5#  #16tJ9R8tXo#VV#t #V3ozT#o5#o #i1 UC#C1#  #O7d51#w7#d ##p8#o #o2 mD#RR#  ##l8#a ## 3# nC7dHQx5dWR#Z8#d ##67#a ##i2# su9ldyv1lrQ#G6#l #R1y9Bh6yMa#QQ#y #D2 jXm9 HQ#xx#  #X8PxS#X9#P #X4oE1#ww#o ##FF#d ##W5#C #k6atSX3aEO#a4# j#s2# 3t8tbJb6tmR#t1# 5o2/wL#88#/ ##I9# O#11#n #S3tis#t6# 8i9eQz#A1#e ##ZZ#r #d3vVQ66vVF#32#v ##99#i ##e7# P67wcHV5wOQ#SS#w #W6 zrd1 YM# 4# 3X7wS2#p5#w ##R2#i #34tKE#l8#t ##A8#h ##G5#  ##22#o ##j7#n ##U4#e #Q2 f2#x2#  #o6fqCf9fWA#M5#f ##R4#i ##b8#g #u1u4RE9uMC#E5#u ##C5#r ##71#e ##61#  #d9iBva5ivKu2isF#i1# eD2n4lY1nwg67n2jY2nKH#w5#n #37 42# 4# 9#T5#t #r7hLVV3h4X#h4# M36e4KJ9ecM#65#e ##E8#  #i4iWaT9iDq#K7#i ##ii#n #z6dT7X7dm5g6dZO#d8# 4l8uqnF2uqW#c6#u ##OO#s ##25#t ##r1# P#A4#y ##x2#, #r3 u6# 9# C89bhDT3bUF77bN6#T3#b #p7et3x6eeM#JJ#e #U6 dz#pp#  ##aa#i #71tsWu9tmP#H8#t ## 3# wo7sD7B1suh#Z6#s ##o4#o ##v3#m ##WW#e ##x1#o #i8nTW#H2#n ##u4#e ##44#  ##x4#f #x3rZr67rPL#r4# zN5oqpR4olI15oLJ46oa9#U1#o #U3m5wQ3mXp#17#m ##o3#  ##ee#t ##18#h #V8eoTO6e3g#33#e ##z5#  ##m7#p #Q2r1pw6rBX#G6#r #z4oep#e9#o #r4dmW99dCS#97#d ##zz#u #w4caR#II#c #I5tLxa4tRFY7tbu#e8#t #y9 4zm2 SK#w8#  ##FF#g ##O7#r #57o74Y2oiI#NN#o #X8uwh#CC#u #R3pTL32pVyh4piZ#p4# 6#P4#s ##,5# t# 8# k#SS#a ##w1#n #k6o3vB6o4a#D9#o #u1tNB#66#t #d4h4R#x3#h ##W5#e ##r8# my4 i2v8 UtK5 6H#a5#  #G8bi5J8bqW#xx#b ##II#l ##o4# J#k9#g ##bb#g ##NN#e ##M8#r #C8 br77 VYE8 p6#66#  #e7otXu4oui#o1# Q#NN#r ##R7#  ##I9#p #r8rfJ#m8#r #D4eOC#i4#e #e3s5N#Y4#s #F8exkN9eTs#oo#e #i8n9UJ3n2W#OO#n ##G7#t ##V7#e #99rgOo2rV9#bb#r ##,9# sZ8 uL#PP#  ##TT#o #j1ryXG9rI3#r8# vA8 eHL8 VF65 vO# 4# GD6aw5U6aP4N6agl#g7#a ##n3# 9u7yMKH7ypPv2yvF#O8#y ##w8#o ##B8#n ##e7# A#O2#  ##24#I ## 8# 1r8tvpi5tus#64#t #53hOaA3hB8A2hmr#h1# oo8i7z#BB#i #L5nxxv4nXL#M5#n ##BB#k #v7 NN#62#  ##S5#w ##i5#o #j1usMq4ucj#II#u ##cc#l ##P4#d #41 Q3r1 c3#A8#  ##44#b ##nn#e ##C6#  ##W8#i ##t4#n #i1tMmO8t1v#A8#t #U9eyC#e4# e74rOK#f7#r #76esVc8eoa66eqS#e1# W#ff#s ##t2# f#i9# 3F4nFBc9niJ#Y8#n ##uu#g #z3 4aM7 cW#D4#  #A6tgu16tCm#h8#t #l1oxQ#e2#o #Q4 2U#yy#  #J6thft6tF7m7trA#t2# 2S1aVqz1aaS#v8#a #P5lJqE6ljT#T7#l ##yy#k #N9 6yb6 2h#gg#  ##82#t ##b1#o #Z8;xeJ7;rw#d9#; ## 5# i#w8#J #L7u3XR4uG3#HH#u ##s4# y#yy#t ##vv#  ##h1#l #77i6Q#33#i ##k1# L#62#e #k9 Hc# 1# 8C8tHeV8tbM#71#t ##42#h #i7evJm8e1p43elB#e1# pa6 Sl#o1#  ##Y1#i #j9nF4#w7#n #P9tFW#GG#t ##W9#e #M3rvgg2r3C#t1#r #w2vMZ#b3#v #N1iNaM7idH#JJ#i #T7ecRj3edF#r5#e #U5wQNZ6wJu#L4#w #96s7Il3skY#WW#s ##I2#  #r9INiv3IwYN6I2e#MM#I ##’2# i#VV#m #J7 Wm#O7#  #S9dmaC5dbO#S1#d ##I7#o ##tt#i ##22#n ##g9# Vp3 wES5 bS#vv#  #m8aA694ao2#a7# Py3tabj2tId#D4#t ##57#  #q4wP5I1wTU#P9#w ##CC#w ##w9# uc4.ndU7.fs#X8#. #R8TxF#k5#T #r5eZ5#YY#e #X7a7M#X5#a ##FF#m ##rr#A #H1gLVf3gZ8u1gTh#48#g ##84#i #l4lqXf3l8V#l3#l ##e9# o#.5# 6#C9# g#o7# A#vv#m #B4.c6c6.lmu5.js#MM#. #T3 d5k4 8C28 aM#AA#  ## 5# Y#-4# M#pp#  #z9Ijwm3IvX#I2# 3e4 UVh6 4j#RR#  ##f8#w #E5orE#o2# N#kk#u #U6lwY#l6# D#aa#d ##L5#  #C9Nfo#z7#N ##O1# G#A1#T #f9 GB#A4#  #U5gHe#28#g ##y8#e #K4tIq95toC#j1#t #X9 1wR7 v8# 6# 2#a3#u ##X7#p #H4 NW88 RO#ZZ#  ##p1#a ##t7# V#E5#  #D31g8#q7#1 ##11# d#v9#: #330u4#09# 9#r2#0 #C6 a7#S2#  #K3aINI7aTG#B9#a ##ss#n ##d9# Kl2 jj#q3#  ##V3#m ##rr#i #d1suCq5sgv#Z2#s #z4say#b9#s #k3 hwv1 7T# 1# bH5h27#H1#h #G3aUS#a6# Ki4lAo#l4# 6#f1# wT2 Dat4 a1#26#  ##I6#a ##55#  #57deoK2d7x#l3#d #d9anEw7aj1#gg#a #I6yCp#y1# P# 4# 7#L4#o ##e8#f #L2 dXW2 QP#T7#  ##i6# k#n8# h#y4#f #E8otqV9owW#o8# N#v8#r ##y1#m #R9a2xW8aQ6A2aPk#R4#a ##HH#t #n1iecK7iq6#c9#i ##o9# 3#n5# H#G6#  ##UU#j ##56#u #R2sOgQ4s7M#TT#s ##t3# 327 DA73 dn# 4# to9smJK8sGy#s3# XE4o3Af6ohw#o4# U16 P3N3 NG#t9#  ##I3# IX7 Cq66 L2#qq#  ##vv#c ##r2#o ##u2# yG2lBwD5l98#l9# R79droS8dMt#I5#d #69 VNa9 Lg# 8# w#s8# H#t8#l ##e8# ke8ehDd5e3tz9eJS#59#e #g5pzCO9pBE#p2# 8#61#. ##a8#  #11TeqK6TTtE5TXF#AA#T #U9hAx#55#h #v7iIXq1iFvK9iA1#I5#i ##q2#s #F5 LpN9 H1l4 3W# 7# t#84#i ##66#s #41 RA# 8# n#SS#’ #41soPv4shU#mm#s #A1 WY#D2#  #T2gzrS7gjN#Q7#g ##v3#o #q1ics#i5# Hz6nBRk5nqV#cc#n ##g1# q# 5# 5#88#t ##B8#o ## 7# d68be892bfZ#b5# J#l7#e ##KK#  #86hkA#hh#h ##G6#a #z7rXUP8ryQN2rEM#B4#r ##d8# Y#O9#, #32 37B7 jU#x8#  #C6bc7#ll#b #29umI13utwJ2uuh#u7# j#MM#t #d8 1re7 2C# 5# J#I5# D#a4#  ##p4# Z#E2#r ##86#o ##E7#m ##qq#i #W1sOgk3sUGA5skK#J8#s ##e9# MU2 iL#y9#  ##72#t ##77#o #b5 gP#qq#  ##g3# T#e1#i ##v3# D#A1#e #73 CzS4 WY#N6#  ##i5# Dw3t1Z#t1# Q#I4#  ##q7#a ##ee#  ##g8# QV3obc#jj#o ##xx#o ##d4# R#o5#  #I7tsuB1tOo#T1#t #x1rKXl6rRmj2rVm#ll#r ##Z2#y ##II#. #n3 kId7 YQl1 Cw#jj#  #67 O5# 2# C#-9# n# 1# Rz3I7VN8Ix5#II#I ## 4# SC5wZn#t1#w ##a1#o #N7uH7#u8# ea7l8Jz4lOqz8lzc#ii#l #D3dMDY6doj#AA#d ##Z2#  ##h2# t#a9# l#V3#n ##d1# W#44#  ##Y1#o ##n3#u ##t1# p# 3# N#c4# U#rr#u #a5sRD#Z5#s #M3tJQW7tNw#A4#t #44oV3#q4#o #y2mxe#l4#m ##J1#i #Q7z7O#n3#z #q3e2Am1e6a32eGx#D1#e #86dg2s8doA#d1# Q51 wX#QQ#  #U4cJFR3ceA#ll#c #13oVwH7o1c#M5#o #o2pEFL2p3q#p8# m#u8#i #a4eEQ88ewqR9elB#58#e #x1s9u#18#s #N2 XA44 Kfx1 7b#G8#  ##o6# L#f7#f ##y5#  ##ZZ#T #F6hXa#t1#h ##e6# JT5 RQ#j3#  ##r8# OV8eaJo3ewe#Q5#e #C5gm5k5gNU#g5# uY3utMH9uiz#PP#u ##l1# RQ8alyk9ayYs3aUG#18#a ##TT#t #z3onz#EE#o #P9rGAF5r3Oz9riv#TT#r #u7 La73 vN#DD#  ##s7#2 ##x6#0 ##E2#0 ##P5#5 #12 ZaG2 gb# 8# 956(36#(1# L43t6Y#t5# X#o1# aS7 hqk6 5r#Z2#  ##LL#b #f2evN#e4# h#LL#  ##a1# f#LL#n ##WW#n #R6oyRp2oZV#k4#o #m5uwjP1uVIr7ukZ#55#u #a3nN661nom#O8#n #H9cIpi1co3#O4#c ##e8# Iv5dEuL8d7c#d3# z#55#  #O1aBS99aw4#B4#a #L5tvt68tRYF3tqe#t4# G#z6#  #79TlX79TJoY8TfH#27#T ##k1#e ##H1#c ##86#h ##-5# C#zz#E ##K3#d ##x8#  #A7EK7#E8# Wz2uezU8utC#u4# k#r4# A#xx#o ##c2#p #c3ePYd9ez7#D8#e ##bb#) ##Y8#  #B2wDng5w8a#w5# Q#81#h #H1iYUK9iiSW1i8r#j9#i #34crqs8csz#M8#c ##LL#h #s3 xP15 qx#n2#  ##D3#w ##c7#i #79lGcS5lzE#xx#l ##c3#l ##n8#  ##U2#b ##q5#e #43 oi#s1#  #q3aeI#V2#a ## 8# pZ3s1Jp1sXZ#99#s #X4pBk#p6# tf5e9O#M9#e #o5cjx#24#c ##AA#i ##U9#a #G6l6kp4lQd#l3# R#u6#  ##dd#P #Q5DMPz6DPF#qq#D #e7C2I#B8#C #d5 ABz6 k5# 7# C#c6#E ##H3#d #72idH#47#i ##N9#t #o6izN#L2#i #S7oSZJ8o1PU4ojy#rr#o ##LL#n #I8 XW#b1#  #F3weD#77#w #u3idzG1iUB#B1#i ##t4# g#ll#h #Q4 F9r4 tp#X4#  ##f5# wd1e2XY3ebdN4eEhY7eb2#Q4#e ##d4#a ##t6# 8#m4#u ##r6# mM2eacU8eVvN9eCW86eLi#X7#e #J2sDcK2seCC9s2x#72#s ##BB#, #r6 AM#65#  #26i8sv5ioL#C8#i ##51#c #a7oCV#EE#o #t8nRh#R4#n ##F6#s ## 7# 9#t1#a #28nxI#n1# b#21#d #t4 RY# 4# L#i7# k#l9#n ##f1# d#m1#o #t3rBa#r1# YS2m6l#Q8#m #l6a7rb7aqy#a8# H#91#t ##VV#i #N9osx35oKK#t1#o #K3n3E#65#n #q5 gfu5 ud#55#  ##y5#r ##f5#e #88lYAc8lml#FF#l ##a4# J#t6# 9#i5# kg1nZn#m4#n #z6giQ#ww#g #I8 Vtn7 ue#98#  #z8tuyk5tOX#w5#t #j3ouxV9oE7#o2# Ev8 33#C2#  #h8tGOe6ttZ#C7#t #E9hgjD8hH2#m4#h #D9eOS#ZZ#e #S2 2b53 Wcw4 he83 MP#C5#  ##P5# s72DZTx6DxH#c6#D #H5CXq#n1#C #J3 Z6I5 rs#xx#  #H7aGq#a3# 9e5nqWn3n5J#n1# i36dCay3dFk#yy#d #39 X7z3 UJQ8 Kk#85#  ##t8# 9M2hgT#l6#h ##R1#e ##v1#  ##99#b ##l2# S#c7#o ##oo#g #E5gXzp4g7r#g5# z#e9# z#r3# n37 uIC9 BfN4 6X#79#  #y5cZ2V5cL7p7cUU#uu#c ##ii#o #M9mOCo2mXb#O4#m #q7mzBF1m8ej3ma1#94#m #S1u4x92ug5#s2#u #o5nxLK6n3P#n9# F#YY#i ##c4#t #d8y55V3ySPE1ypv#d4#y #y3.6T#AA#. #k4 vZW6 5Y#y6#  #b5-CXW3-yo#95#- ##E3#  ##z5#I #q8 ZcV9 uf#77#  ##r2#w ##i1#o #72uSGz4uJL#U3#u ##64#l ##T4#d #92 zMY3 dh#kk#  #o3Nta#22#N ##J7#O ##T7# q# 8# 1k7cFTc6cxG#zz#c ##84#h ##ss#a ##UU#r #m2gu8#g3# A#e7# Jv2 Mgc6 zCY6 Vd#SS#  ##a7# wo5nlZ#m9#n #J5yz3#y6# Jz5 v8l7 ddS2 oh#ww#  ##p5#k #29iUb#vv#i ##s5#n ##86#d ##K6#  #b6osAA2ogO#BB#o #M9f51x3fWT#N3#f ##f5#  ##cc#m #96ohGQ5oAJM7o3q#o3# 9#n8# 3R9eoqK9et2#cc#e ##k4#y #p3 93#c6#  #K1fWg#OO#f #M1oane6oykr6oxj#k4#o ##r6# Ji9 zU#Q7#  ##aa#i ##y4#t ##O2#. #D1 er# 5# L#ll#t #23hbkn4hwaK8hyd#x9#h #O8iOz#s8#i #z7sAUR7sum#f7#s ## 4# S#N3#i ##II#s ##M8#  ##n3#a #k7 aot3 C3#l9#  ##ll#p #F3ucg#66#u #t5rHAg9rdi#r4# V#c6#e #B2 SB81 ve#mm#  ##88#c #i8oH8#o1# 6s7mAnI7mqMB6mmuj1mFy#t3#m #I7mbKQ8mh7#k3#m #g3uZJ#d7#u #T7nBgh7n7V#18#n #H5i1U16iDP#G6#i #J7tnJ#t2# t#p5#y ##VV#  #N9pQGB6pqN#p2# U#f4#r ##k3#o ##cc#d ##NN#u ##c9# D#H7#t ##n8#, #o7 Ne#J4#  #Y5aV3#a7# V#A6#n #w8d4c#z1#d #M5 d9X4 QQ# 8# 5#pp#w #D5iZqX2ib6#u7#i #F3ls8f7ldj#29#l #o9lpq#48#l #L5 VI#O9#  #q4sknQ7sm3#s6# Rv1tSm#l4#t ##a6# p75y6q#B1#y ## 9# o35tJa#A9#t ##D9#h ##S1#a #B6t7Rm5tM8#t3# A85 7Lp3 7k#P7#  #F8w5KI5wwz#S9#w #w1aRhu6aiUT6apC#63#a ##ff#y #X2.tzJ3.JK#.5# L#u6#  ##h7#  #94-fn#EE#- #y5 KJ#j8#  #t1IZN#m7#I #52f5Q#c9#f #G8 ZIT9 Hqs6 ynV7 RD#I2#  ##Q5#A ##x4#s #A5kW282kkr#s4#k ##BB#e ##d4# 1#x4#  #I6-Qv#K2#- #c6 CMM4 m3# 5# jS6InWK7IzL#jj#I ##I7#’ #Z3l76b7lHI#WW#l #d2lRHD4lyCv5liS#l8# 7#zz#  ##c2#d ##W7#o #G5 mC#q8#  #r5aTyT8amP#aa#a ##86#  #u9f9cN8fUN#AA#f #s5r7m79rdg#r8#r #r8eFRP5eYF#e1# 3#P9#e ##e7#  #D1sBsZ6sbLf6sF8#71#s ##uu#e #G6sKfM2ssq#s5# g#s5# Z#77#i #72oBK#u5#o #86nA3#l5#n #l2 i3#hh#  #h2oS9#LL#o #S9nZA27nhG#O1#n #J7 o6u3 KL#K4#  ##r3#U #K5niM#m2#n ##x5#i #u3tFv#h7#t #G9 O3#Z9#  #43T5G#J6#T #e1e39e7eZj#MM#e #44s7Ug2seM#c6#s #m9tC238tuD#v9#t #87i3T79i5x#i1# X#AA#n ##21#g ##13#, ##E1#  ##Q6#o ##78#r ##D4#  ##oo#b ##d7#a #d6sns#k4#s #Q9iJb#88#i ##15#c #L8 9BH5 2q#t2#  #G1o8t#O1#o #l3rSod3rz6#23#r ##M8#  #n1auzX5aYi#66#a #i3dB7#K1#d ##XX#v #v3a6IR8aqy#h2#a ##n5# Bv7cC8#c6# 9#MM#e #g5dvO#d5# 8#H5#  #r9RZQ#L2#R ##e6# 5W6gbKZ7gev#mm#g ##u1# ha2lQQ#BB#l #G7ak6#cc#a #52rwK#R7#r ## 8# 4y4Eijw2E4lv1Ekc#E3# C#x7# t#t7#p #w1rdiG9rF995rBP#44#r #S5e98q7eYi#e1#e ##h8#s #L9s59#s6# 1#U3#i #A2ocIO4ov9#DD#o ##n5# G#a3#s #H2 2NW1 dWq2 Wm#F3#  #54wJV#77#w ##i2# N#hh#t ##oo#h #78 mOQ7 z7# 4# G#jj#. ##N7# Jc9ETe#oo#E ##T4# M41.DcG4.fM#mm#. #33 ot#86#  #o5-i5K9-58j9-PY#-1# s#24#  #i5A6CL8ARWO9AxG#f1#A ##l2#g #R7asD#P8#a #q2iWso6iUt#f7#i #26n63b9ntz#GG#n #i9 Ln#66#  ##OO#- #y4 K626 1r#hh#  #H7NXO#N5# TH3o63T7oAh#o7# 4v1 VFA9 gc#g7#  ##pp#m #U9oEsS7ogU#D7#o ##l3#n #K4eRNv5eOp#XX#e #S6yDM#LL#y #E5 Hz#H8#  ##c8# 4#M3#h ##BB#a #h8r2VE9rjE73rx527riC#p9#r #D6gTJ#R6#g ##zz#e ##PP#d ##55#! ## 1# p63 7n#bb#  #U2-LJ#S7#- ##B5#  ##A8# qK6sGZ#OO#s #19 s3N8 Rf#e6#  ##M3#a #a9neJE5ngZ#H9#n ## 1# Ih2MCj#62#M ##pp#V ##WW#P ##76#  ##XX#w #n3hODA4hXy#bb#h ##o3# B# 8# z#77#p #q3rZP#R5#r ##U9#o #99bbA#M4#b ##F3#a ##x7#b #d7liY#F2#l #R1yd2#y9# 4F1 3FN4 dSP3 2G#t2#  #16wSi95wwdq9wuL#Z7#w ##o6# c#n7# Ag3’RR#n6#’ ##w9#t ##II#  ##48#b #P4eUI68eId#BB#e ##SS#  #A3aDJ#a8# 5#b1#b ##l1# 7#e9# ca5 2FU6 mO#77#  #J5tfAG2tFf#pp#t #O1o5W#vv#o ## 8# F49atqK7aAN#31#a #72f8Ie4faLB3f8S#f9# M#VV#f #G8owpK3o3q#a7#o ##D3#r #X2dqd#R8#d ##V7#  ##E7#g #X8e8Tx2esL#nn#e ##t9# 3#t3# go5i7Q#D6#i #e7nazu2nNb#N4#n #c6g4p#R9#g ##Z5#  ##jj#h #z5iscH9iWa#i7# I#32#m ##s5# 5#v7#e #75lrgf3lnz#l3# I#h1#f ## 4# yI5trvH8t1Df1t9j#t1# o#ss#o #s7 XwK9 tW98 Mm#x9#  #U7t8Cb3t8M#QQ#t ##87#h #u7eIf#Y8#e ##O1#  #68Mh4#kk#M #14Vj7h4VcA#V8# sm2Pct#P9# l#pp#  ##l5#s #a5u1Bm9ubpk3uoU#GG#u #59mwL#x2#m #k4mxwC9mqc#22#m ##bb#i #G8t2u43twE#t9# S75 qjk7 mB#XX#  ##ZZ#t #p5hdeh4hTKH9hwx#h8# WP2iiqj9iH3#Z3#i #R8sYxU4slyj1sQcC9sR8#SS#s #T9 MvM7 u8#h8#  #r1y5v#98#y ##W2#e ##f9#a #l9rBsD2rKE#y5#r #75 bVA5 QU# 9# 9#66#( #m3n1Uy3ntzW9nCo#KK#n ##g4#e ##v6# O#AA#e ##C8#r ## 3# DJ9b39#b6# g#e4# M#j8#e #g4nUL#n9# 6j6 V8X5 8s#MM#  ##n7#t ##j5#o ##pp#  ##MM#o #r6nWZb8n2Y#K6#n #j7eQOt5eYA18er2#k5#e #t8)VUd5)UGJ2)4268)Z6#YY#) ##j9#, #b9 yu# 8# i#t2# YT1hNh#h9# nR5ipKB1igO#HH#i #e6sCnY1sCT#55#s ##K1#  #43wIx91wsQg4wAI#oo#w #12oUhS6oek#cc#o ##v1#u #E3l4T#l7# R37dMSC8do6#d2# d#A9#  #s9bL9#oo#b ##e7# D#n2#  ##H5#a ##ff#n ## 6# z#a3# Y#W4#w ##e1# aG8sY642sYvh4sFF#s5# s#L6#o ##c5#m #a3eEBZ9e1I#99#e ##K3#  ##P4#p #G3rDqT7rc7#r2# 3j3ewK#r9#e #d6ssH36sswF5sJi#D1#s ##e8# dI7nGbX1n8K#59#n ##t5# b#GG#  ##97#t ##EE#o #Q4 2pj3 Kw#dd#  ##Q4#s ##c3#h ##o1# en5wFnS5wWp#SS#w ##f4#  #f3y9ib1yuv#y5# pu7oPNX4oVc#o8# n#J9#u #95rir78rR4h4rig#52#r #q9 Bdx2 giB5 7g# 1# 7#a2# zJ4pwN#p5# gT4ptZz3p9I#FF#p #W3rzwn9r3yR5rUH#t9#r ##e1# TS5cOH#c8# 9g5iwbh8iJb#M5#i ##a3# WL9tiLK8tM3#mm#t ##II#i #m1olM#c7#o ##W9#n ##h2#. #L4 nx#GG#  #m3 hU# 5# Z#m9#- ##A2#  ##N2#F ##i9# u#n7# 2#u7#a #v4loO84lDG#cc#l ##61#l #81y2xP9yEdJ7yCy#ww#y #F8,nVy8,Gk#N6#, ##C6#  ##D1#f #74riS#b6#r ##d9#i #n9eCpb6eU1#C4#e #n4num#n8# oM1dKOB7dJp#d3# be4sQF37sYEt1stq#48#s #l6,fV#g4#, #G2 jiP4 qkn7 v8#JJ#  #r2Iinc2I2so1Ibm#22#I ##N4#  ##55#w #F7inb15iJm#66#i ##l6# I#kk#l #D7 NNv6 o3#I4#  #p5wMum9wON#I2#w #65rKQI4rMs#r8# S#55#i #C9tiuf3tadm4tklP9t1I#cc#t ##qq#e ##77#  ##q7#a ##E1#  ##GG#b #h9iXNW8iA4#i7# F#g2# RI8 KTA2 bT#z8#  ##b4# Pl1lSGY6lJh#WW#l ##m6#o #B6gzL68g2F#P6#g ##ii#  ##SS#p #c6oxx#V9#o #25sto#65#s ##P7#t #p7 mua3 qF# 1# K#xx#o ##n8# 5C9 ki#MM#  ##cc#m #d4yVa#W4#y ##JJ#  #W6bfig7b7T#B5#b #w5l74F3lwt#o2#l ##EE#o #B5g4WK2gV3#88#g #q9 KX89 VrY2 jf#LL#  #z7wGQO4wMY#w6# z#o4#i ##w9#t #u6hnW#EE#h #Q3 pOj1 wU# 2# B#S5#o #L7n7VL9nvw#n6# ao5eRM#e2# F#88#  #q6hsi25hlK#h2# tb7ue4L9uQXL1u9R#u2# B#l6#g #M9ermK2eBY#e9# 2#11#  ##X8#s #h4izUv5i1qg6icu#LL#i ##13#n ##78#g ##T1#l ##p4#e #A4 uQ96 Qi#CC#  ##Z1#s #z2e68#E2#e #v3nMS22nco#f5#n ##84#t #J3eCF44evL#e5# G#U6#n #62csTX1cFo#U8#c #G9e5NU6eev#e4# M#ii#: #k9 s8T6 FK# 5# k#s7#  #I1 3V# 6# 4C3RS9#R5# I#o9# dY9rbwV3r6II3r9N#g1#r #d5ylYj3yHqh2y19#o9#y #p9 g946 e3#g8#  #E9Wtb#cc#W ##L2#a ##LL#s ##aa#  ##f4#I ##n4# Ia6vxWN5v95#W7#v #t9isb#hh#i #b5tjGe9tEe#S1#t #94eS2V9eTU#w3#e #X5dZ2A5dTs#f2#d ##77#! #H1 cCT5 nF#u7#  ##(8# Iq8wPv#b3#w #T5iJL#MM#i ##o4#n #L9kXH#ff#k #e8)wf34)Bb#T5#) ##s8#  #O3 DD# 6# sh2 Oh#DD#  ##C1#T ##i7# o#kk#m #66eX6#KK#e #46 KCa8 26#L2#  #f7feq63fGL#gg#f #V9oINk9osDi9omj#Y3#o #i8rj8#78#r #q7 GX64 xhA5 cA51 lp#M7#  ##G3#a #W1 hwf5 e4#35#  ##h9#s ##O6#m #i5acvV1a2i#h4#a ##77#l ##y8#l #d9 ItC3 OK# 6# N51eit#42#e #41x64Z6xR4L5xfB#x4# ZK5pBx#g9#p ##GG#e #Q5r1Qz8rFV#dd#r #h5iI1L6ioZ#X4#i ##m7# I64eRjd7efx#pp#e ##P8#n #C6tRxM3tHM#t2# x95!cv#kk#! ##98#  #f2-ZYq3-vn#-7# AR9-S1d1-LiO7-nM#29#- ##99#- ##-4# i45-m3R6-IBN5-NB#a1#- ##-4# f#-4# d#b6#- ##-1# P34-qNm6-Di88-6O#77#- ##VV#- ##55#- #n3-OAr4-qW#I9#- ##-1# cC8-Grw9-uzP6-5eX5-aH#-6# W#93#- #D3-mT#BB#- ##29#- #w1-mrQ1-rB#oo#- #w7-9H#-3# q#M3#- #V8-OB#-7# 1#-2# H#ZZ#- #U8-uEq9-u5Y2-2c#-2# 3#g5#- #i1-KBP3-pF#-9# t#55#- #J2-b2#z9#- #j3 3j# 8# l#w5#T #92hIbc9hO2U3h1na2hkJ#B4#h #T8eNFQ6eqf#qq#e ##aa#  ##e5# N#F9#n ##58#c ##J6#r #E7yg3y2y33#y5# 7#28#p #54tLHv4tRg95tYJ#t6# Y#e4# D#d4# 4#vv#  #v4tdU#o7#t #J4ejA#e2# 9#q3#x #o9tjYH8tOI#UU#t #h7 Isn6 ca#HH#  #Y8aEGI2aSI#QQ#a ##c3# S#A9#t ##G8#u ##d6#a ##F5#l ##l6# u#A7#y #v2 BXg2 Be# 9# P28cLSM3cfe#D1#c ##Q2#o ##n6# v#D1#t ##yy#a #g6iGn#nn#i #u6nGH#T5#n #R6ssIu3stY#GG#s ##OO#  #l7aiFC5aLI#m2#a ##s6#n ##K6#o ##jj#t #43hOU#34#h ##e8# Ld2rkZ#r4# 8e8 aju6 5p# 8# GM9m1B#e1#m #e9eP6m1eRVP3ecE#e1# 923sBG#oo#s #c4sPuQ6syN#13#s ##49#a ##h5#g ##t9#e #b2 B4O1 B9#b6#  ##K5#i #Z8n8iX9nrPE2nYK#n2# ns8svMC1sgT#97#s #t8ii2e4iwC#ff#i #c2dMND6dTP#d7# 8Y3eYBQ5e1f#qq#e ##G2#  #I5iBP#ll#i #V9tl8#t3# PI9.PbO7.CRf3.Gj#F9#. ##p8#  #Y3Y2cH2Y9G#r9#Y ##j8#o #R9ukv#ZZ#u ##A2#  ##d7# J#jj#i #M4dpzL5dBF#d4# s81n3WE8n8l#rr#n ##j6#’ #B7t3rh6toe#M8#t ##u1#  #Q1smMG5stc#RR#s ##e2# I#v1#e ##hh#  #I6i6w#22#i ##MM#t ##33#  ##b3# GI4eqpQ4eY2#k8#e #D1cRT#F2#c ##Y2#a ##24#u #s4snEe1sQX#C1#s #d7eRg17e2r#s3#e ## 4# Rh6tbcH3tKc#MM#t #q7hiT#Q8#h #B5il2#p9#i ##N6#s ##I8#  #q1mKgx3m9p99mlj#n7#m ##f9#e ##s4# m#s4# k#E1#a ##99#g ##N2#e ##Z2#  #24ior#16#i #u9sjM#ee#s #78 pq# 4# 3#dd#e #l4nnz#HH#n #Q4c9nL6cPwy5cqY#E2#c ##AA#r ##c1#y #h9pYPq1pwe#p2# Y#o4#t #O5e82h3ePW#T1#e ##d6# dx6 TN#nn#  #O9(Obn6(MB#i8#( ##w9# aH1eD4#66#e #R4lv8q9lRi#l5# F#y6#l ##ee#, #o3 zlh6 uc# 5# rM7h7Jc6hIR#44#h ##i1# Pb5djMR3dW4c5dbm#LL#d ##d6# nE1emSX4e8U#e6# V#33#n #l7 D8# 6# cJ2iVg63iBB#j7#i ##V5#s #I4 hz#h9#  ##99#a ## 3# tm7bJk#b5# NC6eAYL3eSb#TT#e ##B2#t ##m9#t #b9enZ61ex4K1exH#93#e ##r1# c#C8#  ##M8#n ##a8# H#Z4#m #d2ezFc9elFX3ePAE5ews#g3#e #R7)A2#X2#) ##i3#  ##u4# sf5sKux8s4P#s2# p#uu#i #O2non#Z7#n #q5gav#W1#g ##J1#  ##a9# lD2 Nk#Y7#  ##U8#l #P5i8gN4iLx#y7#i ##99#g ##YY#h #O4t5it3tijn4txV#zz#t #b3lBLq5lwj#l3# Zx5ytoP5ymV#G9#y #q4 nd24 mR# 9# o#58#d #c7iMx#NN#i ##kk#f #m1fwB#BB#f #v2ekj#R6#e ##k3#r #d3eLRt9eF1#e1# Ug7nes71ncwg3nWAX5nL6#DD#n ##66#t #V6 4JN3 gU#EE#  #Z9rMUz8r7s#HH#r ##hh#u #o9llf38lIw#l8# X13ep6p6eiW#72#e ## 4# a#s9# u#e2# CP6tWf#j5#t #S2.T6#b6#. ##dd#  #X4IhK#43#I ##H4#n ## 3# 2o1fsff8f8oI7fl4#h1#f #S6aGQ#a2# pY1cBP#l2#c #v1tGi#T6#t #b9 UMS5 wH#q6#  ##V4#- ## 6# kk1ior#uu#i #d4tdyu8tGf#C3#t #L6’boI5’HU#24#’ ##s6#s #95 nX#88#  #S3aWfO4aTf#a2# 8#66#l #k6myE#C6#m ##P1#o ##s2# H#77#t #51 5B# 4# 8#i4# s#w9#d ##c9#e ##n7# 4#t2# W#E6#i #V5c8xF5cB5#a1#c ##a1# 6F5lRW27l1e#ff#l ##j1#  ##t6#t #H4ocnF3ogi#o3# 7V5 U459 Is# 7# 6U5tOlP8tHV#b9#t ##h4# 1#77#e ## 1# O#k7#r #x4u4H#31#u ##66#l #Y6ewYC2enj#e5# 8r5 aW68 Y8# 4# lS9spv55sL7#s9# S#e1# qP2tYV#t7# bY7 p5#OO#  ##B3#o #f7f1k17fvJ#vv#f #X8 2d#MM#  ##12#t ##U8#h #Q8eBD#e2# k#ii#  #n6o5HT9o2z#E6#o ##99#r #98i8Q#i1# N#K2#g ##s1#i ##a6#n ##NN#a #u3lLen7l7v#Z4#l ##Y4#  ##LL#m ##rr#e ##KK#s ##N7#s ##FF#a ##g9# jr2ebm#e4# n#H5#, ##K4#  ##vv#o ##n3# E#Q1#l ##CC#y #A5 fpw6 Oq# 5# fe1i2u46iIe#s4#i #c9nHUP1nh7t8nAQ#n2# 4K6sH1R6sA6#u1#s ##PP#t #Y4ezj#D5#e ##a4# PM6d95#I8#d #V7 5gw9 5z#o2#  #13oeYb2o1E#x2#o ##xx#f ## 8# iI7tWOo8tUkv8t47b3tzR#t8# z51hRE#B3#h #l3eyCb6eh1#e4# S39 2AM3 WH#NN#  #S4’goJ2’8X#r6#’ #o2#TvK8#A8Q4#QTX5#rB#82## ##’2# 5Z4 gyW9 wHF5 QX#e8#  ##Z5#s #H2i3Q#f2#i ##b5#g #q3nOSa1nvw#WW#n ##L5#, #t3 RSv7 tw#bb#  ##t8# YY8hnE#93#h #K7e3R#65#e ##77#  #O7’5mr9’vZ#33#’ ##|7# nL8’jBP8’28#’4# 2f6 c4C2 u3# 3# Sz6s2y#s7# UU9iU446i3X#i5# P94gHhy9gDx#W1#g ##TT#n #99 t3Q5 IC#S7#  ##n8#i #y7s3gw3sP282sNl#pp#s #z7 dZ# 2# e#u1# h#m6#s #j6enj#51#e #89dyKq5dDe#59#d ##ii#  #M3bboU9bznI5bd6#b6#b #J7epA#e7# aa9tP8k6tVU#o8#t ##K3#w ##F4#e #13eVI#63#e ##n3# J#ff#  #O9ePXm8ePR#E6#e #W3aBxD3aDC#OO#a ##vv#c #P3hSj17hIc#b9#h ##nn#  ##E5#c ##bb#h #o7aP1#N1#a ##K1#r ##W6#a ##i7#c ##c9#t ##e1# 7#G2#r ##s5#. #J2 p4I5 Di#77#  #o7 1i# 7# n34SXq#66#S ##yy#o ##,3# ML2 F3#k9#  #91tLs#jj#t #z4olcE7omA#o4# c#ee#  #s5sPsc3s4I#R2#s #K7ePQG1eAAJ9edU#e8# h#e8# nu1 Z3o5 69#33#  ##R6#t #y6hTV88hlB#Q2#h #k9efmo5eWC#k5#e ## 8# H#AA#s ##44#e #41cN7#c5# m#hh#o #b6nTIW3nI193nvC#ll#n ##TT#d ## 5# J#o2#m #o3eSn#e6# W#38#s #n5sFC53sKE57sfL#M6#s #y5aQ3#ll#a #61g1d#g3# I#R2#e ##L7#  ##(4# q#K9#o ##Z5#n #F7lqcT4lHS37lZR#l4#l ##m7#y #d2 x5#16#  ##73#i #T2f7i#dd#f ##n2#  #35ylP#XX#y ##F1#o #T1udh92uyU#aa#u #o8’wi61’o4#yy#’ ##r1# MY3e3Qm1eYd#O1#e #54 5ke4 i9#d6#  ##66#c #Q8uwCY8uxJ#O5#u #Y7r3t#19#r ##nn#i #v2ojmq3oTP#98#o ##N6#u ##g2#s ##pp#  #X2eEn#e7# 4#hh#n ##11#o ##u4# 9M2gpAV4gAx#g9# P#h1# r#)6# Mz8 YPU3 Yo# 3# i#H6#d #73oAXz8oNK#XX#o ## 9# sZ8tCbe2tys#51#t ##r8#h ##e8# 275 1Qj9 xo#11#  ##f5# b#o6# w#j1#l #T2lDu#O1#l #Z2opK#pp#o ##D3#w ##f8#i ##g8#n #92gyXI5gEG#66#g #B5:NGY9:HU#16#: ##c3#  ##j1#I #Z1nFN#73#n ##zz#  ##t7# P#U5#h ##RR#e #W5 uO#z1#  ##44#r #S3es7#y3#e #K3g8L#xx#g #i7uKaC7uI7#k7#u ##l9# w72a94S5aCz#ee#a #48rRT#p3#r #z7 ELw4 wo# 7# n#RR#e #D5xhx#m1#x #16ptV#V3#p #k9rIf#65#r #m7eEIL7eSJ#e4# 9#x7#s #g6sNVH5sPp#s5# S35iMpA6i8Z#a1#i #J6oZxn1oF4#o1# Gx2nkK#zz#n ##,1# Hn8 76b6 vt#j1#  ##r6# LI8ej9W3eduZ9epw#e2# x#jj#p #81lv8#YY#l ##a9# bR9cTo#D3#c ##l4#e #a9 67m7 VVl2 VC#N7#  ##rr#t ##XX#h ##e7# Ld1 Qai9 xg#QQ#  ##57#’ ##L3## ##s1#’ #N8 Ec# 9# VY4cK3#c5# it8hUT#T8#h ##L7#a #A9rNIr9rba#S1#r #F9anK#a2# V#99#c ##I5#t ##w4#e #36rTiu4ro6#TT#r ## 7# dn3wMI#w3# lM4iouS4iKt#nn#i #93t7q#m8#t #V4h94F2hEZ#h2# i93 ITn6 ro#nn#  ##f7#’ ##V4#| ##41#’ ##kk#. #98 MEk5 qdw9 XB#F6#  #Q4TKS#O7#T #r1ht4#E8#h #K9ej3E1e1IF5ePwV7eZS#V6#e #z3rPFV2rLb#r3# T#L5#e #42 nbH7 mC#U7#  ##s3# k#o3#h #X6odzc6oad#W1#o #34uB8i5uvY#F1#u #T5lOCX8l8ua9lBh#uu#l ##H6#d ## 2# 2#A1#b #P6egAD6eCj#OO#e ##55#  ##m9#t ##E9#w ##S9#o #r6 TA#E3#  ##O3#o #91fuU#f5# Kb9 o6l6 ZB#a5#  ##t8# Q#h9# F25oIEE2oFFC8oXz#TT#o #P7sN5z2sTc53sn4#s2# r#e1# yZ2 MQ#K7#  ##E5#t #D4o5x15oxj#DD#o ##DD#  #c4rPTz7rCE#i1#r #W6eT2L4eDcp2eZo#44#e #o2pCbV9pjb#GG#p #H1l4f#q2#l ##j1#a ##c7# J#e8# 9#c1#  #i7iRwZ1ihs#a5#i #T4fc4#H5#f #Q1 NQ#H7#  #Q1yoVI2yvXD4yHm#y5# OE3oBZ31ovr#HH#o #Z7uf4#99#u #W6’JG72’T4A9’Hs#V4#’ #46vvg#v1# c#S3#e ##I4#  ##b1# d#rr#e ##e7# Ir2n52#r1#n ##66#  #I4u9Vt8uQ7#M9#u #Y8su546slo#81#s #57ixoz7irr#a2#i #Q2nplA4nwV#mm#n ##V1#g #T5 lzE8 3l#c5#  ##I7#t #E2hndj1h6d#e5#h ##11#e ##u7#  #F1skhw4sB8#B9#s ##w8#a #B2mWz#u2#m #47e71#R9#e ## 6# 2#c2#e #v8x2is8xV6R3xeg#x3# oV5p1Au6p3P#B9#p #92rBQA6ruN#OO#r ##g6#e #E2sb9T1sj7A2sIi#35#s #s1s54X7sDF#n9#s #46ieu73iFA#BB#i #61ogDj6ozN68oIr#I4#o ##39#n ##a6#  #H6ap2L8awS#z6#a #O6sxn#v3#s #l9 IAU3 KmG2 QX#r3#  #d8uLY#N2#u ##s9# O94emig7eJQ83ews#55#e #J2dla#d5#d #m8 hmM2 ep# 5# 6#OO#b #s6yDb61yQy#V3#y #d1 ew68 E3#n8#  ##UU#t #e2hKRf6hVL#h6#h #O7etX#72#e #r7 WGt5 uap6 rD#k8#  ##a6# LJ2ugms8u7Ej6uEI#91#u ##t4# 1#C1#h ##F4#o #Z5rCti3rzbv2rqA#T7#r ## 1# N#k9#o ##53#f ##DD#  #D8t4pn9tGv#Q2#t #N4hm723hh628hHs#h6# 4J8e48q7e6Z#e7# C#a6#  ##d4#m #e6e1d#31#e ##p9#s ##II#s #C8axrU9a2qh1ann#a8# 1#X7#g #x2eHPE2euG#B9#e ##aa#. ##uu#  #m4 Uyb1 g9# 4# LG7NJS#H9#N ##73#o #S7twO#uu#t ##e7# l#:3# J#T3#  ## 8# qH7-S8T3-Spc9-x5#SS#- ##t9#- ##JJ#- ##b8#- #h2-m3#b7#- ##U5#  ##hh#I #J6fVyY4fnD#55#f #U9 OV# 2# 4R6yPYH5y9P#C5#y ##k2#o ##66#u #g9’EV#G8#’ #q1rT7f6rjt#W8#r #a5eIxl3e9J#11#e ## 7# FF7u9Wj9u7Tx5uFgR4uFt#f3#u ##s5# 1#i8# n#VV#n #a5gjKx7g82J9g8w#VV#g #b4 o5b9 Jp# 4# t#k2#t #c8ho163hJJE2hn7#i7#h ##v4#e #X4 hZK1 is#k9#  #o4Dt529D8Z#PP#D ##h5#o #L7wIR#w6#w ##jj#n ##l8# c#P4#o #Q6arxh4aaa#66#a #h4dghs2dftw2dkI#G1#d #81e7wj3eTe#e7# l97dZ7M6d4L#u4#d #v1 wI#O9#  #p1DMpX7D98#cc#D #L2erat8eU8#uu#e ##c5# G#46#r ##y1# 9#AA#p ##41#t #P6oPzL2oI3#mm#o ##t7#r ##o7#  #j5aBSl1aBC21ai6#Q2#a #11pmg#p1# B#YY#p ##l8# Z#B4#i #59cDuY2cNL#S2#c ##a3# b#36#t ##11#i #q1oxcA5oR9L4oFn#o4# B#N8#n #j4 r186 92n9 54#h4#  #O3-Rox9-CG#X6#- #14 zF#p4#  ##a3# G#f8# E#66#t #X3e64#ZZ#e ##k6#r #71 6O#27#  #n9ckR#c9# DP9lGK#92#l ##o4# n46s9o#24#s ##i6# fm6n6iD8nxx#86#n #49gVwr1gykE4gMJ#J1#g #B8 Gb#hh#  ##33#t #98hPE#77#h ##BB#i #J8sl1T5sYg#A4#s ##XX#  #35wkF43wkj#X9#w #46iByH9iHX#D5#i #Q1nRf#v1#n #g7dRa83dd5#32#d #w8oAeW4oPn#98#o #Z1wc5X5wef#U4#w #A3,EY#,1# x#Q4#  #b2gOx#V8#g ##b3#o #w7 wp#J1#  #76bn2h7b5H#w3#b #x6aR6N1aWjf6alA#39#a ##a9#c #C7kOpk4kLB#k9# yP7 sSK5 NR#b3#  ##99#t ##o4# A#j6#  ##C4#’ #L6SaD#WW#S #A6tZ7C8tpH#K7#t ##g1#e #N7pkq87puy#Z1#p #S8 rFk7 q4j1 C6#JJ#  ##S5#t #l2wVuT3whS#t8#w ##a8#o ##u6#’ #j4 9Ky6 mS#H1#  ##JJ#o ##k1#f ## 4# wT2tr5j3tpB#O9#t ##h6# G#Y7#e #H2 oxW5 se#ff#  ##x9#D #i5ejD#e4# OG7caew9c7z#63#c #B3roVU1r46#b4#r #w3yNfh7yx8#UU#y ##TT#p ##XX#t ##o9# 4#r1# qq2 Pl73 bIY8 nR#aa#  #81avN#L4#a ##p5# e#tt#p #u7lpYT2lOx#kk#l ##rr#i #t6clx#c5# 2B8aNO#a3# X79tzS#l6#t ##zz#i ##87#o ##aa#n ##A8#, #V3 ZKt5 5yq5 zRL1 Kr#s6#  ##a8# 142nh5j2nmIb9nVT#P5#n ##d2# j#B8#  ## 3# g37cpC#c3# Z#TT#h ##ll#a #B9nGF#n3# S#w2#g #x9eVe#e5# W#ZZ#  #M6afi#QQ#a #r4lxM57lJn#ll#l ##F5#l ##zz#  #d9’BG#jj#’ ##CC## ##uu#’ #18 Hf#12#  ##DD#i ##zz#n #l1 I3#n9#  ##b9#t #66h8l#a8#h ##Y7#e #x5 x7W9 MI# 3# CZ7r2eZ4rpc#r2# U58e1ZS2eu272eUn#e9# 8X6gKkz5gIy#g7# nV3usGi9uJY#u1# u#l6# A#w9#a #E9rnvd8rHw#r5# j#B6#  #R2e8UW8e8Jm9erw#68#e #57xNp#Z5#x ##oo#p ##x9#r #i4enw#w7#e ##w1#s #G2sfV#o9#s #n7ikS26iWF#w9#i ##V7#o ##AA#n #W7 TB#o4#  ##k2#t ##J9#o ##jj#  #Y7’VX56’cG#v4#’ #j8|PSi1|dC#NN#| ##D3#’ ##41#s #t6 eE#AA#  #g1.PTz1.XIn3.ke#A2#. ## 4# f#T6# ZE3h4e11hsi#h2# Qy1eM2#e8# ZO6nX2F9nOR#F9#n ##62#  ##yy#r ##s4#e ##N1#p ##PP#e #v9ahca6aBOr9atr#KK#a #t7t3uv3tn1#S5#t #z1 fg#67#  ##P9#s #H7tce#O4#t ##53#e #O4pUfE1pzF#27#p ##44#  ##84#3 ##L3#. #i9 vJR1 92#jj#  #p5 aUJ6 Qup9 flX7 zV#f4#  ##T9# O#Y5#h #v1e6E#b4#e ##r6# 6y4eJr53emD#e1# U#O1#’ #p7sec#83#s #o4 Us#c2#  #e8akI#a5# o#43#  #p6mHi56mkWB6mar#76#m #n3axc#34#a ##g4# p75i4X#EE#i #u9cLD27cxzk5cVF34cTh#v7#c #Z9 di#X5#  #X9KtWn4KnY#b2#K ##EE#e ##y4# B#39#  #f6cJ1S7cuk#H6#c ##o6# aJ7mwoz2mqiK3m5N#89#m #I2bXyc3bBu#I3#b ##W9#i ##m9#n ##a9#a ##66#t ##TT#o #h2iOa#FF#i #f3noBL9nO6c4nbb#n2# vg5 QJ# 9# j#Z4#t #b2hb742hNK#a5#h #H6a5L#Q6#a #T4tcQf2t9V#TT#t ##n3#  #e8p48g1pCB#l7#p #n3aJEx1adi#a4# d#s7# Ky4txcj8twSU6tb2#88#t #f9eydC9e2ic5eSd#b6#e #A3szcp8sXq#m9#s ##GG#  #R6iDn#YY#i #v8nyiM6nnA#O1#n #H5 wh#j5#  ##T1#t ##33#h #V5eRp#d2#e #m5 NR83 Cc#M9#  ##JJ#e ##x1# z#p7# n#g6#r ##Z4#e ##31#s #c8sgx#I5#s ##G8#i #Q4opOM4oOG#g6#o ##n2# Q# 3# FJ1t2th9tsP#t2# fK6ovcN4oUWW3oFM#l1#o #S8 2n#75#  #w2tG8s5t63#t3# J#Y6#h ##Z6#e ##a4#  #i32c2O42LB#J6#2 #Q3nq3#n6# s#E7#d ## 7# b#NN#m #C4erbu7ev3#X9#e #y9sHu#W6#s #d8sqYx5sYN#O1#s #I3aYJ#u1#a #c7gbSN3gkX#r1#g #u7eD8Y4eolL1etY#e9# v#:1# o59 wE# 1# S#D3#P #i1rgV#33#r ##KK#e ##s5# Rp5stf36sgR#yy#s ##r8#  ##A9# D#f8#L ##t5#T #S1+JjX2+sU#+6# I#P9# aR1 lNU4 RC# 9# ve9wNN#55#w #H5h4ID9hWHJ2h5H#j5#h #99eB1B6eoe98eeP#e2# Sk4nCYq2nyE#D7#n #G5 aQd9 kj#g2#  ##T5#t ##O8#h ##e8# 2#BB#  #O1DkEO7DNI#S9#D ##n4#e ##c9# R#f3#r ##yy#y ##d8#p ##L5#t #R3oEwY8oy8#c7#o #R2rZb#37#r #l8 AT#gg#  #T1aGY#q4#a #22pFul5pnN86pSV#H5#p ##22#p ##v4#l #I3iTKZ4iZQ#CC#i ##c4# da3aoJS6aCU#u4#a ##c4#t #99i3Sh9iT9#vv#i #b4oWf#P5#o ##n4# z#x8#  #Z3iMDl5iBuW7iAA#i3# XZ2sSI#z4#s #p7 kJA4 rt#a7#  #D9oou#c5#o #z7pkmb9pNJd8p6g#tt#p ##e2# Ec8nFle7ny5#bb#n ##q7#  #w4t8yl4tRS#w4#t #h8o8Bi2oan#s6#o ##M1#  ##t2#h ##KK#a #x1vccj9v2s#v8# X#99#e #41 5b#s6#  ##55#t ##25#h ##78#e #s4 t1m1 7W#v7#  ##SS#s #J3ePo#b9#e #k6cC8V8cPM59c1tt4cId#II#c ##o8# V#a6#n ##ss#d ##98#  ##e4# iu1xpY#x7# Fj7pLff4pE3M2pDZ#44#p #l4rOE82rBG#p9#r #p5eUdH9eL7#x8#e #s9sazl9sZV#S9#s ##mm#s #t1oPxc1ojl#A5#o #F2iwH#z7#i #i8nNAs3nlW#L3#n ##j3#  #L4pWTn6pjU#b7#p #X2uWW#u8# V#b2#t ##y5#  ##i7# n#H2#n #n1 iUj7 Mp#d9#  #23fDT89flj#i6#f #o6ocle5oycC8osR#zz#o ##p5#r #44 6mD6 PT# 1# V#R2#y #V5oMmW1oz975oyF#hh#o #f1u6ev6uu2#u6# o#uu#. ##T2#  #75 Ok#ll#  ##D9#  #E2IZw#ww#I #h6fPL#T2#f #f5 bj# 9# vj3aqP#a5# X#E1#l #h4lOy#II#l ##n1#  ##L1#w #17orW#PP#o #99rEX#N3#r ##Q9#k #M6snAB8saS#yy#s #B8 T8Y4 6K#58#  #J8waI#w1# S#95#e ##ww#l #F4lrVj3l61#l7# lY7 AX#n4#  #g6yFD#D3#y #x7oKB#o2# J#u3# fy8’DsK4’LT#rr#’ #q5lgb74ln1#l2# t64lau73let#k3#l #w7 aA# 3# J#61#b ##C6#e ##39#  ##rr#a #b7bLb#SS#b ##c7#l #S4eDfH7e8Gz8euz#e9# BS6 8Ba8 fX#z3#  #k7tENu9tOx#tt#t #98oEDy5oUe#CC#o ##qq#  ##p6#r ##e5# VE5aVW#i1#a ##S1#d ##BB#  ##UU#t ##e4#h ##e6# F#T6#  #z5sCRh3s2ac8saf#U7#s #t3e5V#d1#e #p8coG#b9#c #t3oRmT4o6Bm9oFF#o7# jE2nFIe4nOUo7naAJ8nMo#K3#n ##A7#d ## 9# 3#D3#m ##oo#e ##ff#s #z5s52X8sfi#s2# K#PP#a #F6gs7n9gpf#11#g ##w2#e #84.lo#w4#. ##14#  ##T8# Ya5hjiL9hLK#h6# M#R9#e #x7 mna4 aN#MM#  #55iCdB4iBcT4iDX#27#i #H2d2u69dq2#d3# e24eVJ76ejh#17#e ##J3#a ##C4#  #O6bfYs5b9F#yy#b #r7eUeV6eY2#y1#e ##h4# ml5iHIK2iqM#I4#i ##kk#n #Y2dUj#FF#d #J7 fD#MM#  ##OO#t #84hEfH3h6J#h9# c#i5# G#h6#s #H1 vq#Y3#  ##d9#e #k9xkN#F3#x ##NN#p #P9eNyH6enEu2enM#GG#e #41rUZ#X5#r ##i6# p#99#m ##K9#e ##n1# z#h6#t ##nn#  ##FF#i ##y5#s #W2 Mh#KK#  #s4tpd#II#t #G1oyAA5oou#zz#o ##N5#  #R1sTx#s8# 6S3h7G#g3#h #u1oDFh8oOu#o5# r#W8#w #B7 Mx95 dU#F9#  ##87#y ##55#o ##Q7#u #r9 7yl6 s476 aGl6 ri#XX#  #k5jNDx3jER#j3# mF9ulyd8u5d#77#u ##U2#s ##f9#t #e6 y8o1 7Q#H5#  #o6hk4#cc#h #w6oo1q4oTs21oTF#TT#o ##f2#w ##RR#  ##v5# x#j3#e #z7rfkq7rw8#A2#r ##s7# K#SS#i ##f6#t ##KK#i ##99#l ##e5# cx9 CWN7 RVE7 Q9# 9# 5z8RiRp8Rfy#R1# y#D4#e #b6gNZF1gd7#16#g ##27#e #h4xpUI7xsSr4x1X#w2#x ## 8# h#c8# cJ7aEX#33#a ##n3# gL1 eS# 2# P#ii#b ##E4#e #c1 oZK6 p8D5 wv# 7# Rf9wFhw4wF4X3wBj#kk#w ##i7#i ##t9# X#bb#h ##13#  #F3vB5#u4#v ##h8#e ##p4#r #x6yKJe2yFN#f4#y ## 6# o#F6#l ##x6#i #q2t1RW6tRl#t2# gE4tmW#WW#t ##v9#l ##QQ#e ##hh#  ##o2#w ##jj#o ##r6#r ##k6# D#N8#. #b3 Ews6 Jk56 xw#YY#  ##75#H ##M7#o #94po6#rr#p #J6ehb#f8#e #64 CzG9 yU# 5# d33yyzv2yLec7yTZL5yDZ#y2# 6E6oK955oCi#o8# ZG9uEFZ2uIA89uTC#99#u #X4 mhL4 4sf5 jQ#77#  ##e7#” ##F6#g #w3o4ju6orxj7oLY#C1#o #c2tmTI9tnx55tyNL3tfL#t3# Gk2”bsI2”Jx#i6#” ##DD#  #L2iRlg8i5M#66#i ##l2#t ##U7#! ## 3# D# 7# hN8TxXU4Tx5r7To9#w3#T #T9hQn14hVoP4hxS#n5#h ##88#a #J8n76Y8n6g#JJ#n #K2kR2d3ke1#G5#k ##C3#s #Q6,WqY4,AO#z6#, ## 5# Q#R4# Bi6oHL#77#o ##y7# n#z1#  #w1OsFY8OHl#o9#O #q7sXCj8s1S#cc#s #d4hjE#U5#h ##QQ#e ##r7#r #39oB612o8ZW8oj4#xx#o ##JJ#v #h7eIXX1eC6#B5#e #V6 YzH7 qH#VV#  ##M3#B #m5lczH4lpnM3lpe#v1#l ##o3# l12gbpC5ggq#G9#g ##g1# s#e9# s#88#r #T7,hQm8,DE#gg#, #p4 hM# 2# Aj3GWD#z2#G ##V6#e #77eig#tt#e #K4kNUR8kCQ#VV#k ##AA#, ##s9#  ##Z2#f #O4ubo#u8# TR1tTo#C2#t #j8uEO#74#u #P7rQj75rCO#S8#r ##42#e ## 5# dD1Pvy#cc#P #f9DMuG5DOgu1DNw#MM#D ##Y6#C #p4 vUQ4 XG# 5# v87Asc84AUI#A9#A #z8ty1#II#t ##84#t ##R8#e #x9nMJi7nHE#J8#n ##d1# X#e5# N#99#e #89 S8P8 zC#83#  ##33#I #W7sBGR8s1I#II#s ##vv#r #s1aIUH4aHG#g8#a #57etLw2evU#qq#e ##22#l #w2.ST#C9#. ##KK#  #r5wur#UU#w #93wn6Q8w3f#77#w #S7w3Di6wpO38wgE#w6#w ##.3# ff3io7I1i1l53ijl#i8# Ge1sG4Z2sS6B1skA#16#s #R1ebOQ9eSp#e9# n#KK#r #g7ixxF2iAy#l2#i ##c9#a ##l9# Q#i2# UG7zS7#jj#z #d5aegL4a9n76ape#T7#a ##W1#b ##qq#l ##X4#e ##x4#. #w7cZN#hh#c ##o2# Px1mmJ#55#m #s2 a1#zz#  #I8 4TB8 Nt#E9#  ##pp#  # **———SNIP———** [![blogging my way to pdc](https://osherove.com/img/wb/f25d8784_channel9.msdn.com_pdc_Flairs_Blogmyway-h.jpg)](http://channel9.msdn.com/pdc/pdcfriends.aspx?contest=true)  _Click here to vote for this entry_ Good! You made it. So, where were we? Oh, right. Regex, Regular Expressions.   .NET supports the notion of regular expressions and allows you to use them from within managed code (using the System.Text.RegularExpressions namespace). I won’t bother you with all the details regarding this (there’s a list of resources to learn the basics of Regex later below) but I’ll explain the basic work one needs to do to parse the text above. **A very short tutorial on .NET Regular Expressions _(And Regex REPLACE actions)_** Regex in .NET supports not only the notion of “Matches” or “Search”, but also the notion of “Search and Replace”. Think of it as a very \*very\* extended and powerful way of using “Search and replace” in your favourite text editor, only able to use very complex rules to search for stuff ,and pretty powerful ways to replace it. For example, you can replace text you’ve found with a different piece of text that you’ve found. I think a short example is in order. Let’s say you have the string: _“Hello my name is $Roy$Osherove$ and this is my good buddy $Bill$Gates$”_ Now let’s say that as part of some text processing you’d like to reformat the text into something more fitting as a report. For example, find all the first and last names, and output a line for each of them that says : _“\[LastName\],\[FirstName\]”._ To write and test our regular expression we can use various tools for testing regular expressions instead of debugging our code. Such a tool is “The Regulator” found at [/](https://osherove.com/) . or Expresso ([www.ultrapico.com](http://www.ultrapico.com/) ) . I’ll explain about The Regulator. Call me crazy. **Once you install the regulator, do the following: **\- Close all the tool windows floating around. Make sure you end up with only one main document containing three areas for writing text; two on the bottom and one on top. \- Go to File-Options and uncheck the “Enable intellisense in regex input” option. Some known bugs are related to this feature and I don’t want you to get too puzzled with it. First we can use a regular expression  to find all the first and last names in the text: **(\\$\\w+?\\$\\w+?\\$)+** Let’s run a simple “Find matches” action on this expression and input in the Regulator. Enter the expression above on the top input pane in The Regulator. Then paste the test input text in the lower right pane. Press **F5** to see all the matches that were found in the text. You’ll see them in the tree on the left side of the screen. If the tree is empty either the expression is wrong or the input is wrong. Now let’s try to do a REPLACE action. A replace action takes 3 inputs – the expression, the input text, and another input called “Replace with”. Basically, the program takes all the matches it finds (as seen in the tree) and converts them to whatever is in the “Replace with” string. The output is the string after it has been transformed. It’s just like saying “Replace all ‘a’s with “b’s only instead of ‘a’ you can specify “everything that stands between a $ sign” for example, or much more complex things. So – we have two of the three inputs. In the lower right pane, click the “Replace with” tab and write **_“XXX”_** in the empty text box there.  Now press F6 to run the REPLACE action. You should now see the output string where all the names have been replaced with _“XXX”._ That’s good, but not good enough. We want to use values that were found inside the text we searched. We can use a feature called “named groups” in regular expressions (read about it in the link) to add special flags into the “Replace with” field. We can actually specify the name of a named group in the expression to be the output during the replacement. Using named groups we can call the first and last name matches by name so our expression might look like this: **(\\$(?\\w+?)\\$(?\\w+?)\\$)+** Now – here’s the magic. Instead of putting “XXX” in the “replace with” field, put the following to define a string containing values from the expression: **“First name: ${firstName}, Last Name:${lastName}”** If you press F6 again you’ll see that you strings have been replaced but actual matched values are there with a different format. That’s a powerful way to format strings! I’ll stop this tutorial here because the idea is that you should be trying this out on your own. Now, comes the fun part where I explain how you can use a REPLACE operation on the gibberish string to find the hidden message. **Encrypted message rules** The encoded message you see before you contains all the characters needed to create the final message. To find each character which is legal simply follow these rules: 1\. a legal character is **A-Z,a-z,number,space,punctuation,!@#$%^&\*()-? **2\. can appear only under these circumstances:    2.1 - \*after\* a word character followed by the same character or by a digit,      followed by a’#’ sign    \*before\* a single space    example: “xd FFG xx#Y RTUIKK” - the ‘Y’ is a legal charcter    example: “xd FFG x1#Y RTUIKK” - the ‘Y’ is a legal charcter      2.2 - \*after\* a word character followed by the same character or by a digit,      followed by a’#’ sign    \*before\* a character that is NOT a-z or A-Z     followed by ‘#’ then a space and a word character or a digit    example: “xd FFG xx#Y1# 2” \- the ‘Y’ is a legal charcter    example: “xd FFG x1#Y1# a” - the ‘Y’ is a legal charcter        example: “xd FFG xx#Y1# a” - the ‘Y’ is a legal charcter    example: “xd FFG x1#Y1# 2” - the ‘Y’ is a legal charcter Simple, huh? (some of you may feel the urge to hit me. _Get over it_. I’ll buy you a beer at the PDC, deal?) To really make this work, (and look cool), we are going to use this pattern to REPLACE all the text in the message with the found characters. That means that the captured character needs to be inside a named group called ‘letter’ which we will use as a parameter to the Regex.Replace method. So, assuming that our Regex could be something like this: **‘\[some stuff here…\](?\\w)\[some stuff here…\]’** we could then use the named group \[letter\] to do in code something like this: **string replaceWith = “${letter}” string realMessage = Regex.Replace(gibberishText,myPattern, replaceWith)** if all works well, we are going to end up with just the needed characters in one simple move.   If the expression is correct – the output of the replace operation should be the final message! You should be able to see the message in the Regulator output pane after running REPLACE (F6) with the correct expression. **IMPORTANT! ** All the default Regex options such as ignore pattern white space and explicit capture should be turned off for the pattern to work! **OK – so  I have the right expression – how do I see your message?** There are three possible ways to view the message: **Option 1:The Regex Decryptor Helper Application** I’m not just leaving you alone for the wolves here. You can download a special application I made especially for you. It’s called “The Regex Decryptor and you can [download it from here](https://osherove.com/LinkClick.aspx?link=http%3a%2f%2fwww.osherove.com%2fdownloads%2fPDCRegexDecryptor.zip&mid=347). This small application required .NET 1.1 and contains help, links to resources and a simple Wizard to help you test that your expression is indeed correct. Not only that, it will let you encrypt your own message (which could be as short as you like) and see if you can decrypt that instead of my own. How to Cheat For those of you who don’t have the patience to solve this – the application also contains a “cheat” button which reveals the expression for you allowing you to see the actual message. I encourage you to use this only in extreme cases… **Option 2: Using a Regex test application** Use the expression, the input gibberish text and the “replace with” string on any application which allows testing Regex “Replace” operations and you should immediately see the final message as the output of the Replace operation. **Option 3: Create your own application **Once you have the expression it’s only a matter of a single line of code to transform the gibberish into the real message. Try it using the .NET Regex classes. You’ll get hooked. **OK, Now what?** Good luck! I hpe you won’t cheat too fast and try to enjoy the learning experience with Regular Expressions. If you like the idea you’re welcome to click the contest link. I don’t think that helps, but It coudn’t hurt, right? _One small tidibit to make you want to do this even more_: The decrypted message contains a surprise ending :-) Roy. **Regex Resources** There are many places where you could start learning about Regular Expressions. The topics used in this small application that you might want to get aquented with before jumping into solving this:    Great sites to get you started:   - [http://www.regexlib.com](http://www.regexlib.com/) has a nice resource and online test tools   - [http://Regex.osherove.com](http://regex.osherove.com/) contains the latest information on The Regulator: a tool to help test and write regular expressions for .NET developers.  - [The best book on Regular Expressions I’ve read](https://www.amazon.com/exec/obidos/ASIN/0596002890/iserializable-20)  - introduction to regular expressions   [http://tinyurl.com/dzxne](http://tinyurl.com/dzxne)   [http://tinyurl.com/9hqlr](http://tinyurl.com/9hqlr)    - named groups article:  [http://tinyurl.com/ct4z5](http://tinyurl.com/ct4z5)   \- finding repeated text in an expression(backreferences):  [http://tinyurl.com/9agv2](http://tinyurl.com/9agv2) [![blogging my way to pdc](https://osherove.com/img/wb/f25d8784_channel9.msdn.com_pdc_Flairs_Blogmyway-h.jpg)](http://channel9.msdn.com/pdc/pdcfriends.aspx?contest=true)  _Click here to vote for this entry_ --- title: "ComputerZen: Top 120 cool tools every developer must have" url: "https://osherove.com/blog/2005/6/20/computerzen-top-120-cool-tools-every-developer-must-have.md" canonical: "https://osherove.com/blog/2005/6/20/computerzen-top-120-cool-tools-every-developer-must-have.html" published: "2005-06-20T14:26:00" updated: "2005-06-20T14:26:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Scott Hanselman has updated is \" All time amazing super cool tools list \" and its time for all of us to sit back, take a good look and try to lineup what the pros are recommending. You need to be a tool geek to love…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ComputerZen: Top 120 cool tools every developer must have By Roy Osherove June 20, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published June 20, 2005; technical details may be outdated. Scott Hanselman has updated is "[All time amazing super cool tools list](http://www.hanselman.com/blog/ScottHanselmans2005UltimateDeveloperAndPowerUsersToolList.aspx)" and its time for all of us to sit back, take a good look and try to lineup what the pros are recommending. You need to be a tool geek to love this, but even if you're not - you should seriously look at these as some of them help make your life as a coder waaay better than they were. Just look. Boy am I glad [I asked him](http://www.hanselman.com/blog/content/radiostories/2003/09/09/scottHanselmansUltimateDeveloperAndPowerUsersToolsList.html) to write these things down ! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jul 19, 2005 ### [Resharper 2.0 for VS 2005!](https://osherove.com/blog/2005/7/19/resharper-20-for-vs-2005.html) - Jun 26, 2005 ### [\[Tool\] Convert NUnit tests to Team System Tests](https://osherove.com/blog/2005/6/26/tool-convert-nunit-tests-to-team-system-tests.html) - Jun 19, 2005 ### [LibCheck: List breaking changes between assembly versions](https://osherove.com/blog/2005/6/19/libcheck-list-breaking-changes-between-assembly-versions.html) - Jun 17, 2005 ### [Flickr! - get ready for Flippr! (and a new Israeli dev blogger)](https://osherove.com/blog/2005/6/17/flickr-get-ready-for-flippr-and-a-new-israeli-dev-blogger.html) --- title: "Impressions from the \"Get ready for VS 2005\" conference in Israel" url: "https://osherove.com/blog/2005/6/20/impressions-from-the-quotget-ready-for-vs-2005quot-conferenc.md" canonical: "https://osherove.com/blog/2005/6/20/impressions-from-the-quotget-ready-for-vs-2005quot-conferenc.html" published: "2005-06-20T14:20:00" updated: "2005-06-20T14:20:00" tags: ["Community"] author: "Roy Osherove" description: "MS Israel help 2 free single day conferences today and the day before. Yesterday was all about \"Get ready for SQL 2005\" and today was mainly for developers and dealt with many topics related to developers with VS.NET…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Impressions from the "Get ready for VS 2005" conference in Israel By Roy Osherove June 20, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published June 20, 2005; technical details may be outdated. MS Israel help 2 free single day conferences today and the day before. Yesterday was all about "Get ready for SQL 2005" and today was mainly for developers and dealt with many topics related to developers with VS.NET 2003 moving to 2005 (See [Hebrew topic list](http://teched.magen.com/events/event.aspx?EventID=15325)). Unfortunately, I wasn't actually there, but speaking with some friends who were there here are the latest impressions from the conference. If you want to share your own thoughts on what was OK and what needs improvement, feel free to write a comment to this post. - **Keynote on Visual Studio Team System** - Very professional presentation, good teamwork - However, VSTS is already chewed beyond recognition - too much hype? - **Developing Office Solutions with Visual Studio 2005 - The Smart Client Way** - Some great feedback on this, easily one of the best talks. Started out rather nicely with a story about a trip to Namibia, no less! - **ASP.NET: Best Practices and Techniques for Migrating ASP.NET 1.x Applications to ASP.NET 2.0** - Very good technical content - good talk - **Overview of ASP.NET 2.0 - The Secured Way** - A bit hard to follow. Subject matter is not easy, that's for sure... **Food:** The SQL conference's food was way better than the one at the VS 2005 conf. **Amount of people:** Huge amount of people in both. One of the things to note is that in the month or two before these conferences, Microsoft's evangelists took care in making as much of the speakers as possible do their talk in front of the .NET user groups (more than 10 of these!) here in Israel - so some of the talks have already been heard by some of the people. You could say that this just gives the user group goers a reason to be happy - they get the information before everyone else, but you could also look at it from a different angle - where user groups are the guinea pigs of conference talks. I'm not sure I like that so much, but I'm not 100% set on my mind there. would love to know your thoughts on this too. ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Jun 26, 2005 ### [Wanna record a geeky interview at Tech-Ed Europe?](https://osherove.com/blog/2005/6/26/wanna-record-a-geeky-interview-at-tech-ed-europe.html) - Jun 20, 2005 ### [Blog'n your way to the PDC - A reality in the works](https://osherove.com/blog/2005/6/20/blogn-your-way-to-the-pdc-a-reality-in-the-works.html) - Jun 20, 2005 ### [June at Agile Israel: Implementing change in an organization + A Bug's Life](https://osherove.com/blog/2005/6/20/june-at-agile-israel-implementing-change-in-an-organization.html) - Jun 19, 2005 ### [\[Audio Interview\] Brian Noyes: Deep .NET Q&A](https://osherove.com/blog/2005/6/19/audio-interview-brian-noyes-deep-net-qampa.html) --- title: "June at Agile Israel: Implementing change in an organization + A Bug's Life" url: "https://osherove.com/blog/2005/6/20/june-at-agile-israel-implementing-change-in-an-organization.md" canonical: "https://osherove.com/blog/2005/6/20/june-at-agile-israel-implementing-change-in-an-organization.html" published: "2005-06-20T13:24:00" updated: "2005-06-20T13:24:00" tags: ["Agile Related", "Community"] author: "Roy Osherove" description: "The next Agile Israel meeting - More details here Please send an email to [email removed] if you plan to attend so that we know how many people to plan for. Thanks in advance. If you'd like to receive notification…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # June at Agile Israel: Implementing change in an organization + A Bug's Life By Roy Osherove June 20, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published June 20, 2005; technical details may be outdated. **The next Agile Israel meeting - [More details here](http://www.agileisrael.com/Default.aspx?tabid=60)** - **Please send an email** to \[email removed\] if you plan to attend so that we know how many people to plan for. Thanks in advance. - If you'd like to receive notification of future meetings and when downloads become available – register at [www.agileisrael.com](http://www.agileisrael.com/) . **Meeting date:** Monday, June 27, 2005 17:30 - 18:00 : Gathering **Part 1** **18:00-19:15** \- Eli Lopian, Amdocs:  **Helping cause change in an large organization** Eli Lopian, Group Co-Manager, Will discuss the problems and strategies in implementing change in your workspace, this will help in performing the cultural change needed to move to a more agile development process. Eli will discuss the motivation to change, resistance and how to overcome it, the 4P's strategy and other tactics that can help. He will also give his personal experience from implementing TDD in amdocs - a large software organization in Israel. **Part II** **19:30 - 20:45** \- Roy Sharon, K2K software: **A Bug's Life** [K2K](http://www.k2k.com/) is among the only software companies in Israel that had successfully undergone ISO9000 certification on its use of Extreme Programming and Test Driven Development. Roy Sharon will present insights from this process, with a focus on one specific aspect of Test Driven Development: preventing Bugs that Fight Back. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 26, 2005 ### [TDD Workshop - NUnit Basics, 5 places left](https://osherove.com/blog/2005/6/26/tdd-workshop-nunit-basics-5-places-left.html) - Jun 26, 2005 ### [\[Tool\] Convert NUnit tests to Team System Tests](https://osherove.com/blog/2005/6/26/tool-convert-nunit-tests-to-team-system-tests.html) - Jun 18, 2005 ### [Use Mock Logs instead of expectations when it makes sense](https://osherove.com/blog/2005/6/18/use-mock-logs-instead-of-expectations-when-it-makes-sense.html) - Jun 17, 2005 ### [Write clearer more powerful tests with the unofficial NMock 2 Drop](https://osherove.com/blog/2005/6/17/write-clearer-more-powerful-tests-with-the-unofficial-nmock.html) --- title: "Nice Free Stock Photos site" url: "https://osherove.com/blog/2005/6/20/nice-free-stock-photos-site.md" canonical: "https://osherove.com/blog/2005/6/20/nice-free-stock-photos-site.html" published: "2005-06-20T00:47:00" updated: "2005-06-20T00:47:00" tags: ["Cool sites"] author: "Roy Osherove" description: "This is a nice site with free stock photos one can download and use in their presentations (needs free registration but comes recommended by many people apprearently..) (via Beyond Bullets )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice Free Stock Photos site By Roy Osherove June 20, 2005 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published June 20, 2005; technical details may be outdated. [This is a nice site](http://sxc.hu/) with free stock photos one can download and use in their presentations (needs free registration but comes recommended by many people apprearently..) (via [Beyond Bullets](http://www.beyondbullets.com/2005/06/finding_free_ph.html)) ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Nov 21, 2005 ### [Experiment: Free advertising on this blog](https://osherove.com/blog/2005/11/21/experiment-free-advertising-on-this-blog.html) - Jul 1, 2005 ### [How to see the TechEd US sessions online](https://osherove.com/blog/2005/7/1/how-to-see-the-teched-us-sessions-online.html) - Jun 19, 2005 ### [New Advanced .NET Debugging Blog](https://osherove.com/blog/2005/6/19/new-advanced-net-debugging-blog.html) - Jun 16, 2005 ### [Great set of icons](https://osherove.com/blog/2005/6/16/great-set-of-icons.html) --- title: "New Advanced .NET Debugging Blog" url: "https://osherove.com/blog/2005/6/19/new-advanced-net-debugging-blog.md" canonical: "https://osherove.com/blog/2005/6/19/new-advanced-net-debugging-blog.html" published: "2005-06-19T22:16:00" updated: "2005-06-19T22:16:00" tags: [".Net Quotations", "Cool sites"] author: "Roy Osherove" description: "Looks like there's a new hardcore debugging blog in town - from another Israeli blogger, no less - please welcome Eran Sandler's (not related..) Advanced .NET Debugging weblog . This guy is deep into debugging. Half the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Advanced .NET Debugging Blog By Roy Osherove June 19, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published June 19, 2005; technical details may be outdated. Looks like there's a new hardcore debugging blog in town - from another Israeli blogger, no less - please welcome Eran Sandler's (not related..) [Advanced .NET Debugging weblog](http://dotnetdebug.blogspot.com/). This guy is deep into debugging. Half the time I read his blog I get a little dizzy. The other half I just read with gleeful cheer as new areas of hardcore geekiness unfold before my very keyboard. Indeed - this is the stuff long nights and light sleep are made of - Hex core dumps. ~_Of course, since this guy is on Blogger.com (which sucks because..) it has not RSS feed :(_~ His Rss feed wasn't easy to find, but you can [subscribe to it here](http://dotnetdebug.blogspot.com/atom.xml) _(thanks to Miki from the comments)_ (found via [Yosi](http://blogs.msdn.com/yosit/archive/2005/06/10/427709.aspx)) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 26, 2005 ### [.NET CLR Data counters are wrong - Official](https://osherove.com/blog/2005/6/26/net-clr-data-counters-are-wrong-official.html) - Jun 26, 2005 ### [Great article on Reflection and Performance on MSDN Mag](https://osherove.com/blog/2005/6/26/great-article-on-reflection-and-performance-on-msdn-mag.html) - Jun 19, 2005 ### [LibCheck: List breaking changes between assembly versions](https://osherove.com/blog/2005/6/19/libcheck-list-breaking-changes-between-assembly-versions.html) - Jun 13, 2005 ### [XStream.NET - Serialize almost anything easily?](https://osherove.com/blog/2005/6/13/xstreamnet-serialize-almost-anything-easily.html) --- title: "A new way to fight blog trackback spam?" url: "https://osherove.com/blog/2005/6/19/a-new-way-to-fight-blog-trackback-spam.md" canonical: "https://osherove.com/blog/2005/6/19/a-new-way-to-fight-blog-trackback-spam.html" published: "2005-06-19T20:16:00" updated: "2005-06-19T20:16:00" tags: ["Blogging"] author: "Roy Osherove" description: "Paschal posts about what seems to be an interesting and efficient way to fight blog trackback spam . Now we need to add a way to manage it from the blog and add support for this here on weblogs.asp.net. Of course, it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A new way to fight blog trackback spam? By Roy Osherove June 19, 2005 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 19, 2005; technical details may be outdated. [Paschal](http://weblogs.asp.net/pleloup/) posts about what seems to [be an interesting and efficient way to fight blog trackback spam](http://weblogs.asp.net/pleloup/archive/2005/06/19/413765.aspx). Now we need to add a way to manage it from the blog and add support for this here on weblogs.asp.net. Of course, it uses regular expressions :-) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 20, 2005 ### [Blog'n your way to the PDC - A reality in the works](https://osherove.com/blog/2005/6/20/blogn-your-way-to-the-pdc-a-reality-in-the-works.html) - Jun 20, 2005 ### [Geeky Podcasts list](https://osherove.com/blog/2005/6/20/geeky-podcasts-list.html) - Jun 19, 2005 ### [A very nice .NET architecture blog discovered](https://osherove.com/blog/2005/6/19/a-very-nice-net-architecture-blog-discovered.html) - Apr 15, 2005 ### [Weird and interesting Blog of the week - Anarchia](https://osherove.com/blog/2005/4/15/weird-and-interesting-blog-of-the-week-anarchia.html) --- title: "LibCheck: List breaking changes between assembly versions" url: "https://osherove.com/blog/2005/6/19/libcheck-list-breaking-changes-between-assembly-versions.md" canonical: "https://osherove.com/blog/2005/6/19/libcheck-list-breaking-changes-between-assembly-versions.html" published: "2005-06-19T15:28:00" updated: "2005-06-19T15:28:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "Another cool tool I'll need to check out from the BCL team: LibCheck \"Basically, LibCheck analyzes a version of a library, and compares it to another version of the same library. It then reports the differences ... in a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # LibCheck: List breaking changes between assembly versions By Roy Osherove June 19, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published June 19, 2005; technical details may be outdated. Another cool tool I'll need to check out from the [BCL](http://msdn.microsoft.com/netframework/programming/bcl/) team: [LibCheck](http://www.microsoft.com/downloads/details.aspx?familyid=4b5b7f29-1939-4e5b-a780-70e887964165&displaylang=en) "Basically, LibCheck analyzes a version of a library, and compares it to another version of the same library. It then reports the differences ... in a list, available as HTML or xml. ...the list is presented as a set of removed, and added methods. When we can detect that change in question is a breaking change (and generally, removals are likely candidates!), we color the change red. Now if you're used to the change report we put out periodically with a release, **you now have the tool that generates that list!** " (via [BCL Blog](http://blogs.msdn.com/bclteam/archive/2005/03/21/400123.aspx#comments)) Update: Not to scare anyone , [but this guy has had a very bad experience](http://vidmar.net/weblog/archive/2005/06/19/1672.aspx) while running the LibCheck build file- His windows XP installation got corrupted.. I'm not saying (neither is he) that the build caused this somehow, but just to be on the safe side - don't run this anywhere important unless you're sure it's ok and stable.. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 26, 2005 ### [Great article on Reflection and Performance on MSDN Mag](https://osherove.com/blog/2005/6/26/great-article-on-reflection-and-performance-on-msdn-mag.html) - Jun 19, 2005 ### [New Advanced .NET Debugging Blog](https://osherove.com/blog/2005/6/19/new-advanced-net-debugging-blog.html) - Jun 13, 2005 ### [XStream.NET - Serialize almost anything easily?](https://osherove.com/blog/2005/6/13/xstreamnet-serialize-almost-anything-easily.html) - Apr 9, 2005 ### [Enterprise Library - Configuration AB Memory Leak Patch](https://osherove.com/blog/2005/4/9/enterprise-library-configuration-ab-memory-leak-patch.html) --- title: "Balanced matching using .NET Regex" url: "https://osherove.com/blog/2005/6/19/balanced-matching-using-net-regex.md" canonical: "https://osherove.com/blog/2005/6/19/balanced-matching-using-net-regex.html" published: "2005-06-19T15:12:00" updated: "2005-06-19T15:12:00" tags: ["Regex"] author: "Roy Osherove" description: ".NET Regular expressions have an extended ability to match \"balanced items\". For example, in the string \"a + (b+(c+d))\" it can find correct pairs of matching open and closing brackets. It's not the most simple solution…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Balanced matching using .NET Regex By Roy Osherove June 19, 2005 In [Regex](https://osherove.com/blog/category/regex) **Historical article** · Originally published June 19, 2005; technical details may be outdated. .NET Regular expressions have an extended ability to match "balanced items". For example, in the string _"a + (b+(c+d))"_ it can find correct pairs of matching open and closing brackets. It's not the most simple solution in the world, so be ready for a small mind-melt when you [read this from the BCL team](http://blogs.msdn.com/bclteam/archive/2005/03/15/396452.aspx) (Base class library team at MS) ## More in Regex [All posts in Regex](https://osherove.com/blog/category/regex) - Nov 26, 2005 ### [Announcing Regex Kit: Regular Expression Visualizers for VS 2005](https://osherove.com/blog/2005/11/26/announcing-regex-kit-regular-expression-visualizers-for-vs-2.html) - Jul 8, 2005 ### [Sessions done at TechEd](https://osherove.com/blog/2005/7/8/sessions-done-at-teched.html) - Jun 5, 2005 ### [The Regex phrase of death](https://osherove.com/blog/2005/6/5/the-regex-phrase-of-death.html) - Jun 2, 2005 ### [Announcing: The Regulator Logo Contest](https://osherove.com/blog/2005/6/2/announcing-the-regulator-logo-contest.html) --- title: "[Audio Interview] Brian Noyes: Deep .NET Q&A" url: "https://osherove.com/blog/2005/6/19/audio-interview-brian-noyes-deep-net-qampa.md" canonical: "https://osherove.com/blog/2005/6/19/audio-interview-brian-noyes-deep-net-qampa.html" published: "2005-06-19T13:25:00" updated: "2005-06-19T13:25:00" tags: [".Net 2.0", "Architecture", "Community", "Interview"] author: "Roy Osherove" description: "Brian Noyes -Getting Technical about .NET (April 25, 2005) What would you do if you had an experienced architect and consultant sitting right next to you? You'd start asking him all kinds of questions that have been…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Audio Interview\] Brian Noyes: Deep .NET Q&A By Roy Osherove June 19, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Architecture](https://osherove.com/blog/category/architecture), [Community](https://osherove.com/blog/category/community), [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published June 19, 2005; technical details may be outdated. **Brian Noyes -Getting Technical about .NET (April 25, 2005)** What would you do if you had an experienced architect and consultant sitting right next to you? You'd start asking him all kinds of questions that have been bothering you, of course. Which is exactly what I did, which turned into a wonderful almost 2 and a half hour conversation about lots and lots of things in the .NET world. Starting with .NET 2.0 - the new table adapters, datasets and performance, enterprise library, Indigo, and continuing with architecture best practices, MSMQ, Service oriented architecture and lots more. Here's a short list of topics covered: His new book, .NET Data Binding (top 3 coolest new features), Datasets and scalability, EntLib, the Provider Model, extensibility and security, System.Transactions, Queued Components, the least known best feature in COM+, Moving to Indigo challenges, Queued events, Web services and their generated proxies related problems, attending MS design reviews, ObjectSpaces, XQuery, Connection pooling and much more. Indeed - this should make your daily commute a little more interesting (and geeky!) _Language - English._ [Download both hour+ parts in MP3 over here.](http://teamagile.com/mainpages/interviews.html) Brian Noyes is a Microsoft MVP and an international speaker, trainer, writer and consultant with IDesign. He speaks at Microsoft TechEd US, Europe, and Malaysia, Visual Studio Connections, SDC Netherlands, DevTeach Montreal, VSLive!, DevEssentials, and other conferences, and is one of the top rated speakers on the INETA Speakers Bureau. He has published numerous articles on .NET development for MSDN Magazine, CoDe Magazine, The Server Side .NET, Visual Studio Magazine, asp.netPRO, .NET Developer's Journal, and other publications. Brian latest book, Data Binding with Windows Forms 2.0, part of the Addison-Wesley .NET Development Series, will hit the shelves in the fall of 2005, followed shortly thereafter by Essential ClickOnce, Automatic Deployment and Update of Smart Client Applications with .NET 2.0. Brian’s blog can be found at [http://www.softinsight.com/bnoyes/](http://www.softinsight.com/bnoyes/ "http"). ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Oct 19, 2005 ### [Introducing Amazoner: Create Amazon Associate Links with ease](https://osherove.com/blog/2005/10/19/introducing-amazoner-create-amazon-associate-links-with-ease.html) - Jun 26, 2005 ### [.NET CLR Data counters are wrong - Official](https://osherove.com/blog/2005/6/26/net-clr-data-counters-are-wrong-official.html) - Apr 14, 2005 ### [Debug Visualizers in VS 2005: Almost there, one big feature missing](https://osherove.com/blog/2005/4/14/debug-visualizers-in-vs-2005-almost-there-one-big-feature-mi.html) - Apr 9, 2005 ### [Whitepaper: Introducing System Transactions, by Juval Lowy](https://osherove.com/blog/2005/4/9/whitepaper-introducing-system-transactions-by-juval-lowy.html) --- title: "A very nice .NET architecture blog discovered" url: "https://osherove.com/blog/2005/6/19/a-very-nice-net-architecture-blog-discovered.md" canonical: "https://osherove.com/blog/2005/6/19/a-very-nice-net-architecture-blog-discovered.html" published: "2005-06-19T13:08:00" updated: "2005-06-19T13:08:00" tags: ["Architecture", "Blogging"] author: "Roy Osherove" description: "What happens when a good architect and consultant gets creative and starts a blog related to .NET architecture ? This guy worked at Microsoft Israel until recently as an architect. This should be good. Subscribed !" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A very nice .NET architecture blog discovered By Roy Osherove June 19, 2005 In [Architecture](https://osherove.com/blog/category/architecture), [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 19, 2005; technical details may be outdated. What happens when a good architect and consultant gets creative and starts [a blog related to .NET architecture](http://www.rgoarchitects.com/blog/default.aspx)? This guy worked at Microsoft Israel until recently as an architect. This should be good.  [Subscribed](http://www.rgoarchitects.com/blog/SyndicationService.asmx/GetRss)! ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Jul 12, 2005 ### [Looking for an architect for a medium project](https://osherove.com/blog/2005/7/12/looking-for-an-architect-for-a-medium-project.html) - Jun 19, 2005 ### [\[Audio Interview\] Brian Noyes: Deep .NET Q&A](https://osherove.com/blog/2005/6/19/audio-interview-brian-noyes-deep-net-qampa.html) - Jun 18, 2005 ### [Why payroll systems are a pain to design - Temporal Data (and some great resources on it)](https://osherove.com/blog/2005/6/18/why-payroll-systems-are-a-pain-to-design-temporal-data-and-s.html) - Jun 5, 2005 ### [What's legacy code?](https://osherove.com/blog/2005/6/5/whats-legacy-code.html) --- title: "Why payroll systems are a pain to design - Temporal Data (and some great resources on it)" url: "https://osherove.com/blog/2005/6/18/why-payroll-systems-are-a-pain-to-design-temporal-data-and-s.md" canonical: "https://osherove.com/blog/2005/6/18/why-payroll-systems-are-a-pain-to-design-temporal-data-and-s.html" published: "2005-06-18T23:21:00" updated: "2005-06-18T23:21:00" tags: ["Architecture"] author: "Roy Osherove" description: "When I first started working on a payroll system at a previous engagement, I was very frustrated with the biggest problem in building payroll systems: Handling time. That is - the change of things and values over time.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why payroll systems are a pain to design - Temporal Data (and some great resources on it) By Roy Osherove June 18, 2005 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published June 18, 2005; technical details may be outdated. When I first started working on a payroll system at a previous engagement, I was very frustrated with the biggest problem in building payroll systems: Handling time. That is - the change of things and values over time. You see, in a payroll system, you need to know not only what "Dan"'s salary is Today, or what it was on January, you also need to know what you "knew" about Dan's Salary regarding January when you created the payroll for February (assuming today is March, for example).  You actually need to keep tabs on time in two dimensions: The actual time, and the history of the actual time. (I always think of it like a comet and it's tail - the comet being the place in time you want to know about and the tail  - the value in that time's history you want to know about).    Were you just able to wrap your head around that last paragraph? because you can just imagine how much problem solving you need to do with such a system - data wise, architecture wise and design wise. I won't go into the excruciating details (for now), but if you're in the same bind as I was then, you'd appreciate knowing that Marting Fowler [has a nice writeup on various patterns for "Temporal Data"](http://www.martinfowler.com/eaaDev/timeNarrative.html) - data which changes in time, which try to solve exactly these problems. I wasn't aware of many of these back then and, as usual for cases where you invent the wheel - came up with my own half-assed solution. Reading these I found that I was on the right track in some places and off track in others (in a way). [Go read this](http://www.martinfowler.com/eaaDev/timeNarrative.html). And also probably [get this book](https://www.amazon.com/exec/obidos/ASIN/1558604367/iserializable-20) (which Fowler recommends). On a related note, "[Patterns of Enterprise Application Architecture](https://www.amazon.com/exec/obidos/ASIN/0321127420/iserializable-20)" is by far one of the most eye opening pattern books I've read (along with the [classic Gof book](https://www.amazon.com/exec/obidos/ASIN/0201633612/iserializable-20)). The great news is Fowler is on his way to making more of the same good thing - continuing on with a different book. Meanwhile [we can all enjoy his thoughts on the patterns he comes up with online on his bliki](http://www.martinfowler.com/eaaDev/index.html). I consider it a treasure trove of things to think about - like a totally free book of open thoughts. Most of it is pure gold - stuff you really wanted someone to put in words for you. What can I say? This guy is going somewhere ;-) ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Jun 19, 2005 ### [\[Audio Interview\] Brian Noyes: Deep .NET Q&A](https://osherove.com/blog/2005/6/19/audio-interview-brian-noyes-deep-net-qampa.html) - Jun 19, 2005 ### [A very nice .NET architecture blog discovered](https://osherove.com/blog/2005/6/19/a-very-nice-net-architecture-blog-discovered.html) - Jun 5, 2005 ### [What's legacy code?](https://osherove.com/blog/2005/6/5/whats-legacy-code.html) - Jun 5, 2005 ### [VS 2005 Team System Modeling Strategy and FAQ](https://osherove.com/blog/2005/6/5/vs-2005-team-system-modeling-strategy-and-faq.html) --- title: "Nice Handwriting fonts in Hebrew" url: "https://osherove.com/blog/2005/6/18/nice-handwriting-fonts-in-hebrew.md" canonical: "https://osherove.com/blog/2005/6/18/nice-handwriting-fonts-in-hebrew.html" published: "2005-06-18T14:56:00" updated: "2005-06-18T14:56:00" tags: ["Off Topic"] author: "Roy Osherove" description: "We were on the lookout for some great Hebrew handwriting fonts so that we could \"write\" a letter to family in Australia. via Google I stumbled upon this site with a very nice selection of handwriting fonts in Hebrew…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice Handwriting fonts in Hebrew By Roy Osherove June 18, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 18, 2005; technical details may be outdated. We were on the lookout for some great Hebrew handwriting fonts so that we could "write" a letter to family in Australia. via Google I stumbled upon [this site with a very nice selection of handwriting fonts in Hebrew](http://www.mendelsson.co.il/yakov/myfonts.htm) (with some examples on there). Just a small bookmark for myself... He also [lists some links to other Hebrew and none Hebrew Font and typography sites](http://www.mendelsson.co.il/yakov/links.htm). [Here's a very nice one](http://www.webjunkie.co.il/ShowFontCat.asp?ID=1), for example. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 22, 2005 ### [$50,000 to build a Cool Tool?](https://osherove.com/blog/2005/6/22/50000-to-build-a-cool-tool.html) - Jun 22, 2005 ### [Annoying problem (+Solution) of the week: "One or more projects in Solution X needs to be updated to use Crystal Reports 10."](https://osherove.com/blog/2005/6/22/annoying-problem-solution-of-the-week-quotone-or-more-projec.html) - Jun 17, 2005 ### [\[OT \]It's Yamaka pattern time!](https://osherove.com/blog/2005/6/17/ot-its-yamaka-pattern-time.html) - Jun 13, 2005 ### [In search of the perfect programmer's font](https://osherove.com/blog/2005/6/13/in-search-of-the-perfect-programmers-font.html) --- title: "Use Mock Logs instead of expectations when it makes sense" url: "https://osherove.com/blog/2005/6/18/use-mock-logs-instead-of-expectations-when-it-makes-sense.md" canonical: "https://osherove.com/blog/2005/6/18/use-mock-logs-instead-of-expectations-when-it-makes-sense.html" published: "2005-06-18T12:49:00" updated: "2005-06-18T12:49:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "Len Holgate writes about a little known technique for using Mock Object testing which is very applicable in languages like C++ where Mock Object frameworks are hard to use and mocks are hard to create anyway. Instead of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Use Mock Logs instead of expectations when it makes sense By Roy Osherove June 18, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published June 18, 2005; technical details may be outdated. [Len Holgate](http://www.lenholgate.com/) writes about a little known technique for using Mock Object testing which is very applicable in languages like C++ where Mock Object frameworks are hard to use and mocks are hard to create anyway. Instead of doing "ExpectCall" and "Verify", [use a simple logging technique](http://www.lenholgate.com/archives/000421.html) in your mock object that captures all the events that happened to it. When the test finished, compare the actual log string to the expected log string. If all is well they match and you know th interaction between your objects was OK. I'd rather be using "Expect" but this is a great technique for when you don't want to muck around with writing mock code, but rather want to actually get somewhere in your production code fast. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 26, 2005 ### [\[Tool\] Convert NUnit tests to Team System Tests](https://osherove.com/blog/2005/6/26/tool-convert-nunit-tests-to-team-system-tests.html) - Jun 20, 2005 ### [June at Agile Israel: Implementing change in an organization + A Bug's Life](https://osherove.com/blog/2005/6/20/june-at-agile-israel-implementing-change-in-an-organization.html) - Jun 17, 2005 ### [Write clearer more powerful tests with the unofficial NMock 2 Drop](https://osherove.com/blog/2005/6/17/write-clearer-more-powerful-tests-with-the-unofficial-nmock.html) - Jun 16, 2005 ### [A good tester](https://osherove.com/blog/2005/6/16/a-good-tester.html) --- title: "Write clearer more powerful tests with the unofficial NMock 2 Drop" url: "https://osherove.com/blog/2005/6/17/write-clearer-more-powerful-tests-with-the-unofficial-nmock.md" canonical: "https://osherove.com/blog/2005/6/17/write-clearer-more-powerful-tests-with-the-unofficial-nmock.html" published: "2005-06-17T22:18:00" updated: "2005-06-17T22:18:00" tags: ["Agile Related"] author: "Roy Osherove" description: "[If you know what a Mock Object and NMock is - feel free to skip the following paragraph] NMock is a .NET library (framework actually) to help write unit tests for objects that have to interact with other objects (Like…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Write clearer more powerful tests with the unofficial NMock 2 Drop By Roy Osherove June 17, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 17, 2005; technical details may be outdated. _\[If you know what a Mock Object and NMock is - feel free to skip the following paragraph\]_ NMock is a .NET library (framework actually) to help write unit tests for objects that have to interact with other objects (Like Class "MailSender" interacts with class "MailServer", for example). It allows you to "mimic" one or more objects during the test so that you could check various things that would be hard to check under normal circumstances (For example - instead of checking that an actual mail message was sent ton an exchange server, you would just check that a correct call with correct parameter values was executed against the server class. You do this by "mimicking" the server class and replacing it with your own - using this NMock library). In short, the library allows you to create what is known as a "Mock Object". If you want to get deep into what this really means, read Fowler's opinion on this. Here's a shorter, more technical concise idea (exec summary type). Anyway, Looks like there's a new NMock in town (though it's still in "source" mode and not yet official). It's the NMock you wanted but your daddy didn't let you. And It's called NMock2. Looks like [Vaderpi has tried it out and loved it](http://vaderpi.scottandlaurie.com/blog/?p=185). What does it "Do"? well, it does some stuff the [NMock](http://www.nmock.org/) you know and love today can't. - Finally able to verify that Events have occurred on the class under test (Much like [my feeble attempt here](https://weblogs.asp.net/rosherove/archive/2005/06/13/EventsVerifier.aspx)) - Has an all new way of syntax - much more like it's original padre - the [JMock](http://www.jmock.org/) framework from Java. Here's a small example: - **Expect****.Once.On(joker).Method("Respond").With(Is.EqualTo("Who's there?"));** **.Once.On(joker).Method("Respond").With(Is.EqualTo("Who's there?"));** - **Expect****.AtLeastOnce.On(joker).Method("Ha");** **.AtLeastOnce.On(joker).Method("Ha");** - Still cannot Mock actual classes (which is when you bring in heavy duty stuff like [TypeMock.net](http://www.typemock.com/)) - Lots more I still haven't checked out. So, if you're into "real" testing where you need Mock Objects, this should be worth checking out. How? There are two ways: **The Loooong Way** 1. Read the full instructions [here](http://www.nmock.org/source.html) 2. Get some sort of [CVS manager](http://www.tortoisecvs.org/) (Like Sourcesafe - only very much not!) 3. Use it to get the latest version from the site 4. Build the things 5. Use it **The Short Way** 1. I already did that so you don't have to. Download the unofficial drop here: [http://files.osherove.com/NMock2\_Drop.zip](http://files.osherove.com/NMock2_Drop.zip). 2. It includes source and binaries. [Be sure to read the License!](http://www.nmock.org/license.html) A great way to see how you should use it (including call syntax) is to **read it's acceptance and unit tests**. They're right there along with the code so they make for perfect API documentation for the uninitiated. Just another great example of unit tests doubling as documentation (though I agree that that's not **all** the documentation a project should have). Have fun! (link found via [TestDriven.com](http://www.testdriven.com/modules/news/index.php?storytopic=12)) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 20, 2005 ### [June at Agile Israel: Implementing change in an organization + A Bug's Life](https://osherove.com/blog/2005/6/20/june-at-agile-israel-implementing-change-in-an-organization.html) - Jun 18, 2005 ### [Use Mock Logs instead of expectations when it makes sense](https://osherove.com/blog/2005/6/18/use-mock-logs-instead-of-expectations-when-it-makes-sense.html) - Jun 16, 2005 ### [A good tester](https://osherove.com/blog/2005/6/16/a-good-tester.html) - Jun 16, 2005 ### [Mock Objects vs. "Inherit & Override"](https://osherove.com/blog/2005/6/16/mock-objects-vs-quotinherit-amp-overridequot.html) --- title: "Flickr! - get ready for Flippr! (and a new Israeli dev blogger)" url: "https://osherove.com/blog/2005/6/17/flickr-get-ready-for-flippr-and-a-new-israeli-dev-blogger.md" canonical: "https://osherove.com/blog/2005/6/17/flickr-get-ready-for-flippr-and-a-new-israeli-dev-blogger.html" published: "2005-06-17T11:45:00" updated: "2005-06-17T11:45:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Found this guy, Ohad's weblog, on blogger.com through Ynet.co.il. He's a developer and has some small little utilities to download. For example, he wrote (in C++!) a utility that grabs process info off Google on each…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Flickr! - get ready for Flippr! (and a new Israeli dev blogger) By Roy Osherove June 17, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published June 17, 2005; technical details may be outdated. Found this guy, Ohad's weblog, on blogger.com through Ynet.co.il. He's a developer and has some small little utilities to download. For example, he wrote (in C++!) [a utility that grabs process info off Google](http://ohadp.blogspot.com/2005/06/local-process-information.html) on each process running on your machine and tells you if you should check it out more. Not very helpful, actually, but nice to know he's a creative dude :) Something a little more creative I just found on his blog is '[Flippr](http://ohadp.blogspot.com/2005/05/flippr-flickr-wallpapers.html)': _Flippr! is a simple application that grabs pictures from_ [_Flickr!_](http://www.flickr.com/) _(The supercool photo-sharing website) and throws them on your desktop. It's easy to tell Flippr! what 'kind' of pictures you're looking for (_[_tags_](http://flickr.com/photos/tags/)_)._ Indeed, looks interesting! I should have to check this out. Checking out his blog I see that he has more stuff he's done. I'll just [bookmark his blog](http://ohadp.blogspot.com/) then.. Update: I'm not getting anywhere with this thing :( I'll mention this ans save you the trouble: \* it seems to only work with Python 2.3 (the various other installs you need to make it work require this distro) \* I keep getting a weird error "flippr.py", line 27, in ?    import win32com ImportError: No module named win32com" \* **[Blogger](http://www.blogger.com/) sucks** \- you can't make anonymous comments! By default??!! So much for interacting.... Now I can't even ask the guy how I should solve the problem.. error. what's up? ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 20, 2005 ### [ComputerZen: Top 120 cool tools every developer must have](https://osherove.com/blog/2005/6/20/computerzen-top-120-cool-tools-every-developer-must-have.html) - Jun 19, 2005 ### [LibCheck: List breaking changes between assembly versions](https://osherove.com/blog/2005/6/19/libcheck-list-breaking-changes-between-assembly-versions.html) - Jun 2, 2005 ### [Announcing: The Regulator Logo Contest](https://osherove.com/blog/2005/6/2/announcing-the-regulator-logo-contest.html) - Jun 2, 2005 ### [Oracle Tools for VS.NET](https://osherove.com/blog/2005/6/2/oracle-tools-for-vsnet.html) --- title: "[OT ]It's Yamaka pattern time!" url: "https://osherove.com/blog/2005/6/17/ot-its-yamaka-pattern-time.md" canonical: "https://osherove.com/blog/2005/6/17/ot-its-yamaka-pattern-time.html" published: "2005-06-17T11:28:00" updated: "2005-06-17T11:28:00" tags: ["Off Topic"] author: "Roy Osherove" description: "You knew it was going to happen: There's a special program to design the patterns on a yamaka (\"Kippa\" in Hebrew). (site is in Hebrew) (via the YNet blogs ) Also, from thr Same site: Haaretz newspaper finally has RSS…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT \]It's Yamaka pattern time! By Roy Osherove June 17, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 17, 2005; technical details may be outdated. You knew it was going to happen: There's a special program to [design the patterns on a yamaka](http://www.kipa.co.il/dogma/)("Kippa" in Hebrew). (site is in Hebrew) _(via the_ [_YNet blogs_](http://www.ynet.co.il/articles/0,7340,L-3100091,00.html#n)_)_ Also, from thr Same site: Haaretz newspaper finally has RSS (with a funny warning along with it that says that only private individuals may use the XML content..) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 22, 2005 ### [Annoying problem (+Solution) of the week: "One or more projects in Solution X needs to be updated to use Crystal Reports 10."](https://osherove.com/blog/2005/6/22/annoying-problem-solution-of-the-week-quotone-or-more-projec.html) - Jun 18, 2005 ### [Nice Handwriting fonts in Hebrew](https://osherove.com/blog/2005/6/18/nice-handwriting-fonts-in-hebrew.html) - Jun 13, 2005 ### [In search of the perfect programmer's font](https://osherove.com/blog/2005/6/13/in-search-of-the-perfect-programmers-font.html) - Jun 7, 2005 ### [MS Digital City, and a funny amateur video commercial](https://osherove.com/blog/2005/6/7/ms-digital-city-and-a-funny-amateur-video-commercial.html) --- title: "Great set of icons" url: "https://osherove.com/blog/2005/6/16/great-set-of-icons.md" canonical: "https://osherove.com/blog/2005/6/16/great-set-of-icons.html" published: "2005-06-16T18:12:00" updated: "2005-06-16T18:12:00" tags: ["Cool sites"] author: "Roy Osherove" description: "This is a great set of downloadable icons , many of which available for Windows. The link was sent to me by my lovely wife, Tal. (See if you can spot one familiar icon on the list...)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Great set of icons By Roy Osherove June 16, 2005 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published June 16, 2005; technical details may be outdated. [This is a great set of downloadable icons](http://www.pixelgirlpresents.com/icons.php?page=4&cat=pc), many of which available for Windows. The link was sent to me by my lovely wife, Tal. _(See if you can spot one familiar icon on the list...)_ ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Jun 20, 2005 ### [Nice Free Stock Photos site](https://osherove.com/blog/2005/6/20/nice-free-stock-photos-site.html) - Jun 19, 2005 ### [New Advanced .NET Debugging Blog](https://osherove.com/blog/2005/6/19/new-advanced-net-debugging-blog.html) - Mar 20, 2005 ### [Taking notice of Lucene: A searching & indexing library](https://osherove.com/blog/2005/3/20/taking-notice-of-lucene-a-searching-amp-indexing-library.html) - Mar 1, 2005 ### [The new Larkware.com](https://osherove.com/blog/2005/3/1/the-new-larkwarecom.html) --- title: "A good tester" url: "https://osherove.com/blog/2005/6/16/a-good-tester.md" canonical: "https://osherove.com/blog/2005/6/16/a-good-tester.html" published: "2005-06-16T09:24:00" updated: "2005-06-16T09:24:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Now, this is what a call a good tester. \"The developer thought I was insane when he saw me rocking my desk with my knee while typing... \" (via Brian Marick )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A good tester By Roy Osherove June 16, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 16, 2005; technical details may be outdated. Now, **[this](http://www.kohl.ca/blog/archives/000104.html)** is what a call a good tester. _"The developer thought I was insane when he saw me rocking my desk with my knee while typing... "_ _(via [Brian Marick](http://www.testing.com/cgi-bin/blog/2005/06/15#jiggling-the-contacts))_ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 18, 2005 ### [Use Mock Logs instead of expectations when it makes sense](https://osherove.com/blog/2005/6/18/use-mock-logs-instead-of-expectations-when-it-makes-sense.html) - Jun 17, 2005 ### [Write clearer more powerful tests with the unofficial NMock 2 Drop](https://osherove.com/blog/2005/6/17/write-clearer-more-powerful-tests-with-the-unofficial-nmock.html) - Jun 16, 2005 ### [Mock Objects vs. "Inherit & Override"](https://osherove.com/blog/2005/6/16/mock-objects-vs-quotinherit-amp-overridequot.html) - Jun 15, 2005 ### [Mock Object testing can cause trouble - here's why and possibly how to avoid it](https://osherove.com/blog/2005/6/15/mock-object-testing-can-cause-trouble-heres-why-and-possibly.html) --- title: "Mock Objects vs. \"Inherit & Override\"" url: "https://osherove.com/blog/2005/6/16/mock-objects-vs-quotinherit-amp-overridequot.md" canonical: "https://osherove.com/blog/2005/6/16/mock-objects-vs-quotinherit-amp-overridequot.html" published: "2005-06-16T09:09:00" updated: "2005-06-16T09:09:00" tags: ["Agile Related"] author: "Roy Osherove" description: "In regards to my previous post about Mock Objects and their inherent problems, Scott writes this comment: \"I particularly like the technique where a virtual method allows the unit tests to subclass and inject…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mock Objects vs. "Inherit & Override" By Roy Osherove June 16, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 16, 2005; technical details may be outdated. In regards to [my previous post about Mock Objects](http://weblogs.asp.net/rosherove/archive/2005/06/15/412816.aspx) and their inherent problems, Scott writes this comment: _"I particularly like the technique where a virtual method allows the unit tests to subclass and inject dependencies. I feel this is an elegant solution compared to dependency injection with constructors. I was wondering if you had rules of thumb on when to use one versus the other? "_ **"Inherit & Override"** is a great method I use especially in these cases: 1.     When there is complex logic (usually validation logic including many "flags" in a method. I then delegate each "question" in the method to a virtual method which allows me to simulate very complex logical situations and see whether the method logic behaves correctly. 2.     When dealing with legacy code this is a great way to break dependencies without introducing new interfaces and still allowing a "poor man's" interaction testing. The trick here is to make sure that you only put in the virtual function the smallest piece of code that talks to an outside dependency without any logic. This could be a mere call to a Singleton object (making a function called "getObject" virtual ) or a call to "mailer.SendEmail(param1,param2)". 3.    When trying to remove any performance bottlenecks from the application. For example, an application that times out on specific calls, I would either remove the calls, or change the timeout duration by a parameter or an overridden method that returns the duration required. Overall - this is a great way to break dependencies in your tests and people should be aware of it. Mock objects are not everything. However, it usually requires more code but allows for pretty elegant tests to be created. **More resources:** - I've demonstrated a few techniques relating to inherit and override at the [Agile Israel](http://www.agileisrael.com/) user group. The download is available [including code sample over here](http://www.agileisrael.com/LinkClick.aspx?link=58&mid=362). - Michael Feathers' book "[Working effectively with Legacy code](https://www.amazon.com/exec/obidos/ASIN/0131177052/iserializable-20)" is a great resource with many examples of deep investigations in to the world of "how do I bend my code to make it testable?" ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 17, 2005 ### [Write clearer more powerful tests with the unofficial NMock 2 Drop](https://osherove.com/blog/2005/6/17/write-clearer-more-powerful-tests-with-the-unofficial-nmock.html) - Jun 16, 2005 ### [A good tester](https://osherove.com/blog/2005/6/16/a-good-tester.html) - Jun 15, 2005 ### [Mock Object testing can cause trouble - here's why and possibly how to avoid it](https://osherove.com/blog/2005/6/15/mock-object-testing-can-cause-trouble-heres-why-and-possibly.html) - Jun 13, 2005 ### [Test event logic easily with the EventsVerifier class](https://osherove.com/blog/2005/6/13/test-event-logic-easily-with-the-eventsverifier-class.html) --- title: "Mock Object testing can cause trouble - here's why and possibly how to avoid it" url: "https://osherove.com/blog/2005/6/15/mock-object-testing-can-cause-trouble-heres-why-and-possibly.md" canonical: "https://osherove.com/blog/2005/6/15/mock-object-testing-can-cause-trouble-heres-why-and-possibly.html" published: "2005-06-15T12:58:00" updated: "2005-06-15T12:58:00" tags: ["Agile Related"] author: "Roy Osherove" description: "I got this question on the israel agile development list: I wonder about the usefulness and pitfalls of using mock objects, I'm currently using NMock, and I'd made a simple refactoring that resulted in a holy mess when…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mock Object testing can cause trouble - here's why and possibly how to avoid it By Roy Osherove June 15, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 15, 2005; technical details may be outdated. I got this question on the israel agile development list: _I wonder about the usefulness and pitfalls of using mock objects, I'm currently using NMock, and I'd made a simple refactoring that resulted in a holy mess when half my tests broke. I read several article about this, and there seems to be some controversy in the issue. (The latest one is [http://jeremydmiller.blogspot.com/2005/06/tdd-design-starter-kit-state-vs.html](http://jeremydmiller.blogspot.com/2005/06/tdd-design-starter-kit-state-vs.html "http") ).  Any thoughts / advice in the subject?_ Mocks are great for some things. The problem you were facing could have been because of two things: 1 – not enough code reuse in the tests Many times, refactoring the code can lead to big refactoring in the tests (adding a parameter to a constructor for example). To overcome this there are various simple rules one needs to take care of in the tests to avoid having a big chunk of tests go boom, and be able to fix such a thing form one single spot or two: code reuse. \-          always create the tested object through a factory method (only one place where the ctor is called \-          when performing the same action in multiple tests – refactor to use a helper method, so the call to the object is written only in one place \-          and so on… 2 – Mock objects assume inner workings of object so when the inner working of an object changes, (though the functionality may be the same), the test will fail. As a rule – tests involving mock objects (interaction testing) assume more about the inner workings of an object (white box testing) than regular tests (state based). If you'd like to alleviate this problem a bit, there are ways to make the test act like a state based test but still use mock objects to remove some of the dependencies. For example, use Stub objects or mock objects at a level further down the chain of interaction to receive data after it has "left" the main environment on which you test. An example of this might be that you'd like to test an email message, where instead of replacing the mail sender object with a mock, you replace the an object further down the chain (the mail server? The TCP stack?). When stuff is taken one level further away, the odds are not matter what refactoring you do, the outcome on the receiving end, although in some form of "raw" state, should be the same, and so acts much like state based. Only this time the state that you test is located much closer that it would have been without mock objects.. You can also check out the latest presentation slides and code from agile Israel where I demonstrate some dependency breaking techniques: [http://www.agileisrael.com/LinkClick.aspx?link=58&mid=362](http://www.agileisrael.com/LinkClick.aspx?link=58&mid=362 "http") ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 16, 2005 ### [A good tester](https://osherove.com/blog/2005/6/16/a-good-tester.html) - Jun 16, 2005 ### [Mock Objects vs. "Inherit & Override"](https://osherove.com/blog/2005/6/16/mock-objects-vs-quotinherit-amp-overridequot.html) - Jun 13, 2005 ### [Test event logic easily with the EventsVerifier class](https://osherove.com/blog/2005/6/13/test-event-logic-easily-with-the-eventsverifier-class.html) - Jun 5, 2005 ### [Agile Linux? Linux Kernel gets nightly build & Test](https://osherove.com/blog/2005/6/5/agile-linux-linux-kernel-gets-nightly-build-amp-test.html) --- title: "In search of the perfect programmer's font" url: "https://osherove.com/blog/2005/6/13/in-search-of-the-perfect-programmers-font.md" canonical: "https://osherove.com/blog/2005/6/13/in-search-of-the-perfect-programmers-font.html" published: "2005-06-13T22:55:00" updated: "2005-06-13T22:55:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Fonts Fonts Fonts! I've always thought that \"Courier New\" was the new black - the perfect programming font. Yet, I've always had my doubts and have attempted to switch to various other fonts fondly known as \"programmer…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # In search of the perfect programmer's font By Roy Osherove June 13, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 13, 2005; technical details may be outdated. Fonts Fonts Fonts! I've always thought that "Courier New" was the new black - the perfect programming font. Yet, I've always had my doubts and have attempted to switch to various other fonts fondly known as "programmer fonts" several times before. Never was I really successfully. Until I started doing real work on my laptop. Since this was the same laptop I use to do presentations and demos on, I usually have my font on VS set to "Lucida Console" 14, the perfect Demo font. But out of laziness when I was coding I merely set it down to 12 or 10 and surprisingly, I like it very much. But, if you're really into finding out what font is right for you, [check out this amazing collection of Programmer fonts](http://www.lowing.org/fonts/images/showPreview.php). Lots and lots in this preview page. I found this [via this Forum Post on the Bradbury Software](http://www.bradsoft.com/forums/shwmessage.aspx?forumid=7&messageid=11577#bm11631) . Surely, one has got to fit your own needs :) _(more links are available on the forum post)_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 18, 2005 ### [Nice Handwriting fonts in Hebrew](https://osherove.com/blog/2005/6/18/nice-handwriting-fonts-in-hebrew.html) - Jun 17, 2005 ### [\[OT \]It's Yamaka pattern time!](https://osherove.com/blog/2005/6/17/ot-its-yamaka-pattern-time.html) - Jun 7, 2005 ### [MS Digital City, and a funny amateur video commercial](https://osherove.com/blog/2005/6/7/ms-digital-city-and-a-funny-amateur-video-commercial.html) - Jun 5, 2005 ### [Wanna see something really scary? Watch "The Grudge"](https://osherove.com/blog/2005/6/5/wanna-see-something-really-scary-watch-quotthe-grudgequot.html) --- title: "XStream.NET - Serialize almost anything easily?" url: "https://osherove.com/blog/2005/6/13/xstreamnet-serialize-almost-anything-easily.md" canonical: "https://osherove.com/blog/2005/6/13/xstreamnet-serialize-almost-anything-easily.html" published: "2005-06-13T22:05:00" updated: "2005-06-13T22:05:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "XStream.NET provides transparent XML object serialization. Unlike default XmlSerializer, XStream doesn't require any additional metadata (attributes) and could be used with any object. [via dreamprojections ] (via Jon…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # XStream.NET - Serialize almost anything easily? By Roy Osherove June 13, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published June 13, 2005; technical details may be outdated. [_XStream.NET_](http://www.jroller.com/page/CoBraLorD/20050427) _provides transparent XML object serialization. Unlike default XmlSerializer, XStream doesn't require any additional metadata (attributes) and could be used with any object._ \[via [dreamprojections](http://blog.dreamprojections.com/archive/2005/05/16/873.aspx)\] (via [Jon Galloway](https://weblogs.asp.net/jgalloway/archive/2005/06/13/412028.aspx) ) Looks spiffy, even works with IDictionary... ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 19, 2005 ### [New Advanced .NET Debugging Blog](https://osherove.com/blog/2005/6/19/new-advanced-net-debugging-blog.html) - Jun 19, 2005 ### [LibCheck: List breaking changes between assembly versions](https://osherove.com/blog/2005/6/19/libcheck-list-breaking-changes-between-assembly-versions.html) - Apr 9, 2005 ### [Enterprise Library - Configuration AB Memory Leak Patch](https://osherove.com/blog/2005/4/9/enterprise-library-configuration-ab-memory-leak-patch.html) - Apr 8, 2005 ### [\[Free eBook\]FIT for Developing Software: Framework for Integrated Tests](https://osherove.com/blog/2005/4/8/free-ebookfit-for-developing-software-framework-for-integrat.html) --- title: "Test event logic easily with the EventsVerifier class" url: "https://osherove.com/blog/2005/6/13/test-event-logic-easily-with-the-eventsverifier-class.md" canonical: "https://osherove.com/blog/2005/6/13/test-event-logic-easily-with-the-eventsverifier-class.html" published: "2005-06-13T09:42:00" updated: "2005-06-13T09:42:00" tags: ["Agile Related"] author: "Roy Osherove" description: "While working on The Regulator I came up with a class to help me test logic pertaining to events being thrown from the tested class (event throwing logic). I tried to think what would be the easiest way to test such a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test event logic easily with the EventsVerifier class By Roy Osherove June 13, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 13, 2005; technical details may be outdated. While working on The Regulator I came up with a class to help me test logic pertaining to events being thrown from the tested class (event throwing logic). I tried to think what would be the easiest way to test such a thing. Simply registering for the events in your own fixture might be good enough if you don't have to check the values of the arguments being passed in the event ('wasCalled pattern') but when the time comes to check parameter values it gets pretty ugly fast. I wanted to come up with code that looked like this: **\[Test\]   public void OnSomethingHappened\_NoEventThrown()   {    ThrowerUnderTest test = new ThrowerUnderTest();**    **EventsVerifier verifier = new EventsVerifier();    verifier.ExpectNoEvent(test,"SomethingHappened");    test.OnSomethingHappened(false);   }**     **\[Test\]   public void OnSomethingHappened\_EventThrown()   {    ThrowerUnderTest test = new ThrowerUnderTest();**    **EventsVerifier verifier = new EventsVerifier();    verifier.Expect(test,"SomethingHappened");    test.OnSomethingHappened(true);    verifier.Verify();   }** Making this work was not easy. You basically need to create an event handler at runtime for the event requested, receive the event and check the parameters. I wanted to use some of my own code to do this but lucked out and had a great starting point [with this very nice piece of code from CodeProject](http://www.codeproject.com/csharp/CommonEventHandler.asp) that helps you create a generic events handler for any method.  Once you have that, it's a pretty short way to make this work as part of a test suite. Which means, if you'd like to run code like the one above today, you can, by simply downloading this small zip file and using the class inside it. It comes with full unit tests, of course, to help you get up to speed on how it's supposed to work. There is also a small testing example there that looks a lot like the one you just saw here. It's pretty simple, and shouldn't be hard to add to your own project. Note: Currently there is only support for testing one occurrence of the event (You can't make sure that it happens twice in a row, for example, without creating new verifier instances after each event is already raised) [Download here](http://www.teamagile.com/downloads/TeamAgile.EventsVerifier.zip) comments and questions are welcome. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 16, 2005 ### [Mock Objects vs. "Inherit & Override"](https://osherove.com/blog/2005/6/16/mock-objects-vs-quotinherit-amp-overridequot.html) - Jun 15, 2005 ### [Mock Object testing can cause trouble - here's why and possibly how to avoid it](https://osherove.com/blog/2005/6/15/mock-object-testing-can-cause-trouble-heres-why-and-possibly.html) - Jun 5, 2005 ### [Agile Linux? Linux Kernel gets nightly build & Test](https://osherove.com/blog/2005/6/5/agile-linux-linux-kernel-gets-nightly-build-amp-test.html) - Jun 5, 2005 ### [MSF Agile, Testing Legacy code: Latest slides and audio from Agile Israel meeting online](https://osherove.com/blog/2005/6/5/msf-agile-testing-legacy-code-latest-slides-and-audio-from-a.html) --- title: "Israel C# user group: Instrumentation in Windows Operating Systems" url: "https://osherove.com/blog/2005/6/9/israel-c-user-group-instrumentation-in-windows-operating-sys.md" canonical: "https://osherove.com/blog/2005/6/9/israel-c-user-group-instrumentation-in-windows-operating-sys.html" published: "2005-06-09T06:38:00" updated: "2005-06-09T06:38:00" tags: ["Community"] author: "Roy Osherove" description: "Lecturer : Gad J. Meir , Idag , Ltd. Date: Wednesday, June 15, 17:00 - 20:00 Place: Microsoft Israel , IVCUG Hapnina 2 ( Amdocs Building ) Ground Floor Raanana +972 (9) 762-5100 Parking available at the Kurkar parking…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel C\# user group: Instrumentation in Windows Operating Systems By Roy Osherove June 9, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published June 9, 2005; technical details may be outdated. **Lecturer:** **Gad J. Meir**, **[Idag](http://www.idag.co.il/), Ltd.** Date:    Wednesday, June 15, 17:00 - 20:00 Place:   Microsoft Israel  , [IVCUG](http://www.comconix.com/ivcug/)             Hapnina 2  (Amdocs Building)             Ground Floor             Raanana +972 (9) 762-5100          Parking available at the Kurkar parking lot. Proceed straight past the traffic circle and the parking lot will be on your right. Instrumentation gives you the ability to use operating system infrastructure services to receive, in real time, detailed information about how your program is functioning. You get the ability to embed in your program road signs, signals and trace capabilities that can be dynamically and selectively activated and stopped as needed in the customers environment. You can control your instrumentation without recompiling, using tools that are integral part of the operating system. These abilities allow you to receive an exact picture of the operation of your program in real-time and allow you to more easily locate, problems in the runtime environment. The operating system Instrumentation infrastructure allow for the collection of data even if the application is distributed over several computers. Instrumentation provides a bridge that connects your application to your customer’s production  and enterprise environment, and to the operations and management tools that are customarily used in these types of environments (and in computer centers with large numbers of computers). Integrating the Instrumentation mechanisms in the design phase of a program has minimal effect on the development and coding time, but reduces considerably the time dedicated to locating mistakes and analyzing problems in the development, debugging, installation and usage phases. The following topics will be covered in this lecture: - ETW -Event tracing for windows. - Performance Counters. - WMI - Windows Management Instrumentation. - Event Logs. - WER – Windows Error Reporting - PTD - production Time Debugging. ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Jun 20, 2005 ### [June at Agile Israel: Implementing change in an organization + A Bug's Life](https://osherove.com/blog/2005/6/20/june-at-agile-israel-implementing-change-in-an-organization.html) - Jun 19, 2005 ### [\[Audio Interview\] Brian Noyes: Deep .NET Q&A](https://osherove.com/blog/2005/6/19/audio-interview-brian-noyes-deep-net-qampa.html) - Apr 10, 2005 ### [Agile Israel news and updates](https://osherove.com/blog/2005/4/10/agile-israel-news-and-updates.html) - Apr 10, 2005 ### [LinMagazine: Hebrew blogs about technology and development](https://osherove.com/blog/2005/4/10/linmagazine-hebrew-blogs-about-technology-and-development.html) --- title: "Popping up custom forms in the .NET PropertyGrid control" url: "https://osherove.com/blog/2005/6/8/popping-up-custom-forms-in-the-net-propertygrid-control.md" canonical: "https://osherove.com/blog/2005/6/8/popping-up-custom-forms-in-the-net-propertygrid-control.html" published: "2005-06-08T11:55:00" updated: "2005-06-08T11:55:00" tags: [".Net Original"] author: "Roy Osherove" description: "Someone asked me if I knew a way to add a custom dialog to pop up when dealing with the .NET property grid. I didn't, but when I looked it up I found a few good starting points on this matter:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Popping up custom forms in the .NET PropertyGrid control By Roy Osherove June 8, 2005 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 8, 2005; technical details may be outdated. Someone asked me if I knew a way to add a custom dialog to pop up when dealing with the .NET property grid. I didn't, but when I looked it up I found a few good starting points on this matter: - [http://www.codeproject.com/cs/miscctrl/bending\_property.asp](http://www.codeproject.com/cs/miscctrl/bending_property.asp) (in C#) - [http://www.codeproject.com/vb/net/Propertygrid\_Editor.asp](http://www.codeproject.com/vb/net/Propertygrid_Editor.asp) (making the first one work in VB.NET) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 14, 2005 ### [\[Audio Interview\] Steve Cook -Software Factories and Domain Specific Languages](https://osherove.com/blog/2005/7/14/audio-interview-steve-cook-software-factories-and-domain-spe.html) - Jun 22, 2005 ### ["Visual C# .NET compiler could not be created" - Possible solution?](https://osherove.com/blog/2005/6/22/quotvisual-c-net-compiler-could-not-be-createdquot-possible.html) - May 23, 2005 ### [UISafeInvoker: Making UI Thread safe methods - a little more easily](https://osherove.com/blog/2005/5/23/uisafeinvoker-making-ui-thread-safe-methods-a-little-more-ea.html) - May 10, 2005 ### [\[Article\]Simplify Data Layer Unit Testing using Enterprise Services](https://osherove.com/blog/2005/5/10/articlesimplify-data-layer-unit-testing-using-enterprise-ser.html) --- title: "Problem with Log event size" url: "https://osherove.com/blog/2005/6/8/problem-with-log-event-size.md" canonical: "https://osherove.com/blog/2005/6/8/problem-with-log-event-size.html" published: "2005-06-08T09:32:00" updated: "2005-06-08T09:32:00" tags: [] author: "Roy Osherove" description: "I came a across a problem with one of my clients with a win 2003 server that contains custom event logs from applications. The event logs are set to \"overwrite logs as needed\" and also set to a maximum log size of 1GB.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Problem with Log event size By Roy Osherove June 8, 2005 **Historical article** · Originally published June 8, 2005; technical details may be outdated. I came a across a problem with one of my clients with a win 2003 server that contains custom event logs from applications. The event logs are set to "overwrite logs as needed" and also set to a maximum log size of 1GB. Yet still, it never gets past 360 MB (recycles itself). The drive has plenty of disk space and I couldn't find anything on the web regarding this problem. If anyone has come across this I'd appreciate a mention on the comments of this post or through the contact link on my blog. --- title: "Cool Resharper hidden gem" url: "https://osherove.com/blog/2005/6/8/cool-resharper-hidden-gem.md" canonical: "https://osherove.com/blog/2005/6/8/cool-resharper-hidden-gem.html" published: "2005-06-08T09:25:00" updated: "2005-06-08T09:25:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "Oh this is cool. Just found this out: IF you have Resharper installed, put your cursor inside a member in a class. Now press CTRL+ALT+SHIFT+Up/Down arrow ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool Resharper hidden gem By Roy Osherove June 8, 2005 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published June 8, 2005; technical details may be outdated. Oh this is cool. Just found this out: IF you have [Resharper](http://www.jetbrains.com/resharper/) installed, put your cursor inside a member in a class. Now press **CTRL+ALT+SHIFT+Up/Down arrow** . ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Aug 18, 2005 ### [Cool Tip: Show a vertical rule after 80 chars in VS.NET](https://osherove.com/blog/2005/8/18/cool-tip-show-a-vertical-rule-after-80-chars-in-vsnet.html) - Aug 9, 2005 ### [Easy tip to speed up your Virtual PC](https://osherove.com/blog/2005/8/9/easy-tip-to-speed-up-your-virtual-pc.html) - Jun 8, 2005 ### [Logon as a different user on the same local desktop: in win 2003](https://osherove.com/blog/2005/6/8/logon-as-a-different-user-on-the-same-local-desktop-in-win-2.html) - Apr 20, 2005 ### [\[Word Shortcut of the day\] ALT-F3: Quick Auto Text](https://osherove.com/blog/2005/4/20/word-shortcut-of-the-day-alt-f3-quick-auto-text.html) --- title: "Logon as a different user on the same local desktop: in win 2003" url: "https://osherove.com/blog/2005/6/8/logon-as-a-different-user-on-the-same-local-desktop-in-win-2.md" canonical: "https://osherove.com/blog/2005/6/8/logon-as-a-different-user-on-the-same-local-desktop-in-win-2.html" published: "2005-06-08T07:38:00" updated: "2005-06-08T07:38:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "Windows XP has a nice feature where you can log on multiple times as different users concurrently, while at the same machine (switch user). It's a nice feature if you want to test your application as a lower privilege…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Logon as a different user on the same local desktop: in win 2003 By Roy Osherove June 8, 2005 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published June 8, 2005; technical details may be outdated. Windows XP has a nice feature where you can log on multiple times as different users concurrently, while at the same machine (switch user). It's a nice feature if you want to test your application as a lower privilege user, for example (or you could just use "RunAs"..) Windows Server 2003 does not have this (It's a server, is that a good enough reason? not sure..) but you can emulate this behavior by doing a remote desktop connection to the local machine: press start-Run, type "mstsc" and type the name of the local machine in the dialog box. you can then log on as whoever you want while running as the original user. I know - simple, but I just figured this out today... ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Aug 9, 2005 ### [Easy tip to speed up your Virtual PC](https://osherove.com/blog/2005/8/9/easy-tip-to-speed-up-your-virtual-pc.html) - Jun 8, 2005 ### [Cool Resharper hidden gem](https://osherove.com/blog/2005/6/8/cool-resharper-hidden-gem.html) - Apr 20, 2005 ### [\[Word Shortcut of the day\] ALT-F3: Quick Auto Text](https://osherove.com/blog/2005/4/20/word-shortcut-of-the-day-alt-f3-quick-auto-text.html) - Mar 19, 2005 ### [How to use virtual PC and still save lots of room: differencing disks](https://osherove.com/blog/2005/3/19/how-to-use-virtual-pc-and-still-save-lots-of-room-differenci.html) --- title: "MS Digital City, and a funny amateur video commercial" url: "https://osherove.com/blog/2005/6/7/ms-digital-city-and-a-funny-amateur-video-commercial.md" canonical: "https://osherove.com/blog/2005/6/7/ms-digital-city-and-a-funny-amateur-video-commercial.html" published: "2005-06-07T15:14:00" updated: "2005-06-07T15:14:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This Thursday and Friday Microsoft is holding it's \" Digital City \" conference in Tel Aviv Israel. There are many gadgets and gizmos shown there. I'm also presenting there 3 sessions of 30 minutes (err, same session 3…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MS Digital City, and a funny amateur video commercial By Roy Osherove June 7, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 7, 2005; technical details may be outdated. This Thursday and Friday Microsoft is holding it's "[Digital City](http://digitalcity.co.il/)" conference in Tel Aviv Israel. There are many gadgets and gizmos shown there. I'm also presenting there 3 sessions of 30 minutes (err, same session 3 times). I'll be replacing Yosi Taguri's presentations which will be about the Tablet PC and Digital Ink future lifestyle. In short - I'll be showing lots of really cool and funny demos of stuff you can do with Ink and various MS research applications on a tablet. It's pretty fun and gave me the chance to actually use a tablet (I don't own one..). I'm actually getting 3 different tablets for the presentations and I've been carrying one around all this week, using it in meetings and such. I have to say - it's growing on me. There are various usability points that make it very nice to work with, though my hand writing is sometimes too awful to recognize as text. still some way to go on this area, but I definitely see potential there. I present at these times: **Digital Ink and Tablet PC future** Thursday: 12:30 - 13:00                   18:00 - 18:30 Friday:    10:30 - 11:00 speaking of which, Microsoft is holding a digital video commercial contest as part of this shindig. There weren't a lot of entries so far, but one of them was really funny. Check it out; it's called "[Laser Pets](http://www.pc.co.il/digitalcity/ProjectPage.aspx?projectID=36)" :-) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 17, 2005 ### [\[OT \]It's Yamaka pattern time!](https://osherove.com/blog/2005/6/17/ot-its-yamaka-pattern-time.html) - Jun 13, 2005 ### [In search of the perfect programmer's font](https://osherove.com/blog/2005/6/13/in-search-of-the-perfect-programmers-font.html) - Jun 5, 2005 ### [Wanna see something really scary? Watch "The Grudge"](https://osherove.com/blog/2005/6/5/wanna-see-something-really-scary-watch-quotthe-grudgequot.html) - Jun 5, 2005 ### [The Regex phrase of death](https://osherove.com/blog/2005/6/5/the-regex-phrase-of-death.html) --- title: "Agile Linux? Linux Kernel gets nightly build & Test" url: "https://osherove.com/blog/2005/6/5/agile-linux-linux-kernel-gets-nightly-build-amp-test.md" canonical: "https://osherove.com/blog/2005/6/5/agile-linux-linux-kernel-gets-nightly-build-amp-test.html" published: "2005-06-05T23:33:00" updated: "2005-06-05T23:33:00" tags: ["Agile Related"] author: "Roy Osherove" description: "An anonymous reader writes \"The Linux Kernel is now getting automatically tested within 15 minutes of a new version being released, across a variety of hardware and the results are being published for all to see. Martin…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Linux? Linux Kernel gets nightly build & Test By Roy Osherove June 5, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 5, 2005; technical details may be outdated. An anonymous reader writes _"The Linux Kernel is now getting automatically tested within 15 minutes of a new version being released, across a variety of hardware and the [results](http://ftp.kernel.org/pub/linux/kernel/people/mbligh/abat/regression_matrix.html) are being published for all to see. Martin Bligh [announced](http://marc.theaimsgroup.com/?l=linux-kernel&m=111775021327595&w=2) this yesterday, running on top of IBM's internal test automation system. Maybe this will enable the kernel developers to keep up with the 2.6 kernel's rapid pace of change. Looks like it caught one new problem with last night's build already ..."_ \[via [slashdot](http://linux.slashdot.org/linux/05/06/05/1426206.shtml?tid=136&tid=106)\] ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 15, 2005 ### [Mock Object testing can cause trouble - here's why and possibly how to avoid it](https://osherove.com/blog/2005/6/15/mock-object-testing-can-cause-trouble-heres-why-and-possibly.html) - Jun 13, 2005 ### [Test event logic easily with the EventsVerifier class](https://osherove.com/blog/2005/6/13/test-event-logic-easily-with-the-eventsverifier-class.html) - Jun 5, 2005 ### [MSF Agile, Testing Legacy code: Latest slides and audio from Agile Israel meeting online](https://osherove.com/blog/2005/6/5/msf-agile-testing-legacy-code-latest-slides-and-audio-from-a.html) - Jun 2, 2005 ### [Agile Israel May meeting summary](https://osherove.com/blog/2005/6/2/agile-israel-may-meeting-summary.html) --- title: "Wanna see something really scary? Watch \"The Grudge\"" url: "https://osherove.com/blog/2005/6/5/wanna-see-something-really-scary-watch-quotthe-grudgequot.md" canonical: "https://osherove.com/blog/2005/6/5/wanna-see-something-really-scary-watch-quotthe-grudgequot.html" published: "2005-06-05T23:11:00" updated: "2005-06-05T23:11:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I like scary movies. I've been watching scaries for years and years, since childhood. Gore and terror - the more the better. So when I heard there's a new movie called \" The Grudge \" which is essentially a Japanese…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Wanna see something really scary? Watch "The Grudge" By Roy Osherove June 5, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 5, 2005; technical details may be outdated. I like scary movies. I've been watching scaries for years and years, since childhood. Gore and terror - the more the better. So when I heard there's a new movie called "[The Grudge](http://www.apple.com/trailers/sony_pictures/the_grudge/)" which is essentially a Japanese horror flick with American actors, I went for it. Last Friday the 13th (not long ago) we had a bunch of friends over at a relative's house to watch the movie on a big screen with surround sound. My impression: It is **by far** one of the scariest movies I've seen in my life. I've personally "jumped" a number of times and to this day I still get small "fears" of various dark places at our apartment when it's night time. For the record - I don't do that. I don't get all scared and frightened from flicks. But this one was good enough to make me think about it more and more as time goes by. As far as a bunch of friends go, we were not going to be intimidated by this movie, yet throughout, people were giggling and throwing jokes around like we were 2nd graders, if only to try and ease the anxiety of various scenes in the movie (it's not gory - it's big on making you jump though...). Since it's Japanese, you won't find everything you're expecting from it (happy ending? don't make me laugh. Only people who deserve it die? Ha. Is there a way to vanquish the ghosts? don't count on it.) There is no such thing as "closure" in this flick, which makes you wonder and kinda feel weird about it at first. But once you get into it's groove, you start to see various "plots" uncovered as the movie progresses. Some of them are never finished, some of them are not explained. It's just ... different. In any case - if you wanna see something really scary   - watch The Grudge. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 13, 2005 ### [In search of the perfect programmer's font](https://osherove.com/blog/2005/6/13/in-search-of-the-perfect-programmers-font.html) - Jun 7, 2005 ### [MS Digital City, and a funny amateur video commercial](https://osherove.com/blog/2005/6/7/ms-digital-city-and-a-funny-amateur-video-commercial.html) - Jun 5, 2005 ### [The Regex phrase of death](https://osherove.com/blog/2005/6/5/the-regex-phrase-of-death.html) - May 24, 2005 ### [\[OT\] In response to an email spammer/Scammer](https://osherove.com/blog/2005/5/24/ot-in-response-to-an-email-spammerscammer.html) --- title: "What's legacy code?" url: "https://osherove.com/blog/2005/6/5/whats-legacy-code.md" canonical: "https://osherove.com/blog/2005/6/5/whats-legacy-code.html" published: "2005-06-05T22:42:00" updated: "2005-06-05T22:42:00" tags: ["Architecture"] author: "Roy Osherove" description: "When speaking to one of the process engineers at a major company I consult for, I came upon a lovely notion regarding legacy code. We were talking about the perils of testing legacy code, and he turned and asked me…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What's legacy code? By Roy Osherove June 5, 2005 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published June 5, 2005; technical details may be outdated. When speaking to one of the process engineers at a major company I consult for, I came upon a lovely notion regarding legacy code. We were talking about the perils of testing legacy code, and he turned and asked me "Before we get started, do you know what '_Legacy Code'_ means? It's _code that works"._ ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Jun 19, 2005 ### [A very nice .NET architecture blog discovered](https://osherove.com/blog/2005/6/19/a-very-nice-net-architecture-blog-discovered.html) - Jun 18, 2005 ### [Why payroll systems are a pain to design - Temporal Data (and some great resources on it)](https://osherove.com/blog/2005/6/18/why-payroll-systems-are-a-pain-to-design-temporal-data-and-s.html) - Jun 5, 2005 ### [VS 2005 Team System Modeling Strategy and FAQ](https://osherove.com/blog/2005/6/5/vs-2005-team-system-modeling-strategy-and-faq.html) - May 2, 2005 ### [Regulator 2005 & GUI threads goo- news on both?](https://osherove.com/blog/2005/5/2/regulator-2005-amp-gui-threads-goo-news-on-both.html) --- title: "VS 2005 Team System Modeling Strategy and FAQ" url: "https://osherove.com/blog/2005/6/5/vs-2005-team-system-modeling-strategy-and-faq.md" canonical: "https://osherove.com/blog/2005/6/5/vs-2005-team-system-modeling-strategy-and-faq.html" published: "2005-06-05T21:24:00" updated: "2005-06-05T21:24:00" tags: ["Architecture"] author: "Roy Osherove" description: "This looks interesting: Summary: Customers and partners are keen to understand Microsoft's strategy for model-driven development and its support in Visual Studio Team System. When we explain our strategy to them, they…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VS 2005 Team System Modeling Strategy and FAQ By Roy Osherove June 5, 2005 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published June 5, 2005; technical details may be outdated. [This looks interesting:](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/vstsmodel.asp) _**Summary:** Customers and partners are keen to understand Microsoft's strategy for model-driven development and its support in Visual Studio Team System. When we explain our strategy to them, they frequently express interest in some of the same topics, and raise some of the same concerns. In this document we set out our strategy for model-driven development as a series of questions and responses that address these topics and concerns. The first five questions deal with the main pillars of our strategy, which we have described with detailed answers and explanations. Other frequently asked questions are gathered in a conventional FAQ in the last section. (15 printed pages)_ ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Jun 18, 2005 ### [Why payroll systems are a pain to design - Temporal Data (and some great resources on it)](https://osherove.com/blog/2005/6/18/why-payroll-systems-are-a-pain-to-design-temporal-data-and-s.html) - Jun 5, 2005 ### [What's legacy code?](https://osherove.com/blog/2005/6/5/whats-legacy-code.html) - May 2, 2005 ### [Regulator 2005 & GUI threads goo- news on both?](https://osherove.com/blog/2005/5/2/regulator-2005-amp-gui-threads-goo-news-on-both.html) - May 2, 2005 ### [What does SOA really mean? One big hype machine](https://osherove.com/blog/2005/5/2/what-does-soa-really-mean-one-big-hype-machine.html) --- title: "MSF Agile, Testing Legacy code: Latest slides and audio from Agile Israel meeting online" url: "https://osherove.com/blog/2005/6/5/msf-agile-testing-legacy-code-latest-slides-and-audio-from-a.md" canonical: "https://osherove.com/blog/2005/6/5/msf-agile-testing-legacy-code-latest-slides-and-audio-from-a.html" published: "2005-06-05T21:12:00" updated: "2005-06-05T21:12:00" tags: ["Agile Related"] author: "Roy Osherove" description: "The latest slides and audio recordings from the last Agile Israel meeting are now online . The slides are in English, but the audio recordings are in Hebrew (Israel, remember?) MSF Agile (Gadi Meir) (slides) Recording:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSF Agile, Testing Legacy code: Latest slides and audio from Agile Israel meeting online By Roy Osherove June 5, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 5, 2005; technical details may be outdated. The latest slides and audio recordings from [the last Agile Israel meeting are now online](http://www.agileisrael.com/Default.aspx?tabid=58). The slides are in English, but the audio recordings are in Hebrew (Israel, remember?) [MSF Agile (Gadi Meir)](http://www.agileisrael.com/LinkClick.aspx?link=MSF_Agile.zip&mid=380) (slides) [Recording: MSF Agile (1hr 18 min.)](http://www.agileisrael.com/LinkClick.aspx?link=AgileIsrael_GadiMeir_MSFAgile.mp3&mid=380) (Hebrew mp3) [Testing legacy code (Roy Osherove)](http://www.agileisrael.com/LinkClick.aspx?link=TestingLegacyCode.zip&mid=380) (slides + code) [Recording: Testing Legacy Code (1 hr 18 min.)](http://www.agileisrael.com/LinkClick.aspx?link=AgileIsrael_RoyOsherove_LegacyCode.mp3&mid=380) (Hebrew mp3) Follow [this link](http://www.agileisrael.com/Default.aspx?tabid=58) for information about the presenters and about Agile Israel. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 13, 2005 ### [Test event logic easily with the EventsVerifier class](https://osherove.com/blog/2005/6/13/test-event-logic-easily-with-the-eventsverifier-class.html) - Jun 5, 2005 ### [Agile Linux? Linux Kernel gets nightly build & Test](https://osherove.com/blog/2005/6/5/agile-linux-linux-kernel-gets-nightly-build-amp-test.html) - Jun 2, 2005 ### [Agile Israel May meeting summary](https://osherove.com/blog/2005/6/2/agile-israel-may-meeting-summary.html) - May 29, 2005 ### [May at Agile Israel: Legacy Code Testing and MSF Agile](https://osherove.com/blog/2005/5/29/may-at-agile-israel-legacy-code-testing-and-msf-agile.html) --- title: "The Regex phrase of death" url: "https://osherove.com/blog/2005/6/5/the-regex-phrase-of-death.md" canonical: "https://osherove.com/blog/2005/6/5/the-regex-phrase-of-death.html" published: "2005-06-05T20:52:00" updated: "2005-06-05T20:52:00" tags: ["Off Topic", "Regex"] author: "Roy Osherove" description: "\"Some people, when confronted with a problem, think “I know, I'll use regular expressions.” Now they have two problems. \" -Jamie Zawinski, in comp.lang.emacs I swear, if one more person sends me an email, SMS message or…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regex phrase of death By Roy Osherove June 5, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic), [Regex](https://osherove.com/blog/category/regex) **Historical article** · Originally published June 5, 2005; technical details may be outdated.  _"Some people, when confronted with a problem, think “I know, I'll use regular expressions.” Now they have two problems. " -Jamie Zawinski, in comp.lang.emacs_ I swear, if one more person sends me an email, SMS message or MSN IM message quoting this phrase, I will personally choke someone to death. Been there, read that, **move on** people. That's **exactl**y what tools like [The Regulator](https://osherove.com/) and [Expresso](http://www.ultrapico.com/Expresso.htm) are trying to solve, so _get off my back._ Yes, Regex is not for everyone and for everything. So is XML, duh. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 7, 2005 ### [MS Digital City, and a funny amateur video commercial](https://osherove.com/blog/2005/6/7/ms-digital-city-and-a-funny-amateur-video-commercial.html) - Jun 5, 2005 ### [Wanna see something really scary? Watch "The Grudge"](https://osherove.com/blog/2005/6/5/wanna-see-something-really-scary-watch-quotthe-grudgequot.html) - May 24, 2005 ### [\[OT\] In response to an email spammer/Scammer](https://osherove.com/blog/2005/5/24/ot-in-response-to-an-email-spammerscammer.html) - May 5, 2005 ### [Google Web Accelerator](https://osherove.com/blog/2005/5/5/google-web-accelerator.html) --- title: "Announcing: The Regulator Logo Contest" url: "https://osherove.com/blog/2005/6/2/announcing-the-regulator-logo-contest.md" canonical: "https://osherove.com/blog/2005/6/2/announcing-the-regulator-logo-contest.html" published: "2005-06-02T14:27:00" updated: "2005-06-02T14:27:00" tags: ["Cool Tools", "Regex"] author: "Roy Osherove" description: "All details on this and more that you wanted to know: /logocontest Feel creative? Got Illustrator or Photoshop? Feel like donating back to the community? Wanna free cool .NET component? If you answered \"yes\", read on.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Announcing: The Regulator Logo Contest By Roy Osherove June 2, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Regex](https://osherove.com/blog/category/regex) **Historical article** · Originally published June 2, 2005; technical details may be outdated. All details on this and more that you wanted to know: [/logocontest](https://osherove.com/logocontest)  Feel creative? Got Illustrator or Photoshop? Feel like donating back to the community? Wanna free cool .NET component? If you answered "yes", read on. If not, **you're weird** (well, except for the illustrator or photohop part,. many people don't have that.) _What's_ [_The Regulator_](https://osherove.com/)_?_  [_The Regulator_](https://osherove.com/) _is a free regular expression testing and creation tool for developers. It's been a while since it was last updated, but there's a new version coming. In fact, this version is going to go live at Tech-Ed Europe where it will be announced and reviewed at Roy Osherove's Talk on Regular Expressions with Microsoft .NET._ _For the new version, which contains many new enhancements both to usability and functionality, The Regulator needs your help. **The Regulator needs a brand spanking new Logo** to go along it's splash screen, it's website and program and related documents icons._ _Since this is a freeware program (for which much of the source code is already online), **this is your chance to influence and support the effort**. If you have graphical skills, we want you to_ [_submit your ideas_](https://osherove.com/Default.aspx?tabid=90) _in the form of raw graphical files (illustrator or photoshop). The ideas we like the most will be used in the real application with due credits to the creators._ You won't leave empty handed if we choose your graphics. You'll get a free license to a great .NET component for syntax highlighting which will be used in the upcoming version: [SyntaxEditor 3.0](http://www.actiprosoftware.com/Products/DotNet/SyntaxEditor/Default.aspx) from Actipro Software: [http://www.actiprosoftware.com](http://www.actiprosoftware.com/)  **Actipro SyntaxEditor** is a powerful editing control for .NET Windows Forms. It syntax highlights text and provides a number of state-of-the-art features for code editing such as multi-language support, a regex parsing engine, code outlining, undo/redo, split views, IntelliPrompt, and much more. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 19, 2005 ### [LibCheck: List breaking changes between assembly versions](https://osherove.com/blog/2005/6/19/libcheck-list-breaking-changes-between-assembly-versions.html) - Jun 17, 2005 ### [Flickr! - get ready for Flippr! (and a new Israeli dev blogger)](https://osherove.com/blog/2005/6/17/flickr-get-ready-for-flippr-and-a-new-israeli-dev-blogger.html) - Jun 2, 2005 ### [Oracle Tools for VS.NET](https://osherove.com/blog/2005/6/2/oracle-tools-for-vsnet.html) - Jun 2, 2005 ### [Ajax.NET - I'm impressed!](https://osherove.com/blog/2005/6/2/ajaxnet-im-impressed.html) --- title: "Agile Israel May meeting summary" url: "https://osherove.com/blog/2005/6/2/agile-israel-may-meeting-summary.md" canonical: "https://osherove.com/blog/2005/6/2/agile-israel-may-meeting-summary.html" published: "2005-06-02T07:35:00" updated: "2005-06-02T07:35:00" tags: ["Agile Related"] author: "Roy Osherove" description: "We had a fun time at the last Agile Israel meeting. (FYI - slides are already online for download , audio coming soon). Two things bothered me a bit: We had the stroke of luck to be side by side with conference about…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Israel May meeting summary By Roy Osherove June 2, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 2, 2005; technical details may be outdated. We had a fun time at the last [Agile Israel](http://agileisrael.com/) meeting. (FYI - [slides are already online for download](http://www.agileisrael.com/LinkClick.aspx?link=58&mid=362), audio coming soon). Two things bothered me a bit: - We had the stroke of luck to be side by side with conference about "delivering the message" : for people in the room next to you this means "loud and vocal presentation near by, making the current presentation stop every once in a while when the people on the other side applaud the presenter". It wasn't **that** bad, but we did have to stop a couple of times. - The turnout wasn't as great as I expected. about 15-20 people. I guess that's OK for a user group's 3rd meeting ever, but since we've already had meetings with 40 and 50 people I was starting to wonder what's up? Perhaps it was the topics. Why you tell me why you didn't show up :) Overall the sessions went pretty well. My session was about testing legacy code and the various problems this presents. I presented the case for legacy code testing and some legacy refactoring patterns from the most excellent book "[Working effectively with legacy code](https://www.amazon.com/exec/obidos/ASIN/0131177052/iserializable-20)". Gadi's session was about MSF Agile and was very very interesting. [Gadi](http://www.idag.co.il/) is a great presenter with a lot of knowledge. Both sessions were recorded and will be hosted on the site when the audio work is done as mp3. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 5, 2005 ### [Agile Linux? Linux Kernel gets nightly build & Test](https://osherove.com/blog/2005/6/5/agile-linux-linux-kernel-gets-nightly-build-amp-test.html) - Jun 5, 2005 ### [MSF Agile, Testing Legacy code: Latest slides and audio from Agile Israel meeting online](https://osherove.com/blog/2005/6/5/msf-agile-testing-legacy-code-latest-slides-and-audio-from-a.html) - May 29, 2005 ### [May at Agile Israel: Legacy Code Testing and MSF Agile](https://osherove.com/blog/2005/5/29/may-at-agile-israel-legacy-code-testing-and-msf-agile.html) - Apr 25, 2005 ### [2 exciting announcements from yours truly](https://osherove.com/blog/2005/4/25/2-exciting-announcements-from-yours-truly.html) --- title: "Oracle Tools for VS.NET" url: "https://osherove.com/blog/2005/6/2/oracle-tools-for-vsnet.md" canonical: "https://osherove.com/blog/2005/6/2/oracle-tools-for-vsnet.html" published: "2005-06-02T07:13:00" updated: "2005-06-02T07:13:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Seems like this is worth a look if you're doing any work in oracle. tightly integrated \"Add-in\" for Visual Studio .NET that brings the power of the Oracle Database to .NET developers! Use the Oracle Explorer to browse…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Oracle Tools for VS.NET By Roy Osherove June 2, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published June 2, 2005; technical details may be outdated. Seems [like this is worth a look](http://www.oracle.com/technology/tech/dotnet/index.html) if you're doing any work in oracle. _tightly integrated "Add-in" for Visual Studio .NET that brings the power of the Oracle Database to .NET developers!_ _Use the **Oracle Explorer** to browse your Oracle schema, launch one of the many powerful **designers and wizards** to create and alter schema objects, and drag and drop schema objects onto your form to **automatically generate code**._ _There's also a **PL/SQL editor** and **integrated context sensitive online help**, including the Oracle SQL and PL/SQL Users Guides. And with the **Oracle Data Window** you won't have to leave the Visual Studio environment for routine database tasks like inserting and updating Oracle data or testing stored procedures! For the developer that requires maximum flexibility, there's also a **SQL Query Window** for executing any SQL or SQL script you choose._ The only thing missing on the site (and people, this is important!) is **screenshots!** You can get away with much but lack of screenshots kills the story. Just a small FYI. \[via [Wallym's blog](http://weblogs.asp.net/wallym/archive/2005/06/01/409955.aspx)\] ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 17, 2005 ### [Flickr! - get ready for Flippr! (and a new Israeli dev blogger)](https://osherove.com/blog/2005/6/17/flickr-get-ready-for-flippr-and-a-new-israeli-dev-blogger.html) - Jun 2, 2005 ### [Announcing: The Regulator Logo Contest](https://osherove.com/blog/2005/6/2/announcing-the-regulator-logo-contest.html) - Jun 2, 2005 ### [Ajax.NET - I'm impressed!](https://osherove.com/blog/2005/6/2/ajaxnet-im-impressed.html) - May 23, 2005 ### [\[CoolTool\] ASP.NET Development Helper](https://osherove.com/blog/2005/5/23/cooltool-aspnet-development-helper.html) --- title: "Ajax.NET - I'm impressed!" url: "https://osherove.com/blog/2005/6/2/ajaxnet-im-impressed.md" canonical: "https://osherove.com/blog/2005/6/2/ajaxnet-im-impressed.html" published: "2005-06-02T07:10:00" updated: "2005-06-02T07:10:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "I am totally impressed with Ajax.NET . And I'm not even a web programmer at heart :) If you're doing ASP.NET development and find you need to do a lot of rich UI with various asynchronous things going on - this should…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ajax.NET - I'm impressed! By Roy Osherove June 2, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published June 2, 2005; technical details may be outdated. I am totally impressed with [Ajax.NET](http://ajax.schwarz-interactive.de/csharpsample/default.aspx). And I'm not even a web programmer at heart :) If you're doing ASP.NET development and find you need to do a lot of rich UI with various asynchronous things going on - [this](http://ajax.schwarz-interactive.de/csharpsample/default.aspx) should help you out **a lot**! You'll find lots of cool examples on the page I mentioned and here a re a couple more: Brady Gaster : [Ajax + Flickr](http://weblogs.asp.net/bradygaster/archive/2005/06/01/409998.aspx) [CoJax](http://weblogs.asp.net/mschwarz/archive/2005/05/30/409744.aspx) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 2, 2005 ### [Announcing: The Regulator Logo Contest](https://osherove.com/blog/2005/6/2/announcing-the-regulator-logo-contest.html) - Jun 2, 2005 ### [Oracle Tools for VS.NET](https://osherove.com/blog/2005/6/2/oracle-tools-for-vsnet.html) - May 23, 2005 ### [\[CoolTool\] ASP.NET Development Helper](https://osherove.com/blog/2005/5/23/cooltool-aspnet-development-helper.html) - May 5, 2005 ### [Google Web Accelerator](https://osherove.com/blog/2005/5/5/google-web-accelerator.html) --- title: "Not Dead" url: "https://osherove.com/blog/2005/5/30/not-dead.md" canonical: "https://osherove.com/blog/2005/5/30/not-dead.html" published: "2005-05-30T21:44:00" updated: "2005-05-30T21:44:00" tags: [] author: "Roy Osherove" description: "Yes, I know, I stopped writing. Lack of time. Too much things to do. Good trouble. In the next few days I'll have more time. so I'll get back to it. Anyone interested in making the new logo for the next version of The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Not Dead By Roy Osherove May 30, 2005 **Historical article** · Originally published May 30, 2005; technical details may be outdated. Yes, I know, I stopped writing. Lack of time. Too much things to do. Good trouble. In the next few days I'll have more time. so I'll get back to it. Anyone interested in making the new logo for the next version of [The Regulator](https://osherove.com/)? What do you think about making a contest out of it? --- title: "June at IVBUG" url: "https://osherove.com/blog/2005/5/30/june-at-ivbug.md" canonical: "https://osherove.com/blog/2005/5/30/june-at-ivbug.html" published: "2005-05-30T21:36:00" updated: "2005-05-30T21:36:00" tags: [] author: "Roy Osherove" description: "June on the Israel VB User Group (IVBUG), run by Jackie : This month, instead of focusing on the future , we will spend our time looking at building our current applications (with a little bit of looking to the future).…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # June at IVBUG By Roy Osherove May 30, 2005 **Historical article** · Originally published May 30, 2005; technical details may be outdated. **June on the Israel VB User Group (IVBUG), run by [Jackie](http://weblogs.asp.net/jackieg):** This month, instead of focusing on the future, we will spend our time looking at building our current applications (with a little bit of looking to the future).  Leon Langleyben, who is a Senior Consultant at the SRL Group and a really top-notch ASP.NET developer, will be our speaker.  He will spend the entire evening sharing and demonstrating for us various different ASP.NET tips and tricks.  We will explore methods to solve common problems of Web Application development and will discuss ways to boost application performance. As always, we'll have our special "Hatzilu" session at our meeting. So please come prepared to discuss your most frustrating problems (or at least some of them!) and to share some of your own techniques and solutions that you have found useful in your applications. Please remember that it is important for me to know as accurately as possible how many people will be attending each meeting, so that I can arrange for the right amount of food and the proper setup of the chairs.  Please confirm your attendance. See you there !! The June meeting of the Israel Visual Basic User Group http://www.renaissance.co.il/ivbug: June 1, 2005 **Location****:** **Microsoft Israel** **2 Hapnina St****, Ra'anana** **(09) 7625-100** **Floor 0 , Dekel Room** **It is the new building across from Amdocs.** **After the first traffic circle, there is an area for parking on the right.** 17:30 - 18:00   Assembly 18:00 - 18:10   Introduction 18:10 - 19:15    **“ASP.NET Tips and Tricks - Part 1”**                         Leon Langleyben , SRL Group19:15 - 19:30    Break 19:30 – 19:45   "Hatzilu !"                          Open session, with questions and answers/ideas from everyone 19:45 - 20:45   **"ASP.NET Tips and Tricks - Part 2"**                         Leon Langleyben , SRL Group --- title: "May at Agile Israel: Legacy Code Testing and MSF Agile" url: "https://osherove.com/blog/2005/5/29/may-at-agile-israel-legacy-code-testing-and-msf-agile.md" canonical: "https://osherove.com/blog/2005/5/29/may-at-agile-israel-legacy-code-testing-and-msf-agile.html" published: "2005-05-29T07:41:00" updated: "2005-05-29T07:41:00" tags: ["Agile Related"] author: "Roy Osherove" description: "The May meeting of Agile Israel will be as scheduled, although the topics have changed a bit. for a link with full information on the meeting and arrival instructions, go here:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # May at Agile Israel: Legacy Code Testing and MSF Agile By Roy Osherove May 29, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published May 29, 2005; technical details may be outdated. The May meeting of Agile Israel will be as scheduled, although the topics have changed a bit. for a link with full information on the meeting and arrival instructions, go here: [http://www.agileisrael.com/Default.aspx?tabid=58](http://www.agileisrael.com/Default.aspx?tabid=58)  Also, we'll introduce an old-new concept - TDD workshops: hands on workshops with a small number of attendees, teaching the basics of TDD with .NET, Java or C++. More information during the meeting. If you're in Israel, I encourage you to register to the Agile Israel site: www.AgileIsrael.com for email notification on future events and various interesting stuff I have planned.  ****May 31, Tuesday at 18:00**** - 17:30 - Gathering and registration - 18:00 - ****Techniques for testing legacy code**** (Roy Osherove, Team Agile) - __19:15 - break__ - 19:30 - ****What is MSF Agile and why it is the first process template in the new Microsoft Team foundation server Visual Studio 2005.**** (Gadi Meir, Idag) - 21:00 - Raffle and questionnaire Part I: ****Techniques for testing legacy code****  In this talk Roy will review some very interesting techniques one could use to get over some of the more difficult hurdles in testing existing legacy code. For example - how do you test classes that use singletons? statics? private classes? and much much more. Some of The techniques described are taken from the most excellent book [Working Effectively with Legacy Code](https://www.amazon.com/exec/obidos/ASIN/0131177052/iserializable-20 "http") By Michael C. Feathers. Hopefully, we'll have a couple of copies from the book to give away this meeting as raffle prizes. Part II: ****What is MSF Agile and why it is the first process template in the new Microsoft Team foundation server Visual Studio 2005.**** Details: MSF is “not-a-methodology” used for years internally at Microsoft, as a framework for managing software and deployment projects. MSF is actually a group of guidelines and practices, which enables the “team-of-peers”, leading the project, to focus on doing the most important thing at every given time. Using MSF principles makes it easy to discover how far the project is from its target and what is the direction you need to steer the project to get back on track. In the New Team foundation system server part of the new Visual studio 2005 suite, the first process template is MSF Agile. In this lecture I’ll try to explain what MSF is and why Agile MSF is actually a proof to the fact that MSF is an agile frame ware. Agenda: §         What is MSF. §         What are the MSF main Principles. §         What do the Team Foundation server Agile MSF template include. §         How to use Team Foundation server as an agile management tool. §         Q & A ****About Gadi Meir**** Gadi has worked in the computer industry for many years (his second computer language was assembly of PDP 8). His main specialty is using MSF (Microsoft solution framework) principles to identifying errors and problems in the development/deployment processes and procedures. His main goal is trying to prevent these types of problems in the project’s planning phase. Unfortunately he is usually summoned for the post mortem phase, a fact that leads directly to his second specialty which is analyzing dumps, blue screens and other low level plumbing tasks. His favorite function is to accompany a project as a technical consultant/guide. In this position he is exposed to a wide variety of interesting problems, where he then has to find creative solutions. Gad is an official certified MSF trainer and a certified MSF practitioner. Gad insists on teaching from time to time and he is currently the R&D Manager at IDAG ltd. ([http://www.idag.co.il](http://www.idag.co.il/ "http")) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 5, 2005 ### [MSF Agile, Testing Legacy code: Latest slides and audio from Agile Israel meeting online](https://osherove.com/blog/2005/6/5/msf-agile-testing-legacy-code-latest-slides-and-audio-from-a.html) - Jun 2, 2005 ### [Agile Israel May meeting summary](https://osherove.com/blog/2005/6/2/agile-israel-may-meeting-summary.html) - Apr 25, 2005 ### [2 exciting announcements from yours truly](https://osherove.com/blog/2005/4/25/2-exciting-announcements-from-yours-truly.html) - Apr 16, 2005 ### [\[CoolTool\] SWExplorerAutomation: Automate web GUI unit testing for IE](https://osherove.com/blog/2005/4/16/cooltool-swexplorerautomation-automate-web-gui-unit-testing.html) --- title: "[OT] In response to an email spammer/Scammer" url: "https://osherove.com/blog/2005/5/24/ot-in-response-to-an-email-spammerscammer.md" canonical: "https://osherove.com/blog/2005/5/24/ot-in-response-to-an-email-spammerscammer.html" published: "2005-05-24T13:21:00" updated: "2005-05-24T13:21:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Please disregard this post. I just want this guy to get as much spam as possible. [email removed] and I'll be keeping a list of email spammers on my homepage for various spam robots to find right over here:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] In response to an email spammer/Scammer By Roy Osherove May 24, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 24, 2005; technical details may be outdated. Please disregard this post. I just want this guy to get as much spam as possible. \[email removed\] and I'll be keeping a list of email spammers on my homepage for various spam robots to find right over here: [/Default.aspx?tabid=59](https://osherove.com/Default.aspx?tabid=59) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 5, 2005 ### [Wanna see something really scary? Watch "The Grudge"](https://osherove.com/blog/2005/6/5/wanna-see-something-really-scary-watch-quotthe-grudgequot.html) - Jun 5, 2005 ### [The Regex phrase of death](https://osherove.com/blog/2005/6/5/the-regex-phrase-of-death.html) - May 5, 2005 ### [Google Web Accelerator](https://osherove.com/blog/2005/5/5/google-web-accelerator.html) - May 3, 2005 ### [RSS support from YNet Israel - Finally](https://osherove.com/blog/2005/5/3/rss-support-from-ynet-israel-finally.html) --- title: "[CoolTool] ASP.NET Development Helper" url: "https://osherove.com/blog/2005/5/23/cooltool-aspnet-development-helper.md" canonical: "https://osherove.com/blog/2005/5/23/cooltool-aspnet-development-helper.html" published: "2005-05-23T23:36:00" updated: "2005-05-23T23:36:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "If you're an ASP.NET developer - this tool should save you many hours of debugging and configuration testing. A LOT. It's a browser helper object for IE that shows you lots of interesting stuff about your ASP.NET page.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[CoolTool\] ASP.NET Development Helper By Roy Osherove May 23, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 23, 2005; technical details may be outdated. If you're an ASP.NET developer - [this tool](http://www.nikhilk.net/ASPNETDevHelperTool.aspx) should save you many hours of debugging and configuration testing. A LOT. It's a browser helper object for IE that shows you lots of interesting stuff about your ASP.NET page. _"love it when I get to kill two birds with one stone. So I decided to sit down and write a little browser extension to provide an indication of debug mode within the browser. The screenshots below show what I ended up with. You can_ [_download the binaries_](http://www.nikhilk.net/Content/Samples/WebDevInfo.zip) _and run this locally on your end..._ _As you can see from the screenshots, I went along and added in some additional tools such as the ability to hide trace information from the page (useful if that interferes with your page layout), and view it in a separate window, as well as the ability to see view state in a decoded form. The latter is especially useful for control developers to analyze their view state and control state usage. I already spotted a couple of things we could potentially pack better in GridView."_ (via [Dino](http://weblogs.asp.net/despos/archive/2005/05/12/406579.aspx)) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 2, 2005 ### [Oracle Tools for VS.NET](https://osherove.com/blog/2005/6/2/oracle-tools-for-vsnet.html) - Jun 2, 2005 ### [Ajax.NET - I'm impressed!](https://osherove.com/blog/2005/6/2/ajaxnet-im-impressed.html) - May 5, 2005 ### [Google Web Accelerator](https://osherove.com/blog/2005/5/5/google-web-accelerator.html) - May 2, 2005 ### [Regulator 2005 & GUI threads goo- news on both?](https://osherove.com/blog/2005/5/2/regulator-2005-amp-gui-threads-goo-news-on-both.html) --- title: "UISafeInvoker: Making UI Thread safe methods - a little more easily" url: "https://osherove.com/blog/2005/5/23/uisafeinvoker-making-ui-thread-safe-methods-a-little-more-ea.md" canonical: "https://osherove.com/blog/2005/5/23/uisafeinvoker-making-ui-thread-safe-methods-a-little-more-ea.html" published: "2005-05-23T19:55:00" updated: "2005-05-23T19:55:00" tags: [".Net Original"] author: "Roy Osherove" description: "Update : See at the end of this post for an important issue you need to know about if you're going to use this solution. Here's something I've been using in my programs lately. I've been pretty darn annoyed with the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # UISafeInvoker: Making UI Thread safe methods - a little more easily By Roy Osherove May 23, 2005 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 23, 2005; technical details may be outdated. **Update**_: See at the end of this post for an important issue you need to know about if you're going to use this solution._ Here's something I've been using in my programs lately. I've been pretty darn annoyed with the whole threading issue in Winforms - that is - lack of property semantics to take care of it. So, I created a hack, It's a little ugly, but it lets me write much less code to make my GUI methods in forms thread safe (UI thread safe, I mean). The main problem is that when you invoke a method on a form that deals with the GUI on that form (changes text or does something to a visual property of a control) it may work and it may not, mostly not. It may hang in a weird way or any million other weird things might happen. In fact, in .NET 2.0 you'll be getting an \*exception\* if a thread other that the UI thread will be invoking some UI action, so this needs to be taken care of. Here's how you take care of it today: Assume the method: private void EnableButtons(bool enabled) {    cmdDoSomething.Enabled = enabled;    cmdStop.Enabled = !enabled; } If you get a non GUI thread to run this method your application might hang and die. So what you do is this: **private delegate void enableButtonsDelegate(bool enabled);** private void EnableButtons(bool enabled) {    **if(InvokeRequired)**    **{**       **Invoke(new enableButtonsDelegate(EnableButtons),enabled);**          **return;**    **}**    cmdDoSomething.Enabled = enabled;    cmdStop.Enabled = !enabled; } that's 4 ugly lines of code you have to write. And you need to create such a delegate for each special method signature you might want to make thread safe (the alternative is to have a standard on thread safe methods and use the same delegate type each time, but that also is pretty ugly and hard to maintain. So, here's my way: [You download my Safe Invoker class from this location](http://www.teamagile.com/downloads/safeinvoker.zip), and then go on to write the method code like this: private void EnableButtons(bool enabled) { **if(Safe.Invoke(this,enabled)**    **return;** cmdDoSomething.Enabled = enabled; cmdStop.Enabled = !enabled; } Done. Here are some other use cases for this: public void ThreadSafeEmptyMethod()  {   **if(Safe.Invoke(this))    return;**      //do whatever GUI things you want here!  }    public void ThreadSafeMethodWithParams(int i, string str)  {   **if(Safe.Invoke(this,i,str))    return;**      //do whatever GUI things you want here!  }    public int ThreadSafeMethodWithParamsAndReturnValue(int i, string str)  {   **if(InvokeRequired)    return Safe.InvokeAndReturn(this,i,str);**          //do whatever GUI things you want here!   TextBox1.Text = "whatever";   return 1;  }   Under the covers there is a little reflection going on a little ugly trick in the Safe class, but the main thing to know is that when you're dealing with a different thread, performance is not really the issue here anyway, plus, it works great and you don't really notice anything in the UI (I should know - the new Regulator 2005 is using this stuff all over). The class itself is pretty small (the solution is quite simple), but I have a whole other story about making this work \*the hard way\* which I'll tell when I get more time 9you \*did notice I have much less time than I used to, right?;) ) **Update:** [Stephen Toub](http://blogs.msdn.com/toub/) has alerted me to an interesting issue one should consider when using this technique which I had not considered: **Inlining by the compiler**. This issue might occur if your "thread safe" method is very small (couple of lines or so). Running in debug mode the code will work nicely, but there is cause for concern that when running is release mode the compiler might "inline" method calls so that "Safe.Invoke" might actually try to invoke a method that happened "before" the actual "thread safe method" such as this. A short example:  " class Program      {       static void Main(string\[\] args)         {            DoSomething1();         }       static void DoSomething1()          {             DoSomething2();          }         static void DoSomething2()          {             Console.WriteLine(Safe.getOriginalCallingMethod().Name);          }             ...       } Put this into a test.cs file.  First compile it with:             **% csc.exe /o- /debug+ test.cs **Run test.exe and you’ll get the output you expect:             **DoSomething2** Now compile it with:             **% csc.exe test.cs** Run test.exe and you’ll get:             **Main** If you really want to do this, you’ll need to tell the JIT not to inline the relevant methods using **MethodImplOptions.NoInlining**.  That, of course, is its own perf hit." Note that this might never occur for you in the program. If you do get a problem, simply out the NoInlining option attribute on the method you are having problems with and that should solve it. **Update 2:** "So",  I replied with an email to Stephen, "couldn't regular  "Invoke" calls like we used to do \*before\* my amazing UISafeInvoker class be inlined just as well?" (The second code snippet in this post shows this method) to which Stephen promptly replied with an email which was interesting and important so I got permission to post the answer here, provided that I explain that this was written "ad-hoc" and may not have been thought out all through. Here it is: "Inlining can certainly occur, but that only affects the call site.  The target method still exists in the assembly, it’s just that when the JIT generates code for a call site to the method (and it can decide on a call site by call site basis whether to inline, even if it’s the same target method), it might decide to inline it, in which case the generated machine code is inlined into the caller (in addition to any other places it might be).  That’s why inlining is only done for smaller functions... inlining can improve perf by removing the overhead associated with calling a method, but it also increases the working set size, which is why the JIT needs all these heuristics to guess when it’s a good time or not.  Visual C++ 2005 takes advantage of PGO to use runtime probes to determine what functions should be inlined and where, rather than having to make these sorts of guesses based purely on compile time information.  Theoretically, a JIT compiler can re-compile a method when it finds it’s made a poor choice in terms of inlining, but the current version does not do that.  In any event, since inlining only affects a call site and not the target method itself, it’s fine to use Control.Invoke to invoke the method, even if it might have been inlined elsewhere.  The problem you’re running into is that you’re explicitly looking at a stack trace... inlined methods won’t show up as themselves in a stack trace, since they were never called but rather had their code inlined into the caller.  So if you have runtime behavior that’s based on calling methods included in a stack trace, you’ll run into problems when those methods are inlined." So there :) This should make for a nice article.... ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 22, 2005 ### ["Visual C# .NET compiler could not be created" - Possible solution?](https://osherove.com/blog/2005/6/22/quotvisual-c-net-compiler-could-not-be-createdquot-possible.html) - Jun 8, 2005 ### [Popping up custom forms in the .NET PropertyGrid control](https://osherove.com/blog/2005/6/8/popping-up-custom-forms-in-the-net-propertygrid-control.html) - May 10, 2005 ### [\[Article\]Simplify Data Layer Unit Testing using Enterprise Services](https://osherove.com/blog/2005/5/10/articlesimplify-data-layer-unit-testing-using-enterprise-ser.html) - Apr 9, 2005 ### [\[Recording\] Roy Osherove on Software Factories and Domain Specific Languages](https://osherove.com/blog/2005/4/9/recording-roy-osherove-on-software-factories-and-domain-spec.html) --- title: "Jackie Goldstein Rocks" url: "https://osherove.com/blog/2005/5/23/jackie-goldstein-rocks.md" canonical: "https://osherove.com/blog/2005/5/23/jackie-goldstein-rocks.html" published: "2005-05-23T19:27:00" updated: "2005-05-23T19:27:00" tags: [] author: "Roy Osherove" description: "Looks like Jackie Goldstein has beat me to being the first Israeli on .NET rocks . His show will air on the 30th of this month. Jackie is the founder of IVBUG - the largest and oldest user group in Israel which deals…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Jackie Goldstein Rocks By Roy Osherove May 23, 2005 **Historical article** · Originally published May 23, 2005; technical details may be outdated. Looks like [Jackie Goldstein](http://weblogs.asp.net/jackieg) has beat me to being the first Israeli on [.NET rocks](http://www.dotnetrocks.com/). His show will air on the 30th of this month. Jackie is the founder of [IVBUG](http://www.renaissance.co.il/ivbug) - the largest and oldest user group in Israel which deals with VB and VB.NET. He's also a regional director in Israel for VB and talks in many many conferences. As he's one of the experts regarding ADO.NET, I'm pretty sure the show will be a very interesting one relating to (probably) ADO.NET 2.0. Go Jackie! :) --- title: "Yoel Arnon - MSMQ Guru" url: "https://osherove.com/blog/2005/5/23/yoel-arnon-msmq-guru.md" canonical: "https://osherove.com/blog/2005/5/23/yoel-arnon-msmq-guru.html" published: "2005-05-23T19:24:00" updated: "2005-05-23T19:24:00" tags: [] author: "Roy Osherove" description: "Last week I attended a presentation at the Visual C# user group in Israel. The topic was MSMQ use for connecting applications. The presentations was given by Yoel Arnon - who was part of the original team that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Yoel Arnon - MSMQ Guru By Roy Osherove May 23, 2005 **Historical article** · Originally published May 23, 2005; technical details may be outdated. Last week I attended a presentation at the Visual C# user group in Israel. The topic was MSMQ use for connecting applications. The presentations was given by [Yoel Arnon](http://www.msmq.biz/) \- who was part of the original team that implemented the first versions of MSMQ at Microsoft(based in Israel) . Yoel proved he knows his stuff and showed some very cool demos. Personally I felt the presentation could have been done even more interesting that it was but it certainly gave a good idea of what coolness could be achieved using MSMQ and .NET. As an aside, [Yoel's blog](http://spaces.msn.com/members/msmq/PersonalSpace.aspx?_c=) looks to be a great resource on everything that is MSMQ, and I'd recommend it as a favorite for any technical savvy developer who wants to get into internals on this issue. --- title: "[Article]Simplify Data Layer Unit Testing using Enterprise Services" url: "https://osherove.com/blog/2005/5/10/articlesimplify-data-layer-unit-testing-using-enterprise-ser.md" canonical: "https://osherove.com/blog/2005/5/10/articlesimplify-data-layer-unit-testing-using-enterprise-ser.html" published: "2005-05-10T19:12:00" updated: "2005-05-10T19:12:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "My first MSDN Magazine article is (finally!) up: Simplify Data Layer Unit Testing using Enterprise Services \"Despite all the hype surrounding unit testing and Test Driven Development (TDD) many developers don't see them…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Article\]Simplify Data Layer Unit Testing using Enterprise Services By Roy Osherove May 10, 2005 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published May 10, 2005; technical details may be outdated. My first MSDN Magazine article is (finally!) up: [Simplify Data Layer Unit Testing using Enterprise Services](http://msdn.microsoft.com/msdnmag/issues/05/06/UnitTesting/default.aspx) _"Despite all the hype surrounding unit testing and Test Driven Development (TDD) many developers don't see them as useful processes that are applicable to the production of real-world applications. One reason is that once you get down to the intricacies of application development, all of the easy testing you've heard so much about can vanish. You may find yourself writing unit tests that are hard to implement against real code. This is often the case in database testing, where TDD can quickly lose its appeal, and force you to revert your processes to the previous real-world methodologies your team employed. Here, I'll present some techniques to make your testing process easier, even when developing real-world applications, using unit testing."_ This should sum up nicely the stuff that I've learned in this arena over the past year or so and should pose the "definitive overview" on this subject for .NET developers. Hopefully. PS Just in case you're wondering - that one and only "review" down below the article giving the perfect grade to this article - Yeah, that's mine :-) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 8, 2005 ### [Popping up custom forms in the .NET PropertyGrid control](https://osherove.com/blog/2005/6/8/popping-up-custom-forms-in-the-net-propertygrid-control.html) - May 23, 2005 ### [UISafeInvoker: Making UI Thread safe methods - a little more easily](https://osherove.com/blog/2005/5/23/uisafeinvoker-making-ui-thread-safe-methods-a-little-more-ea.html) - Apr 9, 2005 ### [\[Recording\] Roy Osherove on Software Factories and Domain Specific Languages](https://osherove.com/blog/2005/4/9/recording-roy-osherove-on-software-factories-and-domain-spec.html) - Mar 3, 2005 ### [Solving Binary serialization versioning conflicts](https://osherove.com/blog/2005/3/3/solving-binary-serialization-versioning-conflicts.html) --- title: "Google Web Accelerator" url: "https://osherove.com/blog/2005/5/5/google-web-accelerator.md" canonical: "https://osherove.com/blog/2005/5/5/google-web-accelerator.html" published: "2005-05-05T20:28:00" updated: "2005-05-05T20:28:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "OK, has anyone checked out the new Google Web Accelerator application? I guess this NY times is not so off track after all... Gates should get busy quick." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Google Web Accelerator By Roy Osherove May 5, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 5, 2005; technical details may be outdated. OK, has anyone checked out the new [Google Web Accelerator](http://webaccelerator.google.com/) application? I guess [this NY times](http://www.fortune.com/fortune/technology/articles/0,15114,1050065-1,00.html) is not so off track after all... Gates should get busy quick. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 2, 2005 ### [Ajax.NET - I'm impressed!](https://osherove.com/blog/2005/6/2/ajaxnet-im-impressed.html) - May 23, 2005 ### [\[CoolTool\] ASP.NET Development Helper](https://osherove.com/blog/2005/5/23/cooltool-aspnet-development-helper.html) - May 2, 2005 ### [Regulator 2005 & GUI threads goo- news on both?](https://osherove.com/blog/2005/5/2/regulator-2005-amp-gui-threads-goo-news-on-both.html) - Apr 16, 2005 ### [\[CoolTool\] SWExplorerAutomation: Automate web GUI unit testing for IE](https://osherove.com/blog/2005/4/16/cooltool-swexplorerautomation-automate-web-gui-unit-testing.html) --- title: "RSS support from YNet Israel - Finally" url: "https://osherove.com/blog/2005/5/3/rss-support-from-ynet-israel-finally.md" canonical: "https://osherove.com/blog/2005/5/3/rss-support-from-ynet-israel-finally.html" published: "2005-05-03T14:48:00" updated: "2005-05-03T14:48:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Now, when my parents ask me what RSS is, I can just point them to the new set of RSS feeds provided by one of Israel's largest online news sites - YNet (from one of the three major newspapers in Israel). And, FINALLY, a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # RSS support from YNet Israel - Finally By Roy Osherove May 3, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 3, 2005; technical details may be outdated. Now, when my parents ask me what RSS is, I can just point them to [the new set of RSS feeds](http://www.ynet.co.il/articles/0,7340,L-3080241,00.html#n) provided by one of Israel's largest online news sites  - [YNet](http://www.ynet.co.il/)(from one of the three major newspapers in Israel). And, FINALLY, [a good description of RSS](http://www.ynet.co.il/articles/1,7340,L-2858430,00.html) for non-techies, in **Hebrew**. It takes a marketing department (and thus, money) to explain it, so I'm glad this is slowly becoming mainstream. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 24, 2005 ### [\[OT\] In response to an email spammer/Scammer](https://osherove.com/blog/2005/5/24/ot-in-response-to-an-email-spammerscammer.html) - May 5, 2005 ### [Google Web Accelerator](https://osherove.com/blog/2005/5/5/google-web-accelerator.html) - May 3, 2005 ### [When training classes go horribly wrong](https://osherove.com/blog/2005/5/3/when-training-classes-go-horribly-wrong.html) - Apr 20, 2005 ### [Using Emacs: A masochist's guide](https://osherove.com/blog/2005/4/20/using-emacs-a-masochists-guide.html) --- title: "When training classes go horribly wrong" url: "https://osherove.com/blog/2005/5/3/when-training-classes-go-horribly-wrong.md" canonical: "https://osherove.com/blog/2005/5/3/when-training-classes-go-horribly-wrong.html" published: "2005-05-03T10:58:00" updated: "2005-05-03T10:58:00" tags: ["Off Topic"] author: "Roy Osherove" description: "One of the worst things you can experience as an instructor is to teach a class of people who just don't give a damn. This happened to me a few weeks ago. These people were coming in late, (sometimes an hour late!),…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # When training classes go horribly wrong By Roy Osherove May 3, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 3, 2005; technical details may be outdated. One of the worst things you can experience as an instructor is to teach a class of people who just don't give a damn. This happened to me a few weeks ago. These people were coming in late, (sometimes an hour late!), fall asleep on the keyboard, check email and "do their own exercise" instead of the one given, and basically do anything they want. The urge fell upon me to just scream "Well, if you don't wanna do this class, why don't you just go home now??" \*sigh\*. So what do yo do with a class that does not care? especially if this is  subject material which you need to \*want\* to learn - test driven development. Do you just let them go on their business and concentrate on the few that \*are\* paying attention? Do you just make it "training day" and make everyone conform to the current work needed to be done? What do you do with the "star" of the class - that knows everything and just discourages everyone from doing it at all, or declares "this is crap!"? How long to you "argue" with them? or do you just let it slide? won't that look like you don't have the tools to face them with real world experience or something? I \*love\* teaching people, but that class a few weeks ago was one of the worst cases where I just wanted it to end. Badly. People - if you're sending your employees in for training - make sure they \*want\* to do it. Or else it's just a day off for them, and the instructor. Gosh, I think I need to take things a little more personally. I guess the stuff is just to near and dear to my heart. What do you think? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 5, 2005 ### [Google Web Accelerator](https://osherove.com/blog/2005/5/5/google-web-accelerator.html) - May 3, 2005 ### [RSS support from YNet Israel - Finally](https://osherove.com/blog/2005/5/3/rss-support-from-ynet-israel-finally.html) - Apr 20, 2005 ### [Using Emacs: A masochist's guide](https://osherove.com/blog/2005/4/20/using-emacs-a-masochists-guide.html) - Apr 20, 2005 ### [The spin on passover](https://osherove.com/blog/2005/4/20/the-spin-on-passover.html) --- title: "Regulator 2005 & GUI threads goo- news on both?" url: "https://osherove.com/blog/2005/5/2/regulator-2005-amp-gui-threads-goo-news-on-both.md" canonical: "https://osherove.com/blog/2005/5/2/regulator-2005-amp-gui-threads-goo-news-on-both.html" published: "2005-05-02T19:21:00" updated: "2005-05-02T19:21:00" tags: ["Architecture", "Cool Tools", "Regex"] author: "Roy Osherove" description: "I've kept mostly quiet for the past N weeks because of holidays+illness. It gave me time to geek out and start working on a fresh new version of The Regulator (aptly dubbed \"Regulator 2005\"). Boy am I a happy camper.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Regulator 2005 & GUI threads goo- news on both? By Roy Osherove May 2, 2005 In [Architecture](https://osherove.com/blog/category/architecture), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Regex](https://osherove.com/blog/category/regex) **Historical article** · Originally published May 2, 2005; technical details may be outdated. I've kept mostly quiet for the past N weeks because of holidays+illness. It gave me time to geek out and start working on a fresh new version of [The Regulator](https://osherove.com/) (aptly dubbed "Regulator 2005"). Boy am I a happy camper. I'm coding nights, I'm coding at lunch breaks, I'm thrilled to be solving new problems. I plan to "Launch" it at TechEd Europe with maybe a small contest to get a special prize - a customized version of The Regulator for the winner with special splash page and all. What do you think? For example,  one of the cool things I had to solve was the whole GUI threading glue that you have to do when doing a truly rich GUI app with actually \*responds\* to user actions while doing something. I developed a whole "application block" (or maybe just a helper class or two..) that allow you do solve the threading thing more easily. A sneak preview might look like this: **public void DoSomeGUIStuff()** **{**    **if(invoker.InvokeSafely(this))**       **return;**    **TextBox1.Text = "Something";** **}** **public void DoSomeGUIStuff(object sender,EventArgs e)** **{**    **if(invoker.InvokeSafely(this,sender,e))**       **return;**    **TextBox1.Text = "Something";** **}** At the simplest case this is all you need to make the method UI thread safe. For more complex methods, it gets, well, a little more complex, but not very much. There's more, but I'll save that for when I've tested it thoroughly enough. Oh, did I mention that it was written with unit tests? ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Jun 5, 2005 ### [What's legacy code?](https://osherove.com/blog/2005/6/5/whats-legacy-code.html) - Jun 5, 2005 ### [VS 2005 Team System Modeling Strategy and FAQ](https://osherove.com/blog/2005/6/5/vs-2005-team-system-modeling-strategy-and-faq.html) - May 2, 2005 ### [What does SOA really mean? One big hype machine](https://osherove.com/blog/2005/5/2/what-does-soa-really-mean-one-big-hype-machine.html) - Apr 29, 2005 ### [What does Indigo really mean?](https://osherove.com/blog/2005/4/29/what-does-indigo-really-mean.html) --- title: "What does SOA really mean? One big hype machine" url: "https://osherove.com/blog/2005/5/2/what-does-soa-really-mean-one-big-hype-machine.md" canonical: "https://osherove.com/blog/2005/5/2/what-does-soa-really-mean-one-big-hype-machine.html" published: "2005-05-02T17:44:00" updated: "2005-05-02T17:44:00" tags: ["Architecture"] author: "Roy Osherove" description: "Clemens Vasters, at an unusual leap of humility, declares something which to me is one of the biggest \"DUH\"s of the past year: Service Oriented Architecture is just one big hype machine , it talks about connecting…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What does SOA really mean? One big hype machine By Roy Osherove May 2, 2005 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published May 2, 2005; technical details may be outdated. Clemens Vasters, at an unusual leap of humility, declares something which to me is one of the biggest "DUH"s of the past year: [Service Oriented Architecture is just one big hype machine](http://staff.newtelligence.net/clemensv/PermaLink,guid,535d4a96-2cc3-4306-8b56-9a96c7c6fa39.aspx), it talks about connecting systems, which people have done before, but it's not really about architecture, just about an _orientation for connected systems._ It's still damn near impossible to do it, and the tools are not there yet to accomplish fully distributed and autonomous systems, yet. _"When you look at what’s being advertised as “serviced oriented architecture”, you see either the marketing-glorified repackaging of Ethernet, TCP/IP, and LDAP (“Enterprise Service Bus”), or architectural blueprints that looks strikingly similar to things that people have been doing for a long time with DCE, CORBA, J2EE, COM, or mainframe technologies. What’s different now is that it is easier, cheaper and likely more productive to create bridges between systems. And even that comes at a significant price at this point. Realistically, the (web) services stacks yet have to catch up with these “proprietary” stacks in terms of reliability, security, and performance. "_ _"I’ve started to use “SO/A” to make clear that I mean architecture that benefits from service orientation. "_ _But when I see or hear SOA discussed, people speak mostly about technology and software architecture. In that context, selling “SOA” as a completely new software architecture school does not (no longer) make sense to me"_ Selling it as a whole new software paradigm, architecture and whatever else, to me is still something to be wary of. I see places offering courses on Service Oriented Architecture, but I don't really see anyone doing a real system with all the core values mentioned. There are efforts, but it's still one hell of a deal to make it happen and I'm pretty sure noone can actually "teach" it today. It's still one of the biggest "unknown unknowns" these days, foggy and blurry - that's the most dangerous thing to get attached to. ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Jun 5, 2005 ### [VS 2005 Team System Modeling Strategy and FAQ](https://osherove.com/blog/2005/6/5/vs-2005-team-system-modeling-strategy-and-faq.html) - May 2, 2005 ### [Regulator 2005 & GUI threads goo- news on both?](https://osherove.com/blog/2005/5/2/regulator-2005-amp-gui-threads-goo-news-on-both.html) - Apr 29, 2005 ### [What does Indigo really mean?](https://osherove.com/blog/2005/4/29/what-does-indigo-really-mean.html) - Apr 14, 2005 ### [Aspect Oriented .NET frameworks - more than I thought](https://osherove.com/blog/2005/4/14/aspect-oriented-net-frameworks-more-than-i-thought.html) --- title: "What does Indigo really mean?" url: "https://osherove.com/blog/2005/4/29/what-does-indigo-really-mean.md" canonical: "https://osherove.com/blog/2005/4/29/what-does-indigo-really-mean.html" published: "2005-04-29T12:58:00" updated: "2005-04-29T12:58:00" tags: ["Architecture"] author: "Roy Osherove" description: "Nice writing by Rocky Lhotka here about what Indigo really means, and why all the hype surrounding it might be meaningless until we start using it for bigger and better things. Very interesting way of putting things in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What does Indigo really mean? By Roy Osherove April 29, 2005 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published April 29, 2005; technical details may be outdated. Nice writing by Rocky Lhotka [here](http://www.lhotka.net/WeBlog/PermaLink.aspx?guid=7849bd66-21b9-4731-9a22-1d617f0f9455) about what Indigo **really** means, and why all the hype surrounding it might be meaningless until we start using it for bigger and better things. Very interesting way of putting things in perspective. If you read just one thing about Indigo - it should be this. ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - May 2, 2005 ### [Regulator 2005 & GUI threads goo- news on both?](https://osherove.com/blog/2005/5/2/regulator-2005-amp-gui-threads-goo-news-on-both.html) - May 2, 2005 ### [What does SOA really mean? One big hype machine](https://osherove.com/blog/2005/5/2/what-does-soa-really-mean-one-big-hype-machine.html) - Apr 14, 2005 ### [Aspect Oriented .NET frameworks - more than I thought](https://osherove.com/blog/2005/4/14/aspect-oriented-net-frameworks-more-than-i-thought.html) - Apr 9, 2005 ### [\[Recording\] Roy Osherove on Software Factories and Domain Specific Languages](https://osherove.com/blog/2005/4/9/recording-roy-osherove-on-software-factories-and-domain-spec.html) --- title: "2 exciting announcements from yours truly" url: "https://osherove.com/blog/2005/4/25/2-exciting-announcements-from-yours-truly.md" canonical: "https://osherove.com/blog/2005/4/25/2-exciting-announcements-from-yours-truly.html" published: "2005-04-25T10:37:00" updated: "2005-04-25T10:37:00" tags: ["Agile Related"] author: "Roy Osherove" description: "I'm thrilled to tell the world that my first ever article on MSDN Magazine is going to be published this June, which deals with Database Unit Testing techniques, based on the work I've done so far on this issue. Still…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 2 exciting announcements from yours truly By Roy Osherove April 25, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published April 25, 2005; technical details may be outdated. I'm thrilled to tell the world that my first ever article on MSDN Magazine is going to be published this June, which deals with Database Unit Testing techniques, based on the work I've done so far on this issue. Still not published yet, [you can check out the graphic here](http://msdn.microsoft.com/msdnmag/issues/05/06/default.aspx). I just couldn't resist posting this too early - it has been brewing for a lot of time now (from the moment it was suggested, to the moment it was published - almost 8 months - talk about labor..) The second news is that I will be speaking at [Tech-Ed Europe](http://www.mseventseurope.com/teched/05/pre/content/default.aspx) this July. I'll have one talk on Regular Expressions, a chalk-talk on Test Driven Development and I'll be participating in a panel about Agile Development. (excitement, cheer and a sensation of accomplishment thrown together as I read the official "invite" to the conference) World domination is imminent. So - if you're at Tech-Ed Europe - ping me using the blog! I'd love to meet up with fellow bloggers or readers :) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 2, 2005 ### [Agile Israel May meeting summary](https://osherove.com/blog/2005/6/2/agile-israel-may-meeting-summary.html) - May 29, 2005 ### [May at Agile Israel: Legacy Code Testing and MSF Agile](https://osherove.com/blog/2005/5/29/may-at-agile-israel-legacy-code-testing-and-msf-agile.html) - Apr 16, 2005 ### [\[CoolTool\] SWExplorerAutomation: Automate web GUI unit testing for IE](https://osherove.com/blog/2005/4/16/cooltool-swexplorerautomation-automate-web-gui-unit-testing.html) - Apr 15, 2005 ### [\[Book of the month\] Working effectively with legacy code](https://osherove.com/blog/2005/4/15/book-of-the-month-working-effectively-with-legacy-code.html) --- title: "Using Emacs: A masochist's guide" url: "https://osherove.com/blog/2005/4/20/using-emacs-a-masochists-guide.md" canonical: "https://osherove.com/blog/2005/4/20/using-emacs-a-masochists-guide.html" published: "2005-04-20T17:27:00" updated: "2005-04-20T17:27:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Using EMacs : The ultimate hacker's text editor. Why on earth does Don Box like this thing? (via Anarchia ) Always did wonder what everyone saw in this thing. I'm a keyboard freak myself but this thing is *daunting*!…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Using Emacs: A masochist's guide By Roy Osherove April 20, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 20, 2005; technical details may be outdated. [Using EMacs](http://www.surfaceeffect.com/essays/emacs.html): The ultimate hacker's text editor. Why on earth does Don Box like this thing? _(via_ [_Anarchia_](http://chneukirchen.org/anarchaia/archive/2005/04/17.html)_)_ Always did wonder what everyone saw in this thing. I'm a keyboard freak myself but this thing is \*daunting\*! Tried it a few times, but I guess you have to be a real masochist to fall in love with this thing. That is - getting past the big hurdle takes the strength of a marathon runner. How would you feel if all your key bindings in the text editor looked like this: **(M = ALT, C= Control)**
C-fmove forward one characterM-fmove forward one word
C-bmove backwards one characterM-bmove backwards one word
C-nmove down one line (next line)C-vmove down one screenful
C-pmove up one line (previous line)M-vmove up one screenful
Backspacedelete to the leftM-Backspacedelete word to the left
C-ddelete to the rightM-ddelete word to the right
C-emove to end of lineM-emove to end of paragraph
C-amove to start of lineM-amove to start of paragraph
| Key-binding | Function | | --- | --- | | C-right or M-right | move forward one word | | C-left or M-left | move backwards one word | | C-up | move up one paragraph | | C-down | move down one paragraph | | M-up | \--Unbound-- | | M-down | \--Unbound-- | ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 3, 2005 ### [RSS support from YNet Israel - Finally](https://osherove.com/blog/2005/5/3/rss-support-from-ynet-israel-finally.html) - May 3, 2005 ### [When training classes go horribly wrong](https://osherove.com/blog/2005/5/3/when-training-classes-go-horribly-wrong.html) - Apr 20, 2005 ### [The spin on passover](https://osherove.com/blog/2005/4/20/the-spin-on-passover.html) - Apr 18, 2005 ### [Team Agile is hiring](https://osherove.com/blog/2005/4/18/team-agile-is-hiring.html) --- title: "[Word Shortcut of the day] ALT-F3: Quick Auto Text" url: "https://osherove.com/blog/2005/4/20/word-shortcut-of-the-day-alt-f3-quick-auto-text.md" canonical: "https://osherove.com/blog/2005/4/20/word-shortcut-of-the-day-alt-f3-quick-auto-text.html" published: "2005-04-20T16:41:00" updated: "2005-04-20T16:41:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "Just found this nice shortcut in Word: Alt+F3: create auto-text entry. Just select the text and press Alt F3 and you can save the text for future use.. almost like Code Snippets :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Word Shortcut of the day\] ALT-F3: Quick Auto Text By Roy Osherove April 20, 2005 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published April 20, 2005; technical details may be outdated. Just found this nice shortcut in Word: Alt+F3: create auto-text entry. Just select the text and press Alt F3 and you can save the text for future use.. almost like Code Snippets :) ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Jun 8, 2005 ### [Cool Resharper hidden gem](https://osherove.com/blog/2005/6/8/cool-resharper-hidden-gem.html) - Jun 8, 2005 ### [Logon as a different user on the same local desktop: in win 2003](https://osherove.com/blog/2005/6/8/logon-as-a-different-user-on-the-same-local-desktop-in-win-2.html) - Mar 19, 2005 ### [How to use virtual PC and still save lots of room: differencing disks](https://osherove.com/blog/2005/3/19/how-to-use-virtual-pc-and-still-save-lots-of-room-differenci.html) - Feb 1, 2005 ### [Launcher: Clean auto-deployment and auto-updating code from Franklins.Net](https://osherove.com/blog/2005/2/1/launcher-clean-auto-deployment-and-auto-updating-code-from-f.html) --- title: "The spin on passover" url: "https://osherove.com/blog/2005/4/20/the-spin-on-passover.md" canonical: "https://osherove.com/blog/2005/4/20/the-spin-on-passover.html" published: "2005-04-20T15:59:00" updated: "2005-04-20T15:59:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I have to say - this is a real new spin on passover :) (the load is worth the wait...) and this is a funny one too (from same site)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The spin on passover By Roy Osherove April 20, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 20, 2005; technical details may be outdated. I have to say - [this is a real new spin](http://www.shabot6000.com/sedaclub/) on passover :) _(the load is worth the wait...)_ _and this is a funny one too (from same site)_ ![](https://osherove.com/img/wb/8df6401c_www.shabot6000.com_comics_000063.gif) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 3, 2005 ### [When training classes go horribly wrong](https://osherove.com/blog/2005/5/3/when-training-classes-go-horribly-wrong.html) - Apr 20, 2005 ### [Using Emacs: A masochist's guide](https://osherove.com/blog/2005/4/20/using-emacs-a-masochists-guide.html) - Apr 18, 2005 ### [Team Agile is hiring](https://osherove.com/blog/2005/4/18/team-agile-is-hiring.html) - Apr 16, 2005 ### [\[Weird Project of the week\] "Parking Spots"](https://osherove.com/blog/2005/4/16/weird-project-of-the-week-quotparking-spotsquot.html) --- title: "Team Agile is hiring" url: "https://osherove.com/blog/2005/4/18/team-agile-is-hiring.md" canonical: "https://osherove.com/blog/2005/4/18/team-agile-is-hiring.html" published: "2005-04-18T23:33:00" updated: "2005-04-18T23:33:00" tags: ["Off Topic"] author: "Roy Osherove" description: "In the coming days I'll be posting this \"officially\" on the Team Agile website. I'm looking for good people to hire: Note that all these points refer to different people and positions . You need to live in Israel to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Team Agile is hiring By Roy Osherove April 18, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 18, 2005; technical details may be outdated. In the coming days I'll be posting this "officially" on the [Team Agile](http://www.teamagile.com/) website. I'm looking for good people to hire: **Note** that - all these points refer to different people and positions. - You **need to live in Israel** to apply. - All jobs can be part or full time. Here we go: - **(101)Someone who knows what "Agile" is**, who has worked in a project or two with "Agile" tendencies. Experience can be with VB.NET, C#, C++, C or Java. Great English is a plus. That someone will consult/train with me companies and organizations about Agile development. You don't have to know everything, but you need to know \*something\* to be able to teach it. You'll also learn from me before you start, so no worries if you  have some "knowledge gaps". - **(102)Someone who can speak in front of a crowd** about various development issues. You don't have to know Agile, you just have to want to learn about it enough to teach it and become good at it. If you're a great presenter, talk to me. **Great English is a must**. Willing to travel abroad for short trips is a plus. - **(103)A great VB developer**. Someone who has done Interfaces in VB. Someone who knows what "delegation inheritance" and "polymorphism" mean. That special someone will work on a large system in VB 6 and help transfer it to .NET in the near future. Meanwhile there are various tasks to be done in VB 6.0 code. I personally know this application so I can tell you it's pretty damn interesting! - **(104)A great C++ developer** who is willing to learn to become an Agile practitioner and consultant in methodology and architecture. You should know your Win32s, low level stuff, Unit is great, 64 bit is even greater. Any experience with CppUnit or Mock++ is a big plus. - **(105)A great Java Developer** who is willing to learn to become an Agile practitioner and consultant on methodology and architecture. You should know your EJBs, AspectJ is good, AspectWerkz is better and any experience with JUnit is a big big plus. - **(106)A great .NET developer** who is willing to learn to become an Agile practitioner and consultant on methodology and architecture. You should know your application blocks, reflection, and worked on at least semi-medium projects in .NET. If you haven't but feel that you're great enough to **become** a great .NET developer, and are willing to learn and consult about methodologies which you will be forced to learn - that's good too. Everyone that is accepted **will be personally trained by me** to be the best they can be at what they need to do, to have fun while doing it, and to make other people enjoy it as well. Most of this work is about interacting with people. That means you need to like to interact with other human beings. If you don't that's OK, but I need someone who can. So, send an email to **Jobs @ TeamAgile.com** specifying the **Position number** listed on the left with your CV attached. If you have a Hebrew and an English version of the CV, attach both. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 20, 2005 ### [Using Emacs: A masochist's guide](https://osherove.com/blog/2005/4/20/using-emacs-a-masochists-guide.html) - Apr 20, 2005 ### [The spin on passover](https://osherove.com/blog/2005/4/20/the-spin-on-passover.html) - Apr 16, 2005 ### [\[Weird Project of the week\] "Parking Spots"](https://osherove.com/blog/2005/4/16/weird-project-of-the-week-quotparking-spotsquot.html) - Apr 16, 2005 ### [Consolas: Our next programming font?](https://osherove.com/blog/2005/4/16/consolas-our-next-programming-font.html) --- title: "[CoolTool] SWExplorerAutomation: Automate web GUI unit testing for IE" url: "https://osherove.com/blog/2005/4/16/cooltool-swexplorerautomation-automate-web-gui-unit-testing.md" canonical: "https://osherove.com/blog/2005/4/16/cooltool-swexplorerautomation-automate-web-gui-unit-testing.html" published: "2005-04-16T20:47:00" updated: "2005-04-16T20:47:00" tags: ["Agile Related", "Cool Tools"] author: "Roy Osherove" description: "Got this in the email a week or two ago: Hello Roy, Have you seen SWExplorerAutomation ( http://home.comcast.net/~furmana/SWIEAutomation.htm ). It allows to create an object model for any Web application developed with…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[CoolTool\] SWExplorerAutomation: Automate web GUI unit testing for IE By Roy Osherove April 16, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published April 16, 2005; technical details may be outdated. Got this in the email a week or two ago: _Hello Roy, Have you seen SWExplorerAutomation (_[_http://home.comcast.net/~furmana/SWIEAutomation.htm_](http://home.comcast.net/~furmana/SWIEAutomation.htm "http")_). It allows to create an object model for any Web application developed with HTML and DHTML. It can be easily used for the Unit Testing. Sincerely, Alex Furman._ Well, I took a look over here at the flash demo and it looks pretty spiffy. The part I cared the most about: near the end of the demo you can see that the application allows you to generate .NET code using the application's automation API to run the "scripts" of actions performed in the browser. (Think "MS Act" only much more detailed actions, usability and programmability since it uses .NET and not VBScript). Looks to me like one could easily use the generated .NET code to run various unit tests, or at least to start generate a powerful unit testing framework for HTML web pages, or some sort of load testing framework. Alex has already used it to create [SWJobSearch](http://home.comcast.net/~furmana/SWJobSearch.htm), which simultaneously searches for jobs on multiple Web Sites including sending emails where needed. It's all built on the same API. Very powerful stuff! Looks like it only works with IE though, so it's very "vertical market" driven :) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - May 29, 2005 ### [May at Agile Israel: Legacy Code Testing and MSF Agile](https://osherove.com/blog/2005/5/29/may-at-agile-israel-legacy-code-testing-and-msf-agile.html) - Apr 25, 2005 ### [2 exciting announcements from yours truly](https://osherove.com/blog/2005/4/25/2-exciting-announcements-from-yours-truly.html) - Apr 15, 2005 ### [\[Book of the month\] Working effectively with legacy code](https://osherove.com/blog/2005/4/15/book-of-the-month-working-effectively-with-legacy-code.html) - Apr 15, 2005 ### [What does an Agile work environment look like? Here's one variation](https://osherove.com/blog/2005/4/15/what-does-an-agile-work-environment-look-like-heres-one-vari.html) --- title: "[Weird Project of the week] \"Parking Spots\"" url: "https://osherove.com/blog/2005/4/16/weird-project-of-the-week-quotparking-spotsquot.md" canonical: "https://osherove.com/blog/2005/4/16/weird-project-of-the-week-quotparking-spotsquot.html" published: "2005-04-16T01:35:00" updated: "2005-04-16T01:35:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It's the weekend, so guess what? more weird stuff. Just like the Infinite cat project, here comes \" Parking Spots \" where people show off their toy cars placed in real scenes. It's actually pretty funny if you take the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Weird Project of the week\] "Parking Spots" By Roy Osherove April 16, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 16, 2005; technical details may be outdated. It's the weekend, so guess what? more weird stuff. Just like the [Infinite cat](http://www.privatehand.com/infinite/) project, here comes "[Parking Spots](http://www.dubster.com/cars/index.asp?id=275)" where people show off their toy cars placed in real scenes. It's actually pretty funny if you take the time to look at this weirdness. At least, if you liked [Infinite cat](http://www.privatehand.com/infinite/), I bet you'll like this. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 20, 2005 ### [The spin on passover](https://osherove.com/blog/2005/4/20/the-spin-on-passover.html) - Apr 18, 2005 ### [Team Agile is hiring](https://osherove.com/blog/2005/4/18/team-agile-is-hiring.html) - Apr 16, 2005 ### [Consolas: Our next programming font?](https://osherove.com/blog/2005/4/16/consolas-our-next-programming-font.html) - Apr 15, 2005 ### [Addictive, hypnotic and simple game](https://osherove.com/blog/2005/4/15/addictive-hypnotic-and-simple-game.html) --- title: "Consolas: Our next programming font?" url: "https://osherove.com/blog/2005/4/16/consolas-our-next-programming-font.md" canonical: "https://osherove.com/blog/2005/4/16/consolas-our-next-programming-font.html" published: "2005-04-16T00:34:00" updated: "2005-04-16T00:34:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is an interesting read . \"Beginning in 2006, Microsoft says it will ship with its operating system and other software products six brand new typefaces created especially for extended on-screen reading. \" Especially…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Consolas: Our next programming font? By Roy Osherove April 16, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 16, 2005; technical details may be outdated. [This is an interesting read](http://www.poynter.org/column.asp?id=47&aid=78683). _"Beginning in 2006, Microsoft says it will ship with its operating system and other software products six brand new typefaces created especially for extended on-screen reading. "_ Especially take note of the upcoming monospaced font for programming: **Consolas** listed in this article. [![Consolas](https://osherove.com/img/wb/f4a8397f_www.poynter.org_resource_78683_consolas.gif)](http://www.poynter.org/column.asp?id=47&aid=78683) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 18, 2005 ### [Team Agile is hiring](https://osherove.com/blog/2005/4/18/team-agile-is-hiring.html) - Apr 16, 2005 ### [\[Weird Project of the week\] "Parking Spots"](https://osherove.com/blog/2005/4/16/weird-project-of-the-week-quotparking-spotsquot.html) - Apr 15, 2005 ### [Addictive, hypnotic and simple game](https://osherove.com/blog/2005/4/15/addictive-hypnotic-and-simple-game.html) - Apr 15, 2005 ### [Yahoo 360? \*yawn\*](https://osherove.com/blog/2005/4/15/yahoo-360-yawn.html) --- title: "Addictive, hypnotic and simple game" url: "https://osherove.com/blog/2005/4/15/addictive-hypnotic-and-simple-game.md" canonical: "https://osherove.com/blog/2005/4/15/addictive-hypnotic-and-simple-game.html" published: "2005-04-15T23:47:00" updated: "2005-04-15T23:47:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is something to play at work , if you don't want to work. Can you max my 1718 points? Update - make that 2516, dudes." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Addictive, hypnotic and simple game By Roy Osherove April 15, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 15, 2005; technical details may be outdated. [This is something to play at work](http://www.columbia.edu/~chc18/gridgame.swf), if you don't want to work. Can you max my 1718 points? _Update - make that 2516, dudes._ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 16, 2005 ### [\[Weird Project of the week\] "Parking Spots"](https://osherove.com/blog/2005/4/16/weird-project-of-the-week-quotparking-spotsquot.html) - Apr 16, 2005 ### [Consolas: Our next programming font?](https://osherove.com/blog/2005/4/16/consolas-our-next-programming-font.html) - Apr 15, 2005 ### [Yahoo 360? \*yawn\*](https://osherove.com/blog/2005/4/15/yahoo-360-yawn.html) - Apr 15, 2005 ### [Movies, The Ruby way](https://osherove.com/blog/2005/4/15/movies-the-ruby-way.html) --- title: "Yahoo 360? *yawn*" url: "https://osherove.com/blog/2005/4/15/yahoo-360-yawn.md" canonical: "https://osherove.com/blog/2005/4/15/yahoo-360-yawn.html" published: "2005-04-15T23:29:00" updated: "2005-04-15T23:29:00" tags: ["Off Topic"] author: "Roy Osherove" description: "So now Yahoo! is making an MSN spaces clone called Yahoo 360 ? And It's invite only Like GMail ? That is so 2004.. ;)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Yahoo 360? \*yawn\* By Roy Osherove April 15, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 15, 2005; technical details may be outdated. So now Yahoo! is making an [MSN spaces](http://spaces.msn.com/) clone called [Yahoo 360](http://360.yahoo.com/)? And It's invite only Like [GMail](http://gmail.com/)? That is so 2004.. ;) [![Yahoo! 360 Sample Page](https://osherove.com/img/wb/58a7a54b_us.i1.yimg.com_us.yimg.com_i_us_cmty_samplescreen4.jpg)](http://360.yahoo.com/) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 16, 2005 ### [Consolas: Our next programming font?](https://osherove.com/blog/2005/4/16/consolas-our-next-programming-font.html) - Apr 15, 2005 ### [Addictive, hypnotic and simple game](https://osherove.com/blog/2005/4/15/addictive-hypnotic-and-simple-game.html) - Apr 15, 2005 ### [Movies, The Ruby way](https://osherove.com/blog/2005/4/15/movies-the-ruby-way.html) - Apr 15, 2005 ### [Weird and interesting Blog of the week - Anarchia](https://osherove.com/blog/2005/4/15/weird-and-interesting-blog-of-the-week-anarchia.html) --- title: "[Book of the month] Working effectively with legacy code" url: "https://osherove.com/blog/2005/4/15/book-of-the-month-working-effectively-with-legacy-code.md" canonical: "https://osherove.com/blog/2005/4/15/book-of-the-month-working-effectively-with-legacy-code.html" published: "2005-04-15T22:51:00" updated: "2005-04-15T22:51:00" tags: ["Agile Related", "Recommended books"] author: "Roy Osherove" description: "[Note: You can find more books I found very helpful or interesting here ] It's been a while, but I have a new favorite book - Working effectively with legacy code If your company or team is trying or going to try to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Book of the month\] Working effectively with legacy code By Roy Osherove April 15, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Recommended books](https://osherove.com/blog/category/recommended-books) **Historical article** · Originally published April 15, 2005; technical details may be outdated. [](https://www.amazon.com/exec/obidos/ASIN/0131177052/iserializable-20) _\[Note:_ [_You can find more books I found very helpful or interesting here_](http://weblogs.asp.net/rosherove/articles/6802.aspx)_\]_ It's been a while, but I have a new favorite book - [![](https://osherove.com/img/wb/e8207239_images.amazon.com_images_P_0131177052.01.TZZZZZZZ.jpg)](https://www.amazon.com/exec/obidos/ASIN/0131177052/iserializable-20) [Working effectively with legacy code](https://www.amazon.com/exec/obidos/ASIN/0131177052/iserializable-20) If your company or team is trying or going to try to start writing unit tests or work in a test driven manner, no matter what language you use, this is one of the best books you can get to help you get through the always-hard "rough patch" that team go through as they learn new tricks. Especially if you have a bunch of untested code you're going to have to deal with as you progress into a new, more agile future. It's not the only book you need to get, but it ranks right up there with [TDD with .NET](https://www.amazon.com/exec/obidos/ASIN/0735619484/iserializable-20) if you're starting out with little testing experience. One of the biggest hurdles in becoming agile is writing unit tests for new code that has to work with old code, or testing old code when it needs changing. This books details in great length practically every trick you could think of to make this testing possible, with great examples in Java and C++. When I first got to read it I realized that, just like when reading [the classic design patterns book](https://www.amazon.com/exec/obidos/ASIN/0201633612/iserializable-20), I've been implementing and recommending some of this stuff (not all) for a while, but always thinking that there has to be some formal "pattern" at work here that is shared among developers. This book is the closest it gets to being a "legacy test patterns" book that I've seen, with real world advice and problem solving skills that are handed to you on a platter. You can definitely see that this guy had worked long and hard to achieve this kind of knowledge and as far as I'm concerned this book is worth more than its weight in gold. Much more. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 25, 2005 ### [2 exciting announcements from yours truly](https://osherove.com/blog/2005/4/25/2-exciting-announcements-from-yours-truly.html) - Apr 16, 2005 ### [\[CoolTool\] SWExplorerAutomation: Automate web GUI unit testing for IE](https://osherove.com/blog/2005/4/16/cooltool-swexplorerautomation-automate-web-gui-unit-testing.html) - Apr 15, 2005 ### [What does an Agile work environment look like? Here's one variation](https://osherove.com/blog/2005/4/15/what-does-an-agile-work-environment-look-like-heres-one-vari.html) - Apr 14, 2005 ### [Try to avoid multiple asserts in a single unit test](https://osherove.com/blog/2005/4/14/try-to-avoid-multiple-asserts-in-a-single-unit-test.html) --- title: "What does an Agile work environment look like? Here's one variation" url: "https://osherove.com/blog/2005/4/15/what-does-an-agile-work-environment-look-like-heres-one-vari.md" canonical: "https://osherove.com/blog/2005/4/15/what-does-an-agile-work-environment-look-like-heres-one-vari.html" published: "2005-04-15T22:36:00" updated: "2005-04-15T22:36:00" tags: ["Agile Related", "Project Management"] author: "Roy Osherove" description: "This is a nice overview and actual pictures from a team room environment working with XP. Check it out at: An XP Team Room \" Many newcomers to Extreme Programming wonder what a team room looks like. (For those…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What does an Agile work environment look like? Here's one variation By Roy Osherove April 15, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Project Management](https://osherove.com/blog/category/project-management) **Historical article** · Originally published April 15, 2005; technical details may be outdated. This is a nice overview and actual pictures from a team room environment working with XP. Check it out at:  [An XP Team Room](http://www.scissor.com/resources/teamroom/) "_Many newcomers to_ [_Extreme Programming_](http://www.extremeprogramming.org/) _wonder what a team room looks like. (For those unfamiliar with Extreme Programming, at the end of the article you will find a_ [_quick explanation_](http://www.scissor.com/resources/teamroom/#glossary) _of the XP terms that I use.) Here are photos and a description of a team room from a 9-month, 5-person project"_ _(found via [smart stuff](http://www.approximity.com/cgi-bin/blogtariAgile/index.rb/XP_agile/TeamRoom.rdoc))_ Want another variation? or many more? [Here's a good start](http://www.xp123.com/xplor/room-gallery/index.shtml).[](https://www.amazon.com/exec/obidos/ASIN/0131177052/qid=1113604114/sr=2-1/ref=pd_bbs_b_2_1/102-9482562-5628920) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 16, 2005 ### [\[CoolTool\] SWExplorerAutomation: Automate web GUI unit testing for IE](https://osherove.com/blog/2005/4/16/cooltool-swexplorerautomation-automate-web-gui-unit-testing.html) - Apr 15, 2005 ### [\[Book of the month\] Working effectively with legacy code](https://osherove.com/blog/2005/4/15/book-of-the-month-working-effectively-with-legacy-code.html) - Apr 14, 2005 ### [Try to avoid multiple asserts in a single unit test](https://osherove.com/blog/2005/4/14/try-to-avoid-multiple-asserts-in-a-single-unit-test.html) - Apr 14, 2005 ### [Setting Up VirtualMock in the Eclipse IDE](https://osherove.com/blog/2005/4/14/setting-up-virtualmock-in-the-eclipse-ide.html) --- title: "Movies, The Ruby way" url: "https://osherove.com/blog/2005/4/15/movies-the-ruby-way.md" canonical: "https://osherove.com/blog/2005/4/15/movies-the-ruby-way.html" published: "2005-04-15T21:55:00" updated: "2005-04-15T21:55:00" tags: ["Off Topic"] author: "Roy Osherove" description: "PS And one of the funniest bits I've read all month comes from the Anarchia blog I've talked about earlier Movies, the Ruby way. What do I mean? Here's a short example: The Matrix assert_nil(spoon) Forrest Gump…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Movies, The Ruby way By Roy Osherove April 15, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 15, 2005; technical details may be outdated. PS And one of the funniest bits I've read all month comes from the Anarchia blog I've talked about earlier [Movies, the Ruby way.](http://rubygarden.org/ruby?MoviesTheRubyWay) What do I mean? Here's a short example: **The Matrix ** _assert\_nil(spoon)_ **Forrest Gump ** _assert\_equal(life, box\_of\_chocolates)_ _[More movie goodness here](http://rubygarden.org/ruby?MoviesTheRubyWay)_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 15, 2005 ### [Addictive, hypnotic and simple game](https://osherove.com/blog/2005/4/15/addictive-hypnotic-and-simple-game.html) - Apr 15, 2005 ### [Yahoo 360? \*yawn\*](https://osherove.com/blog/2005/4/15/yahoo-360-yawn.html) - Apr 15, 2005 ### [Weird and interesting Blog of the week - Anarchia](https://osherove.com/blog/2005/4/15/weird-and-interesting-blog-of-the-week-anarchia.html) - Apr 14, 2005 ### [Now \*that's\* how you tell a wedding proposal story!](https://osherove.com/blog/2005/4/14/now-thats-how-you-tell-a-wedding-proposal-story.html) --- title: "Weird and interesting Blog of the week - Anarchia" url: "https://osherove.com/blog/2005/4/15/weird-and-interesting-blog-of-the-week-anarchia.md" canonical: "https://osherove.com/blog/2005/4/15/weird-and-interesting-blog-of-the-week-anarchia.html" published: "2005-04-15T21:50:00" updated: "2005-04-15T21:50:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "By far one of the most \"...uh... what?\" blogs I've seen that I actually found by a trackback to one of my unit testing blog posts. Worth a look, if only for the seemingly random Bob Dylan and Latin phrases mixed in.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Weird and interesting Blog of the week - Anarchia By Roy Osherove April 15, 2005 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 15, 2005; technical details may be outdated. By far one of the most "...uh... what?" blogs I've seen that I actually found by a trackback to one of my unit testing blog posts. Worth a look, if only for the seemingly random Bob Dylan and Latin phrases mixed in. It's almost a link blog, only a little more "spiritual" :) [Anarchia - Experimental, impressionistic sub-paragraph bloggin' (think obstsalat)](http://chneukirchen.org/anarchaia/) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 19, 2005 ### [A new way to fight blog trackback spam?](https://osherove.com/blog/2005/6/19/a-new-way-to-fight-blog-trackback-spam.html) - Jun 19, 2005 ### [A very nice .NET architecture blog discovered](https://osherove.com/blog/2005/6/19/a-very-nice-net-architecture-blog-discovered.html) - Mar 1, 2005 ### [The new Larkware.com](https://osherove.com/blog/2005/3/1/the-new-larkwarecom.html) - Jan 28, 2005 ### [Is CodeBetter.Com to become the new .NETWeblogs?](https://osherove.com/blog/2005/1/28/is-codebettercom-to-become-the-new-netweblogs.html) --- title: "Aspect Oriented .NET frameworks - more than I thought" url: "https://osherove.com/blog/2005/4/14/aspect-oriented-net-frameworks-more-than-i-thought.md" canonical: "https://osherove.com/blog/2005/4/14/aspect-oriented-net-frameworks-more-than-i-thought.html" published: "2005-04-14T23:39:00" updated: "2005-04-14T23:39:00" tags: ["Architecture"] author: "Roy Osherove" description: "This looks like a great place to dive in and start researching... I wonder just how usable they all are, and how one would go about implementing \"Design By Contract\" using each of them. Any experiences?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Aspect Oriented .NET frameworks - more than I thought By Roy Osherove April 14, 2005 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published April 14, 2005; technical details may be outdated. [This looks like a great place](http://csharp-source.net/open-source/aspect-oriented-frameworks) to dive in and start researching... I wonder just how usable they all are, and how one would go about implementing "Design By Contract" using each of them. Any experiences? ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - May 2, 2005 ### [What does SOA really mean? One big hype machine](https://osherove.com/blog/2005/5/2/what-does-soa-really-mean-one-big-hype-machine.html) - Apr 29, 2005 ### [What does Indigo really mean?](https://osherove.com/blog/2005/4/29/what-does-indigo-really-mean.html) - Apr 9, 2005 ### [\[Recording\] Roy Osherove on Software Factories and Domain Specific Languages](https://osherove.com/blog/2005/4/9/recording-roy-osherove-on-software-factories-and-domain-spec.html) - Mar 23, 2005 ### [Integration and interoperability resources](https://osherove.com/blog/2005/3/23/integration-and-interoperability-resources.html) --- title: "Debug Visualizers in VS 2005: Almost there, one big feature missing" url: "https://osherove.com/blog/2005/4/14/debug-visualizers-in-vs-2005-almost-there-one-big-feature-mi.md" canonical: "https://osherove.com/blog/2005/4/14/debug-visualizers-in-vs-2005-almost-there-one-big-feature-mi.html" published: "2005-04-14T22:40:00" updated: "2005-04-14T22:40:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "One of the coolest new features in VS 2005 is Debug Visualizers, which allow you to \"see\" various data as it is being debugged in your IDE. For example - you can see a dataset presented as a real table in a grid (just…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Debug Visualizers in VS 2005: Almost there, one big feature missing By Roy Osherove April 14, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published April 14, 2005; technical details may be outdated. One of the coolest new features in VS 2005 is Debug Visualizers, which allow you to "see" various data as it is being debugged in your IDE. For example - you can see a dataset presented as a real table in a grid (just like [this thing](http://www.codeproject.com/csharp/DSWatch.asp) does today). The cool part is that you can create your own viewers for your custom types. The main problem \- you can't add viewers for built-in types - adding a viewer to a type requires putting a special attribute on it - so unless you have the source code for the CLR you won't be able to add any such thing to any class you'd like to debug more easily. That's a shame, which is why I added this suggestion to the MS feedback center. **Good for developers** **For example**, one of the things I wanted to do with the next version of [The Regulator](https://osherove.com/), is have it ship with built in Debug Visualizers for the **Regex** and **Regex.Match** objects for easier expression debugging when needed. That's **not** possible with what's going to ship (although it was possible in the earlier betas...) but it would be possible if this suggestion is accepted. **Good for 3rd party vendors** Microsoft should also consider the huge market this could create - a set of 3rd party vendors who create custom and powerful visualizers for CLR types of all sorts (including BizTalk visualizers for example..? with runtime editing? hmm..) **If you agree with this,** [**vote on it**](http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackId=f69bbb44-6ece-41d2-8f9e-8789016f1bc9)
Problem Statement:
Opened by Roy Osherove on 2005-04-13 at 14:08:19
   
You can only create debug visualizers for custom types that you create, by adding an attribute on them, but you can't create more robust or non existing debug visualizer types for CLR types such as Dataset or the Regex.Match object.
Proposed Solution:Allow creating debug visualizers on any type including CLR types in an easy manner.
This would allow 3rd parties to thrive in a new area and allow developers to create visualizers for intrinsic code they use a lot that does not have good visualizing ability.
**If you agree with this,** [**vote on it**](http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackId=f69bbb44-6ece-41d2-8f9e-8789016f1bc9) ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Jun 26, 2005 ### [.NET CLR Data counters are wrong - Official](https://osherove.com/blog/2005/6/26/net-clr-data-counters-are-wrong-official.html) - Jun 19, 2005 ### [\[Audio Interview\] Brian Noyes: Deep .NET Q&A](https://osherove.com/blog/2005/6/19/audio-interview-brian-noyes-deep-net-qampa.html) - Apr 9, 2005 ### [Whitepaper: Introducing System Transactions, by Juval Lowy](https://osherove.com/blog/2005/4/9/whitepaper-introducing-system-transactions-by-juval-lowy.html) - Jan 18, 2005 ### [Data Binding with .Net 2.0 : upcoming coolness](https://osherove.com/blog/2005/1/18/data-binding-with-net-20-upcoming-coolness.html) --- title: "Now *that's* how you tell a wedding proposal story!" url: "https://osherove.com/blog/2005/4/14/now-thats-how-you-tell-a-wedding-proposal-story.md" canonical: "https://osherove.com/blog/2005/4/14/now-thats-how-you-tell-a-wedding-proposal-story.html" published: "2005-04-14T21:56:00" updated: "2005-04-14T21:56:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Rory's getting married . And he describes \"the start\" of the process in a very \"Rory\"ish way - I laughed out loud. Congrats!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Now \*that's\* how you tell a wedding proposal story! By Roy Osherove April 14, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 14, 2005; technical details may be outdated. [Rory's getting married](http://neopoleon.com/blog/posts/13647.aspx). And he describes "the start" of the process in a very "Rory"ish way - I laughed out loud. Congrats!   ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 15, 2005 ### [Movies, The Ruby way](https://osherove.com/blog/2005/4/15/movies-the-ruby-way.html) - Apr 15, 2005 ### [Weird and interesting Blog of the week - Anarchia](https://osherove.com/blog/2005/4/15/weird-and-interesting-blog-of-the-week-anarchia.html) - Apr 13, 2005 ### [Pitfalls to avoid in an authors publishing contract](https://osherove.com/blog/2005/4/13/pitfalls-to-avoid-in-an-authors-publishing-contract.html) - Apr 13, 2005 ### [Scary future ahead?](https://osherove.com/blog/2005/4/13/scary-future-ahead.html) --- title: "Try to avoid multiple asserts in a single unit test" url: "https://osherove.com/blog/2005/4/14/try-to-avoid-multiple-asserts-in-a-single-unit-test.md" canonical: "https://osherove.com/blog/2005/4/14/try-to-avoid-multiple-asserts-in-a-single-unit-test.html" published: "2005-04-14T20:42:00" updated: "2005-04-14T20:42:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "Consider Assert failures as symptoms of a disease and Asserts as indication points or blood checks for the body of the software. The more symptoms you can find, the easier the disease will be to figure out and remove.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Try to avoid multiple asserts in a single unit test By Roy Osherove April 14, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published April 14, 2005; technical details may be outdated. **Consider Assert failures as symptoms of a disease** and Asserts as indication points or blood checks for the body of the software. The more symptoms you can find, the easier the disease will be to figure out and remove. If you have multiple asserts in one test - only the first failing one reveals itself as failed and you lose sight of other possible symptoms. I've written about this before but I want to stress this again because this topic is more important than you might think. Void Sum\_AnyParamBiggerThan1000IsNotSummed() {     Assert.AreEqual(3, Sum(1001,1,2);     Assert.AreEqual(3, Sum(1,1001,2);     Assert.AreEqual(3, Sum(1,2,1001); }   There are several disadvantages to using multiple asserts in one test case. The main one is this: Sometimes you get a better  idea of what's wrong with the code if you have multiple test failures. When you have multiple asserts in one single test, only the first one fails and the test execution stops for this test case. The rest of the lines in the test code never get checked - you're losing some more points of view (symptoms) that you might consider important in order to quickly discover where the problem stems from. Another example - you're changing a piece of code and suddenly 6 tests that might seem unrelated break. If you're lucky you might realize that these tests all have one thing in common - they use some common object or method that does not work anymore. That is - it's easier to realize that the problem probably does not lie within the tests  - they are correct and logical,  but their failure is merely a symptom of a deeper problem that needs attention. Now assume the same scenario with only one test failing - a test with multiple asserts. Since you now see only one "symptom" you might "diagnose" the disease wrongly because you don't have all the facts. That means you'll probably spend more time investigating this problem and struggling with it  -- one of the things I see most often in these cases is this: once you make one assert pass somehow, another one "reveals" itself in the same test and fails as well. You don't get the big picture and have to realize it step by step--Along the way you you might even make "corrections" to the code which might not have been needed but "fixed" it from a different view - fixed the symptom but not the problem. You might have introduced more changes to the system and even made it less stable in the process - all the while taking more precious time. **More notes to consider:** If I was writing this test after  the production code was already written, I might not have a problem with this in some situations (pressed for time etc..). But if this test is written before the tested code is written, it might prove less optimal for several reasons:  **You'll  spend a longer amount of time writing code to make the test pass**.    The longer you spend without running tests, the less confident you become. **You're not focusing on a small problem anymore**. You're focusing on a combined, larger problem, more generic  which should be solved ("this and this and this should all pass at once"). It's easy to get stuck on large problems. It's  easier to keep going while continually solving small problems one after the other. **The more time you spend not running the tests, the more code you write that has not been tested**, and which will probably depend on more code that has not been tested. You re more likely to present unforeseen bugs. The previous paragraph should not come as a surprise because the more code you write between each unit tests, the smaller the likelihood that your test actually covers that code. That s because: **Trying to make a test with three ASSERTs pass, is just like trying to make three separate test cases pass in a single bounce**: You'll have to write more code that handles more cases and you ll probably end up writing it more generic that you would have if you were just trying to fix one test case at a time. You won't really know if your tests cover all the generic code you've just written as you would have known by making the tests pass one by one, in the simplest way possible. Once you have multiple ASSERTs in a test case, **it's very easy and human to keep adding more asserts into the existing test** than it would be to add them using new tests. Even if those were totally different asserts in nature, the broken window theory works very well here, and leads to less maintainable and less readable tests. **You're working more time without the "success" feedback of the green bar**. Like it or not, the psychological effect here is important. It leads to a better coding experience and more confidence and happiness at work. Hopefully all of these reasons should make you think twice before just jumping in without attention to your tests. You'd be surprised at how fast these symptoms add up to make the testing experience either easier and faster or much more repetitive and painful that it could have been. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 15, 2005 ### [\[Book of the month\] Working effectively with legacy code](https://osherove.com/blog/2005/4/15/book-of-the-month-working-effectively-with-legacy-code.html) - Apr 15, 2005 ### [What does an Agile work environment look like? Here's one variation](https://osherove.com/blog/2005/4/15/what-does-an-agile-work-environment-look-like-heres-one-vari.html) - Apr 14, 2005 ### [Setting Up VirtualMock in the Eclipse IDE](https://osherove.com/blog/2005/4/14/setting-up-virtualmock-in-the-eclipse-ide.html) - Apr 11, 2005 ### [Another Entlib example: Separate integration tests from unit tests (and learn to know the difference)](https://osherove.com/blog/2005/4/11/another-entlib-example-separate-integration-tests-from-unit.html) --- title: "Setting Up VirtualMock in the Eclipse IDE" url: "https://osherove.com/blog/2005/4/14/setting-up-virtualmock-in-the-eclipse-ide.md" canonical: "https://osherove.com/blog/2005/4/14/setting-up-virtualmock-in-the-eclipse-ide.html" published: "2005-04-14T19:56:00" updated: "2005-04-14T19:56:00" tags: ["Agile Related"] author: "Roy Osherove" description: "One of the things I teach as part of Team Agile is how to do Test Driven Development and write unit tests in Java. Yes. This is .NET weblogs, but the following information is so scarce and hard to find I just have to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Setting Up VirtualMock in the Eclipse IDE By Roy Osherove April 14, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published April 14, 2005; technical details may be outdated. One of the things I teach as part of [Team Agile](http://www.teamagile.com/) is how to do [Test Driven Development](http://www.testdriven.com/) and write unit tests in Java. Yes. This is .NET weblogs, but the following information is so scarce and hard to find I just have to post it. After a long time of trial and error trying to run a framework called "[VirtualMock](http://www.virtualmock.org/)" (which is similar to [TypeMock](http://www.typemock.com/) in .NET in its purposes). Anyway - it's impossible to figure out how to make the thing work under Eclipse - no documentation found on the net for this. Luckily, Eli Lopian of Amdocs finally found a way to make it work with the Eclipse IDE. He was kind enough to let me post the steps he used to make this happen so that future generations could use this practically non-existent documentation as they search it via Google: Hi, Here are the instuctions for setting up using virtual mock in eclipse. **A.1. Setting Up VirtualMocks in eclipse** Following is the method to set up virtual mocks in eclipse (3.0). **1\. Install AJDT (The AspectJ Development Tool) and restart eclipse.** **2\. Upzip the virtualmock-0.1.9-src.zip and add the following jars to the classpath: (they are in the lib directory) **aspectwerkz-0.9.RC1.jar throwableutil-1.0.jar log4j-1.2.8.jar bcel-5.1.jar jrexx-1.1.1.jar virtualmock-0.1.9.jar virtualmock-aspect-0.1.9.jar cglib-asm-1.0.jar commons-lang-2.0.jar easymock.jar easymock-patch-1.0.jar hansel-1.02.jar Note: It is possible to create a User Library that includes these files - see eclipse help on User Libraries **3\. Change the test project to AcpectJ doint one of the following. **   1. New AspectJ project – for new projects    2. Right click project->Convert to AcpectJ project **4\. Open the Project Properties…** **5\. Select AspectJ Aspect Path ->Add the virtualmock-aspect-0.1.19.jar** **6\. Add the classes from the production project as follows**          Select AspectJ InPath -> Add Class Folder -> choose the classes directory of the tested project.          Add additional Jars of the tested project that will be mocked. **7\. You are now ready to go, write your tests and run and debug as normal.** 8\. If your classes are not being mocked make sure that they are in the AspectJ InPath, to debug, you can check "output weaving info" in the AspectJ portion of the projects properties. A.2. Setting Up Dynamic VirtualMocks in eclipse Following is the method to set up dynamic virtual mocks in eclipse. Dynamic mocks are instrumented at runtime. There is no need to install any extra plugins but this works from Java 1.4 as it uses the HotSwap feature:   1\. Upzip the virtualmock-0.1.9-src.zip and add the following jars to the classpath: (they are in the lib directory) aspectwerkz-0.9.RC1.jar throwableutil-1.0.jar log4j-1.2.8.jar bcel-5.1.jar jrexx-1.1.1.jar virtualmock-0.1.9.jar virtualmock-aspect-0.1.9.jar cglib-asm-1.0.jar commons-lang-2.0.jar easymock.jar easymock-patch-1.0.jar hansel-1.02.jar Note: It is possible to create a User Library that includes these files - see eclipse help on User Libraries 2\. In the Run Configuration of your tests -> (Run->Run... and choose or create a new JUnit Run Configuration) Choose Arguments Tab -> Add the following to the VM arguments: \-Xdebug -Xrunaspectwerkz -Xbootclasspath/a:${project\_loc}/lib/bcel-5.1.jar;${project\_loc}/lib/aspectwerkz-core-0.9.RC1.jar 3\. Make sure that aspectWerkz.dll in on your path.   ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 15, 2005 ### [What does an Agile work environment look like? Here's one variation](https://osherove.com/blog/2005/4/15/what-does-an-agile-work-environment-look-like-heres-one-vari.html) - Apr 14, 2005 ### [Try to avoid multiple asserts in a single unit test](https://osherove.com/blog/2005/4/14/try-to-avoid-multiple-asserts-in-a-single-unit-test.html) - Apr 11, 2005 ### [Another Entlib example: Separate integration tests from unit tests (and learn to know the difference)](https://osherove.com/blog/2005/4/11/another-entlib-example-separate-integration-tests-from-unit.html) - Apr 11, 2005 ### [Test maintainability: consider creating a test fixture "per method" instead of "per class"](https://osherove.com/blog/2005/4/11/test-maintainability-consider-creating-a-test-fixture-quotpe.html) --- title: "Blogs.RegexAdvice.com - smells like community spirit" url: "https://osherove.com/blog/2005/4/13/blogsregexadvicecom-smells-like-community-spirit.md" canonical: "https://osherove.com/blog/2005/4/13/blogsregexadvicecom-smells-like-community-spirit.html" published: "2005-04-13T17:28:00" updated: "2005-04-13T17:28:00" tags: ["Regex"] author: "Roy Osherove" description: "http://blogs.regexadvice.com/ is really starting to pick up. I haven't posted there a lot myself, but looking at the latest batch of posts - people are really investing time and effort into writing useful stuff. And…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blogs.RegexAdvice.com - smells like community spirit By Roy Osherove April 13, 2005 In [Regex](https://osherove.com/blog/category/regex) **Historical article** · Originally published April 13, 2005; technical details may be outdated. [http://blogs.regexadvice.com/](http://blogs.regexadvice.com/) is really starting to pick up. I haven't posted there a lot myself, but looking at the latest batch of posts - people are really investing time and effort into writing useful stuff. And it's all regex centric. As worthy of a community,  there's even [a big debate](http://blogs.regexadvice.com/SSmith/posts/3258.aspx) going on right now as to whether one should even use Regex to validate things such as email address or dates. You'd be surprised as to what the "gurus" think. So - if you're at all interested in Regular expressions, much like SqlTeam.com weblogs is a great place for internal-hardcore data,  so is [http://blogs.regexadvice.com/](http://blogs.regexadvice.com/) \*starting\* to be. I do wish [Darren](http://blogs.regexadvice.com/DNeimke/) took the time to start removing all those spam comments though... ## More in Regex [All posts in Regex](https://osherove.com/blog/category/regex) - Jun 2, 2005 ### [Announcing: The Regulator Logo Contest](https://osherove.com/blog/2005/6/2/announcing-the-regulator-logo-contest.html) - May 2, 2005 ### [Regulator 2005 & GUI threads goo- news on both?](https://osherove.com/blog/2005/5/2/regulator-2005-amp-gui-threads-goo-news-on-both.html) - Jan 16, 2005 ### ["Buy first, ask questions later"](https://osherove.com/blog/2005/1/16/quotbuy-first-ask-questions-laterquot.html) - Jan 11, 2005 ### [The Regulator now hosted at Regex.osherove.com](https://osherove.com/blog/2005/1/11/the-regulator-now-hosted-at-regexosherovecom.html) --- title: "Pitfalls to avoid in an authors publishing contract" url: "https://osherove.com/blog/2005/4/13/pitfalls-to-avoid-in-an-authors-publishing-contract.md" canonical: "https://osherove.com/blog/2005/4/13/pitfalls-to-avoid-in-an-authors-publishing-contract.html" published: "2005-04-13T17:18:00" updated: "2005-04-13T17:18:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is an interesting article found on one of the newsgroups: \" What pitfalls do I need to avoid in an authors publishing contract? \"" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Pitfalls to avoid in an authors publishing contract By Roy Osherove April 13, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 13, 2005; technical details may be outdated. This is an interesting article found on one of the newsgroups: "[What pitfalls do I need to avoid in an authors publishing contract?](http://www.askdavetaylor.com/what_pitfalls_do_i_need_to_avoid_in_an_authors_publishing_contract.html)" ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 15, 2005 ### [Weird and interesting Blog of the week - Anarchia](https://osherove.com/blog/2005/4/15/weird-and-interesting-blog-of-the-week-anarchia.html) - Apr 14, 2005 ### [Now \*that's\* how you tell a wedding proposal story!](https://osherove.com/blog/2005/4/14/now-thats-how-you-tell-a-wedding-proposal-story.html) - Apr 13, 2005 ### [Scary future ahead?](https://osherove.com/blog/2005/4/13/scary-future-ahead.html) - Apr 10, 2005 ### [An old joke with a new ending](https://osherove.com/blog/2005/4/10/an-old-joke-with-a-new-ending.html) --- title: "Scary future ahead?" url: "https://osherove.com/blog/2005/4/13/scary-future-ahead.md" canonical: "https://osherove.com/blog/2005/4/13/scary-future-ahead.html" published: "2005-04-13T08:41:00" updated: "2005-04-13T08:41:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is a scary way to order pizza: http://www.adcritic.com/interactive/view.php?id=5927 makes you think.." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scary future ahead? By Roy Osherove April 13, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 13, 2005; technical details may be outdated. This is a scary way to order pizza: [http://www.adcritic.com/interactive/view.php?id=5927](http://www.adcritic.com/interactive/view.php?id=5927)  makes you think.. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 14, 2005 ### [Now \*that's\* how you tell a wedding proposal story!](https://osherove.com/blog/2005/4/14/now-thats-how-you-tell-a-wedding-proposal-story.html) - Apr 13, 2005 ### [Pitfalls to avoid in an authors publishing contract](https://osherove.com/blog/2005/4/13/pitfalls-to-avoid-in-an-authors-publishing-contract.html) - Apr 10, 2005 ### [An old joke with a new ending](https://osherove.com/blog/2005/4/10/an-old-joke-with-a-new-ending.html) - Apr 3, 2005 ### [Weird fonts on this blog?](https://osherove.com/blog/2005/4/3/weird-fonts-on-this-blog.html) --- title: "Another Entlib example: Separate integration tests from unit tests (and learn to know the difference)" url: "https://osherove.com/blog/2005/4/11/another-entlib-example-separate-integration-tests-from-unit.md" canonical: "https://osherove.com/blog/2005/4/11/another-entlib-example-separate-integration-tests-from-unit.html" published: "2005-04-11T14:54:00" updated: "2005-04-11T14:54:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "Here are some more inputs on the EntLib unit tests runnability issues ( problems as specified in this blog post ) [I've bolded some phrases I thought were important in the original text] : Data 56 tests will fail if you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another Entlib example: Separate integration tests from unit tests (and learn to know the difference) By Roy Osherove April 11, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published April 11, 2005; technical details may be outdated. Here are some more inputs on the EntLib unit tests runnability issues (_problems as specified in_ [_this blog post_](http://www.agileprogrammer.com/oneagilecoder/archive/2005/04/07/3162.aspx)) _\[I've bolded some phrases I thought were important in the original text\]_: **Data** **56 tests will fail** if you do not have Oracle installed. If you do happen to have oracle installed, youll need to manually open the Data\\Tests\\TestConfigurationContext.cs file and change your oracle connection settings. _That configuration should have been in a config file relating to the tests and the user should have been asked what the connection to the Oracle server they would like to run against._ - Logging EmailSinkFixture.LogMessageToEmail **will fail**, since you do not have access to our internal mail server. You can fix this by changing Logging\\Tests\\EnterpriseLibrary.LoggingDistributor.config on line 22 to reference different smtpServers and to and from addresses. _[TypeMock](http://www.typemock.com/) could have been used or interfaces could have been made to test that "interaction" between the object indeed occurred. Testing the real email is an \*integration test\* and should be run separately._ - Security.ActiveDirectory **Tests will fail** because you cannot access our Active Directory server. There are instructions about how to set up ADAM in Security.ActiveDirectory.Configuration.ADAM Setup. Youll also need to change line 53 in Security.ActiveDirectory.Tests.TestConfigurationContext to reflect your ADAM setup. _Again - interfaces and mock objects could have been used to test this. testing against a live directory is an integration test that should be run separately._ - EnterpriseLibrary **It is normal for several of the tests to occasionally fail**. There are a few unit tests that are timing-dependent, especially in Caching and Configuration. These tests are testing whether or not something happens during a particular time interval, and sometimes the system delays the actions too long and those tests fail. If you rerun the test, it should work the next time. Additionally, our tests write to the event log, which occasionally fills up. If you begin to see a number of tests failing, check that your application event log is not full. _Why not have the method that sometimes fails and sometimes not be run twice or three times by a unit test that checks that it succeeds at least one of those times? A test that "sometimes" passes is not a unit test anyway - but if you want to make sure there are no false negatives - this is a great way to check._ One thing to note here - these are all considered **integration tests** because they rely on external objects beyond the tested ones to do their bidding and thus need special setup. there is a very good place for such tests, but they should not be called unit tests (even though they are automated - they don't test a unit - they test a set of related technologies and objects in scope). **Integration tests should be run separately and setup separately a special install program.** Why? because if they are mingled with your \*real\* unit tests and they keep failing - your end-developer will throw out the good with the bad and decide that it's not worth to run \*any\* of the unit tests since they can't be trusted (a few rotten apples spoil the bunch). **You should always provide a basic set of tests that \*always\* runs** and is fully green when someone runs it. You can leave the other integration tests for a special run with special setup  - but it's important not to mess up the developer experience and sense of test runnability in this regard - something has to be run consistently and easily to make people use and extend your tests. otherwise you've done a lot of work for nothing- people won't use it. We're a lazy bunch. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 14, 2005 ### [Try to avoid multiple asserts in a single unit test](https://osherove.com/blog/2005/4/14/try-to-avoid-multiple-asserts-in-a-single-unit-test.html) - Apr 14, 2005 ### [Setting Up VirtualMock in the Eclipse IDE](https://osherove.com/blog/2005/4/14/setting-up-virtualmock-in-the-eclipse-ide.html) - Apr 11, 2005 ### [Test maintainability: consider creating a test fixture "per method" instead of "per class"](https://osherove.com/blog/2005/4/11/test-maintainability-consider-creating-a-test-fixture-quotpe.html) - Apr 11, 2005 ### [Enterprise library -- Test usability and "runnability"](https://osherove.com/blog/2005/4/11/enterprise-library-test-usability-and-quotrunnabilityquot.html) --- title: "Test maintainability: consider creating a test fixture \"per method\" instead of \"per class\"" url: "https://osherove.com/blog/2005/4/11/test-maintainability-consider-creating-a-test-fixture-quotpe.md" canonical: "https://osherove.com/blog/2005/4/11/test-maintainability-consider-creating-a-test-fixture-quotpe.html" published: "2005-04-11T14:26:00" updated: "2005-04-11T14:26:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "If you find yourself writing lots of tests for a single method on your tested class - consider making a specific fixture for just one method or feature. It would make the class more maintainable and logically sound. For…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test maintainability: consider creating a test fixture "per method" instead of "per class" By Roy Osherove April 11, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published April 11, 2005; technical details may be outdated. If you find yourself writing lots of tests for a single method on your tested class - consider making a specific fixture for just one method or feature. It would make the class more maintainable and logically sound.  For example, a complex Login class might have one "IsLoginOK" method that has dozens of unit test for various logical angles and features. You might have a fixture that looks like this: **\[TestFixture\]** **public class LoginManagerTests\_IsLoginOK** **{**    **\[Test\]**    **public void ReturnsFalseOnNonExistingUser()**    **{**    **...**    **}** **}** note that: - The class name suggests the main feature or function being tested by postfixing it to the name - The is no need to prefix methods in the class with the method name since it is clearly the only method being tests. Each test case is a variation of feature of this method. - You might end up with multiple class test fixtures for one tested class. That's OK, just remember to put them under a specific folder in your test project with the name of the tested class like this - ProjectName - LoginManagerTests - **LoginManagerTests\_IsLoginOK** - **LoginManagerTests\_ChangePassword** - **LoginManagerTests\_General** - You would probably end up with a class that tests various "small" features which were left over from other fixtures. name it to \[TestedClass\_General\] or \[TestedClass\_Misc\] so that it's testing purpose is understood.  ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 14, 2005 ### [Setting Up VirtualMock in the Eclipse IDE](https://osherove.com/blog/2005/4/14/setting-up-virtualmock-in-the-eclipse-ide.html) - Apr 11, 2005 ### [Another Entlib example: Separate integration tests from unit tests (and learn to know the difference)](https://osherove.com/blog/2005/4/11/another-entlib-example-separate-integration-tests-from-unit.html) - Apr 11, 2005 ### [Enterprise library -- Test usability and "runnability"](https://osherove.com/blog/2005/4/11/enterprise-library-test-usability-and-quotrunnabilityquot.html) - Apr 10, 2005 ### [Making your tests withstand design and interface changes - remove code duplication](https://osherove.com/blog/2005/4/10/making-your-tests-withstand-design-and-interface-changes-rem.html) --- title: "Enterprise library -- Test usability and \"runnability\"" url: "https://osherove.com/blog/2005/4/11/enterprise-library-test-usability-and-quotrunnabilityquot.md" canonical: "https://osherove.com/blog/2005/4/11/enterprise-library-test-usability-and-quotrunnabilityquot.html" published: "2005-04-11T14:16:00" updated: "2005-04-11T14:16:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "So, Enterprise Library is out and it's a great thing. It even has unit tests. But is anyone actually using them? Enterprise Library is a great test case for the issue of unit tests usability because: It will be used by…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Enterprise library -- Test usability and "runnability" By Roy Osherove April 11, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published April 11, 2005; technical details may be outdated. So, [Enterprise Library is out](http://www.gotdotnet.com/workspaces/workspace.aspx?id=295a464a-6072-4e25-94e2-91be63527327) and it's a great thing. It even has unit tests. But is anyone actually using them? Enterprise Library is a great test case for the issue of **unit tests usability** because: 1. It will be used by thousands of developers 2. **It will be maintained, changed, configured and extended by thousands of developers** 3. It will  need to be understood by thousands of developers 4. It will need to live for a long long time as a generic block system base 5. It even has a survey asking people how they are dealing with the unit tests in the system So - the first hurdle we've already come across - fatal clause #2: [This is a great example](http://www.peterprovost.org/archive/2005/04/07/3163.aspx) of how you can create a well tested system with automated tests, and then watch maintenance developers completely ignore them and go on changing the system without checking for breaking changes just because they find it hard to make the tests run in the first place. - People can't just open the application and run the tests. They need to "figure stuff out" first. - That means that they probably won't have time to "figure stuff out" and so they'll just start changing the code without making sure they didn't break anything - More people will then use the "changed" and untested code thus they are more likely to not run the unit tests as well. Even if they ran the tests, who's to say there isn't a bug? suddenly the tests are not trustworthy. "They passed" -- "That doesn't mean anything. That's not even tested. We have to start debugging it." The broken window theory rules here. The harder it is to run the tests, the less likely it will be for people to run them, meaning the less likely it will be to write new tests ("I'm gonna test it \*now"?? half of this is untested anyway!") A great hint you're missing something is if you find yourself [starting up forum threads](http://www.gotdotnet.com/workspaces/messageboard/thread.aspx?id=295a464a-6072-4e25-94e2-91be63527327&threadid=060c1685-5ee7-4b0d-b0e9-cad81116d600) on this issue or [posting blog posts](http://www.agileprogrammer.com/oneagilecoder/archive/2005/04/07/3162.aspx) on making stuff work. It's like comments in your code - if you write them you're probably not doing something right(for readability. In our case it's usability or "runnability"). I'd love to take a look at the replies to the [EntLib test usability survey](http://www.zoomerang.com/recipient/survey-intro.zgi?p=WEB2249C9QABBU) (not specified as one, but has some specific questions regarding the usage and helpfulness of the unit tests in the system) and I bet most of them are of the sort "I can't make it run so I gave up" or "I didn't know you have unit tests" or "I'm not sure what I should do with these". **So what's the solution here?** It's simple and painful all at once: make it automated. \*everything\*. When I install EntLib, I want it to install all the test cases, all the test configurations, all the Database scripts, **\*everything\*** so that all I need to do after I install is press a button or click a menu. I don't want to do anything more than that, **because 90% of the developers won't bother** doing something that takes two-three clicks, or maybe run a batch file, god forbid. I want the setup program to ask me for all the locations of my database and where I want to setup the test data. If it can't handle that, I'd rather have the tests divided into two or more "runnable" categories: "Can run now", "Can run later if you have X", "Can run later if you have Y". The more categories you have, the less likely it will be for someone to run \*all\* the tests and we're back into the vicious circle again. The whole idea here is automation, so that's what people expect. If I have to setup a build machine for an hour just to see if my tests work - that's fine - just don't expect thousands of developers to be as dedicated as I am to the cause - they won't be. They'll mangle your code in ways you didn't think of - and they probably won't even be aware that there is an automated way to check if they broke anything! To save that last point - you should make EntLib build configuration run a specific tool that checks if tests have been run at least once and alert the user if they didn't. It's easy to setup in the unit tests to set some global variable or registry key or whatever to be able to check it from the pre-build event or anything of this matter. **To summarize:** I'm not saying the EntLib guys didn't do a great job - they certainly did I think it's a breakthrough component in many ways.It's a great leap forward to have unit tests for all this code. We need to think a bout the next step though - the one we're starting to experience today as people start to come of age with the notion of writing unit tests-- the next leap forward will be to actually make everyone run them at least once without breaking a sweat. They need to be **runnable** which would in turn make them **usable**.  Then, my friends, we can start talking about productivity. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 11, 2005 ### [Another Entlib example: Separate integration tests from unit tests (and learn to know the difference)](https://osherove.com/blog/2005/4/11/another-entlib-example-separate-integration-tests-from-unit.html) - Apr 11, 2005 ### [Test maintainability: consider creating a test fixture "per method" instead of "per class"](https://osherove.com/blog/2005/4/11/test-maintainability-consider-creating-a-test-fixture-quotpe.html) - Apr 10, 2005 ### [Making your tests withstand design and interface changes - remove code duplication](https://osherove.com/blog/2005/4/10/making-your-tests-withstand-design-and-interface-changes-rem.html) - Apr 10, 2005 ### [What should you write in a test Assert message?](https://osherove.com/blog/2005/4/10/what-should-you-write-in-a-test-assert-message.html) --- title: "Making your tests withstand design and interface changes - remove code duplication" url: "https://osherove.com/blog/2005/4/10/making-your-tests-withstand-design-and-interface-changes-rem.md" canonical: "https://osherove.com/blog/2005/4/10/making-your-tests-withstand-design-and-interface-changes-rem.html" published: "2005-04-10T23:29:00" updated: "2005-04-10T23:29:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "One of the biggest pitfalls developers writing unit tests face is in the face of a re-design. They write hundreds of unit tests for various classes, and suddenly a design change breaks many of them - a default…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Making your tests withstand design and interface changes - remove code duplication By Roy Osherove April 10, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published April 10, 2005; technical details may be outdated. One of the biggest pitfalls developers writing unit tests face is in the face of a re-design. They write hundreds of unit tests for various classes, and suddenly a design change breaks many of them - a default constructor is removed, parameters are added or removed from interfaces, various default conditions change - havoc rears its ugly head. The poor developer is then faced with "fixing" hundreds of tests just because a method was added to a constructor. To remove this obstacle from the developer one must take the precaution in writing the tests. There are several rules you should abide by that will save your hiny on most events where such a change occurs: here are some guidelines: - **Encapsulate object creation code** in helper methods inside your test fixture. If just your fixture is creating these objects - these methods should reside as private methods on the fixture. If more classes use them, they should be refactored out into a separate helper class with static helper methods for this creation (also known as the "Object Mother" pattern).    for example:       **\[Test\]**       **public void Sum\_ReturnsZeroByDefault()**       **{**          **Calculator calc = new Calculator();**          **int result = calc.Sum();**          **...**       **}** should be refactored into:         **\[Test\]**       **public void Sum\_ReturnsZeroByDefault()**       **{**          **Calculator calc = setup\_CreateCalculator();**          **int result = calc.Sum();**          **...**       **}**       **private Calcualtor setup\_CreateCalcualtor()**       **{**          **return new Calculator();**       **}** notice the following: - After this change, any changes to the Calculator's public constructor should only propagate to a small "fix" in one private method in the fixture, used by many tests. - The helper method has a special prefix "setup\_" to denote that it is a helper method used to setup object instances for test cases. It also makes your test more readable. If multiple test fixture need to use the Calculator object, the code might turn into:   \[Test\]       public void Sum\_ReturnsZeroByDefault()       {          Calculator calc = setup\_CreateCalculator();          int result = calc.Sum();          ...       }       private Calcualtor setup\_CreateCalcualtor()       {          return **CalctulatorTestHelper.CreateDefaultCalculator();**       }          **public class CalctulatorTestHelper**       **{**                **public static Calculator CreateDefaultCalculator()**          **{**                      **return new Calculator();**          **}**       **}** notice the following: - We still keep the original setup\_ helper method so that we change as little code as we need to in the old fixture. We just delegate the work into the CalculatorHelperobject. This level of indirection might not be needed but might help us in the future if we find we need to actually make a change to the CalculatorHelper class. - None of this code sits in production, but is only related to the testing project - **Encapsulate complex or lengthy object initialization code**  or complex interaction code into helper methods in your fixture or helper objects. If you find that you have two tests that initialize an object's state to the same state - refactor that code into a different method that returns the object with the known state. This helps future changes to the various object methods and default state behavior not break your tests and you bursting into tears. for example:       **\[Test\]**       **\[ExpectedException(typeof(Exception),"User cannot be added twice")**       **public void AddUser\_AddingSameUserTwiceThrowsException()**       **{**          **LoginManager lm = setup\_CreateDefaultLoginManager();**                   **lm.AddUser("a","b");**          **//exception should be thrown here**                   **lm.AddUser("a","");**       **}**       **\[Test\]**       **public void ChangePassword\_AddingSameUserTwiceThrowsException()**       **{**          **LoginManager lm = setup\_CreateDefaultLoginManager();**                   **lm.AddUser("a","b");**          **lm.ChangePassword("a","c");**                   **bool isLoginOk = lm.IsLoginOK("a","c");**                   **Assert.IsTrue(isLoginOk,"Login should have been accepted for user with the new password"**       **}**       **private LoginManager setup\_CreateDefaultLoginManager()**       **{**          **return new LoginManager();**       **}**    should be replaced with something along the lines of:       \[Test\]       \[ExpectedException(typeof(Exception),"User cannot be added twice")       public void AddUser\_AddingSameUserTwiceThrowsException()       {          **LoginManager lm = setup\_CreateLoginManagerIwhtOneDefaultUser()**          //exception should be thrown here                   lm.AddUser("a","");       }       \[Test\]       public void ChangePassword\_AddingSameUserTwiceThrowsException()       {          **LoginManager lm = setup\_CreateLoginManagerIwhtOneDefaultUser**          lm.ChangePassword("a","c");                   bool isLoginOk = lm.IsLoginOK("a","c");                   Assert.IsTrue(isLoginOk,"Login should have been accepted for user with the new password"       }       **private LoginManager setup\_CreateLoginManagerIwhtOneDefaultUser()**       **{**                   **LoginManager lm = setup\_CreateDefaultLoginManager();**                   **lm.AddUser("a","b");**          **return lm;**       **}** some points on this: - You could also use various helper methods that take parameters (for example, a login manager with N users already added to it to check various counts - You should use this method whenever you find duplication in your tests. **Don't do it until** you see duplication in your test code. Your primary concern is to make the test work, then refactor the test code as well as the production code. - If you continue on with this method your tests will become very robust and be able to adept to new requirements in your code with little effort. - Note that this method helps when the design change does not affect the **logic** behind your test. For example, the method of adding a user to LoginManager might change, but Changing a password for the user (as depicted above) should still be tested the same. If the design affects your test logic - there's no escape but changing the test. You should be very wary of changing your tests just to make them pass. Sometimes they break because they are telling you that you broke something in your logic. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 11, 2005 ### [Test maintainability: consider creating a test fixture "per method" instead of "per class"](https://osherove.com/blog/2005/4/11/test-maintainability-consider-creating-a-test-fixture-quotpe.html) - Apr 11, 2005 ### [Enterprise library -- Test usability and "runnability"](https://osherove.com/blog/2005/4/11/enterprise-library-test-usability-and-quotrunnabilityquot.html) - Apr 10, 2005 ### [What should you write in a test Assert message?](https://osherove.com/blog/2005/4/10/what-should-you-write-in-a-test-assert-message.html) - Apr 10, 2005 ### [Agile Israel news and updates](https://osherove.com/blog/2005/4/10/agile-israel-news-and-updates.html) --- title: "What should you write in a test Assert message?" url: "https://osherove.com/blog/2005/4/10/what-should-you-write-in-a-test-assert-message.md" canonical: "https://osherove.com/blog/2005/4/10/what-should-you-write-in-a-test-assert-message.html" published: "2005-04-10T22:50:00" updated: "2005-04-10T22:50:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "The Assert message in a test is one of the most important parts. It's there to tell us what went wrong with our code. what we expected to happen but didn't, and what should have happened instead. A good assert message…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What should you write in a test Assert message? By Roy Osherove April 10, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published April 10, 2005; technical details may be outdated. The Assert message in a test is one of the most important parts. It's there to tell us what went wrong with our code. what we expected to happen but didn't, and what should have happened instead. A good assert message helps us track bugs and understand unit tests more easily. Sadly, most developers new to automated unit tests usually leave the assert messages to last (which means they never get written correctly). **DO** - Express what **should** have happened or what **did not** happen - "Foo should have thrown an exception" - "Foo did not throw any exception" (not as good as the previous one) - "Foo should have returned a new ID" - "Foo should not allow negative numbers as parameters" - "Foo should open the connection before returning it" - "Foo did not open the connection before returning it" - "Person class did not have a valid GUID by default" **Don't** - Provide empty or meaningless messages - Provide messages that repeat the name of the test case - Provide messages that simply state the test inputs ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 11, 2005 ### [Enterprise library -- Test usability and "runnability"](https://osherove.com/blog/2005/4/11/enterprise-library-test-usability-and-quotrunnabilityquot.html) - Apr 10, 2005 ### [Making your tests withstand design and interface changes - remove code duplication](https://osherove.com/blog/2005/4/10/making-your-tests-withstand-design-and-interface-changes-rem.html) - Apr 10, 2005 ### [Agile Israel news and updates](https://osherove.com/blog/2005/4/10/agile-israel-news-and-updates.html) - Apr 8, 2005 ### [CFNUnitBridge: Test Driven Development for the .NET compact framework(almost there)](https://osherove.com/blog/2005/4/8/cfnunitbridge-test-driven-development-for-the-net-compact-fr.html) --- title: "Agile Israel news and updates" url: "https://osherove.com/blog/2005/4/10/agile-israel-news-and-updates.md" canonical: "https://osherove.com/blog/2005/4/10/agile-israel-news-and-updates.html" published: "2005-04-10T15:05:00" updated: "2005-04-10T15:05:00" tags: ["Agile Related", "Community"] author: "Roy Osherove" description: "I'm continuing to work on the Agile Israel site. This is what I have so far . You've got a page for each meeting with downloadable goods and also links to slides and audio bits from the talks. My first reaction is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Israel news and updates By Roy Osherove April 10, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published April 10, 2005; technical details may be outdated. I'm continuing to work on the Agile Israel site. [This is what I have so far](http://agileisrael.com/). You've got a page for each meeting with downloadable goods and also links to slides and audio bits from the talks. My first reaction is "eh..". I'm not a great design expert so if anyone can help me out with designing DotNetNuke to something "cool" that'd be great (and a credit on the site). We're also finally mentioned on the [MS Israel site](http://www.microsoft.com/israel/usergroups) (the link is kinda wrong, but that'll change soon too). One last thing: [The next meeting will be this month](http://www.agileisrael.com/Default.aspx?tabid=58) on the 25th (Monday). I'll be sending out notification emails on the mailing list. If you want to register for the mailing list send an email to **join @ agileIsrael.com** and ask. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 10, 2005 ### [Making your tests withstand design and interface changes - remove code duplication](https://osherove.com/blog/2005/4/10/making-your-tests-withstand-design-and-interface-changes-rem.html) - Apr 10, 2005 ### [What should you write in a test Assert message?](https://osherove.com/blog/2005/4/10/what-should-you-write-in-a-test-assert-message.html) - Apr 8, 2005 ### [CFNUnitBridge: Test Driven Development for the .NET compact framework(almost there)](https://osherove.com/blog/2005/4/8/cfnunitbridge-test-driven-development-for-the-net-compact-fr.html) - Apr 8, 2005 ### [\[Free eBook\]FIT for Developing Software: Framework for Integrated Tests](https://osherove.com/blog/2005/4/8/free-ebookfit-for-developing-software-framework-for-integrat.html) --- title: "An old joke with a new ending" url: "https://osherove.com/blog/2005/4/10/an-old-joke-with-a-new-ending.md" canonical: "https://osherove.com/blog/2005/4/10/an-old-joke-with-a-new-ending.html" published: "2005-04-10T14:31:00" updated: "2005-04-10T14:31:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Here's a funny joke I just read (you probably know the first half..) It's taken from slahdot, but I found it over on this Hebrew blog \"A helicopter was flying around above Seattle when an electrical malfunction disabled…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # An old joke with a new ending By Roy Osherove April 10, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 10, 2005; technical details may be outdated. Here's a funny joke I just read (you probably know the first half..) It's taken from slahdot, but I found it over on [this Hebrew blog](http://linmagazine.co.il/node/view/5434) "A helicopter was flying around above Seattle when an electrical malfunction disabled all of the aircraft's electronic navigation and communications equipment Due to the clouds and haze, the pilot could not determine the helicopter's position. The pilot saw a tall building, flew toward it, circled, and held up a handwritten sign that said "Where am I?" in large letters. People in the tall building quickly responded to the aircraft, drew a large sign, and held it in a building window. Their sign said "You are in a Helicopter." The pilot smiled, waved, looked at his map, determined the course to steer to SEATAC airport, and landed safely. After they were on the ground, the copilot asked the pilot how he had done it. "I knew it had to be the Microsoft Building, because they gave me a technically correct but completely useless answer." " **second part** "Then the co-pilot says, "Gee, you must be a [Linux](http://linmagazine.co.il/glossary#140) user". "How did you know that?" says the Pilot. "Because here you are in a broken helicopter, you didn't know where you were, and suddenly now it's Microsoft's fault" ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 13, 2005 ### [Pitfalls to avoid in an authors publishing contract](https://osherove.com/blog/2005/4/13/pitfalls-to-avoid-in-an-authors-publishing-contract.html) - Apr 13, 2005 ### [Scary future ahead?](https://osherove.com/blog/2005/4/13/scary-future-ahead.html) - Apr 3, 2005 ### [Weird fonts on this blog?](https://osherove.com/blog/2005/4/3/weird-fonts-on-this-blog.html) - Mar 26, 2005 ### [Software Factories And Regular Expressions](https://osherove.com/blog/2005/3/26/software-factories-and-regular-expressions.html) --- title: "LinMagazine: Hebrew blogs about technology and development" url: "https://osherove.com/blog/2005/4/10/linmagazine-hebrew-blogs-about-technology-and-development.md" canonical: "https://osherove.com/blog/2005/4/10/linmagazine-hebrew-blogs-about-technology-and-development.html" published: "2005-04-10T14:21:00" updated: "2005-04-10T14:21:00" tags: ["Community"] author: "Roy Osherove" description: "I just discovered LinMagazine - an Israeli (Hebrew Speaking) magazine with online blogs and RSS feeds. It looks to be mainly for Linux lovers, but I do find a nice amount of posts to be interesting there. A lot of the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # LinMagazine: Hebrew blogs about technology and development By Roy Osherove April 10, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published April 10, 2005; technical details may be outdated. I just discovered [LinMagazine](http://linmagazine.co.il/blog/) \- an Israeli (Hebrew Speaking) magazine with online blogs and RSS feeds. It looks to be mainly for Linux lovers, but I do find a nice amount of posts to be interesting there. A lot of the blog posts there do talk about Microsoft but they seem to be a little less "MS is evil" and a little more "I think Microsoft could have done this better because....". In short - more thinking behind the words (though I don't agree with everything written there). In any case - it looks like a nice community is building around this, and it's worth subscribing to the [RSS feed](http://linmagazine.co.il/blog/feed). ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Jun 9, 2005 ### [Israel C# user group: Instrumentation in Windows Operating Systems](https://osherove.com/blog/2005/6/9/israel-c-user-group-instrumentation-in-windows-operating-sys.html) - Apr 10, 2005 ### [Agile Israel news and updates](https://osherove.com/blog/2005/4/10/agile-israel-news-and-updates.html) - Apr 3, 2005 ### [VB user group meeting this week: Diving into ADO.NET 2.0 and VS 2005 Data features](https://osherove.com/blog/2005/4/3/vb-user-group-meeting-this-week-diving-into-adonet-20-and-vs.html) - Mar 12, 2005 ### [Catch me at one of these upcoming user group events this month](https://osherove.com/blog/2005/3/12/catch-me-at-one-of-these-upcoming-user-group-events-this-mon.html) --- title: "Enterprise Library - Configuration AB Memory Leak Patch" url: "https://osherove.com/blog/2005/4/9/enterprise-library-configuration-ab-memory-leak-patch.md" canonical: "https://osherove.com/blog/2005/4/9/enterprise-library-configuration-ab-memory-leak-patch.html" published: "2005-04-09T10:55:00" updated: "2005-04-09T10:55:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "The Enterprise Library team recently became aware of a memory leak issue in the Configuration Application Block, which is used by all other blocks in Enterprise Library. Patch 1475 , available in the Releases section of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Enterprise Library - Configuration AB Memory Leak Patch By Roy Osherove April 9, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 9, 2005; technical details may be outdated. _The Enterprise Library team recently became aware of a memory leak issue in the Configuration Application Block, which is used by all other blocks in Enterprise Library._ _Patch 1475__, available in the Releases section of the site, contains a fix to the issue. Because the issue has the potential to impact many applications that use Enterprise Library, Microsoft strongly advises all users of Enterprise Library (January 2005) to install this patch and recompile all applications that use any of the application blocks_ Download it [here](http://www.gotdotnet.com/workspaces/workspace.aspx?id=295a464a-6072-4e25-94e2-91be63527327) \[via [Ohad](http://weblogs.asp.net/israelio/archive/2005/04/09/397790.aspx)\] (link fixed) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 19, 2005 ### [LibCheck: List breaking changes between assembly versions](https://osherove.com/blog/2005/6/19/libcheck-list-breaking-changes-between-assembly-versions.html) - Jun 13, 2005 ### [XStream.NET - Serialize almost anything easily?](https://osherove.com/blog/2005/6/13/xstreamnet-serialize-almost-anything-easily.html) - Apr 8, 2005 ### [\[Free eBook\]FIT for Developing Software: Framework for Integrated Tests](https://osherove.com/blog/2005/4/8/free-ebookfit-for-developing-software-framework-for-integrat.html) - Apr 8, 2005 ### [TimedLock class: helping find and avoid deadlocks in your multithreaded code](https://osherove.com/blog/2005/4/8/timedlock-class-helping-find-and-avoid-deadlocks-in-your-mul.html) --- title: "Whitepaper: Introducing System Transactions, by Juval Lowy" url: "https://osherove.com/blog/2005/4/9/whitepaper-introducing-system-transactions-by-juval-lowy.md" canonical: "https://osherove.com/blog/2005/4/9/whitepaper-introducing-system-transactions-by-juval-lowy.html" published: "2005-04-09T10:53:00" updated: "2005-04-09T10:53:00" tags: [".Net 2.0"] author: "Roy Osherove" description: "Juval Lowy is out with a new white paper at the Microsoft download center . It's 50 (-10 for introduction) pages full of good information about the upcoming features of Indigo, as reflected in the System.Transactions…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Whitepaper: Introducing System Transactions, by Juval Lowy By Roy Osherove April 9, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0) **Historical article** · Originally published April 9, 2005; technical details may be outdated. Juval Lowy is out with a new white paper at the [Microsoft download center](http://www.microsoft.com/downloads/details.aspx?FamilyId=AAC3D722-444C-4E27-8B2E-C6157ED16B15&displaylang=en). It's 50 (-10 for introduction) pages full of good information about the upcoming features of Indigo, as reflected in the System.Transactions namespace in .NET 2.0. I've heard some of this stuff before and it's important to know what's the future gonna be like for the various transactional work we do in our applications. [Go download it here](http://www.microsoft.com/downloads/details.aspx?FamilyId=AAC3D722-444C-4E27-8B2E-C6157ED16B15&displaylang=en) and learn the new batch of buzz words such as :     LTM, OleTx, transaction promotion, TransactionScope, indirect scope nesting, CommittableTransaction, Transaction Events, Cloning,  EnterpriseServicesInteropOption and more... #### "Overview Developers on the Microsoft® Windows® platform traditionally choose between two transactional programming models: explicit transaction management or declarative transaction flow and management. Both these programming models have their disadvantages and neither one is superior to the other in every respect. Version 2.0 of the .NET Framework introduces a new transactional programming model available in the System.Transactions namespace. The new model allows developers to easily write transactional code with the lowest overhead possible while minimizing the amount of hand-crafted code and separating it from the application hosting environment and instance management. This whitepaper starts by stating the problem with the traditional programming models and the motivation for the new model. The whitepaper then presents the new programming model, its features and its capabilities, and some advanced features such as asynchronous work, events, security, concurrency management and interoperability" ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Jun 19, 2005 ### [\[Audio Interview\] Brian Noyes: Deep .NET Q&A](https://osherove.com/blog/2005/6/19/audio-interview-brian-noyes-deep-net-qampa.html) - Apr 14, 2005 ### [Debug Visualizers in VS 2005: Almost there, one big feature missing](https://osherove.com/blog/2005/4/14/debug-visualizers-in-vs-2005-almost-there-one-big-feature-mi.html) - Jan 18, 2005 ### [Data Binding with .Net 2.0 : upcoming coolness](https://osherove.com/blog/2005/1/18/data-binding-with-net-20-upcoming-coolness.html) - Jan 11, 2005 ### [\[Interview\] Jonathan de Halleux on mbUnit and model based testing](https://osherove.com/blog/2005/1/11/interview-jonathan-de-halleux-on-mbunit-and-model-based-test.html) --- title: "[CoolTool] Microsoft USB Flash Drive Manager" url: "https://osherove.com/blog/2005/4/9/cooltool-microsoft-usb-flash-drive-manager.md" canonical: "https://osherove.com/blog/2005/4/9/cooltool-microsoft-usb-flash-drive-manager.html" published: "2005-04-09T02:10:00" updated: "2005-04-09T02:10:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Use this application to backup and restore presentation, pictures, songs and applications from and to USB Flash Drive devices and take them with you. Use USB Flash Drives to store personal data, to keep your network…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[CoolTool\] Microsoft USB Flash Drive Manager By Roy Osherove April 9, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published April 9, 2005; technical details may be outdated. _Use_ [_this_](http://www.microsoft.com/downloads/details.aspx?familyid=94991901-bfc4-485e-bcae-c9df0accdaae&displaylang=en) _application to backup and restore presentation, pictures, songs and applications from and to USB Flash Drive devices and take them with you. Use USB Flash Drives to store personal data, to keep your network configuration and to share information with your friends. Microsoft USB Flash Drive_ \[via [Ohad](http://weblogs.asp.net/israelio/archive/2005/04/09/397755.aspx)\] Lovely![](http://www.microsoft.com/downloads/details.aspx?familyid=94991901-bfc4-485e-bcae-c9df0accdaae&displaylang=en) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 2, 2005 ### [Regulator 2005 & GUI threads goo- news on both?](https://osherove.com/blog/2005/5/2/regulator-2005-amp-gui-threads-goo-news-on-both.html) - Apr 16, 2005 ### [\[CoolTool\] SWExplorerAutomation: Automate web GUI unit testing for IE](https://osherove.com/blog/2005/4/16/cooltool-swexplorerautomation-automate-web-gui-unit-testing.html) - Mar 20, 2005 ### [Taking notice of Lucene: A searching & indexing library](https://osherove.com/blog/2005/3/20/taking-notice-of-lucene-a-searching-amp-indexing-library.html) - Mar 12, 2005 ### [\[CoolTool\] FinalBuilder 3.0 - the ultimate build management and automation tool](https://osherove.com/blog/2005/3/12/cooltool-finalbuilder-30-the-ultimate-build-management-and-a.html) --- title: "[Recording] Roy Osherove on Software Factories and Domain Specific Languages" url: "https://osherove.com/blog/2005/4/9/recording-roy-osherove-on-software-factories-and-domain-spec.md" canonical: "https://osherove.com/blog/2005/4/9/recording-roy-osherove-on-software-factories-and-domain-spec.html" published: "2005-04-09T00:12:00" updated: "2005-04-09T00:12:00" tags: [".Net Original", "Architecture", "Interview"] author: "Roy Osherove" description: "Last month I delivered a presentation at the Israel .NET architects user group about Software Factories and Domain Specific Languages. Perhaps it's just my big ego, but I definitely feel that people should be able to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Recording\] Roy Osherove on Software Factories and Domain Specific Languages By Roy Osherove April 9, 2005 In [.Net Original](https://osherove.com/blog/category/net-original), [Architecture](https://osherove.com/blog/category/architecture), [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published April 9, 2005; technical details may be outdated. Last month I delivered a presentation at the [Israel .NET architects user group](http://www.microsoft.com/israel/events/default.aspx?pageType=1&idType=1&id=28) about Software Factories and Domain Specific Languages. Perhaps it's just my big ego, but I definitely feel that people should be able to hear presentation by recording if they can't make it to the actual user group meeting. Sometimes ther'es some great material there and it's a shame to waste it. Slides just don't cut it for these things, frankly. So, I gave it a shot and recorded myself speak at the user group using a small microphone attached to a headset that I set down near the middle of the stage. It recorded remarkably well!  (note that it's in Hebrew) _Length: 1 hour, 45 minutes (in two down loadable Mp3 parts for easy CD burning) ._ Language: **Hebrew**. **Summary (**[**go download**](http://www.teamagile.com/mainpages/Interviews.html) (slides available as well)**)** [Roy Osherove](http://www.teamagile.com/mainpages/Aboutus.html) Discusses the concepts behind Software factories, why they might present an alternative to today's software development techniques and how we can use the various tools that will be provided by Microsoft's domain specific language tools to create our own software factories in the IDE. Roy also discusses the various items that exist today that might be called software factories and the challenges along the way to making this happen on a large scale. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 23, 2005 ### [UISafeInvoker: Making UI Thread safe methods - a little more easily](https://osherove.com/blog/2005/5/23/uisafeinvoker-making-ui-thread-safe-methods-a-little-more-ea.html) - May 10, 2005 ### [\[Article\]Simplify Data Layer Unit Testing using Enterprise Services](https://osherove.com/blog/2005/5/10/articlesimplify-data-layer-unit-testing-using-enterprise-ser.html) - Mar 3, 2005 ### [Solving Binary serialization versioning conflicts](https://osherove.com/blog/2005/3/3/solving-binary-serialization-versioning-conflicts.html) - Jan 23, 2005 ### [New stuff on Team Agile: XtUnit and Interception block with basic documentation](https://osherove.com/blog/2005/1/23/new-stuff-on-team-agile-xtunit-and-interception-block-with-b.html) --- title: "CFNUnitBridge: Test Driven Development for the .NET compact framework(almost there)" url: "https://osherove.com/blog/2005/4/8/cfnunitbridge-test-driven-development-for-the-net-compact-fr.md" canonical: "https://osherove.com/blog/2005/4/8/cfnunitbridge-test-driven-development-for-the-net-compact-fr.html" published: "2005-04-08T15:06:00" updated: "2005-04-08T15:06:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Just found this via this post over at CodeBetter.com . CFNUnitBridge The goal of the CFNUnitBridge is to bring unit testing and test-driven development to the .Net Compact Framework. Currently it specifically targets…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CFNUnitBridge: Test Driven Development for the .NET compact framework(almost there) By Roy Osherove April 8, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published April 8, 2005; technical details may be outdated. Just found this via [this post](http://www.codebetter.com/blogs/steve.hebert/archive/2005/04/06/61456.aspx) over at [CodeBetter.com](http://www.codebetter.com/blogs). [CFNUnitBridge](http://cfnunitbridge.tigris.org/) _The goal of the CFNUnitBridge is to bring unit testing and test-driven development to the .Net Compact Framework. Currently it specifically targets NUnit, but in the future it will work with multiple unit testing frameworks._ _CFNUnitBridge presently includes a GUI runner that executes tests on the PocketPC device or emulator. The next major release will add a remotable device runner, with a desktop controller that will automate the test runs and report the results. The next major step after that will be to get the tool the point where it can be integrated into the Continuous Integration process._ and a small warning at the top of the page: This project is still in the very early stages. It is currently at version 0.2. _Presently it is operable, with a test runner that executes the tests either on the emulator or on the device itself. However, we would like to add remoting capabilities so that the tests are executed on the device, but the results are presented on the development workstation. _ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 10, 2005 ### [What should you write in a test Assert message?](https://osherove.com/blog/2005/4/10/what-should-you-write-in-a-test-assert-message.html) - Apr 10, 2005 ### [Agile Israel news and updates](https://osherove.com/blog/2005/4/10/agile-israel-news-and-updates.html) - Apr 8, 2005 ### [\[Free eBook\]FIT for Developing Software: Framework for Integrated Tests](https://osherove.com/blog/2005/4/8/free-ebookfit-for-developing-software-framework-for-integrat.html) - Apr 5, 2005 ### [What Algorithms should you test and how?](https://osherove.com/blog/2005/4/5/what-algorithms-should-you-test-and-how.html) --- title: "[Free eBook]FIT for Developing Software: Framework for Integrated Tests" url: "https://osherove.com/blog/2005/4/8/free-ebookfit-for-developing-software-framework-for-integrat.md" canonical: "https://osherove.com/blog/2005/4/8/free-ebookfit-for-developing-software-framework-for-integrat.html" published: "2005-04-08T15:00:00" updated: "2005-04-08T15:00:00" tags: [".Net Quotations", "Agile Related", "Free book chapters"] author: "Roy Osherove" description: "The FIT for Developing Software: Framework for Integrated Tests (2.4 MB) free eBook by Rick Mugridge and Ward Cunningham is available for download. \"This book is about using Fit tables for two major, interconnected…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Free eBook\]FIT for Developing Software: Framework for Integrated Tests By Roy Osherove April 8, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Agile Related](https://osherove.com/blog/category/agile-related), [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published April 8, 2005; technical details may be outdated. The [FIT for Developing Software: Framework for Integrated Tests](http://c2.com/FitBook8Dec2004.pdf) (2.4 MB) **free** eBook by Rick Mugridge and Ward Cunningham is available for download. "This book is about using Fit tables for two major, interconnected tasks: - Helping to think about and communicate what is needed in a software application through concrete examples. - Automatically testing that the application is doing what is expected, from a business perspective, and that the application continues to do so as it grows in functionality. These two tasks are essential to the value and quality of a software application. But they are often carried out poorly, leading to breakdowns in each step along the way from business need to a running application." \[via [Clarke Ching's blog](http://www.clarkeching.com/2005/04/gosh_i_love_fre.html)\] (via [Darrell](http://www.codebetter.com/blogs/darrell.norton/archive/2005/04/07/61501.aspx)) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 13, 2005 ### [XStream.NET - Serialize almost anything easily?](https://osherove.com/blog/2005/6/13/xstreamnet-serialize-almost-anything-easily.html) - Apr 9, 2005 ### [Enterprise Library - Configuration AB Memory Leak Patch](https://osherove.com/blog/2005/4/9/enterprise-library-configuration-ab-memory-leak-patch.html) - Apr 8, 2005 ### [TimedLock class: helping find and avoid deadlocks in your multithreaded code](https://osherove.com/blog/2005/4/8/timedlock-class-helping-find-and-avoid-deadlocks-in-your-mul.html) - Apr 8, 2005 ### [Defensive event publishing, a different approach](https://osherove.com/blog/2005/4/8/defensive-event-publishing-a-different-approach.html) --- title: "TimedLock class: helping find and avoid deadlocks in your multithreaded code" url: "https://osherove.com/blog/2005/4/8/timedlock-class-helping-find-and-avoid-deadlocks-in-your-mul.md" canonical: "https://osherove.com/blog/2005/4/8/timedlock-class-helping-find-and-avoid-deadlocks-in-your-mul.html" published: "2005-04-08T10:20:00" updated: "2005-04-08T10:20:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Another gem I found through Eric's blog is the TimedLock class. It helps in locking and detecting the offending code in multi threading deadlock issues (at least makes it not as painful). Originally posted by IanG (and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TimedLock class: helping find and avoid deadlocks in your multithreaded code By Roy Osherove April 8, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 8, 2005; technical details may be outdated. Another gem I found through [Eric's blog](http://www.randomtree.org/eric/techblog/archives/2004/10/multithreading_is_hard.html) is the TimedLock class. It helps in locking and detecting the offending code in multi threading deadlock issues (at least makes it not as painful). [Originally posted by IanG](http://www.interact-sw.co.uk/iangblog/2004/03/23/locking) (and then [republished](http://www.interact-sw.co.uk/iangblog/2004/04/26/yetmoretimedlocking)), It [was reintroduced and enhanced by Phill Haack](http://haacked.com/archive/2004/10/13/1341.aspx) (which looks to be the version you should be using to get a wonderful thing like a stack trace for a deadlocked thread...). So - here's the recipe you should be following.. I think. 1.You should read the "[why" on this class here](http://www.interact-sw.co.uk/iangblog/2004/03/23/locking) 2\. Then use [the one found here](http://haacked.com/archive/2004/10/13/1341.aspx)  3\. But it's important that you fix the small bug in the class [as is prescribed here](http://www.randomtree.org/eric/techblog/archives/2004/10/multithreading_is_hard.html)! :). "_The `TimedLock.Lock` method can be called to lock an object. It returns an object that implements `IDisposable`. (As it happens, this is an instance of the `TimedLock` class, but it doesn't really matter what it is - a private nested class could also have been used.) Now we can write code like this:_ ``` using (TimedLock.Lock(obj)) { } ``` _This is a very similar usage model to using the `lock` keyword - we rely on a compiler-generated `finally` block to call `Monitor.Exit`. It's just a bit less direct - the generated block calls `Dispose` on the `TimedLock`, which in turn calls `Monitor.Exit`. But now, if the monitor cannot be acquired (e.g., because of a deadlock) the code will throw an exception after ten seconds instead of blocking for ever. We get pretty close to the succinctness of the `lock` keyword, but we get to use `Monitor.TryEnter`."_ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 9, 2005 ### [Enterprise Library - Configuration AB Memory Leak Patch](https://osherove.com/blog/2005/4/9/enterprise-library-configuration-ab-memory-leak-patch.html) - Apr 8, 2005 ### [\[Free eBook\]FIT for Developing Software: Framework for Integrated Tests](https://osherove.com/blog/2005/4/8/free-ebookfit-for-developing-software-framework-for-integrat.html) - Apr 8, 2005 ### [Defensive event publishing, a different approach](https://osherove.com/blog/2005/4/8/defensive-event-publishing-a-different-approach.html) - Apr 6, 2005 ### [Solving Binary serialization versioning conflicts - The HashTable problem](https://osherove.com/blog/2005/4/6/solving-binary-serialization-versioning-conflicts-the-hashta.html) --- title: "Defensive event publishing, a different approach" url: "https://osherove.com/blog/2005/4/8/defensive-event-publishing-a-different-approach.md" canonical: "https://osherove.com/blog/2005/4/8/defensive-event-publishing-a-different-approach.html" published: "2005-04-08T09:59:00" updated: "2005-04-08T09:59:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Eric has posted a nice example of invoking \"safe events\" without using the threadpool , as was mentioned in my own article here. You should definitely go read his post and see his code, since it's different way of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Defensive event publishing, a different approach By Roy Osherove April 8, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 8, 2005; technical details may be outdated. [Eric](http://www.randomtree.org/eric/techblog/) has [posted a nice example of invoking "safe events" without using the threadpool](http://www.randomtree.org/eric/techblog/archives/2005/04/defensive_event_publishing_for_remoting.html), as was mentioned in my own article here. You should definitely go read his post and see his code, since it's different way of looking at things, and it's always good to see other perspectives. Personally, I find it a bit more cumbersome, but then again, it lets you have a little more control on your events, and is more fit for situations which are not pure "fire and forget". "_Several months ago, Roy Osherove posted a discussion of_ [_Defensive Event Publishing in .Net_](http://weblogs.asp.net/rosherove/articles/DefensiveEventPublishing.aspx) _that discussed various problems with the "normal" methods of event publishing and raising in .Net. The naive programmer merely calls MyEvent(sender, eventArgs), never suspecting the minefield into which he or she is blithely strolling. Roy's post suggests several progressively more cautious methods of raising events to protect oneself against "bad" clients. At the time I commented that further improvements could be made, specifically to both avoid using Threadpool threads and to detect which callers are bad. I thought I'd finally get around to explaining what I meant and actually providing a solution I've used in the past."_ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 8, 2005 ### [\[Free eBook\]FIT for Developing Software: Framework for Integrated Tests](https://osherove.com/blog/2005/4/8/free-ebookfit-for-developing-software-framework-for-integrat.html) - Apr 8, 2005 ### [TimedLock class: helping find and avoid deadlocks in your multithreaded code](https://osherove.com/blog/2005/4/8/timedlock-class-helping-find-and-avoid-deadlocks-in-your-mul.html) - Apr 6, 2005 ### [Solving Binary serialization versioning conflicts - The HashTable problem](https://osherove.com/blog/2005/4/6/solving-binary-serialization-versioning-conflicts-the-hashta.html) - Mar 11, 2005 ### [CLR Performance Q&A, and how it relates to unit testing and mock objects](https://osherove.com/blog/2005/3/11/clr-performance-qampa-and-how-it-relates-to-unit-testing-and.html) --- title: "Solving Binary serialization versioning conflicts - The HashTable problem" url: "https://osherove.com/blog/2005/4/6/solving-binary-serialization-versioning-conflicts-the-hashta.md" canonical: "https://osherove.com/blog/2005/4/6/solving-binary-serialization-versioning-conflicts-the-hashta.html" published: "2005-04-06T19:44:00" updated: "2005-04-06T19:44:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "A while ago I posted about a solution to Binary Serialization version conflicts , via Jonathan Einav. A comment was posted on that blog post regarding a problem to which Jonathan is replying through me via email, and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Solving Binary serialization versioning conflicts - The HashTable problem By Roy Osherove April 6, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 6, 2005; technical details may be outdated. A while ago I posted about [a solution to Binary Serialization version conflicts](https://weblogs.asp.net/rosherove/archive/2005/03/03/384267.aspx), via Jonathan Einav. A comment was posted on that blog post regarding a problem to which Jonathan is replying through me via email, and for which you can download the latest version of the fixed class: Download the file here: [files.osherove.com/downloads/VersionSupportingBinaryFormatter.zip](http://files.osherove.com/downloads/VersionSupportingBinaryFormatter.zip) The problem exists when trying to serialize a HashTable, and Jonathan provides a fix here. "Roy,  Attached is the VersionSupportingBinaryFormatter, with a bug fix of a problem that was raised in your blog regarding deserialization of hashtables with the VersionSupportingBinarySerializer. The problem was that the hashtable class implements the OnDeserialization method (defined in IDeserializationCallback), **if** **(**buckets!=null**)** **{**        return; //Somebody had a dependency on this hashtable and fixed us up before the ObjectManager got to it. **}** **if** **(**m\_siInfo==null**)** **{ **        throw new SerializationException**(**Environment.GetResourceString**(**"Serialization\_InvalidOnDeser"**))**; **} ** the first lines of code in the hashtable.cs OnDeserialize are:  The m\_siInfo is being assigned when the SerializationInfo (ISerializable) constructor is called. When I register the surrogate I run over that call, which made me think it is stupid to do it any how, due to the fact that custom serialization behaviors will not be reproduce when my reflection surrogate is called, so I do not register any more the VersionSupportingSerializationSurrogate for classes that implements the ISerializable interface. Cheers, ****Jonathan                  Einav**** Software  Project  Manager" ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 8, 2005 ### [TimedLock class: helping find and avoid deadlocks in your multithreaded code](https://osherove.com/blog/2005/4/8/timedlock-class-helping-find-and-avoid-deadlocks-in-your-mul.html) - Apr 8, 2005 ### [Defensive event publishing, a different approach](https://osherove.com/blog/2005/4/8/defensive-event-publishing-a-different-approach.html) - Mar 11, 2005 ### [CLR Performance Q&A, and how it relates to unit testing and mock objects](https://osherove.com/blog/2005/3/11/clr-performance-qampa-and-how-it-relates-to-unit-testing-and.html) - Feb 1, 2005 ### [Launcher: Clean auto-deployment and auto-updating code from Franklins.Net](https://osherove.com/blog/2005/2/1/launcher-clean-auto-deployment-and-auto-updating-code-from-f.html) --- title: "What Algorithms should you test and how?" url: "https://osherove.com/blog/2005/4/5/what-algorithms-should-you-test-and-how.md" canonical: "https://osherove.com/blog/2005/4/5/what-algorithms-should-you-test-and-how.html" published: "2005-04-05T10:14:00" updated: "2005-04-05T10:14:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "[ Update : I've updated the description here to make it clearer. Some of the comments indicate that I did not explain myself as well as I should have. Perhaps this is better.] Math Algorithms are problematic. The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What Algorithms should you test and how? By Roy Osherove April 5, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published April 5, 2005; technical details may be outdated. _\[**Update**: I've updated the description here to make it clearer. Some of the comments indicate that I did not explain myself as well as I should have. Perhaps this is better.\]_ Math Algorithms are problematic. The biggest problem with testing them is that you either end up reproducing the calculation in your test, or you test inputs and outputs blindly. If at all viable, the latter is the more reasonable choice, for several reasons outlined below. Assuming this method: **public int Add(a,b)** **{** **return a+b;** **}** You might be inclined to write such a test: **\[Test\]** **public void Add()** **{** **int result = Add(1,2);** **Assert.AreEqual(1+2, result);** **}** As you can see there is some duplication here: The same calculation occurs inside the production and inside the test code. Seeing this kind of duplication brings up a number of red flags:  - how do you know if your calculation does not have a bug? \- If the only thing in the method is the calculation, and you're repeating it in your tests, are you actually testing anything? The only reason to test such a method was if you had an IF or w SWITCH somewhere. Otherwise, there's no logic to test. Unit tests are more about logic than anything. If there's no logic. perhaps they shouldn't be there. If there's no logic but you're still testing something, perhaps what you're really doing is "integration testing". Such a test might be to call the math function under heavy load, or multiple threads and so on. I'll talk more about what I think makes for an integration test in a later post. of course, this might seem better - **\[Test\]** **public void Add()** **{** **int result = Add(1,2);** **Assert.AreEqual(3, result);** **}**  our result is known and so we can at least "smoke test" the algorithm. As some of you have mentioned in the comments - there's still the pesky matter of Edge cases and unvalidated input. There's always room for edge case testing, I agree. In fact, you'd be a fool not to ask yourself what happens when you get two int.MaxValue s. Since this entry does not deal with edge cases, I'd just declare that yes - you would most definitely test edge cases.  That's because - edge cases have a particular requirement - they need business logic, or else they woudn't be edge cases. If I wanted the method to just blow up on int.MaxValue, I'd just let it do that, and let the exception bubble up. Since there seems to be a staggering requirement for handling such an edge case - there's obviously some sort of non-math logic in the works here that needs to be written. Here's a short example: **\[Test\]** **\[ExpecteException(typeof(CalcException)),"Sum resulted in an overflow and is illegal")\]** **public void Add()** **{**    **Add(int.MaxValue,1);** **}**  Now you're talking. There HAS to be some logic inside the method to make this work - that means it's no longer just a math algorithm - it's a math algorithm hidden underneath a business rule, for which you would exactly do these kinds of tests. The solution might look like: **public int Add(int a, int b)** **{** **if(a>= in.MaxValue)** **{**    **throw new CalcException("Sum resulted in an overflow and is illegal");** **}** **return a+b;** **}** Now you'd have to write a new test to send b as a max value, but you get the idea. It's no longer a math function in purity. You no longer test inputs and outputs - you test logic. In fact - you could refactor it to show this distiction more clearly: **public int Add(int a, int b)** **{** **if(a>= in.MaxValue)** **{**    **throw new CalcException("Sum resulted in an overflow and is illegal");** **}** **return sumNumbers(a,b);** **}** ** **private int sumNumbers(int a,int b)** **{** **return a+b;** **}** ** _For pure math functions:_ The only other option is to call such algorithms with a known set of inputs and outputs. That's usually more of a data-driven test kind of thing where you might have thousands of rows of input and expected output with many edge cases for the algorithm to go through. That means you're assuming the expected outputs are pre-known and can be calculated beforehand (using some external tool perhaps such as Mat Lab). If they are pre-known, what exactly are you testing? You are testing for regression if at any point in time you would want to either refactor or optimize your algorithm code, and you still want to know that all outputs stay the same. To my mind, such math problems are usually not very fit for TDD and incremental creation ("make this pass as simply as possible" mentality) because the algorithm and execution are pre-known. However, the second you think about performing an 'IF' clause, you'll need a unit test. This brings up an interesting question such as "how would you test sorting algorithms?". Surely there's lots of IFs and Switches there. But would you test for an outcome or for logic trees inside the method? I'd go with testing expected outcome (a sorted something) by invoking many many tests with various inputs and expected outcomes. It's not math, and can be done with TDD. You might even find your algorithm is simpler than you thought. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 8, 2005 ### [CFNUnitBridge: Test Driven Development for the .NET compact framework(almost there)](https://osherove.com/blog/2005/4/8/cfnunitbridge-test-driven-development-for-the-net-compact-fr.html) - Apr 8, 2005 ### [\[Free eBook\]FIT for Developing Software: Framework for Integrated Tests](https://osherove.com/blog/2005/4/8/free-ebookfit-for-developing-software-framework-for-integrat.html) - Apr 5, 2005 ### [Tests should reflect required reality](https://osherove.com/blog/2005/4/5/tests-should-reflect-required-reality.html) - Apr 3, 2005 ### [Scrum at Microsoft](https://osherove.com/blog/2005/4/3/scrum-at-microsoft.html) --- title: "Tests should reflect required reality" url: "https://osherove.com/blog/2005/4/5/tests-should-reflect-required-reality.md" canonical: "https://osherove.com/blog/2005/4/5/tests-should-reflect-required-reality.html" published: "2005-04-05T10:01:00" updated: "2005-04-05T10:01:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "One of the most common mistakes of newcomers into TDD is that they often mistake the “Fail first” requirement with “Fail by testing something illogical”. For example, given a method requirement with this spec: Int…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tests should reflect required reality By Roy Osherove April 5, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published April 5, 2005; technical details may be outdated. One of the most common mistakes of newcomers into TDD is that they often mistake the “Fail first” requirement with “Fail by testing something illogical”. For example, given a method requirement with this spec: **Int Sum(int a, int b)** : _returns the sum of the two numbers_ They would write a failing test like this **\[Test\]** **Public void Sum\_AddsOneAndTwo()** **{**      **int result = Sum(1,2);**      **Assert.AreEqual(4, result, “bad sum”);** **}** While this might feel like a good way to make a failing test, it totally misses the idea of why we actually want to write a failing test. A failing test proves that there is something wrong _with the production code_. That is, the test should pass _as is_ when the production code is fully done. As things stand with the test above – it is not logical and will fail even if the production code is complete. Making it pass requires changing the test itself – instead of making us change or add something to the production code. In short – this test does not reflect the end-reality like we would like it to be when the production code is complete, thus is not a good test. _On a more philosophical note_ A good test in TDD will make us _change the reality of the code_ to make it work, instead of reflecting the reality right now or reflecting a wrong reality (where 1+1 returns 0 just to fail the test). We want the tests to reflect the reality _like it should have been/we want it to be_ if the current requirement would have worked, then we make reality adjust to our needs. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 8, 2005 ### [\[Free eBook\]FIT for Developing Software: Framework for Integrated Tests](https://osherove.com/blog/2005/4/8/free-ebookfit-for-developing-software-framework-for-integrat.html) - Apr 5, 2005 ### [What Algorithms should you test and how?](https://osherove.com/blog/2005/4/5/what-algorithms-should-you-test-and-how.html) - Apr 3, 2005 ### [Scrum at Microsoft](https://osherove.com/blog/2005/4/3/scrum-at-microsoft.html) - Apr 3, 2005 ### [How Do You Explain Pair Programming?](https://osherove.com/blog/2005/4/3/how-do-you-explain-pair-programming.html) --- title: "Scrum at Microsoft" url: "https://osherove.com/blog/2005/4/3/scrum-at-microsoft.md" canonical: "https://osherove.com/blog/2005/4/3/scrum-at-microsoft.html" published: "2005-04-03T23:38:00" updated: "2005-04-03T23:38:00" tags: ["Agile Related"] author: "Roy Osherove" description: "The MSBuild team is not the only one doing Agile development. Several other teams are using Scrum . At least according to Rob Caron : \" Something interesting happened this last week. Ken Schwaber visited Microsoft and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scrum at Microsoft By Roy Osherove April 3, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published April 3, 2005; technical details may be outdated. The [MSBuild team is not the only one](http://weblogs.asp.net/rosherove/archive/2005/02/27/381040.aspx) doing Agile development. Several other teams are using [Scrum](http://www.controlchaos.com/). At least [according to Rob Caron](http://blogs.msdn.com/robcaron/archive/2005/04/01/404782.aspx): "_Something interesting happened this last week. Ken Schwaber visited Microsoft and several Microsoft groups presented their experiences with Scrum. This event sparked a large interest in Scrum from more teams. Our own team has already been pinged several times this week from folks in different groups asking about where to get more information on Scrum, how we do our reports, and even if they can sit in on a daily Scrum."_ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 5, 2005 ### [What Algorithms should you test and how?](https://osherove.com/blog/2005/4/5/what-algorithms-should-you-test-and-how.html) - Apr 5, 2005 ### [Tests should reflect required reality](https://osherove.com/blog/2005/4/5/tests-should-reflect-required-reality.html) - Apr 3, 2005 ### [How Do You Explain Pair Programming?](https://osherove.com/blog/2005/4/3/how-do-you-explain-pair-programming.html) - Apr 3, 2005 ### [Migrating Nunit 1.0 to 2.2.2 - step by step walkthrough](https://osherove.com/blog/2005/4/3/migrating-nunit-10-to-222-step-by-step-walkthrough.html) --- title: "How Do You Explain Pair Programming?" url: "https://osherove.com/blog/2005/4/3/how-do-you-explain-pair-programming.md" canonical: "https://osherove.com/blog/2005/4/3/how-do-you-explain-pair-programming.html" published: "2005-04-03T23:08:00" updated: "2005-04-03T23:08:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Here's something to put on my slides for the next executive briefing I'll talk at. It's about the benefits of pair programming and it's only a part of a whole list of benefits found when doing Pair Programming . It was…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How Do You Explain Pair Programming? By Roy Osherove April 3, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published April 3, 2005; technical details may be outdated. Here's something to put on my slides for the next executive briefing I'll talk at. It's about the benefits of pair programming and it's only a part [of a whole list of benefits found when doing Pair Programming](http://www.c2.com/cgi/wiki?PairProgrammingBenefits). It was mentioned as a comment to [a question by Johanna Rothman on her blog](http://www.jrothman.com/weblog/archive/2005_03_01_mpdarchive.html#111186986596472768), looking for ways to explain Pair Programming to management. "1. Projects with high quality (attention to quality) have lower schedule pressure: - Products with the lowest defect counts have the shortest schedules (Jones 1991, Applied Software Measurement). - Poor quality is the most common reasons for schedule overruns (Jones 1994, 4000 projects, Assessment and Control of Software Risks). 2\. Higher quality comes through culture/values/process, inspection, testing, early feedback, refactoring, and so forth. 3. Regarding inspection and quality and schedule, inspection is a powerful tool: - Inspections have been found to produce net schedule savings of 10 to 30 percent (Gilb and Graham 1993, Software Inspection). - Each hour spent on inspections avoided an average of 33 hours of maintenance (Russell 1991, IEEE Software). - Inspections were up to 20 times more efficient than testing (Russell 1991, IEEE Software). 4\. [PairProgramming](http://www.c2.com/cgi/wiki?PairProgramming), in part, is a way to do effective, real-time, responsive inspection, which supports higher quality, which supports reduced schedule pressure. _\--_ [_CraigLarman_](http://www.c2.com/cgi/wiki?CraigLarman) _"_ Personally, I make all the people who take my classes do the exercises in Pairs. First of all, they learn much faster than they would solo. Second, it makes it easy for me to spend more time with each pair as they learn together, which means more quality time during exercises (which make up about 70% of course time when I teach Test Driven Development). Pairs work better. When they can work together, that is. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 5, 2005 ### [Tests should reflect required reality](https://osherove.com/blog/2005/4/5/tests-should-reflect-required-reality.html) - Apr 3, 2005 ### [Scrum at Microsoft](https://osherove.com/blog/2005/4/3/scrum-at-microsoft.html) - Apr 3, 2005 ### [Migrating Nunit 1.0 to 2.2.2 - step by step walkthrough](https://osherove.com/blog/2005/4/3/migrating-nunit-10-to-222-step-by-step-walkthrough.html) - Apr 3, 2005 ### [When should you remove or change a unit test?](https://osherove.com/blog/2005/4/3/when-should-you-remove-or-change-a-unit-test.html) --- title: "VB user group meeting this week: Diving into ADO.NET 2.0 and VS 2005 Data features" url: "https://osherove.com/blog/2005/4/3/vb-user-group-meeting-this-week-diving-into-adonet-20-and-vs.md" canonical: "https://osherove.com/blog/2005/4/3/vb-user-group-meeting-this-week-diving-into-adonet-20-and-vs.html" published: "2005-04-03T22:28:00" updated: "2005-04-03T22:28:00" tags: ["Community"] author: "Roy Osherove" description: "Here's the email I got from Jackie regarding thie month's (week's!) VB user group meeting: \"This month we will take a look at the two sides of Data Access in .NET 2.0 and Visual Studio 2005. I'll be giving the 2…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VB user group meeting this week: Diving into ADO.NET 2.0 and VS 2005 Data features By Roy Osherove April 3, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published April 3, 2005; technical details may be outdated. Here's the email I got from Jackie regarding thie month's (week's!) VB user group meeting: "This month we will take a look at the two sides of Data Access in .NET 2.0 and Visual Studio 2005.  I'll be giving the 2 presentations – The first presentation,  “ADO.NET 2.0 – The Highlights", will look at the changes and enhancements to the ADO.NET objects in the .NET Framework.   In the second presentation,  “Data Access Enhancements & Additions in Visual Studio 2005", I will spend a lot of time discussing and demoing the new objects and tools available in Visual Studio for building data-intensive applications.  This presentation will cover Data Sources, Typed DataSets, and (the new) TableAdapters, as well as Winforms Data-Binding for both DataSets and Custom Objects. As always, we'll have our special "Hatzilu" session at our meeting. So please come prepared to discuss your most frustrating problems (or at least some of them!) and to share some of your own techniques and solutions that you have found useful in your applications. Please remember that it is important for me to know as accurately as possible how many people will be attending each meeting, so that I can arrange for the right amount of food and the proper setup of the chairs.  Please confirm your attendance. See you there !! The April meeting of the Israel Visual Basic User Group [http://www.renaissance.co.il/ivbug](http://www.renaissance.co.il/ivbug "http"): April 6, 2005 **Location****:** **Microsoft Israel** **2 Hapnina St****, Ra'anana** **(09) 7625-100** **Floor 0 , Dekel Room** **It is the new building across from Amdocs.** **After the first traffic circle, there is an area for parking on the right.** 17:30 - 18:00   Assembly 18:00 - 18:10   Introduction 18:10 - 19:30    **“****ADO.NET 2.0 – The Highlights"** Jackie Goldstein, Renaissance Computer Systems 19:30 - 19:45    Break 19:45 – 20:00   "Hatzilu !"                         Open session, with questions and answers/ideas from everyone 20:00 – 21:00   **“****Data Access Enhancements & Additions in Visual Studio 2005****"**                        Jackie Goldstein, Renaissance Computer Systems  Please be sure to email me to confirm your participation or for more information. **jackie AT renaissance.co.il" ** ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Apr 10, 2005 ### [Agile Israel news and updates](https://osherove.com/blog/2005/4/10/agile-israel-news-and-updates.html) - Apr 10, 2005 ### [LinMagazine: Hebrew blogs about technology and development](https://osherove.com/blog/2005/4/10/linmagazine-hebrew-blogs-about-technology-and-development.html) - Mar 12, 2005 ### [Catch me at one of these upcoming user group events this month](https://osherove.com/blog/2005/3/12/catch-me-at-one-of-these-upcoming-user-group-events-this-mon.html) - Mar 1, 2005 ### [Agile Israel next meeting infromation and other important news](https://osherove.com/blog/2005/3/1/agile-israel-next-meeting-infromation-and-other-important-ne.html) --- title: "Weird fonts on this blog?" url: "https://osherove.com/blog/2005/4/3/weird-fonts-on-this-blog.md" canonical: "https://osherove.com/blog/2005/4/3/weird-fonts-on-this-blog.html" published: "2005-04-03T20:22:00" updated: "2005-04-03T20:22:00" tags: ["Off Topic"] author: "Roy Osherove" description: "For some reason, my fonts look weird. Perhaps it has to do with me posting from PostXing?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Weird fonts on this blog? By Roy Osherove April 3, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 3, 2005; technical details may be outdated. For some reason, my fonts look weird. Perhaps it has to do with me posting from PostXing? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 13, 2005 ### [Scary future ahead?](https://osherove.com/blog/2005/4/13/scary-future-ahead.html) - Apr 10, 2005 ### [An old joke with a new ending](https://osherove.com/blog/2005/4/10/an-old-joke-with-a-new-ending.html) - Mar 26, 2005 ### [Software Factories And Regular Expressions](https://osherove.com/blog/2005/3/26/software-factories-and-regular-expressions.html) - Mar 26, 2005 ### [Desktops with a twist](https://osherove.com/blog/2005/3/26/desktops-with-a-twist.html) --- title: "Migrating Nunit 1.0 to 2.2.2 - step by step walkthrough" url: "https://osherove.com/blog/2005/4/3/migrating-nunit-10-to-222-step-by-step-walkthrough.md" canonical: "https://osherove.com/blog/2005/4/3/migrating-nunit-10-to-222-step-by-step-walkthrough.html" published: "2005-04-03T20:10:00" updated: "2005-04-03T20:10:00" tags: ["Agile Related"] author: "Roy Osherove" description: "I recently recieved this in the email from a fellow named Eli Ofek which I got to work with here and there Eli is a great guy and passionate abou this work so he felt he had to share a good experience and walkthrough on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Migrating Nunit 1.0 to 2.2.2 - step by step walkthrough By Roy Osherove April 3, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published April 3, 2005; technical details may be outdated. I recently recieved this in the email from a fellow named Eli Ofek which I got to work with here and there Eli is a great guy and passionate abou this work so he felt he had to share a good experience and walkthrough on his blog. The quote explains everything. "Hi Roy, A few months ago I consulted you regarding migration from Nunit 1.0 to 2.2.2. Last week we finally took the step and made it happen. Me & Galia decided to document the process & publish it in case any one else needs it. I published it in my blog: [http://www.ofeks.info/Blog/PermaLink,guid,a2460cd9-0df1-4c4e-bd5a-da5bf539453a.aspx](http://www.ofeks.info/Blog/PermaLink,guid,a2460cd9-0df1-4c4e-bd5a-da5bf539453a.aspx "http") If you know other people who still use 1.0, you might want to point them to the page, it might be helpful. I have some more ideas that will be published there too later on if time will permit ... Regards, ¯\`'·.¸(¯\`'·.¸ ---=== Eli Ofek ===--- ¸.·'´¯)¸.·'´¯ " **Coolness. Thanks Eli :)** ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 3, 2005 ### [Scrum at Microsoft](https://osherove.com/blog/2005/4/3/scrum-at-microsoft.html) - Apr 3, 2005 ### [How Do You Explain Pair Programming?](https://osherove.com/blog/2005/4/3/how-do-you-explain-pair-programming.html) - Apr 3, 2005 ### [When should you remove or change a unit test?](https://osherove.com/blog/2005/4/3/when-should-you-remove-or-change-a-unit-test.html) - Apr 3, 2005 ### [Test Coverage and testing angles](https://osherove.com/blog/2005/4/3/test-coverage-and-testing-angles.html) --- title: "When should you remove or change a unit test?" url: "https://osherove.com/blog/2005/4/3/when-should-you-remove-or-change-a-unit-test.md" canonical: "https://osherove.com/blog/2005/4/3/when-should-you-remove-or-change-a-unit-test.html" published: "2005-04-03T09:55:00" updated: "2005-04-03T09:55:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "As a rule, a passing test should never be removed. That's because passing tests serve as the regression tests for our maintenance work. They are there to make sure that when we change code we don t break anything else…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # When should you remove or change a unit test? By Roy Osherove April 3, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published April 3, 2005; technical details may be outdated. As a rule, a passing test should **never** be removed. That's because passing tests serve as the regression tests for our maintenance work. They are there to make sure that when we change code we don t break anything else that s already working. Anywhere. That's also why you don't want to **change** a passing test unless the change is just to make it more readable. But sometimes we might get some failing tests even though the change was absolutely reasonable. That usually means we ve encountered conflicting requirements. How does that happen? Here s how it might sound: A year ago company X needed a feature of their calculator to be able to parse any amount of numbers, as long as they are positive. A number of tests were written to satisfy this requirement. Here s one: \[ExpectedException(typeof(Exception), Negatives not allowed )\] Void Sum\_Negative1stNumberThrowsExcpeiton() {      Sum( -1,1,2 ); } Today, the VP decided that a new feature is required to have negative numbers allowed in the calculator. A developer not knowing about the previous requirement builds a test case such as this and makes it pass: Void Sum\_Negative1stNumberCalculatesCorrectly() {      Int sumResult = Sum( -1,1,2 );      Assert.AreEqual(2,sumResult); } Alas, the earlier test fails. It broke due to a requirement change. Now s the time for that developer to realize that an older requirement has changed. That test is indeed no longer valid and served no real purpose. It was written for a requirement that is no longer valid. There are two possible routed to go here: \-         Delete the failing test after verifying that it is longer valid \-         Change the old test o       Either to test the new requirement o       **Or to test the older requirement under new settings** The highlighted line above indicates that this is an important case. Sometimes a test is still valid even if it uses non-valid ways to accomplish its task. A good example would be to have a Person class with a constructor that takes one parameter. A test that creates this class to test some functionality of it is using this constructor. Years later another requirement comes along and another parameter is added to the constructor of the class. Suddenly the old test breaks, even though it has nothing to do with the constructor other than it needs to create the class in order to test its functionality. Removing the test then becomes a bad thing because you lose testing of some important functionality. In that case you might  want to change the creation of the class in your old test so that you can keep using it for the purpose it was built for. Assuming you have 200 failing tests just because they use that old constructor you might be in for a problem maintaining your tests. That s why you should always remove duplication in your tests just as you would in production code. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 3, 2005 ### [How Do You Explain Pair Programming?](https://osherove.com/blog/2005/4/3/how-do-you-explain-pair-programming.html) - Apr 3, 2005 ### [Migrating Nunit 1.0 to 2.2.2 - step by step walkthrough](https://osherove.com/blog/2005/4/3/migrating-nunit-10-to-222-step-by-step-walkthrough.html) - Apr 3, 2005 ### [Test Coverage and testing angles](https://osherove.com/blog/2005/4/3/test-coverage-and-testing-angles.html) - Apr 3, 2005 ### [A Unit test should test only one thing](https://osherove.com/blog/2005/4/3/a-unit-test-should-test-only-one-thing.html) --- title: "Test Coverage and testing angles" url: "https://osherove.com/blog/2005/4/3/test-coverage-and-testing-angles.md" canonical: "https://osherove.com/blog/2005/4/3/test-coverage-and-testing-angles.html" published: "2005-04-03T09:54:00" updated: "2005-04-03T09:54:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "How do you know if you have good coverage on your new code? Try and remove a line or a constraint check . If all tests still pass – you don't have enough code coverage and you probably need to add another unit test. The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Coverage and testing angles By Roy Osherove April 3, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published April 3, 2005; technical details may be outdated. How do you know if you have good coverage on your new code? **Try and remove a line or a constraint check**. If all tests still pass – you don't have enough code coverage and you probably need to add another unit test. The best way to make sure you are adding the correct test is to not let yourself uncomment that line or check until you can produce a test that will fail until you uncomment it. It may be hard but if you can’t think of a way this would fail, you probably don’t have a good excuse for writing that line of code, do you? Why is this a problem? Because you never know when the next developer will show up and try to play with your code, maybe try to optimize it, or wrongly delete some precious line of your code.  If you don’t have a test that will fail, they will never know they made a mistake. You might also want to try and replace various usage of parameters that are passed in to your method with consts. For example given this method, ``` Public int Sum(int x, int y, bool allowNegatives) { If(!allowNegatives) { If(x<0||y<0) Throw new Exception(); } Return x+y; } ``` here are some variations of testing for test coverage: ``` If(!true) { If(x<0||y<0) Throw new Exception(); } Or If(!allowNegatives) { If(false||y<0) Throw new Exception(); } Or If(!allowNegatives) { If(x<0||false) Throw new Exception(); } ``` If all the tests still pass, you’re missing a test. Another red flag: If you have only one test that checks for various equality to values. Seeing this: ``` Assert.AreEqual(3,retval); ``` Happen only once in relation to some method usually means you can safely return 3 as a value and all the tests for this method will still pass. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 3, 2005 ### [Migrating Nunit 1.0 to 2.2.2 - step by step walkthrough](https://osherove.com/blog/2005/4/3/migrating-nunit-10-to-222-step-by-step-walkthrough.html) - Apr 3, 2005 ### [When should you remove or change a unit test?](https://osherove.com/blog/2005/4/3/when-should-you-remove-or-change-a-unit-test.html) - Apr 3, 2005 ### [A Unit test should test only one thing](https://osherove.com/blog/2005/4/3/a-unit-test-should-test-only-one-thing.html) - Apr 3, 2005 ### [Naming standards for unit tests](https://osherove.com/blog/2005/4/3/naming-standards-for-unit-tests.html) --- title: "A Unit test should test only one thing" url: "https://osherove.com/blog/2005/4/3/a-unit-test-should-test-only-one-thing.md" canonical: "https://osherove.com/blog/2005/4/3/a-unit-test-should-test-only-one-thing.html" published: "2005-04-03T09:51:00" updated: "2005-04-03T09:51:00" tags: ["Agile Related", "Testing Guidelines"] author: "Roy Osherove" description: "This guideline is much more aggressive and recommended if you work in a test driven manner rather than write the tests after the code has been written. The main goal here is better code coverage or test coverage. Here s…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Unit test should test only one thing By Roy Osherove April 3, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines) **Historical article** · Originally published April 3, 2005; technical details may be outdated. This guideline is much more aggressive and recommended if you work in a test driven manner rather than write the tests after the code has been written. The main goal here is better code coverage or test coverage. Here s a canonical example: Given a method: ``` void Sum(int x, int y, int z) ``` Which returns the sum of the three numbers, you are given the requirement that if any number is bigger than 1000, it is not calculated. Assuming you are going to perform this in a test driven manner you d happily go an write a test such as this: ``` void Sum_NumberBiggerThan1000IsNotSummed() { Int sumResult = Sum(1001,1002,1003); Assert.AreEqual(0,sumResult); } ``` One has to consider: what is it exactly that I am testing here?  The test sends as input all three parameters as "bad". That means that it will pass even if a check on just one of these will be performed on the production code s Sum method. In effect, code coverage of this test is possibly only a _third_ of what it _appears_ to be testing. Writing such a test and making it pass might lead us to the conclusion that perhaps no more tests are necessary. But is that really the case? There are a number of options that arise as to how you would make this test pass: **Option one:** ``` int Sum(int x, int y, int z) { If(x>1000) x=0; If(y>1000) y=0; If(z>1000) z=0; Return x+y+z; } ``` This is _not_ the simplest thing that could work, as is prescribed by TDD advocates. The reason being that you can essentially remove any two of the IFs, be left with just one of them, and the test will still pass.  However, when you are faced with such a test that sends three bad values, you might be inclined to solve it this way even though it is wrong, because the test _appears_ to be testing more than it really is. This function makes the test pass just as well: **Option two:** ``` int Sum(int x, int y, int z) { If(z>1000) z=0; Return x+y+z; } ``` Yet we _know_ that this code is problematic. If this code is not good enough, and all the tests pass, we have a code coverage problem on our hands. We need more tests. A better test might look like this: ``` void Sum_1stParamBiggerThan1000IsNotSummed() { Int sumResult = Sum(1001,1,2); Assert.AreEqual(3,sumResult); } ``` While we still could potentially make this test work not as simply as possible, at least the test is not presenting a false sense of security. It essentially tells us that it only tests one simple thing and that we need to write more tests if we want to be sure al of the required functionality works. ### Multiple asserts in one test How about this test: ``` Void Sum_AnyParamBiggerThan1000IsNotSummed() { Assert.AreEqual(3, Sum(1001,1,2); Assert.AreEqual(3, Sum(1,1001,2); Assert.AreEqual(3, Sum(1,2,1001); } ``` Is this bad? Depends. If I was writing this test _after_  the production code was already written, I might not have a problem with this. But if this test is written _before_ the tested code is written, it might prove less optimal of several reasons: \-         You ll spend a longer a mount of time writing code to make the test pass. The longer you spend without running tests, the less confident you become. \-    Sometimes you get a better  idea of what's wrong with the code if you have multiple failures. When you have multiple asserts in one test, only the first one fails and the rest never get checked - you're losing some more points of view that you might consider important in orer to quickly discover where the problem stems from. \-         You re not focusing on a small problem anymore. You re focusing on larger problems, more generic problems. It s easy to get stuck on large problems. It s easier to keep going while continually solving small problems one after the other. \-         The more time you spend not running the tests, the more code you write that has not been tested, and which will probably depend on more code that has not been tested. You re more likely to present unforeseen bugs. \-         The previous paragraph should not come as a surprise because the more code you write between each unit tests, the smaller the likelihood that your test actually _covers_ that code. That s because: \-         Trying to make a test with three ASSERTs pass, is just like trying to make three separate test cases pass in a single bounce: you ll have to write more code that handles more cases and you ll probably end up writing it more generic that you would have if you were just trying to fix one test case at a time. You won t really know if your tests cover all the generic code you ve just written as you would have known by making the tests pass one by one, in the simplest way possible. \-         Also, one you have multiple ASSERTs in a test case, it s very easy and human to keep adding more asserts into the existing test than it would be to add them using new tests. Even if those were totally different asserts in nature, the broken window theory works very well here, and leads to less maintainable and less readable tests. \-         You re working more time without the success feedback. Like it or not, the psychological effect here is important. It leads to a better coding experience and more confidence and happiness at work. So, while it may make it seem like you re working faster, you re essentially increasing the possibility for hidden bugs in your code. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 3, 2005 ### [When should you remove or change a unit test?](https://osherove.com/blog/2005/4/3/when-should-you-remove-or-change-a-unit-test.html) - Apr 3, 2005 ### [Test Coverage and testing angles](https://osherove.com/blog/2005/4/3/test-coverage-and-testing-angles.html) - Apr 3, 2005 ### [Naming standards for unit tests](https://osherove.com/blog/2005/4/3/naming-standards-for-unit-tests.html) - Mar 28, 2005 ### [\[Interview\]Kieran Mockford, MSBuild Program Manager - on MSBuild, TDD, the Microsoft build process and much more](https://osherove.com/blog/2005/3/28/interviewkieran-mockford-msbuild-program-manager-on-msbuild.html) --- title: "Naming standards for unit tests" url: "https://osherove.com/blog/2005/4/3/naming-standards-for-unit-tests.md" canonical: "https://osherove.com/blog/2005/4/3/naming-standards-for-unit-tests.html" published: "2005-04-03T09:46:00" updated: "2005-04-03T09:46:00" tags: ["Agile", "Agile Related", "Testing Guidelines", "Unit Testing"] author: "Roy Osherove" description: "The basic naming of a test comprises of three main parts: [UnitOfWork_StateUnderTest_ExpectedBehavior] A unit of work is a use case in the system that startes with a public method and ends up with one of three types of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Naming standards for unit tests By Roy Osherove April 3, 2005 In [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published April 3, 2005; technical details may be outdated. _The basic naming of a test comprises of three main parts:_  **\[UnitOfWork\_StateUnderTest\_ExpectedBehavior\]** A unit of work is a use case in the system that startes with a public method and ends up with one of three types of results: a return value/exception, a state change to the system which changes its behavior, or a call to a third party (when we use mocks). so a unit of work can be a small as a method, or as large as a class, or even multiple classes. as long is it all runs in memory, and is fully under our control. Examples: Public void Sum\_NegativeNumberAs1stParam\_ExceptionThrown() Public void Sum\_NegativeNumberAs2ndParam\_ExceptionThrown () Public void Sum\_simpleValues\_Calculated () _**Reasons:**_ _**Test name should express a specific requirement**_ Your unit test name should express a specific requirement. This requirement should be somehow derived from either a business requirement or a technical requirement. In any case, that requirement has been broken down into small enough pieces, each of which represents a test case. If your test is not representing a requirement, why are you writing it? Why is that code even there? Also, developers who are on a role are happy to give meaningless or numbered names to their test just so they can continue on with what they are doing. This leads down a narrow slope where quickly no one has the time or energy to fix the names of the tests. Also, most developers don t bother too much with writing _good assert messages_ in their tests. A good assert message (which shows up if the test fails) is jey to understanding what went wrong. Assuming writing good assert messages is one of the key places where most unit test developers fall short, the only thing left to save us then is the name of the test. If both the name of the test and the error messages in it are not expressive enough, the poor maintenance developer (often the same one who developed the tests) is left to wonder what was this joker thinking? looking at a year old code base with unit tests. _**Test name should include the expected input or state and the expected result for that input or state**_ To express the specific requirement clearly you should think about two things you need to express: the input values/current state during which the test takes place, and the expected result from that state. ###### Example: Given this method : **Public int Sum(params int\[\] values)** You have a requirement that numbers larger than 1000 that are passed in should not be considered for calculation (that is a number bigger than 1000 is equal to zero). **What about this name: Sum\_NumberBiggerThan1000** That is only half way there. As a reader of the test I can only assume that some input in your test is bigger than 1000, but I do not understand what the _requirement being tested_ is. **How about this name: Sum\_NumberIsIgnored** Still not good enough. While it does tell me the expected result, it does not tell me under which circumstances it needs to be ignored. I would have to go into the test code and read through it to find out what the expected input is. **How about this name: Sum\_NumberIgnoredIfBiggerThan1000** That s much better. I can tell just by looking at the test name what It means if the test fails. I don t need to look at the code, and I can tell exactly what requirement this test tries to solve. **Test name should be presented as a statement or fact of life that expresses workflows and outputs** Unit tests are just as much about documentation as they are about testing functionality. You should always assume that someone else is going to read your tests in a year, and that they should not have a hard time understanding your intent. Test names which are written as short declarative statements are much more expressive that names which are machine readable that is they only make sense if you have an understanding of a hidden code language to dissect their meaning. People might first complain that the name of the test method appears way too long for them, but in the end it s more about readability. Longer test names do not imply longer or less optimized code, and even if they did, we are not looking to optimize test code performance. If anything, test code should always be optimized for readability. Here s an example of a bad an d good test name Public void SumNegativeNumber2() And here s a better way to express your intent Public void Sum\_ExceptionThrownOnNegativeNumberAs2ndParam () **Test Name should only begin with Test if it is required by the testing framework or if it eases development and maintenance of the unit tests in some way.** Since most tests today reside in a specific class or module that is logically defined as a test container (fixture), there are only a handful of reasons why you would want to prefix you test methods with the word Test : \- Your unit testing framework requires this \- You have coding standards in place and they include this \- You want to make it easier to navigate to the methods using Intellisense or some other search mechanism. **Test name should include name of tested method or class** You usually have at least a number of tests for each method you are testing, and you are usually testing a number of methods in one test fixture (since you usually have a test fixture per class tested). This leads to the requirement that your test should also reflect the name of the method begin tested, not only the requirements from it. For example:    **\[MethodName\_StateUnderTest\_ExpectedBehavior\]** Public void Sum\_NegativeNumberAs1stParam\_ExceptionThrown() Public void Sum\_NegativeNumberAs2ndParam\_ExceptionThrown () Public void Sum\_simpleValues\_Calculated () Public void Parse\_OnEmptyString\_ExceptionThrown() Public void Parse\_SingleToken\_ReturnsEqualToeknValue () **Naming Variables in a test:** Variable names should express the expected input and state It s easy to name variables going into a method with generic names, but with unit tests you have to be twice as careful to name them as what they represent, i.e. BAD\_DATA or EMPTY\_ARRAY or NON\_INITIALIZED\_PERSON You do not need to name them with a CONST casing , but the name does have to represent the intent of the test author. A good way to check if your names are good enough is to look at the ASSERT at the end of the test method. If the ASSERT line is expressing what your requirement is, or comes close, you re probably there. For example: Assert.AreEqual(-1, val) Vs. Assert.AreEqual(BAD\_INITIALIZATION\_CODE, ReturnCode, Method shold have returned a bad initialization code ) ## More in Agile [All posts in Agile](https://osherove.com/blog/category/agile) - Jun 7, 2006 ### [News: TestDriven, SideKick, Expression Evaluators and Security to boot](https://osherove.com/blog/2006/6/7/news-testdriven-sidekick-expression-evaluators-and-security.html) - Jul 25, 2005 ### [\[Article\] The Test Feasibility Matrix](https://osherove.com/blog/2005/7/25/article-the-test-feasibility-matrix.html) --- title: "[Interview]Kieran Mockford, MSBuild Program Manager - on MSBuild, TDD, the Microsoft build process and much more" url: "https://osherove.com/blog/2005/3/28/interviewkieran-mockford-msbuild-program-manager-on-msbuild.md" canonical: "https://osherove.com/blog/2005/3/28/interviewkieran-mockford-msbuild-program-manager-on-msbuild.html" published: "2005-03-28T05:13:00" updated: "2005-03-28T05:13:00" tags: ["Agile Related", "Interview"] author: "Roy Osherove" description: "Another one for your listening pleasure :) Kieran Mockford- Program manager for MSBuild, Microsoft - Building MSBuild, Test Driven Development style (February 28, 2005) Length: 67 minutes. Language: English. Download…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Interview\]Kieran Mockford, MSBuild Program Manager - on MSBuild, TDD, the Microsoft build process and much more By Roy Osherove March 28, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published March 28, 2005; technical details may be outdated. Another one for your listening pleasure :) **Kieran Mockford-  Program manager for MSBuild, Microsoft -** **Building MSBuild, Test Driven Development style (February 28, 2005)** Length: 67 minutes. Language: English. [Download](http://www.teamagile.com/mainpages/Interviews.html) **Summary** Roy Talks with  Kieran Mockford, the program manager for MSBuild, Microsoft's brand new build tool offering. Kieran spills the beans that MSBuild was developed using Test Driven Development methodologies with tools such as [NUnit](http://nunit.org/). Kieran tells about the various problems and solutions they encountered trying to learn TDD, then the talk moves to MSBuild and the need for "real" incremental build abilities and the Microsoft internal build process. It's a Fascinating look behind the scenes of Microsoft's internal tools for source control and continuous integration automation tools. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 3, 2005 ### [A Unit test should test only one thing](https://osherove.com/blog/2005/4/3/a-unit-test-should-test-only-one-thing.html) - Apr 3, 2005 ### [Naming standards for unit tests](https://osherove.com/blog/2005/4/3/naming-standards-for-unit-tests.html) - Mar 27, 2005 ### [\[Recording\]Johanna Rothman at Agile Israel: 9 steps to becoming more Agile](https://osherove.com/blog/2005/3/27/recordingjohanna-rothman-at-agile-israel-9-steps-to-becoming.html) - Mar 23, 2005 ### [NUnit in Hebrew?](https://osherove.com/blog/2005/3/23/nunit-in-hebrew.html) --- title: "[Recording]Johanna Rothman at Agile Israel: 9 steps to becoming more Agile" url: "https://osherove.com/blog/2005/3/27/recordingjohanna-rothman-at-agile-israel-9-steps-to-becoming.md" canonical: "https://osherove.com/blog/2005/3/27/recordingjohanna-rothman-at-agile-israel-9-steps-to-becoming.html" published: "2005-03-27T12:22:00" updated: "2005-03-27T12:22:00" tags: ["Agile Related"] author: "Roy Osherove" description: "I was quite wary of how the recording would turn out, and it really wasn't perfect. But, with some tweaking and noise removal, I bring you the recoding from the first half of the Agile Israel user group meeting last…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Recording\]Johanna Rothman at Agile Israel: 9 steps to becoming more Agile By Roy Osherove March 27, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published March 27, 2005; technical details may be outdated. I was quite wary of how the recording would turn out, and it really wasn't perfect. But, with some tweaking and noise removal, I bring you the recoding from the first half of the [Agile Israel](http://agileisrael.com/) user group meeting last week. Pictures to come. It'as available for download as two parts - so you can burn it onto a CD and listen on the way to work (if you're a geek like me, that is). **Johanna Rothman at Agile Israel user group** **9 Steps to becoming Agile(March 23, 2005)** Length: 1 hour 26 minutes. Language: English. **[Download](http://www.teamagile.com/mainpages/Interviews.html)** **Summary** [Johanna](http://jrothman.com/) Discusses the 9 steps each organization might want to consider as they start to move toward a more Agile development process. An interesting and funny speaker, Johanna discusses Daily builds, Automated smoke tests, Implementing by slice, Testing early and often, Timeboxing requirements work, ranking the requirements, Rolling wave planning, defining milestones based on deliverables -  not functions,and  creating cross-functional project teams. Johanna has written over 100 articles and papers and is now a columnist for Fast Company’s online career center, Software Development, Computerworld.com, and StickyMinds.com. Johanna is the author of the highly acclaimed [**Hiring the Best Knowledge Workers, Techies & Nerds**](https://www.amazon.com/exec/obidos/ASIN/0932633595/ref=nosim/rds-20), and is the coauthor of [**Corrective Action for the Software Industry**](https://www.amazon.com/exec/obidos/ASIN//0971323194/ref=nosim/rds-20). Johanna is also a host and session leader at the Amplifying Your Effectiveness (AYE) conference ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 3, 2005 ### [Naming standards for unit tests](https://osherove.com/blog/2005/4/3/naming-standards-for-unit-tests.html) - Mar 28, 2005 ### [\[Interview\]Kieran Mockford, MSBuild Program Manager - on MSBuild, TDD, the Microsoft build process and much more](https://osherove.com/blog/2005/3/28/interviewkieran-mockford-msbuild-program-manager-on-msbuild.html) - Mar 23, 2005 ### [NUnit in Hebrew?](https://osherove.com/blog/2005/3/23/nunit-in-hebrew.html) - Mar 23, 2005 ### [\[Audio Interview\] Charlie Poole, NUnit lead developer - on NUnit, XP, TDD and much more](https://osherove.com/blog/2005/3/23/audio-interview-charlie-poole-nunit-lead-developer-on-nunit.html) --- title: "Software Factories And Regular Expressions" url: "https://osherove.com/blog/2005/3/26/software-factories-and-regular-expressions.md" canonical: "https://osherove.com/blog/2005/3/26/software-factories-and-regular-expressions.html" published: "2005-03-26T22:37:00" updated: "2005-03-26T22:37:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm still preparing for my software factories talk tomorrow at the Israel Architects user group. It's amazing the stuff that I dug on this issue. Especially all the (not so)hidden rivalry between MS and IBM over what…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Software Factories And Regular Expressions By Roy Osherove March 26, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 26, 2005; technical details may be outdated. I'm still preparing for my software factories talk tomorrow at the Israel Architects user group. It's amazing the stuff that I dug on this issue. Especially all the (not so)hidden rivalry between MS and IBM over what UML should really be used for, Model Driven Architecture, Domain specific languages, MOFs and much much more. There's certainly lots of politics still associated with this still in-flux field. In any case, it either is gonna get a whole lot better for all of us, or a whole lot worse. I don't see any way where we'll just stay where we are - someone will take us into a different future in which we build software differently, and right now it's yet-to-be decided over what and who will do this transformation. Lots of parties have a lot at stake here, and it's definitely one of the holy grails for software architects everywhere - to be able to build stuff, and not fight it so much, to be able to change stuff, and not fight it so much. After that, I've been getting that itch again - I want to start re-doing [The Regulator](https://osherove.com/), totally in a test-driven manner. We'll see how much time I can set a side for it. I also have a bunch of upgrade features I'm planning for it, and I'm still not sure if I should take up the Feb CTP of VS 2005 and use the new Avalon bits to create the UI for it. If I do, I'm going to learn a lot, but it might lead up to a dead end. I'll also have to start looking for XAML designers (which are free). Feel free to recommend the ones you like in the comments as well as comment as to what system you would like to see it built in. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 10, 2005 ### [An old joke with a new ending](https://osherove.com/blog/2005/4/10/an-old-joke-with-a-new-ending.html) - Apr 3, 2005 ### [Weird fonts on this blog?](https://osherove.com/blog/2005/4/3/weird-fonts-on-this-blog.html) - Mar 26, 2005 ### [Desktops with a twist](https://osherove.com/blog/2005/3/26/desktops-with-a-twist.html) - Mar 22, 2005 ### [VS 2005 Pricing and Licensing (sucks)](https://osherove.com/blog/2005/3/22/vs-2005-pricing-and-licensing-sucks.html) --- title: "Desktops with a twist" url: "https://osherove.com/blog/2005/3/26/desktops-with-a-twist.md" canonical: "https://osherove.com/blog/2005/3/26/desktops-with-a-twist.html" published: "2005-03-26T10:48:00" updated: "2005-03-26T10:48:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Wow! Some great looking desktops over here. Thanks to Mike for the link." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Desktops with a twist By Roy Osherove March 26, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 26, 2005; technical details may be outdated. Wow! Some [great looking desktops](http://www.flickr.com/photos/w00kie/sets/180637/show/) over here. Thanks to [Mike](http://www.larkware.com/dg2/TheDailyGrind587.html) for the link. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 3, 2005 ### [Weird fonts on this blog?](https://osherove.com/blog/2005/4/3/weird-fonts-on-this-blog.html) - Mar 26, 2005 ### [Software Factories And Regular Expressions](https://osherove.com/blog/2005/3/26/software-factories-and-regular-expressions.html) - Mar 22, 2005 ### [VS 2005 Pricing and Licensing (sucks)](https://osherove.com/blog/2005/3/22/vs-2005-pricing-and-licensing-sucks.html) - Mar 17, 2005 ### [Funny TechEd video - Scott & Rory](https://osherove.com/blog/2005/3/17/funny-teched-video-scott-amp-rory.html) --- title: "NUnit in Hebrew?" url: "https://osherove.com/blog/2005/3/23/nunit-in-hebrew.md" canonical: "https://osherove.com/blog/2005/3/23/nunit-in-hebrew.html" published: "2005-03-23T23:22:00" updated: "2005-03-23T23:22:00" tags: ["Agile Related"] author: "Roy Osherove" description: "This is a question to all the Hebrew-speaking readers of this blog (all 3 of you): One of the upcoming features on NUnit will be a localization kit which will enable it to be run in different language contexts. So:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NUnit in Hebrew? By Roy Osherove March 23, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published March 23, 2005; technical details may be outdated. This is a question to all the Hebrew-speaking readers of this blog (all 3 of you): One of the upcoming features on [NUnit](http://nunit.org/) will be a localization kit which will enable it to be run in different language contexts. So: 1. Would you want to use a version if NUnit in Hebrew? explain why (yes or no) 2. Would you want to help localize it? ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Mar 28, 2005 ### [\[Interview\]Kieran Mockford, MSBuild Program Manager - on MSBuild, TDD, the Microsoft build process and much more](https://osherove.com/blog/2005/3/28/interviewkieran-mockford-msbuild-program-manager-on-msbuild.html) - Mar 27, 2005 ### [\[Recording\]Johanna Rothman at Agile Israel: 9 steps to becoming more Agile](https://osherove.com/blog/2005/3/27/recordingjohanna-rothman-at-agile-israel-9-steps-to-becoming.html) - Mar 23, 2005 ### [\[Audio Interview\] Charlie Poole, NUnit lead developer - on NUnit, XP, TDD and much more](https://osherove.com/blog/2005/3/23/audio-interview-charlie-poole-nunit-lead-developer-on-nunit.html) - Mar 21, 2005 ### [A meeting with a twist this Wednesday at Agile Israel](https://osherove.com/blog/2005/3/21/a-meeting-with-a-twist-this-wednesday-at-agile-israel.html) --- title: "Integration and interoperability resources" url: "https://osherove.com/blog/2005/3/23/integration-and-interoperability-resources.md" canonical: "https://osherove.com/blog/2005/3/23/integration-and-interoperability-resources.html" published: "2005-03-23T12:14:00" updated: "2005-03-23T12:14:00" tags: ["Architecture"] author: "Roy Osherove" description: "Here's a great list of interoperability and integration resources on the web. Some of these are well know, some are a gem just waiting to be discovered. Some are great books about integration and enterprise patterns you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Integration and interoperability resources By Roy Osherove March 23, 2005 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published March 23, 2005; technical details may be outdated. Here's a great list of interoperability and integration resources on the web. Some of these are well know, some are a gem just waiting to be discovered. Some are great books about integration and enterprise patterns you should be reading when dealing with these issues. I got the list off of an email that represents an exclusive course that will take place next month. It's a pretty closed registration, and the list you see here is simply the prerequisite list for this course :). So I said to myself "well, we can at least learn what we _don't_ know from this list..." I checked some of this out and it's great stuff, so I decided to put all of it in one place for future reference:

patterns & practices Live: Microsoft .NET - J2EE Application Interoperability - Level 200

Interoperability and Integration using Web Services - An Industry Perspective - Level 200

Interoperability and Integration Using Web Services - Level 300

patterns & practices Live: Integration Patterns - Level 200

patterns & practices Live: Integration Patterns Level 200

patterns & practices Live: .Net Enterprise Solution Patterns Level 200

patterns & practices Live: Shadowfax - Level 300 

patterns & practices Live: Service Patterns

patterns & practices Live: J2EE Interoperability

patterns & practices Live: Web Services Interoperability Profile 1.0 

Architecting Solutions to More Easily Access, Integrate, and Deliver Mainframe-based Data in the .NET Environment

.NET and J2EE Interoperability

Enterprise Architecture Design and the Integrated Architecture Framework (Journal article)

Patterns of Enterprise Application Architecture, Addison-Wesley Longman, Inc., 2002

Enterprise Integration Patterns, Pearson Education, 2003 (book)

Enterprise Solution Patterns Using Microsoft .NET, Microsoft Corporation, June 2003 (website)

Integration Patterns, Microsoft Press, 2004 (Full book in PDF!)

## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Apr 14, 2005 ### [Aspect Oriented .NET frameworks - more than I thought](https://osherove.com/blog/2005/4/14/aspect-oriented-net-frameworks-more-than-i-thought.html) - Apr 9, 2005 ### [\[Recording\] Roy Osherove on Software Factories and Domain Specific Languages](https://osherove.com/blog/2005/4/9/recording-roy-osherove-on-software-factories-and-domain-spec.html) - Mar 7, 2005 ### [Natty Gur on Enterprise Architecture](https://osherove.com/blog/2005/3/7/natty-gur-on-enterprise-architecture.html) - Mar 2, 2005 ### [Deep Indigo, Clemens style](https://osherove.com/blog/2005/3/2/deep-indigo-clemens-style.html) --- title: "[Audio Interview] Charlie Poole, NUnit lead developer - on NUnit, XP, TDD and much more" url: "https://osherove.com/blog/2005/3/23/audio-interview-charlie-poole-nunit-lead-developer-on-nunit.md" canonical: "https://osherove.com/blog/2005/3/23/audio-interview-charlie-poole-nunit-lead-developer-on-nunit.html" published: "2005-03-23T11:32:00" updated: "2005-03-23T11:32:00" tags: ["Agile Related", "Interview"] author: "Roy Osherove" description: "Another interview out the door, this time with Charlie Poole, Lead dev on NUnit and an XP wonk. Go download it from here (1 hour 45 min. in 2 parts) Summary Roy Talks with Charlie Poole , the lead developer of NUnit on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Audio Interview\] Charlie Poole, NUnit lead developer - on NUnit, XP, TDD and much more By Roy Osherove March 23, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published March 23, 2005; technical details may be outdated. Another interview out the door, this time with Charlie Poole, Lead dev on NUnit and an XP wonk. [Go download it from here](http://www.teamagile.com/mainpages/Interviews.html) (1 hour 45 min. in 2 parts) **Summary** Roy Talks with [Charlie Poole](http://www.charliepoole.org/), the lead developer of NUnit on various Agile topics. These include Upcoming NUnit features, Test Driven Development best practices, implementing XP in an organization, testing GUIs, threads, mock objects and much much more. Charlie also spills the beans about the upcoming NUnit blogs. Charlie has spent more than 30 years as a software developer, designer, project manager, trainer and coach. He works through his own company, [Poole Consulting](http://www.pooleconsulting.com/), in the US and recently joined Dublin-based [Exoftware](http://www.exoftware.com/CharliePooleJoining.htm) to provide mentoring and training to clients in Europe. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Mar 27, 2005 ### [\[Recording\]Johanna Rothman at Agile Israel: 9 steps to becoming more Agile](https://osherove.com/blog/2005/3/27/recordingjohanna-rothman-at-agile-israel-9-steps-to-becoming.html) - Mar 23, 2005 ### [NUnit in Hebrew?](https://osherove.com/blog/2005/3/23/nunit-in-hebrew.html) - Mar 21, 2005 ### [A meeting with a twist this Wednesday at Agile Israel](https://osherove.com/blog/2005/3/21/a-meeting-with-a-twist-this-wednesday-at-agile-israel.html) - Mar 20, 2005 ### [Easier legacy unit testing with TypeMock.NET](https://osherove.com/blog/2005/3/20/easier-legacy-unit-testing-with-typemocknet.html) --- title: "VS 2005 Pricing and Licensing (sucks)" url: "https://osherove.com/blog/2005/3/22/vs-2005-pricing-and-licensing-sucks.md" canonical: "https://osherove.com/blog/2005/3/22/vs-2005-pricing-and-licensing-sucks.html" published: "2005-03-22T19:04:00" updated: "2005-03-22T19:04:00" tags: ["Off Topic"] author: "Roy Osherove" description: "[ Update : You can go vote against this licensing scheme in the Microsoft feedback center, thanks to Jordan T.] It's bad enough that Unit Testing will not be included in all versions of Visual Studio (like Microsoft…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VS 2005 Pricing and Licensing (sucks) By Roy Osherove March 22, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 22, 2005; technical details may be outdated. \[**Update**: You can [go vote against this licensing scheme](http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=dd52c799-e450-4eac-b69f-75995517fb33) in the Microsoft feedback center, thanks to Jordan T.\] It's bad enough that [Unit Testing will not be included in all versions of Visual Studio](http://www.peterprovost.org/archive/2004/06/12/1379.aspx)(like Microsoft thinks only "privileged" owners can get this "benefit"), now we get this bomb. [Mike Gunderloy](http://www.larkware.com/) wraps up nicely [the whole new pricing scheme for Visual Studio 2005 and Team System editions](http://www.larkware.com/editorials/vs2005.html) . I I agree with Mike that Microsoft probably took a wrong turn somewhere when they decided that the various Team System editions will not be available without extra pricing even for MSDN universal subscribers (in fact they jacked up the VSTS+MSDN prices). Here's a good quote that sums up nicely Mike's thoughts and my own as well: _"Finally, I think Microsoft is making a serious, serious mistake in not including the whole Team Foundation Server in the top-level MSDN package. I could rant on about this a bit, but_ [_Eric Bowen_](http://scrappydog.com/blog/archive/2005/03/21/1412.aspx) _beat me to it with a perfect post. You ought to hop over to his blog and read the whole thing; I'll quote the ending: "Bottom line for Microsoft:  How can you expect consultants to recommend products to clients that we aren't familiar with, because we don't have access to them?" I'm with him on that.."_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 26, 2005 ### [Software Factories And Regular Expressions](https://osherove.com/blog/2005/3/26/software-factories-and-regular-expressions.html) - Mar 26, 2005 ### [Desktops with a twist](https://osherove.com/blog/2005/3/26/desktops-with-a-twist.html) - Mar 17, 2005 ### [Funny TechEd video - Scott & Rory](https://osherove.com/blog/2005/3/17/funny-teched-video-scott-amp-rory.html) - Mar 16, 2005 ### [Picking a fight with a book author](https://osherove.com/blog/2005/3/16/picking-a-fight-with-a-book-author.html) --- title: "A meeting with a twist this Wednesday at Agile Israel" url: "https://osherove.com/blog/2005/3/21/a-meeting-with-a-twist-this-wednesday-at-agile-israel.md" canonical: "https://osherove.com/blog/2005/3/21/a-meeting-with-a-twist-this-wednesday-at-agile-israel.html" published: "2005-03-21T20:54:00" updated: "2005-03-21T20:54:00" tags: ["Agile Related"] author: "Roy Osherove" description: "a package of 100 Popsicle sticks. A package of rubber bands (elastics) 1 ball of string Packages of colored index cards or colored paper 4 or 5 kid scissors (not-sharp scissors) 4-5 scotch tape dispensers (the small…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A meeting with a twist this Wednesday at Agile Israel By Roy Osherove March 21, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published March 21, 2005; technical details may be outdated. - a package of 100 Popsicle sticks. - A package of rubber bands (elastics) - 1 ball of string - Packages of colored index cards or colored paper - 4 or 5 kid scissors (not-sharp scissors) - 4-5 scotch tape dispensers (the small ones, not a heavy desk one) That's my shopping list for the special talk we're going to have this Wednesday at the [Agile Israel](http://agileisrael.com/) user group: Intrigued? Send an email to **yes at agileIsrael.com and register to go.** You don't have to register, but it would be great to know who is actually planning to come so that we have enough food 'n stuff. The topic of this 3 hour talk: \- Intro to Agile development \- 9 steps to Agile projects \- Interactive exercise Hosted by noted author and international speaker [Johanna Rothman](http://www.jrotheman.com/), who hosts two of my favorite blogs ([here](http://www.jrothman.com/weblog/blogger.html) and [here](http://www.jrothman.com/weblog/htpblogger.html)), this looks to be a great session, with a little interesting twist.
Wednesday, March 23, 2005
Meeting will take place at Microsoft Ra'anana: 2 Hapnina St, Raanana
(09) 7625-100 Floor 0 , Dekel Room
It is the new building across from Amdocs. After the first traffic circle, there is an area for (free) parking on the right.
**Arrival at 17:30 we start at 17:45.** ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Mar 23, 2005 ### [NUnit in Hebrew?](https://osherove.com/blog/2005/3/23/nunit-in-hebrew.html) - Mar 23, 2005 ### [\[Audio Interview\] Charlie Poole, NUnit lead developer - on NUnit, XP, TDD and much more](https://osherove.com/blog/2005/3/23/audio-interview-charlie-poole-nunit-lead-developer-on-nunit.html) - Mar 20, 2005 ### [Easier legacy unit testing with TypeMock.NET](https://osherove.com/blog/2005/3/20/easier-legacy-unit-testing-with-typemocknet.html) - Mar 11, 2005 ### [CLR Performance Q&A, and how it relates to unit testing and mock objects](https://osherove.com/blog/2005/3/11/clr-performance-qampa-and-how-it-relates-to-unit-testing-and.html) --- title: "Taking notice of Lucene: A searching & indexing library" url: "https://osherove.com/blog/2005/3/20/taking-notice-of-lucene-a-searching-amp-indexing-library.md" canonical: "https://osherove.com/blog/2005/3/20/taking-notice-of-lucene-a-searching-amp-indexing-library.html" published: "2005-03-20T21:21:00" updated: "2005-03-20T21:21:00" tags: ["Cool Tools", "Cool sites"] author: "Roy Osherove" description: "Lucene is an indexing search engine. It's in Java, but it has ports to other languages including several for .NET . One of those several, dotLucene looks very well maintained and some great demos appear on the site. So…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Taking notice of Lucene: A searching & indexing library By Roy Osherove March 20, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published March 20, 2005; technical details may be outdated. Lucene is an indexing search engine. It's in Java, but it has ports to other languages including [several for .NET](http://openlucene.net/). One of those several, dotLucene looks very well maintained and some great demos appear on the site. So how useful is it? Well, if you're a careful reader, you'll notice that on the openLucene site, there's a small list of applications that use the Lucene for .NET engine. One of those is the now very-well-known-since-microsoft-bought-them [LookOut](http://www.lookoutsoft.com/) (email indexing addin for Outlook). Looks like it's worth checking out. \[via [Larkware](http://www.larkware.com/dg2/TheDailyGrind582.html)\] ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Apr 16, 2005 ### [\[CoolTool\] SWExplorerAutomation: Automate web GUI unit testing for IE](https://osherove.com/blog/2005/4/16/cooltool-swexplorerautomation-automate-web-gui-unit-testing.html) - Apr 9, 2005 ### [\[CoolTool\] Microsoft USB Flash Drive Manager](https://osherove.com/blog/2005/4/9/cooltool-microsoft-usb-flash-drive-manager.html) - Mar 12, 2005 ### [\[CoolTool\] FinalBuilder 3.0 - the ultimate build management and automation tool](https://osherove.com/blog/2005/3/12/cooltool-finalbuilder-30-the-ultimate-build-management-and-a.html) - Mar 12, 2005 ### [How most developers don't give a damn about productivity](https://osherove.com/blog/2005/3/12/how-most-developers-dont-give-a-damn-about-productivity.html) --- title: "Easier legacy unit testing with TypeMock.NET" url: "https://osherove.com/blog/2005/3/20/easier-legacy-unit-testing-with-typemocknet.md" canonical: "https://osherove.com/blog/2005/3/20/easier-legacy-unit-testing-with-typemocknet.html" published: "2005-03-20T20:30:00" updated: "2005-03-20T20:30:00" tags: ["Agile Related"] author: "Roy Osherove" description: "\"Legacy code\" is one of those questions which never have a great answer when confronted with (besides the \"Test only when you can, which will only be sometimes..\" answer) One of the coolest findings lately for me was…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Easier legacy unit testing with TypeMock.NET By Roy Osherove March 20, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published March 20, 2005; technical details may be outdated. "Legacy code" is one of those questions which never have a great answer when confronted with (besides the "Test only when you can, which will only be sometimes.." answer) One of the coolest findings lately for me was [TypeMock.NET](http://www.typemock.com/). It was introduced to me by Eli Lopian, one of the head technology guys at Amdocs Israel.  It's a Mocking framework for .NET (much like NMock is) but it supports a very wide range of "unusual" scenarios. **For example**, it allows one to "Mock" a real class, not just an interface. It goes further by letting you "Mock" a type's **static methods** and essentially take over whenever someone instantiates a new instance of a particular type. This would come in **very handy** in situations like legacy code testing. **Imagine** this: You have a legacy class that uses a private member of type "Log". This "log" class does not support interfaces so you couldn't mock it directly with NMock and such. Using TypeMock you can actually tell .NET that when a call to "new" on that object type is being done, it will instead instantiate **your own** mock object. That's some awesome power. It can even go as further as mocking statics. **Imagine** that your legacy class is using static methods on the Log class, which you would like to "replace" with your own thus simulating various error modes and such. With TypeMock, it's a pretty easy deal. I see this tool being used in situations where you would like to test your legacy code, which was not designed to be testable. Using TypeMock you could probably get away with 90% of your testing scenarios easily. I do **not** see this as an aid to full blown TDD, however, because using TDD I would write code that would make it easy for me to Mock interfaces. Using TypeMock on code would usually mean a red flag for me as a developer, saying something along the lines of "Your interfaces and design are not generic enough to be testable, TypeMock is not the answer!". I'm tempted to write a full article on this, and I just might. Meanwhile, [this looks like a good start](http://www.typemock.com/Docs/Mock%20Types.html) to using TypeMock. Oh, and it's free (download requires registration). One of the things I liked about it is how it's actually done: It uses the CLR profiler APIs to "intercept" JIT calls to create various objects. A downside for that is that there can only be one profiler active at a time, so you couldn't really run CLR profiler and TypeMock at the same time (I'm guessing). Another "feature" right now is that it will not let you "mock" built-in framework types such as "Int32". (I actually tried  mocking "Int.Parse" and it didn't work. Word is they are planning to do this for the next version, but I shudder to think about the security implications for this (or if it's even possible). ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Mar 23, 2005 ### [\[Audio Interview\] Charlie Poole, NUnit lead developer - on NUnit, XP, TDD and much more](https://osherove.com/blog/2005/3/23/audio-interview-charlie-poole-nunit-lead-developer-on-nunit.html) - Mar 21, 2005 ### [A meeting with a twist this Wednesday at Agile Israel](https://osherove.com/blog/2005/3/21/a-meeting-with-a-twist-this-wednesday-at-agile-israel.html) - Mar 11, 2005 ### [CLR Performance Q&A, and how it relates to unit testing and mock objects](https://osherove.com/blog/2005/3/11/clr-performance-qampa-and-how-it-relates-to-unit-testing-and.html) - Mar 5, 2005 ### [Do you have a pre-built version of Mock++ handy?](https://osherove.com/blog/2005/3/5/do-you-have-a-pre-built-version-of-mock-handy.html) --- title: "[Free Book]Coding Slave" url: "https://osherove.com/blog/2005/3/19/free-bookcoding-slave.md" canonical: "https://osherove.com/blog/2005/3/19/free-bookcoding-slave.html" published: "2005-03-19T17:50:00" updated: "2005-03-19T17:50:00" tags: ["Free book chapters"] author: "Roy Osherove" description: "\" This has been a month of extraordinary learning and changing awareness for me. Today I am up for trying out new ideas that previously I would have dismissed out of hand. Thus, I am going to follow Kelly's thinking and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Free Book\]Coding Slave By Roy Osherove March 19, 2005 In [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published March 19, 2005; technical details may be outdated. "_This has been a month of extraordinary learning and changing awareness for me. Today I am up for trying out new ideas that previously I would have dismissed out of hand. Thus, I am going to follow Kelly's thinking and see where it goes. So, click_ [_here_](http://www.codingslave.com/docs/CodingSlave213.pdf) _to get the full, free version of Coding Slave, the Novel, in PDF format. Pass it around to your friends. Give it to your coworkers. Slide it under your boss's door."_ _\[_[_Bob Reselman is giving it away_](http://codingslave.blogspot.com/2005/03/q-wheres-it-going.html) _- his Book: "[Coding Slave](https://www.amazon.com/exec/obidos/ASIN/0974980404/iserializable-20)"\]_ _(via [Rory](http://neopoleon.com/blog/posts/13371.aspx))_ I think Bob is going to get back what he's given away ten-fold. What's probably going to happen is that I'm going to start reading the book, then notice that I like it, which will make me order the printed version to read whenever however I want. And I won't be the only one, I bet. Very cool ## More in Free book chapters [All posts in Free book chapters](https://osherove.com/blog/category/free-book-chapters) - Feb 2, 2006 ### [HanselMinutes on CI tools, and a free EBook on Agile Skills](https://osherove.com/blog/2006/2/2/hanselminutes-on-ci-tools-and-a-free-ebook-on-agile-skills.html) - Apr 8, 2005 ### [\[Free eBook\]FIT for Developing Software: Framework for Integrated Tests](https://osherove.com/blog/2005/4/8/free-ebookfit-for-developing-software-framework-for-integrat.html) - Jan 11, 2005 ### [\[Free book\] .Net in samples](https://osherove.com/blog/2005/1/11/free-book-net-in-samples.html) - Nov 27, 2004 ### [Head-First books from Oreilly (and free sample chapters)](https://osherove.com/blog/2004/11/27/head-first-books-from-oreilly-and-free-sample-chapters.html) --- title: "How to use virtual PC and still save lots of room: differencing disks" url: "https://osherove.com/blog/2005/3/19/how-to-use-virtual-pc-and-still-save-lots-of-room-differenci.md" canonical: "https://osherove.com/blog/2005/3/19/how-to-use-virtual-pc-and-still-save-lots-of-room-differenci.html" published: "2005-03-19T17:20:00" updated: "2005-03-19T17:20:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "Here's a great way to save some space on your hard drive with those big 'n nasty Virtual PC images: Differencing disks. The idea is simple: Start out with a hard drive image you're comfortable with, then create…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to use virtual PC and still save lots of room: differencing disks By Roy Osherove March 19, 2005 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published March 19, 2005; technical details may be outdated. Here's a great way to save some space on your hard drive with those big 'n nasty Virtual PC images: Differencing disks. The idea is simple: Start out with a hard drive image you're comfortable with, then create "differential" images based on that image, where the only space they take is the "difference" between the two. That ends up saving a lot of room. So, for me this means I have a "base\_XP" drive which I've created in the usual manner using VPC. I'll use this to create my own new "versions" of this drive where I install various builds of VS 2005 and so on. The next step for me is to open the VPC console and click "file-Virtual Disk Wizard". In the wizard make sure you choose "differencing" disk when asked. You then have to point to the "base" drive (base\_xp in my case) which you will be differencing upon. It's important that you make that base drive as good as you need because you don't want to touch it later when other drives are depending on it. Now that you have finished making the drive, you just need to go to "file-new virtual machine wizard" and point to an existing virtual disk  - your new differencing drive. voila. You've just saved at least a couple of Gigs for each machine you're going to install off of that base disk. have fun. ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Jun 8, 2005 ### [Logon as a different user on the same local desktop: in win 2003](https://osherove.com/blog/2005/6/8/logon-as-a-different-user-on-the-same-local-desktop-in-win-2.html) - Apr 20, 2005 ### [\[Word Shortcut of the day\] ALT-F3: Quick Auto Text](https://osherove.com/blog/2005/4/20/word-shortcut-of-the-day-alt-f3-quick-auto-text.html) - Feb 1, 2005 ### [Launcher: Clean auto-deployment and auto-updating code from Franklins.Net](https://osherove.com/blog/2005/2/1/launcher-clean-auto-deployment-and-auto-updating-code-from-f.html) - Jan 7, 2005 ### [Using Regex to return the first N words in a string](https://osherove.com/blog/2005/1/7/using-regex-to-return-the-first-n-words-in-a-string.html) --- title: "Funny TechEd video - Scott & Rory" url: "https://osherove.com/blog/2005/3/17/funny-teched-video-scott-amp-rory.md" canonical: "https://osherove.com/blog/2005/3/17/funny-teched-video-scott-amp-rory.html" published: "2005-03-17T05:56:00" updated: "2005-03-17T05:56:00" tags: ["Off Topic"] author: "Roy Osherove" description: "What can I say? This is a funny video. Wish I was there." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Funny TechEd video - Scott & Rory By Roy Osherove March 17, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 17, 2005; technical details may be outdated. What can I say? [This](http://www.hanselman.com/blog/RoryAndScottDesignSomeSoftwareTechEdRevengeOfTheSith.aspx) is a funny video. Wish I was there. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 26, 2005 ### [Desktops with a twist](https://osherove.com/blog/2005/3/26/desktops-with-a-twist.html) - Mar 22, 2005 ### [VS 2005 Pricing and Licensing (sucks)](https://osherove.com/blog/2005/3/22/vs-2005-pricing-and-licensing-sucks.html) - Mar 16, 2005 ### [Picking a fight with a book author](https://osherove.com/blog/2005/3/16/picking-a-fight-with-a-book-author.html) - Mar 12, 2005 ### [The Real Roy](https://osherove.com/blog/2005/3/12/the-real-roy.html) --- title: "Picking a fight with a book author" url: "https://osherove.com/blog/2005/3/16/picking-a-fight-with-a-book-author.md" canonical: "https://osherove.com/blog/2005/3/16/picking-a-fight-with-a-book-author.html" published: "2005-03-16T21:05:00" updated: "2005-03-16T21:05:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Looks like Alex picked a fight with non-other than Francesco Balena, long time coder and regional director, and personally someone who's code and tips I've used as a VB developer for many of my projects. Francesco is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Picking a fight with a book author By Roy Osherove March 16, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 16, 2005; technical details may be outdated. Looks like [Alex picked a fight](http://weblogs.asp.net/alex_papadimoulis/archive/2005/03/15/394671.aspx) with non-other than Francesco Balena, long time coder and regional director, and personally someone who's code and tips I've used as a VB developer for many of my projects. Francesco is the co-author of [this book](https://www.amazon.com/exec/obidos/ASIN/0735621721/iserializable-20), which Alex just gave a scathing review on. Personally, I think Alex is too harsh. I know Fancesco's work for a long time and trust him when he writes a book about best practices such as the one mentioned. You should definitely go read his comment to the aforementioned post on the bottom - it's enlightening. Alex [posted more](http://weblogs.asp.net/Alex_Papadimoulis/archive/2005/03/16/394892.aspx), with less harsh words. If anything, it looks like I'm going to order this book now - it seems very cool. Was this just a clever marketing ploy? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 22, 2005 ### [VS 2005 Pricing and Licensing (sucks)](https://osherove.com/blog/2005/3/22/vs-2005-pricing-and-licensing-sucks.html) - Mar 17, 2005 ### [Funny TechEd video - Scott & Rory](https://osherove.com/blog/2005/3/17/funny-teched-video-scott-amp-rory.html) - Mar 12, 2005 ### [The Real Roy](https://osherove.com/blog/2005/3/12/the-real-roy.html) - Mar 12, 2005 ### [How most developers don't give a damn about productivity](https://osherove.com/blog/2005/3/12/how-most-developers-dont-give-a-damn-about-productivity.html) --- title: "Catch me at one of these upcoming user group events this month" url: "https://osherove.com/blog/2005/3/12/catch-me-at-one-of-these-upcoming-user-group-events-this-mon.md" canonical: "https://osherove.com/blog/2005/3/12/catch-me-at-one-of-these-upcoming-user-group-events-this-mon.html" published: "2005-03-12T16:05:00" updated: "2005-03-12T16:05:00" tags: ["Community"] author: "Roy Osherove" description: "If you want to meet me in person (or just listen to an interesting lecture you can catch me at these upcoming events: 16th of this month - C++/C# user group I'll be speaking at the C# user group about C# best practices…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Catch me at one of these upcoming user group events this month By Roy Osherove March 12, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published March 12, 2005; technical details may be outdated. If you want to meet me in person (or just listen to an interesting lecture you can catch me at these upcoming events: **16th of this month - C++/C# user group** I'll be speaking at the [C# user group](http://www.comconix.com/ivcug/) about C# best practices and defensive event management techniques. **23rd of this month - Agile Israel** The 2nd [Agile Israel](http://agileisrael.com/) User group meeting will be held at Microsoft, featuring [Johanna Rothman](http://www.jrothman.com/) _(Important: Confirm your arrival by sending an email to **YES at AgileIsrael.com** please)_ **27th of this month - .NET Architects user group** I'll be speaking at the [.NET architects user group](http://www.microsoft.com/israel/events/default.aspx?pageType=1&idType=1&id=15118) on software factories and domain specific languages ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Apr 10, 2005 ### [LinMagazine: Hebrew blogs about technology and development](https://osherove.com/blog/2005/4/10/linmagazine-hebrew-blogs-about-technology-and-development.html) - Apr 3, 2005 ### [VB user group meeting this week: Diving into ADO.NET 2.0 and VS 2005 Data features](https://osherove.com/blog/2005/4/3/vb-user-group-meeting-this-week-diving-into-adonet-20-and-vs.html) - Mar 1, 2005 ### [Agile Israel next meeting infromation and other important news](https://osherove.com/blog/2005/3/1/agile-israel-next-meeting-infromation-and-other-important-ne.html) - Feb 21, 2005 ### [IVBUG: Multithreaded UIs with VB.NET](https://osherove.com/blog/2005/2/21/ivbug-multithreaded-uis-with-vbnet.html) --- title: "The Real Roy" url: "https://osherove.com/blog/2005/3/12/the-real-roy.md" canonical: "https://osherove.com/blog/2005/3/12/the-real-roy.html" published: "2005-03-12T15:59:00" updated: "2005-03-12T15:59:00" tags: ["Off Topic"] author: "Roy Osherove" description: "There were a lot of pictures taken at the MVP open days in Prague. You'd think my one and only picture would turn out better than this one ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Real Roy By Roy Osherove March 12, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 12, 2005; technical details may be outdated. There were a lot of pictures taken at the MVP open days in Prague. You'd think my one and only  picture would turn out better than [this one](http://www.msmvp.org/prague05/CIMG2574.JPG). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 17, 2005 ### [Funny TechEd video - Scott & Rory](https://osherove.com/blog/2005/3/17/funny-teched-video-scott-amp-rory.html) - Mar 16, 2005 ### [Picking a fight with a book author](https://osherove.com/blog/2005/3/16/picking-a-fight-with-a-book-author.html) - Mar 12, 2005 ### [How most developers don't give a damn about productivity](https://osherove.com/blog/2005/3/12/how-most-developers-dont-give-a-damn-about-productivity.html) - Mar 11, 2005 ### [the CSS maze](https://osherove.com/blog/2005/3/11/the-css-maze.html) --- title: "[CoolTool] FinalBuilder 3.0 - the ultimate build management and automation tool" url: "https://osherove.com/blog/2005/3/12/cooltool-finalbuilder-30-the-ultimate-build-management-and-a.md" canonical: "https://osherove.com/blog/2005/3/12/cooltool-finalbuilder-30-the-ultimate-build-management-and-a.html" published: "2005-03-12T01:54:00" updated: "2005-03-12T01:54:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "FinalBuilder is out with version 3.0 I first learned about this tool from Mike Gunderloy(Larkware) about a year or so ago. This is one of the coolest and most productive tools I know to manage and execute automated…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[CoolTool\] FinalBuilder 3.0 - the ultimate build management and automation tool By Roy Osherove March 12, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published March 12, 2005; technical details may be outdated. [FinalBuilder](http://finalbuilder.com/) is out with version 3.0 [![](https://osherove.com/img/wb/68b1ab97_www.finalbuilder.com_finalbuilder_images_MainIDE_splash2b.jpg)](http://www.finalbuilder.com/finalbuilder/index.html) I first learned about this tool from [Mike Gunderloy(Larkware)](http://larkware.com/) about a year or so ago. This is one of the coolest and most productive tools I know to manage and execute automated builds and a multitude of other tasks relating to deployment, registration, file manipulation, configuration and logical output and notification. One of the coolest things about it is that you can also add your own custom tasks to it - using .NET. they integrate fully into the "IDE" and that means you can pretty much do anything you like. That's why, while I like them as a concept, I don't use tools such as Nant or MSBuild today  - the configuration is not as easy and seamless as it should be. To me that's one of the most important things - if you can't manage the build process easily you're wasting a lot of time and effort needlessly. And I mean \*a lot\*. Another nice thing is that the amount of available built-in tasks is amazing. There are even tasks there to automate comparison and merging of SQL server databases (using SQL-Compare). That's very cool. The newsgroup for FinalBuilder is very active and the developers are very responsive to change and feature requests from customers. That's an A in my book. I've used this tool at customer sites on some relatively large solutions (120 projects configuration). It's amazing how productive it really can make you. And you don't have to be the worlds great XML expert to do it. Thank god. _Note: I am not affiliated with these guys. Just a happy customer._ ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Apr 9, 2005 ### [\[CoolTool\] Microsoft USB Flash Drive Manager](https://osherove.com/blog/2005/4/9/cooltool-microsoft-usb-flash-drive-manager.html) - Mar 20, 2005 ### [Taking notice of Lucene: A searching & indexing library](https://osherove.com/blog/2005/3/20/taking-notice-of-lucene-a-searching-amp-indexing-library.html) - Mar 12, 2005 ### [How most developers don't give a damn about productivity](https://osherove.com/blog/2005/3/12/how-most-developers-dont-give-a-damn-about-productivity.html) - Mar 3, 2005 ### [\[Cool Tools\] Code metrics, dependencies and more metrics](https://osherove.com/blog/2005/3/3/cool-tools-code-metrics-dependencies-and-more-metrics.html) --- title: "How most developers don't give a damn about productivity" url: "https://osherove.com/blog/2005/3/12/how-most-developers-dont-give-a-damn-about-productivity.md" canonical: "https://osherove.com/blog/2005/3/12/how-most-developers-dont-give-a-damn-about-productivity.html" published: "2005-03-12T00:13:00" updated: "2005-03-12T00:13:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "One of the things I couldn't do at my last job was deliver training and consulting on non-Microsoft technology projects. I find myself these days teaching Agile concepts for developers in C/C++, Java and .NET. Each of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How most developers don't give a damn about productivity By Roy Osherove March 12, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 12, 2005; technical details may be outdated. One of the things I couldn't do at my last job was deliver training and consulting on non-Microsoft technology projects. I find myself these days teaching Agile concepts for developers in C/C++, Java and .NET. Each of these languages has its own frameworks for unit testing and mock objects. each one of these languages has its strengths and weaknesses. I'm learning more and more each day, and its a wonderful experience. Specifically, I'm opening up to whole new streams of thought about various things. Thoughts that come from a totally different non-MS oriented world, which sometimes have totally different perspectives on things such as architecture, design and working habits. Some of these are contradictory, some are not. If anything, I'm starting to think about problems and solutions with more possible angles. Today, for example, I'm working on the [Eclipse IDE](http://www.eclipse.org/) and it's very very cool. Lots of the features I really liked with [IntelliJ IDEA](http://www.jetbrains.com/) are there, although not as well polished, they provide a great coding experience. Again, sometimes better than Visual Studio .NET 2003 and even 2005. One of the things I miss most is the automatic Intellisense pop up when using VS.NET 2005. It's a great feature and I hate having to press CTRL+Space so much. I've become such a lazy coder. It sometimes amazes me how people can work day in and day out with the same tool and still know so little about how to use it more efficiently. For example, I once came across some very seasoned C++ developers who were using Visual Studio 6.0. Personally, I believe that Visual Studio 6.0 C++ coding experience is one of the worst out there. Still, those people were drudging on using it, because they had little choice in the matter. They were forced to do it by the company they were working in. Although VS 6.0 sucks in many ways, it does try to provide \*some" usability features. For example  -adding a new class can be a simple step of right clicking on the class explorer tree in the IDE and selecting "New Class". They typing in the name in the wizard dialog. From that moment on a class is added - a cpp and an h file are added to the solution with matching class name and constructor code already there. Not much but it's a hell of a lot better than ding this god-awful thing yourself every time, wouldn't you say? Still, I saw these (I'll say again) \*seasoned\* developers adding classes \*manually\* with copy pasting files in the file system, renaming them, then removing unneeded code from the file (they were copying other cpp and h files from the existing solution. The same patterns happened when they had to add a new method to the class. They did "copy-paste" development and copied a method implementation, then moved on to the .h file and pasted the name there too. All the while they could just have right clicked on the class name in the explorer and chose the "add method" wizard. Same thing with adding a variable. Come on people! How could you not even try and see if this is possible? I would imagine that after doing so for the 1000th time you would say to yourself "hmm, is there a better way of maybe... automating this?" Now, these same people could not live without Visual-Assist - one of the only productivity Addins for Visual C++ 6.0. So it's not like they weren't productivity oriented - they just didn't try hard enough(or at all) to make their lives better. I find this quality quite amazing, frankly. To me, true "developers" not "programmers" are productivity seekers no less than they are "quality seekers". I see this sort of thing in a lot of places though. People are \*amazed\* when they see [Resharper](http://www.jetbrains.com/resharper) for the first time. People are \*amazed\* when they see that there is such a thing as [DSWatch](http://www.codeproject.com/csharp/DSWatch.asp), [Reflector](http://www.aisto.com/roeder/dotnet/), [CodeSmith](http://www.ericjsmith.net/codesmith/), [CodeSmart](http://www.axtools.com/) and many many more. People should **not** be amazed. They should be getting used to the fact that most problems today (productivity problems included) have been at least partially solved for most people. That means that if something is bugging you about how you do things, you're probably not the first one to feel that. Try and see if someone has a solution to this problem. Who knows, there might be one, and it might even be [totally free](http://www.testdriven.net/). ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Mar 20, 2005 ### [Taking notice of Lucene: A searching & indexing library](https://osherove.com/blog/2005/3/20/taking-notice-of-lucene-a-searching-amp-indexing-library.html) - Mar 12, 2005 ### [\[CoolTool\] FinalBuilder 3.0 - the ultimate build management and automation tool](https://osherove.com/blog/2005/3/12/cooltool-finalbuilder-30-the-ultimate-build-management-and-a.html) - Mar 3, 2005 ### [\[Cool Tools\] Code metrics, dependencies and more metrics](https://osherove.com/blog/2005/3/3/cool-tools-code-metrics-dependencies-and-more-metrics.html) - Feb 21, 2005 ### [\[CoolTool\] WinDirStat](https://osherove.com/blog/2005/2/21/cooltool-windirstat.html) --- title: "the CSS maze" url: "https://osherove.com/blog/2005/3/11/the-css-maze.md" canonical: "https://osherove.com/blog/2005/3/11/the-css-maze.html" published: "2005-03-11T23:21:00" updated: "2005-03-11T23:21:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm sure lots of people would love to hire the web-designer who can write a full graphical maze with only CSS (no JavaScript!) (via LarkWare )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # the CSS maze By Roy Osherove March 11, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 11, 2005; technical details may be outdated. I'm sure lots of people would love to hire the web-designer who can write [a full graphical maze with only CSS](http://www.stunicholls.myby.co.uk/menu/amazing.html) (no JavaScript!) _(via [LarkWare](http://www.larkware.com/dg2/TheDailyGrind576.html))_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 12, 2005 ### [The Real Roy](https://osherove.com/blog/2005/3/12/the-real-roy.html) - Mar 12, 2005 ### [How most developers don't give a damn about productivity](https://osherove.com/blog/2005/3/12/how-most-developers-dont-give-a-damn-about-productivity.html) - Mar 1, 2005 ### [Met some nice people in Prague](https://osherove.com/blog/2005/3/1/met-some-nice-people-in-prague.html) - Feb 24, 2005 ### [Lesson of the day: don't be a pompous windbag](https://osherove.com/blog/2005/2/24/lesson-of-the-day-dont-be-a-pompous-windbag.html) --- title: "CLR Performance Q&A, and how it relates to unit testing and mock objects" url: "https://osherove.com/blog/2005/3/11/clr-performance-qampa-and-how-it-relates-to-unit-testing-and.md" canonical: "https://osherove.com/blog/2005/3/11/clr-performance-qampa-and-how-it-relates-to-unit-testing-and.html" published: "2005-03-11T23:01:00" updated: "2005-03-11T23:01:00" tags: [".Net Quotations", "Agile Related"] author: "Roy Osherove" description: "Over at CodeBetter.com , Raymond Lewallen has a nice post talking about CLR performance tips and tricks . The info is mainly from a CLR perf chat that was held lately, and you should really read some of the stuff in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CLR Performance Q&A, and how it relates to unit testing and mock objects By Roy Osherove March 11, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published March 11, 2005; technical details may be outdated. Over at [CodeBetter.com](http://codebetter.com/blogs), [Raymond Lewallen](http://codebetter.com/blogs/raymond.lewallen/) has a nice post talking about [CLR performance tips and tricks](http://codebetter.com/blogs/raymond.lewallen/archive/2005/03/09/59506.aspx). The info is mainly from a CLR perf chat that was held lately, and you should really read some of the stuff in there. I was actually asked to do a talk about performance the other day and declined it on the grounds that it's really not an area I am an expert on, which I plan to change. Getting back to the matter at hand, One of the questions posted there went like this: _Rico Mariani (Expert): Q: When refactoring code - are there performance penalties for over-'functionizing' an application?_ Surely, an important question. In fact, one of the things I do most often is refactor my code to have more clear and explicit functionality. It removes code duplicates and I'm all about the DRY principle (don't repeat yourself) personally. The answer was: _A: There sure can be. One of the guys that works on profiling tools here says that he sees -- in object oriented languages -- this tendancy to write what he calls "work averse functions." What he means by this is that everything is so factored that there are many many functions each of which does very little and then passes it on to the next function. In straight C programmers don't tend to code that way. The work-averse functions translate directly into much deeper callstacks and much more function call and return overhead. Partly because they're in the worst of all worlds... too big to be inlined yet not big enough to be doing meaty amounts of work. So be careful. Factoring is good but don't go crazy -- you get oophalism that way A: Yes. Definatelly. Too many short methods that do liitle work called deep on the callstack can significantly affect performance. You should be careful about overfactorizing methods that get called often (in deep callstak loops)_ When you think about it, it actually makes a lot of sense. Still, I'd hate to think that now refactoring might be considered "optional". Most of the applications I'm dealing with are not real-time applications. Sure, they have their performance requirements ("Customer should not wait two minutes for data screen to load" etc..) but usually I find performance and optimization to be last on my list (unless it's a core requirement). I do believe that better code readability and easier maintenance of your code a one of the most important goals we can set for ourselves as developers. The creation phase of an application is just step one in what is usually (and in most projects also painfully) along maintenance and feature addition lifetime for the new application. It's that part that we need to set our sites on no less than part one. If we don't we get to "Hell Stage". You know hell stage right? It's that stage where it's easier to rewrite the whole application or feature than it would be to maintain it. So when I read stuff like this I need to remind myself that refactoring is good, unless it's not. That is - refactoring should be the rule, and inlining your code should be the exception. If your application is in  such a stage where inlining methods is the one thing that will save it from performance hell, and it's not a real-time application - you might need to re-think your design, or think about a different way of optimizing it. I mean, if you're talking to the database, or your hard drive, you're immediately taking LOTS of time to do things. code inlining is the LEAST of your problems. Here's an interesting tidbit that happened to me some time ago. I was teaching C++ developers to do unit testing and test-driven development. It was an interesting class. On day two we started delving into the concept of "Mock Objects". Just a small intro on this: Mock objects are a way for us developers to "replace" existing application classes and objects with our own classes. This if beneficial for various testing scenarios, for example,  testing interactions between related objects, or replacing an expensive or time-consuming processing object with an empty shell that helps our tests run faster. Anyway. Mock objects (and most Mock object frameworks out there) require that the object that you would like to replace have a specific interface. It's a legitimate requirement because in order for use to be able to replace an object (without doing any late binding tricks) we need to support the public contract it defines: it's interface. One of the things the C++ developers told me was that this might pose a problem. A problem because using interfaces, objects would now not be calling directly into method pointers, but that another level of indirection would be added to the call stack and no code inlining could be done. This could seriously hurt performance, they said. Turns out that some of them were indeed real-time developers, but most of them were not. _(A little C++ technical info if you're interested. If not, skip this paragraph)_ One of the solutions to overcoming this in C++ would be to not use mock objects, but replace the library where the objects reside with your own library of objects (just before the LINK stage). That way calls are not virtual and can be inlined. I assured them that, except the real-time developers, the IT developers there had little to worry about. If their application is slow, it most probably is because of numerous reasons \*before\* even looking at the code inlining issue. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 8, 2005 ### [Defensive event publishing, a different approach](https://osherove.com/blog/2005/4/8/defensive-event-publishing-a-different-approach.html) - Apr 6, 2005 ### [Solving Binary serialization versioning conflicts - The HashTable problem](https://osherove.com/blog/2005/4/6/solving-binary-serialization-versioning-conflicts-the-hashta.html) - Feb 1, 2005 ### [Launcher: Clean auto-deployment and auto-updating code from Franklins.Net](https://osherove.com/blog/2005/2/1/launcher-clean-auto-deployment-and-auto-updating-code-from-f.html) - Jan 30, 2005 ### [Debugging VB6 binaries in Visual Studio .NET](https://osherove.com/blog/2005/1/30/debugging-vb6-binaries-in-visual-studio-net.html) --- title: "Natty Gur on Enterprise Architecture" url: "https://osherove.com/blog/2005/3/7/natty-gur-on-enterprise-architecture.md" canonical: "https://osherove.com/blog/2005/3/7/natty-gur-on-enterprise-architecture.html" published: "2005-03-07T05:55:00" updated: "2005-03-07T05:55:00" tags: ["Architecture"] author: "Roy Osherove" description: "Natty Gur has been blog-busy lately. His blog is a great start if you want to understand what Enterprise architecture means (not enterprise application, but from an organizational point of view). He's also contemplating…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Natty Gur on Enterprise Architecture By Roy Osherove March 7, 2005 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published March 7, 2005; technical details may be outdated. [Natty Gur](http://weblogs.asp.net/ngur) has been blog-busy lately. His blog is a great start if you want to understand what Enterprise architecture means (not enterprise application, but from an organizational point of view). He's also [contemplating starting an online user group for EA](http://weblogs.asp.net/ngur/archive/2005/03/06/386152.aspx). I'm not sure how that would work, but it sounds interesting! ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Apr 9, 2005 ### [\[Recording\] Roy Osherove on Software Factories and Domain Specific Languages](https://osherove.com/blog/2005/4/9/recording-roy-osherove-on-software-factories-and-domain-spec.html) - Mar 23, 2005 ### [Integration and interoperability resources](https://osherove.com/blog/2005/3/23/integration-and-interoperability-resources.html) - Mar 2, 2005 ### [Deep Indigo, Clemens style](https://osherove.com/blog/2005/3/2/deep-indigo-clemens-style.html) - Mar 2, 2005 ### [Updater is the new DCOM](https://osherove.com/blog/2005/3/2/updater-is-the-new-dcom.html) --- title: "Do you have a pre-built version of Mock++ handy?" url: "https://osherove.com/blog/2005/3/5/do-you-have-a-pre-built-version-of-mock-handy.md" canonical: "https://osherove.com/blog/2005/3/5/do-you-have-a-pre-built-version-of-mock-handy.html" published: "2005-03-05T21:44:00" updated: "2005-03-05T21:44:00" tags: ["Agile Related"] author: "Roy Osherove" description: "It's weird, but I can't find any pre-built version of the latest Mock++ (Mockpp) framework for C++. Since I'm not a C++ guru, I can't seem to be able to built it alone. If you yourself have done it or know of anyone…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Do you have a pre-built version of Mock++ handy? By Roy Osherove March 5, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published March 5, 2005; technical details may be outdated. It's weird, but I can't find any pre-built version of the latest [Mock++](http://mockpp.sourceforge.net/index-en.html) (Mockpp) framework for C++. Since I'm not a C++ guru, I can't seem to be able to built it alone. If you yourself have done it or know of anyone else that has pre built .lib versions of this (hopefully version 1.4 and up) to be used with unmanaged C++ (VS 6.0) that would be great. Just contact me or send it via email to **Mockpp at Osherove.com.** I used to have a buildable version (earlier one) but I can't seem to compile [the latest batch from SourceForge](http://sourceforge.net/project/showfiles.php?group_id=69135). any ideas/help would be appreciated. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Mar 20, 2005 ### [Easier legacy unit testing with TypeMock.NET](https://osherove.com/blog/2005/3/20/easier-legacy-unit-testing-with-typemocknet.html) - Mar 11, 2005 ### [CLR Performance Q&A, and how it relates to unit testing and mock objects](https://osherove.com/blog/2005/3/11/clr-performance-qampa-and-how-it-relates-to-unit-testing-and.html) - Mar 1, 2005 ### [Another one gets test-infected](https://osherove.com/blog/2005/3/1/another-one-gets-test-infected.html) - Feb 27, 2005 ### [Response to the test generation "bug" I posted about](https://osherove.com/blog/2005/2/27/response-to-the-test-generation-quotbugquot-i-posted-about.html) --- title: "Solving Binary serialization versioning conflicts" url: "https://osherove.com/blog/2005/3/3/solving-binary-serialization-versioning-conflicts.md" canonical: "https://osherove.com/blog/2005/3/3/solving-binary-serialization-versioning-conflicts.html" published: "2005-03-03T14:23:00" updated: "2005-03-03T14:23:00" tags: [".Net Original"] author: "Roy Osherove" description: "My friend, Jonathan Einav (His blog is, sadly, empty for now) just sent me this by email. It's a solution to a versioning problem he encountered, which he has made public for the community. This is a a nice approach to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Solving Binary serialization versioning conflicts By Roy Osherove March 3, 2005 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 3, 2005; technical details may be outdated. My friend, [Jonathan Einav](http://dotnetjunkies.com/WebLog/snow_master/)(His blog is, sadly, empty for now) just sent me this by email. It's a solution to a versioning problem he encountered, which he has made public for the community. This is a a nice approach to deal with binary de-serialization type version changes (and avoid the iterating "_Possible version mismatch. Type WindowsApplication1.MyClass has 3 members, number of members deserialized is 4"_  SerializationException ). Here's how he explains it:: Attached are the DeserializationDefaultValueAttribute.cs, DeserializationOldNameAttribute.cs, and the VersionSupportingBinaryFormatter.cs  I created a reflection surrogate that de-serialize objects using reflection on the current compiled type definition from the loaded SerializtionInfo. I “tricked”  the BinarySerializer by writing a binder that aside from returning the exact type he received he creates the reflection surrogate for every type that the Serializer is deserializing (wouldn’t it be nice if a simple add surrogate with typeof(object) would work…) Another trick I used for accessing private base class members values from the SerializationInfo.GetValue() is adding the base class name with a + on the recursive calls to the base classes (that’s how I saw the SerializationInfo  holds them, and for some reason it works….what ever happened to encapsulation…. (-: )      I also defined the: - DeserializationDefaultValueAttribute which can be placed above new fields that are added to new type definitions in order for the de-serialized new type instances from old type definitions will contain a default value (different from the one given by the CLR) - DeserializationOldNameAttribute which can be placed above a field that his name (not type!!!) was changed and we want the new field name to contain the old field value after deserialization. Simply use the VersionSupportingBinaryFormatter.Deserialize() from an IFormatter point of view within a catch block of a BinarySerializer Deserialize attempt that failed due to a type definition change. (Or you can use it all the time, though it is slower then the Binary Formatter because it uses reflection) This class was not fully tested yet, though it seems to be working fine in all scenarios that I have tested it (base classes, mutual references in the class graph, base private and protected value types and reference types etc). available at: [http://files.osherove.com/downloads/serialVersioning.zip](http://files.osherove.com/downloads/serialVersioning.zip) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 10, 2005 ### [\[Article\]Simplify Data Layer Unit Testing using Enterprise Services](https://osherove.com/blog/2005/5/10/articlesimplify-data-layer-unit-testing-using-enterprise-ser.html) - Apr 9, 2005 ### [\[Recording\] Roy Osherove on Software Factories and Domain Specific Languages](https://osherove.com/blog/2005/4/9/recording-roy-osherove-on-software-factories-and-domain-spec.html) - Jan 23, 2005 ### [New stuff on Team Agile: XtUnit and Interception block with basic documentation](https://osherove.com/blog/2005/1/23/new-stuff-on-team-agile-xtunit-and-interception-block-with-b.html) - Jan 8, 2005 ### [\[Article\] Defensive event publishing in .NET](https://osherove.com/blog/2005/1/8/article-defensive-event-publishing-in-net.html) --- title: "[Cool Tools] Code metrics, dependencies and more metrics" url: "https://osherove.com/blog/2005/3/3/cool-tools-code-metrics-dependencies-and-more-metrics.md" canonical: "https://osherove.com/blog/2005/3/3/cool-tools-code-metrics-dependencies-and-more-metrics.html" published: "2005-03-03T12:38:00" updated: "2005-03-03T12:38:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Ohad is much a tool freak like me, only less in the IDE space. He just posted a very useful blurb about some tools a lot of projects could use. Do you find yourself asking the following questions ? – Which code most…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool Tools\] Code metrics, dependencies and more metrics By Roy Osherove March 3, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published March 3, 2005; technical details may be outdated. [Ohad](http://weblogs.asp.net/israelio) is much a tool freak like me, only less in the IDE space. He just posted a very useful blurb about some tools a lot of projects could use. **_Do you find yourself asking the following questions ?_** _– Which code most needs a code review, refactoring, or unit tests? – Which developers need more mentoring in design and coding practices?_ _These questions were bothering me in almost every project I was working on… luckily I've found several \[free\] tools that made my day !_ [Read Ohad's blog post](http://weblogs.asp.net/israelio/archive/2005/03/02/383867.aspx) [](http://weblogs.asp.net/israelio/archive/2005/03/02/383867.aspx) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Mar 12, 2005 ### [\[CoolTool\] FinalBuilder 3.0 - the ultimate build management and automation tool](https://osherove.com/blog/2005/3/12/cooltool-finalbuilder-30-the-ultimate-build-management-and-a.html) - Mar 12, 2005 ### [How most developers don't give a damn about productivity](https://osherove.com/blog/2005/3/12/how-most-developers-dont-give-a-damn-about-productivity.html) - Feb 21, 2005 ### [\[CoolTool\] WinDirStat](https://osherove.com/blog/2005/2/21/cooltool-windirstat.html) - Jan 26, 2005 ### [JetBrains .NET Profiler](https://osherove.com/blog/2005/1/26/jetbrains-net-profiler.html) --- title: "Deep Indigo, Clemens style" url: "https://osherove.com/blog/2005/3/2/deep-indigo-clemens-style.md" canonical: "https://osherove.com/blog/2005/3/2/deep-indigo-clemens-style.html" published: "2005-03-02T23:02:00" updated: "2005-03-02T23:02:00" tags: ["Architecture"] author: "Roy Osherove" description: "Clemens is doing a great blog series on an introduction to Indigo . I should read it." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Deep Indigo, Clemens style By Roy Osherove March 2, 2005 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published March 2, 2005; technical details may be outdated. Clemens is doing a great blog series on [an introduction to Indigo](http://staff.newtelligence.net/clemensv/PermaLink,guid,41d6ef20-e3e1-4277-bd3e-2cf414d209bd.aspx). I should read it. ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Mar 23, 2005 ### [Integration and interoperability resources](https://osherove.com/blog/2005/3/23/integration-and-interoperability-resources.html) - Mar 7, 2005 ### [Natty Gur on Enterprise Architecture](https://osherove.com/blog/2005/3/7/natty-gur-on-enterprise-architecture.html) - Mar 2, 2005 ### [Updater is the new DCOM](https://osherove.com/blog/2005/3/2/updater-is-the-new-dcom.html) - Jan 23, 2005 ### [Reminder: .Net astronauts user group meeting today](https://osherove.com/blog/2005/1/23/reminder-net-astronauts-user-group-meeting-today.html) --- title: "Updater is the new DCOM" url: "https://osherove.com/blog/2005/3/2/updater-is-the-new-dcom.md" canonical: "https://osherove.com/blog/2005/3/2/updater-is-the-new-dcom.html" published: "2005-03-02T23:00:00" updated: "2005-03-02T23:00:00" tags: ["Architecture"] author: "Roy Osherove" description: "I know I've been somewhat \"Agile-Focused\" these past few months. I almost feel bad for all those people who read my blog for cool technical stuff. I've become a bore on non-agile stuff, haven't I? Well, that's how I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Updater is the new DCOM By Roy Osherove March 2, 2005 In [Architecture](https://osherove.com/blog/category/architecture) **Historical article** · Originally published March 2, 2005; technical details may be outdated. I know I've been somewhat "Agile-Focused" these past few months. I almost feel bad for all those people who read my blog for cool technical stuff. I've become a bore on non-agile stuff, haven't I? Well, that's how I feel anyway. The main reason is that I've been busy building up my new business. It's actually going quite _great._ to the point that I have even less time than before, actually. I did get to do some tech stuff today - I had to implement the updater application block on a 2003 project. Boy, did that hurt. It still does not work perfectly, mainly because of various configuration issues. Is the updater application block the new DCOM? (useful, but you need a free week to make it work). So, anyway. I hope to have some time for a few tips in that regard during the weekend. I hope. Don't hate me. ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Mar 7, 2005 ### [Natty Gur on Enterprise Architecture](https://osherove.com/blog/2005/3/7/natty-gur-on-enterprise-architecture.html) - Mar 2, 2005 ### [Deep Indigo, Clemens style](https://osherove.com/blog/2005/3/2/deep-indigo-clemens-style.html) - Jan 23, 2005 ### [Reminder: .Net astronauts user group meeting today](https://osherove.com/blog/2005/1/23/reminder-net-astronauts-user-group-meeting-today.html) - Jan 23, 2005 ### [About architecture and astronauts](https://osherove.com/blog/2005/1/23/about-architecture-and-astronauts.html) --- title: "Another one gets test-infected" url: "https://osherove.com/blog/2005/3/1/another-one-gets-test-infected.md" canonical: "https://osherove.com/blog/2005/3/1/another-one-gets-test-infected.html" published: "2005-03-01T22:33:00" updated: "2005-03-01T22:33:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Chris McKenzie's blog has a post about his first experience with Test Driven Development on an existing ASP>NET project. I suggest you go read it , because when was the last time you have uttered the sentence: \"I am so…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another one gets test-infected By Roy Osherove March 1, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published March 1, 2005; technical details may be outdated. [Chris McKenzie's](https://osherove.com/taganov/) blog has a [post](http://weblogs.asp.net/taganov/archive/2005/03/01/382687.aspx) about his first experience with Test Driven Development on an existing ASP>NET project. [I suggest you go read it](http://weblogs.asp.net/taganov/archive/2005/03/01/382687.aspx), because when was the last time you have uttered the sentence: **_"I am so looking forward to new enhancements on these old projects I inherited."_** ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Mar 11, 2005 ### [CLR Performance Q&A, and how it relates to unit testing and mock objects](https://osherove.com/blog/2005/3/11/clr-performance-qampa-and-how-it-relates-to-unit-testing-and.html) - Mar 5, 2005 ### [Do you have a pre-built version of Mock++ handy?](https://osherove.com/blog/2005/3/5/do-you-have-a-pre-built-version-of-mock-handy.html) - Feb 27, 2005 ### [Response to the test generation "bug" I posted about](https://osherove.com/blog/2005/2/27/response-to-the-test-generation-quotbugquot-i-posted-about.html) - Feb 26, 2005 ### [How big organizations (surprisingly) always advocated test driven development](https://osherove.com/blog/2005/2/26/how-big-organizations-surprisingly-always-advocated-test-dri.html) --- title: "Agile Israel next meeting infromation and other important news" url: "https://osherove.com/blog/2005/3/1/agile-israel-next-meeting-infromation-and-other-important-ne.md" canonical: "https://osherove.com/blog/2005/3/1/agile-israel-next-meeting-infromation-and-other-important-ne.html" published: "2005-03-01T22:23:00" updated: "2005-03-01T22:23:00" tags: ["Community"] author: "Roy Osherove" description: "If you arn't registered on the new Agile Israel mailing list - I just sent out this important letter to the list. If you'd like me to add your email to the list, send me an email to [email removed]. Hi…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Israel next meeting infromation and other important news By Roy Osherove March 1, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published March 1, 2005; technical details may be outdated. If you arn't registered on the new Agile Israel mailing list - I just sent out this important letter to the list. If you'd like me to add your email to the list, send me an email to **\[email removed\].** ** ## _Hi Folks._ On behalf of Udi Dahan and myself, I’d like to personally welcome you to the all-new mailing list for the Agile Israel user group. I have some announcements to make so bear with me because this turned out to be quite a long email (but it’s really important that you read it). 1. Our next meeting 2. Moving to Microsoft Israel 3. TDD and other workshops 4. New mailing list 5. New (basic) site 6. Deciding on meeting topics 7. Your feedback required ## _Our next meeting_ First of all, the next meeting of the group will be at March, 23rd at 17:30.  The meeting will take place at the Microsoft Israel headquarters. I’m _excited_ to announce that we are going to have a special guest in this month’s meeting – Johanna Rothman ([www.JRothman.com](http://www.jrothman.com/)). She writes two of my favorite blogs and you can see them on her site’s main page on the top left. She’ll be talking about “9 steps to making your project Agile” and this should be a fun lecture because it’s going to be a little interactive.  After that we want to maybe have a discussion and another lecture. Still not decided. Your feedback is required on this. ### About Johanna Johanna Rothman is a well-known consultant, speaker, and author on managing high-technology product development. During her decade-long consulting career, she has enabled managers, teams, and organizations become more effective applying her pragmatic approaches to the issues of project management, risk management, and people management. She’s helped Engineering organizations, IT organizations, and startups hire, manage, and release successful products faster. Her assessment reports have helped managers and teams create and execute action plans that help them improve their projects and their processes. She is a sought-after speaker and teacher in the areas of project management, people management, and problem-solving. Johanna has written over 100 articles and papers and is now a columnist for Fast Company’s online career center, Software Development, Computerworld.com, and StickyMinds.com. Johanna is the author of the highly acclaimed Hiring the Best Knowledge Workers, Techies & Nerds, and is the coauthor of Corrective Action for the Software Industry. Johanna is also a host and session leader at the Amplifying Your Effectiveness (AYE) conference. ### Meeting description 23/3/05  (there is still not regular meeting schedule – will update as we have one) 17:30 – 18:00 – Assembly, Networking and open discussion 18:00 – 19:30 – 9 Steps to Agile Projects Break 19:45 – 21:00 – TBD  (We need to decide what we want. See bottom of this email) ### Location Microsoft Israel 2 Hapnina St, Raanana (09) 7625-100 Floor 0 , Dekel Room It is the new building across from Amdocs. After the first traffic circle, there is an area for (free) parking on the right. ## _Moving to Microsoft Israel_ This might come as a surprise to some of you (especially people coming from the open source crowd) but I’ve decided to host the group at the Microsoft Israel HQ after all.             There are several reasons for this, the first one being very practical - We ran out of room. The first meeting featured 32 attendees. That’s pretty good. It’s actually much better than good and exceeded expectations. 42 “promised” – 32 showed up, and thank god for that. The room we had at SELA was practically full, maybe allowing for 2-3 more people at most to squeeze in had they showed up. Following that meeting I have been scraping to find a larger place to host the group (which is why there was no meeting last month) and Microsoft is one of the few places that has such rooms large enough to host us, and that would actually let us use them. However, Microsoft was not the only one that would let us “host” the group and this leads nicely to the fact that we have a choice of place if we don’t find it as “open” as we expect. I understand your concern as to what topic we may or may not be able to talk about there, but let me assure you that I will do my best to make sure that we can have open and honest discussions about Agile development that will be as platform agnostic as possible. With that I’d remind you that many of the people in the group right now come from a Microsoft oriented background. I personally intend to present not only on theoretical issues, but also on technical topics using .NET, as that is the main platform I work on these days. That does not mean, however, that we can’t discuss other topics. In fact, Udi and I are planning a meeting schedule that would allow us to increase the number of topics in a single meeting, thus providing more value to a more broad audience by making the presentations and discussions shorter. This is a test run to see if the group and Microsoft can work together without too many “bugs”. You have my word that if it seems to be too restrictive, we will move the group to a different place, probably not far away which has all the room we need and perhaps less restrictions. That said – I think Microsoft is a great place to host this group and would be my first choice because I came to know the organization as a community evolver – communities thrive around Microsoft, and they get lots of help. ## _TDD and other workshops_ I’m still planning on hosting TDD workshops at SELA every month or so. If any of you would like to help me with it (training, helping out etc.. contact me) send me an email directly to Roy at AgileIsrael.com or to the list. I need people who have some free time to make sure are the screws are tightened and maybe even help out as a trainer in the groups (thus getting some valuable first hand knowledge and technique from me to make sure they are the “aces” in the class). If you’d like to attend the next workshop in TDD, reply on this mailing list. There are no dates yet, but I want to have a full list ready for when we do. Specify whether you would like to take the “advanced” or “basic”  workshop. ## _New mailing list_ We have a new mailing list dedicated to the group. You can see an archive of the mailing list at [http://list.agileisrael.com/list](http://list.agileisrael.com/list) . In fact, you’re getting this letter through that mailing list. Since it’s a mailing list, its main purpose is to share knowledge and ask questions. You can send an email to the list by using the address: list at agileisrael.com . Note that only email addresses that are registered with the mailing list can send emails. If you’d like to be removed from the list or update your email address, send me an email to me or Udi  at Roy atAgileIsrael.com  or udi at agileisrael.com . The list is not using Yahoo or Google – it is a private server and thus should have less spam messages. I’ll post instructions on automatically adding or removing yourself from the list in the near future. In the meantime – just as me or Udi. ## _New (basic) site_ Our new site is up at [www.AgileIsrael.com](http://www.agileisrael.com/) . It’s still just in raw form, but it will hopefully get bigger and better with more information, news and resources. If you’d like to help us out with maintaining the site, add news items, schedules and basically make it your pet project, contact me and tell me about it. There’s nothing I’d like more that for this site and group to be supported by its members. ## _Deciding on meeting topics_ I would like us to use this list to decide on meeting topics. Specifically – what topics would you like to hear about that can be done in 1.5 hours? We can also divide it to two or three short sessions about different areas. If you’d like to speak about something or suggest an idea – reply to the list. I’m anxious. Personally I can “finish” the lecture I started in the first meeting about Agile concepts. We can also do a more technical presentation about .NET mock objects if you’d like.  I would also like to have some open discussion time on problems and solutions you’ve been facing. Kind like Q&A – but not 10 minutes, but 30-45 minutes. What do you think? ## _Your feedback required_ These are first steps. I expect you to write to the list with suggestions if you don’t like anything, or have suggestions for improvement.  I also expect this to be the place we use to formalize our future meetings. So if anyone would like to present anything to the group, and I mean \*anything\* in any platform relating to Agile, send an email. I promise that I will not let good information go without a fight.             It’s up to us if we want to make this a vibrant community that learn from each other, or a dead zone. I do think there is a great basis for community in Agile methodologies, crossing platforms and languages. We all want to make better software. We all want to be proud of what we do and look our customer eye to eye when we say “things work”. It starts here. And I can’t do this alone.  I expect you to participate, not just listen, because maybe you yourself have learned some important lessons that all of us should hear.  Make yourself heard. I encourage you to speak even if you’ve never spoken before. I encourage to write even if you’ve never written before. And I expect us all to have a whole lot of fun! Here’s to a great productive groups of interesting people! Cheers,

Roy Osherove

 

Udi Dahan

** ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Apr 3, 2005 ### [VB user group meeting this week: Diving into ADO.NET 2.0 and VS 2005 Data features](https://osherove.com/blog/2005/4/3/vb-user-group-meeting-this-week-diving-into-adonet-20-and-vs.html) - Mar 12, 2005 ### [Catch me at one of these upcoming user group events this month](https://osherove.com/blog/2005/3/12/catch-me-at-one-of-these-upcoming-user-group-events-this-mon.html) - Feb 21, 2005 ### [IVBUG: Multithreaded UIs with VB.NET](https://osherove.com/blog/2005/2/21/ivbug-multithreaded-uis-with-vbnet.html) - Feb 21, 2005 ### [Israel .NET architects user group: Patterns, practices and online resources for architects](https://osherove.com/blog/2005/2/21/israel-net-architects-user-group-patterns-practices-and-onli.html) --- title: "Met some nice people in Prague" url: "https://osherove.com/blog/2005/3/1/met-some-nice-people-in-prague.md" canonical: "https://osherove.com/blog/2005/3/1/met-some-nice-people-in-prague.html" published: "2005-03-01T20:19:00" updated: "2005-03-01T20:19:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I got to meet some really interesting people while I was in Prague. Take Ernst Kuschke for example. Ernst is from South Africa and he's a C# MVP. He's also an avid fan of Agile development and is in fact practicing it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Met some nice people in Prague By Roy Osherove March 1, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 1, 2005; technical details may be outdated. I got to meet some really interesting people while I was in Prague. Take Ernst Kuschke for example. Ernst is from South Africa and he's a C# MVP. He's also an avid fan of Agile development and is in fact practicing it with his team at work. [Here's his Blog](http://dotnet.org.za/ernst/). Ernst actually recognized me at one of the meetings and came to say hello. We got to talking about various opportunities of me coming over to maybe do some talks as part of INETA. Who knows, it just might work out. I also got to meet a guy named Francois. He's from Ghana, and is the only MVP from his country. How cool is that? I also got to meet people from all over the middle east/east Europe regions including places which are very close to Israel like Greece. Also met some cool people from Croatia which, one of them even was kind enough to let me use his room for shower and a quick nap after we already had to do a checkout.  I'd like to thank him by name and link but unfortunately I lost some of the business cards to my trip back home. So, if you're reading this, Please contact me. He's a SQL MVP and gave a fine talk about watch-outs in Yukon for developers. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 12, 2005 ### [How most developers don't give a damn about productivity](https://osherove.com/blog/2005/3/12/how-most-developers-dont-give-a-damn-about-productivity.html) - Mar 11, 2005 ### [the CSS maze](https://osherove.com/blog/2005/3/11/the-css-maze.html) - Feb 24, 2005 ### [Lesson of the day: don't be a pompous windbag](https://osherove.com/blog/2005/2/24/lesson-of-the-day-dont-be-a-pompous-windbag.html) - Feb 21, 2005 ### [Congratulations to Yosi Taguri!](https://osherove.com/blog/2005/2/21/congratulations-to-yosi-taguri.html) --- title: "The new Larkware.com" url: "https://osherove.com/blog/2005/3/1/the-new-larkwarecom.md" canonical: "https://osherove.com/blog/2005/3/1/the-new-larkwarecom.html" published: "2005-03-01T18:06:00" updated: "2005-03-01T18:06:00" tags: ["Blogging", "Cool sites"] author: "Roy Osherove" description: "It looks like one of my favorite sites - Larkware.com has taken on a new initiative - write more, and also get some real money for it. Here's the blurb from the brand new spiffy home page : \"...As many of you know, I've…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The new Larkware.com By Roy Osherove March 1, 2005 In [Blogging](https://osherove.com/blog/category/blogging), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published March 1, 2005; technical details may be outdated. It looks like one of my favorite sites - Larkware.com has taken on a new initiative - write more, and also get some real money for it. Here's the blurb from the [brand new spiffy home page](http://www.larkware.com/): _"...As many of you know, I've been writing regular software reviews and editorial content for ADT Magazine for some months now. But working within some of the editorial limitations there has not always been easy, and I haven't been able to do precisely what I wanted on their Web pages or in the associated RSS feed. As it happens, yesterday was my last day writing for ADT. Instead of looking for another publication to pick up that content, I've come to a decision: today is the first day that I'm writing with myself as the publisher. From now on, you'll be seeing longer reviews and rants on the front page of Larkware, along with the short links and news bits you've grown used to in the Daily Grind._ _You will notice one change in the Daily Grind itself: sponsorship links. These are paid notices from software vendors who want to support my work here. I hope you'll at least consider reading what they have to say and following their links. You won't find any banner advertising on Larkware. "_ Congratulations and good luck, Mike! I'll definitely continue reading the site - It's always been one of the main news sources for me, and it looks like it's only gonna get better. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 19, 2005 ### [A very nice .NET architecture blog discovered](https://osherove.com/blog/2005/6/19/a-very-nice-net-architecture-blog-discovered.html) - Apr 15, 2005 ### [Weird and interesting Blog of the week - Anarchia](https://osherove.com/blog/2005/4/15/weird-and-interesting-blog-of-the-week-anarchia.html) - Jan 28, 2005 ### [Is CodeBetter.Com to become the new .NETWeblogs?](https://osherove.com/blog/2005/1/28/is-codebettercom-to-become-the-new-netweblogs.html) - Jan 14, 2005 ### [Get an MSN alert whenever this blog updates](https://osherove.com/blog/2005/1/14/get-an-msn-alert-whenever-this-blog-updates.html) --- title: "Response to the test generation \"bug\" I posted about" url: "https://osherove.com/blog/2005/2/27/response-to-the-test-generation-quotbugquot-i-posted-about.md" canonical: "https://osherove.com/blog/2005/2/27/response-to-the-test-generation-quotbugquot-i-posted-about.html" published: "2005-02-27T00:50:00" updated: "2005-02-27T00:50:00" tags: ["Agile Related"] author: "Roy Osherove" description: "After I've written about the broken feature in the VS 2005 Testing features in regards to code generation and refactoring, the developer of that feature at Microsoft, Ryan Milligan, put the following comment on the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Response to the test generation "bug" I posted about By Roy Osherove February 27, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published February 27, 2005; technical details may be outdated. After I've written about the [broken feature in the VS 2005](http://weblogs.asp.net/rosherove/archive/2005/02/22/377698.aspx) Testing features in regards to code generation and refactoring, the developer of that feature at Microsoft, Ryan Milligan, put the following comment on the blog. I thought it was worth a separate post though (links in the text were added by me): _Hello everyone, I'm the dev for this feature, and I just wanted to clarify a few points on this issue. First of all, the generated tests will only use those wrapper classes (officially, we call them "private accessors") if the class being tested is non-public, or if you selected a non-public member to test. If your class is public, then the "target" variable in the generated test method will be an instance of the type being tested. If it's not public, then we'll use the first public type in its inheritance hierarchy. If the class is public but the member we need to invoke is private, then we'll still declare target as your type, and then we'll create a separate variable to store an accessor created from the target, and invoke the member on \*that\*. To sum up, if your type is public, there will always be a variable of that type in the generated test, and if you use Generate Method Stub on it, then the method will be generated in the expected place. We expect people who use private accessors in their hand-written tests to follow the same pattern. Unfortunately, it's unlikely that we'll be able to forward refactoring operations on private accessors to the code under test, or vice versa (so that if you Reorder Parameters on your code-under-test, for example, your test code that uses a private accessor will be fixed up as well). For now, we attempt to mitigate the problem by using private accessors only where necessary -- public members don't show up on private accessors (unless the type itself is private, in which case it's not really a public member to begin with), so all the refactoring features should simply work as expected for public things (even if we have to call a private constructor to create the object, we still declare the variable as the public type and only use the accessor to call the constructor itself), and you can't get cross-project refactoring on non-public members today anyway because they're not exposed to other projects, so you're not really "losing" anything by using the private accessors. That said, we would love to implement this feature, and it's definitely on the list of features to investigate for the next version. We've also done a lot of thinking about the brittleness of private accessors. We plan to investigate a feature for this version that will result in private accessors being automatically updated as your code changes (or at least when you compile, the actual details aren't finalized yet). This means that, while refactoring still won't work for private methods (see above comment about how it doesn't work today in that situation anyway), at least you'll get meaningful compile errors when your private methods change, which you can then fix normally. The plans for this change are still tentative and we're not sure yet if it will be doable, but every customer [that asks for this feature](http://labs.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=5374f554-d222-44bb-b6ee-ca7cde6fe069) makes it more likely to happen, so please send in your vote on whether you think this would be useful. We really appreciate the feedback. Thank you!_ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Mar 5, 2005 ### [Do you have a pre-built version of Mock++ handy?](https://osherove.com/blog/2005/3/5/do-you-have-a-pre-built-version-of-mock-handy.html) - Mar 1, 2005 ### [Another one gets test-infected](https://osherove.com/blog/2005/3/1/another-one-gets-test-infected.html) - Feb 26, 2005 ### [How big organizations (surprisingly) always advocated test driven development](https://osherove.com/blog/2005/2/26/how-big-organizations-surprisingly-always-advocated-test-dri.html) - Feb 26, 2005 ### [Test Driven Development proves useful at Microsoft](https://osherove.com/blog/2005/2/26/test-driven-development-proves-useful-at-microsoft.html) --- title: "How big organizations (surprisingly) always advocated test driven development" url: "https://osherove.com/blog/2005/2/26/how-big-organizations-surprisingly-always-advocated-test-dri.md" canonical: "https://osherove.com/blog/2005/2/26/how-big-organizations-surprisingly-always-advocated-test-dri.html" published: "2005-02-26T23:33:00" updated: "2005-02-26T23:33:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Large organizations have to deal a lot with process. They have to or nothing would get done. On the other hand, too much process can halt an organization from going anywhere. That's why trying to implement Agile methods…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How big organizations (surprisingly) always advocated test driven development By Roy Osherove February 26, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published February 26, 2005; technical details may be outdated. Large organizations have to deal a lot with process. They have to or nothing would get done. On the other hand, too much process can halt an organization from going anywhere. That's why trying to implement Agile methods in a large organization is very scary for the stakeholders up the tree. However, I was pleasantly surprised to find organizations that, despite the "rebellious" nature of Test Driven development have found it to be acceptable from the get-go. That is, talking and explaining to stakeholders such as the testing-managers and methodology experts in the company about TDD, they said one thing: "That's what we've been trying to get people to do all along". Here's how. Many of these large organizations have training facilities and managers that train the coders to do the job the way the company thinks is best. The methodologists set the material. For testing, they usually get together with testing experts and decide on the best method of implementing better code quality using testing. Such organizations will usually teach Unit testing as a theory and practice, only in a manual manner. In these courses they teach about white and black box unit testing, verification methods and more. Developers are taught to do the testing manually and enter the test steps into 3rd party test managers, and perform the tests before and after the code works. Yes, you read it right. They are encouraged to write the tests **before** the feature is implemented. **Test Driven development** - not just hype - proven methodology. The problem is that _implementing_ this in a non-automated way is too hard for any developer to do well, if at all. So many developers simply skip it meaning product is tested less and quality diminishes. So - the things I teach  - doing TDD in the developer world, using automated frameworks, is just the thing for such organizations. It's the real-world way of implementing the methodology they have been teaching all along. When I first realized this I was totally surprised. I thought organizations would frown upon such ideas, and it turns out these ideas have been part of the big methodologies as well for a long time. They just haven't found a way to make people do them. The frameworks we have today are a bridge between the organization's and the developer's wishes  for better quality, and the reality of time limits. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Mar 1, 2005 ### [Another one gets test-infected](https://osherove.com/blog/2005/3/1/another-one-gets-test-infected.html) - Feb 27, 2005 ### [Response to the test generation "bug" I posted about](https://osherove.com/blog/2005/2/27/response-to-the-test-generation-quotbugquot-i-posted-about.html) - Feb 26, 2005 ### [Test Driven Development proves useful at Microsoft](https://osherove.com/blog/2005/2/26/test-driven-development-proves-useful-at-microsoft.html) - Feb 21, 2005 ### [TDD and test generation in VS 2005 can be annoying and tricky if you don't watch out](https://osherove.com/blog/2005/2/21/tdd-and-test-generation-in-vs-2005-can-be-annoying-and-trick.html) --- title: "Test Driven Development proves useful at Microsoft" url: "https://osherove.com/blog/2005/2/26/test-driven-development-proves-useful-at-microsoft.md" canonical: "https://osherove.com/blog/2005/2/26/test-driven-development-proves-useful-at-microsoft.html" published: "2005-02-26T22:50:00" updated: "2005-02-26T22:50:00" tags: ["Agile Related"] author: "Roy Osherove" description: "One of the coolest things I got to find out today from the PM of the MSBuild product, Kieran Mockford, is that development on the next version of MSBuild has been done using Test Driven Development. Yep, Write a test…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven Development proves useful at Microsoft By Roy Osherove February 26, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published February 26, 2005; technical details may be outdated. One of the coolest things I got to find out today from the PM of the MSBuild product, Kieran Mockford, is that development on the next version of MSBuild has been done using Test Driven Development. Yep, Write a test that fails, make it work, refactor. In fact, since it started long before Team System, they used NUnit to develop the unit tests. Kieren informed me that he considers to be a great help to the product and he's very happy with this method of working. He's a great guy and very interesting to talk to. This just goes to show you that this "hype" is not just buzz words flying around. Its being done by real people on real projects, even at the largest scale, and it proves itself every day. As for MSBuild, One of the main concerns I had was whether we're going to get a good configuration tool to go with it. The current answer seems to be "no", but from non-official discussion it looks as if such a thing is being considered one way or the other. As Kieran will be doing a talk tomorrow about Team System, I'll try to get him to do [a small interview](http://teamagile.com/mainpages/interviews.html) with me about TDD and MSBuild. We'll see. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Feb 27, 2005 ### [Response to the test generation "bug" I posted about](https://osherove.com/blog/2005/2/27/response-to-the-test-generation-quotbugquot-i-posted-about.html) - Feb 26, 2005 ### [How big organizations (surprisingly) always advocated test driven development](https://osherove.com/blog/2005/2/26/how-big-organizations-surprisingly-always-advocated-test-dri.html) - Feb 21, 2005 ### [TDD and test generation in VS 2005 can be annoying and tricky if you don't watch out](https://osherove.com/blog/2005/2/21/tdd-and-test-generation-in-vs-2005-can-be-annoying-and-trick.html) - Feb 21, 2005 ### [CxxTest for C++ - easier unit testing?](https://osherove.com/blog/2005/2/21/cxxtest-for-c-easier-unit-testing.html) --- title: "Lesson of the day: don't be a pompous windbag" url: "https://osherove.com/blog/2005/2/24/lesson-of-the-day-dont-be-a-pompous-windbag.md" canonical: "https://osherove.com/blog/2005/2/24/lesson-of-the-day-dont-be-a-pompous-windbag.html" published: "2005-02-24T13:00:00" updated: "2005-02-24T13:00:00" tags: ["Off Topic"] author: "Roy Osherove" description: "One of the things that I was totally surprised with when I started working with large organizations as a trainer was that their training staff had different ideas as to what makes for a solid, qualified and standardized…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Lesson of the day: don't be a pompous windbag By Roy Osherove February 24, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 24, 2005; technical details may be outdated. One of the things that I was totally surprised with when I started working with large organizations as a trainer was that their training staff had different ideas as to what makes for a solid, qualified and standardized presentation. There I was, showing them some of the materials, and I get back a "this needs some work" or "this wouldn't fly here". That is  -the process is so ingrained in every part of the procedure that even things which are supposed to be customizable and flexible like presentations (heck, some lectures I've seen don't even have powerpoint files, or just one slide, and they rocked) gets "standardized". I was too quick to react. I let my senses take hold of me and began sort of an argument over how no one should ever tell anyone else which slides work, which don't and all these sorts of things. If I had just sat down and thought for 5 minutes over it, I would have figured out that -  If making a few changes to the slide is what makes them happy - do it. It's their money -  If what you're saying is really so important you can always "black out" the screen by pressing "B" or "W" mid way so people listen to you, and not read the slide behind you. - You just might learn something, you pompous windbag, Roy. They handed me a format of presentations they used before and I looked at it. It didn't look half bad. Certainly, I can meet these standards and even learn something in the process. **Lesson of the day**: When someone calls you out on the quality of your work - they just might be right. That's not to say what I had until then was bad. It just means it didn't fit **that organizations' view** of what training looks like. Live and learn. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 11, 2005 ### [the CSS maze](https://osherove.com/blog/2005/3/11/the-css-maze.html) - Mar 1, 2005 ### [Met some nice people in Prague](https://osherove.com/blog/2005/3/1/met-some-nice-people-in-prague.html) - Feb 21, 2005 ### [Congratulations to Yosi Taguri!](https://osherove.com/blog/2005/2/21/congratulations-to-yosi-taguri.html) - Feb 7, 2005 ### [I'm not really here, sorry.](https://osherove.com/blog/2005/2/7/im-not-really-here-sorry.html) --- title: "TDD and test generation in VS 2005 can be annoying and tricky if you don't watch out" url: "https://osherove.com/blog/2005/2/21/tdd-and-test-generation-in-vs-2005-can-be-annoying-and-trick.md" canonical: "https://osherove.com/blog/2005/2/21/tdd-and-test-generation-in-vs-2005-can-be-annoying-and-trick.html" published: "2005-02-21T23:42:00" updated: "2005-02-21T23:42:00" tags: ["Agile Related"] author: "Roy Osherove" description: "- VS 2005 is cool. You get great Intellisense and there's a even a nice refactoring that lets you create method stubs when you write code that uses a method that does not exists. - VS 2005 also has a great feature for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD and test generation in VS 2005 can be annoying and tricky if you don't watch out By Roy Osherove February 21, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published February 21, 2005; technical details may be outdated. \- VS 2005 is cool. You get great Intellisense and there's a even a nice refactoring that lets you create method stubs when you write code that uses a method that does not exists. \- VS 2005 also has a great feature for unit testing that allows you to create unit tests for existing classes by simply Right clicking on the classes ans selecting "Create tests". \- When you do this VS 2005 also adds another feature in the unit testing framework that creates a wrapper object for your test class. This wrapper object uses reflection to exposes any public and PRIVATE methods of your tested class as if they were public (the merits of this approach can be debated to death, no doubt. Personally, I'm against it). That means all your tests (that were generated) will use the \*wrapper\* object in the code, and not the actual production code. Now - couple all these three features together and what do you get? Imagine you just generated a test for your class, and you want to drive the features of this class in a test-driven manner, that is, you want to first write tests that fail, and only then write the production code to make them work. So, you write a line of code in a new test that uses the wrapper object that was generated for you by the test framework. Suppose you want to create a method named "add" on a calculator object. your code could look like this: \[TestMethod\] public void TestAdd() {    CalculatorWrapper calc = new CalculatorWrapper();     int result = calc.Add(1,2);       Assert.AreEqual(3,result); } obviously this test won't compile, but! now we can use feature number 1 in the above list: with right click on the "calc.Add" line and select "implement stub". What do you expect should happen? Yeah. That wouldn't work. Because the actually stub would be added to the \*wrapper\* object that was generated for you, and not to the actually class. So now you need to manually add the method to the class or not use the wrapper object at all. Let's say you want to continue using the wrapper object, you then manually add the empty method to the class. The test will still fail! Remember that you implemented the stub automatically in the wrapper object? the default template for an empty method stub throws a System.NotimplementedException. Yes, you now need to manually added code in the wrapper object to make sure it calls the right method on your actual tested calculator object. since all that code uses reflection, that could get messy fast. In short - TDD and automatically generated wrapper objects don't mix too well in the current versions of VS 2005. Beware. You usually do TDD and should do it on the real object. Wrapper objects should stay where they belong - on tests that you generated. If you think I'm right -[go and vote on this missing functionality in the product feedback site](http://labs.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=5374f554-d222-44bb-b6ee-ca7cde6fe069) So what happens if you DO want to write tests for private methods? well, than you can use the wrapper, but make sure you re-generate it every time you refactor your code - private methods change \*all the time\* - your tests will break \*all the time\* too. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Feb 26, 2005 ### [How big organizations (surprisingly) always advocated test driven development](https://osherove.com/blog/2005/2/26/how-big-organizations-surprisingly-always-advocated-test-dri.html) - Feb 26, 2005 ### [Test Driven Development proves useful at Microsoft](https://osherove.com/blog/2005/2/26/test-driven-development-proves-useful-at-microsoft.html) - Feb 21, 2005 ### [CxxTest for C++ - easier unit testing?](https://osherove.com/blog/2005/2/21/cxxtest-for-c-easier-unit-testing.html) - Feb 21, 2005 ### [Agile Israel news and updates](https://osherove.com/blog/2005/2/21/agile-israel-news-and-updates.html) --- title: "CxxTest for C++ - easier unit testing?" url: "https://osherove.com/blog/2005/2/21/cxxtest-for-c-easier-unit-testing.md" canonical: "https://osherove.com/blog/2005/2/21/cxxtest-for-c-easier-unit-testing.html" published: "2005-02-21T23:20:00" updated: "2005-02-21T23:20:00" tags: ["Agile Related"] author: "Roy Osherove" description: "CxxTest for C++ seems like a nice way to write unit tests in C++. It uses Perl to generate Cpp files from regular classes and then you compile those into unit tests and run them. this intermediate step saves you lots of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CxxTest for C++ - easier unit testing? By Roy Osherove February 21, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published February 21, 2005; technical details may be outdated. [CxxTest for C++](http://cxxtest.sourceforge.net/) seems like a nice way to write unit tests in C++. It uses Perl to generate Cpp files from regular classes and then you compile those into unit tests and run them. this intermediate step saves you lots of trouble in declaring your tests in C++ code "that hard way" and simply lets you write code that works. I was alerted to this by someone who attended [one of my courses](http://www.teamagile.com/) the other day. Very interesting. Some of the features: - Doesn't require RTTI - Doesn't require member template functions - Doesn't require exception handling - Doesn't require any external libraries (including memory management, file/console I/O, graphics libraries) - Is distributed entirely as a set of header files This makes it extremely portable and usable. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Feb 26, 2005 ### [Test Driven Development proves useful at Microsoft](https://osherove.com/blog/2005/2/26/test-driven-development-proves-useful-at-microsoft.html) - Feb 21, 2005 ### [TDD and test generation in VS 2005 can be annoying and tricky if you don't watch out](https://osherove.com/blog/2005/2/21/tdd-and-test-generation-in-vs-2005-can-be-annoying-and-trick.html) - Feb 21, 2005 ### [Agile Israel news and updates](https://osherove.com/blog/2005/2/21/agile-israel-news-and-updates.html) - Feb 21, 2005 ### [Employing TDD and unit testing with Waterfall methodologies](https://osherove.com/blog/2005/2/21/employing-tdd-and-unit-testing-with-waterfall-methodologies.html) --- title: "IVBUG: Multithreaded UIs with VB.NET" url: "https://osherove.com/blog/2005/2/21/ivbug-multithreaded-uis-with-vbnet.md" canonical: "https://osherove.com/blog/2005/2/21/ivbug-multithreaded-uis-with-vbnet.html" published: "2005-02-21T23:15:00" updated: "2005-02-21T23:15:00" tags: ["Community"] author: "Roy Osherove" description: "Udi will be giving a talk at the upcoming IVBUG meeting about multi threaded UIs with VB.NET. Check out his description of it." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # IVBUG: Multithreaded UIs with VB.NET By Roy Osherove February 21, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published February 21, 2005; technical details may be outdated. [Udi](http://udidahan.weblogs.us/) will be giving a talk at the upcoming [IVBUG](http://www.renaissance.co.il/ivbug) meeting about multi threaded UIs with VB.NET. [Check out his description of it.](http://udidahan.weblogs.us/archives/025537.html) ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Mar 12, 2005 ### [Catch me at one of these upcoming user group events this month](https://osherove.com/blog/2005/3/12/catch-me-at-one-of-these-upcoming-user-group-events-this-mon.html) - Mar 1, 2005 ### [Agile Israel next meeting infromation and other important news](https://osherove.com/blog/2005/3/1/agile-israel-next-meeting-infromation-and-other-important-ne.html) - Feb 21, 2005 ### [Israel .NET architects user group: Patterns, practices and online resources for architects](https://osherove.com/blog/2005/2/21/israel-net-architects-user-group-patterns-practices-and-onli.html) - Feb 21, 2005 ### [Agile Israel news and updates](https://osherove.com/blog/2005/2/21/agile-israel-news-and-updates.html) --- title: "[CoolTool] WinDirStat" url: "https://osherove.com/blog/2005/2/21/cooltool-windirstat.md" canonical: "https://osherove.com/blog/2005/2/21/cooltool-windirstat.html" published: "2005-02-21T23:12:00" updated: "2005-02-21T23:12:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "WinDirStat is cool, free and just saved me 6 Gigs of HD space. It also uses the now famous \"TreeMap\" visualization scheme to show you how your disk looks logically." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[CoolTool\] WinDirStat By Roy Osherove February 21, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published February 21, 2005; technical details may be outdated. [WinDirStat](http://windirstat.sourceforge.net/) is cool, free and just saved me 6 Gigs of HD space. It also uses the now famous "TreeMap" visualization scheme to show you how your disk looks logically. ![Main Window](https://osherove.com/img/wb/6d7cb7c8_windirstat.sourceforge.net_windirstat-small.jpg) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Mar 12, 2005 ### [How most developers don't give a damn about productivity](https://osherove.com/blog/2005/3/12/how-most-developers-dont-give-a-damn-about-productivity.html) - Mar 3, 2005 ### [\[Cool Tools\] Code metrics, dependencies and more metrics](https://osherove.com/blog/2005/3/3/cool-tools-code-metrics-dependencies-and-more-metrics.html) - Jan 26, 2005 ### [JetBrains .NET Profiler](https://osherove.com/blog/2005/1/26/jetbrains-net-profiler.html) - Jan 25, 2005 ### [A new face lift for AxTools CodeSmart](https://osherove.com/blog/2005/1/25/a-new-face-lift-for-axtools-codesmart.html) --- title: "Israel .NET architects user group: Patterns, practices and online resources for architects" url: "https://osherove.com/blog/2005/2/21/israel-net-architects-user-group-patterns-practices-and-onli.md" canonical: "https://osherove.com/blog/2005/2/21/israel-net-architects-user-group-patterns-practices-and-onli.html" published: "2005-02-21T21:58:00" updated: "2005-02-21T21:58:00" tags: ["Community"] author: "Roy Osherove" description: "Greetings .NET architect! You are welcome to attend our next meeting to be held on Sunday, February 27th . Our next presentation is based on my request to have a Microsoft official present the various resources that are…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel .NET architects user group: Patterns, practices and online resources for architects By Roy Osherove February 21, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published February 21, 2005; technical details may be outdated. Greetings .NET architect! [You are welcome to attend our next meeting](http://www.microsoft.com/israel/events/default.aspx?pageType=1&idType=1&id=28) to be held on Sunday, **February 27th**. Our next presentation is based on my request to have a Microsoft official present the various resources that are available to architects. I think that the title: **"Patterns, practices and online resources for architects"** says it all ! Our presenter is Alik Levin from MCS (Microsoft Consultancy Services). Alik is a well known figure in the software industry and a veteran architect with experience in core .NET and .NET server based development. The presentation shall include: Microsoft.com/patterns and practices and application blocks overview - Whidbey for architects - Enterprise library overview - Gotdotnet overview - Sample walkthrough for system architectures that leverages the resources mentioned in the presentation **Don't miss this one, it took me a long time to pull it together** As usual, we will have out monthly give-away – to remain as a surprise… J **Kindly confirm your participation by replying to this e-mail or e-mailing me at yosi at omnisys.co.il.** Details summary: Date: **February 27rd, 2005** (27/2/2005) Time: **17:30 – 20:00** Location: **HP offices, 9 Daphna St, Kiryat Etgarim (northern industrial area), Ra’anana** Topic: **Patterns, practices and online resources for architects** Agenda: 17:30 – 17:45 – Assembly 17:45 – 18:45 – Patterns, practices and online resources for architects – Alik Levin, Microsoft. 18:45 – 19:00 – Break 19:00 – 20:00 – Patterns, practices and online resources for architects – Alik Levin, Microsoft. Thank you and see you there! Don’t hesitate to contact me with any questions or requests. Yosi Levy, ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Mar 1, 2005 ### [Agile Israel next meeting infromation and other important news](https://osherove.com/blog/2005/3/1/agile-israel-next-meeting-infromation-and-other-important-ne.html) - Feb 21, 2005 ### [IVBUG: Multithreaded UIs with VB.NET](https://osherove.com/blog/2005/2/21/ivbug-multithreaded-uis-with-vbnet.html) - Feb 21, 2005 ### [Agile Israel news and updates](https://osherove.com/blog/2005/2/21/agile-israel-news-and-updates.html) - Feb 1, 2005 ### [1st Agile Israel group meeting went great!](https://osherove.com/blog/2005/2/1/1st-agile-israel-group-meeting-went-great.html) --- title: "Agile Israel news and updates" url: "https://osherove.com/blog/2005/2/21/agile-israel-news-and-updates.md" canonical: "https://osherove.com/blog/2005/2/21/agile-israel-news-and-updates.html" published: "2005-02-21T21:56:00" updated: "2005-02-21T21:56:00" tags: ["Agile Related", "Community"] author: "Roy Osherove" description: "Looks like I got into terms with Microsoft on hosting the Agile Israel user group on a monthly basis at the Microsoft Center in Ra'anana. The next meeting is now being scheduled for the 23rd of March. I'm trying to see…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Israel news and updates By Roy Osherove February 21, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published February 21, 2005; technical details may be outdated. Looks like I got into terms with Microsoft on hosting the [Agile Israel](http://agileisrael.com/) user group on a monthly basis at the Microsoft Center in Ra'anana. The next meeting is now being scheduled for the 23rd of March. I'm trying to see if we can have [Johanna Rothman](http://www.jrothman.com/) there, speaking about managing Agile projects. One of the concerns raised in the group was that as this was a Microsoft and INETA sponsored group, the content would obviously have to be Microsoft-centric. Not necessarily. I agree that there \*might\* be operant cause for concern here but I'm pledging here that I will personally make an effort to make the topics in the group diverse and interesting to most (if not all) ranges of developers and technology in Israel today. You don't really have to be a .NET developer to come and listen to a lecture about Agile Concepts, project management, eXtreme programing experience and so on. At most, we'll have technical sessions that most likely will use .NET as the basis for the explanations. If push comes to shove, there's always a \*backup\* location for the user group to meet in, which could be considered "neutral" territory. If and when the time comes, the group will move there. for now, we can enjoy the nice hosting of the nice folks at MS, with room for 60+ people and free food :) I'll update you all more when I have mailing list ready and add stuff to the site. **In the meantime**, if you'd like to present a topic at the upcoming user group meeting, feel free to contact me at Roy at TeamAgile.com and tell me about it. The idea is to have a larger number small sessions (0.5-1 hours) in each meeting, so that we can cover a broader range of topics. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Feb 21, 2005 ### [TDD and test generation in VS 2005 can be annoying and tricky if you don't watch out](https://osherove.com/blog/2005/2/21/tdd-and-test-generation-in-vs-2005-can-be-annoying-and-trick.html) - Feb 21, 2005 ### [CxxTest for C++ - easier unit testing?](https://osherove.com/blog/2005/2/21/cxxtest-for-c-easier-unit-testing.html) - Feb 21, 2005 ### [Employing TDD and unit testing with Waterfall methodologies](https://osherove.com/blog/2005/2/21/employing-tdd-and-unit-testing-with-waterfall-methodologies.html) - Feb 1, 2005 ### [1st Agile Israel group meeting went great!](https://osherove.com/blog/2005/2/1/1st-agile-israel-group-meeting-went-great.html) --- title: "Congratulations to Yosi Taguri!" url: "https://osherove.com/blog/2005/2/21/congratulations-to-yosi-taguri.md" canonical: "https://osherove.com/blog/2005/2/21/congratulations-to-yosi-taguri.html" published: "2005-02-21T20:53:00" updated: "2005-02-21T20:53:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Congratulations to Yosi Taguri on the birth of of your daughter! Many more happy days (and nights) to come :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Congratulations to Yosi Taguri! By Roy Osherove February 21, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 21, 2005; technical details may be outdated. Congratulations to [Yosi Taguri](http://blogs.msdn.com/yosit) on the birth of of your daughter! Many more happy days (and nights) to come :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 1, 2005 ### [Met some nice people in Prague](https://osherove.com/blog/2005/3/1/met-some-nice-people-in-prague.html) - Feb 24, 2005 ### [Lesson of the day: don't be a pompous windbag](https://osherove.com/blog/2005/2/24/lesson-of-the-day-dont-be-a-pompous-windbag.html) - Feb 7, 2005 ### [I'm not really here, sorry.](https://osherove.com/blog/2005/2/7/im-not-really-here-sorry.html) - Feb 2, 2005 ### [Pics from my Magen farewell dinner](https://osherove.com/blog/2005/2/2/pics-from-my-magen-farewell-dinner.html) --- title: "Employing TDD and unit testing with Waterfall methodologies" url: "https://osherove.com/blog/2005/2/21/employing-tdd-and-unit-testing-with-waterfall-methodologies.md" canonical: "https://osherove.com/blog/2005/2/21/employing-tdd-and-unit-testing-with-waterfall-methodologies.html" published: "2005-02-21T20:03:00" updated: "2005-02-21T20:03:00" tags: ["Agile Related", "Project Management"] author: "Roy Osherove" description: "One of the things I've encountered lately is large organizations (1000's of developers) trying to get \"Agile\" while still trying to retain some sort of sanity in the ranks. I do believe that such moves should be made…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Employing TDD and unit testing with Waterfall methodologies By Roy Osherove February 21, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Project Management](https://osherove.com/blog/category/project-management) **Historical article** · Originally published February 21, 2005; technical details may be outdated. One of the things I've encountered lately is large organizations (1000's of developers) trying to get "Agile" while still trying to retain some sort of sanity in the ranks. I do believe that such moves should be made not all at once (unless you'r pretty small) but at small incremental steps. One of the easiest steps almost any organization can take without taking too much burden on themselves and changing existing processes too much is Test Driven Development. You get much of the benefits involved with unit tests(decoupled interfaces, a safety net for maintenance, thinking through spec requirements) but can still leave yourself using good ol' waterfall to do things. Because most of the changes occur at the individual developer level and not in project management level, you can slowly train your troops to write goo tests, and perhaps even write them before they write the actual production code. One of the things I was asked by such an organization was "How do you enforce such Agile rules as 'Write unit tests for your code'?" While it may sound a little counter-intuitive (enforcing rules is counter-intuitive with Agile development practices - the team should want to accomplish these tasks by themselves) we need to realize that with every large organizational change, there are "stakeholders" that drive this change from within. A CTO, project managers, developers and others maybe single handedly responsible for somebody up there making the decision to actually change something. Usually, these stakeholders need to be backed up by some processes that the organization can easily digest so the change can occur in a way that fits their way of work. Traceability and accountability in waterfall models is what we're talking about here and we need to realize that in makes perfect sense in those regards to have such demands as being able to oversee that people are doing "the right thing" from above. There are several ways to incorporate TDD and unit testing in particular in a non-agile process: - **Specs and design documents contain up-front descriptions of Several key unit tests** that must pass in order for the spec to be completed. For example, a spec for a class in charge of logins can contain an appendix listing 5-20 unit tests with required criteria (ASSERTS) that needs to pass. The spec does NOT contain the actual tests, but a short 1-2 sentence description of each test, required parameters perhaps and expected outcome. A developer coding to the spec can then use TDD or simple test writing to accomplish the spec and add their own unit tests to match other sequences of actions not specified in the descriptions. - **An automated tool** can be run on the compiled source code using reflection (or other introspective engines in the language) that has specific search criteria for tests. This tool can alert us if there are specific public classes in production code that have methods that do not have at least one matching test method in the "Testing" project. For example, for a class named "LogingManager" with Method "IsLoginOk" the tool would look for a class names "LoginManagerTests" that has at least one method that begins with "testIsLoginOk". We need to remember that such a tool would only provide us with important information and red flags on tests that might be missing. It doe NOT tell us if tests are good enough, if there are enough, just if there are too little. Again - consider this more of a "test coverage" tool to spot potential problems and find red flags automatically rather than a quality control tool. Large organizations making the move might need this to have the stakeholders something to report about and give at least some sort of deterministic numbers on the state of unit testing adoption in the organization. Again - if the developers truly don't want to do testing they'll simply write such methods with no implementation. So the motivation to do testing should still be there, this is just another way to make upper management more relaxed by keeping things at least somewhat "visible". - **Coding guidelines** that contain specific instruction on the use of TDD methodologies. That means that all developers must explicitly follow a common way of doing things which again, might not be the best way to do this, but it's still better than not doing this at all. At least this way unit tests and TDD gain some sort of recognition and slowly people will adapt to doing them correctly. This is more of a "foot in the door" sort of way and will probably fail if the developers don't have proper training and realization why this is a good way of doing things (at lest, it's better than the old way). - **Have a group of skilled "code warriors"** which have undergone extensive training in the method you'd like to promote, and have them spread the word in the organization. These are your code gurus, your team leaders, your highly motivated and skilled developers who love to try out new things. They'll be the best ambassadors of all to do this. I'm finishing this in the feeling that I'm leaving some things out. I'll update as needed. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Feb 21, 2005 ### [CxxTest for C++ - easier unit testing?](https://osherove.com/blog/2005/2/21/cxxtest-for-c-easier-unit-testing.html) - Feb 21, 2005 ### [Agile Israel news and updates](https://osherove.com/blog/2005/2/21/agile-israel-news-and-updates.html) - Feb 1, 2005 ### [1st Agile Israel group meeting went great!](https://osherove.com/blog/2005/2/1/1st-agile-israel-group-meeting-went-great.html) - Jan 27, 2005 ### [Agile Israel user group changes location to SELA](https://osherove.com/blog/2005/1/27/agile-israel-user-group-changes-location-to-sela.html) --- title: "I'm not really here, sorry." url: "https://osherove.com/blog/2005/2/7/im-not-really-here-sorry.md" canonical: "https://osherove.com/blog/2005/2/7/im-not-really-here-sorry.html" published: "2005-02-07T21:15:00" updated: "2005-02-07T21:15:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I know. You've missed me like hell. I've been staying along with my wife at a friend's house (they're on a trip and we're house-sitting). The Internet connection there sucks, but that is easily compensated by the fact…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm not really here, sorry. By Roy Osherove February 7, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 7, 2005; technical details may be outdated. I know. You've missed me like hell. I've been staying along with my wife at a friend's house (they're on a trip and we're house-sitting). The Internet connection there sucks, but that is easily compensated by the fact that they have a 72 inch TV with surround sound, a Jacuzzi, and a trampoline in the (really big) back yard. So, It's like a small vacation for us as well. I'll be a little more active again starting from about a week or two from now. Until then I hope I can sometime sneak in and write something here. Don't miss me too much. There are lots of great reading places you should visit daily. Like [this](http://www.larkware.com/), [this](http://www.codebetter.com/) and [this](http://www.testdriven.com/). Oh, BTW - [Business](http://www.teamagile.com/) is definitely looking up! Yey! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 24, 2005 ### [Lesson of the day: don't be a pompous windbag](https://osherove.com/blog/2005/2/24/lesson-of-the-day-dont-be-a-pompous-windbag.html) - Feb 21, 2005 ### [Congratulations to Yosi Taguri!](https://osherove.com/blog/2005/2/21/congratulations-to-yosi-taguri.html) - Feb 2, 2005 ### [Pics from my Magen farewell dinner](https://osherove.com/blog/2005/2/2/pics-from-my-magen-farewell-dinner.html) - Jan 27, 2005 ### [Silly bickering](https://osherove.com/blog/2005/1/27/silly-bickering.html) --- title: "Pics from my Magen farewell dinner" url: "https://osherove.com/blog/2005/2/2/pics-from-my-magen-farewell-dinner.md" canonical: "https://osherove.com/blog/2005/2/2/pics-from-my-magen-farewell-dinner.html" published: "2005-02-02T14:09:00" updated: "2005-02-02T14:09:00" tags: ["Off Topic"] author: "Roy Osherove" description: "About two weeks ago, some of the folks from Magen arranged a special farewell dinner for me. It was pretty touching. Here are some photos from that dinner. Thanks you guys! Especially Ohad who's arranged for it all. It…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Pics from my Magen farewell dinner By Roy Osherove February 2, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 2, 2005; technical details may be outdated. About two weeks ago, some of the folks from [Magen](http://www.magen.com/) arranged a special farewell dinner for me. It was pretty touching. Here are some photos from that dinner. Thanks you guys! Especially [Ohad](http://weblogs.asp.net/israelio) who's arranged for it all. [![](https://osherove.com/img/ext/photos4.flickr.com_4112537_8c41e47a48_m.jpg)](http://www.flickr.com/photos/royo/4112537/) [![](https://osherove.com/img/ext/photos4.flickr.com_4112527_95c99d7486_m.jpg)](http://www.flickr.com/photos/royo/4112527/) [![](https://osherove.com/img/ext/photos4.flickr.com_4112517_0066cb956e_m.jpg)](http://www.flickr.com/photos/royo/4112517/)[![](https://osherove.com/img/ext/photos4.flickr.com_4112510_a06e162da2_m.jpg)](http://www.flickr.com/photos/royo/4112510/) [![](https://osherove.com/img/ext/photos3.flickr.com_4112490_5c6a4ae986_m.jpg)](http://www.flickr.com/photos/royo/4112490/) It was an amazing experience working at Magen and I've met some wonderful people there. I'm still working there as a sub-contractor, actually. So there's always a chance I'll see these folks every once in a while :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 21, 2005 ### [Congratulations to Yosi Taguri!](https://osherove.com/blog/2005/2/21/congratulations-to-yosi-taguri.html) - Feb 7, 2005 ### [I'm not really here, sorry.](https://osherove.com/blog/2005/2/7/im-not-really-here-sorry.html) - Jan 27, 2005 ### [Silly bickering](https://osherove.com/blog/2005/1/27/silly-bickering.html) - Jan 17, 2005 ### [I'll be available for consulting in the bay area](https://osherove.com/blog/2005/1/17/ill-be-available-for-consulting-in-the-bay-area.html) --- title: "IVBUG meeting this week: New Features and Changes in ASP.NET 2.0" url: "https://osherove.com/blog/2005/2/1/ivbug-meeting-this-week-new-features-and-changes-in-aspnet-2.md" canonical: "https://osherove.com/blog/2005/2/1/ivbug-meeting-this-week-new-features-and-changes-in-aspnet-2.html" published: "2005-02-01T22:46:00" updated: "2005-02-01T22:46:00" tags: [] author: "Roy Osherove" description: "\"Continuing in our series of presentations on some of the new tools and technologies that are part of the VS 2005 releases due to arrive in the coming year, Noam King, CTO of Sela University, will take us through the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # IVBUG meeting this week: New Features and Changes in ASP.NET 2.0 By Roy Osherove February 1, 2005 **Historical article** · Originally published February 1, 2005; technical details may be outdated. _"Continuing in our series of presentations on some of the new tools and technologies that are part of the VS 2005 releases due to arrive in the coming year, Noam King, CTO of Sela University,  will take us through the highlights of ASP.NET 2.0._    _There is really a lot to cover on this subject.  ASP.NET introduces additions, extensions, and outright changes to how we develop ASP.NET applications.  Noam will cover the following topics:_ - _Introduction to ASP.NET 2.0 and VS2005_ - _A bit about architecture and changes in application and page objects._ - _Master Pages_ - _Personalization_ - _Building a site with Web Parts._ - _Administration_ - _Skins and Themes_ - _Handling data with ASP.NET 2.0 (without getting into ADO.NET 2.0)_ _As always, we'll have our special "Hatzilu" session at our meeting. So please come prepared to discuss your most frustrating problems (or at least some of them!) and to share some of your own techniques and solutions that you have found useful in your applications. Please remember that it is important for me to know as accurately as possible how many people will be attending each meeting, so that I can arrange for the right amount of food and the proper setup of the chairs.  Please confirm your attendance. See you there !! The February meeting of the Israel Visual Basic User Group http://www.renaissance.co.il/ivbug: February 2, 2005 _ **Location****:** **Microsoft Israel** **2 Hapnina St****, Ra'anana** **(09) 7625-100** **Floor 0 , Dekel Room** **It is the new building across from Amdocs.** **After the first traffic circle, there is an area for parking on the right.** 17:30 - 18:00   Assembly 18:00 - 18:10   Introduction 18:10 - 19:30    **“****New Features and Changes in ASP.NET 2.0** **– Part 1"** Noam King, Sela University 19:30 - 19:45    Break 19:45 – 20:00   "Hatzilu !"                         Open session, with questions and answers/ideas from everyone 20:00 – 21:00   **“****New Features and Changes in ASP.NET 2.0** **– Part 2"**                        Noam King, Sela University" \[via [Jackie](http://weblogs.asp.net/jackieg)\] --- title: "1st Agile Israel group meeting went great!" url: "https://osherove.com/blog/2005/2/1/1st-agile-israel-group-meeting-went-great.md" canonical: "https://osherove.com/blog/2005/2/1/1st-agile-israel-group-meeting-went-great.html" published: "2005-02-01T21:38:00" updated: "2005-02-01T21:38:00" tags: ["Agile Related", "Community"] author: "Roy Osherove" description: "The first Agile Israel meeting took place yesterday, and it was pretty darn good! Show-up: 32 people out of a 42 registered crowd. In the pictures you can see the room we had at SELA and Udi talking to the group. What…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 1st Agile Israel group meeting went great! By Roy Osherove February 1, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published February 1, 2005; technical details may be outdated. The first [Agile Israel meeting](http://weblogs.asp.net/rosherove/archive/2005/01/18/355318.aspx) took place yesterday, and it was pretty darn good! Show-up: 32 people out of a 42 registered crowd. In the pictures you can see the room we had at SELA and [Udi](http://www.thesoftwaresimplist.com/) talking to the group. [![](https://osherove.com/img/ext/photos3.flickr.com_4112592_b1f59c738c_m.jpg)](http://www.flickr.com/photos/royo/4112592/) [![](https://osherove.com/img/ext/photos4.flickr.com_4112582_492d98861f_m.jpg)](http://www.flickr.com/photos/royo/4112582/) **What went on?** The first lecture was given by me and was about agile concepts. We didn't get very far before being bombarded with questions. I wasn't really sure if I wanted to just "let it ride" because the group is all about discussion. I don't think it went too well because I didn't get to finish the lecture. We intend to finish it in the next meeting. Next, Udi gave a lecture about using [NHibernate](http://nhibernate.sf.net/) for doing Agile Development. [Here's the code from the lecture](http://udidahan.weblogs.us/archives/NHibernate%20demo.zip). All in all, I think we had a pretty good turn-up. I certainly met some unfamiliar faces, and it was good to see other people that already have a serious amount of experience with Agile under their belts. I'd like to thank everyone that showed up. There's lots to be done for the group in the coming weeks. a partial list: - A web site - A mailing list - A monthly meeting with pre-arranged topics for 3 months in advance - Recording of every meeting (audio) If you'd like to attend the next meeting and you have \*not\* already sent me an email, then send me one now to **UserGroup at TeamAgile.com** telling me you'd like to join. We also tried to come up with a formula for the next meeting(s): - 17:30- 18:00 - Gathering and free flowing Q&A - 18:00 - 19:00 - Lecture, topic 1 - 19:00 - 19:30 - Q&A about the lecture and other topics - 19:30 - 20:00 - Lecture, topic 2 - 20:00 - 20:30 - Lecture, topic 3 - 20:30 - 21:00 - Q&A about last two lectures The first lecture is the "heaviest". the second two are smaller and simpler, thus making for a meeting that might touch all most of the attendees interests. You see, the point with Agile is that it spans many "cultures". We had people over fro at least three worlds I heard of - .NET, Java and PERL. Because it's so "broad" there's lots to talk about with lots of little concepts intertwined. Udi suggested this format and I think it might work. I did fear at first that we'll run out of topics very quick, but after some thought we figures the "Agile" topic is so broad and large, that would be practically impossible. There are several areas any lecture could attend to: - Customer communication - Team Communication - Technical solutions - Scheduling, management - Methodology overview - Hands on workshops - many more.. I'm just thinking out loud here. In any case - we still have a ways to go before making this a little more cohesive group. But I feel like we're on the right track. See you next month! Also, would love to hear your comments on the meeting. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Feb 21, 2005 ### [Agile Israel news and updates](https://osherove.com/blog/2005/2/21/agile-israel-news-and-updates.html) - Feb 21, 2005 ### [Employing TDD and unit testing with Waterfall methodologies](https://osherove.com/blog/2005/2/21/employing-tdd-and-unit-testing-with-waterfall-methodologies.html) - Jan 27, 2005 ### [Agile Israel user group changes location to SELA](https://osherove.com/blog/2005/1/27/agile-israel-user-group-changes-location-to-sela.html) - Jan 26, 2005 ### [SharpDevelop develops NUnit integration](https://osherove.com/blog/2005/1/26/sharpdevelop-develops-nunit-integration.html) --- title: "Launcher: Clean auto-deployment and auto-updating code from Franklins.Net" url: "https://osherove.com/blog/2005/2/1/launcher-clean-auto-deployment-and-auto-updating-code-from-f.md" canonical: "https://osherove.com/blog/2005/2/1/launcher-clean-auto-deployment-and-auto-updating-code-from-f.html" published: "2005-02-01T13:24:00" updated: "2005-02-01T13:24:00" tags: [".Net Quotations", "Tips & Tricks"] author: "Roy Osherove" description: "\" So I was not satisfied with all of the options for auto-deploying .NET apps in version 1.1, and rather than waiting for ClickOnce, which only works in v2.0 anyway, I sat down and designed and developed a simple and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Launcher: Clean auto-deployment and auto-updating code from Franklins.Net By Roy Osherove February 1, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published February 1, 2005; technical details may be outdated. "_So I was not satisfied with all of the options for auto-deploying .NET apps in version 1.1, and rather than waiting for ClickOnce, which only works in v2.0 anyway, I sat down and designed and developed a simple and effective solution. Launcher is a VB.NET project called you can copy to a new dev directory and modify for each application you want to auto-deploy. Change four variables, rebuild, create a deployment project for Launcher and distribute it._ _When your user runs Launcher, everything happens automatically. Launcher prompts the user for downloading a newer version if one is available, downloads, unzips, and runs the app. If offline, Launcher simply runs the current version. The logic here is easy to modify to suit your needs. The zip file is downloaded in chunks using the asynchronous model, and unzipped asynchronously as well._ _Note that this application works well with small projects but not so well with large projects. Because a new zip file is downloaded whenever there are any changes, if the zip file is too large your user may get impatient. Also, make sure that your application generates any settings files itself. That way, you don't run the risk of overwriting your settings whenever you update the application._ [_http://www.franklins.net/dotnet_](http://www.franklins.net/dotnet "http")_"_ _\[via [Carl](http://weblogs.asp.net/cfranklin)\]_ This is definitely something I should check out. I've been fighting with auto deployment for a while now. It pretty much sucks until you get to version 2.0 with ClickOnce. Then it sucks a little less. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 6, 2005 ### [Solving Binary serialization versioning conflicts - The HashTable problem](https://osherove.com/blog/2005/4/6/solving-binary-serialization-versioning-conflicts-the-hashta.html) - Mar 11, 2005 ### [CLR Performance Q&A, and how it relates to unit testing and mock objects](https://osherove.com/blog/2005/3/11/clr-performance-qampa-and-how-it-relates-to-unit-testing-and.html) - Jan 30, 2005 ### [Debugging VB6 binaries in Visual Studio .NET](https://osherove.com/blog/2005/1/30/debugging-vb6-binaries-in-visual-studio-net.html) - Jan 22, 2005 ### [MVP.Xml library released](https://osherove.com/blog/2005/1/22/mvpxml-library-released.html) --- title: "[OT] Infinite Cat" url: "https://osherove.com/blog/2005/1/30/ot-infinite-cat.md" canonical: "https://osherove.com/blog/2005/1/30/ot-infinite-cat.html" published: "2005-01-30T13:43:00" updated: "2005-01-30T13:43:00" tags: ["Cool sites"] author: "Roy Osherove" description: "Silly as it may seem, I was laughing out loud to myself while browsing this site . Yes. It's the Infinite cat project . Got it through Rory through Richard . The idea is as simple as it is hypnotic. Some guy took a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] Infinite Cat By Roy Osherove January 30, 2005 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published January 30, 2005; technical details may be outdated. Silly as it may seem, I was laughing out loud to myself while browsing [this site](http://www.infinitecat.com/). Yes. It's [the Infinite cat project](http://www.infinitecat.com/). Got it through [Rory](http://neopoleon.com/blog/posts/12503.aspx) through [Richard](http://www.tallent.us/blog/commentview.aspx?guid=5f58c4e1-817a-47a6-83cf-c1d1cd97b9cc). The idea is as simple as it is hypnotic. Some guy took [a picture of his cat](http://www.infinitecat.com/infinite/cat-html/1.html). And some other guy took a picture of [his cat watching the original cat](http://www.infinitecat.com/infinite/cat-html/2.html). And the next guy took a picture of his own cat watching the second picture etc. The result is actually quite cool. It's even cooler if you start [from the middle](http://www.infinitecat.com/infinite/cat-html/112.html) and work your way back to the original picture. It's totally hypnotic. Anyway, I'll shut up now. ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Mar 20, 2005 ### [Taking notice of Lucene: A searching & indexing library](https://osherove.com/blog/2005/3/20/taking-notice-of-lucene-a-searching-amp-indexing-library.html) - Mar 1, 2005 ### [The new Larkware.com](https://osherove.com/blog/2005/3/1/the-new-larkwarecom.html) - Jan 30, 2005 ### [How to schedule an online meeting between totally different time zones](https://osherove.com/blog/2005/1/30/how-to-schedule-an-online-meeting-between-totally-different.html) - Nov 24, 2004 ### [More Geek Conversation you cen listen to in your car](https://osherove.com/blog/2004/11/24/more-geek-conversation-you-cen-listen-to-in-your-car.html) --- title: "Debugging VB6 binaries in Visual Studio .NET" url: "https://osherove.com/blog/2005/1/30/debugging-vb6-binaries-in-visual-studio-net.md" canonical: "https://osherove.com/blog/2005/1/30/debugging-vb6-binaries-in-visual-studio-net.html" published: "2005-01-30T13:32:00" updated: "2005-01-30T13:32:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Rob Gruen has a excellent post on how to debug your VB6 code in Visual Studio .NET without the need to have the VB6 IDE open. [via Marty ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Debugging VB6 binaries in Visual Studio .NET By Roy Osherove January 30, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published January 30, 2005; technical details may be outdated. [_Rob Gruen_](http://weblogs.asp.net/robgruen) _has a_ [_excellent post_](http://weblogs.asp.net/robgruen/archive/2004/11/09/254602.aspx) _on how to debug your VB6 code in Visual Studio .NET without the need to have the VB6 IDE open._ \[via [Marty](http://www.little-garins.com/Blogs/marty/archive/2005/01/20/267.aspx)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 11, 2005 ### [CLR Performance Q&A, and how it relates to unit testing and mock objects](https://osherove.com/blog/2005/3/11/clr-performance-qampa-and-how-it-relates-to-unit-testing-and.html) - Feb 1, 2005 ### [Launcher: Clean auto-deployment and auto-updating code from Franklins.Net](https://osherove.com/blog/2005/2/1/launcher-clean-auto-deployment-and-auto-updating-code-from-f.html) - Jan 22, 2005 ### [MVP.Xml library released](https://osherove.com/blog/2005/1/22/mvpxml-library-released.html) - Jan 18, 2005 ### [Data Binding with .Net 2.0 : upcoming coolness](https://osherove.com/blog/2005/1/18/data-binding-with-net-20-upcoming-coolness.html) --- title: "How to schedule an online meeting between totally different time zones" url: "https://osherove.com/blog/2005/1/30/how-to-schedule-an-online-meeting-between-totally-different.md" canonical: "https://osherove.com/blog/2005/1/30/how-to-schedule-an-online-meeting-between-totally-different.html" published: "2005-01-30T13:18:00" updated: "2005-01-30T13:18:00" tags: ["Cool sites"] author: "Roy Osherove" description: "So what do you do when you want to setup an online meeting with a person on another part of the world? Scheduling sucks. I just found this little gem: It's the online meeting planner . It lets you enter 2 or more places…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to schedule an online meeting between totally different time zones By Roy Osherove January 30, 2005 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published January 30, 2005; technical details may be outdated. So what do you do when you want to setup an online meeting with a person on another part of the world? Scheduling sucks. I just found this little gem: [It's the online meeting planner](http://www.timeanddate.com/worldclock/meeting.html). It lets you enter 2 or more places around the world where the meeting is to take place, and set the required meeting date. I put in Los Angeles and Tel Aviv. You then get this (partial paste).
Thursday, February 3, 2005 at 14:00:00Thu 6:00 AMThu 4:00 PM
Thursday, February 3, 2005 at 15:00:00Thu 7:00 AMThu 5:00 PM
Thursday, February 3, 2005 at 16:00:00Thu 8:00 AMThu 6:00 PM
Thursday, February 3, 2005 at 17:00:00Thu 9:00 AMThu 7:00 PM
Thursday, February 3, 2005 at 18:00:00Thu 10:00 AMThu 8:00 PM
Thursday, February 3, 2005 at 19:00:00Thu 11:00 AMThu 9:00 PM
Thursday, February 3, 2005 at 20:00:00Thu NoonThu 10:00 PM
Thursday, February 3, 2005 at 21:00:00Thu 1:00 PMThu 11:00 PM
    
This color represents the night time or normal sleeping hours
    
This color represents the first half of day when most people are at work
    
This color represents the second half of day when people are awake but not necessarily at work
Obviously from this table I can deduct that the best time for both parties would be around 8 AM LA time(if I were a regular working man). However, since I'm self employed, this could easily move into the 9-10 AM time slot where I can sit back and relax with a nice cup of coffee in front of my machine having my important chat. Ain't that cool? ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Mar 1, 2005 ### [The new Larkware.com](https://osherove.com/blog/2005/3/1/the-new-larkwarecom.html) - Jan 30, 2005 ### [\[OT\] Infinite Cat](https://osherove.com/blog/2005/1/30/ot-infinite-cat.html) - Nov 24, 2004 ### [More Geek Conversation you cen listen to in your car](https://osherove.com/blog/2004/11/24/more-geek-conversation-you-cen-listen-to-in-your-car.html) - Oct 13, 2004 ### [TopXML releases the System.XML reference online](https://osherove.com/blog/2004/10/13/topxml-releases-the-systemxml-reference-online.html) --- title: "Enterprise Library 1.0 released!" url: "https://osherove.com/blog/2005/1/28/enterprise-library-10-released.md" canonical: "https://osherove.com/blog/2005/1/28/enterprise-library-10-released.html" published: "2005-01-28T23:57:00" updated: "2005-01-28T23:57:00" tags: [] author: "Roy Osherove" description: "Enterprise Library is out. Let the blogging madness begin. What is it? It's the next, better version of the Microsoft Application Blocks you've seen until today. With a few changes: It's a suite of 7 built in , new and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Enterprise Library 1.0 released! By Roy Osherove January 28, 2005 **Historical article** · Originally published January 28, 2005; technical details may be outdated. [Enterprise Library is out.](http://www.peterprovost.org/archive/2005/01/28/2640.aspx)  Let the blogging madness begin. What is it? It's the next, better version of the Microsoft Application Blocks you've seen until today. With a few changes: - It's a suite of 7 built in , new and improved application blocks. They work together, as a team to provide easier and better configuration, management, usability and consistency into our development experience. - They can use each other, but they \*don't have to\*! You can write your own "providers" and hook them up. Today, for example, you can't use the Logging Application Block without using the EIF framework with it (with out major code changes). With Entlib(the nickname you'll be hearing a lot from now on) there's a whole extensibility architecture in place. - The idea is that on top of 7 existing built in blocks inside Entlib, the community is encourages to extend and create other blocks that play with each other using the extensibility mechanisms found in the library. Yep. Plug ins. - All configuration is done via XML. of ALL the blocks. But the killer feature here is that its all done in \*one\* single place - using a configuration GUI that can map and set properties for all application blocks your application will need. No more messing around with error prone XML. Te Configuration GUI will help you validate the properties you set, and do the hard work for you while you sent a bunch of properties on tree nodes. - The application blocks have been enhanced. For example, the new version of the Data Access block is capable of using an encrypted connection string. It does it magically for you by using an all new encryption application block! - The next version of the logging block is perfectly capable of talking with the data access block and saving your traces to the database. It's the replacement for EIF ,really, with many abilities and many providers. If you were looking into Log4Net or EIF, you should seriously check this one out. - It's fully Unit Tested! Lots more about Entlib[. Go download this very cool thing right away](http://msdn.microsoft.com/library/en-us/dnpag2/html/entlib.asp). Great job people! --- title: "Is CodeBetter.Com to become the new .NETWeblogs?" url: "https://osherove.com/blog/2005/1/28/is-codebettercom-to-become-the-new-netweblogs.md" canonical: "https://osherove.com/blog/2005/1/28/is-codebettercom-to-become-the-new-netweblogs.html" published: "2005-01-28T23:18:00" updated: "2005-01-28T23:18:00" tags: ["Blogging", "Community"] author: "Roy Osherove" description: "Darrell Norton is one of the founders of the newly created CodeBetter.Com - a blogging community for better coders and developers. That also means that Darrell's most excellent blog has moved here . So, is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Is CodeBetter.Com to become the new .NETWeblogs? By Roy Osherove January 28, 2005 In [Blogging](https://osherove.com/blog/category/blogging), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published January 28, 2005; technical details may be outdated. [Darrell Norton](http://codebetter.com/blogs/darrell.norton/) is one of the founders of the newly created [CodeBetter.Com](http://codebetter.com/blogs/) \- a blogging community for better coders and developers. That also means that [Darrell's most excellent blog has moved here](http://codebetter.com/blogs/darrell.norton/) . So, is "CodeBetter.Com" the new ".NetWeblogs"(now called weblogs.asp.net)?  weblogs.asp.net's main feed is quite a "trashy" place these days. It's like a big market - you can find pretty much anything if you look long enough. That also means it gets harder and harder to find great focused content. That's what /NetWeblogs was all about at first. Which leads me to contemplate moving my blog to CodeBetter.Com. I mean, that's a great domain name! I wonder how hard ti would be to import/export all my posts from my current blog. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Apr 15, 2005 ### [Weird and interesting Blog of the week - Anarchia](https://osherove.com/blog/2005/4/15/weird-and-interesting-blog-of-the-week-anarchia.html) - Mar 1, 2005 ### [The new Larkware.com](https://osherove.com/blog/2005/3/1/the-new-larkwarecom.html) - Jan 14, 2005 ### [Get an MSN alert whenever this blog updates](https://osherove.com/blog/2005/1/14/get-an-msn-alert-whenever-this-blog-updates.html) - Dec 31, 2004 ### [\[OT\] Some free time coming soon](https://osherove.com/blog/2004/12/31/ot-some-free-time-coming-soon.html) --- title: "Silly bickering" url: "https://osherove.com/blog/2005/1/27/silly-bickering.md" canonical: "https://osherove.com/blog/2005/1/27/silly-bickering.html" published: "2005-01-27T16:50:00" updated: "2005-01-27T16:50:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It's amazing sometimes what you get to fight about; things you never thought possible suddenly come true. For example, we now have arguments over which one gets to take the \"good\" car for various errands. The \"good\" car…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Silly bickering By Roy Osherove January 27, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 27, 2005; technical details may be outdated. It's amazing sometimes what you get to fight about; things you never thought possible suddenly come true. For example, we now have arguments over which one gets to take the "good" car for various errands. The "good" car is the leased/rental car we got for getting around to clients and other things. The "other" car is less worthy in many respects which leads to annoying bickering over who gets to take what to where. God. You'd think the world has enough \*serious\* problems to deal with already, wouldn't you? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 7, 2005 ### [I'm not really here, sorry.](https://osherove.com/blog/2005/2/7/im-not-really-here-sorry.html) - Feb 2, 2005 ### [Pics from my Magen farewell dinner](https://osherove.com/blog/2005/2/2/pics-from-my-magen-farewell-dinner.html) - Jan 17, 2005 ### [I'll be available for consulting in the bay area](https://osherove.com/blog/2005/1/17/ill-be-available-for-consulting-in-the-bay-area.html) - Jan 13, 2005 ### [Yet another product nowhere near your area](https://osherove.com/blog/2005/1/13/yet-another-product-nowhere-near-your-area.html) --- title: "Agile Israel user group changes location to SELA" url: "https://osherove.com/blog/2005/1/27/agile-israel-user-group-changes-location-to-sela.md" canonical: "https://osherove.com/blog/2005/1/27/agile-israel-user-group-changes-location-to-sela.html" published: "2005-01-27T01:46:00" updated: "2005-01-27T01:46:00" tags: ["Agile Related", "Community"] author: "Roy Osherove" description: "The First Agile user group meeting will be held this Monday, the 31st, not at Magen, but at the SELA University in Tel Aviv. Here's a link to exact arrival instructions: http://www.selayouniversity.co.il/Pages/Map.asp…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Israel user group changes location to SELA By Roy Osherove January 27, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published January 27, 2005; technical details may be outdated. The [First Agile user group meeting](http://weblogs.asp.net/rosherove/archive/2005/01/18/355318.aspx) will be held this Monday, the 31st, not at Magen, but at the SELA University in Tel Aviv. Here's a link to exact arrival instructions:   [http://www.selayouniversity.co.il/Pages/Map.asp](http://www.selayouniversity.co.il/Pages/Map.asp) The class name is LESHEM and it is located at the 5th floor. Arrival at 17:30, we start at 18:00   So why the change of location? Because already we have 38 people who registered to go. Unfortunately, Magen can only seat about 25. the classes at SELA can hold around 40 people comfortably.   Please note that we will \*not\* have any food ready there for attendees (except for some cookies and small stuff) so come prepared if you need to. I'm working on an arrangement for the next meetings, but that's what we have for now. Parking is free and  very near in the AYALON mall and is 2 minutes walk. I'd like to thank Alon Fleiss for helping with the class location. See you there! ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Feb 21, 2005 ### [Employing TDD and unit testing with Waterfall methodologies](https://osherove.com/blog/2005/2/21/employing-tdd-and-unit-testing-with-waterfall-methodologies.html) - Feb 1, 2005 ### [1st Agile Israel group meeting went great!](https://osherove.com/blog/2005/2/1/1st-agile-israel-group-meeting-went-great.html) - Jan 26, 2005 ### [SharpDevelop develops NUnit integration](https://osherove.com/blog/2005/1/26/sharpdevelop-develops-nunit-integration.html) - Jan 26, 2005 ### [XP Discussion: Invest in the design of the system every day](https://osherove.com/blog/2005/1/26/xp-discussion-invest-in-the-design-of-the-system-every-day.html) --- title: "SharpDevelop develops NUnit integration" url: "https://osherove.com/blog/2005/1/26/sharpdevelop-develops-nunit-integration.md" canonical: "https://osherove.com/blog/2005/1/26/sharpdevelop-develops-nunit-integration.html" published: "2005-01-26T23:54:00" updated: "2005-01-26T23:54:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Oh this is cool. SharpDevelop , the open source .NET editor, has built in NUnit integration. I'm still not sure what that really means, but I intend to find out. Hopefully it will be just like the JUnit integration…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SharpDevelop develops NUnit integration By Roy Osherove January 26, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published January 26, 2005; technical details may be outdated. [Oh this is cool.](http://www.icsharpcode.net/OpenSource/SD/WhatsNew.aspx) [SharpDevelop](http://www.icsharpcode.net/OpenSource/SD/default.aspx), the open source .NET editor, has built in NUnit integration. I'm still not sure what that really means, but I intend to find out. Hopefully it will be just like the JUnit integration found in similar Java projects. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Feb 1, 2005 ### [1st Agile Israel group meeting went great!](https://osherove.com/blog/2005/2/1/1st-agile-israel-group-meeting-went-great.html) - Jan 27, 2005 ### [Agile Israel user group changes location to SELA](https://osherove.com/blog/2005/1/27/agile-israel-user-group-changes-location-to-sela.html) - Jan 26, 2005 ### [XP Discussion: Invest in the design of the system every day](https://osherove.com/blog/2005/1/26/xp-discussion-invest-in-the-design-of-the-system-every-day.html) - Jan 23, 2005 ### [Agile content for the Winter 2004 issue of Methods & Tools](https://osherove.com/blog/2005/1/23/agile-content-for-the-winter-2004-issue-of-methods-amp-tools.html) --- title: "JetBrains .NET Profiler" url: "https://osherove.com/blog/2005/1/26/jetbrains-net-profiler.md" canonical: "https://osherove.com/blog/2005/1/26/jetbrains-net-profiler.html" published: "2005-01-26T12:06:00" updated: "2005-01-26T12:06:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Welcome to JetBrains .NET Profiler Early Access Program (EAP) ! - Looks like the JetBrains folks are cooking up another utility. Open beta, so go download if you're interested. (via Matt Berther ) [via Larkware ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # JetBrains .NET Profiler By Roy Osherove January 26, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published January 26, 2005; technical details may be outdated. [Welcome to JetBrains .NET Profiler Early Access Program (EAP) !](http://www.jetbrains.net/confluence/display/NetProf/Home) - Looks like the JetBrains folks are cooking up another utility. Open beta, so go download if you're interested. (via [Matt Berther](http://www.mattberther.com/2005/01/000595.html)) \[via [Larkware](http://www.larkware.com/)\] ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Mar 3, 2005 ### [\[Cool Tools\] Code metrics, dependencies and more metrics](https://osherove.com/blog/2005/3/3/cool-tools-code-metrics-dependencies-and-more-metrics.html) - Feb 21, 2005 ### [\[CoolTool\] WinDirStat](https://osherove.com/blog/2005/2/21/cooltool-windirstat.html) - Jan 25, 2005 ### [A new face lift for AxTools CodeSmart](https://osherove.com/blog/2005/1/25/a-new-face-lift-for-axtools-codesmart.html) - Jan 9, 2005 ### [\[Cool Tool\] How could I miss Copernic Desktop Search?](https://osherove.com/blog/2005/1/9/cool-tool-how-could-i-miss-copernic-desktop-search.html) --- title: "XP Discussion: Invest in the design of the system every day" url: "https://osherove.com/blog/2005/1/26/xp-discussion-invest-in-the-design-of-the-system-every-day.md" canonical: "https://osherove.com/blog/2005/1/26/xp-discussion-invest-in-the-design-of-the-system-every-day.html" published: "2005-01-26T08:25:00" updated: "2005-01-26T08:25:00" tags: ["Agile Related"] author: "Roy Osherove" description: "I just had to quote Kent Beck over at the XPBookDiscussionGroup list: \" Invest in the design of the system every day . Strive to make the design of the system an excellent fit for the needs of the system that day. When…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # XP Discussion: Invest in the design of the system every day By Roy Osherove January 26, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published January 26, 2005; technical details may be outdated. I just had to quote [Kent Beck](http://c2.com/cgi/wiki?KentBeck) over at the [XPBookDiscussionGroup](http://groups.yahoo.com/group/xpbookdiscussiongroup/) list: "**Invest in the design of the system every day**. Strive to make the design of the system an excellent fit for the needs of the system that day. When your understanding of the best possible design leaps forward, work gradually but persistently to bring the design back into alignment with your understanding.   I was taught exactly the opposite of this strategy in school: "Put in all the design you can before you begin implementation because you'll never get another chance." The intellectual justification for this strategy came from a Barry Boehm study of 1960's defense contracts showing that the cost of fixing defects rose exponentially over time. If the same data also hold for adding features to today's software, then the cost of large-scale design changes should rise dramatically over time. In that case, the most economical design strategy is to make big design decisions early and defer all small-scale decisions until later.   For an assumption that shaped software development orthodoxy for decades, the increasing cost of change over time received little scrutiny. This assumption may no longer be valid. Do changes also increase in cost, the same way defects do? Even assuming changes do increase in cost sometimes, are there conditions under which the cost of changes does not increase? If changes do not grow increasingly expensive, what does that imply about the best way to develop software?   XP teams work hard to create conditions under which the cost of changing the software doesn't rise catastrophically. The automated tests, the continual practice of improving the design, and the explicit social process all contribute to keep the cost of changes low.   XP teams are confident in their ability to adapt the design to future requirements. Because of this, XP teams can meet their human need for immediate and frequent success as well as their economic need to defer investment to the last responsible moment. Some of the teams who read and applied the first edition of this book didn't get the part of the message about the last responsible moment. They piled story on story as quickly as possible with the least possible investment in design. Without daily attention to design, the cost of changes does skyrocket. The dire predictions of the critics comes true: poorly designed, brittle, hard-to-change systems.   The advice to XP teams is not to minimize design investment over the short run, but to keep the design investment in proportion to the needs of the system so far. The question is not whether or not to design, the question is when to design. Incremental design suggests that the most effective time to design is in the light of experience.   If "small, safe steps" is how to design, the next question is where to design. The simple heuristic I have found helpful is to eliminate duplication. If I have the same logic in two places, I work with the design to understand how I can have only one copy. Designs without duplication tend to be easy to change. You don't find yourself in the situation where you have to change the code in several places to add one feature.   As a direction for improvement, incremental design doesn't say that designing in advance of experience is horrible. It says that design done close to when it is used is more efficient. As your expertise grows in making changes to a running system in small, safe steps, you can afford to defer more and more of the design investment. As you do so, the system will get simpler, progress will start sooner, tests will be easier to write, and because the system is smaller there will be less to communicate with the team.    As more teams invest in daily design, they notice that the changes they are making are similar regardless of the purpose of the system. Refactoring is a discipline of design that codifies these recurring patterns of changes. These refactorings can occur at any level of scale. Few design decisions are difficult to change once made. The result is systems that can start small and grow as needed without exorbitant cost." ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jan 27, 2005 ### [Agile Israel user group changes location to SELA](https://osherove.com/blog/2005/1/27/agile-israel-user-group-changes-location-to-sela.html) - Jan 26, 2005 ### [SharpDevelop develops NUnit integration](https://osherove.com/blog/2005/1/26/sharpdevelop-develops-nunit-integration.html) - Jan 23, 2005 ### [Agile content for the Winter 2004 issue of Methods & Tools](https://osherove.com/blog/2005/1/23/agile-content-for-the-winter-2004-issue-of-methods-amp-tools.html) - Jan 18, 2005 ### [Announcing: First Agile Israel user group meeting this month!](https://osherove.com/blog/2005/1/18/announcing-first-agile-israel-user-group-meeting-this-month.html) --- title: "A new face lift for AxTools CodeSmart" url: "https://osherove.com/blog/2005/1/25/a-new-face-lift-for-axtools-codesmart.md" canonical: "https://osherove.com/blog/2005/1/25/a-new-face-lift-for-axtools-codesmart.html" published: "2005-01-25T18:20:00" updated: "2005-01-25T18:20:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "One of my all time favorite addins for VS.NET/VB6 just got another face-lift(I especially like the C++ additions): We are pleased to announce that we have just released CodeSMART 2005 for VS.NET. Packed with many…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A new face lift for AxTools CodeSmart By Roy Osherove January 25, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published January 25, 2005; technical details may be outdated. One of my all time favorite addins for VS.NET/VB6 just got another face-lift(I especially like the C++ additions): _We are pleased to announce that we have just released CodeSMART 2005 for VS.NET. Packed with many features and valuable tools, it currently represents the most advanced collection of utilities for Visual Studio .NET versions 2002 and 2003._   _Quick Presentation:_  [_http://www.axtools.com/cs2k5net\_screenshots.htm_](http://www.axtools.com/cs2k5net_screenshots.htm) _What's new in CodeSMART 2005 for VS.NET - TOP PICKS ===================================================_ _1.  CodeSMART now offers support for Visual C++ projects in several of its     subsystems: 'Code Explorer', 'Extended Find and Replace', 'AutoText',     'SmartComplete', 'Code Snippets', 'Multiple Copy and Paste Buffers'._ _2.  SmartComplete brings an Intellisense-like list with language (VB.NET, C#,     C++) keywords, statements and global functions that are missing from the     standard Intellisense list._ _3.  Designer Explorer: offers a convenient and simple way to visualize and     navigate a designer's control hierarchy._ _4.  Code Flow: can parse any method's code and produce a tree representing the     logical code flow (somehow similar to a code flowchart). The tree can also     be used to navigate the parsed method in the VS.NET code editor._ _5.  Tab Order Designer: an AutoOrder feature was included to automatically set     the tab order (the algorithm orders controls left to right, top to bottom)._ _6.  HotKey Designer: a simple and convenient way for designer control hotkey     automatic management._  _... and many more! For a comprehensive what's new list, see:_     [_http://www.axtools.com/cs2k5net\_whatsnew.htm_](http://www.axtools.com/cs2k5net_whatsnew.htm) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Feb 21, 2005 ### [\[CoolTool\] WinDirStat](https://osherove.com/blog/2005/2/21/cooltool-windirstat.html) - Jan 26, 2005 ### [JetBrains .NET Profiler](https://osherove.com/blog/2005/1/26/jetbrains-net-profiler.html) - Jan 9, 2005 ### [\[Cool Tool\] How could I miss Copernic Desktop Search?](https://osherove.com/blog/2005/1/9/cool-tool-how-could-i-miss-copernic-desktop-search.html) - Jan 8, 2005 ### [\[Cool Tool\] XML Visualizer for Visual Studio .NET 2003](https://osherove.com/blog/2005/1/8/cool-tool-xml-visualizer-for-visual-studio-net-2003.html) --- title: "How to register for .NET user groups in Israel" url: "https://osherove.com/blog/2005/1/23/how-to-register-for-net-user-groups-in-israel.md" canonical: "https://osherove.com/blog/2005/1/23/how-to-register-for-net-user-groups-in-israel.html" published: "2005-01-23T22:52:00" updated: "2005-01-23T22:52:00" tags: ["Community"] author: "Roy Osherove" description: "I recently got a few emails from people in Israel that wanted to know how they can be notified in advance on various user group meetings. *finally* an easy answer :) To get notified every time the Visual C# user group…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to register for .NET user groups in Israel By Roy Osherove January 23, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published January 23, 2005; technical details may be outdated. I recently got a few emails from people in Israel that wanted to know how they can be notified in advance on various user group meetings. \*finally\* an easy answer :) - To get notified every time the [Visual C# user group](http://www.comconix.com/ivcug/) meets, send an email to Moshe Raab, the group's manager at **IVCUG at Comconix.com** and ask to be registered for email notifications - To get notified every time the [Visual Basic user group](http://www.renaissance.co.il/ivbug/) meets, send an email to [Jackie Goldstein](http://weblogs.asp.net/jackieg), the group's manager at **[IVBUG](http://www.renaissance.co.il/ivbug) at renaissance.co.il**  - To get notified every time the [.NET architects user group](http://www.microsoft.com/israel/events/default.aspx?event=architects) meets, send an email to Yosi Levy, the group's manager at **yosi at omnisys.co.il** There are more user groups in Israel. [Learn about them in this page](http://www.microsoft.com/israel/communities/usergroups/default.aspx). Of course, that page still doesn't include the [upcoming Agile Israel user group](http://weblogs.asp.net/rosherove/archive/2005/01/18/355318.aspx), but time will tell ;) P.S 28 people have registered for the first agile encounter and counting. This works, sorta, considering the room holds about 25 people sitting :) I'm planning on some no shows for the first meeting. the next one should be held at a larger location. ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Jan 28, 2005 ### [Is CodeBetter.Com to become the new .NETWeblogs?](https://osherove.com/blog/2005/1/28/is-codebettercom-to-become-the-new-netweblogs.html) - Jan 27, 2005 ### [Agile Israel user group changes location to SELA](https://osherove.com/blog/2005/1/27/agile-israel-user-group-changes-location-to-sela.html) - Jan 23, 2005 ### [Reminder: .Net astronauts user group meeting today](https://osherove.com/blog/2005/1/23/reminder-net-astronauts-user-group-meeting-today.html) - Jan 20, 2005 ### [Help the Tsunami Victims of Banda Aceh - Buy an hour of Top-Notch Consulting](https://osherove.com/blog/2005/1/20/help-the-tsunami-victims-of-banda-aceh-buy-an-hour-of-top-no.html) --- title: "Agile content for the Winter 2004 issue of Methods & Tools" url: "https://osherove.com/blog/2005/1/23/agile-content-for-the-winter-2004-issue-of-methods-amp-tools.md" canonical: "https://osherove.com/blog/2005/1/23/agile-content-for-the-winter-2004-issue-of-methods-amp-tools.html" published: "2005-01-23T22:19:00" updated: "2005-01-23T22:19:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Winter 2004 issue's content: * Agile Multidisciplinary Teamwork by Gautam Gosh * Adaptive Project Management Using Scrum by Craig Murphy * Delivering Real Business Value Using FDD by Grant Cause Methods & Tools is a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile content for the Winter 2004 issue of Methods & Tools By Roy Osherove January 23, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published January 23, 2005; technical details may be outdated. Winter 2004 issue's content: \* Agile Multidisciplinary Teamwork by Gautam Gosh \* Adaptive Project Management Using Scrum by Craig Murphy \* Delivering Real Business Value Using FDD by Grant Cause Methods & Tools is a free e-newsletter for software developers. To download or read this issue go to the PDF area of [http://www.methodsandtools.com](http://www.methodsandtools.com/) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jan 26, 2005 ### [SharpDevelop develops NUnit integration](https://osherove.com/blog/2005/1/26/sharpdevelop-develops-nunit-integration.html) - Jan 26, 2005 ### [XP Discussion: Invest in the design of the system every day](https://osherove.com/blog/2005/1/26/xp-discussion-invest-in-the-design-of-the-system-every-day.html) - Jan 18, 2005 ### [Announcing: First Agile Israel user group meeting this month!](https://osherove.com/blog/2005/1/18/announcing-first-agile-israel-user-group-meeting-this-month.html) - Jan 15, 2005 ### [The role of helper frameworks in your tests](https://osherove.com/blog/2005/1/15/the-role-of-helper-frameworks-in-your-tests.html) --- title: "The Quality Pledge" url: "https://osherove.com/blog/2005/1/23/the-quality-pledge.md" canonical: "https://osherove.com/blog/2005/1/23/the-quality-pledge.html" published: "2005-01-23T21:59:00" updated: "2005-01-23T21:59:00" tags: ["Project Management"] author: "Roy Osherove" description: "\"I just received this in email: Pledge Our company is completely and absolutely committed to quality. * * Except on time-critical projects and during adverse cash-flow situations. When else would you need to be…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Quality Pledge By Roy Osherove January 23, 2005 In [Project Management](https://osherove.com/blog/category/project-management) **Historical article** · Originally published January 23, 2005; technical details may be outdated. _"I just received this in email: Pledge Our company is completely and absolutely committed to quality. \* \* Except on time-critical projects and during adverse cash-flow situations._ _When else would you need to be committed to quality?"_ _\[via_ [_Johanna_](http://www.jrothman.com/weblog/archive/2005_01_01_mpdarchive.html#110554387464380242)_\]_ Sounds familiar? Not to me. Forget the \* clause. I haven't known a company that actually put it in writing that they are commited to quality in Israel. Now \*that\* sounds familiar. ## More in Project Management [All posts in Project Management](https://osherove.com/blog/category/project-management) - Apr 15, 2005 ### [What does an Agile work environment look like? Here's one variation](https://osherove.com/blog/2005/4/15/what-does-an-agile-work-environment-look-like-heres-one-vari.html) - Feb 21, 2005 ### [Employing TDD and unit testing with Waterfall methodologies](https://osherove.com/blog/2005/2/21/employing-tdd-and-unit-testing-with-waterfall-methodologies.html) - Jan 23, 2005 ### [About architecture and astronauts](https://osherove.com/blog/2005/1/23/about-architecture-and-astronauts.html) - Dec 29, 2004 ### [My interview with Johanna Rothman goes live on ITConversations.Com](https://osherove.com/blog/2004/12/29/my-interview-with-johanna-rothman-goes-live-on-itconversatio.html) --- title: "New stuff on Team Agile: XtUnit and Interception block with basic documentation" url: "https://osherove.com/blog/2005/1/23/new-stuff-on-team-agile-xtunit-and-interception-block-with-b.md" canonical: "https://osherove.com/blog/2005/1/23/new-stuff-on-team-agile-xtunit-and-interception-block-with-b.html" published: "2005-01-23T14:29:00" updated: "2005-01-23T14:29:00" tags: [".Net Original"] author: "Roy Osherove" description: "Update: Fixed broken links (21-6-06) I just finished adding a new downloads section to the Team Agile website . In the process, I've revamped some of the downloads I've made available to date with some documentation and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New stuff on Team Agile: XtUnit and Interception block with basic documentation By Roy Osherove January 23, 2005 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published January 23, 2005; technical details may be outdated. **Update: Fixed broken links (21-6-06)** I just finished adding a new downloads section to the [Team Agile website](http://teamagile.com/mainpages/downloads.html). In the process, I've revamped some of the downloads I've made available to date with some documentation and a face lift. **XT-Unit** XtUnit is a unit testing extension for .Net based frameworks. It uses the interception application block to provide runtime abilities of rolling back any changes that were made to the database during Data related unit tests. - [Download the XtUnit source code](http://teamagile.com/Downloads/TeamAgile.XtUnit.Src.zip) - [Download the XtUnit dll](http://teamagile.com/Downloads/TeamAgile.XtUnit.Bin.zip) - [Learn more about XTUnit in this early article](https://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx) (which points to an older version) - **Interception Application Block** The interception application block allows the developer to easily add interception abilities to various classes in the framework. It's as easy as inheriting from a class and overriding two methods. - [Download the Interception Application Block](http://teamagile.com/Downloads/TeamAgile.ApplicationBlocks.Interception.zip) - [Learn more about the interception block in this early article](https://weblogs.asp.net/rosherove/archive/2004/10/12/241068.aspx) (which points to an older version) - **Extensibility Application Block** The extensibility block provides basic classes and means to load and search for plugins for your application. Using it you can just use search classes and loader classes that make the best use of reflection and loading behavior on the .NET platform to create a truly pluggable application. - [Download EAP 1.0](https://osherove.com/LinkClick.aspx?link=http%3a%2f%2fTeamAgile.com%2fDownloads%2feap10.zip) - Learn more about Extensibility [here](http://msdn.microsoft.com/asp.net/community/authors/royosherove/default.aspx?pull=/library/en-us/dnaspp/html/pluginframework.asp) and [here](http://msdn.microsoft.com/asp.net/community/authors/royosherove/default.aspx?pull=/library/en-us/dnaspp/html/searchforplugins.asp) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 9, 2005 ### [\[Recording\] Roy Osherove on Software Factories and Domain Specific Languages](https://osherove.com/blog/2005/4/9/recording-roy-osherove-on-software-factories-and-domain-spec.html) - Mar 3, 2005 ### [Solving Binary serialization versioning conflicts](https://osherove.com/blog/2005/3/3/solving-binary-serialization-versioning-conflicts.html) - Jan 8, 2005 ### [\[Article\] Defensive event publishing in .NET](https://osherove.com/blog/2005/1/8/article-defensive-event-publishing-in-net.html) - Jan 8, 2005 ### [Making ClickOnce publishing work in VS.Net 2005 Beta 1+](https://osherove.com/blog/2005/1/8/making-clickonce-publishing-work-in-vsnet-2005-beta-1.html) --- title: "Reminder: .Net astronauts user group meeting today" url: "https://osherove.com/blog/2005/1/23/reminder-net-astronauts-user-group-meeting-today.md" canonical: "https://osherove.com/blog/2005/1/23/reminder-net-astronauts-user-group-meeting-today.html" published: "2005-01-23T08:14:00" updated: "2005-01-23T08:14:00" tags: ["Architecture", "Community"] author: "Roy Osherove" description: "Reminder: .Net Architects (\" Astronauts \"? :-) user group meeting today !" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Reminder: .Net astronauts user group meeting today By Roy Osherove January 23, 2005 In [Architecture](https://osherove.com/blog/category/architecture), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published January 23, 2005; technical details may be outdated. Reminder: .Net Architects ("[Astronauts](http://weblogs.asp.net/rosherove/archive/2005/01/23/358879.aspx)"? :-) [user group meeting today](http://weblogs.asp.net/rosherove/archive/2005/01/12/351560.aspx)! ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Mar 2, 2005 ### [Deep Indigo, Clemens style](https://osherove.com/blog/2005/3/2/deep-indigo-clemens-style.html) - Mar 2, 2005 ### [Updater is the new DCOM](https://osherove.com/blog/2005/3/2/updater-is-the-new-dcom.html) - Jan 23, 2005 ### [About architecture and astronauts](https://osherove.com/blog/2005/1/23/about-architecture-and-astronauts.html) --- title: "About architecture and astronauts" url: "https://osherove.com/blog/2005/1/23/about-architecture-and-astronauts.md" canonical: "https://osherove.com/blog/2005/1/23/about-architecture-and-astronauts.html" published: "2005-01-23T08:12:00" updated: "2005-01-23T08:12:00" tags: ["Architecture", "Project Management"] author: "Roy Osherove" description: "I really like what Joel writes about Architecture Astronauts (thanks for sending, Alex K.!). Sometimes it does feel that way. \"When you go too far up, abstraction-wise, you run out of oxygen. Sometimes smart thinkers…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About architecture and astronauts By Roy Osherove January 23, 2005 In [Architecture](https://osherove.com/blog/category/architecture), [Project Management](https://osherove.com/blog/category/project-management) **Historical article** · Originally published January 23, 2005; technical details may be outdated. I really like [what Joel writes about Architecture Astronauts](http://www.joelonsoftware.com/articles/fog0000000018.html) (thanks for sending, Alex K.!). Sometimes it does feel that way. _"When you go too far up, abstraction-wise, you run out of oxygen. Sometimes smart thinkers just don't know when to stop, and they create these absurd, all-encompassing, high-level pictures of the universe that are all good and fine, but don't actually mean anything at all. These are the people I call Architecture Astronauts"_ I do like to see myself in both sides of this argument though. I really like hearing and reading about architecture, but sometimes it does feel a bit... waste of my time? I mean - I can learn about messaging or the next version of RSS all I want, but what I'd really like to do is build that new application I wanted that can use plugins, or setup my data so that I can use it [without thinking about it too much](http://nhibernate.sf.net/). The thing is, sometimes that architecture thing really is needed. Its needed in those special edge cases where you really wouldn’t be able to do anything without knowing it first. [In his interview](http://weblogs.asp.net/rosherove/archive/2005/01/22/358705.aspx), Juval Lowy talked about the value of having a great architect and how, in the right moment, it can save a lot of money and time for the company. Juval implicitly acknowledges the fact that there are Architecture Astronauts out there, that can take the theory and apply it to really complex systems. He admits that there are only a few hundred people architects in the world capable of this (the real Astronauts) and that its wise to just hire one of those instead of making your developers learn it all by themselves because they're not going to do a good enough job at it. Financially, you could say that Architecture Astronauts are making their own economy. their own little "We know best" economy that, god willing, will stay theirs because no one is smart enough to actually learn this stuff on their own. Think auto-mechanics; You go in, you pay a hell of a lot  of money, and in the end you think you got what you paid for ([Alien artifacts](http://hyperthink.net/blog/PermaLink,guid,e462a1cb-2828-41ae-a3a1-baf3e8272089.aspx)). It feels like pretty grim view. Here we are, all trying to learn all this architecture stuff, but we should just give it all up because someone already knows it all. By the time we learn it, there’ll be much more to learn and we'll always find ourselves with the shortened of the stick. I think that's wrong. I think that view only applies to less than 2% of the world's software. Very little applications demand this sort of commitment to design and architecture, and less than 2% are actually able to provide such means to achieving this architecture anyway. The rest of the world should still use "good enough" architectures and try to keep up with what's going on. Yes - there will always be absurdly ugly and un-architected systems, but have you stopped and thought about how many of the systems you're using today are absurdly ugly on the inside? Practically all of them. And the world functions. And even sort-of-well. Every once in a while it malfunctions, but mostly we're doing ok. Yes - we lack the ability to upgrade them, or inter-connect them, or they are hard to maintain or any other of the bad things that ugly applications can do for the average developer/maintainer. Frankly, I don't think that situation will change in 10 or 20 years. In 10 or 20 years, people will still have to build amazingly large and useful applications, using today's technology such as .NET, web services and so on. The same developers who did the job yesterday, will do the job tomorrow. Calculate the fraction of developers who actually sit there and write great, maintainable code and see how amazingly, all those "new" systems will  be hard to maintain, debug and deploy just as much as (if not more) the systems of yesterday written in COBOL. I've certainly seen my share of bad code in the past years (including 2004) which can certainly leads me to believe this. So, taken the following points (facts?) - Bad coders and builders will forever exist in software.  - Bad coders usually find their ways into gigantic firms which hire by the volume, not the quality - Gigantic firms are usually the ones who end up trying to build the world's largest and most dependable software - Given an amount of developers, and a factory like approach to building, you can build any functional software product, with any level of scalability or dependability, it just may take more time than you though, or you would have to do it several times to get it right - Gigantic companies have no problem of entering contracts that they \*know\* they will not be on schedule - Gigantic companies do have the money to hire great architects - Gigantic companies may sometimes be too mindless to actually hire a great architect We can most surely tell we're going to end up with - Software that is well architected (if they hired the great architect) - Software that is not well architected(if they are mindless) - Software that is ugly and unmaintainable (you bet!) - Software that works for its purposes(you bet! it may have takes a few more months/years but they will do it eventually because they are a gigantic company and they have to finish their billion dollar contract. And if they don't some other gigantic company will) So, where are we? I think that, in spite of my best feelings about great architecture (as those of most of the readers), the \*quality\* of software will usually be low. Also, most software will \*not\* have a great architecture, but will just work. And sadly, there will always be ugly and unmaintainable code to maintain/convince the boss to rewrite. How do we change this? There are two levels to this issue. The first one is \*quality\* and on that front we're doing better, but we still aren’t even 5% of the way there. Agile methodologies, test driven development, XP, Scrum; all those are great ways to start re-thinking and implementing the quality we would \*like\* to see in our software. The second issue is architecture. Yes, the world makes us go more and more in the way of distributed systems. That on its own is a great motivator to start thinking about architecture. But its not enough. Good architecture requires good architects. The question becomes two other questions: Will we need more good architects? and how do we create new ones? _Will we need more architects?_ Well,  we'll certainly need more people with more knowledge about architecture and building systems correctly, but that doesn't mean we may need more architects in the sense explained thus far. Most applications will do just fine with a little more knowledge about architecture, design patterns, OO and such. Having Juval Lowy visit every 3 man months project in the universe would lead to one sure thing - a complete halt of the world's software development efforts. It would simply take to much time to build software, even the simplest one, and it won't work. Ad-hoc software will always exist and even in its ugliest, most nasty throw-away form, it will continue to be valuable. _How will we create new architects? _There will be more applications that need "real" architects, but not in a life-altering, industry altering way. We will need to find a better way to educate developers about architecture and design. Today's methods just don't do justice to what we really need. It still won't mean no ugly code, but it will ease the pain a little and enable the next generation of software, that uses the new paradigm of distributed architecture, to walk through the door and start making the world a better place in their own little way. Things like an architect's workshop are a good starting point, but we'll have to find less costly ways to train our developers to learn the most important things. The amount of articles in magazines and on the web regarding these issues is rising, and its only a matter of time before someone finds a way to pre-chew this stuff so it can be easily taught to developers in a way that costs less time and money but brings the same results. ## More in Architecture [All posts in Architecture](https://osherove.com/blog/category/architecture) - Mar 2, 2005 ### [Updater is the new DCOM](https://osherove.com/blog/2005/3/2/updater-is-the-new-dcom.html) - Jan 23, 2005 ### [Reminder: .Net astronauts user group meeting today](https://osherove.com/blog/2005/1/23/reminder-net-astronauts-user-group-meeting-today.html) --- title: "[Interview] Juval Lowy on great architects and project management" url: "https://osherove.com/blog/2005/1/22/interview-juval-lowy-on-great-architects-and-project-managem.md" canonical: "https://osherove.com/blog/2005/1/22/interview-juval-lowy-on-great-architects-and-project-managem.html" published: "2005-01-22T18:50:00" updated: "2005-01-22T18:50:00" tags: ["Interview"] author: "Roy Osherove" description: "Summary Roy Talks with Juval Lowy, the principal of IDesign and one of the industry's leading software architects. The topics include: Project management and the IDesign process, staged delivery and what's missing in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Interview\] Juval Lowy on great architects and project management By Roy Osherove January 22, 2005 In [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published January 22, 2005; technical details may be outdated. **Summary** Roy Talks with  Juval Lowy, the principal of [IDesign](http://www.idesign.net/) and one of the industry's leading software architects. The topics include: Project management and the IDesign process, staged delivery and what's missing in today's Agile methdologies, the makings of a good software architect, details about his upcoming book and on the one to follow after that, the future of modeling tools, Longhorn, Indigo, SOA and interoperability and more. The interview also takes a more personal tone when Juval talks about his strategy for managing his busy schedule, how IDesign came to be and the people working there, the biggest mistake he's done and more tidbits. A feature packed 73 minute interview, is all I can say. [Download the interview here](http://www.teamagile.com/mainpages/Interviews.html) ## More in Interview [All posts in Interview](https://osherove.com/blog/category/interview) - Mar 28, 2005 ### [\[Interview\]Kieran Mockford, MSBuild Program Manager - on MSBuild, TDD, the Microsoft build process and much more](https://osherove.com/blog/2005/3/28/interviewkieran-mockford-msbuild-program-manager-on-msbuild.html) - Mar 23, 2005 ### [\[Audio Interview\] Charlie Poole, NUnit lead developer - on NUnit, XP, TDD and much more](https://osherove.com/blog/2005/3/23/audio-interview-charlie-poole-nunit-lead-developer-on-nunit.html) - Jan 21, 2005 ### [\[Interview\] Natty Gur - Organizational Enterprise Architecture](https://osherove.com/blog/2005/1/21/interview-natty-gur-organizational-enterprise-architecture.html) - Jan 17, 2005 ### [Wanted: Great questions for an interview with Juval Lowy](https://osherove.com/blog/2005/1/17/wanted-great-questions-for-an-interview-with-juval-lowy.html) --- title: "MVP.Xml library released" url: "https://osherove.com/blog/2005/1/22/mvpxml-library-released.md" canonical: "https://osherove.com/blog/2005/1/22/mvpxml-library-released.html" published: "2005-01-22T14:11:00" updated: "2005-01-22T14:11:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "\" On behalf of the Mvp.Xml Project 's team I'm glad to announce release v1.0 of the Mvp.Xml library . Mvp.Xml project is developed by Microsoft MVPs in XML technologies and XML Web Services worldwide. It is aimed at…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MVP.Xml library released By Roy Osherove January 22, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published January 22, 2005; technical details may be outdated.  "_On behalf of the_ [_Mvp.Xml Project_](http://mvp-xml.sf.net/)_'s_ [_team_](https://sourceforge.net/project/memberlist.php?group_id=102352) _I'm glad to announce_ [_release v1.0 of the Mvp.Xml library_](http://sourceforge.net/project/showfiles.php?group_id=102352&package_id=112234)_._ [_Mvp.Xml project_](http://mvp-xml.sf.net/) _is developed by_ [_Microsoft MVPs_](http://www.microsoft.com/communities/mvp/mvp.mspx) _in_ [_XML technologies_](http://www.microsoft.com/communities/MVP/MVPList.mspx?Params=%7eCMTYDataSvcParams%5e%7earg+Name%3d%22hasBio%22+Value%3d%220%22%2f%5e%7earg+Name%3d%22Product%22+Value%3d%22Windows%20Server%20System%20-%20XML%22%2f%5e%7esParams%5e%7e%2fsParams%5e%7e%2fCMTYD) _and_ [_XML Web Services_](http://www.microsoft.com/communities/MVP/MVPList.mspx?Params=%7eCMTYDataSvcParams%5e%7earg+Name%3d%22hasBio%22+Value%3d%220%22%2f%5e%7earg+Name%3d%22Product%22+Value%3d%22Windows%20Server%20System%20-%20XML%20Web%20Services%22%2f%5e%7esParams%5e%7e%2fsPar) _worldwide. It is aimed at supplementing .NET framework functionality available through the System.Xml namespace and related namespaces such as System.Web.Services."_ \[via [Oleg](http://www.tkachenko.com/blog/archives/000382.html) - XML MVP\] MVP.Xml is a great addon if you're going deep into Xml land in your projects. Read [Oleg's post](http://www.tkachenko.com/blog/archives/000382.html) for what this library offers. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Feb 1, 2005 ### [Launcher: Clean auto-deployment and auto-updating code from Franklins.Net](https://osherove.com/blog/2005/2/1/launcher-clean-auto-deployment-and-auto-updating-code-from-f.html) - Jan 30, 2005 ### [Debugging VB6 binaries in Visual Studio .NET](https://osherove.com/blog/2005/1/30/debugging-vb6-binaries-in-visual-studio-net.html) - Jan 18, 2005 ### [Data Binding with .Net 2.0 : upcoming coolness](https://osherove.com/blog/2005/1/18/data-binding-with-net-20-upcoming-coolness.html) - Jan 11, 2005 ### [BackgroundWorker for the compact framework.](https://osherove.com/blog/2005/1/11/backgroundworker-for-the-compact-framework.html) --- title: "[Interview] Natty Gur - Organizational Enterprise Architecture" url: "https://osherove.com/blog/2005/1/21/interview-natty-gur-organizational-enterprise-architecture.md" canonical: "https://osherove.com/blog/2005/1/21/interview-natty-gur-organizational-enterprise-architecture.html" published: "2005-01-21T01:58:00" updated: "2005-01-21T01:58:00" tags: ["Interview"] author: "Roy Osherove" description: "Download the Mp3 file here (note: this specific interview was conducted in Hebrew) \"Summary Roy Talks with Natty Gur - An independent software consultant specializing in Enterprise architecture - in the organizational…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Interview\] Natty Gur - Organizational Enterprise Architecture By Roy Osherove January 21, 2005 In [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published January 21, 2005; technical details may be outdated. _[Download the Mp3 file here](http://www.teamagile.com/mainpages/Interviews.html)_  _(note: this specific interview was conducted in Hebrew)_ **_"Summary_** _Roy Talks with_ [_Natty Gur_](http://weblogs.asp.net/NGur) _- An independent software consultant specializing in Enterprise architecture - in the organizational level. In this interview we'll explore what organizational architecture really means and why its needed. More topics in the interview include Natty's open source project,_ [_NWAF_](http://nwaf.sf.net/)_, Service oriented architecture, organizational patterns such as_ [_TOGAF_](http://theopengroup.org/) _and DODAF, the problems with layered architecture (N-Tier), Agile development, learning from past mistakes and Naked objects. Good stuff."_ ## More in Interview [All posts in Interview](https://osherove.com/blog/category/interview) - Mar 23, 2005 ### [\[Audio Interview\] Charlie Poole, NUnit lead developer - on NUnit, XP, TDD and much more](https://osherove.com/blog/2005/3/23/audio-interview-charlie-poole-nunit-lead-developer-on-nunit.html) - Jan 22, 2005 ### [\[Interview\] Juval Lowy on great architects and project management](https://osherove.com/blog/2005/1/22/interview-juval-lowy-on-great-architects-and-project-managem.html) - Jan 17, 2005 ### [Wanted: Great questions for an interview with Juval Lowy](https://osherove.com/blog/2005/1/17/wanted-great-questions-for-an-interview-with-juval-lowy.html) - Jan 11, 2005 ### [\[Interview\] Jonathan de Halleux on mbUnit and model based testing](https://osherove.com/blog/2005/1/11/interview-jonathan-de-halleux-on-mbunit-and-model-based-test.html) --- title: "Help the Tsunami Victims of Banda Aceh - Buy an hour of Top-Notch Consulting" url: "https://osherove.com/blog/2005/1/20/help-the-tsunami-victims-of-banda-aceh-buy-an-hour-of-top-no.md" canonical: "https://osherove.com/blog/2005/1/20/help-the-tsunami-victims-of-banda-aceh-buy-an-hour-of-top-no.html" published: "2005-01-20T11:49:00" updated: "2005-01-20T11:49:00" tags: ["Community"] author: "Roy Osherove" description: "\" It looks like Scott was the first to blog this... A bunch of us, championed by Julia Lerman and Stephen Forte are going to auction an hour each of our consulting time to benefit the Tsunami victims of Banda Aceh . ALL…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Help the Tsunami Victims of Banda Aceh - Buy an hour of Top-Notch Consulting By Roy Osherove January 20, 2005 In [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published January 20, 2005; technical details may be outdated. "_It looks like_ [_Scott_](http://www.hanselman.com/blog/PermaLink,guid,66fd8fe6-d3da-493d-b867-9bfdeefe97fa.aspx) _was the first to blog this..._ _A bunch of us, championed by_ [_Julia Lerman_](http://www.thedatafarm.com/blog/ "http") _and_ [_Stephen Forte_](http://www.stephenforte.net/owdasblog/ "http") _are going to auction an hour each of our consulting time to benefit the_ [_Tsunami victims of Banda Aceh_](http://www.acehaid.org/ "http")_.  **ALL** of the money will go to help the victims._ _Within the next 48 hours the auctions will appear on_ [_eBay_](http://www.ebay.com/ "http")_. Links will be posted as soon as they show up. Here are the participants._ **[_Michelle Leroux Bustamante_](http://www.dasblonde.net/ "http")_, [Jonathan Goodyear](http://aspsoft.blogs.com/ "http"),_ [_Andrew Brust_](http://citigatehudson.com/news/news_2004_09_08.htm "http")_,_ [_Richard Campbell_](http://www.campbellassociates.ca/blog/ "http")_,_ [_Adam Cogan_](http://www.ssw.com.au/SSW/Employees/employeesprofile.aspx?EmpID=AC "http")_,_ [_Malek Kemmou_](http://www.malekkemmou.ma/ "http")_,_ [_Jackie Goldstein_](https://osherove.com/JackieG "http")_,_ [_Ted Neward_](http://www.neward.net/ted/weblog/ "http")_,_ [_Kathleen Dollard_](http://gendotnet.com/blog/ "http")_,_ _Hector M Obregon, [Patrick Hynds](http://www.criticalsites.com/phynds/ "http"), [Fernando Guerrero](http://sqljunkies.com/WebLog/fguerrero/ "http"), [Kate Gregory](http://www.gregcons.com/kateblog/ "http"), [Joel Semeniuk](https://osherove.com/jsemeniuk "http"), [Scott Hanselman](http://www.computerzen.com/ "http"), [Barry Gervin](http://www.objectsharp.com/blogs/barry "http"), [Clemens Vasters](http://staff.newtelligence.net/clemensv/ "http"), [Jorge Oblitas](http://www.icuadrado.com/ "http"), [Stephen Forte](http://www.stephenforte.net/owdasblog/ "http"), Jeffrey Richter, [John Robbins](http://www.wintellect.com/about/instructors/instructorbios.aspx?id=2 "http"), [Jeff Prosise](http://www.wintellect.com/weblogs/wintellect/ "http")._** _..."_ \[For more details - [read Jackie's weblog](http://weblogs.asp.net/jackieg/archive/2005/01/19/356295.aspx)\] ## More in Community [All posts in Community](https://osherove.com/blog/category/community) - Jan 23, 2005 ### [How to register for .NET user groups in Israel](https://osherove.com/blog/2005/1/23/how-to-register-for-net-user-groups-in-israel.html) - Jan 23, 2005 ### [Reminder: .Net astronauts user group meeting today](https://osherove.com/blog/2005/1/23/reminder-net-astronauts-user-group-meeting-today.html) - Jan 18, 2005 ### [Announcing: First Agile Israel user group meeting this month!](https://osherove.com/blog/2005/1/18/announcing-first-agile-israel-user-group-meeting-this-month.html) --- title: "Data Binding with .Net 2.0 : upcoming coolness" url: "https://osherove.com/blog/2005/1/18/data-binding-with-net-20-upcoming-coolness.md" canonical: "https://osherove.com/blog/2005/1/18/data-binding-with-net-20-upcoming-coolness.html" published: "2005-01-18T21:01:00" updated: "2005-01-18T21:01:00" tags: [".Net 2.0", ".Net Quotations"] author: "Roy Osherove" description: "Brian Noyes posts a little nugget on Data Binding with .Net 2.0 from his upcoming book. Generics are indeed very cool." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Data Binding with .Net 2.0 : upcoming coolness By Roy Osherove January 18, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published January 18, 2005; technical details may be outdated. [Brian Noyes](http://www.softinsight.com/bnoyes) posts a little [nugget on Data Binding with .Net 2.0](http://www.softinsight.com/bnoyes/PermaLink.aspx?guid=44feee48-9511-4324-a602-93811753027e) from his upcoming book. Generics are indeed very cool. ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Apr 14, 2005 ### [Debug Visualizers in VS 2005: Almost there, one big feature missing](https://osherove.com/blog/2005/4/14/debug-visualizers-in-vs-2005-almost-there-one-big-feature-mi.html) - Apr 9, 2005 ### [Whitepaper: Introducing System Transactions, by Juval Lowy](https://osherove.com/blog/2005/4/9/whitepaper-introducing-system-transactions-by-juval-lowy.html) - Jan 11, 2005 ### [\[Interview\] Jonathan de Halleux on mbUnit and model based testing](https://osherove.com/blog/2005/1/11/interview-jonathan-de-halleux-on-mbunit-and-model-based-test.html) - Jan 8, 2005 ### [Making ClickOnce publishing work in VS.Net 2005 Beta 1+](https://osherove.com/blog/2005/1/8/making-clickonce-publishing-work-in-vsnet-2005-beta-1.html) --- title: "Announcing: First Agile Israel user group meeting this month!" url: "https://osherove.com/blog/2005/1/18/announcing-first-agile-israel-user-group-meeting-this-month.md" canonical: "https://osherove.com/blog/2005/1/18/announcing-first-agile-israel-user-group-meeting-this-month.html" published: "2005-01-18T18:40:00" updated: "2005-01-18T18:40:00" tags: ["Agile Related", "Community"] author: "Roy Osherove" description: "I think its about time to do something about that Agile user group I talked so much about. So. The first meeting of the Agile Israel user group will be held on January 31st, Monday at 18:00 at Magen . Co-managing the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Announcing: First Agile Israel user group meeting this month! By Roy Osherove January 18, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Community](https://osherove.com/blog/category/community) **Historical article** · Originally published January 18, 2005; technical details may be outdated. I think its about time to do something about that Agile user group I talked so much about. So. The first meeting of the Agile Israel user group will be held on **January 31st, Monday at 18:00 at** [**Magen**](http://www.magen.com/). Co-managing the group with me will be [Udi Dahan](http://www.thesoftwaresimplist.com/). Udi has been into Agile methodologies for as long as I've known him, and I couldn't think of anyone better to help me manage the group. Udi was  the one to suggest the idea of actually forming such a user group, about a year ago if I recall correctly. So thanks for the great idea, Udi! The meeting will last for about 3 hours with a break in between. **January 31st, Monday at 18:00 at** [**Magen**](http://www.magen.com/) - 17:30 - gathering and registration - 18:00 - Introduction and welcome - 18:15 - **Why Agile?** (Roy Osherove) - _19:30 - break_ - 19:45 - **Agile, Iterative development with O/R Mapping tools** ([Udi Dahan](http://www.thesoftwaresimplist.com/)) - 21:00 - Raffle and questionnaire Udi's session will be a natural continuation of the talk he gave in the last IVCUG meeting on O/R mapping tools. If you were there, you'll like his presentation even more. The room we'll be in currently can hold up to 30-35 people. If we can fill that up, that would be awesome. But realistically, I don't think that will happen on the first meeting. I'm arranging for SELA university, through Alon Fleiss, to provide us with a class once a month. That class will also have computers so ther'll be a chance to do hands-on meetings as well. **If you intend to go**, please send an email to : **UserGroup** at **TeamAgile.com** with your details**.** I also have a list of emails from people who have contacted me at the .Net DeepDive event and throughout the various TDD workshops that have expressed interest in joining the group. You'll be notified too, but just in case, send me an email anyway. I'm working on a user group site. If there's anyone out there with graphical skills that would like to help me figure out a nice logo for the user group, that would be awesome. Let's see if we can make it happen. See you there! ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jan 26, 2005 ### [XP Discussion: Invest in the design of the system every day](https://osherove.com/blog/2005/1/26/xp-discussion-invest-in-the-design-of-the-system-every-day.html) - Jan 23, 2005 ### [Agile content for the Winter 2004 issue of Methods & Tools](https://osherove.com/blog/2005/1/23/agile-content-for-the-winter-2004-issue-of-methods-amp-tools.html) - Jan 15, 2005 ### [The role of helper frameworks in your tests](https://osherove.com/blog/2005/1/15/the-role-of-helper-frameworks-in-your-tests.html) - Jan 11, 2005 ### [Agile Deployment](https://osherove.com/blog/2005/1/11/agile-deployment.html) --- title: "Wanted: Great questions for an interview with Juval Lowy" url: "https://osherove.com/blog/2005/1/17/wanted-great-questions-for-an-interview-with-juval-lowy.md" canonical: "https://osherove.com/blog/2005/1/17/wanted-great-questions-for-an-interview-with-juval-lowy.html" published: "2005-01-17T22:59:00" updated: "2005-01-17T22:59:00" tags: ["Interview"] author: "Roy Osherove" description: "I'll be doing an online interview using Skype tomorrow with Juval Lowy . It's really hard to ask good questions at such interview. I mean - where do you start? So, I need your help. What are the top 3 questions I should…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Wanted: Great questions for an interview with Juval Lowy By Roy Osherove January 17, 2005 In [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published January 17, 2005; technical details may be outdated. I'll be doing an online interview using Skype tomorrow with [Juval Lowy](http://www.idesign.net/).  It's really hard to ask good questions at such interview. I mean - where do you start? So, I need your help.  What are the top 3 questions I should ask him? ## More in Interview [All posts in Interview](https://osherove.com/blog/category/interview) - Jan 22, 2005 ### [\[Interview\] Juval Lowy on great architects and project management](https://osherove.com/blog/2005/1/22/interview-juval-lowy-on-great-architects-and-project-managem.html) - Jan 21, 2005 ### [\[Interview\] Natty Gur - Organizational Enterprise Architecture](https://osherove.com/blog/2005/1/21/interview-natty-gur-organizational-enterprise-architecture.html) - Jan 11, 2005 ### [\[Interview\] Jonathan de Halleux on mbUnit and model based testing](https://osherove.com/blog/2005/1/11/interview-jonathan-de-halleux-on-mbunit-and-model-based-test.html) --- title: "I'll be available for consulting in the bay area" url: "https://osherove.com/blog/2005/1/17/ill-be-available-for-consulting-in-the-bay-area.md" canonical: "https://osherove.com/blog/2005/1/17/ill-be-available-for-consulting-in-the-bay-area.html" published: "2005-01-17T20:52:00" updated: "2005-01-17T20:52:00" tags: ["Off Topic"] author: "Roy Osherove" description: " There's a high probability that I'm going to be in the New York City/Bay Area during the month of March (7th-24th). I'll be available for consulting/training regarding Agile Development and .Net…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'll be available for consulting in the bay area By Roy Osherove January 17, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 17, 2005; technical details may be outdated. __ There's a high probability that I'm going to be in the New York City/Bay Area during the month of March (7th-24th). **I'll be available for consulting/training** regarding Agile Development and .Net Architecture during that time so if you're in that area, [check out my offerings and get in touch with me](http://www.teamagile.com/mainpages/OurServices.html).  If there's enough demand there might be room to extend the stay there or to make another jump overseas for that purpose a little later in the near future. __ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 2, 2005 ### [Pics from my Magen farewell dinner](https://osherove.com/blog/2005/2/2/pics-from-my-magen-farewell-dinner.html) - Jan 27, 2005 ### [Silly bickering](https://osherove.com/blog/2005/1/27/silly-bickering.html) - Jan 13, 2005 ### [Yet another product nowhere near your area](https://osherove.com/blog/2005/1/13/yet-another-product-nowhere-near-your-area.html) - Jan 12, 2005 ### [Search my blog](https://osherove.com/blog/2005/1/12/search-my-blog.html) --- title: "\"Buy first, ask questions later\"" url: "https://osherove.com/blog/2005/1/16/quotbuy-first-ask-questions-laterquot.md" canonical: "https://osherove.com/blog/2005/1/16/quotbuy-first-ask-questions-laterquot.html" published: "2005-01-16T02:14:00" updated: "2005-01-16T02:14:00" tags: ["Regex"] author: "Roy Osherove" description: "Jeff likes RegexBuddy , and I'd like to believe it's that good. I'd like to try it out. Unfortunately, their web page says the following: \" There is no free evaluation version of RegexBuddy. You can safely buy…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # "Buy first, ask questions later" By Roy Osherove January 16, 2005 In [Regex](https://osherove.com/blog/category/regex) **Historical article** · Originally published January 16, 2005; technical details may be outdated. [Jeff likes RegexBuddy](http://www.codinghorror.com/blog/archives/000027.html), and I'd like to believe it's that good. I'd like to try it out. Unfortunately, [their web page](http://www.regexbuddy.com/download.html) says the following: "_There is no free evaluation version of RegexBuddy. You can_ [_safely buy RegexBuddy_](https://osherove.com/blog/2005/1/16/buynow.html) _right away. Our online purchase form is secured with strong encryption, and your purchase is guaranteed by our_ [_three month unconditional money-back guarantee_](https://osherove.com/blog/2005/1/16/guarantee.html)_. Where other companies quibble about software not being returnable and all that, we stand firmly behind our products. I am sure that as soon as you start using RegexBuddy, you will find that at US$ 29.95, RegexBuddy offers excellent value for money."_ Sorry - I **hate** being forced to "_Buy first, ask questions later_". I just don't work that way with software of this kind. It does look pretty cool, but what's the motivation for not being able to download and try? ## More in Regex [All posts in Regex](https://osherove.com/blog/category/regex) - May 2, 2005 ### [Regulator 2005 & GUI threads goo- news on both?](https://osherove.com/blog/2005/5/2/regulator-2005-amp-gui-threads-goo-news-on-both.html) - Apr 13, 2005 ### [Blogs.RegexAdvice.com - smells like community spirit](https://osherove.com/blog/2005/4/13/blogsregexadvicecom-smells-like-community-spirit.html) - Jan 11, 2005 ### [The Regulator now hosted at Regex.osherove.com](https://osherove.com/blog/2005/1/11/the-regulator-now-hosted-at-regexosherovecom.html) - Jan 10, 2005 ### [Q&A - Greedy matching in regular expressions](https://osherove.com/blog/2005/1/10/qampa-greedy-matching-in-regular-expressions.html) --- title: "The role of helper frameworks in your tests" url: "https://osherove.com/blog/2005/1/15/the-role-of-helper-frameworks-in-your-tests.md" canonical: "https://osherove.com/blog/2005/1/15/the-role-of-helper-frameworks-in-your-tests.html" published: "2005-01-15T16:10:00" updated: "2005-01-15T16:10:00" tags: ["Agile Related"] author: "Roy Osherove" description: "As you create tests for a system that gets bigger and bigger, so do the tests become bigger and more complex. One of the problems that start to occur is that you test code starts getting riddled with various…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The role of helper frameworks in your tests By Roy Osherove January 15, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published January 15, 2005; technical details may be outdated. As you create tests for a system that gets bigger and bigger, so do the tests become bigger and more complex. One of the problems that start to occur is that you test code starts getting riddled with various object-creation code. For example, you're testing a complex business object's state, to make it just right for testing an exception that should be thrown. That sort of creation can take many lines of code and might repeat itself in other tests too. This causes several symptoms: First, your tests are now much less readable than they should be. Tests should be readble so they can serve as part of the overall API documentation which can then be used by members of your team to familierize themselves with your code. Second, you're breaking one of the first rules of good code : "Don't repeat yourself". Duplication in your tests is just as bad as duplication in your prodcution code. In this case there's going to be lots of duplication in the creation and state-setting of your to-be-tested business objects. By refactoring, we can start removing this duplication into various helper methods that will be laid down within our test fixture. However, this still has the effect of making your test fixture do more than one thing (it's both a test fixture and a helper class now). Additional refactoring eventually leads us to create a helper class with specific helper methods (usually static) for the business objects under test. This "Pattern" of helper methods and factories for your unit tests is not new. It's been called several names ("[ObjectMother](http://www.thoughtworks.com/us/library/ObjectMother%20Website.pdf)" - PDF , for example) and eventually, most developers that implement unit tests arrive at the same conculsion, one way or the other. Assuming that most projects will have at least one such helper class, we can and should begin to realize and think about our helper factories and classes for testing as pure frameworks on which to build our tests. These frameworks can later be used to run not only our developer tests, but our customer tests as well (using FIT,  for example). Given the "organic" nature in which an agile software project usually grows, these frameworks are grown, and not pre-designed. As such, we should pay special attention to them as they are created and nurtured, and to make sure that once one has benn "born" we start thinking of it as a service to out tests, and to future tests as well. For example, there may be a good point in time where these factories and helpers will need to become a separate assembly in our tests, so that it can be re-used in other testing scenarios. We can also re-use these frameworks later adding more generality to them and thus making them easier to use with customer tests. These frameworks can be very small in small applications (one-two utility classes) or very big on large ones (hierarchical, categorized and refactored classes for each object type, test type and so on). One of the most important things to keep in mind as you build such a framework is to re0use existing methods to their smallest parts. That is, make your code inside those methods repeat itself exactly once. The minute ou break this rule you're heading down a path where future changes in your business objects might lead to big lengthy and painful changes in your helpers. If you keep the DRY rule, you'll most likely need to change very little creation code in order to support such changes. Even the acto of callin "new" on an object should be repeated only once and refactored into a method that will be re-used by all other helper methods. That way if your object loses its default constructor, for example, you need only change one simple method to factor the change into your helper framework. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jan 23, 2005 ### [Agile content for the Winter 2004 issue of Methods & Tools](https://osherove.com/blog/2005/1/23/agile-content-for-the-winter-2004-issue-of-methods-amp-tools.html) - Jan 18, 2005 ### [Announcing: First Agile Israel user group meeting this month!](https://osherove.com/blog/2005/1/18/announcing-first-agile-israel-user-group-meeting-this-month.html) - Jan 11, 2005 ### [Agile Deployment](https://osherove.com/blog/2005/1/11/agile-deployment.html) - Jan 11, 2005 ### [\[Interview\] Jonathan de Halleux on mbUnit and model based testing](https://osherove.com/blog/2005/1/11/interview-jonathan-de-halleux-on-mbunit-and-model-based-test.html) --- title: "Get an MSN alert whenever this blog updates" url: "https://osherove.com/blog/2005/1/14/get-an-msn-alert-whenever-this-blog-updates.md" canonical: "https://osherove.com/blog/2005/1/14/get-an-msn-alert-whenever-this-blog-updates.html" published: "2005-01-14T11:54:00" updated: "2005-01-14T11:54:00" tags: ["Blogging"] author: "Roy Osherove" description: "I just added an alerts service to my blog after reading about it on Kevin Harder's blog. Supposedly, you should now be able to receive an alert on you MSN IM whenever my blog updates. That's pretty cool, and is an…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Get an MSN alert whenever this blog updates By Roy Osherove January 14, 2005 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published January 14, 2005; technical details may be outdated. I just added an alerts service to my blog after reading about it on Kevin Harder's blog. Supposedly, you should now be able to receive an alert on you MSN IM whenever my blog updates. That's pretty cool, and is an easier venue for RSS-less readers of my blog to know when I'm updated. The alert button is also on the top left side of my blog's main page.  [![LiveMessage Alerts](https://osherove.com/img/wb/eb035a82_www.messagecast.net_mcwebsite_graphics_blog_alert_signup_eng.gif)  _Subscribe by clicking here_](http://www.messagecast.net/alerts/login.do?PINID=2931&returnURL=http://www.ISerializable.com) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Mar 1, 2005 ### [The new Larkware.com](https://osherove.com/blog/2005/3/1/the-new-larkwarecom.html) - Jan 28, 2005 ### [Is CodeBetter.Com to become the new .NETWeblogs?](https://osherove.com/blog/2005/1/28/is-codebettercom-to-become-the-new-netweblogs.html) - Dec 31, 2004 ### [\[OT\] Some free time coming soon](https://osherove.com/blog/2004/12/31/ot-some-free-time-coming-soon.html) - Dec 31, 2004 ### [Is PostXing gonna solve my blogging needs?](https://osherove.com/blog/2004/12/31/is-postxing-gonna-solve-my-blogging-needs.html) --- title: "Israel C# User Group: How to write your own object relational mapping" url: "https://osherove.com/blog/2005/1/14/israel-c-user-group-how-to-write-your-own-object-relational.md" canonical: "https://osherove.com/blog/2005/1/14/israel-c-user-group-how-to-write-your-own-object-relational.html" published: "2005-01-14T11:33:00" updated: "2005-01-14T11:33:00" tags: [] author: "Roy Osherove" description: "Date: Wednesday, January 19, 17:00 - 20:00 Place: Microsoft Israel Hapnina 2 ( Amdocs Building ) Ground Floor Raanana +972 (9) 762-5100 Parking is available at the Kurkar parking lot. Proceed straight past the traffic…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel C\# User Group: How to write your own object relational mapping By Roy Osherove January 14, 2005 **Historical article** · Originally published January 14, 2005; technical details may be outdated. Date:    **Wednesday, January 19, 17:00 - 20:00** Place:   **Microsoft Israel**              **Hapnina 2  (Amdocs Building)**             **Ground Floor**             **Raanana** **+972 (9) 762-5100**           Parking is available at the Kurkar parking lot. Proceed straight past the traffic circle and the parking lot will be on your right.  **Topic:** **How to write your own object relational mapping**  **Lecturer:** **[Udi Dahan](http://www.thesoftwaresimplist.com/)**  Now that most developers have realized the benefits of using OO, it’s time to see how to take those objects and persist them to a database. We will see the design and code of a layered architecture in 3 cases: when using DataSets and DataAdapters, when using something called Persistent Objects, and when using true Object Relational Mapping. Also, we will see the proper way to handle complex queries/reports in all of these cases. Udi Dahan is a Microsoft Israel recognized .Net development expert and head of .Net development at KorenTec where he leads C4I projects. Udi speaks regularly at user groups throughout the country on advanced .NET topics. His experience spans technologies related to Command & Control systems, Real Time applications, and high-availability Internet services using C#/.Net and MS SQL Server databases. Udi is known as a primary authority on Service Oriented Architectures in Israel and consults on several nation-wide initiatives. His passion is simplicity, focusing on delivering value and increasing productivity through the use of agile practices. Although admission is free and you may attend without reserving a place, we kindly request that you notify us if you plan to attend so that we can be sure to have enough chairs and FOOD! Thank you. Moshe Raab --- title: "Yet another product nowhere near your area" url: "https://osherove.com/blog/2005/1/13/yet-another-product-nowhere-near-your-area.md" canonical: "https://osherove.com/blog/2005/1/13/yet-another-product-nowhere-near-your-area.html" published: "2005-01-13T23:51:00" updated: "2005-01-13T23:51:00" tags: ["Off Topic"] author: "Roy Osherove" description: "A very cool, slick and easy to use CD/DVD holding and retrieval device, even with a discount for MSDN subscribers is, once again, offered only to customer in the US and Canada. I think that sucks. Especially after…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Yet another product nowhere near your area By Roy Osherove January 13, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 13, 2005; technical details may be outdated. A very [cool, slick and easy to use CD/DVD holding and retrieval](http://msdn.imation.com/) device, even with a discount for MSDN subscribers is, once again, offered only to customer in the US and Canada. I think that sucks. Especially after watching [the demo](http://www.imation.com.au/products/disc_stakka/opdicom.html). \[via [Larkware](http://www,larkware.com/)\] ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 27, 2005 ### [Silly bickering](https://osherove.com/blog/2005/1/27/silly-bickering.html) - Jan 17, 2005 ### [I'll be available for consulting in the bay area](https://osherove.com/blog/2005/1/17/ill-be-available-for-consulting-in-the-bay-area.html) - Jan 12, 2005 ### [Search my blog](https://osherove.com/blog/2005/1/12/search-my-blog.html) - Jan 11, 2005 ### [Darrell teaches Python](https://osherove.com/blog/2005/1/11/darrell-teaches-python.html) --- title: "SQL Injection Attacks by Example" url: "https://osherove.com/blog/2005/1/13/sql-injection-attacks-by-example.md" canonical: "https://osherove.com/blog/2005/1/13/sql-injection-attacks-by-example.html" published: "2005-01-13T22:28:00" updated: "2005-01-13T22:28:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "This nice article details a step by step approach of what the author needed to do to try and hack some intranet site (by request). It then details all the mitigation steps needed to make sure something like that can…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SQL Injection Attacks by Example By Roy Osherove January 13, 2005 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published January 13, 2005; technical details may be outdated. [This nice article](http://www.unixwiz.net/techtips/sql-injection.html) details a step by step approach of what the author needed to do to try and hack some intranet site (by request). It then details all the mitigation steps needed to make sure something like that can never happen again. Enlightening. ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Jun 26, 2005 ### [Great article on Reflection and Performance on MSDN Mag](https://osherove.com/blog/2005/6/26/great-article-on-reflection-and-performance-on-msdn-mag.html) - May 10, 2005 ### [\[Article\]Simplify Data Layer Unit Testing using Enterprise Services](https://osherove.com/blog/2005/5/10/articlesimplify-data-layer-unit-testing-using-enterprise-ser.html) - Dec 29, 2004 ### [Comparing C++ unit testing frameworks](https://osherove.com/blog/2004/12/29/comparing-c-unit-testing-frameworks.html) - Nov 21, 2004 ### [The Meta Programming System - The next paradigm?](https://osherove.com/blog/2004/11/21/the-meta-programming-system-the-next-paradigm.html) --- title: ".Net Architects user group - Architectural tools - dynamic modeling, code generation and IDE integration" url: "https://osherove.com/blog/2005/1/12/net-architects-user-group-architectural-tools-dynamic-modeli.md" canonical: "https://osherove.com/blog/2005/1/12/net-architects-user-group-architectural-tools-dynamic-modeli.html" published: "2005-01-12T17:41:00" updated: "2005-01-12T17:41:00" tags: [] author: "Roy Osherove" description: "Greetings .NET architect (in Israel)! You are welcome to attend our next meeting to be held on Sunday, January 23rd . Our next presentation focuses on introducing new concepts and tools to turn good system architecture…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Architects user group - Architectural tools - dynamic modeling, code generation and IDE integration By Roy Osherove January 12, 2005 **Historical article** · Originally published January 12, 2005; technical details may be outdated. Greetings .NET architect (in Israel)! You are welcome to attend our next meeting to be held on Sunday, **January 23rd**. Our next presentation focuses on introducing new concepts and tools to turn good system architecture in to working code – fast! Our presenter is the well known **Israel Kehat**. Israel is one of my favorite presenters and there are always new things to learn from him. The presentation will focus on:                 ·         Dynamic modeling - ·         Generating code based on strong architectural concepts - ·         Using advanced technologies to assist in the software fulfillment process - o        Reflection - o        IDE integration - ·         Other design & development productivity boosters **This presentation is a must to all architects and team leaders** seeking to increase efficiency and to improve their team's overall code and model quality. As usual, we will have out monthly give-away – to remain as a surprise… J Details summary: Date: **January 23rd, 2005** (23/1/2005) Time: **17:30 – 20:00** Location: **HP offices, 9 Daphna St, Kiryat Etgarim (northern industrial area), Ra’anana** Topic: **Architectural tools -** **dynamic modeling, code generation and IDE integration** **Agenda**: 17:30 – 17:45 – Assembly 17:45 – 18:45 – Architectural tools - dynamic modeling, code generation and IDE integration – Israel Kehat – IKS 18:45 – 19:00 – Break 19:00 – 20:00 – Architectural tools - dynamic modeling, code generation and IDE integration – Israel Kehat – IKS Thank you and see you there! Don’t hesitate to contact me with any questions or requests. Yosi Levy. --- title: "Why Word hates you" url: "https://osherove.com/blog/2005/1/12/why-word-hates-you.md" canonical: "https://osherove.com/blog/2005/1/12/why-word-hates-you.html" published: "2005-01-12T17:21:00" updated: "2005-01-12T17:21:00" tags: [] author: "Roy Osherove" description: "Now I know why sometimes Word hates me: \"So, we had a problem, and it had a deceptively simple solution. This is exactly the kind of problem Word’s Auto Formatter was designed to solve. The fancy name for Word’s Auto…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why Word hates you By Roy Osherove January 12, 2005 **Historical article** · Originally published January 12, 2005; technical details may be outdated. [Now I know why](http://weblogs.asp.net/Rick_Schaut/archive/2005/01/12/351235.aspx) sometimes Word hates me: _"So, we had a problem, and it had a deceptively simple solution. This is exactly the kind of problem Word’s Auto Formatter was designed to solve. The fancy name for Word’s Auto Formatter is a “rule-based inference engine,” which really means that it’s like pattern matching on steroids. It takes into consideration the current state of the document, and interprets various keystroke input sequences in terms of a set of rules. It’s designed to work very fast, so that users don’t notice any effect on typing performance...."_ _"To summarize these rules, if the insertion point is:_ _1.      In an empty paragraph--always inserts a tab character;_ _2.      In the middle of a non-empty paragraph--always indents the whole paragraph; and_ _3.      In the first line of a paragraph:_ _3.1.  If there are no tab stops set, then indents the first line of the paragraph; or_ _3.2.  If there is a tab stop set, then inserts a tab character.... "_ I suggest you [read the whole post](http://weblogs.asp.net/Rick_Schaut/archive/2005/01/12/351235.aspx) for the full set of gory details.. This whole auto formatter thing is especially problematic when one starts to use Hebrew and English mixed together (am I'm sure most Hebrew writers can attest to). It's sometimes as if Word does everything in its power to keep me form doing what I \*want\* to my text. The book "The design of everyday things" touches this point nicely by distinguishing hardware interfaces from software interfaces. In hardware, each thing does one thing, predictably. You pull a door knob. it opens. You press something, it is pressed. In software, depending on context, each thing can do many other things, which is why it's so confusing. Essentially, that's the main problem Word (and any other advanced editor's users) are struggling with - the multitude of facets each action might have on the document in editing. Personally, I'd like Tab to always be "Tab" and nothing else. Funnily enough, there's a solution for that as well. In order for 'Tab" to always be "Tab", you need to press "Ctrl+Tab".  Now \*that's\* design ;) I know the folks on the Word team are doing a great job, always thinking of us, customers. But really, a good design should be simple, and the interface should be negligible. You should "know" what’s going to happen when you do something, intuitively. This sort of perplexing design can occur in many other places as well. For example, how many times have you seen stereo closets, where you have to "push" on the top corner of the glass door in order for it to be opened \*outwards\*? That's bad usability design (although the casing might be beautiful). For the same reasons people still have problems programming their VCRs, and don't even get me \*started\* on washing machines! You'd think after 20-30 years, this product would actually be understandable to an inexperienced machine-washer, but no. It's like reading cryptic hieroglyphs, with all sorts of international standard symbols plastered on various knobs. The ultimate in non-usability. (Noticed how this turned out to be a simple rant-post?) --- title: "Search my blog" url: "https://osherove.com/blog/2005/1/12/search-my-blog.md" canonical: "https://osherove.com/blog/2005/1/12/search-my-blog.html" published: "2005-01-12T00:42:00" updated: "2005-01-12T00:42:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Just added search abilities to my blog, thanks to David Cumps!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Search my blog By Roy Osherove January 12, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 12, 2005; technical details may be outdated. Just added search abilities to my blog, [thanks to David Cumps!](http://weblogs.asp.net/cumpsd/archive/2005/01/11/350909.aspx) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 17, 2005 ### [I'll be available for consulting in the bay area](https://osherove.com/blog/2005/1/17/ill-be-available-for-consulting-in-the-bay-area.html) - Jan 13, 2005 ### [Yet another product nowhere near your area](https://osherove.com/blog/2005/1/13/yet-another-product-nowhere-near-your-area.html) - Jan 11, 2005 ### [Darrell teaches Python](https://osherove.com/blog/2005/1/11/darrell-teaches-python.html) - Jan 11, 2005 ### [Team Agile - It's time to start my own business](https://osherove.com/blog/2005/1/11/team-agile-its-time-to-start-my-own-business.html) --- title: "Agile Deployment" url: "https://osherove.com/blog/2005/1/11/agile-deployment.md" canonical: "https://osherove.com/blog/2005/1/11/agile-deployment.html" published: "2005-01-11T19:02:00" updated: "2005-01-11T19:02:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Rachel Davies posts about the idea of an Agile Deployment . In an Agile deployment, you have unit tests to make sure that the production system on which your product is installed meets all the required hardware and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Deployment By Roy Osherove January 11, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published January 11, 2005; technical details may be outdated. [Rachel Davies posts about the idea of an Agile Deployment](http://www.twelve71.org/blogs/rachel/archives/000666.html). In an Agile deployment, you have unit tests to make sure that the production system on which your product is installed meets all the required hardware and configuration needed. That solves you a lot of trouble, especially is there is a different team in charge on the production server. There's a definite possibility that people are already doing this, though personally I never did (just because I didn't think of such a brilliant idea). What would such unit tests entail? A lot of grudge work, for sure. Especially for complex systems which demand various configurations to appear. I'd suggest to implement the tests, not specifically as unit tests, but using existing automated tools. Here's a list of suggestions: - Create an installer project in VS.NET. An installer can have various prerequisites pertaining to the operating system involved and so on. Create an empty installer project with just the prerequisites and no output. If it fails to run on the production system, you know you forgot something. However, there's only so much you can check in an installer. - You can use an automated build tool such as FinalBuilder and just create lots of "IF" tasks inside it that fail if what you expect is not there. This has the advantage that there are many built in checks in place for you to just invoke. You can also have various actions taken if something is not well. - Create your own custom tool that checks things. You've got two choices here: make it generic enough to be easily customizable for any project(longer time to make, shorter time in the long run) or make one ad-hoc for the specific project.(short time - but re-inventing the wheel every time). - Use a third party tool made specifically for this purpose.  Preferably one that can be run along with your unit tests from the command line. Do you know of any? ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jan 18, 2005 ### [Announcing: First Agile Israel user group meeting this month!](https://osherove.com/blog/2005/1/18/announcing-first-agile-israel-user-group-meeting-this-month.html) - Jan 15, 2005 ### [The role of helper frameworks in your tests](https://osherove.com/blog/2005/1/15/the-role-of-helper-frameworks-in-your-tests.html) - Jan 11, 2005 ### [\[Interview\] Jonathan de Halleux on mbUnit and model based testing](https://osherove.com/blog/2005/1/11/interview-jonathan-de-halleux-on-mbunit-and-model-based-test.html) - Jan 6, 2005 ### [Some news from the wild](https://osherove.com/blog/2005/1/6/some-news-from-the-wild.html) --- title: "Darrell teaches Python" url: "https://osherove.com/blog/2005/1/11/darrell-teaches-python.md" canonical: "https://osherove.com/blog/2005/1/11/darrell-teaches-python.html" published: "2005-01-11T10:10:00" updated: "2005-01-11T10:10:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Darrell Norton provides pricelss information , tips and links on where and how you should go about learning Python . This is posted here very much for my own sake, as I start treading this path myself. However, you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Darrell teaches Python By Roy Osherove January 11, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 11, 2005; technical details may be outdated. [Darrell Norton provides pricelss information](http://dotnetjunkies.com/WebLog/darrell.norton/archive/2005/01/10/43097.aspx), tips and links on where and how you should go about learning [Python](http://diveintopython.org/). This is posted here very much for my own sake, as I start treading this path myself. However, you might find it just as useful. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 13, 2005 ### [Yet another product nowhere near your area](https://osherove.com/blog/2005/1/13/yet-another-product-nowhere-near-your-area.html) - Jan 12, 2005 ### [Search my blog](https://osherove.com/blog/2005/1/12/search-my-blog.html) - Jan 11, 2005 ### [Team Agile - It's time to start my own business](https://osherove.com/blog/2005/1/11/team-agile-its-time-to-start-my-own-business.html) - Jan 2, 2005 ### [What does SQL server SP4 fix?](https://osherove.com/blog/2005/1/2/what-does-sql-server-sp4-fix.html) --- title: "BackgroundWorker for the compact framework." url: "https://osherove.com/blog/2005/1/11/backgroundworker-for-the-compact-framework.md" canonical: "https://osherove.com/blog/2005/1/11/backgroundworker-for-the-compact-framework.html" published: "2005-01-11T09:19:00" updated: "2005-01-11T09:19:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Very cool, there's now a BackgroundWorker class implementation for the compact framework . [via Chris Sells ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BackgroundWorker for the compact framework. By Roy Osherove January 11, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published January 11, 2005; technical details may be outdated. Very cool, there's now a [BackgroundWorker class implementation for the compact framework](http://www.danielmoth.com/Blog/2004/12/backgroundworker-for-cf-10.html). \[via [Chris Sells](http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=1638)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 22, 2005 ### [MVP.Xml library released](https://osherove.com/blog/2005/1/22/mvpxml-library-released.html) - Jan 18, 2005 ### [Data Binding with .Net 2.0 : upcoming coolness](https://osherove.com/blog/2005/1/18/data-binding-with-net-20-upcoming-coolness.html) - Jan 11, 2005 ### [Free online workshop - The .NET Assembly Loader (Fusion) - Internals and HOWTOs.](https://osherove.com/blog/2005/1/11/free-online-workshop-the-net-assembly-loader-fusion-internal.html) - Jan 11, 2005 ### [\[Free book\] .Net in samples](https://osherove.com/blog/2005/1/11/free-book-net-in-samples.html) --- title: "Free online workshop - The .NET Assembly Loader (Fusion) - Internals and HOWTOs." url: "https://osherove.com/blog/2005/1/11/free-online-workshop-the-net-assembly-loader-fusion-internal.md" canonical: "https://osherove.com/blog/2005/1/11/free-online-workshop-the-net-assembly-loader-fusion-internal.html" published: "2005-01-11T08:50:00" updated: "2005-01-11T08:50:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "\"I owe Richard Grimes lunch. Heck, dinner even. He has posted a fantastic self-paced workshop that delves into the details of the .NET Assembly Loader (Fusion) . \" [via Scott ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free online workshop - The .NET Assembly Loader (Fusion) - Internals and HOWTOs. By Roy Osherove January 11, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published January 11, 2005; technical details may be outdated. _"I owe Richard Grimes lunch. Heck, dinner even. He has posted a_ [_fantastic self-paced workshop that delves into the details of the .NET Assembly Loader (Fusion)_](http://www.grimes.demon.co.uk/workshops/fusionWS.htm)_. "_ \[via [Scott](http://www.hanselman.com/blog/PermaLink,guid,931fca9d-c710-4989-b3e8-8a414fd75220.aspx)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 18, 2005 ### [Data Binding with .Net 2.0 : upcoming coolness](https://osherove.com/blog/2005/1/18/data-binding-with-net-20-upcoming-coolness.html) - Jan 11, 2005 ### [BackgroundWorker for the compact framework.](https://osherove.com/blog/2005/1/11/backgroundworker-for-the-compact-framework.html) - Jan 11, 2005 ### [\[Free book\] .Net in samples](https://osherove.com/blog/2005/1/11/free-book-net-in-samples.html) - Jan 9, 2005 ### [Custom events in VB.Net](https://osherove.com/blog/2005/1/9/custom-events-in-vbnet.html) --- title: "[Free book] .Net in samples" url: "https://osherove.com/blog/2005/1/11/free-book-net-in-samples.md" canonical: "https://osherove.com/blog/2005/1/11/free-book-net-in-samples.html" published: "2005-01-11T08:39:00" updated: "2005-01-11T08:39:00" tags: [".Net Quotations", "Free book chapters"] author: "Roy Osherove" description: ".NET in Samples presents many technologies on .NET platform like security, cryptography, WMI, networking, IO and others. This is still in draft version and final one will be release on the end of 2004 focusing on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Free book\] .Net in samples By Roy Osherove January 11, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published January 11, 2005; technical details may be outdated. [![.NET in Samples - featured ebook](https://osherove.com/img/wb/d4930bf5_www.skilldrive.com_i_dotnetprev.jpg)](http://www.skilldrive.com/) [_.NET in Samples_](http://www.skilldrive.com/) _presents many technologies on .NET platform like security, cryptography, WMI, networking, IO and others. This is still in draft version and final one will be release on the end of 2004 focusing on Whidbey features_ _(_[_pdf_](http://www.skilldrive.com/DOTNETinSamplespdf.zip) _or_ [_doc_](http://www.skilldrive.com/DOTNETinSamplesdoc.zip)). \[via [Ohad](http://weblogs.asp.net/israelio/archive/2005/01/10/349761.aspx)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 11, 2005 ### [BackgroundWorker for the compact framework.](https://osherove.com/blog/2005/1/11/backgroundworker-for-the-compact-framework.html) - Jan 11, 2005 ### [Free online workshop - The .NET Assembly Loader (Fusion) - Internals and HOWTOs.](https://osherove.com/blog/2005/1/11/free-online-workshop-the-net-assembly-loader-fusion-internal.html) - Jan 9, 2005 ### [Custom events in VB.Net](https://osherove.com/blog/2005/1/9/custom-events-in-vbnet.html) - Jan 8, 2005 ### [\[Cool Tool\] XML Visualizer for Visual Studio .NET 2003](https://osherove.com/blog/2005/1/8/cool-tool-xml-visualizer-for-visual-studio-net-2003.html) --- title: "The Regulator now hosted at Regex.osherove.com" url: "https://osherove.com/blog/2005/1/11/the-regulator-now-hosted-at-regexosherovecom.md" canonical: "https://osherove.com/blog/2005/1/11/the-regulator-now-hosted-at-regexosherovecom.html" published: "2005-01-11T01:29:00" updated: "2005-01-11T01:29:00" tags: ["Regex"] author: "Roy Osherove" description: "FYI: The Regulator will be hosted from now on at http://regex.osherove.com/ No longer will the fact that my home machine is down mean that The Regulator's site will be offline. Phew. And for the record, I'm working on a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator now hosted at Regex.osherove.com By Roy Osherove January 11, 2005 In [Regex](https://osherove.com/blog/category/regex) **Historical article** · Originally published January 11, 2005; technical details may be outdated. FYI: [The Regulator](https://osherove.com/) will be hosted from now on at [http://regex.osherove.com/](https://osherove.com/)  No longer will the fact that my home machine is down mean that The Regulator's site will be offline. Phew. And for the record, I'm working on a new version. ## More in Regex [All posts in Regex](https://osherove.com/blog/category/regex) - Apr 13, 2005 ### [Blogs.RegexAdvice.com - smells like community spirit](https://osherove.com/blog/2005/4/13/blogsregexadvicecom-smells-like-community-spirit.html) - Jan 16, 2005 ### ["Buy first, ask questions later"](https://osherove.com/blog/2005/1/16/quotbuy-first-ask-questions-laterquot.html) - Jan 10, 2005 ### [Q&A - Greedy matching in regular expressions](https://osherove.com/blog/2005/1/10/qampa-greedy-matching-in-regular-expressions.html) - Jan 7, 2005 ### [Full source for The Regulator released](https://osherove.com/blog/2005/1/7/full-source-for-the-regulator-released.html) --- title: "[Interview] Jonathan de Halleux on mbUnit and model based testing" url: "https://osherove.com/blog/2005/1/11/interview-jonathan-de-halleux-on-mbunit-and-model-based-test.md" canonical: "https://osherove.com/blog/2005/1/11/interview-jonathan-de-halleux-on-mbunit-and-model-based-test.html" published: "2005-01-11T01:12:00" updated: "2005-01-11T01:12:00" tags: [".Net 2.0", "Agile Related", "Interview"] author: "Roy Osherove" description: "You may have noticed that lately I've started to interview people I find interesting. Such was the case with Johanna Rothman, and now it's Peli's turn. All interviews will be hosted from now on on Team Agile's interview…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Interview\] Jonathan de Halleux on mbUnit and model based testing By Roy Osherove January 11, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [Agile Related](https://osherove.com/blog/category/agile-related), [Interview](https://osherove.com/blog/category/interview) **Historical article** · Originally published January 11, 2005; technical details may be outdated. You may have noticed that lately I've started to interview people I find interesting. Such was the case with Johanna Rothman, and now it's Peli's turn. All interviews will be hosted from now on on [Team Agile's interview page](http://www.teamagile.com/mainpages/Interviews.html). [Download the interview from here](http://www.teamagile.com/mainpages/Interviews.html) **Summary** _Jonathan(a.k.a. "Peli") is best known for his work on_ [**_mbUnit_**](http://www.mbunit.org/) _-an alternative unit testing framework for .Net development. He just recently joined Microsoft in Redmond to work there as a tester on the CLR JIT team._ [**_His weblog_**](http://blog.dotnetwiki.org/) _is filled with interesting news about testing techniques, and also a great source to learn about various Addins he is developing for the well-known Reflector tool. During the interview, Jonathan talks about a variety of topics, including Model Driven Testing, Object relational mappers, code generation and also about other things he's created such as_ [**_ReFly_**](http://www.testdriven.net/wiki/default.aspx/MyWiki.DownLoad) _and_ [**_TestFoo_**](http://blog.dotnetwiki.org/category/25.aspx)_. We also discuss new favorite features in .Net 2.0 and Pair Programming experiences with_ [**_Jamie Cansdale_**](http://weblogs.asp.net/nunitaddin)_, maker of_ [**_TestDriven.Net_**](http://www.testdriven.net/)_._ ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Apr 9, 2005 ### [Whitepaper: Introducing System Transactions, by Juval Lowy](https://osherove.com/blog/2005/4/9/whitepaper-introducing-system-transactions-by-juval-lowy.html) - Jan 18, 2005 ### [Data Binding with .Net 2.0 : upcoming coolness](https://osherove.com/blog/2005/1/18/data-binding-with-net-20-upcoming-coolness.html) - Jan 8, 2005 ### [Making ClickOnce publishing work in VS.Net 2005 Beta 1+](https://osherove.com/blog/2005/1/8/making-clickonce-publishing-work-in-vsnet-2005-beta-1.html) --- title: "Team Agile - It's time to start my own business" url: "https://osherove.com/blog/2005/1/11/team-agile-its-time-to-start-my-own-business.md" canonical: "https://osherove.com/blog/2005/1/11/team-agile-its-time-to-start-my-own-business.html" published: "2005-01-11T01:03:00" updated: "2005-01-11T01:03:00" tags: ["Off Topic"] author: "Roy Osherove" description: "In 3 days I'll be leaving Magen , the Microsoft Technology center in Israel. I've worked there as a senior consultant for the past year or so. I feel it's time for me to pursue my passion and interest in the past 2…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Team Agile - It's time to start my own business By Roy Osherove January 11, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 11, 2005; technical details may be outdated. In 3 days I'll be leaving [Magen](http://www.magen.com/), the Microsoft Technology center in Israel. I've worked there as a senior consultant for the past year or so. I feel it's time for me to pursue my passion and interest in the past 2 years or so: Agile development. In magen I started the whole field of agile training. I was speaking at user groups about it, I was doing conferences about it, and lo and behold, people were starting to show up at the door, wanting training and mentoring on Test Driven Development, Agile concepts such as XP or Scrum, and more things. I realized that this is in fact what I want to concentrate on. So, I'm starting my own business. Say hello and welcome to **[Team Agile](http://www.teamagile.com/)** [![Team Agile](https://osherove.com/img/wb/cc569c11_teamagile.com_Pictures_TeamAgileBanner.jpg)](http://www.teamagile.com/) Team Agile is a one man show providing training, mentoring and development of materials and infrastructure for organizations wanting to learn more and become a little more Agile. The site is just in first swing, so it might change. I'm not too crazy about the logo right now, but I think for now it serves the purpose. I do need to find something a little less cheesy. Life is funny that way. About 2 years ago when I started this weblog I was in a job I didn't really like, wanting more out of life. Ever since, through this blog and the great developer community in Israel, I've been able to drive myself further and further, and to slowly start achieving my aspirations. Today I find myself at a totally different place. Being an MVP, a known speaker in Israel and a leading figure in the Agile field here, that's what it's all about. Opening my own business feels like the next logical step. Things look promising so far. I think I'll have even more leads when this blog gets out. I tried to keep quiet until now so that things go smoothly for existing clients I still visit as part of my work at Magen. In a month I'll be celebrating 2 years for this blog. God only knows where I'll be when I celebrate 4. All I know is that It'll probably be even better. Promises to keep: -  I did **not** forget about my promise to keep doing the TDD workshops. I'll just have to find a new place to do them now. For all those who are waiting - stay tuned _(or have your boss_ [_contact me_](http://www.teamagile.com/) _for actual training courses for your team)_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 12, 2005 ### [Search my blog](https://osherove.com/blog/2005/1/12/search-my-blog.html) - Jan 11, 2005 ### [Darrell teaches Python](https://osherove.com/blog/2005/1/11/darrell-teaches-python.html) - Jan 2, 2005 ### [What does SQL server SP4 fix?](https://osherove.com/blog/2005/1/2/what-does-sql-server-sp4-fix.html) - Jan 1, 2005 ### [Happy new year](https://osherove.com/blog/2005/1/1/happy-new-year.html) --- title: "Q&A - Greedy matching in regular expressions" url: "https://osherove.com/blog/2005/1/10/qampa-greedy-matching-in-regular-expressions.md" canonical: "https://osherove.com/blog/2005/1/10/qampa-greedy-matching-in-regular-expressions.html" published: "2005-01-10T17:37:00" updated: "2005-01-10T17:37:00" tags: ["Regex"] author: "Roy Osherove" description: "This came in the mail, thought other folks might be interested. Hi Roy. I need to check a line of html and make the value of the style attribute lowercase. I've tried to come up with a regex that will work but I keep…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Q&A - Greedy matching in regular expressions By Roy Osherove January 10, 2005 In [Regex](https://osherove.com/blog/category/regex) **Historical article** · Originally published January 10, 2005; technical details may be outdated. This came in the mail, thought other folks might be interested. _Hi Roy. I need to check a line of html and make the value of the style attribute lowercase.  I've tried to come up with a regex that will work but I keep making the entire line of html lowercase instead of just the stuff in the style value.  I can't get the match to end with the correct quote, instead it goes to the last quote on the line.  So something like this:_ _\[Tag style="**WIDTH**:20px; color:blue;" href="blah.com/PageTWO"\] I want to change to this: \[Tag style="**width**:20px; color:blue;" href="blah.com/PageTWO"\]_ _But instead I get this: \[Tag style="**width:20px; color:blue;" href="blah.com/pagetwo**"\]_ _Because the match ends with the end quote of the href._ _If you can point me in the right direction (or having something like this laying around), I would GREATLY appreciate it. _ **Answer:** It's called "greedy matching" - because it looks for the \*last\* character. Try to add a "?" after the quanitiy specifier (probably '\*'). That makes the match end on the \*first\* match. For example, given the following string as input: **"abcdfgdrbdtargd" **The following greedy regex (greedy by default) will match up until the lasd 'd': **(.\*d)** However, this regex will find several matches, the first one is "abcd": **(.\*?d)** (you can do without the braces if you want). I'd also suggest adding two good regex mailing list to your arsenal instead of sending help messages to various people: [http://groups.yahoo.com/group/dotnetregex/](http://groups.yahoo.com/group/dotnetregex/) [http://lists.aspadvice.com/SignUp/list.aspx?l=68&c=16](http://lists.aspadvice.com/SignUp/list.aspx?l=68&c=16) There are people there that know a whole lot more than me on regular expressions. ## More in Regex [All posts in Regex](https://osherove.com/blog/category/regex) - Jan 16, 2005 ### ["Buy first, ask questions later"](https://osherove.com/blog/2005/1/16/quotbuy-first-ask-questions-laterquot.html) - Jan 11, 2005 ### [The Regulator now hosted at Regex.osherove.com](https://osherove.com/blog/2005/1/11/the-regulator-now-hosted-at-regexosherovecom.html) - Jan 7, 2005 ### [Full source for The Regulator released](https://osherove.com/blog/2005/1/7/full-source-for-the-regulator-released.html) - Jan 7, 2005 ### [Using Regex to return the first N words in a string](https://osherove.com/blog/2005/1/7/using-regex-to-return-the-first-n-words-in-a-string.html) --- title: "Some thoughts on logic duplication in SOA design" url: "https://osherove.com/blog/2005/1/9/some-thoughts-on-logic-duplication-in-soa-design.md" canonical: "https://osherove.com/blog/2005/1/9/some-thoughts-on-logic-duplication-in-soa-design.html" published: "2005-01-09T01:55:00" updated: "2005-01-09T01:55:00" tags: ["SOA"] author: "Roy Osherove" description: "Rocky talks about the problem of duplicated business logic in a pure SOA design. This is an important conversation that must be had in order to make SOA a real life opportunity. Here are my thoughts on this. Rocky…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some thoughts on logic duplication in SOA design By Roy Osherove January 9, 2005 In [SOA](https://osherove.com/blog/category/soa) **Historical article** · Originally published January 9, 2005; technical details may be outdated. [Rocky talks about the problem of duplicated business logic](http://www.lhotka.net/WeBlog/PermaLink.aspx?guid=ae09a6da-64d6-4d1c-b283-fc2259517710) in a pure SOA design. This **is**  an important conversation that must be had in order to make SOA a real life opportunity. Here are my thoughts on this. Rocky refers right now to the validation rules that are the first and most likely candidates for duplication across layers (because layers can't trust each other). One way to find a solution would be to look elsewhere in the software world to see where such duplication might occur, and how it is prevented there. A good place to start would be a windows domain with multiple servers and services, and a user identity. As a user, I'd like to just sign in to my machine and get all the services I need from my domain (email, domain shares, printing etc..) without needing to re-enter my password every time. I want it to be transparent. And it is. The interesting thing is that the identity validation scheme does not have much duplication in it. \[putting it very very simply\] There is one central repository handling authorization, and it gives out tokens verifying that the user's service is indeed who it says it is. This token is the entrance ticket for all services on the  domain, so every service just needs to do one validation: "Is this token signed by my trusted partner?". So what we have here is one trusted service inside a closed domain that is authorized to give away signed certificates for authorization. These certificates can be time bound too, and encrypted, and a whole lot of "safe" things. Taking this view into SOA we can perhaps think of something like this: -  In the GUI, the user inputs some data and presses submit. - The web/winform application does basic validation of inputs. If validation succeeds, it requests a certificate of validation from a trusted **validation service**. This will be a certificate with a validation level of 1. The GUI will now call the workflow service along with the certificate. -  The workflow service will check to make sure the request contains the level > 1 certificate and if it does, passes the message on to the next service. - Somewhere along the line, there might be a need to do more validation (deep logic validation and so on). At this point the service which is processing and does the new validation (which already assumed that level 1 validation has passed, so it does not repeat it) gets a **new** level 2 certificate from the validation server and passes the data on. - At each point in time there are N certificates in the request (perhaps a combined certificate would be in order). These can be used to make sure validation does not need to occur. -  This approach means that some services require a validation certificate as part of their logical contract, and will fail if none is supplied. They will have no validation inside them that can be verified using an expected certificate. Stuff to think about: - Are we willing to add a little coupling to our design to remove duplication? - Does coupling mean creating a trusted services domain? ("Service Garden"?) - What does this mean for WS-Security and single sign on initiatives? ## More in SOA [All posts in SOA](https://osherove.com/blog/category/soa) - May 15, 2006 ### [Tech-Ed Panel Q&A: Architecture in the Real World - Questions](https://osherove.com/blog/2006/5/15/tech-ed-panel-qampa-architecture-in-the-real-world-questions.html) --- title: "Custom events in VB.Net" url: "https://osherove.com/blog/2005/1/9/custom-events-in-vbnet.md" canonical: "https://osherove.com/blog/2005/1/9/custom-events-in-vbnet.html" published: "2005-01-09T01:20:00" updated: "2005-01-09T01:20:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "I had a discussion going on with some folks regarding the fact that VB.Net does not have the equivalent of C# event accessors (the \"add\" and \"remove\" accessors you can declare inside an event declaration). We thought…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Custom events in VB.Net By Roy Osherove January 9, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published January 9, 2005; technical details may be outdated. I had a discussion going on with some [folks](http://weblogs.asp.net/jackieg) regarding the fact that VB.Net does not have the equivalent of C# event accessors (the "add" and "remove" accessors you can declare inside an event declaration). We thought this wasn't possible until [Paul Vick blogged about the "Custom Event" declaration](http://www.panopticoncentral.net/archive/2004/08/06/1545.aspx) that will be available with VB.Net 2.0. That's really good news. Now you can handle various problems such as [non-serializaed events](http://www.lhotka.net/WeBlog/PermaLink.aspx?guid=8f8ae33f-f3b3-4864-a146-4f852d78783e) in a safer manner, or [use the EventHandlerList class](http://weblogs.asp.net/rosherove/archive/2004/12/31/344773.aspx) to manage many events in your class. Very Nice. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 11, 2005 ### [Free online workshop - The .NET Assembly Loader (Fusion) - Internals and HOWTOs.](https://osherove.com/blog/2005/1/11/free-online-workshop-the-net-assembly-loader-fusion-internal.html) - Jan 11, 2005 ### [\[Free book\] .Net in samples](https://osherove.com/blog/2005/1/11/free-book-net-in-samples.html) - Jan 8, 2005 ### [\[Cool Tool\] XML Visualizer for Visual Studio .NET 2003](https://osherove.com/blog/2005/1/8/cool-tool-xml-visualizer-for-visual-studio-net-2003.html) - Jan 8, 2005 ### [Interesting ASP.NET (Hebrew) webcast coming up](https://osherove.com/blog/2005/1/8/interesting-aspnet-hebrew-webcast-coming-up.html) --- title: "[Cool Tool] How could I miss Copernic Desktop Search?" url: "https://osherove.com/blog/2005/1/9/cool-tool-how-could-i-miss-copernic-desktop-search.md" canonical: "https://osherove.com/blog/2005/1/9/cool-tool-how-could-i-miss-copernic-desktop-search.html" published: "2005-01-09T01:00:00" updated: "2005-01-09T01:00:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "How could I miss this gem ? All this time it was there, waiting, free , and apparently just as good, if not better, than the other desktop search tools. I should spank myself. \"I've been a Copernic Desktop Search user…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool Tool\] How could I miss Copernic Desktop Search? By Roy Osherove January 9, 2005 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published January 9, 2005; technical details may be outdated. How could I miss [this gem](http://www.copernic.com/en/products/desktop-search/index.html)? All this time it was there, waiting, **free**, and apparently just as good, if not better, than the other desktop search tools. I should spank myself. _"I've been a_ [_Copernic Desktop Search user for a few months now_](http://sirsha.com/blog/archive/2004/10/15/838.aspx) _and am still somewhat amazed and saddened that such a great product can go relatively unnoticed thanks to the popularity of companies offering products that barely bother trying to excel in the field (ahem, Google). I initially tried_ [_Copernic_](http://www.copernic.com/) _after reading a CNET review which is now outdated thanks to newer versions of the Google Desktop Search and MSN's new offering (which is MUCH better than Google's but not good enough to make me consider replacing_ [_Copernic_](http://www.copernic.com/)_)._ _Yesterday,_ [_Search Engine Watch pointed to a review that agrees_](http://blog.searchenginewatch.com/blog/050104-092449) _with my assessment."_ _\[via [Sirsha](http://sirsha.com/blog/archive/2005/01/05/915.aspx)\]_ ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jan 26, 2005 ### [JetBrains .NET Profiler](https://osherove.com/blog/2005/1/26/jetbrains-net-profiler.html) - Jan 25, 2005 ### [A new face lift for AxTools CodeSmart](https://osherove.com/blog/2005/1/25/a-new-face-lift-for-axtools-codesmart.html) - Jan 8, 2005 ### [\[Cool Tool\] XML Visualizer for Visual Studio .NET 2003](https://osherove.com/blog/2005/1/8/cool-tool-xml-visualizer-for-visual-studio-net-2003.html) - Jan 6, 2005 ### [Some news from the wild](https://osherove.com/blog/2005/1/6/some-news-from-the-wild.html) --- title: "[Cool Tool] XML Visualizer for Visual Studio .NET 2003" url: "https://osherove.com/blog/2005/1/8/cool-tool-xml-visualizer-for-visual-studio-net-2003.md" canonical: "https://osherove.com/blog/2005/1/8/cool-tool-xml-visualizer-for-visual-studio-net-2003.html" published: "2005-01-08T23:08:00" updated: "2005-01-08T23:08:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "Just got an email from a guy named Michael Bouck about a cool new addin he made. Perhaps he should have added it to Project Distributor as well?: \"Hi Roy, Love your blog feed -- keep it up! I noticed a while back that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool Tool\] XML Visualizer for Visual Studio .NET 2003 By Roy Osherove January 8, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published January 8, 2005; technical details may be outdated. Just got an email from a guy named Michael Bouck about a cool new addin he made. Perhaps he should have added it to [Project Distributor](http://projectdistributor.net/) as well?: _"Hi Roy, Love your blog feed -- keep it up! I noticed a while back that you blogged about [Mohammed Barqawi's QuickWatch for a DataSet VS.NET add-in](http://www.thecodeproject.com/csharp/DSWatch.asp). I thought the idea was compelling too and over the holidays decided to see how far I could take it (turns out pretty far!) The result is now posted over on GotDotNet:_ [_http://workspaces.gotdotnet.com/xmlviz_](http://workspaces.gotdotnet.com/xmlviz "http://workspaces.gotdotnet.com/xmlviz") _-- check it out!"_ And here's what is says on the GDN site: **[XMLViz - Summary](http://workspaces.gotdotnet.com/xmlviz):** XML Visualizer for Visual Studio .NET 2003 (XMLVIZ) allows you to visualize most XML and XML-backed data sources during runtime a la Whidbey's "debugger visualizers". The difference is you don't have to wait for VS.NET 2005 because XMLVIZ will work with your copy of VS.NET 2003 today! XMLVIZ is implemented as a VS.NET add-in and, once installed, is activated by highlighting any supported, initialized type instance during a debugging session, right-clicking on the selection to bring-up the context menu, and selecting the "XML Visualizer" menu item. The add-in will then grab the XML out of the selected target instance and display it on a modal dialog along with the schema (if available). For ADO.NET types, the data is also bound to a grid to allow navigation, row-filtering, and row version inspection. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 11, 2005 ### [\[Free book\] .Net in samples](https://osherove.com/blog/2005/1/11/free-book-net-in-samples.html) - Jan 9, 2005 ### [Custom events in VB.Net](https://osherove.com/blog/2005/1/9/custom-events-in-vbnet.html) - Jan 8, 2005 ### [Interesting ASP.NET (Hebrew) webcast coming up](https://osherove.com/blog/2005/1/8/interesting-aspnet-hebrew-webcast-coming-up.html) - Jan 6, 2005 ### [Some news from the wild](https://osherove.com/blog/2005/1/6/some-news-from-the-wild.html) --- title: "[Article] Defensive event publishing in .NET" url: "https://osherove.com/blog/2005/1/8/article-defensive-event-publishing-in-net.md" canonical: "https://osherove.com/blog/2005/1/8/article-defensive-event-publishing-in-net.html" published: "2005-01-08T22:16:00" updated: "2005-01-08T22:16:00" tags: [".Net Original"] author: "Roy Osherove" description: "Summary Events and delegates in the .NET Framework present an interesting case of apparent simplicity with abundant complexity underneath. Unfortunately, we *have* to take into account the complexity underneath if we…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Article\] Defensive event publishing in .NET By Roy Osherove January 8, 2005 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published January 8, 2005; technical details may be outdated. **Summary** Events and delegates in the .NET Framework present an interesting case of apparent simplicity with abundant complexity underneath. Unfortunately, we \*have\* to take into account the complexity underneath if we are to use events correctly in our applications. What I m suggesting here is that most developers today are \*not\* raising events correctly.  Even most of the advanced developers out there are not doing all the necessary steps in order to make sure the events are published in a safe manner. [Defensive Event Publishing in .NET (Part I)](http://weblogs.asp.net/rosherove/articles/DefensiveEventPublishing.aspx) _This article was inspired by_ [_Juval Lowy s Advanced .NET master class_](http://www.idesign.net/) _(Copyrights © IDesign 2005) and contains code excerpts from_ [_Programming .NET Components (1st Edition)_](https://www.amazon.com/exec/obidos/ASIN/0596003471/iserializable-20) _By O'Reilly 2003._ ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 3, 2005 ### [Solving Binary serialization versioning conflicts](https://osherove.com/blog/2005/3/3/solving-binary-serialization-versioning-conflicts.html) - Jan 23, 2005 ### [New stuff on Team Agile: XtUnit and Interception block with basic documentation](https://osherove.com/blog/2005/1/23/new-stuff-on-team-agile-xtunit-and-interception-block-with-b.html) - Jan 8, 2005 ### [Making ClickOnce publishing work in VS.Net 2005 Beta 1+](https://osherove.com/blog/2005/1/8/making-clickonce-publishing-work-in-vsnet-2005-beta-1.html) - Jan 7, 2005 ### [Full source for The Regulator released](https://osherove.com/blog/2005/1/7/full-source-for-the-regulator-released.html) --- title: "Defensive event publishing in .NET – Part I" url: "https://osherove.com/blog/2005/1/8/defensive-event-publishing-in-net-part-i.md" canonical: "https://osherove.com/blog/2005/1/8/defensive-event-publishing-in-net-part-i.html" published: "2005-01-08T20:56:00" updated: "2005-01-08T20:56:00" tags: [] author: "Roy Osherove" description: "This article was inspired by Juval Lowy’s Advanced .NET master class (Copyrights © IDesign 2005) and contains code excerpts from Programming .NET Components (1 st Edition) By O’Reilly 2003. Summary Events and delegates…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Defensive event publishing in .NET – Part I By Roy Osherove January 8, 2005 **Historical article** · Originally published January 8, 2005; technical details may be outdated. _This article was inspired by_ [_Juval Lowy’s Advanced .NET master class_](http://www.idesign.net/) _(Copyrights © IDesign 2005) and contains code excerpts from_ [_Programming .NET Components (1st Edition)_](https://www.amazon.com/exec/obidos/ASIN/0596003471/iserializable-20) _By O’Reilly 2003._ **Summary** Events and delegates in the .NET Framework present an interesting case of apparent simplicity with abundant complexity underneath. Unfortunately, we \*have\* to take into account the complexity underneath if we are to use events correctly in our applications. What I’m suggesting here is that most developers today are \*not\* raising events correctly.  Even most of the “advanced” developers out there are not doing all the necessary steps in order to make sure the events are published in a safe manner. **The case of the innocent coder** Take the following code as a starting point: public event EventHandler Clicked; private void FireClickedEvent() {    Clicked(this,EventArgs.Empty); } “This isn’t good code” most of you will say immediately. “You’re not checking to make sure the event is not null. And that’s true. An event with no subscriber is set to null by the runtime. That means that running this code will result in an exception. Consider the following code then: private void FireClickedEvent() {    if(Clicked!=null)       Clicked(this,EventArgs.Empty); } **Attack of the event subscribers** “That’s better”, most of you will say and continue on your merry way as if the code is fine and life is good. But, are they really?  Picture a state in which there are 10 event subscribers in your application. By design, your event is raised to each of them on the same thread.  What happens if the 3rd subscriber receives the event and throws an exception? Yep. You event will stop bubbling to the rest of the subscribers. That means that 7 clients will not receive your event and blow you up in the process. So what do you need to do? You need to manually go into the list of subscribers that your event will publish to and iterate over each one, manually activating the event for each of them and doing all this inside a try-catch block. To get into the subscriber list you go into your event’s “Invocation list”. An event is simply a delegate which is decorated with the “event” keyword. All delegates have an invocation list which exposes the list of subscribers. Here’s how the code looks now: private void FireClickedEvent() {     if(Clicked != null)     {         Delegate\[\] list = Clicked.GetInvocationList();         foreach (Delegate del in list)         {             try             {                 EventHandler handler = (EventHandler)del;                 handler(this, EventArgs.Empty);             }             catch { }         }     } } **Refactoring: Extract Utility Class** Better. But now consider the amount of code you need to write for each event firing code. What’s missing here is a more generic way of throwing the events. Let’s make an EventsHelper class that fires the event for us. To do that we need the ability to invoke any delegate in a generic way, regardless of the parameters that it expects. Help arrives in the form of **Delegate.DynamicInvoke().**  Dynamic invocation allows us to send any parameters into a delegate invocation. The upside is that now you can write generic code that looks like this: public class EventsHelper {     public static void Fire(Delegate del,params object\[\] args)     {         if (del == null)         {             return;         }         Delegate\[\] delegates = del.GetInvocationList();         foreach (Delegate sink in delegates)         {             InvokeDelegate(sink,args);         }     }     private static void InvokeDelegate(Delegate sink,object\[\] args)     {         try         {             sink.DynamicInvoke(args);         }         catch         {}     } } Which means that now we can write code that looks like this in our original class:  private void FireClickedEvent()  {      **EventsHelper.Fire**(Clicked,this,EventArgs.Empty);  } But there’s a downside as well: invoking the delegate just became a non-type safe activity. That means that the user of the events helper may be able to send in the wrong parameters in code to invoke an event, but the compiler won’t complain about this. We’ll see how we solve this problem in .NET 2.0 when we discuss generics in part II of this article. For now, we have even more important potential issues we need to worry about. **Return of the killer event subscribers** Consider the earlier scenario of multiple subscribers. Now imagine that no subscriber throws an exception, but instead, now the 3rd subscriber does very lengthy processing. Since all events are sent in a synchronous manner, the 4th subscriber and so on may receive the events in a delay which may render the event meaningless (for example, events that mark the passing of a single second but which take 3 seconds to process). The way to overcome this is of course to invoke the delegate asynchronously on a thread different than the calling thread. That way we don’t care how long it takes for each event subscriber to process the event, we just keep going through our invocation list without worries, never blocking for any subscriber. To that end we can use the delegate’s BeginInvoke() method, which automatically will invoke the delegate on a different thread.  The plan: We’re still going to call the “InvokeDelegate” method, only we’re going to use **our own** delegate to call it from within EventsHelper, and we’re going to call it asynchronously for each of the delegates in the invocation list (changed  lines are highlighted): public class EventsHelper {     **delegate void AsyncInvokeDelegate(Delegate del, params object\[\] args);**     public static void FireAsync(Delegate del, params object\[\] args)     {         if (del == null)         {            return;         }         Delegate\[\] delegates = del.GetInvocationList();         **AsyncInvokeDelegate invoker = new AsyncInvokeDelegate(InvokeDelegate);**         foreach (Delegate sink in delegates)         {            **invoker.BeginInvoke(sink,args,null,null);**   }     } The **BeginInvoke** method of a delegate will automatically run the target method on a thread from the thread pool. Notice the last two parameters. These are used in cases where we want to be able to get a callback when the target method finishes execution. Since in this scenario we don’t really care (the whole idea of firing events is “fire and forget”) we’ll leave these alone to specific articles on those issues. For now, this will suffice in letting us raise events in an asynchronous way. Are we done yet? The answer is, of course, “Hell no!”. **The case of the hidden resource leak** One of the things we need to watch out for is resource leaks. It’s a little known fact that whenever you invoke a delegate asynchronously, it keeps aside some information about the call, arguments, errors, returned value, signaling event, state and so on, for purposes of callback and other things. Consider what’s going to happen if our application calls the EventsHelper 5 million times a day for a month, without restarting. Can you guess what will happen to the computer’s memory and resources? Because we don’t really care for all that saved information, we can make the delegate ignore it and not save it, by placing a \[OneWay\] attribute on the method that the delegate invokes. We can’t trust our event subscribers to do this, can we? Luckily, we already have a method which is a perfect candidate for this attribute – you guessed it – the “InvokeDelegate” method. Because we call it asynchronously using our own internal delegate, we can simply signal that method as \[OneWay\] and be done with it: **\[OneWay\]**  private static void InvokeDelegate(Delegate sink,object\[\] args)  {      try      {        //execute delegate invocation Are we done already? Not really, but we’ve sure come a long way. We now have a generic class now that you can use in your applications. You can download the full version of this class from [the IDesign website here](http://www.idesign.net/idesign/DesktopDefault.aspx?tabindex=5&tabid=8) (along with many other useful code snippets and solutions!) Unfortunately, I’ll have to stop this article mid way; the reason being that some of the stuff that was shown in Juval’s class was excerpted from his new book, “_Programming .NET Components, 2nd edition_”, that which will only be published in April 2005. Since there are still copyright issues in showing that intellectual property, part II  of this article will have to wait until then. --- title: "Interesting ASP.NET (Hebrew) webcast coming up" url: "https://osherove.com/blog/2005/1/8/interesting-aspnet-hebrew-webcast-coming-up.md" canonical: "https://osherove.com/blog/2005/1/8/interesting-aspnet-hebrew-webcast-coming-up.html" published: "2005-01-08T12:46:00" updated: "2005-01-08T12:46:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Natty Gur will be doing an interesting webcast this week on ASP.NET: \"If you are ASP.NET developers, you interesting how ASP.NET really works and you understand Hebrew I suggest you will register to my web cast…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Interesting ASP.NET (Hebrew) webcast coming up By Roy Osherove January 8, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published January 8, 2005; technical details may be outdated. Natty Gur will be doing an [interesting webcast](http://weblogs.asp.net/ngur/archive/2005/01/08/349112.aspx) this week on ASP.NET: _"If you are ASP.NET developers, you interesting how ASP.NET really works and you understand Hebrew I suggest you will register to my web cast (Wednesday - 12.1). This web cast uncovers information regarding ASP.NET that I’ve never seen on the WEB._ _The link :_ [_http://demo.interwise.com/ISRDemo/iSeminar/NS1543/default.asp_](http://demo.interwise.com/ISRDemo/iSeminar/NS1543/default.asp) _After the webcast I’ll publish the presentation (English version) and the demos on my blog."_ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 9, 2005 ### [Custom events in VB.Net](https://osherove.com/blog/2005/1/9/custom-events-in-vbnet.html) - Jan 8, 2005 ### [\[Cool Tool\] XML Visualizer for Visual Studio .NET 2003](https://osherove.com/blog/2005/1/8/cool-tool-xml-visualizer-for-visual-studio-net-2003.html) - Jan 6, 2005 ### [Some news from the wild](https://osherove.com/blog/2005/1/6/some-news-from-the-wild.html) - Jan 3, 2005 ### [\[WebCast\] The Elixir and Alchemy projects - Outlook Integration with Siebel at Microsoft](https://osherove.com/blog/2005/1/3/webcast-the-elixir-and-alchemy-projects-outlook-integration.html) --- title: "Nice article on Extending the NUnit Assert methods" url: "https://osherove.com/blog/2005/1/8/nice-article-on-extending-the-nunit-assert-methods.md" canonical: "https://osherove.com/blog/2005/1/8/nice-article-on-extending-the-nunit-assert-methods.html" published: "2005-01-08T10:54:00" updated: "2005-01-08T10:54:00" tags: [] author: "Roy Osherove" description: "Charlie Poole (The new father of NUnit ) wrote this nice draft article about a subject I never touched: Extending the Assert class in NUnit. \"Development of a set of customized assertion methods is a key to productive…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice article on Extending the NUnit Assert methods By Roy Osherove January 8, 2005 **Historical article** · Originally published January 8, 2005; technical details may be outdated. [Charlie Poole](http://charliepoole.org/) (The new father of [NUnit](http://www.nunit.org/)) wrote [this nice draft article](http://charliepoole.org/article.php?p=beyond_assert) about a subject I never touched: Extending the Assert class in NUnit. _"Development of a set of customized assertion methods is a key to productive test-writing for NUnit. In many cases, a private method in one of your test fixtures will be all that is needed. In others, you may wish to deploy one or more assertions so that they can be reused by the entire development team._ _NUnit's new Assert extensibility model allows tailoring specific assertions for your application in a way that is consistent with the basic NUnit assertions. These extensions can provide messages that are consistent in appearance with those provided by NUnit and use features of the NUnit framework to avoid duplication."_ --- title: "Making ClickOnce publishing work in VS.Net 2005 Beta 1+" url: "https://osherove.com/blog/2005/1/8/making-clickonce-publishing-work-in-vsnet-2005-beta-1.md" canonical: "https://osherove.com/blog/2005/1/8/making-clickonce-publishing-work-in-vsnet-2005-beta-1.html" published: "2005-01-08T02:28:00" updated: "2005-01-08T02:28:00" tags: [".Net 2.0", ".Net Original"] author: "Roy Osherove" description: "The following helps in cases when you get the following error messages: \"Deployment manifest requires publisher and product specified\" or \"files missing from deployment\" Here's what I needed to do on my Win Server 2003:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Making ClickOnce publishing work in VS.Net 2005 Beta 1+ By Roy Osherove January 8, 2005 In [.Net 2.0](https://osherove.com/blog/category/net-2-0), [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published January 8, 2005; technical details may be outdated. The following helps in cases when you get the following error messages: _"Deployment manifest requires publisher and product specified" or "files missing from deployment"_ Here's what I needed to do on my Win Server 2003: 1\. Open RegEdit (back up your registry always before changing stuff!!) and browse to the key:  HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion        - Add/Change RegisteredOrganization to your company name. 2\. You need to enable your IIS server to send out .manifest files. Add ".manifest" to the MIME types of IIS by right clicking on your IIS server node and selecting "MIME types". Then click "New" and add ".manifest" for the extension and ".Net manifest file" for the description. _\[**Update**:_ [_Denny_](http://www.figuerres.com/) _makes a good point by saying that you should probably only do this for the specific virtual folder you are deploying to instead of the whole IIS. Do this by right clicking on the folder and select properties. Then select the "HTTP headers" tab and click "MIME types" on the bottom of the dialog.\]_ Now you can publish your apps and test it locally on your own machine. ## More in .Net 2.0 [All posts in .Net 2.0](https://osherove.com/blog/category/net-2-0) - Jan 18, 2005 ### [Data Binding with .Net 2.0 : upcoming coolness](https://osherove.com/blog/2005/1/18/data-binding-with-net-20-upcoming-coolness.html) - Jan 11, 2005 ### [\[Interview\] Jonathan de Halleux on mbUnit and model based testing](https://osherove.com/blog/2005/1/11/interview-jonathan-de-halleux-on-mbunit-and-model-based-test.html) --- title: "Full source for The Regulator released" url: "https://osherove.com/blog/2005/1/7/full-source-for-the-regulator-released.md" canonical: "https://osherove.com/blog/2005/1/7/full-source-for-the-regulator-released.html" published: "2005-01-07T23:56:00" updated: "2005-01-07T23:56:00" tags: [".Net Original", "Regex"] author: "Roy Osherove" description: "I finally got around to release the full source code for The Regulator . Up until now the source code was partial and included mostly just the plugins for it. Now you get to see what a sloppy coder I really was when I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Full source for The Regulator released By Roy Osherove January 7, 2005 In [.Net Original](https://osherove.com/blog/category/net-original), [Regex](https://osherove.com/blog/category/regex) **Historical article** · Originally published January 7, 2005; technical details may be outdated. I finally got around to release [the full source code](http://prdownloads.sourceforge.net/regulator/Regulator203_Src.zip?download) for [The Regulator](http://regulator.sf.net/). Up until now the source code was partial and included mostly just the plugins for it. Now you get to see what a sloppy coder I really was when I dreamed up this thing, and the stages I took from making it from a simple GUI  to a pluggable architecture of GUI and logical plugins. There's lots of code there that I would do differently today. for example, the whole threading thing in the GUI I would change to use the [BackgroudWorker](http://weblogs.asp.net/rosherove/articles/BackgroundWorker.aspx) that Juval Lowy wrote. Many more things like that. In any case, have fun mocking me :) Note that I use a lot of 3rd party libraries such as [ComponentOne's](http://www.xtras.net/products/componentonemenusandtoolbarsfordotnet.asp) Toolbars and [Syncfusion's](http://www.syncfusion.com/) Edit control. You'll need those to be able to compile. (C1's components were free as part of the [VB resource kit](http://weblogs.asp.net/rosherove/archive/2003/10/02/30109.aspx) you can download. [SyncFusion](http://www.syncfusion.com/) donated their control. it's not free.) I'm trying to find time to make a new version. Hope that'll happen soon. Why did I decide to release it now? mainly because I got an angry email from one of the SourceForge.Net admins asking whether what a complaint from an end-user to the site is true; that  the project was released without source code. I explained that it comes with \*partial\* source, but if that's what's going to make them happy, I'll add the source now. Since I was planning to anyway, Just didn't feel very confident about the way the code looks, this wasn't an issue.  In fact, I welcome this catalyst as an opportunity to give more to the community. Sorry it took so long in the first place. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 8, 2005 ### [\[Article\] Defensive event publishing in .NET](https://osherove.com/blog/2005/1/8/article-defensive-event-publishing-in-net.html) - Jan 8, 2005 ### [Making ClickOnce publishing work in VS.Net 2005 Beta 1+](https://osherove.com/blog/2005/1/8/making-clickonce-publishing-work-in-vsnet-2005-beta-1.html) - Jan 7, 2005 ### [Using Regex to return the first N words in a string](https://osherove.com/blog/2005/1/7/using-regex-to-return-the-first-n-words-in-a-string.html) - Jan 6, 2005 ### [Return of the Extensibility Application Block](https://osherove.com/blog/2005/1/6/return-of-the-extensibility-application-block.html) --- title: "Using Regex to return the first N words in a string" url: "https://osherove.com/blog/2005/1/7/using-regex-to-return-the-first-n-words-in-a-string.md" canonical: "https://osherove.com/blog/2005/1/7/using-regex-to-return-the-first-n-words-in-a-string.html" published: "2005-01-07T02:47:00" updated: "2005-01-07T02:47:00" tags: [".Net Original", "Regex", "Tips & Tricks"] author: "Roy Osherove" description: "Jeff Perrin needed a function to return the first N words in a string (to create a small summary or a snippet thingy). He did it using the manual and awkward method of parsing the string manually. That method is more…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Using Regex to return the first N words in a string By Roy Osherove January 7, 2005 In [.Net Original](https://osherove.com/blog/category/net-original), [Regex](https://osherove.com/blog/category/regex), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published January 7, 2005; technical details may be outdated. [Jeff Perrin needed a function to return the first N words in a string](http://www2.kanga.ca/blogs/jperrin/archive/2004/12/29/225.aspx) (to create a small summary or a snippet thingy). He did it using the manual and awkward method of parsing the string manually. That method is more error prone and usually makes for less readable code. Fortunately, you can use regular expressions here quite nicely. Here's a test that makes sure that we get the first 4 words in a string and the function "FindFirstWords" that does this very easily using a simple regular expression. What I'm doing here is that I'm using the expression to find the first 4 occurrences of text that is composed of alphanumeric text with one or more spaces after it. Then I simply iterate over the match I found. The match should contain 4 captures inside it - one for each "word" that was found. It's not fully tested as you can see. I only wrote one test to see it works on this sort of sentence. More tests could and should be added to test other cases. In fact, if this were reall TDD, I would have started with a test of an empty string, and continued on to test getting only one word, and then two and so on. \[Test\] public void TestRegexFindFirstNWords() {       const string INPUT = "this is word four five six seven eight nine ten eleven twelve thirteen!";       const int NUM\_WORDS\_TO\_RETURN = 4;       string output = **FindFirstWords** (INPUT, NUM\_WORDS\_TO\_RETURN);       string expectedOutput = "this is word four ";       Assert.AreEqual(expectedOutput,output); } private string **FindFirstWords** (string input, int howManyToFind) {      // thanks to [Jeff Attwood](http://www.codinghorror.com/blog/) for making this code even simpler!       string REGEX = @"(\[\\w\]+\\s+){" + howManyToFind + "}";       return Regex.Match(input,REGEX).Value; } ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 8, 2005 ### [Making ClickOnce publishing work in VS.Net 2005 Beta 1+](https://osherove.com/blog/2005/1/8/making-clickonce-publishing-work-in-vsnet-2005-beta-1.html) - Jan 7, 2005 ### [Full source for The Regulator released](https://osherove.com/blog/2005/1/7/full-source-for-the-regulator-released.html) - Jan 6, 2005 ### [Return of the Extensibility Application Block](https://osherove.com/blog/2005/1/6/return-of-the-extensibility-application-block.html) - Jan 5, 2005 ### [A simple question about overloading](https://osherove.com/blog/2005/1/5/a-simple-question-about-overloading.html) --- title: "Return of the Extensibility Application Block" url: "https://osherove.com/blog/2005/1/6/return-of-the-extensibility-application-block.md" canonical: "https://osherove.com/blog/2005/1/6/return-of-the-extensibility-application-block.html" published: "2005-01-06T23:51:00" updated: "2005-01-06T23:51:00" tags: [".Net Original"] author: "Roy Osherove" description: "A while ago I released two articles about implementing plugins in your .net applications( here and here ). I then went ahead and created a generic piece of code that encapsulates the functionality demonstrated in those…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Return of the Extensibility Application Block By Roy Osherove January 6, 2005 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published January 6, 2005; technical details may be outdated. A while ago I released two articles about implementing plugins in your .net applications([here](http://msdn.microsoft.com/asp.net/community/authors/royosherove/default.aspx?pull=/library/en-us/dnaspp/html/pluginframework.asp) and [here](http://msdn.microsoft.com/asp.net/community/authors/royosherove/default.aspx?pull=/library/en-us/dnaspp/html/searchforplugins.asp)). I then went ahead and created a generic piece of code that encapsulates the functionality demonstrated in those articles that can be "dropped in" your application to give instant plugin recognition abilities (after small interface modifications). I called it the "[Extensibility Application Block](http://www.gotdotnet.com/community/workspaces/workspace.aspx?id=23ab5ce9-bdaf-4d7f-aa3b-d77cc83e386c)" (I then gave it the acronym of "EAP". Don't ask me why, I have no good answer). I was sure no one was using it, but I was wrong. [Chris Frazier](http://www.chrisfrazier.net/blog) used my Extensibility application block  in his most excellent "PostXING" blogging client (which I am using to write this) and [gives a nice review](http://www.chrisfrazier.net/blog/posts/666.aspx) of what he had to do to make plugins work for his application. That's pretty cool! I also learned from that article that [RSS Bandit](http://www.rssbandit.org/) uses the same search semantics explained in my MSDN article about searching for plugins. That's pretty cool too! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 7, 2005 ### [Full source for The Regulator released](https://osherove.com/blog/2005/1/7/full-source-for-the-regulator-released.html) - Jan 7, 2005 ### [Using Regex to return the first N words in a string](https://osherove.com/blog/2005/1/7/using-regex-to-return-the-first-n-words-in-a-string.html) - Jan 5, 2005 ### [A simple question about overloading](https://osherove.com/blog/2005/1/5/a-simple-question-about-overloading.html) - Dec 31, 2004 ### [Manage many events easily with EventHandlerList](https://osherove.com/blog/2004/12/31/manage-many-events-easily-with-eventhandlerlist.html) --- title: "Some news from the wild" url: "https://osherove.com/blog/2005/1/6/some-news-from-the-wild.md" canonical: "https://osherove.com/blog/2005/1/6/some-news-from-the-wild.html" published: "2005-01-06T22:36:00" updated: "2005-01-06T22:36:00" tags: [".Net Quotations", "Agile Related", "Cool Tools", "Tips & Tricks"] author: "Roy Osherove" description: "- Udi shares his thoughs on maintaining legacy code without unit tests and about Mock objects ( here and here ). Interesting stuff. Nothing too new here, but some great concepts one needs to keep in mind at all times…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some news from the wild By Roy Osherove January 6, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published January 6, 2005; technical details may be outdated. \- [Udi](http://www.thesoftwaresimplist.com/) shares his thoughs on [maintaining legacy code without unit tests](http://udidahan.weblogs.us/archives/023230.html) and about Mock objects ([here](http://udidahan.weblogs.us/archives/023166.html) and [here](http://udidahan.weblogs.us/archives/023311.html)). Interesting stuff. Nothing too new here, but some great concepts one needs to keep in mind at all times when dealing with these issues. \- Generics are cool. But [this is a very interesting argument](http://dotnetguy.techieswithcats.com/archives/004273.shtml) on why they are not as powerful as they should be because you can't use them as late bound types . If you're not sure what I mean, read the explanation in the blog post. (via [LarkWare](http://www.larkware.com/dg2/TheDailyGrind531.html)) \- Also from larkware: [XP StoryStudio](http://www.xpstorystudio.com/) - Free agile project management ASP.NET application. \- I downloaded and installed [Microsoft's Anti spyware tool](http://www.microsoft.com/downloads/details.aspx?FamilyID=321cd7a2-6a57-4c57-a8bd-dbf62eda9671&DisplayLang=en) today. Looks pretty darn good. [Here's a direct download link for ya](http://download.microsoft.com/download/8/1/5/815d2d60-49b5-44dc-ae35-fca2f2c6f0cc/MicrosoftAntiSpywareInstall.exe) . I suggest you install it on all your parents' computers as well. \- My currently favorite VS.net addin- [Resharper](http://www.jetbrains.com/resharper/download/), is out with a new version 1.05. It adds several new refactorings, making it even more valuable to the developer in vs 2003. My wish - add so many refactorings that it would be worth to buyg even if you have vs 2005.  new refactorings include: \* Extract Interface \* Extract Superclass \* Introduce Field \* Encapsulate Field \* Copy Type \* Introduce Parameter \* Convert Interface to Abstract Class \* Convert Abstract Class to Interface \- Here’s a bunch of [freeware tools and components](http://www.ms-inc.net/Products.aspx) for Visual Studio and ASP.NET from [Morrison Schwartz](http://www.ms-inc.net/Home.aspx). Some include source code, others you can purchase the source for what looks to be a relatively small fee. (via [Darrell](http://dotnetjunkies.com/WebLog/darrell.norton/archive/2005/01/04/41222.aspx)) \- [Martin fowler talks about](http://martinfowler.com/bliki/SpreadingIncrementalism.html) what to do when you think you \*have\* to design something up front instead of using the incremental (agile) approach to its design.  You should definitely read "[Is Design Dead?](http://martinfowler.com/articles/designDead.html)" on the issue of incremental vs. up-front design. I keep getting questions regarding this issue a lot. I hope I'll get some time to address them. meanwhile, that article is a great start. \- [Peli shows off](http://blog.dotnetwiki.org/archive/2005/01/03/1403.aspx) a little of the powerful stuff that mbUnit can do such as RowFixtures and Combinatorial tests. Powerful stuff. \- [Scott Hanselman explains](http://www.hanselman.com/blog/PermaLink.aspx?guid=2c115b60-1750-4754-8a01-ee6660dfef2b) how he writes unit tests for code generators  \- Microsoft: [Testing .NET Application Blocks](http://www.microsoft.com/downloads/details.aspx?FamilyID=bc99325a-59ae-401d-9812-d40d10366396&DisplayLang=en): "Describes how to test .NET application blocks during their development, while customizing them, or during their integration with an application. Provides information on all phases of the testing lifecycle, as well as **test driven development.**" \- Microsoft: [Team Foundation installation guide](http://www.microsoft.com/downloads/details.aspx?FamilyID=e54bf6ff-026b-43a4-ade4-a690388f310e&DisplayLang=en) (for the latest CTP) for you brave souls out there.. \- [30 minutes regular expression tutorial](http://www.codeproject.com/useritems/RegexTutorial.asp?df=100&forumid=136362&select=1010085). This one is using Expresso for the examples. Expresso is the first tool I used to learn regex. I then created Regulator to make up for stuff I was missing. Looks like a nice intro article anyway. You can also read the two articles I've written on the subject ([here](http://dotnetweblogs.com/rosherove/story/6863.aspx) , [here](http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/regexandxmlclasses.asp) and [here](http://dotnetweblogs.com/rosherove/story/6946.aspx)). \- Looks like [IronPython](http://www.ironpython.com/) is what I'll be learning too. [That's the buzz](http://samgentile.com/blog/archive/2004/12/27/12406.aspx), anyway. Leanr a new language every year, remember? \- [Snippet Compiler version 2.0!](http://www.sliver.com/dotnet/SnippetCompiler) \- [Sirsha has a great review](http://sirsha.com/blog/archive/2005/01/06/920.aspx) on [Mike Gunderloy](http://www.larkware.com/)'s "[Coder To Developer](https://www.amazon.com/exec/obidos/ASIN/078214327X/iserializable-20)" book. And I agreee completely. \- "The Clemens" [writes about XmlSerializer and TimeSpan issues](http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=46715ffd-2470-4396-a63c-f037ecd2fa0a) you might want to be aware of. \- [Thinstall sounds really really cool](http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=1646). Deploy your .Net apps with no dependencies and no runtime needed. \- [Introducing The ManagedThreadPool](http://weblogs.asp.net/adweigert/archive/2005/01/06/347877.aspx). Looks interesting! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 8, 2005 ### [\[Cool Tool\] XML Visualizer for Visual Studio .NET 2003](https://osherove.com/blog/2005/1/8/cool-tool-xml-visualizer-for-visual-studio-net-2003.html) - Jan 8, 2005 ### [Interesting ASP.NET (Hebrew) webcast coming up](https://osherove.com/blog/2005/1/8/interesting-aspnet-hebrew-webcast-coming-up.html) - Jan 3, 2005 ### [\[WebCast\] The Elixir and Alchemy projects - Outlook Integration with Siebel at Microsoft](https://osherove.com/blog/2005/1/3/webcast-the-elixir-and-alchemy-projects-outlook-integration.html) - Dec 7, 2004 ### [Small but useful SQL tips from SQLJunkies](https://osherove.com/blog/2004/12/7/small-but-useful-sql-tips-from-sqljunkies.html) --- title: "A simple question about overloading" url: "https://osherove.com/blog/2005/1/5/a-simple-question-about-overloading.md" canonical: "https://osherove.com/blog/2005/1/5/a-simple-question-about-overloading.html" published: "2005-01-05T22:49:00" updated: "2005-01-05T22:49:00" tags: [".Net Original"] author: "Roy Osherove" description: "Given 3 classes: PersonBase, Employee and Manager: class PersonBase { } class Employee : PersonBase { } class Manager : Employee { } and given the following methods: public void Loop() { PersonBase [] people = new…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A simple question about overloading By Roy Osherove January 5, 2005 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published January 5, 2005; technical details may be outdated. Given 3 classes: PersonBase, Employee and Manager: class PersonBase { } class Employee : PersonBase { } class Manager : Employee { } and given the following  methods: public void Loop()  {      PersonBase\[\] people = new PersonBase\[\]{                                  new PersonBase(),                                  new Employee(),                                  new Manager()                                  };      foreach (PersonBase pb in people)      {          doSomething(pb);      }  }  void doSomething(PersonBase p)  {      Console.WriteLine("PersonBase");  }  void doSomething(Employee e)  {      Console.WriteLine("Employee");  }  void doSomething(Manager m)  {      Console.WriteLine("Manager");  } Why does only the first of the three “doSomething” overloads get called for all the objects in the array? How could you force those methods to get called? _(Ignore the various class factory solutions out there.)_ ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 7, 2005 ### [Using Regex to return the first N words in a string](https://osherove.com/blog/2005/1/7/using-regex-to-return-the-first-n-words-in-a-string.html) - Jan 6, 2005 ### [Return of the Extensibility Application Block](https://osherove.com/blog/2005/1/6/return-of-the-extensibility-application-block.html) - Dec 31, 2004 ### [Manage many events easily with EventHandlerList](https://osherove.com/blog/2004/12/31/manage-many-events-easily-with-eventhandlerlist.html) - Dec 30, 2004 ### [Next generation iteration: Array.ForEach and Delegate inference](https://osherove.com/blog/2004/12/30/next-generation-iteration-arrayforeach-and-delegate-inferenc.html) --- title: "Continuous integration with CruiseControl lessons learned" url: "https://osherove.com/blog/2005/1/5/continuous-integration-with-cruisecontrol-lessons-learned.md" canonical: "https://osherove.com/blog/2005/1/5/continuous-integration-with-cruisecontrol-lessons-learned.html" published: "2005-01-05T22:45:00" updated: "2005-01-05T22:45:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Christopher Judd posts his lessons from implementing Continuous integration with CruiseControl.Net. [via TestDriven.com ] Continuous integration is a term used in Agile development project to denote the fact that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Continuous integration with CruiseControl lessons learned By Roy Osherove January 5, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published January 5, 2005; technical details may be outdated. [Christopher Judd posts his lessons from implementing Continuous integration with CruiseControl.Net.](http://blogs.apress.com/archives/000377.html) _\[via_ [_TestDriven.com_](http://testdriven.com/)_\]_ Continuous integration is a term used in Agile development project to denote the fact that integration of all the code base is done as frequently as possible. That means getting the latest version from source control and building it all. It also means running all the unit tests on the latest build. This early integration allows the team to catch bugs and bad code as early as possible, when it's still easy and quick to find and fix. [CruiseControl.Net](http://cruisecontrol.sourceforge.net/) is one of the best known CI daemons. I suggest you give it a go on your own projects. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jan 11, 2005 ### [\[Interview\] Jonathan de Halleux on mbUnit and model based testing](https://osherove.com/blog/2005/1/11/interview-jonathan-de-halleux-on-mbunit-and-model-based-test.html) - Jan 6, 2005 ### [Some news from the wild](https://osherove.com/blog/2005/1/6/some-news-from-the-wild.html) - Jan 5, 2005 ### [Zanebug v1.4.3 - a better NUnit GUI?](https://osherove.com/blog/2005/1/5/zanebug-v143-a-better-nunit-gui.html) - Jan 1, 2005 ### [The case for staged delivery and Agile methodologies](https://osherove.com/blog/2005/1/1/the-case-for-staged-delivery-and-agile-methodologies.html) --- title: "Zanebug v1.4.3 - a better NUnit GUI?" url: "https://osherove.com/blog/2005/1/5/zanebug-v143-a-better-nunit-gui.md" canonical: "https://osherove.com/blog/2005/1/5/zanebug-v143-a-better-nunit-gui.html" published: "2005-01-05T13:20:00" updated: "2005-01-05T13:20:00" tags: ["Agile Related", "Cool Tools"] author: "Roy Osherove" description: "I really need to take a look at this tool . For now - here's the announcement of the newest version. Feel free to comment your thoughts on this toos on this post. \"Greetings! To bring in the New Year, a new version of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Zanebug v1.4.3 - a better NUnit GUI? By Roy Osherove January 5, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published January 5, 2005; technical details may be outdated. I really need to take a look at [this tool](http://www.adapdev.com/zanebug). For now - here's the announcement of the newest version. Feel free to comment your thoughts on this toos on this post. _"Greetings!_ _To bring in the New Year, a new version of Zanebug has just been released!!_ _For those that don't know - Zanebug is a free, NUnit compatible, feature-rich unit testing tool with a great UI and cool performance metrics._ _Changes since 1.4.1 (and a very brief 1.4.2) include:_ _\- Full support for NUnit 2.2_ _\- Command line version is now available_ _\- Enhanced run-time editing (category, expected exception, etc.)_ _\- Ability to run multiple tests at once (command line version only - will be added to GUI version in next release)_ _\- Selected tests are remembered across assembly reloads (no need to recheck / uncheck)_ _\- Added well-formatted text summary (and the ability to save summary)_ _\- Improved Xml output_ _\- Tons of refactoring_ _\- Greatly improved shadow copying and AppDomain functionality_ _\- Enhanced API_ _\- Bug fixes_ _\-- Fixed the "File X or one of its dependencies could not be found"_ _\-- Fixed the issue w/ custom Exceptions not being recognized within the ExpectedException attribute_ _I'm currently working on the next release, which will include:_ _\- VS.NET integration_ _\- HTML Reports_ _\- Plugin architecture_ _\- Developer's Guide_ _Please visit the Zanebug homepage for the latest download and documentation:_ [_http://www.adapdev.com/zanebug_](http://www.adapdev.com/zanebug) _Also, I'm always interested in feedback, feature requests, or any bugs that you encounter. Feel free to email me!_ _Sincerely,_ _Sean McCormack"_ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jan 6, 2005 ### [Some news from the wild](https://osherove.com/blog/2005/1/6/some-news-from-the-wild.html) - Jan 5, 2005 ### [Continuous integration with CruiseControl lessons learned](https://osherove.com/blog/2005/1/5/continuous-integration-with-cruisecontrol-lessons-learned.html) - Jan 1, 2005 ### [The case for staged delivery and Agile methodologies](https://osherove.com/blog/2005/1/1/the-case-for-staged-delivery-and-agile-methodologies.html) - Dec 29, 2004 ### [Comparing C++ unit testing frameworks](https://osherove.com/blog/2004/12/29/comparing-c-unit-testing-frameworks.html) --- title: "[WebCast] The Elixir and Alchemy projects - Outlook Integration with Siebel at Microsoft" url: "https://osherove.com/blog/2005/1/3/webcast-the-elixir-and-alchemy-projects-outlook-integration.md" canonical: "https://osherove.com/blog/2005/1/3/webcast-the-elixir-and-alchemy-projects-outlook-integration.html" published: "2005-01-03T17:16:00" updated: "2005-01-03T17:16:00" tags: [".Net Quotations", "WebCast"] author: "Roy Osherove" description: "\"For years the Microsoft field had been requesting a CRM client that would be seamlessly integrated into their normal workflow so that customer interactions stored within Outlook, such as email or calendar items, could…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[WebCast\] The Elixir and Alchemy projects - Outlook Integration with Siebel at Microsoft By Roy Osherove January 3, 2005 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [WebCast](https://osherove.com/blog/category/webcast) **Historical article** · Originally published January 3, 2005; technical details may be outdated. _"For years the Microsoft field had been requesting a CRM client that would be seamlessly integrated into their normal workflow so that customer interactions stored within Outlook, such as email or calendar items, could be easily captured within Siebel. In addition, the field expressed a need for a “360 degree view” of their customer, available both online and offline. Both of these goals were achieved through the development of our “Project Alchemy” Web Service and “Project Elixir” Customer Explorer Outlook 2003 plug-in. This webcast demonstrates the Outlook-integrated CRM plug-in and provides a detailed technical description of how the smart client application was built."_ [Watch the webcast: 1 hour 9 minutes 53 seconds](http://www.siebelonmicrosoft.com/mssiebel/video/elixir/Elixir_Webcast_files/Default.htm) \[via [Patrick](http://blog.u2u.info/DottextWeb/patrick/archive/2004/12/24/646.aspx)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 8, 2005 ### [Interesting ASP.NET (Hebrew) webcast coming up](https://osherove.com/blog/2005/1/8/interesting-aspnet-hebrew-webcast-coming-up.html) - Jan 6, 2005 ### [Some news from the wild](https://osherove.com/blog/2005/1/6/some-news-from-the-wild.html) - Dec 7, 2004 ### [Small but useful SQL tips from SQLJunkies](https://osherove.com/blog/2004/12/7/small-but-useful-sql-tips-from-sqljunkies.html) - Nov 29, 2004 ### [TestDriven.Net version 1.0 is out (with a new site design as well)](https://osherove.com/blog/2004/11/29/testdrivennet-version-10-is-out-with-a-new-site-design-as-we.html) --- title: "What does SQL server SP4 fix?" url: "https://osherove.com/blog/2005/1/2/what-does-sql-server-sp4-fix.md" canonical: "https://osherove.com/blog/2005/1/2/what-does-sql-server-sp4-fix.html" published: "2005-01-02T14:39:00" updated: "2005-01-02T14:39:00" tags: ["Off Topic"] author: "Roy Osherove" description: "still in beta, but still interesting. A list of the bugs that are fixed in SQL Server 2000 Service Pack 4 Beta" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What does SQL server SP4 fix? By Roy Osherove January 2, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 2, 2005; technical details may be outdated. still in beta, but still interesting. [A list of the bugs that are fixed in SQL Server 2000 Service Pack 4 Beta](http://support.microsoft.com/default.aspx?scid=kb;en-us;888799) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 11, 2005 ### [Darrell teaches Python](https://osherove.com/blog/2005/1/11/darrell-teaches-python.html) - Jan 11, 2005 ### [Team Agile - It's time to start my own business](https://osherove.com/blog/2005/1/11/team-agile-its-time-to-start-my-own-business.html) - Jan 1, 2005 ### [Happy new year](https://osherove.com/blog/2005/1/1/happy-new-year.html) - Dec 27, 2004 ### [The Regulator featured on Channel 9](https://osherove.com/blog/2004/12/27/the-regulator-featured-on-channel-9.html) --- title: "Next VB.Net user group: Web services, serialization and networking in .NET Framework 2.0 (Ohad Israeli)" url: "https://osherove.com/blog/2005/1/2/next-vbnet-user-group-web-services-serialization-and-network.md" canonical: "https://osherove.com/blog/2005/1/2/next-vbnet-user-group-web-services-serialization-and-network.html" published: "2005-01-02T09:40:00" updated: "2005-01-02T09:40:00" tags: [] author: "Roy Osherove" description: "Looks like Ohad is gonna do some serious lecturing this week! I'm totally there. Are you? This month in the second in our series of presentations on some of the new tools and technologies that are part of the VS 2005…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Next VB.Net user group: Web services, serialization and networking in .NET Framework 2.0 (Ohad Israeli) By Roy Osherove January 2, 2005 **Historical article** · Originally published January 2, 2005; technical details may be outdated. Looks like [Ohad](http://weblogs.asp.net/israelio) is gonna do some serious lecturing this week! I'm totally there. Are you? This month in the second in our series of presentations on some of the new tools and technologies that are part of the VS 2005 and SQL Server 2005 wave of releases due to arrive in the coming year.  Ohad Israeli, a Senior Consultant with Magen Software Engineering, will cover several topics essential relating to developing web services in .NET. The .NET Framework 2.0 is all about making it easier to build and run real world Web services. Whether you're looking for more control over serialization and type generation, concerned about performance or just want to run Web services in desktop applications, .NET Framework 2.0 enables you to do it all. This session will take you through a tour of the new Web services and related features in .NET Framework 2.0 including custom serialization, network awareness and standards conformance. This session is a must for all Web services and distributed applications developers. As always, we'll have our special "Hatzilu" session at our meeting. So please come prepared to discuss your most frustrating problems (or at least some of them!) and to share some of your own techniques and solutions that you have found useful in your applications. Please remember that it is important for me to know as accurately as possible how many people will be attending each meeting, so that I can arrange for the right amount of food and the proper setup of the chairs.  Please confirm your attendance. See you there !! The January meeting of the Israel Visual Basic User Group http://www.renaissance.co.il/ivbug: **January 5, 2005** **Location****:** **Microsoft Israel** **2 Hapnina St****, Ra'anana** **(09) 7625-100** **Floor 0 , Dekel Room** **It is the new building across from Amdocs.** **After the first traffic circle, there is an area for parking on the right.** 17:30 - 18:00   Assembly 18:00 - 18:10   Introduction 18:10 - 19:30    **“****Web services, serialization and networking in .NET Framework 2.0** **– Part 1"** [Ohad Israeli](http://weblogs.asp.net/israelio), [Magen Software Engineering](http://www.magen.com/) 19:30 - 19:45    Break 19:45 – 20:00   "Hatzilu !"                         Open session, with questions and answers/ideas from everyone 20:00 – 21:00   **“****Web services, serialization and networking in .NET Framework 2.0** **– Part 2"**                        Ohad Israeli, Magen Software Engineering Please be sure to email me to confirm your participation or for more information.  Take Care, Jackie Goldstein                         Microsoft Regional Director, Israel -  http://www.microsoft.com/rd/ Author of "Database Access with Visual Basic .NET" - http://tinyurl.com/6bna Blog -  [http://weblogs.asp.net/jackieg](http://weblogs.asp.net/jackieg) --- title: "Happy new year" url: "https://osherove.com/blog/2005/1/1/happy-new-year.md" canonical: "https://osherove.com/blog/2005/1/1/happy-new-year.html" published: "2005-01-01T22:55:00" updated: "2005-01-01T22:55:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Happy new year, y'all. And on that note - I'd like to make a still non-official declaration: I'll be leaving my current job at Magen in the next two weeks. For what? to where? I'll keep you guessing for a week or so…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Happy new year By Roy Osherove January 1, 2005 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 1, 2005; technical details may be outdated. Happy new year, y'all. And on that note - I'd like to make a still non-official declaration: I'll be leaving my current job at [Magen](http://www.magen.com/) in the next two weeks. For what? to where? I'll keep you guessing for a week or so more. Sorry. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 11, 2005 ### [Team Agile - It's time to start my own business](https://osherove.com/blog/2005/1/11/team-agile-its-time-to-start-my-own-business.html) - Jan 2, 2005 ### [What does SQL server SP4 fix?](https://osherove.com/blog/2005/1/2/what-does-sql-server-sp4-fix.html) - Dec 27, 2004 ### [The Regulator featured on Channel 9](https://osherove.com/blog/2004/12/27/the-regulator-featured-on-channel-9.html) - Dec 27, 2004 ### [Learning from Juval Lowy](https://osherove.com/blog/2004/12/27/learning-from-juval-lowy.html) --- title: "The case for staged delivery and Agile methodologies" url: "https://osherove.com/blog/2005/1/1/the-case-for-staged-delivery-and-agile-methodologies.md" canonical: "https://osherove.com/blog/2005/1/1/the-case-for-staged-delivery-and-agile-methodologies.html" published: "2005-01-01T21:58:00" updated: "2005-01-01T21:58:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Title : The case for staged delivery and Agile methodologies Summary: During the past week I've attended a .Net master class with Juval Lowy . One of the last items Juval talked about was his notion of software project…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The case for staged delivery and Agile methodologies By Roy Osherove January 1, 2005 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published January 1, 2005; technical details may be outdated. **Title**: [The case for staged delivery and Agile methodologies](http://weblogs.asp.net/rosherove/articles/StagedDelivery.aspx) **Summary:** During the past week I've attended a [.Net master class with Juval Lowy](http://www.idesign.net/). One of the last items Juval talked about was his notion of software project management using Staged Delivery. Being a Agile advocate myself, I've outlined several of his points and wrote down several differences and similarities during the talk. I've written my thoughts on these issues in this article as a way to put extract the essence of my thoughts on this amazingly complex issue in writing so that I can better understand and share these things with myself and you, the reader. Please feel free to comment and share your thoughts as a comment or track back. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jan 5, 2005 ### [Continuous integration with CruiseControl lessons learned](https://osherove.com/blog/2005/1/5/continuous-integration-with-cruisecontrol-lessons-learned.html) - Jan 5, 2005 ### [Zanebug v1.4.3 - a better NUnit GUI?](https://osherove.com/blog/2005/1/5/zanebug-v143-a-better-nunit-gui.html) - Dec 29, 2004 ### [Comparing C++ unit testing frameworks](https://osherove.com/blog/2004/12/29/comparing-c-unit-testing-frameworks.html) - Dec 10, 2004 ### [I changed my mind - Mock objects are wrong for database unit testing](https://osherove.com/blog/2004/12/10/i-changed-my-mind-mock-objects-are-wrong-for-database-unit-t.html) --- title: "The case for staged delivery and Agile methodologies" url: "https://osherove.com/blog/2005/1/1/the-case-for-staged-delivery-and-agile-methodologies-1.md" canonical: "https://osherove.com/blog/2005/1/1/the-case-for-staged-delivery-and-agile-methodologies-1.html" published: "2005-01-01T20:58:00" updated: "2005-01-01T20:58:00" tags: [] author: "Roy Osherove" description: "During the past week I’ve attended a .Net master class with Juval Lowy . One of the last items Juval talked about was his notion of software project management using Staged Delivery. Being a Agile advocate myself, I’ve…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The case for staged delivery and Agile methodologies By Roy Osherove January 1, 2005 **Historical article** · Originally published January 1, 2005; technical details may be outdated. During the past week I’ve attended a [.Net master class with Juval Lowy](http://www.idesign.net/). One of the last items Juval talked about was his notion of software project management using Staged Delivery. Being a Agile advocate myself, I’ve outlined several of his points and wrote down several differences and similarities during the talk. I’ve written my thoughts on these issues in this article as a way to put extract the essence of my thoughts on this amazingly complex issue in writing so that I can better understand and share these things with myself and you, the reader. Please feel free to comment and share your thoughts as a comment or track back. I’ve outlined the basic values that Juval talked about regarding his staged delivery approach below. Interestingly enough, there is a large correlation between he values of various Agile methodologies such as XP and Scrum to his world view. However there are several differences. I’ve decided to split the various values he talked about into 3 categories: 1. General values 2. Similar values to Agile 3. Values that are different from Agile I’m not going to pretend that I can give you all the details of the life cycle in a simple short article like this, but I’ll try to give you as much of the highlights as needed to make sense of the points I’m going to make. ### General values: 1. Staged delivery is all about iterative development and short release cycles. 2. There are several stages. 1. First, there is a big up front design process done by the architect. That design process can take up to 30% of the life cycle. The outcome of that design  is the various **components, entities and interactions** of the system. 2. Every component has a life cycle:                                                                i.      SRS document which is review                                                              ii.      A test plan is generated                                                             iii.      Do some construction of the component to flush out various difficulties that will come up later. (This is throw-away code)                                                            iv.      Detailed design which is reviewed                                                              v.      Development + test development                                                            vi.      Code review                                                           vii.      Integration testing 1.   1. This whole life cycle implies that even the simplest component can take on average a minimum of 3 weeks 2. Team involvement: 1.   1. Estimation:                                                                i.      The team is the best source for estimation purposes. Statistically Juval has found that the team produces the most accurate estimation results using the following process:                                                              ii.      For each component/feature the whole team tells, one by one, how much they think it’s going to take to build                                                             iii.      Put the results in an excel spreadsheet and calculate the average and the standard deviation                                                            iv.      For each team member who thought that it would take more than the standard deviation, ask them why (they might have an insight no one thought about)                                                              v.      After this, go around the room again and ask for estimation. After a couple of such rounds, the results will even out and you’ve got yourself an accurate as possible estimate                                                            vi.      Lots of peer review is in the process 1. Requirements 1. Start with the custom/marketing/domain expert and derive a list of basic requirements 2. Generate use cases 3. Generate the domain model & interaction diagrams 4. Generate architecture diagrams 5. Generate the SDD documents 6. Code 7. Each step can back up to the previous step if things are not what they appear to be OK. Those were the highlights, and certainly not a comprehensive list.  However, I think the next two categories will highlight many of the finer points in the methodology. ### Similarity to the various Agile methodologies 1. **you can always change your mind** The whole process is built out of very frequent iterations and releases. At each point we can discover that the requirements have changed. If they do, we can tell the customer that there’s not problem. They should accept, however, that the schedule might be slipped or that other features might not make it into the overall release. It’s their choice. In agile methodologies, the custom can always change their mid as well. However, this process can only take place \*between\* iterations (which can very from 2 weeks to 3 months to 6 months depending on the methodology you chose to implement) 1. **Daily build** Every day you build the whole source code and automatically run a smoke test. This provides daily integration and knowledge that you always have a release on your hands. Agile development (XP in particular is very specific about demanding this)  also has this notion of “continuous integration” though the daily build cycle is slightly different in that it provide more steps and integration points. I’ll outline these diffs in the next category. 1. **Spike solutions** During the component life cycle mentioned by Juval, there is a stage where there is a “throw away” code project that allows the developer to make sure they know what they are getting into. Agile development (XP and Scrum in particular) provide the idea of “spiking”  in order to uncover unknown project risks such as lack of technology knowledge or unforeseen integration problems. 1. **Design review** Each component has a design review before implementation. In Agile we also have a continuous design review process where each design change can and should be consulted with other members of the team. 1. **Testing** 1. **Tests are written in conjunction  with the production code** In Juval’s words :”No line of code goes untested”. That means each little functionality that your class, object or component provides should be tested. Testing is done using Test clients (drivers) that allow the developer to trigger the various component’s actions with various values. Agile development (XP in particular) talks about writing unit tests that do exactly this, only they have no GUI, and are fully automated. More on this in the next section. 1.   1. **The test plan is written along side the component design documents** 2. **Every component has an emulator and a simulator**                                                                i.      Makes the developer provide interfaces early to each component                                                              ii.      You can test against emulators to get hard coded results and exceptions                                                             iii.      You can automate smoke tests                                                            iv.      Every component has 3 versions: Real, emulator and simulator. In agile development you use “Mock Objects” inside you unit tests to provide this same functionality. 1. **Team based estimation** As described earlier, The team is in charge of giving out estimated on development time. This is just like in Agile development, where no one but the development team can decide how much time something is going to take to build. The people on your team are individuals with different strengths and weaknesses. They know (and learn throughout the project) how much time it takes them to build things. 1. **Feature ownership** Because people on the team say how long it will take them to build stuff, they also feel more accountable on the products of their work. They now have more vested interest in the success of the product. In agile, all team members must also be committed to the final product delivery and other than estimating they also pick and sign on the tasks they would like to perform on each iteration. Essentially, the team drives itself into the finish line, guided by the things the customer wants the most for the specific iteration. 1. **Burn down chart** Just like in Scrum, there’s  a burn down chart that tells us when we expect to happen on the time vs. % done scale. 1. **Code** 1. **Should be self explaining** That is, if you’re finding yourself writing a comment, most likely you’re not writing the code in a self explanatory way. There should be almost no comments except when absolutely necessary in the code. It should be read like a book. In Agile, the production code and the unit tests are the best and most recommended form of documentation. 1.   1. This is not so say that there is no outside documentation of the API, but that topic resides in the “difference” category, later on. 2. **Client involvement is encouraged.** The more time the client spends with you, your team and the product features decisions, the better. In agile, and XP in particular, Customer-on-site is a must for resolving much of the communication issues between the team and the design decisions, the client and the priorities that have been decided. There is a difference however, in that the customer does not **have** to be there. 1. **One click to build, setup, deploy and test** These processes should be fully automated, so that integration can be as smooth as possible. Goes along with Agile’s notion of CI. 1. **Defensive programming** Assert as much as possible all the assumptions in your code. On average, every 5th line is an Assert. That’s the only way to flush out those bugs early and often. With Agile (XP, Test Driven Development) the Debug.Asserts are replaced/complemented with Unit tests that perform their own asserts. 1. **Overtime is evil** As a practice, you should never do overtime. Sure, sometimes its called for but if you’re doing it all the time than it’s not overtime, it’s bad management. Again, Agile supports this notion as well. 1. **Buddy Programming** Each developer has an assumed “buddy” developer hey can go to whenever they have a problem or want to get things done which are a little complicated to be doing alone. This “buddy system” is much like pair programming in XP, except it is less strict. When two people work on the same code you also avoid the “If he leaves we’re doomed” symptom. (Funny remark from one of the folks in the class was “_Unfortunately buddies usually leave together_”..  ) 1. **Have a coding standard** Coding standards ease maintenance and productivity for developers across the project. Agile supports this notion as well. 1. **Demo and show the status of the product early and often.** Iterative development with small releases means that every short period of time we can show the customer a new version or a release of the product with more functionality. This lets them See what they really want out of the application and have a clearer understanding of their own requirements. Agile development also believes in showing progress early to the customer and all stakeholders. So far it certainly seems as though the process Juval was talking about is Agile in many ways. But is it really subscribing to the four rules that all agile methodologies stand on: l      Individuals and interactions over _processes and tools_ l      Working software over _comprehensive documentation_ l      Customer collaboration over _contract negotiation_ l      Responding to change over _following a plan_ Here are the differences (in highlights) that I’ve written down for myself during the talk: ### Differences 1. **Big design up front** _(Note: While th following paragraph details what I got from the master class, [Brian Noyes](http://www.softinsight.com/bnoyes), who works and teaches this class at IDesign, [has some clarifications and comments in this post](http://www.softinsight.com/bnoyes/PermaLink.aspx?guid=d416a240-1b53-4c5b-a848-e03716109395))_  A big design phase done by an architect that can take around 30% of the overall project time is done up front. This is a great departure from the “A simply as possible” approach taken by XP. Agile (XP in particular) believes in Iterative, evolutionist’s design approach where the design of the system is done incrementally as the system is being developed.  With up front design you spend a lot of time designing parts of the system that you can’t really tell if they will be integrated together well in the end. Usually, the passage from Design into implementation can be a dramatic stage where a lot of inconsistencies in the design model are uncovered. This isn’t the architect’s fault, though. Today’s software architects  try to mimic the work of engineering architects (like electronics, buildings) in that they believe that a design that is good enough can produce predictable work and schedule every time. The difference between engineering and software architecture is that the number of tools a software architect has in their disposal to make sure they are doing the right thing is minuscule in comparison to those given into the hands of the engineer. The engineer has mathematical analysis tools, pressure point simulations and pre-known information of building the exact same thing for hundreds of years. Software architects have peers to check their work and make sure things “seem OK”. As a consequence the design will almost always be less adequate that initially thought out to be and changes will have to take place when implementation time arrives. 1. **External API documentation (much like MSDN, NDoc..)** According to this approach you need external API documentation in order for new developers in your project to be easily integrated with your current team. You don’t want to re-explain every time how this class talks to that class, assumptions, calling conventions and so on. In agile, however (XP in particular) the Unit tests provide the perfect documentation o four APIs, assumptions and calling conventions, and there is less need for complicated documentation(and maintenance thereof) such as this. 1. **QA runs the automated test clients** The test clients that the developer creates for their components are run automatically by the QA team.  In Agile (XP),all the unit tests are run by the developers before even reaching QA. This allows for bugs to be discovered earlier in the loop. 1. **Design for performance** In the suggested methodology, you should always think about performance and design for higher performance than the one requested. That is, if the requested performance(or scalability) required is X, design for 10X (for example, up front design to support 10 times the number of clients required in 3 months). Again, a big departure from Agile where you only design for the simple cases and add scalability / performance when it is needed, and no sooner. Why? Because we want to deliver the best value for the customer, as soon as possible. In fact, many of the things we dim as “Needed” that were not in the requirements are actually never going to be used, and we’re wasting time implementing them when we could have been implemented a **required** set of features/functionality. Also, we’re making the code more complicated by adding this design up front and the code is then harder to maintain. Also, consider what happens when you spend an extra week building functionality that the client didn’t ask for because you thought “they’ll need it on the next version anyway”. A week later the customer’s business needs have changes the highest priority now becomes some feature which could have been already developed by now if you hadn’t been stuck on the performance improvement no one asked for.  Of course, this is a simple situation. This about times whee you spent months building an sophisticated scalable framework for you application which ended up supporting 20th of the users you designed it for? (And 20th of that was the actual required task). What would your manager want more? A 2 month schedule decrease or 2000% performance improvement over the required features? It’s all about delivering value to the client as soon as they need it. 1. **The client does not have to get involved if they don’t want to** No so in Agile. In agile the client is key for communication, feedback and prioritizing the features for the next iterations. 1. **Documentation contains context maps** Context maps tell the developers and stake holders how the system works in the context of Identity boundaries, threading, tasks, architecture and other things. No one in agile land talk about this, and I think it definitely should be on any project, agile or not. 1. **Lightweight XML comments on your Code** Simply for tool tip reasons for your developers, this is a good idea. While agile and XP in particular support the idea of least documentation as possible, I think this is still a good idea. 1. **Design is solely by the architect.** In agile the team has much more responsibility. Even in changing the existing design to fit the reality that has been encountered. Of course, this isn’t done alone, but the team has much more power because it’s all about the team, not the process in Agile development. 1. **Every class has its own spec** Even more documentation. In agile and XP specifically, the design of a class is done just-in-time using the interested parties using CRC cards. 1. **Aim to minimize the rework each component may need** Assuming the design is that good and that requirements never change, the component’s design should not change and work on it will be done just once. Again, a big departure from Agile’s “simplicity first, Refactor later” approach where the component’s iterative design can change the interfaces and implementation if needed. One can arguer however that a component in this sense is a black box with public interfaces, where only the inner implementation can change (think web services). In that case there is a middle ground in that you try to minimize as much as possible the change in the public interfaces of a system for integration purposes. ### Conclusion So what do we have here?  What can we deduct from this? Obviously, the difference in approach between Agile methodologies and Staged Delivery as Juval portrays it is there, but its not as deep as you might originally assume. In fact Juval’s way of doing things is taking the best of both worlds (in his view) – Agile and Engineering, and making them work together using disciplined developer behavior every step of the way. I’m sure it works great. However, just as someone who believes in the Agile side of things should take a long hard look at this approach, so should the “other” side take a look at the way things are done in the agile camp. Both sides have their wins, just as they do their losses. Both can learn a great deal from each other. One of the things Agile is insistent upon is the ability to change the process until it fits your own development team/organization. This includes “borrowing” from other methodologies to make yourself more successful. If that proves right – aren’t we all just a little happier? One of the things Juval talked about in relation to XP is that in order to advocate XP you need to be a zealot, religious person. I’d say that sounds a little like FUD. I’m in the agile camp but there’s nothing I like more than to listen to people telling me why they think they have a better way. Do I care that I was wrong as long as the end result is better? Not really. The only thing that I’ve learned so far is that I’m capable of making mistakes, but I’m a great learner from them. To be a zealot is to believe in something in spite of all the hard evidence, and that’s true only for the more extremist side of any bunch. As software developers we are more prone to logical conclusions. That is, if you explain it to us in a way that makes sense, there’s really no way we can say no. The matter of software development is so complex because it’s all about people. And no one gets people, really.  That’s why we all have different ways of looking into managing people processes. That’s why we should all keep an eye open to make sure we’re looking at reality and not just what we **want** our reality to be. Being open to new ideas and ways of doing things is part of the Agile way, and as such, looking at things that have proved successful should be just as important as looking at things that fail from within. I’m purposely not trying to “judge” which is “better” or “more appropriate”, but merely trying to see the differences, so that it will be easier to pinpoint the exact locations where the methodologies make themselves stronger.  These “diff” points are what we all should be looking at, and ask each other “Why like this and not like that?”. Who knows, we might find a pleasant surprise. --- title: "Manage many events easily with EventHandlerList" url: "https://osherove.com/blog/2004/12/31/manage-many-events-easily-with-eventhandlerlist.md" canonical: "https://osherove.com/blog/2004/12/31/manage-many-events-easily-with-eventhandlerlist.html" published: "2004-12-31T11:56:00" updated: "2004-12-31T11:56:00" tags: [".Net Original", "Tips & Tricks"] author: "Roy Osherove" description: "There were many little snippets and corners during Juval's class that simply made my day every time. This is one of those. What happens when you have a class that exposes many events (such as the \"Button\" or \"Control\"…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Manage many events easily with EventHandlerList By Roy Osherove December 31, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published December 31, 2004; technical details may be outdated. There were many little snippets and corners during [Juval's class](http://www.idesign.net/) that simply made my day every time. This is one of those. What happens when you have a class that exposes many events (such as the "Button" or "Control" class that exposes "Click","Focus" etc..)? In the standard case you would have to have many delegates as members inside it and that would make your code look very messy. The _Simpler_ soution however would be to use the **_EventHandlerList_** class that is found in the **_System.ComponentModel_** namespace. It's basically a hashtable of all the event handlers you want to keep (the delegates, actually) and allows you to use it for general event storing purposes. In fact, the **Control** class in the .Net framework use this internally to store its own events. How do you use it? You implement the specific "add" and "remove" accessors for your events, and inside them, you redirect the added or removed delegate value into the _EventHandlerList_ object. Like so: private EventHandlerList m\_handlers = new EventHandlerList(); public event EventHandler Saved  {    add    {     m\_handlers.AddHandler("Saved",value);    }    remove    {     m\_handlers.RemoveHandler("Saved",value);    }  } Unfortunately, this cannot be done in VB.Net (you can't override event accessors in VB.Net!?). Here's an implementation of a class that exposes 3 events, one of them is not a simple event handler type. You'll see that it's just as simple to exposes them, but only one member holds all the events.       public class MyComplicatedClass       {             public delegate void SpecialEventDelegate(string someText,int someNumber);             private EventHandlerList m\_handlers = new EventHandlerList();             public event EventHandler Saved             {                   add                   {                         m\_handlers.AddHandler("Saved",value);                   }                   remove                   {                         m\_handlers.RemoveHandler("Saved",value);                   }             }             public event EventHandler Deleted             {                   add                   {                         m\_handlers.AddHandler("Deleted",value);                   }                   remove                   {                         m\_handlers.RemoveHandler("Deleted",value);                   }             }             public event SpecialEventDelegate SpecialEvent             {                   add                   {                         m\_handlers.AddHandler("SpecialEvent",value);                   }                   remove                   {                         m\_handlers.RemoveHandler("SpecialEvent",value);                   }             }             private void FireSavedEvent()             {                   EventHandler handler = (EventHandler)m\_handlers\["Saved"\];                   if(handler!=null)                   {                         handler(this,new EventArgs());                   }             }             private void FireDeletedEvent()             {                   EventHandler handler = (EventHandler)m\_handlers\["Deleted"\];                   if(handler!=null)                   {                         handler(this,new EventArgs());                   }             }             private void FireSpecialEvent()             {                   SpecialEventDelegate handler = (SpecialEventDelegate) m\_handlers\["SpecialEvent"\];                   int someNumber\=3;                   if(handler!=null)                   {                         handler("some text",someNumber);                   }             }       } ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 6, 2005 ### [Return of the Extensibility Application Block](https://osherove.com/blog/2005/1/6/return-of-the-extensibility-application-block.html) - Jan 5, 2005 ### [A simple question about overloading](https://osherove.com/blog/2005/1/5/a-simple-question-about-overloading.html) - Dec 30, 2004 ### [Next generation iteration: Array.ForEach and Delegate inference](https://osherove.com/blog/2004/12/30/next-generation-iteration-arrayforeach-and-delegate-inferenc.html) - Dec 29, 2004 ### [Do not serialize delegates and events blindly](https://osherove.com/blog/2004/12/29/do-not-serialize-delegates-and-events-blindly.html) --- title: "[OT] Some free time coming soon" url: "https://osherove.com/blog/2004/12/31/ot-some-free-time-coming-soon.md" canonical: "https://osherove.com/blog/2004/12/31/ot-some-free-time-coming-soon.html" published: "2004-12-31T01:19:00" updated: "2004-12-31T01:19:00" tags: ["Blogging", "Cool Tools"] author: "Roy Osherove" description: "I'm finally gonna get some more free time in the near future, so I'll be starting work on a newer version of The Regulator . Stay tuned for more. I'm listening for any cool feature requests BTW." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] Some free time coming soon By Roy Osherove December 31, 2004 In [Blogging](https://osherove.com/blog/category/blogging), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published December 31, 2004; technical details may be outdated. I'm finally gonna get some more free time in the near future, so I'll be starting work on a newer version of [The Regulator](http://regulator.sf.net/). Stay tuned for more. I'm listening for any cool feature requests BTW. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jan 28, 2005 ### [Is CodeBetter.Com to become the new .NETWeblogs?](https://osherove.com/blog/2005/1/28/is-codebettercom-to-become-the-new-netweblogs.html) - Jan 14, 2005 ### [Get an MSN alert whenever this blog updates](https://osherove.com/blog/2005/1/14/get-an-msn-alert-whenever-this-blog-updates.html) - Dec 31, 2004 ### [Is PostXing gonna solve my blogging needs?](https://osherove.com/blog/2004/12/31/is-postxing-gonna-solve-my-blogging-needs.html) - Dec 15, 2004 ### [A highly primitive solution for fighting .Text blog spam - an outlook script](https://osherove.com/blog/2004/12/15/a-highly-primitive-solution-for-fighting-text-blog-spam-an-o.html) --- title: "Is PostXing gonna solve my blogging needs?" url: "https://osherove.com/blog/2004/12/31/is-postxing-gonna-solve-my-blogging-needs.md" canonical: "https://osherove.com/blog/2004/12/31/is-postxing-gonna-solve-my-blogging-needs.html" published: "2004-12-31T01:08:00" updated: "2004-12-31T01:08:00" tags: ["Blogging", "Cool Tools"] author: "Roy Osherove" description: "I'm just testing out PostXing via the recommendation of Darren . If this works, I'm thinking this is a pretty cool blogging application. It even allows you to cross-post and upload images. Except - no spell checking?…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Is PostXing gonna solve my blogging needs? By Roy Osherove December 31, 2004 In [Blogging](https://osherove.com/blog/category/blogging), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published December 31, 2004; technical details may be outdated. I'm just testing out [PostXing](http://projectdistributor.net/Projects/Project.aspx?projectId=12) via [the recommendation of Darren](http://weblogs.asp.net/dneimke/archive/2004/12/31/344538.aspx). If this works, I'm thinking this is a pretty cool blogging application. It even allows you to cross-post and upload images. Except -  no spell checking? Now \*that\* I cannot live without (or actually, my readers can't...) Hmm. let's see how it deals with images... well. it can't seem to upload the image to my FTP server... but overall it's a pretty cool thing :) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jan 14, 2005 ### [Get an MSN alert whenever this blog updates](https://osherove.com/blog/2005/1/14/get-an-msn-alert-whenever-this-blog-updates.html) - Dec 31, 2004 ### [\[OT\] Some free time coming soon](https://osherove.com/blog/2004/12/31/ot-some-free-time-coming-soon.html) - Dec 15, 2004 ### [A highly primitive solution for fighting .Text blog spam - an outlook script](https://osherove.com/blog/2004/12/15/a-highly-primitive-solution-for-fighting-text-blog-spam-an-o.html) - Dec 5, 2004 ### [Blogger dinner with Johanna Rothman - Rescheduled](https://osherove.com/blog/2004/12/5/blogger-dinner-with-johanna-rothman-rescheduled.html) --- title: "Next generation iteration: Array.ForEach and Delegate inference" url: "https://osherove.com/blog/2004/12/30/next-generation-iteration-arrayforeach-and-delegate-inferenc.md" canonical: "https://osherove.com/blog/2004/12/30/next-generation-iteration-arrayforeach-and-delegate-inferenc.html" published: "2004-12-30T06:46:00" updated: "2004-12-30T06:46:00" tags: [".Net Original"] author: "Roy Osherove" description: "Sriram goes through hoops trying to write a function that maps a list to a function pointer that will be called on each item of the list. Yeah, it's easier in Smalltalk , today. But here's how it looks in .Net 2.0:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Next generation iteration: Array.ForEach and Delegate inference By Roy Osherove December 30, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published December 30, 2004; technical details may be outdated. [Sriram goes through hoops](http://dotnetjunkies.com/WebLog/sriram/archive/2004/12/27/39119.aspx) trying to write a function that maps a list to a function pointer that will be called on each item of the list. Yeah, [it's easier in Smalltalk](http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3281617728), today. But here's how it looks in .Net 2.0: Person\[\] MyArray = new Person\[\]{..}; Array.ForEach(MyArray,MyFunction); private void MyFunction(Person p) { //do something } How "Perl"ish :) A few new things here: 1. A whole bunch of new methods has been added to the BCL with support for automatic iterations such as Array.ForEach() 2. You don't have to create a delegate just to point at a specific function. The compiler "resolves" this for you and infers the correct delegate type to create form the function you point to. 3. The function just needs to match the loop variable. Very cool. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 5, 2005 ### [A simple question about overloading](https://osherove.com/blog/2005/1/5/a-simple-question-about-overloading.html) - Dec 31, 2004 ### [Manage many events easily with EventHandlerList](https://osherove.com/blog/2004/12/31/manage-many-events-easily-with-eventhandlerlist.html) - Dec 29, 2004 ### [Do not serialize delegates and events blindly](https://osherove.com/blog/2004/12/29/do-not-serialize-delegates-and-events-blindly.html) - Dec 29, 2004 ### [Denying your public classes from your end customers](https://osherove.com/blog/2004/12/29/denying-your-public-classes-from-your-end-customers.html) --- title: "Comparing C++ unit testing frameworks" url: "https://osherove.com/blog/2004/12/29/comparing-c-unit-testing-frameworks.md" canonical: "https://osherove.com/blog/2004/12/29/comparing-c-unit-testing-frameworks.html" published: "2004-12-29T22:11:00" updated: "2004-12-29T22:11:00" tags: ["Agile Related", "Cool Articles"] author: "Roy Osherove" description: "Noel Llopis writes on the TDD mailing list: I just had to choose a unit-testing framework for a new project at work, so I went ahead and evaluated some of the major contenders for C++: CppUnit, Boost.Test, CppUnitLite,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Comparing C++ unit testing frameworks By Roy Osherove December 29, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published December 29, 2004; technical details may be outdated. Noel Llopis writes on the TDD mailing list: _I just had to choose a unit-testing framework for a new project at work, so I went ahead and evaluated some of the major contenders for C++: CppUnit, Boost.Test, CppUnitLite, NanoCppUnit, Unit++, and CxxUnit._ _If anybody is interested in checking it out, I wrote a comparison of the frameworks and my conclusions here: _[_http://www.gamesfromwithin.com/articles/0412/000061.html_](http://www.gamesfromwithin.com/articles/0412/000061.html) _I welcome any comments either through the list, private email, or directly in the blog. Cheers._ _\--Noel Games from Within _[_http://www.gamesfromwithin.com_](http://www.gamesfromwithin.com/) I haven't read it all through yet, but it seems pretty comprehensive and interesting. **The big winner** in this article is a total surprise: [CxxTest](http://cxxtest.sourceforge.net/). What's the big surprise? It actually uses PERL under the convers to provide an easy to use syntax that is used as the basis for generating C++ test classes on your code. Pretty cool, actually. Here's a part on this cool finding from the article: _"After looking into a framework that tried to be different from XUnit (Unit++), I wasn't particularly looking forward to evaluating possibly the most wacky one of them all, CxxTest. I had never heard of it until a few days ago, but I knew that it required using Perl along the way to generate some C++ code. My spider senses were tingling._ _Boy was I wrong!! Within minutes of using CxxTest and reading through its great documentation (the best by far), I was completely convinced this was the way to go. This came as a complete surprise to me since I was ready to leave somewhat dissatisfied and pronounce a victor between CppUnit and CppUnitLite."_ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jan 5, 2005 ### [Zanebug v1.4.3 - a better NUnit GUI?](https://osherove.com/blog/2005/1/5/zanebug-v143-a-better-nunit-gui.html) - Jan 1, 2005 ### [The case for staged delivery and Agile methodologies](https://osherove.com/blog/2005/1/1/the-case-for-staged-delivery-and-agile-methodologies.html) - Dec 10, 2004 ### [I changed my mind - Mock objects are wrong for database unit testing](https://osherove.com/blog/2004/12/10/i-changed-my-mind-mock-objects-are-wrong-for-database-unit-t.html) - Dec 7, 2004 ### [MSF is a fraud? A response](https://osherove.com/blog/2004/12/7/msf-is-a-fraud-a-response.html) --- title: "My interview with Johanna Rothman goes live on ITConversations.Com" url: "https://osherove.com/blog/2004/12/29/my-interview-with-johanna-rothman-goes-live-on-itconversatio.md" canonical: "https://osherove.com/blog/2004/12/29/my-interview-with-johanna-rothman-goes-live-on-itconversatio.html" published: "2004-12-29T21:56:00" updated: "2004-12-29T21:56:00" tags: ["Project Management"] author: "Roy Osherove" description: "Guest host Roy Osherove speaks with Johanna about everyday problems in project management, software delivery and the hiring of technical people. They discuss interviewing strategies, and some bad examples of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My interview with Johanna Rothman goes live on ITConversations.Com By Roy Osherove December 29, 2004 In [Project Management](https://osherove.com/blog/category/project-management) **Historical article** · Originally published December 29, 2004; technical details may be outdated. _[![](https://osherove.com/img/wb/a2bd769e_www.itconversations.com_assets_jpegs_rothman.jpg)](http://www.itconversations.com/shows/detail392.html)_ _Guest host Roy Osherove speaks with Johanna about everyday problems in project management, software delivery and the hiring of technical people. They discuss interviewing strategies, and some bad examples of interviewing technique. Also: How do I improve myself as a project manager?. How do I deal with unrealistic project deadlines? What's wrong with running multiple projects at the same time? What is the most common management mistake? \[_ [_Listen_](http://www.itconversations.com/shows/detail392.html) _\]_ _Johanna has written over 100 articles and papers and is now a columnist for Fast Company’s online career center, Software Development, Computerworld.com, and StickyMinds.com. Johanna is the author of the highly acclaimed_ [_Hiring the Best Knowledge Workers, Techies & Nerds_](https://www.amazon.com/exec/obidos/ASIN/0932633595/ref=nosim/iserializable-20)_, and is the coauthor of_ [_Corrective Action for the Software Industry_](https://www.amazon.com/exec/obidos/ASIN//0971323194/ref=nosim/iserializable-20)_. Johanna is also a host and session leader at the Amplifying Your Effectiveness (AYE) conference._ --- Now is also a great time to mention that Johanna has two wonderful blogs: [Hiring technical people](http://www.jrothman.com/weblog/htpblogger.html) and  [Manageing product development](http://www.jrothman.com/weblog/blogger.html). Both are a must read for managers and developers. The interview was a good 85 minutes but I had to cut it short to around 60 minutes. Overall here are the conclusions: - I sound really weird in the first few minutes, and it may be a little too self critiquing, but I really was breaking my teeth for the first few sentences. I should be more adapt at this. - There were some wonderful questions in the interview, and some of the really good ones were "donated" by my wife, Tal. Thanks honey :) - Johanna is a great interviewee.  It was really fun talking with her! ## More in Project Management [All posts in Project Management](https://osherove.com/blog/category/project-management) - Jan 23, 2005 ### [The Quality Pledge](https://osherove.com/blog/2005/1/23/the-quality-pledge.html) - Jan 23, 2005 ### [About architecture and astronauts](https://osherove.com/blog/2005/1/23/about-architecture-and-astronauts.html) - Dec 8, 2004 ### [Chatting with Johanna Rothman](https://osherove.com/blog/2004/12/8/chatting-with-johanna-rothman.html) - Sep 3, 2004 ### [Great Coders Deserve Great Managers](https://osherove.com/blog/2004/9/3/great-coders-deserve-great-managers.html) --- title: "Truly, a \".Net Master Class\"" url: "https://osherove.com/blog/2004/12/29/truly-a-quotnet-master-classquot.md" canonical: "https://osherove.com/blog/2004/12/29/truly-a-quotnet-master-classquot.html" published: "2004-12-29T19:23:00" updated: "2004-12-29T19:23:00" tags: [] author: "Roy Osherove" description: "Tomorrow is the last day in Juval Lowy 's Advanced .Net maser class. We learned a lot about .Net 2.0 and best practices and concepts. By this time I can certainly say this: Having paid for this out of my own pocket, it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Truly, a ".Net Master Class" By Roy Osherove December 29, 2004 **Historical article** · Originally published December 29, 2004; technical details may be outdated. Tomorrow is the last day in [Juval Lowy](http://idesign.net/)'s Advanced .Net maser class. We learned **a lot** about .Net 2.0 and best practices and concepts. By this time I can certainly say this: - Having paid for this out of my own pocket, it was worth every penny.  - The amount of information and "what not to do" information I got is something which would have taken me a year of hardcore development with 2.0 to get, and even then probably not all of it.  - I think that already by the first day I got a return on my investment with some great tips. (I hope to be writing several articles on related topic, after approval from Juval on them) - Any manager who had the chance to send people over to the class and did not do so because of "financial disagreements" made a mistake. If you have consulting people that live and die by knowing hardcore stuff, they should have been there. period. --- title: "Do not serialize delegates and events blindly" url: "https://osherove.com/blog/2004/12/29/do-not-serialize-delegates-and-events-blindly.md" canonical: "https://osherove.com/blog/2004/12/29/do-not-serialize-delegates-and-events-blindly.html" published: "2004-12-29T14:50:00" updated: "2004-12-29T14:50:00" tags: [".Net Original"] author: "Roy Osherove" description: "usually, you should not serialize your class's delegates or events. This is because serialization takes he full object graph into play, and delegates by nature will serialize your subscriber list into the mix…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Do not serialize delegates and events blindly By Roy Osherove December 29, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published December 29, 2004; technical details may be outdated. usually, you should not serialize your class's delegates or events. This is because serialization takes he full object graph into play, and delegates by nature will serialize your subscriber list into the mix (invocation list). you can never make sure all your subscribers are serializable, can you? so, you should put \[NonSerialized\] on delegates. on events (with the event keyword) you can use the \[Field:NonSerialized\] attribute  ("Field" is in System.Reflection) \[via [Juval Lowy's](http://www.idesign.net/) .Net Master class\] ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 31, 2004 ### [Manage many events easily with EventHandlerList](https://osherove.com/blog/2004/12/31/manage-many-events-easily-with-eventhandlerlist.html) - Dec 30, 2004 ### [Next generation iteration: Array.ForEach and Delegate inference](https://osherove.com/blog/2004/12/30/next-generation-iteration-arrayforeach-and-delegate-inferenc.html) - Dec 29, 2004 ### [Denying your public classes from your end customers](https://osherove.com/blog/2004/12/29/denying-your-public-classes-from-your-end-customers.html) - Dec 29, 2004 ### [Developing as non-admin made easier with VS.Net 2005?](https://osherove.com/blog/2004/12/29/developing-as-non-admin-made-easier-with-vsnet-2005.html) --- title: "Denying your public classes from your end customers" url: "https://osherove.com/blog/2004/12/29/denying-your-public-classes-from-your-end-customers.md" canonical: "https://osherove.com/blog/2004/12/29/denying-your-public-classes-from-your-end-customers.html" published: "2004-12-29T14:43:00" updated: "2004-12-29T14:43:00" tags: [".Net Original"] author: "Roy Osherove" description: "Here's a cool way to make sure that no one else but your application can use any of the public classes that are exposed by your business assemblies: you put a permission requirement on the class that requires the strong…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Denying your public classes from your end customers By Roy Osherove December 29, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published December 29, 2004; technical details may be outdated. Here's a cool way to make sure that no one else but your application can use any of the public classes that are exposed by your business assemblies: you put a permission requirement on the class that requires the strong name of your calling assembly: \[StrongNameIdentityPermission(SecurityActoin.LinkDemand, PublicKey="XXXYY)\] public class MyPublicLogicClass { //do something } \[via [Juval Lowy's](http://www.idesign.net/) .Net Master class\] ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 30, 2004 ### [Next generation iteration: Array.ForEach and Delegate inference](https://osherove.com/blog/2004/12/30/next-generation-iteration-arrayforeach-and-delegate-inferenc.html) - Dec 29, 2004 ### [Do not serialize delegates and events blindly](https://osherove.com/blog/2004/12/29/do-not-serialize-delegates-and-events-blindly.html) - Dec 29, 2004 ### [Developing as non-admin made easier with VS.Net 2005?](https://osherove.com/blog/2004/12/29/developing-as-non-admin-made-easier-with-vsnet-2005.html) - Dec 14, 2004 ### [Session ideas and suggestions for Microsoft Tech-Ed 2005 and future conferences in general](https://osherove.com/blog/2004/12/14/session-ideas-and-suggestions-for-microsoft-tech-ed-2005-and.html) --- title: "Developing as non-admin made easier with VS.Net 2005?" url: "https://osherove.com/blog/2004/12/29/developing-as-non-admin-made-easier-with-vsnet-2005.md" canonical: "https://osherove.com/blog/2004/12/29/developing-as-non-admin-made-easier-with-vsnet-2005.html" published: "2004-12-29T14:10:00" updated: "2004-12-29T14:10:00" tags: [".Net Original"] author: "Roy Osherove" description: "One of the coolest things about VS.net 2005 is that you can actually debug your application using specific \"Click-Once\" security permissions. Simply go into the \"properties\" of your project, click the \"Security\" tab,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Developing as non-admin made easier with VS.Net 2005? By Roy Osherove December 29, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published December 29, 2004; technical details may be outdated. One of the coolest things about VS.net 2005 is that you can actually debug your application using specific "Click-Once" security permissions. Simply go into the "properties" of your project, click the "Security" tab, and set the "Enable ClickOnce security Settings" checkbox to true. ow you can decide under which permissions your application will run. An interesting thought this brought on - does this rid you of the "Develop as admin" problem? Can I from now on develop as admin, but use this setting and still make sure least privileged users can run this securely? I wonder.. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 29, 2004 ### [Do not serialize delegates and events blindly](https://osherove.com/blog/2004/12/29/do-not-serialize-delegates-and-events-blindly.html) - Dec 29, 2004 ### [Denying your public classes from your end customers](https://osherove.com/blog/2004/12/29/denying-your-public-classes-from-your-end-customers.html) - Dec 14, 2004 ### [Session ideas and suggestions for Microsoft Tech-Ed 2005 and future conferences in general](https://osherove.com/blog/2004/12/14/session-ideas-and-suggestions-for-microsoft-tech-ed-2005-and.html) - Dec 13, 2004 ### [.Net Deep dive lecture videos online](https://osherove.com/blog/2004/12/13/net-deep-dive-lecture-videos-online.html) --- title: "The Regulator featured on Channel 9" url: "https://osherove.com/blog/2004/12/27/the-regulator-featured-on-channel-9.md" canonical: "https://osherove.com/blog/2004/12/27/the-regulator-featured-on-channel-9.html" published: "2004-12-27T19:09:00" updated: "2004-12-27T19:09:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "Josh Ledgard pinged me to let me know that he showed The Regulator on this Channel 9 video , along with PInvoke.Net , as two samples of community built helpful applications. Coolness! One thing to note is that Josh…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator featured on Channel 9 By Roy Osherove December 27, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 27, 2004; technical details may be outdated. [Josh Ledgard](http://www.google.com/url?sa=U&start=1&q=http://blogs.msdn.com/jledgard/&e=7507) pinged me to let me know that he showed [The Regulator](http://regulator.sourceforge.net/) on [this Channel 9 video](http://channel9.msdn.com/ShowPost.aspx?PostID=33506#33506), along with [PInvoke.Net](http://www.pinvoke.net/), as two samples of community built helpful applications. Coolness! One thing to note is that Josh mentioned [RegexLib.com](http://regexlib.com/) which is a great community site which lets you search and store Regular expressions easily. Anyway, Regexlib.Com is being run and was conceived totally not by me, but by [Darren Neimke](http://weblogs.asp.net/dneimke), who is one of the Regex gurus and also an MVP. I just used the web services that Regexlib.com exposes to find and store regex. Darren has also been busy putting up [Project Distributor](http://www.projectdistributor.net/) which allows you to upload your code and other cool development stuff to share with the public or just your friends (think CodeProject, only you can can choose to only let your friends in). ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Dec 31, 2004 ### [\[OT\] Some free time coming soon](https://osherove.com/blog/2004/12/31/ot-some-free-time-coming-soon.html) - Dec 31, 2004 ### [Is PostXing gonna solve my blogging needs?](https://osherove.com/blog/2004/12/31/is-postxing-gonna-solve-my-blogging-needs.html) - Dec 9, 2004 ### [More free cool components from SharpTools](https://osherove.com/blog/2004/12/9/more-free-cool-components-from-sharptools.html) - Dec 2, 2004 ### [More cool tools, and a cool Add-in for C++](https://osherove.com/blog/2004/12/2/more-cool-tools-and-a-cool-add-in-for-c.html) --- title: "Learning from Juval Lowy" url: "https://osherove.com/blog/2004/12/27/learning-from-juval-lowy.md" canonical: "https://osherove.com/blog/2004/12/27/learning-from-juval-lowy.html" published: "2004-12-27T11:13:00" updated: "2004-12-27T11:13:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I've been sitting in Juval Lowy's .Net master class this week (3 more days to go) and I can say a few things about Juval: He is a brilliant systems developer and architect He knows his stuff He does not like…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Learning from Juval Lowy By Roy Osherove December 27, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 27, 2004; technical details may be outdated. I've been sitting in Juval Lowy's .Net master class this week (3 more days to go) and I can say a few things about Juval: 1. He is a brilliant systems developer and architect 2. He knows his stuff 3. He does not like interruptions in class, so if you're uber sensitive and like to make jokes and ask questions like I do, you might want to take care 4. He lets everyone know of the first points 5. If you have a question, he will most likely cover it in the next slide or so, so shut up 6. This is worth the money ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 1, 2005 ### [Happy new year](https://osherove.com/blog/2005/1/1/happy-new-year.html) - Dec 27, 2004 ### [The Regulator featured on Channel 9](https://osherove.com/blog/2004/12/27/the-regulator-featured-on-channel-9.html) - Dec 24, 2004 ### [Not dead](https://osherove.com/blog/2004/12/24/not-dead.html) - Dec 19, 2004 ### [Microsoft Vs. PC Technicians](https://osherove.com/blog/2004/12/19/microsoft-vs-pc-technicians.html) --- title: "Not dead" url: "https://osherove.com/blog/2004/12/24/not-dead.md" canonical: "https://osherove.com/blog/2004/12/24/not-dead.html" published: "2004-12-24T16:28:00" updated: "2004-12-24T16:28:00" tags: ["Off Topic"] author: "Roy Osherove" description: "No. I'm not dead. Just too busy to actually write anything. I'll have some news in the near future though." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Not dead By Roy Osherove December 24, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 24, 2004; technical details may be outdated. No. I'm not dead. Just too busy to actually write anything. I'll have some news in the near future though. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 27, 2004 ### [The Regulator featured on Channel 9](https://osherove.com/blog/2004/12/27/the-regulator-featured-on-channel-9.html) - Dec 27, 2004 ### [Learning from Juval Lowy](https://osherove.com/blog/2004/12/27/learning-from-juval-lowy.html) - Dec 19, 2004 ### [Microsoft Vs. PC Technicians](https://osherove.com/blog/2004/12/19/microsoft-vs-pc-technicians.html) - Dec 13, 2004 ### [Where should I host my interview with Johanna Rothman?](https://osherove.com/blog/2004/12/13/where-should-i-host-my-interview-with-johanna-rothman.html) --- title: "Microsoft Vs. PC Technicians" url: "https://osherove.com/blog/2004/12/19/microsoft-vs-pc-technicians.md" canonical: "https://osherove.com/blog/2004/12/19/microsoft-vs-pc-technicians.html" published: "2004-12-19T11:41:00" updated: "2004-12-19T11:41:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Well well. Microsoft and the BSA are going after hundreds of PC technicians in Israel (Hebrew), suing them for installing illegal windows and Office software for home users for a small price. The PC technicians, in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft Vs. PC Technicians By Roy Osherove December 19, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 19, 2004; technical details may be outdated. Well well. [Microsoft and the BSA are going after hundreds of PC technicians in Israel](http://www.ynet.co.il/articles/0,7340,L-3020561,00.html) (Hebrew), suing them for installing illegal windows and Office software for home users for a small price. The PC technicians, in reply, say through an unnamed "victor" dude, that from now on, Microsoft, who so heavily depended on them for installing 96% of the Windows and Office software in Israel, is going to suffer. Yep. From now on they'll be recommending all home users to switch to Linux. Give me a break, both sides. On one hand, the techies have no cause to defend themselves whatsoever. what they have done is illegal and should be punished. I mean, once they are caught they are trying to use the "social injustice" card to help them in their irrelevant struggle. To me this all looks like finally, after years of law-breaking and doing whatever you want, someone has come down on some of them. Because they are now so scared that this will become the norm, they are raising their voice and trying to claim "injustice". Well, you're wrong. You did something illegal, now live with it. On the other hand, Microsoft. Let's face it, Israel has always been a "one disk nation" in many regards. Office and Windows software has been as prevalent here and as easy to get like chewing gum (and for half the price). Microsoft, for years, had one eye closed in this regard, and "let" home users do whatever they want with the software. Yes, even the CD keys that were needed were easy to find and generate. But why? Because that's a great way to achieve market dominance. A kid uses Office and Windows all day, and as he grows up that's all he knows and wants to use. So now a whole culture of people that grew up using illegal Office and Windows software goes to work and wants to use the same software because that's what they know and that's what they are good at. Only now they **do** have to be legal, so everyone seems to win out.. eventually. The techies say that "now Microsoft wants to turn over and bite the hand that feeds it". In a sense, Microsoft is sort of "hurting" the market it has been non-actively helping to prosper for years. It's totally legitimate, and even required that they shut down all this illegal activity, only right now there are too many sleeping dogs on the floor, and MS just opened up a whole can of bells and whistles. My guess is that in two weeks we won't hear of this again. The techies will disappear, and MS will have only done some noise about it, but nothing much more. They know what's good for them. As a disclaimer: I believe that what the techies have been doing is wrong and bad. But the whole situations is very very interesting... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 27, 2004 ### [Learning from Juval Lowy](https://osherove.com/blog/2004/12/27/learning-from-juval-lowy.html) - Dec 24, 2004 ### [Not dead](https://osherove.com/blog/2004/12/24/not-dead.html) - Dec 13, 2004 ### [Where should I host my interview with Johanna Rothman?](https://osherove.com/blog/2004/12/13/where-should-i-host-my-interview-with-johanna-rothman.html) - Dec 11, 2004 ### [What I look like (kinda)](https://osherove.com/blog/2004/12/11/what-i-look-like-kinda.html) --- title: "A highly primitive solution for fighting .Text blog spam - an outlook script" url: "https://osherove.com/blog/2004/12/15/a-highly-primitive-solution-for-fighting-text-blog-spam-an-o.md" canonical: "https://osherove.com/blog/2004/12/15/a-highly-primitive-solution-for-fighting-text-blog-spam-an-o.html" published: "2004-12-15T21:13:00" updated: "2004-12-15T21:13:00" tags: ["Blogging"] author: "Roy Osherove" description: "A few days ago I opened my machine and saw that I had 348 new spam comments on my blog. Now, .Text is now smart enough to provide a link for you in the notification email that allows you to \"hide\" each comment via one…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A highly primitive solution for fighting .Text blog spam - an outlook script By Roy Osherove December 15, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published December 15, 2004; technical details may be outdated. A few days ago I opened my machine and saw that I had 348 new spam comments on my blog. Now, .Text is now smart enough to provide a link for you in the notification email that allows you to "hide" each comment via one click, but when it comes to doing this same thing 350 times it becomes - well, not so effective. So I created a simple solution to my problem. I created a simple VBA script that runs inside outlook. Whenever a new email arrives, it checks whether it is a blog comment, and if so, if it comes from a specific IP that you have specified as "banned". if it does, than it will automatically find the entry ID inside the email body, and execute the link that hides the comment for you inside the default browser. Simple, but it works. [Here's the file that contains all the script](https://osherove.com/LinkClick.aspx?link=http%3a%2f%2fosherove.com%2fdownloads%2foutlookIpBanScript.zip&mid=347). It comes with comments inside it that explain exactly what you need to do to make it work for your own blog (you basically need to just change a couple of string on the top, and add simple lines for each IP address you would like to ban). It works on Office 2003 (uses the Application\_NewEmailEx event which is only available in that version..) cause that what I have. I'm sure this can be implemented for working in older version too. Currently this just works on new email. I should add another ability that cleans out existing spam too. Should not be too hard to implement. Will post more when there is more to tell... Hope this helps! \[update:\] Add the following function to the file and you have a macro that allows you to look at existing folders for comment spam. It lets you select a folder and applies the same rules on unread emails inside it: **Public Sub SearchEmailsForCommentSpam()** Dim oNS As NameSpace Dim counter As Integer Set oNS = Application.GetNamespace("MAPI") Dim oFolder As MAPIFolder Set oFolder = oNS.PickFolder Dim oMessage As MailItem Dim bannedIds As Collection Set bannedIds = GetBannedIPAddresses() For Each oMessage In oFolder.Items     If oMessage.UnRead = True Then         If HandleMailIfIsValidCommentSpam(oMessage, bannedIds) Then             counter = counter + 1         End If     End If Next oMessage MsgBox "Took care of " & counter & " blog spam items!" End Sub **Private Function HandleMailIfIsValidCommentSpam(mail As MailItem, varBannedIds As Collection) As Boolean**           If IsMailABlogComment(mail) Then                 If IsMailFromBannedIP(mail, varBannedIds) Then                     Call DisableCommentInMailByClickingLink(mail)                     HandleMailIfIsValidCommentSpam = True                     Exit Function                 End If           End If           HandleMailIfIsValidCommentSpam = False End Function **update:** Well, this sucks! I can't get shellexecute to actually "hide" the link. When I open the required "remove" link in the browser it simply shows the list of comments , but does not actually remove any of them. HOWEVER, if I actually CLICK on the mail message link, (which points to the SAME link exactly) the message will be hidden. Any idea what's going on here? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Dec 31, 2004 ### [\[OT\] Some free time coming soon](https://osherove.com/blog/2004/12/31/ot-some-free-time-coming-soon.html) - Dec 31, 2004 ### [Is PostXing gonna solve my blogging needs?](https://osherove.com/blog/2004/12/31/is-postxing-gonna-solve-my-blogging-needs.html) - Dec 5, 2004 ### [Blogger dinner with Johanna Rothman - Rescheduled](https://osherove.com/blog/2004/12/5/blogger-dinner-with-johanna-rothman-rescheduled.html) - Dec 2, 2004 ### [This Tuesday is Israel Geek Dinner Day with Johanna Rothman](https://osherove.com/blog/2004/12/2/this-tuesday-is-israel-geek-dinner-day-with-johanna-rothman.html) --- title: "Session ideas and suggestions for Microsoft Tech-Ed 2005 and future conferences in general" url: "https://osherove.com/blog/2004/12/14/session-ideas-and-suggestions-for-microsoft-tech-ed-2005-and.md" canonical: "https://osherove.com/blog/2004/12/14/session-ideas-and-suggestions-for-microsoft-tech-ed-2005-and.html" published: "2004-12-14T23:39:00" updated: "2004-12-14T23:39:00" tags: [".Net Original"] author: "Roy Osherove" description: "I decided I want to speak at an international conference. You know, something like VSLive! or MS Tech-Ed. So, I went to the MS Tech-Ed site and submitted two session suggestions : First, a session about Test Driven…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Session ideas and suggestions for Microsoft Tech-Ed 2005 and future conferences in general By Roy Osherove December 14, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published December 14, 2004; technical details may be outdated. I decided I want to speak at an international conference. You know, something like VSLive! or MS Tech-Ed. So, I went to the [MS Tech-Ed site and submitted two session suggestions](http://www.msteched.com/cfp/callforpapers.aspx): First, a session about Test Driven Development using Visual Studio 2005 Second, a session about Regular Expressions and how they can empower you and your applications I mean, nothing to lose, right? _(I do consider myself a pretty good speaker, even in English. at the [Israel DevDays](http://www.besttv.co.il/microsoft/),_  [_This is what I look like_](http://213.8.64.165/OtherVod/Msn/oshrov_n.wmv) _speaking in front of 1,000+ people,_ [_and here_](http://213.8.64.165/OtherVod/Msn/RoiOsherov_n.wmv) _in front of about 600)_ Got any other suggestions as to where I should submit my sessions to? Here are sessions I would personally like to see(if I ever get there): 1. real world problems and solutions using ADO.Net (for example - how to resolve update conflicts) 2. Advanced Unit Testing concepts - Mock Objects (hell - I could deliver that one. I think I'll submit that) 3. Service Broker 4. Advanced Enterprise Serviced usage using Indigo (or is that mutually exclusive?) 5. Scalable applications Architecture 6. A simple scalable application - start to finish (I want this to be a whole lecture where a small application is actually built from scratch using scalable concepts) 7. Agile development process example using Team Services 8. Performance Testing and tuning 9. Creating and using Custom Perf Counters - the road to measurement 10. optimizing and measuring SQL Server - Not your father's query analyzer (I want this session to show  what exactly is a query plan, how do I make sure it does not suck, and what I should do if it does. For example, the difference between a table scan, a bookmark and a Seek) 11. Cool stuff you can now do in the SQL-CLR 12.  Cool Stuff you should NOT do in the SQL CLR 13.  Top .Net Tools every .Net 2.0 developer should be aware of 14. Generic Internals 15. .Net 2.0 new CLR stuff - in depth 16. Dynamic languages in the CLR - python, Rubi 17. CodeDOM internals and usages 18. The Case for Software Factories (into) 19. Software Factories int he real world (advanced) 20. Creating and using Domain Specific languages 21. Code Generation Nation 22. new pitfalls in ADO.Net 2.0 (and some cool stuff too!) 23. Queues  - usage, scenarios and a real simple example (in the SQL, in the outside) 24. Indigo - intro, usage,scenarios 25. Using indigo for today's tasks (how do we translate needs from tasks we do today to the indigo namespace?) 26. Design Patterns using .Net 2.0 (intro. usages,scenarios for the most common ones) 27. Advanced Design Patters in .Net 2.0 (the more complicated ones, like MVC, chain of responsibility, Command+ Undo...) I could sit for another hour and write these, but will anybody actually listen? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 29, 2004 ### [Denying your public classes from your end customers](https://osherove.com/blog/2004/12/29/denying-your-public-classes-from-your-end-customers.html) - Dec 29, 2004 ### [Developing as non-admin made easier with VS.Net 2005?](https://osherove.com/blog/2004/12/29/developing-as-non-admin-made-easier-with-vsnet-2005.html) - Dec 13, 2004 ### [.Net Deep dive lecture videos online](https://osherove.com/blog/2004/12/13/net-deep-dive-lecture-videos-online.html) - Dec 13, 2004 ### [Juval Lowey in Israel](https://osherove.com/blog/2004/12/13/juval-lowey-in-israel.html) --- title: ".Net Deep dive lecture videos online" url: "https://osherove.com/blog/2004/12/13/net-deep-dive-lecture-videos-online.md" canonical: "https://osherove.com/blog/2004/12/13/net-deep-dive-lecture-videos-online.html" published: "2004-12-13T23:24:00" updated: "2004-12-13T23:24:00" tags: [".Net Original"] author: "Roy Osherove" description: "Yes! You can now see the recorded lectures from the .Net deep dive event. Including my \" Cool Tools \" and \" Test Driven Development \" lectures. ( Here's the link list of the \"Cool Tools\" lecture..) Have fun!!!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Deep dive lecture videos online By Roy Osherove December 13, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published December 13, 2004; technical details may be outdated. Yes! [You can now see the recorded lectures](http://www.besttv.co.il/microsoft/) from the .Net deep dive event. Including my "[Cool Tools](http://213.8.64.165/OtherVod/Msn/oshrov_n.wmv)" and "[Test Driven Development](http://213.8.64.165/OtherVod/Msn/RoiOsherov_n.wmv)" lectures. ([Here's the link list](http://weblogs.asp.net/rosherove/archive/2004/11/26/270637.aspx) of the "Cool Tools" lecture..) Have fun!!! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 29, 2004 ### [Developing as non-admin made easier with VS.Net 2005?](https://osherove.com/blog/2004/12/29/developing-as-non-admin-made-easier-with-vsnet-2005.html) - Dec 14, 2004 ### [Session ideas and suggestions for Microsoft Tech-Ed 2005 and future conferences in general](https://osherove.com/blog/2004/12/14/session-ideas-and-suggestions-for-microsoft-tech-ed-2005-and.html) - Dec 13, 2004 ### [Juval Lowey in Israel](https://osherove.com/blog/2004/12/13/juval-lowey-in-israel.html) - Dec 9, 2004 ### [More free cool components from SharpTools](https://osherove.com/blog/2004/12/9/more-free-cool-components-from-sharptools.html) --- title: "Juval Lowey in Israel" url: "https://osherove.com/blog/2004/12/13/juval-lowey-in-israel.md" canonical: "https://osherove.com/blog/2004/12/13/juval-lowey-in-israel.html" published: "2004-12-13T09:40:00" updated: "2004-12-13T09:40:00" tags: [".Net Original"] author: "Roy Osherove" description: "In two days Juval Lowey is going to be in Israel, speaking at the C# user group. I suggest you make the time and get there, since this is a rare opportunity to listen to one of the world's top architects for free.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Juval Lowey in Israel By Roy Osherove December 13, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published December 13, 2004; technical details may be outdated. In two days Juval Lowey is going to be in Israel, speaking at the C# user group. I suggest you **make the time** and get there, since this is a rare opportunity to listen to one of the world's top architects for free. Here's the email I got from Jackie Goldstein the other day regarding this subject: "I am sending out the announcement of this month's Israel Visual C# Users Group meeting, for 2 main reasons: (1) The opportunity to hear and talk to Juval Lowy for a few hours is a must-have opportunity for __any__ .NET developer. (2) I had a large hand in making this happen.  Juval and I know each other for quite a few years, since we are both Microsoft Regional Directors, Microsoft Software Legends, and speak at a lot of the same conferences such as TechEd and VsLive.  When he contacted me several months ago and offered to speak at the [IVBUG](http://www.renaissance.co.il/ivbug), I decided to pass the opportunity to the Visual C# Users Group due to the timing - and that the C# group is probably Juval's more natural habitat :-) **Topic:** **What’s New in .NET 2.0 for the System Developer Lecturer:** **Juval Lowy** While the client frameworks and the language innovations of .NET 2.0 got most of the spotlights, .NET 2.0 introduces a wealth of new features in the CLR and the framework itself. These features extend the tools at the disposal of the system developer, and often compensate for missing .NET 1.1 functionality. The new 2.0 features include assembly aliasing and versioning. Friend assembly, application references, new asynchronous call model, new threading capabilities, serialization events and support for versioning tolerance, new remoting channel as well as a secure remoting channel, granular control of code-access security, and the introduction of promotable transactions, laying the foundation for Indigo. This talk presents each new feature and discusses its place in the .NET 2.0 ecology. Solid knowledge of .NET 1.1 system programming is required. in .Net. Using some very cool demos you will see what exactly it allows you to do. Juval Lowy is a software architect and the principal of IDesign (www.idesign.net), a consulting and training company. Juval is a Microsoft Regional Director for the Silicon Valley, working with Microsoft on helping the industry adopt .NET. His latest book is Programming .NET Components by O'Reilly. The book is dedicated to component-oriented programming and design, as well as the related system issues. Juval participates in the Microsoft internal design reviews for future versions of .NET. Juval published numerous articles, regarding almost every aspect of .NET development, and is a frequent presenter at development conferences. Microsoft recognized Juval as a Software Legend and one of the world's top .NET experts and industry leaders. Although admission is free and you may attend without reserving a place, please do  notify Moshe if you plan to attend so that he can be sure to have enough chairs and FOOD! Moshe Raab \[email removed\] Juval will also be leading several additional classes and seminars while he is in Israel. For more information go to http://www.idag.co.il/IDesign/DEfault.htm The December meeting of the Israel Visual C# User Group http://www.comconix.com/ivcug/ Date:    **Wednesday, December 22, 17:00 - 20:00 **Place:   **Microsoft Israel          Hapnina 2  (Amdocs Building)         Ground Floor          Raanana          +972 (9) 762-5100**   Parking is parking available at the Kurkar parking lot. Proceed straight past the traffic circle and the parking lot will be on your right. Take Care, Jackie Goldstein "  ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 14, 2004 ### [Session ideas and suggestions for Microsoft Tech-Ed 2005 and future conferences in general](https://osherove.com/blog/2004/12/14/session-ideas-and-suggestions-for-microsoft-tech-ed-2005-and.html) - Dec 13, 2004 ### [.Net Deep dive lecture videos online](https://osherove.com/blog/2004/12/13/net-deep-dive-lecture-videos-online.html) - Dec 9, 2004 ### [More free cool components from SharpTools](https://osherove.com/blog/2004/12/9/more-free-cool-components-from-sharptools.html) - Dec 5, 2004 ### [Extending NUnit \*easily\* with version 2.2.1 (finally!)](https://osherove.com/blog/2004/12/5/extending-nunit-easily-with-version-221-finally.html) --- title: "Where should I host my interview with Johanna Rothman?" url: "https://osherove.com/blog/2004/12/13/where-should-i-host-my-interview-with-johanna-rothman.md" canonical: "https://osherove.com/blog/2004/12/13/where-should-i-host-my-interview-with-johanna-rothman.html" published: "2004-12-13T00:12:00" updated: "2004-12-13T00:12:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This weekend I finished editing my interview with Johanna Rothman . I think it turned out pretty cool (if I do say so myself) and Johanna is a great interviewee. I was thinking were should I host this interview, and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Where should I host my interview with Johanna Rothman? By Roy Osherove December 13, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 13, 2004; technical details may be outdated. This weekend I finished editing my interview with [Johanna Rothman](http://www.jrothman.com/). I think it turned out pretty cool (if I do say so myself) and Johanna is a great interviewee. I was thinking were should I host this interview, and immediately though of two options: 1.  My own site (i have hosting that will allow this, even the bandwidth) 2.  [ITConversations.com](http://www.itconversations.com/) (which is known for having some great content) So, before I decided I contacted Doug Kay, the head chief of RDS software and the person who runs ITConversations.com and after listening to it, he agreed that it is good enough to host. With some conditions: -  I need to cut the interview down to less than an hour (That's cutting at least 10 minutes of good chat), preferably to 45 minutes. -  I need to give them exclusive rights to publish (though I retain the rights to publish if they don't) which means I can't post it on my site (with full content) and on their site as well. So, what do **you** think I should do? _\[**Update** - perhaps I didn't make the point clear enough. The reason they want exclusivity is because Doug will be spending a lot of time editing, uploading and spreading the material around. It's all free content and they want to attract sponsors. That is less likely to happen is for every show they put out there will be a fuller alternative on another site taking away hits. On the other hand, up to 14,000 people can listen on it if it's hosted over there, and will also get a chance to see a link to my blog, so that can't be half bad. \]_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 24, 2004 ### [Not dead](https://osherove.com/blog/2004/12/24/not-dead.html) - Dec 19, 2004 ### [Microsoft Vs. PC Technicians](https://osherove.com/blog/2004/12/19/microsoft-vs-pc-technicians.html) - Dec 11, 2004 ### [What I look like (kinda)](https://osherove.com/blog/2004/12/11/what-i-look-like-kinda.html) - Dec 9, 2004 ### [Godwin's Law](https://osherove.com/blog/2004/12/9/godwins-law.html) --- title: "What I look like (kinda)" url: "https://osherove.com/blog/2004/12/11/what-i-look-like-kinda.md" canonical: "https://osherove.com/blog/2004/12/11/what-i-look-like-kinda.html" published: "2004-12-11T23:31:00" updated: "2004-12-11T23:31:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is kinda what I looked like at the .Net deep dive event. Kinda. (Done via the South park Create-a-character page, via Peter Provost ) P.S Flickr rocks ! Looks like I'll be storing my photos there for the near…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What I look like (kinda) By Roy Osherove December 11, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 11, 2004; technical details may be outdated. [![](https://osherove.com/img/ext/photos2.flickr.com_2117321_ee7ecb068a_m.jpg)](http://www.flickr.com/photos/royo/2117321/)[](http://www.flickr.com/photos/royo/211732) This is kinda what I looked like at the .Net deep dive event. Kinda. _(Done via the_ [_South park Create-a-character_](http://southparkstudios.com/games/create.html) _page, via_ [_Peter Provost_](http://www.peterprovost.org/archive/2004/12/09/2309.aspx)_)_ P.S [Flickr rocks](http://www.flickr.com/photos/royo/)! Looks like I'll be storing my photos there for the near future... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 19, 2004 ### [Microsoft Vs. PC Technicians](https://osherove.com/blog/2004/12/19/microsoft-vs-pc-technicians.html) - Dec 13, 2004 ### [Where should I host my interview with Johanna Rothman?](https://osherove.com/blog/2004/12/13/where-should-i-host-my-interview-with-johanna-rothman.html) - Dec 9, 2004 ### [Godwin's Law](https://osherove.com/blog/2004/12/9/godwins-law.html) - Dec 8, 2004 ### [Chatting with Johanna Rothman](https://osherove.com/blog/2004/12/8/chatting-with-johanna-rothman.html) --- title: "I changed my mind - Mock objects are wrong for database unit testing" url: "https://osherove.com/blog/2004/12/10/i-changed-my-mind-mock-objects-are-wrong-for-database-unit-t.md" canonical: "https://osherove.com/blog/2004/12/10/i-changed-my-mind-mock-objects-are-wrong-for-database-unit-t.html" published: "2004-12-10T01:04:00" updated: "2004-12-10T01:04:00" tags: ["Agile Related"] author: "Roy Osherove" description: "More than a year ago I wrote about the problems in database testing. I also stated that I feel it's totally wrong to run your unit tests against a live test database, but instead you should be using mock objects to save…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I changed my mind - Mock objects are wrong for database unit testing By Roy Osherove December 10, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published December 10, 2004; technical details may be outdated. More than a year ago I wrote about the problems in database testing. I also [stated](http://weblogs.asp.net/rosherove/archive/2003/09/30/29734.aspx) that I feel it's totally wrong to run your unit tests against a live test database, but instead you should be using mock objects to save you from all the trouble. Boy have things changed since then. I take back what I said. For a long time now I've been doing DB testing without mock objects, because I believe that's currently the best way to make sure you test data access logic **and** integration with the database procedures and views. There are now several easy to implement solutions to the "how-the-hell-do-I-roll-back-the-changes-i've-made-to-the-db" problem(see [this article](http://weblogs.asp.net/rosherove/archive/2004/07/20/187863.aspx), [mbUnit](http://mbunit.tigris.org/) , [xtUnit](http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx) and [this one about extending the new Nunit](http://weblogs.asp.net/rosherove/archive/2004/12/05/275164.aspx) as well for several options for doing the same thing). With those - there's no reason for you not to do it. Funny how things change overtime. Like any other thing, but usually more, software development is one of those things that looking back 6 months from now I'll **always** say to myself "Gosh! if I knew then what I now!".. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jan 1, 2005 ### [The case for staged delivery and Agile methodologies](https://osherove.com/blog/2005/1/1/the-case-for-staged-delivery-and-agile-methodologies.html) - Dec 29, 2004 ### [Comparing C++ unit testing frameworks](https://osherove.com/blog/2004/12/29/comparing-c-unit-testing-frameworks.html) - Dec 7, 2004 ### [MSF is a fraud? A response](https://osherove.com/blog/2004/12/7/msf-is-a-fraud-a-response.html) - Dec 7, 2004 ### [Mockpp - Mock Objects for C++](https://osherove.com/blog/2004/12/7/mockpp-mock-objects-for-c.html) --- title: "Godwin's Law" url: "https://osherove.com/blog/2004/12/9/godwins-law.md" canonical: "https://osherove.com/blog/2004/12/9/godwins-law.html" published: "2004-12-09T23:17:00" updated: "2004-12-09T23:17:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I have to say that a discussion about unit testing is the last place I expected this to show up (right after someone mentioned the term \" programmer Nazis \": \"Godwin's Law States: \"As an online discussion grows longer,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Godwin's Law By Roy Osherove December 9, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 9, 2004; technical details may be outdated. I have to say that [a discussion about unit testing](http://discuss.joelonsoftware.com/default.asp?joel.3.41287.15) is the last place I expected this to show up (right after someone mentioned the term "_programmer Nazis_": _"Godwin's Law States: "As an online discussion grows longer, the probability of a comparison involving Nazis or Hitler approaches one." _[_http://en.wikipedia.org/wiki/Godwin's\_law_](http://en.wikipedia.org/wiki/Godwin's_law) _Jared Thursday, December 09, 2004 "_ Followed by this: _"Just so you know: There is a tradition in many Usenet newsgroups that once such a comparison is made, the thread is over, and whoever mentioned the Nazis has automatically lost whatever argument was in progress. In addition, whoever points out that Godwin's Law applies to the thread is also considered to have "lost" the battle, as it is considered poor form to invoke the law explicitly. Again, that is from wikipedia.  So, this thread should be over._ _Jared Thursday, December 09, 2004 "_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 13, 2004 ### [Where should I host my interview with Johanna Rothman?](https://osherove.com/blog/2004/12/13/where-should-i-host-my-interview-with-johanna-rothman.html) - Dec 11, 2004 ### [What I look like (kinda)](https://osherove.com/blog/2004/12/11/what-i-look-like-kinda.html) - Dec 8, 2004 ### [Chatting with Johanna Rothman](https://osherove.com/blog/2004/12/8/chatting-with-johanna-rothman.html) - Dec 3, 2004 ### [The Self Project - YAPP (Yet Another Programming Paradigm?)](https://osherove.com/blog/2004/12/3/the-self-project-yapp-yet-another-programming-paradigm.html) --- title: "More free cool components from SharpTools" url: "https://osherove.com/blog/2004/12/9/more-free-cool-components-from-sharptools.md" canonical: "https://osherove.com/blog/2004/12/9/more-free-cool-components-from-sharptools.html" published: "2004-12-09T16:47:00" updated: "2004-12-09T16:47:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "\"Hi Roy , Writing as a followup to your blog about our freeware developer tools in October - thanks for spreading the word about us! We've done almost 100 freeware developer downloads a day since then, btw, and are glad…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More free cool components from SharpTools By Roy Osherove December 9, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published December 9, 2004; technical details may be outdated. _"Hi Roy,_ _Writing as a followup to your blog about our freeware developer tools in October - thanks for spreading the word about us!  We've done almost 100 freeware developer downloads a day since then, btw, and are glad to think a lot of others are using our tools and components._ _We have since updated several of them, and have added some important ones I thought I'd mention:_ [_SharpTools_](http://www.ms-inc.net/Default.aspx?Page=SharpToolsInfo) _has added an NUnit plugin which integrates NUnit testing directly into the IDE_ _Freeware_ [_web-based Chat component_](http://www.ms-inc.net/Default.aspx?Page=Products&ProductID=WebChat) _- this is probably our coolest new download.  It's done using HTTP, client-side script and DHTML - no client download needed!  It's full-featured on client and server side, and is IE- and Mozilla-compatible._  _Freeware_ [_OLTP library_](http://www.ms-inc.net/Default.aspx?Page=Products&ProductID=PaymentGateway)_, as well as an_ [_ASP.NET ShoppingCart_](http://www.ms-inc.net/Default.aspx?Page=Products&ProductID=ShoppingCart) _UI layer on top of that library_ [_Freeware web compression library_](http://www.ms-inc.net/Default.aspx?Page=Products&ProductID=WebCompression) _that automatically and transparently takes advantage of browser support for Deflate or GZip (most browsers) to compress HTTP traffic from server to client_ [_Freeware plugin library_](http://www.ms-inc.net/Default.aspx?Page=Products&ProductID=Plugins) _which is type- and interface agnostic, and makes it easy to take advantage of shadow-copying of libraries, AppDomain process seperation, and dynamic discovery of plugins on the disk_ _Freeware web-based_ [_threaded discussion forums_](http://www.ms-inc.net/Default.aspx?Page=Products&ProductID=Forums) _component_ _I hope some of those sound interesting.  Basically, we're packaging up cool stuff we've developed for our own projects and sharing it with other developers.  We hope that's good karma, good networking, and good marketing - we'll see._  _Thanks again,_ _Jon Schwartz_ _Morrison Schwartz_ [_www.ms-inc.net_](http://www.ms-inc.net/) _"_ Need I say more? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 13, 2004 ### [.Net Deep dive lecture videos online](https://osherove.com/blog/2004/12/13/net-deep-dive-lecture-videos-online.html) - Dec 13, 2004 ### [Juval Lowey in Israel](https://osherove.com/blog/2004/12/13/juval-lowey-in-israel.html) - Dec 5, 2004 ### [Extending NUnit \*easily\* with version 2.2.1 (finally!)](https://osherove.com/blog/2004/12/5/extending-nunit-easily-with-version-221-finally.html) - Dec 2, 2004 ### [The Regulator sucks for Non-Admins](https://osherove.com/blog/2004/12/2/the-regulator-sucks-for-non-admins.html) --- title: "Chatting with Johanna Rothman" url: "https://osherove.com/blog/2004/12/8/chatting-with-johanna-rothman.md" canonical: "https://osherove.com/blog/2004/12/8/chatting-with-johanna-rothman.html" published: "2004-12-08T22:21:00" updated: "2004-12-08T22:21:00" tags: ["Off Topic", "Project Management"] author: "Roy Osherove" description: "I just finished a wonderful meeting with non other than Johanna Rothman , one of my favorite blog authors, who just happens to be in Israel this week. We talked for about two hours on topics relating to project…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Chatting with Johanna Rothman By Roy Osherove December 8, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic), [Project Management](https://osherove.com/blog/category/project-management) **Historical article** · Originally published December 8, 2004; technical details may be outdated. I just finished a wonderful meeting with non other than [Johanna](http://www.jrothman.com/weblog/blogger.html) [Rothman](http://www.jrothman.com/weblog/htpblogger.html), one of my favorite blog authors, who just happens to be in Israel this week. We talked for about two hours on topics relating to project management, development scheduling and interviewing techniques. But wait! Wanna hear the really great part? You'll be able to **hear** that conversation real soon **because I have it all recorded.** Yep, I checked the other day and it seems that my laptop's microphone is "good enough" to be able to record a conversation between people that are close enough to it, but still comfortable. So I did. And it went great. I have about an hour and 25 minutes of recording audio that I am thinking can either be cut down to an hour and 13 so it can fit on one CD, or split it all into two Cd's (that is - 2 mp3 files you can burn separately). I just need to edit it during the weekend and remove all the stupid mistakes I put in there (some silly questions with no real purpose, for example), and put in some music and introduction in the beginning of the interview. In any case, it's going to be very interesting! I'll have a post with more info on what's exactly in there when I can actually give you a link you can download it from. Just for fun, here's a small part of the questions that were discussed: - as a manager – what is the problem that you learned the most from? - How do you hire a developer? - What do you think of the Microsoft Puzzle questions as an interviewing technique? - what’s the AYE conference? - What do you look for in a good project manager? - what can I do to better myself as a manager? - What other good blogs do you recommend people read? - what is the main problem with software development management today? - What are the main problems people keep coming to you with? - What advice would you give to a person just starting out as a team leader? - What is the worst mistake you've ever made as a project manager? Many more like these and about other topics such as Agile development, writing and lessons learned the hard way.. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 11, 2004 ### [What I look like (kinda)](https://osherove.com/blog/2004/12/11/what-i-look-like-kinda.html) - Dec 9, 2004 ### [Godwin's Law](https://osherove.com/blog/2004/12/9/godwins-law.html) - Dec 3, 2004 ### [The Self Project - YAPP (Yet Another Programming Paradigm?)](https://osherove.com/blog/2004/12/3/the-self-project-yapp-yet-another-programming-paradigm.html) - Dec 3, 2004 ### [Army Platoon gets an X Box + 30 games, courtesy of MS](https://osherove.com/blog/2004/12/3/army-platoon-gets-an-x-box-30-games-courtesy-of-ms.html) --- title: "Small but useful SQL tips from SQLJunkies" url: "https://osherove.com/blog/2004/12/7/small-but-useful-sql-tips-from-sqljunkies.md" canonical: "https://osherove.com/blog/2004/12/7/small-but-useful-sql-tips-from-sqljunkies.html" published: "2004-12-07T01:11:00" updated: "2004-12-07T01:11:00" tags: [".Net Quotations", "Tips & Tricks"] author: "Roy Osherove" description: "Here's a nice set of small but might-be-useful-someday SQL tips [via Bersileus ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Small but useful SQL tips from SQLJunkies By Roy Osherove December 7, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published December 7, 2004; technical details may be outdated. [Here's a nice set of small but might-be-useful-someday SQL tips](http://sqljunkies.com/WebLog/xienzyrus/archive/2004/12/06/5390.aspx) _\[via_ [_Bersileus_](http://sqljunkies.com/WebLog/xienzyrus/archive/2004/12/06/5390.aspx)_\]_ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 6, 2005 ### [Some news from the wild](https://osherove.com/blog/2005/1/6/some-news-from-the-wild.html) - Jan 3, 2005 ### [\[WebCast\] The Elixir and Alchemy projects - Outlook Integration with Siebel at Microsoft](https://osherove.com/blog/2005/1/3/webcast-the-elixir-and-alchemy-projects-outlook-integration.html) - Nov 29, 2004 ### [TestDriven.Net version 1.0 is out (with a new site design as well)](https://osherove.com/blog/2004/11/29/testdrivennet-version-10-is-out-with-a-new-site-design-as-we.html) - Nov 7, 2004 ### [Mitigating malicious plug-ins in your application](https://osherove.com/blog/2004/11/7/mitigating-malicious-plug-ins-in-your-application.html) --- title: "MSF is a fraud? A response" url: "https://osherove.com/blog/2004/12/7/msf-is-a-fraud-a-response.md" canonical: "https://osherove.com/blog/2004/12/7/msf-is-a-fraud-a-response.html" published: "2004-12-07T00:50:00" updated: "2004-12-07T00:50:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Joel writes some stuff in Hebrew and asks the readers to help him translate them. In the translation post , (which is a good read) joel posts about what he feels the process should be like when he reports a bug in the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSF is a fraud? A response By Roy Osherove December 7, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published December 7, 2004; technical details may be outdated. Joel [writes some stuff in Hebrew](http://www.joelonsoftware.com/items/2004/12/04.html) and asks the readers to help him translate them. [In the translation post](http://www.joelonsoftware.com/items/2004/12/06.html), (which is a good read) joel posts about what he feels the process should be like when he reports a bug in the software: _For example, if I assign a bug to a developer I expect them to:_ 1. _reproduce the bug_ 2. _if it's not immediately reproducible, make a good faith effort to figure out why it's happening to me instead of just assuming that I'm doped up on anti-allergy medication and hallucinating it_ 3. _find the root cause_ 4. _do some searches to see if the same errors were made elsewhere in the code_ 5. _fix them all_ 6. _test the fix_ 7. _think about whether this bug might be causing serious implications for a customer who needs to be told about the fix_ 8. _etc._ Here’s how this would look on a project that contains Unit tests for the code (hopefully was written Test-first thus we have good code coverage on the unit tests)  where the developer who gets the bug uses Test Driven Development: 1. The developer and their pair(pair programming, remember that?) sit at the machine 2. They run all the unit tests and make sure they all pass 3. If some don’t pass, they try and see if this has anything to do with the reported bug. In any case, all tests should run and pass before the bug can be fixed. 4. Create a test that reproduces the bug (that is, fails when the bug happens) 5. if it's not immediately reproducible the pair contacts Joel and the three sit together to figure out what would be the best test that would force this bug to reveal itself consistently 6. The bug appears in the form of a failing test 7. Make the test pass _as simply as possible_ in the production code 8. Run all the unit tests and make sure they all pass 9. If some fail try to make them all work as simply as possible or find some other way to fix the original failing test 10. When all test pass try to think of other places this code might have a bug in with  this problem. 11. If it does flush those places out too with failing tests 12. Make them all work _as simply as possible_ just like you did with the first test that failed 13. When all test pass go and _refactor_ your code to remove duplication: make all the changes you made point to a single place where the fixed code reside in, thus remove the need to maintain all these places and have the fixed code written only once. 14. Make sure all tests still pass 15. Get the latest version of the code from source control and run the tests with the latest version of everyone’s code. 16. Make sure it all passes. 17. Check in and see if the build of the system isn’t broken by your new code (your build server should have an automatic build feature which builds the code and runs all unit tests on a check-in action). 18. all unit tests with the checked in code from source control should all pass 19. If they don’t go back and fix it until it does. Repeat until integration is successful 20. Report bug as resolved Sounds like a lot of work? You might find that this work (integration and all the other stuff) is done anyway , only in this way we are flushing out integration problems very early and not waiting for QA to tell us something was wrong with the latest build. SO you’re basically choosing if you want to do the integration very soon after making the code work, or much later when a lot of changes have taken place and it will be much harder to find any code that broke the build. Your choice. More stuff about the post that triggered this writing: “Lastly there's MSF. The author's complaint about methodologies is that they essentially transform people into compliance monkeys. "our system isn't working" -- "but we signed all the phase exits!". Intuitively, there is SOME truth in that. Any methodology that aims to promote consistency essentially has to cater to a lowest common denominator. The concept of a "repeatable process" implies that while all people are not the same, they can all produce the same way, and should all be monitored similarly. For instance, in software development, we like to have people unit-test their code. However, a good, experienced developer is about 100 times less likely to write bugs that will be uncovered during unit tests than a beginner. It is therefore practically useless for the former to write these... but most methodologies would enforce that he has to, or else you don't pass some phase. At that point, he's spending say 30% of his time on something essentially useless, which demotivates him. Since he isn't motivated to develop aggressively, he'll start giving large estimates, then not doing much, and perform his 9-5 duties to the letter. Project in crisis? Well, I did my unit tests. The rough translation of his sentence is: "methodologies encourage rock stars to become compliance monkeys, and I need everyone on my team to be a rock star". Couldn’t this be said for \*any\* methdology out there, be it agile, XP, MSF, Waterfall? Sure. I don’t believe MSF is the problem here – in fact I believe that it’s a management problem – if you stuff a methodology down people’s throats – they won’t accept it even if it was “Do nothing but sit around all day, and fill out 3 reports” – it’s a human thing. Any methodology can work if the people are willing to use it and want to use it and embrace it. What you’re saying here is that most people just aren’t good enough for these methodologies, that only smart people (that can come up with these things) can use it successfully. Not true. With proper guidance and good will it can be successful implemented in an organization. This post feels more like FUD than anything else to me – picking on a MSF is wrong because MSF (especially MSF-Agile) embraces change and is all about making he methodology work for your practices and not the other way around. You can’t dismiss something just because you don’t know enough about it. Agile methodologies are there simply because \*change\* and \*the human factor\* are the most important things in the process of software development. The only thing left in this equation to make these methodologies work for the organization (and Joel in particular) is to actually hire the right people who are indeed “rosh gadol” – these are the people that will gladly embrace a methodology once they believe in it – and thus bring eve more value than they are now. And here’s another sentence that smells of FUD: “For instance, in software development, we like to have people unit-test their code. However, a good, experienced developer is about 100 times less likely to write bugs that will be uncovered during unit tests than a beginner. It is therefore practically useless for the former to write these... but most methodologies would enforce that he has to, or else you don't pass some phase.” I believe one of the most mature properties of an experienced developer is that they know what they don’t know, and they know what happens when they make assumptions about the code. But its hard to explain this even to experienced developers that even when you’re sure your assumptions are correct, you could be very very wrong. Whenever I teach hands-on Test Driven Development, I make sure that each of the attendees actually goes in and writes test even for the most trivial of code. Even with methods that parse out the shortest string, we find bugs. Methods that have 2-3 lines of code turn out to have simple 1-off bugs (“I forgot to add a  delimiter, The array is accessed one index further than it should be and so on..). You all know these things. For a developer to say “I don’t need to test this – It works because I wrote” have surprises coming. Not only that – when they do not write the unit tests, they are losing some of the biggest benefits that unis tests give us (besides checking for bugs): \-         **Save money.**They provide a safety net so that we can go in an change(refactor) our codebase at any given time knowing that if something breaks, we’ll know about it right away \-         **Save money.**We actually write the tests instead of dimissing them for lack of time, or lack of value – this means better code coverage  and more bugs that we find earlier. Plus it leads to developers that don’t say “It worked on my machine” but instead say “It passes all the tests on the build server – it works”. \-         **Save money**. Finding those 1-off bugs early in the cycle saves **a lot** of debugging time – that’s money in the bank. Do the math – if I don’t find that bug today (which it would take a 5 minute investment to write a test for) I’ll need to find it later. Sometimes much later, and you all know that the cost of fixing a bug increases in orders of magnitude as we approach later stages of testing and deployment, right? So let’s say that now in a later stage it could take me anywhere from 15 minutes to 12 hours to locate that bug (because I might need to debug from the top-down into the logic classes from the GUI and so on). Multiply that by the number of these small bugs that you find all the time and now calculate how much is a developer hour. Got it? ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Dec 29, 2004 ### [Comparing C++ unit testing frameworks](https://osherove.com/blog/2004/12/29/comparing-c-unit-testing-frameworks.html) - Dec 10, 2004 ### [I changed my mind - Mock objects are wrong for database unit testing](https://osherove.com/blog/2004/12/10/i-changed-my-mind-mock-objects-are-wrong-for-database-unit-t.html) - Dec 7, 2004 ### [Mockpp - Mock Objects for C++](https://osherove.com/blog/2004/12/7/mockpp-mock-objects-for-c.html) - Dec 5, 2004 ### [Extending NUnit \*easily\* with version 2.2.1 (finally!)](https://osherove.com/blog/2004/12/5/extending-nunit-easily-with-version-221-finally.html) --- title: "Mockpp - Mock Objects for C++" url: "https://osherove.com/blog/2004/12/7/mockpp-mock-objects-for-c.md" canonical: "https://osherove.com/blog/2004/12/7/mockpp-mock-objects-for-c.html" published: "2004-12-07T00:02:00" updated: "2004-12-07T00:02:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Yeah, I know that what I quoted the other day about C++ is not entirely correct. You do have a mock object framework for C++. Here's a part of the documentation for Mockpp : \"But let me warn you If you take the wrong…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mockpp - Mock Objects for C++ By Roy Osherove December 7, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published December 7, 2004; technical details may be outdated. Yeah, I know that what I quoted the other day about C++ is not entirely correct. You **do** have a mock object framework for C++. Here's a [part of the documentation](http://mockpp.sourceforge.net/hb/ch01s03.html) for [Mockpp](http://mockpp.sourceforge.net/): _**"But let me warn you**_ _If you take the wrong macro or maybe just have a small typo you will get loads of error messages all pointing to the same line. You will have no idea where to start and search the problem. I strongly recommend to take little steps when setting up such objects: add one single method and compile. Continue only if it compiled flawlessly._ _If you don't take care you will quickly find out why_ [_macros are evil_](http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-38.4) _and should be avoided where ever possible (unfortunately they are needed here)._ _It took me more than 60 hours only to get all the macro stuff working so please believe me."_ I feel sorry for the guy. It reads like it was so painful to write a mock object framework and everything is so much more complicated that I doubt many people will get to actually use it - the learning curve is very steep (I'm trying it on for size as part of a TDD course for C++ I'm conducting - it **is** painful). If a framework is hard to use, and that makes unit tests harder to write - it's hard to convince people to move to agile development, and sometimes with good cause - it might prove too much of an effort to be economically justifiable - everyone loses out. My hope is that after a while with my course I'll be able to have some better technical knowledge about these subjects to provide a more concrete guideline I can publish online for unit testing in C++.  But, to do that, we actually have to make it work with a real product - so good luck to all of us :) Currently, writing our own manual mock objects seems to be working (it's not very far from where Mockpp is these days - actually it feels less work to accomplish the same tests) but I'm not sure I fully grasp all of its concepts just yet, so I'll keep reading up more on it. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Dec 10, 2004 ### [I changed my mind - Mock objects are wrong for database unit testing](https://osherove.com/blog/2004/12/10/i-changed-my-mind-mock-objects-are-wrong-for-database-unit-t.html) - Dec 7, 2004 ### [MSF is a fraud? A response](https://osherove.com/blog/2004/12/7/msf-is-a-fraud-a-response.html) - Dec 5, 2004 ### [Extending NUnit \*easily\* with version 2.2.1 (finally!)](https://osherove.com/blog/2004/12/5/extending-nunit-easily-with-version-221-finally.html) - Dec 2, 2004 ### [Nice Agile blog](https://osherove.com/blog/2004/12/2/nice-agile-blog.html) --- title: "Blogger dinner with Johanna Rothman - Rescheduled" url: "https://osherove.com/blog/2004/12/5/blogger-dinner-with-johanna-rothman-rescheduled.md" canonical: "https://osherove.com/blog/2004/12/5/blogger-dinner-with-johanna-rothman-rescheduled.html" published: "2004-12-05T19:56:00" updated: "2004-12-05T19:56:00" tags: ["Blogging"] author: "Roy Osherove" description: "There isn't going to be a blogger dinner this Tuesday with Johanna Rothman , since it turns out it's the first candle of Hanukkah here in Israel, so most people will want to celebrate it with their families. Is anyone…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blogger dinner with Johanna Rothman - Rescheduled By Roy Osherove December 5, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published December 5, 2004; technical details may be outdated. There isn't going to be a blogger dinner this Tuesday with [Johanna Rothman](http://www.jrothman.com/weblog/blogger.html), since it turns out it's the first candle of Hanukkah here in Israel, so most people will want to celebrate it with their families. Is anyone interested in meeting the day after? On Wednesday? The meeting will be in Tel Aviv, Israel ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Dec 31, 2004 ### [Is PostXing gonna solve my blogging needs?](https://osherove.com/blog/2004/12/31/is-postxing-gonna-solve-my-blogging-needs.html) - Dec 15, 2004 ### [A highly primitive solution for fighting .Text blog spam - an outlook script](https://osherove.com/blog/2004/12/15/a-highly-primitive-solution-for-fighting-text-blog-spam-an-o.html) - Dec 2, 2004 ### [This Tuesday is Israel Geek Dinner Day with Johanna Rothman](https://osherove.com/blog/2004/12/2/this-tuesday-is-israel-geek-dinner-day-with-johanna-rothman.html) - Dec 2, 2004 ### [Nice Agile blog](https://osherove.com/blog/2004/12/2/nice-agile-blog.html) --- title: "Extending NUnit *easily* with version 2.2.1 (finally!)" url: "https://osherove.com/blog/2004/12/5/extending-nunit-easily-with-version-221-finally.md" canonical: "https://osherove.com/blog/2004/12/5/extending-nunit-easily-with-version-221-finally.html" published: "2004-12-05T00:43:00" updated: "2004-12-05T00:43:00" tags: [".Net Original", "Agile Related"] author: "Roy Osherove" description: "I finally got some time so I sat down with the latest version of NUnit - 2.2.1 and tried using its extensibility features like the ability to create new custom test attributes that change test behavior, hopefully…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Extending NUnit \*easily\* with version 2.2.1 (finally!) By Roy Osherove December 5, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published December 5, 2004; technical details may be outdated. I finally got some time so I sat down with the latest version of [NUnit](http://www.nunit.org/) \- 2.2.1 and tried using its extensibility features like the ability to create new custom test attributes that change test behavior, hopefully ridding myself of more complex projects that I had to do in the past _(such as using interception or create a whole new binary version of Nunit just so that this could be done)_ . I'm glad to say that it worked out **great**! NUnit 2.2.1 finally allows one to (no so)easily add custom attributes such as Rollback to NUnit without resorting to violence. Yey! Unfortunately, the process is still too bureaucratic (for me at least), requiring the developer to add 3 new classes for each test attribute. I took it upon myself to check and see if this process could be made easier and it does :) I basically created a base class you inherit from and does all the nasty work for you. Here's how easy it is to create a new attribute that does tracing on your unit tests: --- \[AttributeUsage(AttributeTargets.Method, AllowMultiple\=false)\] \[TestBuilder(typeof(CustomTestAttributeBase.CustomTestBuilder))\] public class SimpleTraceAttribute:CustomTestAttributeBase {    public override void BeforeTestRun (TestCaseResult testResult,                                        TemplateTestCase testCase)             {                   Console.WriteLine("START: "\+ testCase.Name);             }    public override void AfterTestRun (TestCaseResult testResult,                                     TemplateTestCase testCase)             {                   Console.WriteLine("END: "\+ testCase.Name);             } } --- Simple and quick, no fuss. [Read this article for the nasty details and code you can use](http://weblogs.asp.net/rosherove/articles/ExntendingNunit221.aspx) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 13, 2004 ### [Juval Lowey in Israel](https://osherove.com/blog/2004/12/13/juval-lowey-in-israel.html) - Dec 9, 2004 ### [More free cool components from SharpTools](https://osherove.com/blog/2004/12/9/more-free-cool-components-from-sharptools.html) - Dec 2, 2004 ### [The Regulator sucks for Non-Admins](https://osherove.com/blog/2004/12/2/the-regulator-sucks-for-non-admins.html) - Nov 24, 2004 ### [My TDD webcast yesterday was pretty fun](https://osherove.com/blog/2004/11/24/my-tdd-webcast-yesterday-was-pretty-fun.html) --- title: "Creating custom test attributes easily with NUnit 2.2.1" url: "https://osherove.com/blog/2004/12/4/creating-custom-test-attributes-easily-with-nunit-221.md" canonical: "https://osherove.com/blog/2004/12/4/creating-custom-test-attributes-easily-with-nunit-221.html" published: "2004-12-04T21:00:00" updated: "2004-12-04T21:00:00" tags: [] author: "Roy Osherove" description: "One of the new features in NUnit 2.2.1 is the ability to extend the NUnit framework in two ways. The first one is to be able to create your own custom test suites (for example, if you wanted to run your unit tests in a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Creating custom test attributes easily with NUnit 2.2.1 By Roy Osherove December 4, 2004 **Historical article** · Originally published December 4, 2004; technical details may be outdated. One of the new features in NUnit 2.2.1 is the ability to extend the NUnit framework in two ways. The first one is to be able to create your own custom test suites (for example, if you wanted to run your unit tests in a multi threaded fashion this would be a good candidate to go with). The second one is the ability to create new test case attributes that add behavior to the running test case. A good example of that would be to be able to create a transaction in the beginning of a test and roll back that transaction at the end of it, thus rolling back any state that had changed in the database during the test. I’ll show here how to do the second one, in a very easy manner. Currently to go in the custom attribute route you need to create three separate classes to do your bidding. - A custom attribute class, which is just a fancy name for your intentions but does not actually implement anything - a custom test case, which overrides the standard Nunit test case behavior and lets you inject your on implementation along the way (this is where the real work is done) - a test case builder class which simply returns an instance of your new test case. I won’t go into too much detail as to how you actually do this, because there’s a much much simpler way. In this alternate way to still get all the great benefits of the old way, but: - You create only one simple attribute class that inherits from a base class - You override two methods : “BeforeRunTest” and “AfterRunTest” That’s it. Here’s how it looks in this alternate way, if I were to create a class that simply writes to the console before and after the test is executed: --- \[AttributeUsage(AttributeTargets.Method, AllowMultiple\=false)\] \[TestBuilder(typeof(CustomTestAttributeBase.CustomTestBuilder))\] public class SimpleTraceAttribute:CustomTestAttributeBase {    public override void BeforeTestRun (TestCaseResult testResult,                                        TemplateTestCase testCase)             {                   Console.WriteLine(“START: “\+ testCase.Name);             }    public override void AfterTestRun (TestCaseResult testResult,                                     TemplateTestCase testCase)             {                   Console.WriteLine(“END: “\+ testCase.Name);             }       } --- There you go. No interception or custom version of NUnit is needed. Only the latest version which is NUnit 2.21 is needed for this.  Here are the steps to allow this cool thing in your project. 1. Create a new class library project 2. Add a reference to NUnit.Framework and Nunit.Core 3. [Download this base class](https://osherove.com/downloads/nunitCustomTestBase.zip) and add it to your test project 4. Start adding your own derived classes like shown above. 5. That’s it. The base class in the link actually implements all the three steps needed to create a custom test attribute, but allows you, the developer, to focus on the important things in life. you know, like, actually getting the job done and write a good unit test easily. Have fun, and feel free to give feedback! --- title: "The Self Project - YAPP (Yet Another Programming Paradigm?)" url: "https://osherove.com/blog/2004/12/3/the-self-project-yapp-yet-another-programming-paradigm.md" canonical: "https://osherove.com/blog/2004/12/3/the-self-project-yapp-yet-another-programming-paradigm.html" published: "2004-12-03T02:34:00" updated: "2004-12-03T02:34:00" tags: ["Off Topic"] author: "Roy Osherove" description: "The Self project seems like a very ambitious idea. Check out this movie to get a nice overview of some of the things this new programming paradigm attempts to achieve. Am I wrong or is this whole thing based on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Self Project - YAPP (Yet Another Programming Paradigm?) By Roy Osherove December 3, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 3, 2004; technical details may be outdated. The [Self project](http://research.sun.com/self/papers/self-power.html) seems like a very ambitious idea. Check out [this movie](http://www.smalltalk.org.br/movies/) to get a nice overview of some of the things this new programming paradigm attempts to achieve. Am I wrong or is this whole thing based on SmallTalk? \[via [James Robertson](http://www.cincomsmalltalk.com/blog/servlet/TrackbackServlet?entry=3279431672&showComments=true)\] ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 9, 2004 ### [Godwin's Law](https://osherove.com/blog/2004/12/9/godwins-law.html) - Dec 8, 2004 ### [Chatting with Johanna Rothman](https://osherove.com/blog/2004/12/8/chatting-with-johanna-rothman.html) - Dec 3, 2004 ### [Army Platoon gets an X Box + 30 games, courtesy of MS](https://osherove.com/blog/2004/12/3/army-platoon-gets-an-x-box-30-games-courtesy-of-ms.html) - Dec 3, 2004 ### [Oracle: Don't hate it just because you don't get it, get it?](https://osherove.com/blog/2004/12/3/oracle-dont-hate-it-just-because-you-dont-get-it-get-it.html) --- title: "Army Platoon gets an X Box + 30 games, courtesy of MS" url: "https://osherove.com/blog/2004/12/3/army-platoon-gets-an-x-box-30-games-courtesy-of-ms.md" canonical: "https://osherove.com/blog/2004/12/3/army-platoon-gets-an-x-box-30-games-courtesy-of-ms.html" published: "2004-12-03T01:08:00" updated: "2004-12-03T01:08:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Wow. This is a cool thing to do. [ via Bill Evjen ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Army Platoon gets an X Box + 30 games, courtesy of MS By Roy Osherove December 3, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 3, 2004; technical details may be outdated. Wow. [This is a cool thing to do.](http://armyadvice.org/armysteve/archive/2004/11/22/932.aspx) _\[_[_via Bill Evjen_](http://geekswithblogs.net/evjen/archive/2004/12/02/16663.aspx)_\]_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 8, 2004 ### [Chatting with Johanna Rothman](https://osherove.com/blog/2004/12/8/chatting-with-johanna-rothman.html) - Dec 3, 2004 ### [The Self Project - YAPP (Yet Another Programming Paradigm?)](https://osherove.com/blog/2004/12/3/the-self-project-yapp-yet-another-programming-paradigm.html) - Dec 3, 2004 ### [Oracle: Don't hate it just because you don't get it, get it?](https://osherove.com/blog/2004/12/3/oracle-dont-hate-it-just-because-you-dont-get-it-get-it.html) - Dec 2, 2004 ### [The Gaming industry turns out to be a modern slave market](https://osherove.com/blog/2004/12/2/the-gaming-industry-turns-out-to-be-a-modern-slave-market.html) --- title: "Oracle: Don't hate it just because you don't get it, get it?" url: "https://osherove.com/blog/2004/12/3/oracle-dont-hate-it-just-because-you-dont-get-it-get-it.md" canonical: "https://osherove.com/blog/2004/12/3/oracle-dont-hate-it-just-because-you-dont-get-it-get-it.html" published: "2004-12-03T00:56:00" updated: "2004-12-03T00:56:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I found this somewhat amusing: Alex announces he's adding himself to the \"I-Hate-Oracle Club\" to which there is a reply in the comments: \"if you can't figure the damn thing out, this is no reason to hate it. take women…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Oracle: Don't hate it just because you don't get it, get it? By Roy Osherove December 3, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 3, 2004; technical details may be outdated. I found this somewhat amusing: [Alex announces](http://weblogs.asp.net/alex_papadimoulis/archive/2004/11/29/271650.aspx) he's adding himself to the "I-Hate-Oracle Club" to which there is a reply in the comments: _"if you can't figure the damn thing out, this is no reason to hate it. take women for instance, you don't hate them , do ya ? "_ My opinion? I tried managing Oracle a bit at an earlier job. Nothing fancy, just needed a new DB with some new tables, and it was hell. Much like moving from C# to C++ in VS 6.0. I cannot believe that some product manager is actually sitting up there and saying "yeah, keep it like that" _(hmm, actually that would be good for Oracle, wouldn't it? you just have to get the Oracle Consultants in to get the job done.)_ If Oracle had the usability features of SQL server with the current set of features, it could probably take over the world. On the other hand, if SQL server added a couple more features that Oracle has while keeping it's usability features up, it might tip the user base over to their side in many cases, thus take over the market. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 3, 2004 ### [The Self Project - YAPP (Yet Another Programming Paradigm?)](https://osherove.com/blog/2004/12/3/the-self-project-yapp-yet-another-programming-paradigm.html) - Dec 3, 2004 ### [Army Platoon gets an X Box + 30 games, courtesy of MS](https://osherove.com/blog/2004/12/3/army-platoon-gets-an-x-box-30-games-courtesy-of-ms.html) - Dec 2, 2004 ### [The Gaming industry turns out to be a modern slave market](https://osherove.com/blog/2004/12/2/the-gaming-industry-turns-out-to-be-a-modern-slave-market.html) - Dec 2, 2004 ### [MSN Spaces Launches, and so does a new MSN Messenger beta](https://osherove.com/blog/2004/12/2/msn-spaces-launches-and-so-does-a-new-msn-messenger-beta.html) --- title: "The Gaming industry turns out to be a modern slave market" url: "https://osherove.com/blog/2004/12/2/the-gaming-industry-turns-out-to-be-a-modern-slave-market.md" canonical: "https://osherove.com/blog/2004/12/2/the-gaming-industry-turns-out-to-be-a-modern-slave-market.html" published: "2004-12-02T23:57:00" updated: "2004-12-02T23:57:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Reading this makes me glad not to be working in the Gaming software industry . Sure, I've done my share of overtime at startups and such, but no, it was never this bad. Even when it was bad it was never like this. Also…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Gaming industry turns out to be a modern slave market By Roy Osherove December 2, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 2, 2004; technical details may be outdated. [Reading this makes me glad not to be working in the Gaming software industry](http://www.livejournal.com/users/ea_spouse/274.html). Sure, I've done my share of overtime at startups and such, but no, it was never this bad. Even when it was bad it was never like this.  Also note that there are over 3000 comments on this post. Thanks to [Anatoly](http://blogs.x2line.com/al/archive/2004/12/02/716.aspx) for the link. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 3, 2004 ### [Army Platoon gets an X Box + 30 games, courtesy of MS](https://osherove.com/blog/2004/12/3/army-platoon-gets-an-x-box-30-games-courtesy-of-ms.html) - Dec 3, 2004 ### [Oracle: Don't hate it just because you don't get it, get it?](https://osherove.com/blog/2004/12/3/oracle-dont-hate-it-just-because-you-dont-get-it-get-it.html) - Dec 2, 2004 ### [MSN Spaces Launches, and so does a new MSN Messenger beta](https://osherove.com/blog/2004/12/2/msn-spaces-launches-and-so-does-a-new-msn-messenger-beta.html) - Dec 2, 2004 ### [Israel .Net Deep Dive lectures feedback](https://osherove.com/blog/2004/12/2/israel-net-deep-dive-lectures-feedback.html) --- title: "More cool tools, and a cool Add-in for C++" url: "https://osherove.com/blog/2004/12/2/more-cool-tools-and-a-cool-add-in-for-c.md" canonical: "https://osherove.com/blog/2004/12/2/more-cool-tools-and-a-cool-add-in-for-c.html" published: "2004-12-02T22:26:00" updated: "2004-12-02T22:26:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Lots of cool tools in this nice blog post . I am reminded again of the chalkTalk application by Billy Hollis which is cool for presentations. Another cool tool I discovered is Visual Assist-X which works for all…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More cool tools, and a cool Add-in for C++ By Roy Osherove December 2, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published December 2, 2004; technical details may be outdated. Lots of cool tools in [this nice blog post](http://blogs.mit.edu/doval/posts/1614.aspx). I am reminded again of the [chalkTalk](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadvnet/html/vbnet11122002.asp) application by Billy Hollis which is cool for presentations. Another cool tool I discovered is [Visual Assist-X](http://www.wholetomato.com/) which works for all versions of C++ on Visual Studio .net and 6.0 and also VB.Net and C#. It actually complements [Resharper](http://www.jetbrains.com/resharper) very well.  (Yes I know it's been there for ages but I've only now had a real need to actually install it so that makes for a whole new discovery cycle on my part..) It's amazing to me that for C++ they are practically the only real-selling Add-in out there. Especially for a product such as VC 6.0 which has some amazing disadvantages regarding usability. Am I missing some more add-is? how about refactoring for C++? anyone know something like that? ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Dec 27, 2004 ### [The Regulator featured on Channel 9](https://osherove.com/blog/2004/12/27/the-regulator-featured-on-channel-9.html) - Dec 9, 2004 ### [More free cool components from SharpTools](https://osherove.com/blog/2004/12/9/more-free-cool-components-from-sharptools.html) - Nov 29, 2004 ### [TestDriven.Net version 1.0 is out (with a new site design as well)](https://osherove.com/blog/2004/11/29/testdrivennet-version-10-is-out-with-a-new-site-design-as-we.html) - Nov 26, 2004 ### [Cool Tools Every .Net Developer should be aware of](https://osherove.com/blog/2004/11/26/cool-tools-every-net-developer-should-be-aware-of.html) --- title: "The Regulator sucks for Non-Admins" url: "https://osherove.com/blog/2004/12/2/the-regulator-sucks-for-non-admins.md" canonical: "https://osherove.com/blog/2004/12/2/the-regulator-sucks-for-non-admins.html" published: "2004-12-02T22:11:00" updated: "2004-12-02T22:11:00" tags: [".Net Original"] author: "Roy Osherove" description: "Don is right . The Regulator will mostly be unusable to you if you work as a non-admin. Here's what I wrote as a comment to his post: This issue is something I've been looking into for quite a while but, most sincerely,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator sucks for Non-Admins By Roy Osherove December 2, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published December 2, 2004; technical details may be outdated. [Don is right](http://sqljunkies.com/WebLog/donkiely/archive/2004/11/16/5164.aspx?Pending=true). [The Regulator](http://regulator.sourceforge.net/) will mostly be unusable to you if you work as a non-admin. Here's what I wrote as a comment to his post: _This issue is something I've been looking into for quite a while but, most sincerely, I've never been too motivated to switch over to. Perhaps it's time I take a long hard look at the issue and try and make my way towards that goal._ Perhaps it is. How many of you work as non-admin? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 9, 2004 ### [More free cool components from SharpTools](https://osherove.com/blog/2004/12/9/more-free-cool-components-from-sharptools.html) - Dec 5, 2004 ### [Extending NUnit \*easily\* with version 2.2.1 (finally!)](https://osherove.com/blog/2004/12/5/extending-nunit-easily-with-version-221-finally.html) - Nov 24, 2004 ### [My TDD webcast yesterday was pretty fun](https://osherove.com/blog/2004/11/24/my-tdd-webcast-yesterday-was-pretty-fun.html) - Nov 19, 2004 ### [News of the week - Israeli blogger edition](https://osherove.com/blog/2004/11/19/news-of-the-week-israeli-blogger-edition.html) --- title: "This Tuesday is Israel Geek Dinner Day with Johanna Rothman" url: "https://osherove.com/blog/2004/12/2/this-tuesday-is-israel-geek-dinner-day-with-johanna-rothman.md" canonical: "https://osherove.com/blog/2004/12/2/this-tuesday-is-israel-geek-dinner-day-with-johanna-rothman.html" published: "2004-12-02T18:48:00" updated: "2004-12-02T18:48:00" tags: ["Blogging"] author: "Roy Osherove" description: "Don't forget that Tuesday the 7th of this month is Geek Dinner day with Johanna Rothman ! make time around 7-30 pm somewhere in the tel-Aviv area. Probably near the \"dolfinarium\" somewhere because it's close to her…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # This Tuesday is Israel Geek Dinner Day with Johanna Rothman By Roy Osherove December 2, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published December 2, 2004; technical details may be outdated. Don't forget that Tuesday the 7th of this month is Geek Dinner day with [Johanna Rothman](http://www.jrothman.com/weblog/blogger.html)! make time around 7-30 pm somewhere in the tel-Aviv area. Probably near the "dolfinarium" somewhere because it's close to her hotel. In any case, be prepared!! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Dec 15, 2004 ### [A highly primitive solution for fighting .Text blog spam - an outlook script](https://osherove.com/blog/2004/12/15/a-highly-primitive-solution-for-fighting-text-blog-spam-an-o.html) - Dec 5, 2004 ### [Blogger dinner with Johanna Rothman - Rescheduled](https://osherove.com/blog/2004/12/5/blogger-dinner-with-johanna-rothman-rescheduled.html) - Dec 2, 2004 ### [Nice Agile blog](https://osherove.com/blog/2004/12/2/nice-agile-blog.html) - Dec 2, 2004 ### [TestDriven.Net Referrals view - in SVG format](https://osherove.com/blog/2004/12/2/testdrivennet-referrals-view-in-svg-format.html) --- title: "Nice Agile blog" url: "https://osherove.com/blog/2004/12/2/nice-agile-blog.md" canonical: "https://osherove.com/blog/2004/12/2/nice-agile-blog.html" published: "2004-12-02T18:40:00" updated: "2004-12-02T18:40:00" tags: ["Agile Related", "Blogging"] author: "Roy Osherove" description: "I came upon this weblog via TestDriven.Net . After sifting through the posts a bit I added it to my RSS subscription list. Recommended. It's a definite \"Agile development\" themed blog, and has a lot of experience and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice Agile blog By Roy Osherove December 2, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related), [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published December 2, 2004; technical details may be outdated. I came upon [this weblog](http://weblogs.asp.net/jsgreenwood/) via [TestDriven.Net](http://www.testdriven.net/). After sifting through the posts a bit I added it to my RSS subscription list. Recommended. It's a definite "Agile development" themed blog, and has a lot of experience and real life lessons to learn from. I especially liked [this blog post](http://weblogs.asp.net/jsgreenwood/archive/2004/10/17/243639.aspx) about the (non)differences in SOA and Agile world views and how to mitigate them both to work with each other. Here's a nice quote from it: _"Service Oriented Architecture (SOA) and Agile - two of the current "hot topics" in IT.  The interesting thing is that even though they're fundamentally different - one being a set of architectural principles, the other a set of methodology principles, one of the key goals and benefits of both is enabling change._ _Now, there are clearly differences in the goals (enterprise integration vs. fail early, etc.), but that's beyond the scope of this entry.  What this is about is that these are two sets of principles that are both useful and appropriate in today's technology landscape.  So, a natural situation to arrive at is where you want to transform a company to use both Agile and SOA.  This raises an interesting issue, though..."_ Insightful_!_ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Dec 7, 2004 ### [Mockpp - Mock Objects for C++](https://osherove.com/blog/2004/12/7/mockpp-mock-objects-for-c.html) - Dec 5, 2004 ### [Extending NUnit \*easily\* with version 2.2.1 (finally!)](https://osherove.com/blog/2004/12/5/extending-nunit-easily-with-version-221-finally.html) - Dec 2, 2004 ### [Test Driven Development proves useful at Google](https://osherove.com/blog/2004/12/2/test-driven-development-proves-useful-at-google.html) - Dec 2, 2004 ### [Test Driven Development with C++: Much harder than it should be](https://osherove.com/blog/2004/12/2/test-driven-development-with-c-much-harder-than-it-should-be.html) --- title: "Test Driven Development proves useful at Google" url: "https://osherove.com/blog/2004/12/2/test-driven-development-proves-useful-at-google.md" canonical: "https://osherove.com/blog/2004/12/2/test-driven-development-proves-useful-at-google.html" published: "2004-12-02T18:10:00" updated: "2004-12-02T18:10:00" tags: ["Agile Related"] author: "Roy Osherove" description: "This is a live blogging session from the recent Developer Testing Conference. The lecture was about Developer Testing in Google and this is only part of it: \" 9:28 Standard Google practices include unit tests and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven Development proves useful at Google By Roy Osherove December 2, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published December 2, 2004; technical details may be outdated. This is a live blogging session from the recent Developer Testing Conference. The lecture was about [Developer Testing in Google](http://www.developertesting.com/archives/200411/LiveBlogFromDeveloperTestingForum.html#DTG) and this is only part of it: "_9:28 Standard Google practices include unit tests and functional tests, continuous builds, last known good build, release brances with authorized bug fix check-ins, focused teams for release engineering, production engineering and QA, bug tracking and logging of production runs._ _9:30 Google brings in XP consultants to educate engineers, employs extreme feedback mechanisms like monitors and ambient orbs for visual feedback. They have specialized test and analysis tools during production and prior to production. Sometimes, they have fix-it weeks for fixing bugs, writing tests, improving documentation, etc._ _9:32 When Google introduced XP to improve quality and other metrics, they hired a team of XP consultants and paired consultants with engineers. They created short projects for the employees with testing/XP as a theme. The teams focused on understanding code base and building good unit tests, and other TDD aspects. How to use infrastructure such as JUnit. XP was introduced at Google about 8 months ago. Engineers are not forced to use XP, but XP adoption is going well. Already, they have seen improvements in key metrics and in stability._ _9:37 First steps were to build functional tests for existing code, develop tests that fail for bugs in the bugs database, unit tests for existing servlet handlers, unit tests and TDD for new code, and fix-it weeks devoted to developing unit tests and functional tests._ _9:40 current status: very stable builds due to unit tests, better stability in backwards compatibility due to unit and functional tests. More TDD in future, with many more tests. Goal is to get to a stage where XP and testing offers benefits beyond build stability and backwards compatibility--much more quality in production software._ " \[via [TestDriven.Com](http://www.testdriven.com/modules/news/article.php?storyid=222)\] ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Dec 5, 2004 ### [Extending NUnit \*easily\* with version 2.2.1 (finally!)](https://osherove.com/blog/2004/12/5/extending-nunit-easily-with-version-221-finally.html) - Dec 2, 2004 ### [Nice Agile blog](https://osherove.com/blog/2004/12/2/nice-agile-blog.html) - Dec 2, 2004 ### [Test Driven Development with C++: Much harder than it should be](https://osherove.com/blog/2004/12/2/test-driven-development-with-c-much-harder-than-it-should-be.html) - Nov 29, 2004 ### [Test Driven Development workshop news and coming attractions](https://osherove.com/blog/2004/11/29/test-driven-development-workshop-news-and-coming-attractions.html) --- title: "TestDriven.Net Referrals view - in SVG format" url: "https://osherove.com/blog/2004/12/2/testdrivennet-referrals-view-in-svg-format.md" canonical: "https://osherove.com/blog/2004/12/2/testdrivennet-referrals-view-in-svg-format.html" published: "2004-12-02T17:49:00" updated: "2004-12-02T17:49:00" tags: ["Blogging"] author: "Roy Osherove" description: "Wow. Jamie has added a cool new feature to the TestDriven.Net site. You can now see the list of referrals you sent in by links. It looks a little something like this: I found out after getting an email from the site…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TestDriven.Net Referrals view - in SVG format By Roy Osherove December 2, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published December 2, 2004; technical details may be outdated. Wow. Jamie has added a cool new feature to the [TestDriven.Net](http://www.testdriven.net/Default.aspx?ReferrerId=112) site. You can now see the list of referrals you sent in by links. It looks a little something like this: I found out after getting an email from the site that I was added to the "Referrers" role(looks like he's slowly working his way through the referring user list to add them to this role). After logging in I saw a new "referrals" link on top and got a link to download either an image or an [SVG](http://www.adobe.com/svg/overview/svg.html) file. An SVG file is a new format for displaying graphics which is based on XML. You can view it using free SVG viewers  ( used [the free one from Adobe](http://www.adobe.com/svg/viewer/install/main.html)). Cool work Jamie! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Dec 2, 2004 ### [This Tuesday is Israel Geek Dinner Day with Johanna Rothman](https://osherove.com/blog/2004/12/2/this-tuesday-is-israel-geek-dinner-day-with-johanna-rothman.html) - Dec 2, 2004 ### [Nice Agile blog](https://osherove.com/blog/2004/12/2/nice-agile-blog.html) - Nov 29, 2004 ### [Making your point, Santo style](https://osherove.com/blog/2004/11/29/making-your-point-santo-style.html) - Nov 29, 2004 ### [Israeli Geek Dinner with Johanna Rothman](https://osherove.com/blog/2004/11/29/israeli-geek-dinner-with-johanna-rothman.html) --- title: "Test Driven Development with C++: Much harder than it should be" url: "https://osherove.com/blog/2004/12/2/test-driven-development-with-c-much-harder-than-it-should-be.md" canonical: "https://osherove.com/blog/2004/12/2/test-driven-development-with-c-much-harder-than-it-should-be.html" published: "2004-12-02T16:50:00" updated: "2004-12-02T16:50:00" tags: ["Agile Related"] author: "Roy Osherove" description: "(BTW: Does anyone have any knowledge of the C++ testing frameworks listed here at the bottom of the page? Got any favorite?) One of the things I'm doing right now in Magen is helping a company that uses hard core C++…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven Development with C++: Much harder than it should be By Roy Osherove December 2, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published December 2, 2004; technical details may be outdated. _(BTW: Does anyone have any knowledge of the C++ testing frameworks_ [_listed here_](http://tejasconsulting.com/open-testware/feature/unit-test-tool-survey.html) _at the bottom of the page? Got any favorite?)_ One of the things I'm doing right now in Magen is helping a company that uses hard core C++ for various networking and conferencing software move to a more agile oriented development regime. As part of that they are learning Test Driven Development - in C++. There are a few things I can say about this. Mainly that it's a struggle all the way through. The fact is that I've never been a C++ wonk and so I'm having some difficulty adjusting to the way things are done in in this language. Add to that that: - [CPPUnit](http://cppunit.sourceforge.net/) is the framework of choice for C++ (at least that I know of). - There are no refactoring tools for C++ - Visual C++ 6.0 is horrendous to work with. Lack of usability is apparent in everything. Some of the early conclusions so far: - Creating unit tests in C++ is done by inheritance (no attributes to speak of) and by using special macros to manually add your test cases and test fixtures into the unit test runner - The only way we could figure out so far on how to run the unit tests is by manually using the test runner objects from within the main method (which means we are bound to using a console application) - Documentation on how to make a project that uses the GUI test runner is practically non-existent. Only a small sample comes with CPPUnit and it's hard to decipher. - It pretty much works the same way like NUnit but you have much less - types of assertions - "attributes" for example, no such thing as testFixtureSetup or TestFixtureTearDown methods to override from the base class - ease of use - at least 4 steps needed to create a new unit test So overall this leads to some facts: - If its harder to write tests in C++, less people are likely to do it. - If it's harder to refactor code, less people will do it (this is more an issue with the tools - VC++ 6.0) - Agile wok in C++ is **much harder** but I can honestly say **it does not have to be**. Sadly it doesn't look like there's any sort of agile innovation in this territory. CPPUnit is not getting any new features soon, and something like the NUnit-Addin in C++ is nothing but a dream. That sucks because there is **a lot** of code out there being written in C++. Has this suddenly become some sort of "second class" platform for agile tools? If so it could have some sort of explanation. Mainly that could be that when going agile you want as much productivity as you possibly cam and so automatically turn to RAD-oriented tools and IDEs. C++ has never been considered as such. But that could change. If an Add-in like [Visual -Assist](http://www.wholetomato.com/) is so smart, it could easily add refactoring features to the platform. CPPUnit and variants cold be written to more easily run form a GUI. More and better documentation and blogs could be written on these issues. And to finish off, here's something I found on my search for a Mock object framework for C++ . [This guy tells it like it is](http://binkley.blogspot.com/2004_10_01_binkley_archive.html) and one could easily replace "Java" with ".Net": _"What happened to the joy of C++? And wasn't_ [_the moo book_](https://www.amazon.com/exec/obidos/tg/detail/-/0201423391/103-2951998-3557461 "ruminations on c++ : a decade of programming insight and experience") _a gas? Clearly_ [_I enjoy the stuff_](http://binkley.blogspot.com/2003/09/proxied-data-members.html "proxied data members")_. But now I hate C++. The explanation is easy: tools._ _After a solid year of_ [_Java at its finest_](http://blogs.thoughtworks.com/ "thoughtblogs")_, returning to C++ and no good unit test libraries (_[_CPPUnit_](http://cppunit.sourceforge.net/) _being about it), no_ [_mock objects_](http://easymock.org/)_, no_ [_IDEA_](http://www.jetbrains.com/) _or decent_ [_Eclipse support_](http://www.eclipse.org/)_, no_ [_ant_](http://ant.apache.org/) _or_ [_maven_](http://maven.apache.org/)_, no_ [_good coverage tools_](http://www.jcoverage.com/)_, no good code analysis, no_ [_good dependency analysis_](http://www.clarkware.com/software/jdepend.html) _on and on and on. **Tools make the programmer.** And C++ has dog food for tools compared to the wealth of open-source projects for Java. Now that I'm working on a C++ project, my development efforts are at least doubled for the same work, and I continually feel that I am leaving imporant parts of_ [_best practices_](http://extremeprogramming.org/) _out of the picture. Nor does it look like that's about to change anytime."_ _\[update: looks like people_ [_are actually looking for Agile C++ developers_](http://www.braithwaite-lee.com/weblog/2004/07/wanted-agile-c-wizard.html)_. I bet those are really hard to find these days\]_ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Dec 2, 2004 ### [Nice Agile blog](https://osherove.com/blog/2004/12/2/nice-agile-blog.html) - Dec 2, 2004 ### [Test Driven Development proves useful at Google](https://osherove.com/blog/2004/12/2/test-driven-development-proves-useful-at-google.html) - Nov 29, 2004 ### [Test Driven Development workshop news and coming attractions](https://osherove.com/blog/2004/11/29/test-driven-development-workshop-news-and-coming-attractions.html) - Nov 29, 2004 ### [TestDriven.Net version 1.0 is out (with a new site design as well)](https://osherove.com/blog/2004/11/29/testdrivennet-version-10-is-out-with-a-new-site-design-as-we.html) --- title: "MSN Spaces Launches, and so does a new MSN Messenger beta" url: "https://osherove.com/blog/2004/12/2/msn-spaces-launches-and-so-does-a-new-msn-messenger-beta.md" canonical: "https://osherove.com/blog/2004/12/2/msn-spaces-launches-and-so-does-a-new-msn-messenger-beta.html" published: "2004-12-02T15:58:00" updated: "2004-12-02T15:58:00" tags: ["Off Topic"] author: "Roy Osherove" description: "As I'm sure you'll see 1000 times in the next 24 hours, MSN Spaces has launched (as has a new beta of MSN Messenger ). Dare has some more details, as well as a link to the press release here . [via FurryGoat ] I already…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSN Spaces Launches, and so does a new MSN Messenger beta By Roy Osherove December 2, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 2, 2004; technical details may be outdated. _As I'm sure you'll see 1000 times in the next 24 hours,_ [_MSN Spaces_](http://spaces.msn.com/) _has launched (as has a_ [_new beta of MSN Messenger_](http://messenger.msn.com/beta)_)._ [_Dare_](http://www.25hoursaday.com/weblog/default.aspx) _has some more details, as well as a link to the_ [_press release here_](http://www.microsoft.com/presspass/press/2004/dec04/12-01MSNWave10PR.asp)_._ \[via [FurryGoat](http://www.furrygoat.com/2004/12/msn_spaces.html)\] I already opened a test blog on there, ~but gosh darn it, no RSS feed??~ Found it on the to of the page "Syndicate this site". I'd say that this design makes for it hard to find. they definitely need an "XML or "RSS" or "Syndicate" icon on there.. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 3, 2004 ### [Oracle: Don't hate it just because you don't get it, get it?](https://osherove.com/blog/2004/12/3/oracle-dont-hate-it-just-because-you-dont-get-it-get-it.html) - Dec 2, 2004 ### [The Gaming industry turns out to be a modern slave market](https://osherove.com/blog/2004/12/2/the-gaming-industry-turns-out-to-be-a-modern-slave-market.html) - Dec 2, 2004 ### [Israel .Net Deep Dive lectures feedback](https://osherove.com/blog/2004/12/2/israel-net-deep-dive-lectures-feedback.html) - Nov 30, 2004 ### [The Incredibles](https://osherove.com/blog/2004/11/30/the-incredibles.html) --- title: "Some real world unit testing techniques for ASP.Net with Cassini" url: "https://osherove.com/blog/2004/12/2/some-real-world-unit-testing-techniques-for-aspnet-with-cass.md" canonical: "https://osherove.com/blog/2004/12/2/some-real-world-unit-testing-techniques-for-aspnet-with-cass.html" published: "2004-12-02T14:58:00" updated: "2004-12-02T14:58:00" tags: [] author: "Roy Osherove" description: "Scott Hanselman writes This fine blog post about how they do real-world unit testing for their ASP.Net applications using the cassini web server. Not being an web developer myself this is a great resource to learn from.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some real world unit testing techniques for ASP.Net with Cassini By Roy Osherove December 2, 2004 **Historical article** · Originally published December 2, 2004; technical details may be outdated. Scott Hanselman writes [This fine blog post](http://www.hanselman.com/blog/default.aspx?date=2004-11-30) about how they do real-world unit testing for their ASP.Net applications using the [cassini](http://asp.net/Projects/Cassini/Download/Default.aspx?tabindex=0&tabid=1) web server. Not being an web developer myself this is a great resource to learn from. Scott does a fine job of exposing his methods to make the tests self contained to be run on a build server not even requiring IIS installed to be able to run. very nice. \[via [Larkware](http://www.larkware.com/dg2/TheDailyGrind512.html)\] --- title: "Israel .Net Deep Dive lectures feedback" url: "https://osherove.com/blog/2004/12/2/israel-net-deep-dive-lectures-feedback.md" canonical: "https://osherove.com/blog/2004/12/2/israel-net-deep-dive-lectures-feedback.html" published: "2004-12-02T09:48:00" updated: "2004-12-02T09:48:00" tags: ["Off Topic"] author: "Roy Osherove" description: "If you attended the .Net Deep Dive event in Israel you might have noticed something - Microsoft didn't really ask you what you thought about the quality of the lectures. As one of the people who actually spoke at the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel .Net Deep Dive lectures feedback By Roy Osherove December 2, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 2, 2004; technical details may be outdated. If you attended the [.Net Deep Dive event in Israel](http://teched.magen.com/events/event.aspx?EventID=15089) you might have noticed something - Microsoft didn't really ask you what you thought about the quality of the lectures. As one of the people who actually spoke at the event that pretty much sucks, cause I don't get any real feedback on what could be done better or what was missing and a whole slew of other things. It also sucks for Microsoft cause they don't know what topics the audience was was interested in, and it makes it harder for them to target those topics next time. And of course,  if I get good feedback on a lecture, I can always come to Microsoft and say "_Hey, listen, I got some great feedback on this lecture, let's do an **advanced** lecture next time on this topic, or maybe even a user group on this range of topics (hint!)"_  . So anyway - [Yosi](http://blogs.msdn.com/yosit) sent me a link that lets you \*finally\* do exactly that: so [Go tell us what you thought about the lectures!](http://www.microsoft.com/israel/events/default.aspx?pageType=4&idType=3&id=158) It's important to everyone so take 3 minutes and do it, will ya? Oh, and if you have friends that were there but do not read my blog, forward this URL to them and ask them to do the same. Tell them it's for the greater good. Tell them it's _for me_ :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 2, 2004 ### [The Gaming industry turns out to be a modern slave market](https://osherove.com/blog/2004/12/2/the-gaming-industry-turns-out-to-be-a-modern-slave-market.html) - Dec 2, 2004 ### [MSN Spaces Launches, and so does a new MSN Messenger beta](https://osherove.com/blog/2004/12/2/msn-spaces-launches-and-so-does-a-new-msn-messenger-beta.html) - Nov 30, 2004 ### [The Incredibles](https://osherove.com/blog/2004/11/30/the-incredibles.html) - Nov 29, 2004 ### [Making your point, Santo style](https://osherove.com/blog/2004/11/29/making-your-point-santo-style.html) --- title: "IVBUG meeting today: SQL Server 2005 Features for developers" url: "https://osherove.com/blog/2004/12/1/ivbug-meeting-today-sql-server-2005-features-for-developers.md" canonical: "https://osherove.com/blog/2004/12/1/ivbug-meeting-today-sql-server-2005-features-for-developers.html" published: "2004-12-01T07:43:00" updated: "2004-12-01T07:43:00" tags: [] author: "Roy Osherove" description: "There's an IVBUG meeting today. Should be fun!: Next Meeting: Wednesday December 1, 2004 17:30 - 18:00 Assembly 18:00 - 18:10 Introduction and Birthday Greetings 18:10 - 19:30 “New Features for Developers in SQL Server…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # IVBUG meeting today: SQL Server 2005 Features for developers By Roy Osherove December 1, 2004 **Historical article** · Originally published December 1, 2004; technical details may be outdated. There's an [IVBUG](http://www.renaissance.co.il/ivbug) meeting today. Should be fun!: [Next Meeting: Wednesday December 1, 2004](http://www.renaissance.co.il/ivbug/) 17:30 - 18:00   Assembly 18:00 - 18:10    Introduction and Birthday Greetings 18:10 - 19:30    “New Features for Developers in SQL Server 2005 – Part 1"                         Dubi Lebel, Microsoft Israel 19:30 - 19:45    Break 19:45 – 20:00   "Hatzilu !"                         Open session, with questions and answers/ideas from everyone 20:00 – 21:00   “New Features for Developers in SQL Server 2005 – Part 2"                         Dubi Lebel, Microsoft Israel --- title: "The Incredibles" url: "https://osherove.com/blog/2004/11/30/the-incredibles.md" canonical: "https://osherove.com/blog/2004/11/30/the-incredibles.html" published: "2004-11-30T22:45:00" updated: "2004-11-30T22:45:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Wow! Go see it." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Incredibles By Roy Osherove November 30, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 30, 2004; technical details may be outdated. Wow! Go see it. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 2, 2004 ### [MSN Spaces Launches, and so does a new MSN Messenger beta](https://osherove.com/blog/2004/12/2/msn-spaces-launches-and-so-does-a-new-msn-messenger-beta.html) - Dec 2, 2004 ### [Israel .Net Deep Dive lectures feedback](https://osherove.com/blog/2004/12/2/israel-net-deep-dive-lectures-feedback.html) - Nov 29, 2004 ### [Making your point, Santo style](https://osherove.com/blog/2004/11/29/making-your-point-santo-style.html) - Nov 29, 2004 ### [Geek Dinner was juust fine...](https://osherove.com/blog/2004/11/29/geek-dinner-was-juust-fine.html) --- title: "Making your point, Santo style" url: "https://osherove.com/blog/2004/11/29/making-your-point-santo-style.md" canonical: "https://osherove.com/blog/2004/11/29/making-your-point-santo-style.html" published: "2004-11-29T23:37:00" updated: "2004-11-29T23:37:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Addy Santo makes an interesting point in the \"what-the-hell-are-we-going-to-do-about-the-main-feed-of-this-site\" question. Actually, he makes a point of what not to keep doing." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Making your point, Santo style By Roy Osherove November 29, 2004 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 29, 2004; technical details may be outdated. [Addy Santo makes an interesting point](http://weblogs.asp.net/asanto/archive/2004/11/29/271458.aspx) in the "what-the-hell-are-we-going-to-do-about-the-main-feed-of-this-site" question. Actually, he makes a point of what not to keep doing. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Dec 2, 2004 ### [Nice Agile blog](https://osherove.com/blog/2004/12/2/nice-agile-blog.html) - Dec 2, 2004 ### [TestDriven.Net Referrals view - in SVG format](https://osherove.com/blog/2004/12/2/testdrivennet-referrals-view-in-svg-format.html) - Nov 29, 2004 ### [Israeli Geek Dinner with Johanna Rothman](https://osherove.com/blog/2004/11/29/israeli-geek-dinner-with-johanna-rothman.html) - Nov 29, 2004 ### [Geek Dinner was juust fine...](https://osherove.com/blog/2004/11/29/geek-dinner-was-juust-fine.html) --- title: "Test Driven Development workshop news and coming attractions" url: "https://osherove.com/blog/2004/11/29/test-driven-development-workshop-news-and-coming-attractions.md" canonical: "https://osherove.com/blog/2004/11/29/test-driven-development-workshop-news-and-coming-attractions.html" published: "2004-11-29T22:30:00" updated: "2004-11-29T22:30:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Just a little something before I go to bed and try to fall asleep helplessly for 3 hours while thinking about tomorrow, which is the first day of my mentoring a C++ group of 3 people in the ways of unit testing for fun…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven Development workshop news and coming attractions By Roy Osherove November 29, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published November 29, 2004; technical details may be outdated. Just a little something before I go to bed and try to fall asleep helplessly for 3 hours while thinking about tomorrow, which is the first day of my mentoring a C++ group of 3 people in the ways of unit testing for fun and profit (mind you - I have no real C++ background, it's going to be a dialog rather than a monologue where the two sides learn from each other) I've gotten several emails after the .Net Deep Dive event expressing interest in joining the next TDD community workshop at [Magen](http://www.magen.com/). That's wonderful. Just letting you know I'm working on a date and will let you know what's up with that. If you want to join these free 3 hour workshops in which you hear a little talk than do a little program hands on using NUnit in a test-driven sort of way email me at **\[email removed\]**. If you are interested in attending an Agile user group meeting sometime in the near future, email me to **\[email removed\]** (I've gotten several emails on that front as well so things are getting warmer in this area) If your company is interested in doing **hands on workshops at your place** (that's not free of course) either in Israel or abroad, contact me to **\[email removed\]** and we'll talk. Won't be the first time I've done this so nothing to be scared of. Cheers, and have a great night while I try and fall asleep. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Dec 2, 2004 ### [Test Driven Development proves useful at Google](https://osherove.com/blog/2004/12/2/test-driven-development-proves-useful-at-google.html) - Dec 2, 2004 ### [Test Driven Development with C++: Much harder than it should be](https://osherove.com/blog/2004/12/2/test-driven-development-with-c-much-harder-than-it-should-be.html) - Nov 29, 2004 ### [TestDriven.Net version 1.0 is out (with a new site design as well)](https://osherove.com/blog/2004/11/29/testdrivennet-version-10-is-out-with-a-new-site-design-as-we.html) - Nov 27, 2004 ### [Can Agile project management software succeed?](https://osherove.com/blog/2004/11/27/can-agile-project-management-software-succeed.html) --- title: "Israeli Geek Dinner with Johanna Rothman" url: "https://osherove.com/blog/2004/11/29/israeli-geek-dinner-with-johanna-rothman.md" canonical: "https://osherove.com/blog/2004/11/29/israeli-geek-dinner-with-johanna-rothman.html" published: "2004-11-29T22:04:00" updated: "2004-11-29T22:04:00" tags: ["Blogging"] author: "Roy Osherove" description: "Mark your calendars. There's going to be another geek/nerd dinner. And it's going to be on the 7th of December (a week from now). The guest of honor will be Johanna Rothman . Johanna is perhaps best known in the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israeli Geek Dinner with Johanna Rothman By Roy Osherove November 29, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published November 29, 2004; technical details may be outdated. Mark your calendars. There's going to be another geek/nerd dinner. And it's going to be on the **7th of December** (a week from now). The guest of honor will be [Johanna Rothman](http://www.jrothman.com/). Johanna is perhaps best known in the blogsphere for the two excellent blogs that she produces, both relating to technology and management: [Hiring Technical People](http://www.jrothman.com/weblog/htpblogger.html), and [Managing Product Development](http://www.jrothman.com/weblog/blogger.html). If you don't know these blogs you should start reading them. She writes very eloquently about topics we all should be caring more about, but usually don't have someone to ask about. Other than that she's authored some very interesting books on these subjects ([here](https://www.amazon.com/exec/obidos/ASIN/0932633595/iserializable-20) and [here](https://www.amazon.com/exec/obidos/ASIN/0971323194/iserializable-20)), is a national speaker in PM events and does talks all around the globe. She'll be coming to Israel for a week, and this is the second time that we will be grabbing her for a chat and a dinner. [Last time was very very interesting](http://weblogs.asp.net/rosherove/archive/2004/05/10/128801.aspx). So - like I said - mark your calendars. What's she doing here you ask? She's doing a week's teaching at SELA university. Now here's a question - why isn't Sela doing some blogging? If they had a blog about this I'd be linking to it right now and probably generating some good profits their way. Oh well, their loss. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Dec 2, 2004 ### [TestDriven.Net Referrals view - in SVG format](https://osherove.com/blog/2004/12/2/testdrivennet-referrals-view-in-svg-format.html) - Nov 29, 2004 ### [Making your point, Santo style](https://osherove.com/blog/2004/11/29/making-your-point-santo-style.html) - Nov 29, 2004 ### [Geek Dinner was juust fine...](https://osherove.com/blog/2004/11/29/geek-dinner-was-juust-fine.html) - Nov 7, 2004 ### [What blogs are other people reading?](https://osherove.com/blog/2004/11/7/what-blogs-are-other-people-reading.html) --- title: "TestDriven.Net version 1.0 is out (with a new site design as well)" url: "https://osherove.com/blog/2004/11/29/testdrivennet-version-10-is-out-with-a-new-site-design-as-we.md" canonical: "https://osherove.com/blog/2004/11/29/testdrivennet-version-10-is-out-with-a-new-site-design-as-we.html" published: "2004-11-29T21:29:00" updated: "2004-11-29T21:29:00" tags: [".Net Quotations", "Agile Related", "Cool Tools"] author: "Roy Osherove" description: "Jamie Has Finally released the long anticipated version 1.0 of the TestDriven.Net add-in (Formerly called \"Nunit-Addin\") and has a brand new spiffy site design to go along with it. If you don't know what this is you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TestDriven.Net version 1.0 is out (with a new site design as well) By Roy Osherove November 29, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 29, 2004; technical details may be outdated. [Jamie](http://weblogs.asp.net/nunitaddin) Has Finally released the long anticipated version 1.0 of the [TestDriven.Net](http://www.testdriven.net/Default.aspx?ReferrerId=112) add-in (Formerly called "Nunit-Addin") and has a brand new spiffy site design to go along with it. If you don't know what this is you should go and download this immediately. It is by far one of the most time saving and productivity enhancing tools I've seen with regards to unit testing, and can even  be used for various debugging purposes even if you have no idea what NUnit means. To top all this off, the tool is absolutely free to download and use. Thanks Jamie. Youv'e done a wonderful job with this. Some of the features that make this a cool-tool in my book: - Easily start debugging and stepping into **any** parameterless method, be it private or public, without needing to create various console projects to drive your code. For example, you can just create a class library project, put a breakpoint on some method in your class, right click inside it, and select "Test with->Debugger". Very cool. - Right click and test your Unit Tests (be it Nunit,csUnit, MbUnit) in any vs.net edition (2002, 2003 and even 2005) and see the test results inside vs.net - More stuff inside it, but these are the main things I use every day [Go get it!](http://www.testdriven.net/Default.aspx?ReferrerId=112)  _(There's a referrer ID in the link above  just so it would be fun to keep track of how many people I've reffered to the site, I do not get paid for this in any way)_ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 3, 2005 ### [\[WebCast\] The Elixir and Alchemy projects - Outlook Integration with Siebel at Microsoft](https://osherove.com/blog/2005/1/3/webcast-the-elixir-and-alchemy-projects-outlook-integration.html) - Dec 7, 2004 ### [Small but useful SQL tips from SQLJunkies](https://osherove.com/blog/2004/12/7/small-but-useful-sql-tips-from-sqljunkies.html) - Nov 7, 2004 ### [Mitigating malicious plug-ins in your application](https://osherove.com/blog/2004/11/7/mitigating-malicious-plug-ins-in-your-application.html) - Nov 1, 2004 ### [What's up?](https://osherove.com/blog/2004/11/1/whats-up.html) --- title: "Geek Dinner was juust fine..." url: "https://osherove.com/blog/2004/11/29/geek-dinner-was-juust-fine.md" canonical: "https://osherove.com/blog/2004/11/29/geek-dinner-was-juust-fine.html" published: "2004-11-29T18:09:00" updated: "2004-11-29T18:09:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Last night, as promised, Addy Santo Gave his talk about InfoPath at the . Net Architects users group . I have to say that for a subject which is “not so sexy to begin with” as a colleague of mine said, Addy made for a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Geek Dinner was juust fine... By Roy Osherove November 29, 2004 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 29, 2004; technical details may be outdated. Last night, as promised, [Addy Santo](http://weblogs.asp.net/asanto) Gave his talk about InfoPath at the .[Net Architects users group](http://www.microsoft.com/israel/events/default.aspx?pageType=1&idType=1&id=28). I have to say that for a subject which is “not so sexy to begin with” as a colleague of mine said, Addy made for a very interesting lecture, and I can certainly see a future for this thing.  Some cool demos were shown but the most important thing for me was to realize how easy it was to do some of the things that are so “not so easy as pie” to achieve with today’s tools – stuff like posting to a web service, getting data back, showing it and putting data validation on it. Very cool. After that we went to dinner at the El-Gaucho Restaurant in Tel-Aviv. We ended up only four people as lots of people who promised they would be there were a no-show. Too bad – you missed out on some great conversation on the inner workings of Microsoft, architecture, gadgets and technology in general (we also talked about other bloggers as if we were a bunch of old women knitting together – I swear that’s what it felt like..) Anyway, here’s how it looked: [](https://osherove.com/Images/blog/blogdinner1.jpg) Left to right: [Ido Samuleson](http://www.dotnetjunkies.com/blog/principal), [Ido Tandy](http://dotnetjunkies.com/WebLog/IdoTandy/), Myself, and [Addy](http://weblogs.asp.net/asanto). **Before the food.** This is how Addy and me looked **after the food**. Yeah, arn’t we two smug, full of themselves fellows? :) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Nov 29, 2004 ### [Making your point, Santo style](https://osherove.com/blog/2004/11/29/making-your-point-santo-style.html) - Nov 29, 2004 ### [Israeli Geek Dinner with Johanna Rothman](https://osherove.com/blog/2004/11/29/israeli-geek-dinner-with-johanna-rothman.html) - Nov 7, 2004 ### [What blogs are other people reading?](https://osherove.com/blog/2004/11/7/what-blogs-are-other-people-reading.html) - Nov 5, 2004 ### [Israeli .Net bloggers worth a read](https://osherove.com/blog/2004/11/5/israeli-net-bloggers-worth-a-read.html) --- title: "Can Agile project management software succeed?" url: "https://osherove.com/blog/2004/11/27/can-agile-project-management-software-succeed.md" canonical: "https://osherove.com/blog/2004/11/27/can-agile-project-management-software-succeed.html" published: "2004-11-27T23:06:00" updated: "2004-11-27T23:06:00" tags: ["Agile Related"] author: "Roy Osherove" description: "TargetProcess: Planning is a web project management software aimed at agile project management. It's also free to download (built for asp.net). It looks pretty cool and seems to contain most of the features needed for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Can Agile project management software succeed? By Roy Osherove November 27, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published November 27, 2004; technical details may be outdated. [TargetProcess: Planning](http://www.targetprocess.com/) is a web project management software aimed at agile project management. It's also free to download (built for asp.net). It looks pretty cool and seems to contain most of the features needed for an XP project to be managed.  There's also a nice [Agile-minded blog on the site](http://blog.targetprocess.com/). However, one thing always worries me: XP supports the notion of "Use the most basic and simple tools to manage and get feedback". You know, stuff like white boards, paper, cards. Perhaps, in a sense, managing it using software, be it agile-minded and all, arn't you still denying the whole notion of ease and simplicity? software itself makes the whole process more complex and harder to track. Will this software produce the daily meeting output on a white board? No. Will it produce a project plan on a wall with cards? no. You still need to do that _plus manage_ the whole process on your software. Be it MS project or something specifically designed for agile projects - arn't you slowing yourself down and bogging your project with unnecessary complexity? COuldn't you do just fine without it? The answer I would guess depends on the project. for me, filling out user stories from cards into my computer already sort of defies the whole idea of being able to tear it easily and redo it from scratch. You'd have to essentially do it twice -once physically and once with the mouse. The more I think about it the more I think it Will be hard to adopt such a thing. Think about it, you're essentially saying "Manage the new way of doing things using the old way of managing things", arn't you? ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 29, 2004 ### [Test Driven Development workshop news and coming attractions](https://osherove.com/blog/2004/11/29/test-driven-development-workshop-news-and-coming-attractions.html) - Nov 29, 2004 ### [TestDriven.Net version 1.0 is out (with a new site design as well)](https://osherove.com/blog/2004/11/29/testdrivennet-version-10-is-out-with-a-new-site-design-as-we.html) - Nov 24, 2004 ### [Not Invented here](https://osherove.com/blog/2004/11/24/not-invented-here.html) - Nov 12, 2004 ### [Article: Continuous Database Integration by Peter Hancock](https://osherove.com/blog/2004/11/12/article-continuous-database-integration-by-peter-hancock.html) --- title: "Head-First books from Oreilly (and free sample chapters)" url: "https://osherove.com/blog/2004/11/27/head-first-books-from-oreilly-and-free-sample-chapters.md" canonical: "https://osherove.com/blog/2004/11/27/head-first-books-from-oreilly-and-free-sample-chapters.html" published: "2004-11-27T22:21:00" updated: "2004-11-27T22:21:00" tags: ["Free book chapters"] author: "Roy Osherove" description: "Sure, the title sounds kinda nasty, but it's not. OK. I gotta admit, the new oreilly \"Head-First\" book series looks awesome. Thanks to Oleg for pointing to it. And yeah, the sample chapters do look amazingly as if Rory…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Head-First books from Oreilly (and free sample chapters) By Roy Osherove November 27, 2004 In [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published November 27, 2004; technical details may be outdated. Sure, the title sounds kinda nasty, but it's not. OK. I gotta admit, the new oreilly "Head-First" book series looks awesome. [Thanks to Oleg](http://www.tkachenko.com/blog/archives/000350.html) for pointing to it. And yeah, the sample chapters do look amazingly as if [Rory](http://www.neopoleon.com/) had done all the artwork using his tablet PC and imagination. Nice work. Check out the [head-first patterns book chapter](http://www.oreilly.com/catalog/hfdesignpat/chapter/) about the decorator pattern or the [other samples](http://headfirst.oreilly.com/). It's pretty cool. Speaking of books, [Moshe Eshel points to several online book resources](http://geekswithblogs.net/meshel/archive/2004/11/25/16004.aspx). I personally am subscribed to [safari books online](http://www.safaribooksonline.com/) which is pretty cool. ## More in Free book chapters [All posts in Free book chapters](https://osherove.com/blog/category/free-book-chapters) - Mar 19, 2005 ### [\[Free Book\]Coding Slave](https://osherove.com/blog/2005/3/19/free-bookcoding-slave.html) - Jan 11, 2005 ### [\[Free book\] .Net in samples](https://osherove.com/blog/2005/1/11/free-book-net-in-samples.html) - Apr 5, 2004 ### [Sample chapter from "The Visual Basic .NET Programming Language" available](https://osherove.com/blog/2004/4/5/sample-chapter-from-quotthe-visual-basic-net-programming-lan.html) - Mar 31, 2004 ### [VS.Net Database Projects - learn to use them (Sample chapter included)](https://osherove.com/blog/2004/3/31/vsnet-database-projects-learn-to-use-them-sample-chapter-inc.html) --- title: "Overcoming fear: My experiences from the .Net Deep Dive event" url: "https://osherove.com/blog/2004/11/27/overcoming-fear-my-experiences-from-the-net-deep-dive-event.md" canonical: "https://osherove.com/blog/2004/11/27/overcoming-fear-my-experiences-from-the-net-deep-dive-event.html" published: "2004-11-27T19:53:00" updated: "2004-11-27T19:53:00" tags: ["Off Topic"] author: "Roy Osherove" description: "[Update: Jackie Goldstein also writes about his experiences from the event (he hosted a session about worst practices in .net). Addy Santo writes more about the event on his blog. So does Moshe Eshel with lots of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Overcoming fear: My experiences from the .Net Deep Dive event By Roy Osherove November 27, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 27, 2004; technical details may be outdated. _\[Update:_ [_Jackie Goldstein_](http://weblogs.asp.net/jackieg/archive/2004/11/26/270651.aspx) _also writes about his experiences from the event (he hosted a session about worst practices in .net)._ _Addy Santo [writes more about the event](http://weblogs.asp.net/asanto/archive/2004/11/26/270733.aspx) on his blog._ _[So does Moshe Eshel](http://geekswithblogs.net/meshel/archive/2004/11/25/16014.aspx) with lots of details.\]_ It was an amazing rush to [speak last week](http://teched.magen.com/events/event.aspx?EventID=15089) in front of a crowd of a 1000 + developers. Us speakers had to be at the conference hotel at 7 am to do sound adjustments. Having been to a wedding the night before I had only slept about 2 hours, but I got up with no problem. I had an adrenalin kick with the alarm clock. When we did the sound checks the sounds guy attached a wireless microphone headset to me face. I felt a little like Madonna before a show (and I actually used this thought in my first talk). As I was entering the main lecture hall (a thousand seater) I was with awe. It was a little like entering a cathedral because it was so quiet and bit and empty and full of seats. It felt weird and scary to realize that very soon, all these seats will be full and will look to me on stage. I kinda wanted to go home. My first lecture was coming up right after the main assembly lecture by [Yosi](http://blogs.msdn.com/yosit). That was a long and horrifying hour. My stomach was turning and I my body was yelling at me to go to the bathroom. There were no butterflies, but elephants would have been a good guess for what was going on in my gut at that time. I was wearing my MVP shirt on and this guy being me wanted to ask me a question. I could not even think clearly at this point so I politely asked him to ask me later after my talk. He didn’t seem to like that response all that much but Ohad, who sat next to me saved face and answered him for me. Hey mister. If you’re reading this please accept my apologies. Also to all those who tried to approach me after my talks and couldn’t get me to talk straight with them –sorry. I had too much on my mind and too less sleep to deal with it. In any case. Yosi kept mentioning my upcoming lectures in his talk as he was demoing some of the new functionality of VS 2005. As he was talking I started thinking of ways in which I would answer some of his demos with my own demos and that relaxed me quite a bit. But I was still nervous enough to just leave and disappear under a rock somewhere. Then Yosi finished speaking. Michal Geva called my name. I started walking up the stairs to the stage. In one second all my doubts, fears, hesitations, worries, butterflies, elephants – whatever was bothering me went away. I was faced with a simple and undeniable truth: This was going to be awesome. And fun. As I got on the stage I had already felt completely at home with the bunch of strangers in front of me. I had 5 minutes to set up my gear and get started. When the time came and I was introduced I turned on winamp and put up the starting theme of the Matrix-revolutions movie. I then put on my sunglasses and informed the audience that this lecture was going to be about cool stuff. I think they liked it. Plus the first slide was an empty screen with a large icon and the words “certified cool” on it. Oh, prior to that I asked the audience if I look like Madonna while doing a “vogue” motion in front of a 1000 people. They seemed to laugh. I took it as a yes. The [cool-tools presentation](http://weblogs.asp.net/rosherove/archive/2004/11/26/270637.aspx) went pretty smoothly. The biggest round of “ooh”s was when I showed the Refactor! Addin as it switches parameter order visually. A definite demo candidate for any lecture. I actually finished about 3 minutes ahead of time. I forgot to demo Reflector, which is an amazing miss, though I’m not sure how many developers don’t know of its existence by now. The second presentation went smoothly as well. Nothing in particular to tell about it really. It was the pause in between my two lectures that was interesting. [Addy Santo](http://weblogs.asp.net/asanto) and myself went and had lunch outside the hotel and had a really interesting conversation about geeky stuff and life in general. Did I mention that Addy will be speaking at the upcoming [.net architects user group](http://www.microsoft.com/israel/dev/netsa.asp) this Sunday? He’ll talk about InfoPath mainly. After that there’s a geek dinner at “el gaucho” in tel Aviv so feel free to drop in from 9 30 on wards. One thing I did ask the audience in the beginning of the second lecture was "If there was an Agile user group, how many would want to attend?" Sadly only 7-8 people raised their hands out of maybe 400 attendees. I should have posed the same question at the end of the lecture, I'm sure more people would have raised their hands at that point. If you are interested in attending the Agile Israel user group, send email to **\[email removed\]** and tell me. I'll add you to a growing list of participants. I also mentioned that I will start redoing the TDD workshops that we used to do at Magen for the community. Already got several emails to attend that (If you are interested in attending these free 3 hour workshops email me to **\[email removed\]**) In conclusion, this conference has been an amazing experience. Thanks for the opportunity, Yosi! It was great seeing all of you there! Thanks for dropping by and saying hi. It was great to see familiar faces :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 29, 2004 ### [Making your point, Santo style](https://osherove.com/blog/2004/11/29/making-your-point-santo-style.html) - Nov 29, 2004 ### [Geek Dinner was juust fine...](https://osherove.com/blog/2004/11/29/geek-dinner-was-juust-fine.html) - Nov 24, 2004 ### [Not Invented here](https://osherove.com/blog/2004/11/24/not-invented-here.html) - Nov 20, 2004 ### [Live .Net Rocks chat](https://osherove.com/blog/2004/11/20/live-net-rocks-chat.html) --- title: "Cool Tools Every .Net Developer should be aware of" url: "https://osherove.com/blog/2004/11/26/cool-tools-every-net-developer-should-be-aware-of.md" canonical: "https://osherove.com/blog/2004/11/26/cool-tools-every-net-developer-should-be-aware-of.html" published: "2004-11-26T09:52:00" updated: "2004-11-26T09:52:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Wow. I have lots to write about my past week, but first I owe a list of cool tools to the attendees of the .Net Deep Dive event in Israel from yesterday. Here's the list of tools I showed: (*== free) CodeSmart (add-in)…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool Tools Every .Net Developer should be aware of By Roy Osherove November 26, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 26, 2004; technical details may be outdated. Wow. I have lots to write about my past week, but first I owe a list of cool tools to the attendees of the .Net Deep Dive event in Israel from yesterday. Here's the list of tools I showed: (\*== free) - [CodeSmart](http://www.axtools.com/) (add-in) - [C# Refactory](http://www.xtreme-simplicity.net/CSharpRefactory.html) (add-in) - [Resharper](http://www.jetbrains.com/resharper) (add-in) - [CodeRush + Refactor!](http://www.devexpress.com/) (competes with resharper on many features) - [CodeSmith](http://www.ericjsmith.net/codesmith/) (\* add-in + external templating system) - [DsWatch](http://www.codeproject.com/csharp/DSWatch.asp) (\* debug your datasets - see what's inside them easily at debug time) - [The Regulator](http://regulator.sourceforge.net/) (\* debug regular expressions) - [NUnit](http://www.nunit.org/) (\* write unit tests easily) - [TestDriven.Net (a.k.a NUnit-Addin)](http://www.testdriven.net/) (\* run unit tests even more easily) - [FinalBuilder](http://www.atozedsoftware.com/finalbuilder/) (automate your build and deployment process) - [PowerMarks](http://www.kaylon.com/power.html) (share your favorites) - [Process Explorer](http://www.sysinternals.com/) (\* the ultimate task manager replacement and more) And here's a couple of tools that didn't make it into the presentation: - [Reflector](http://www.aisto.com/roeder/dotnet/) - [Dave's Quick Search Bar](http://www.dqsd.net/) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Dec 2, 2004 ### [More cool tools, and a cool Add-in for C++](https://osherove.com/blog/2004/12/2/more-cool-tools-and-a-cool-add-in-for-c.html) - Nov 29, 2004 ### [TestDriven.Net version 1.0 is out (with a new site design as well)](https://osherove.com/blog/2004/11/29/testdrivennet-version-10-is-out-with-a-new-site-design-as-we.html) - Nov 7, 2004 ### [IntelliJ IDEA keeps getting better](https://osherove.com/blog/2004/11/7/intellij-idea-keeps-getting-better.html) - Oct 15, 2004 ### [BlogMatrix: RSS news reader with podcasting reception abilities.](https://osherove.com/blog/2004/10/15/blogmatrix-rss-news-reader-with-podcasting-reception-abiliti.html) --- title: "Not Invented here" url: "https://osherove.com/blog/2004/11/24/not-invented-here.md" canonical: "https://osherove.com/blog/2004/11/24/not-invented-here.html" published: "2004-11-24T15:00:00" updated: "2004-11-24T15:00:00" tags: ["Agile Related", "Off Topic"] author: "Roy Osherove" description: "\"The product of NotInventedHere is ReinventingTheWheel which wheel unfortunately is often square, without spokes, or squeaks like heck. ..\" \"The pattern can also lead to a paradoxical situation. If the pattern is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Not Invented here By Roy Osherove November 24, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 24, 2004; technical details may be outdated. _"The product of_ [_NotInventedHere_](http://c2.com/cgi/wiki?NotInventedHere) _is_ [_ReinventingTheWheel_](http://c2.com/cgi/wiki?ReinventingTheWheel) _which wheel unfortunately is often square, without spokes, or squeaks like heck. .."_ _"The pattern can also lead to a paradoxical situation. If the pattern is applied in its strictest sense, it effectively excludes its own use. The NIH pattern has obviously been used many times before by others and may not be re-used. This would actually be of benefit in that it would thereby be self annihilating. Unfortunately we are all so flexible that the pattern is never so applied and therefore remains dangerous. --_ [_RobertPhillips_](http://c2.com/cgi/wiki?RobertPhillips)  _.."_ _\[via [the amazing wiki](http://c2.com/cgi/wiki?NotInventedHere)\]_ Well, **I** thought it was funny.. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 29, 2004 ### [TestDriven.Net version 1.0 is out (with a new site design as well)](https://osherove.com/blog/2004/11/29/testdrivennet-version-10-is-out-with-a-new-site-design-as-we.html) - Nov 27, 2004 ### [Can Agile project management software succeed?](https://osherove.com/blog/2004/11/27/can-agile-project-management-software-succeed.html) - Nov 12, 2004 ### [Article: Continuous Database Integration by Peter Hancock](https://osherove.com/blog/2004/11/12/article-continuous-database-integration-by-peter-hancock.html) - Nov 7, 2004 ### [IntelliJ IDEA keeps getting better](https://osherove.com/blog/2004/11/7/intellij-idea-keeps-getting-better.html) --- title: "More Geek Conversation you cen listen to in your car" url: "https://osherove.com/blog/2004/11/24/more-geek-conversation-you-cen-listen-to-in-your-car.md" canonical: "https://osherove.com/blog/2004/11/24/more-geek-conversation-you-cen-listen-to-in-your-car.html" published: "2004-11-24T09:53:00" updated: "2004-11-24T09:53:00" tags: ["Cool sites"] author: "Roy Osherove" description: "One of the things I liked about .Net rocks is that every so often you get to listen to a really interesting person talk about some trivia regarding some technology aspect of our daily lives. For example, the show where…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More Geek Conversation you cen listen to in your car By Roy Osherove November 24, 2004 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published November 24, 2004; technical details may be outdated. One of the things I liked about .Net rocks is that every so often you get to listen to a really interesting person talk about some trivia regarding some technology aspect of our daily lives. For example, the show where they interview [Alan Cooper](http://www.franklins.net/fnetdotnetrocks/dotnetrocks.aspx?showid=16)\- the inventor of Visual Basic, is one of those shows. Or the one with [Dan Appleman](http://www.franklins.net/fnetdotnetrocks/dotnetrocks.aspx?showid=2), or several others (I recommended you go to the [.NET rocks homepage](http://www.franklins.net/dotnetrocks/) and start listening to the early shows first  down at the bottom) So what do I do on the week where I wait for a new DNR show? Lately I've discovered ITConversations.Com. Think "Talking trivia with leading experts" only on a much larger scale. There are hundreds of conversations out there from open source gurus to security experts to A-list bloggers to conference recordings. It's all there. One just needs to sift through the mountains of material to find what they are really interested in. I've personally found a few gems which I will share with you here every now and again. The best place I've found to start looking for stuff was in the [Software Development](http://www.itconversations.com/series/programming.html) Category. YMMV. I've already burned some stuff I really liked onto Cd's so I'll point them in a CD-layout ready for listening on your way to work: CD1: - [John Udell talks about what's in our tech horizon](http://www.itconversations.com/shows/detail117.html) - [Steve Mcconnell talks about software engineering methodologies](http://www.itconversations.com/shows/detail82.html) CD2: - [Bruce Schneier (Security guru)- Beyond Fear](http://www.itconversations.com/shows/detail119.html) - [Tim O'Reilly - The Software Paradigm Shift](http://www.itconversations.com/shows/detail50.html) CD3: - [Dan Bricklin (Inventor of VisiCalc) takes us down Memory Lane (60 minutes)](http://www.itconversations.com/shows/detail192.html) And here's some stuff I plan on listening to: - [Phil Zimmermann](http://www.itconversations.com/shows/detail116.html) -- PGP Inventor - [Mike Milinkovich](http://www.itconversations.com/shows/detail167.html), executive director, Eclipse Foundation -- Eclipse ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Jan 30, 2005 ### [\[OT\] Infinite Cat](https://osherove.com/blog/2005/1/30/ot-infinite-cat.html) - Jan 30, 2005 ### [How to schedule an online meeting between totally different time zones](https://osherove.com/blog/2005/1/30/how-to-schedule-an-online-meeting-between-totally-different.html) - Oct 13, 2004 ### [TopXML releases the System.XML reference online](https://osherove.com/blog/2004/10/13/topxml-releases-the-systemxml-reference-online.html) - Oct 12, 2004 ### [Introducing "Project Distributor" - your .Net file and idea sharing ground](https://osherove.com/blog/2004/10/12/introducing-quotproject-distributorquot-your-net-file-and-id.html) --- title: "My TDD webcast yesterday was pretty fun" url: "https://osherove.com/blog/2004/11/24/my-tdd-webcast-yesterday-was-pretty-fun.md" canonical: "https://osherove.com/blog/2004/11/24/my-tdd-webcast-yesterday-was-pretty-fun.html" published: "2004-11-24T09:37:00" updated: "2004-11-24T09:37:00" tags: [".Net Original"] author: "Roy Osherove" description: "Yesterday's Israeli webcast on TDD was a blast. I mean it went fairly well and regardless of two crashes early on it went without a hitch (I ended up using Yosi Taguri's laptop to do the presentation). There were around…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My TDD webcast yesterday was pretty fun By Roy Osherove November 24, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published November 24, 2004; technical details may be outdated. Yesterday's Israeli webcast on TDD was a blast. I mean it went fairly well and regardless of two crashes early on it went without a hitch (I ended up using [Yosi Taguri's](http://blogs.msdn.com/yosit) laptop to do the presentation). There were around 90 attendees throughout the webcast and most of them found it interesting in the survey that followed. It makes me glad though I think explaining the value of TDD is much harder than to just demo it, and an hour is just not enough for people to get the real value of it. In any case - Thanks for listening. The webcast was recorded and will be available some time in the near future for your viewing pleasure.  In any case - be sure to view the [upcoming webcasts](http://www.microsoft.com/israel/events/webcasts/developers.mspx). I suspect some of them will be pretty cool. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 5, 2004 ### [Extending NUnit \*easily\* with version 2.2.1 (finally!)](https://osherove.com/blog/2004/12/5/extending-nunit-easily-with-version-221-finally.html) - Dec 2, 2004 ### [The Regulator sucks for Non-Admins](https://osherove.com/blog/2004/12/2/the-regulator-sucks-for-non-admins.html) - Nov 19, 2004 ### [News of the week - Israeli blogger edition](https://osherove.com/blog/2004/11/19/news-of-the-week-israeli-blogger-edition.html) - Nov 17, 2004 ### [Israeli .Net Deep Dive chat going on right now](https://osherove.com/blog/2004/11/17/israeli-net-deep-dive-chat-going-on-right-now.html) --- title: "The Meta Programming System - The next paradigm?" url: "https://osherove.com/blog/2004/11/21/the-meta-programming-system-the-next-paradigm.md" canonical: "https://osherove.com/blog/2004/11/21/the-meta-programming-system-the-next-paradigm.html" published: "2004-11-21T22:19:00" updated: "2004-11-21T22:19:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "I don't even know where to begin after reading this very thought provoking article by Sergey Dmitriev , one of the fathers of IntelliJ IDEA (one of my favorite IDEs). The article talks about the \"Meta Programming…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Meta Programming System - The next paradigm? By Roy Osherove November 21, 2004 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published November 21, 2004; technical details may be outdated. I don't even know where to begin after reading this [very thought provoking article by Sergey Dmitriev](http://www.onboard.jetbrains.com/articles/04/10/lop/), one of the fathers of IntelliJ IDEA (one of my favorite IDEs). The article talks about the "Meta Programming System" which I would describe to you but [Martin fowler references his article](http://martinfowler.com/bliki/MetaProgrammingSystem.html) much better that I ever could: "_\[Sergey\]_ _recently published an_ [_article_](http://www.onboard.jetbrains.com/articles/04/10/lop/) _on some exploratory development he's done called the Meta Programming System. He sees this system as an example of a broader movement which he calls Language Oriented Programming._ _My colleague Matt Foemmel and I spent some time with him last week and were very impressed with what we saw. I'm very interested in this growing movement, one that looks to build software through closely integrated sets of_ [_DomainSpecificLanguage_](http://martinfowler.com/bliki/DomainSpecificLanguage.html)_s. There's other interesting players in this space - most notably Intentional Programming and Microsoft's Whitehorse work. It's an area to keep your eye on over the next few years._ " Lots of food for thought in the article, and there's actually a Java Plugin available as prototype. I wonder how long it would take to develop such a thing in .Net. Perhaps it's a great thing to try out using the new [DSL tool](http://lab.msdn.microsoft.com/vs2005/teamsystem/workshop/dsltools/) MS released a little while ago, huh? ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Jan 13, 2005 ### [SQL Injection Attacks by Example](https://osherove.com/blog/2005/1/13/sql-injection-attacks-by-example.html) - Dec 29, 2004 ### [Comparing C++ unit testing frameworks](https://osherove.com/blog/2004/12/29/comparing-c-unit-testing-frameworks.html) - Nov 12, 2004 ### [Article: Continuous Database Integration by Peter Hancock](https://osherove.com/blog/2004/11/12/article-continuous-database-integration-by-peter-hancock.html) - Nov 7, 2004 ### [Mitigating malicious plug-ins in your application](https://osherove.com/blog/2004/11/7/mitigating-malicious-plug-ins-in-your-application.html) --- title: "Israel Geek Dinner with Addy Santo - 28.11.04" url: "https://osherove.com/blog/2004/11/21/israel-geek-dinner-with-addy-santo-281104.md" canonical: "https://osherove.com/blog/2004/11/21/israel-geek-dinner-with-addy-santo-281104.html" published: "2004-11-21T13:55:00" updated: "2004-11-21T13:55:00" tags: [] author: "Roy Osherove" description: "Finally - a new nerd dinner: (Hint: Register for the Israel Nerd Dinners RSS feed here ) taken from http://nerddinner.com/blogs/israel/archive/2004/11/21/330.aspx : Geek Dinner - 28.11.04 Mark that date! Guest of honor:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel Geek Dinner with Addy Santo - 28.11.04 By Roy Osherove November 21, 2004 **Historical article** · Originally published November 21, 2004; technical details may be outdated. Finally - a new nerd dinner: _(Hint: Register for the_ [_Israel Nerd Dinners RSS feed here_](http://nerddinner.com/blogs/israel/Rss.aspx)_)_ taken from [http://nerddinner.com/blogs/israel/archive/2004/11/21/330.aspx](http://nerddinner.com/blogs/israel/archive/2004/11/21/330.aspx): Geek Dinner  - 28.11.04 Mark that date! Guest of honor: **[Addy Santo](http://weblogs.asp.net/asanto) \- A former Israeli Developer - now a Microsoft Head**. Place: [El Gaucho Tel Aviv](http://www.elgaucho.co.il/FrameSet.asp?the_page=Branch&top_image=branch_top_image.jpg&title_image=branch_title.gif&inner_nav=Inner_nav_branch.jpg) Time: 21:45 (Right after the [.Net Architects meeting](http://www.microsoft.com/israel/dev/netsa.asp) in which he will speak about InfoPath) (The place is kosher) More details to come! --- title: "Live .Net Rocks chat" url: "https://osherove.com/blog/2004/11/20/live-net-rocks-chat.md" canonical: "https://osherove.com/blog/2004/11/20/live-net-rocks-chat.html" published: "2004-11-20T00:26:00" updated: "2004-11-20T00:26:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Since it's stag night here at Osherove mansion, I thought I'd join the live chat on .Net Rocks (which occurs at 2.30 am in Israel. We'll see how that goes. Hopefully Rory won't kick me out of the chat room. After all, I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Live .Net Rocks chat By Roy Osherove November 20, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 20, 2004; technical details may be outdated. Since it's stag night here at Osherove mansion, I thought I'd join the live chat on .Net Rocks (which occurs at 2.30 am in Israel. We'll see how that goes. Hopefully Rory won't kick me out of the chat room. After all, I wasn't officially invited ;) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 27, 2004 ### [Overcoming fear: My experiences from the .Net Deep Dive event](https://osherove.com/blog/2004/11/27/overcoming-fear-my-experiences-from-the-net-deep-dive-event.html) - Nov 24, 2004 ### [Not Invented here](https://osherove.com/blog/2004/11/24/not-invented-here.html) - Nov 16, 2004 ### [\[OT\]Productivity and lesson learning, Linux style?](https://osherove.com/blog/2004/11/16/otproductivity-and-lesson-learning-linux-style.html) - Nov 10, 2004 ### [Why does the BorCon Israel Registration page have to suck?](https://osherove.com/blog/2004/11/10/why-does-the-borcon-israel-registration-page-have-to-suck.html) --- title: "News of the week - Israeli blogger edition" url: "https://osherove.com/blog/2004/11/19/news-of-the-week-israeli-blogger-edition.md" canonical: "https://osherove.com/blog/2004/11/19/news-of-the-week-israeli-blogger-edition.html" published: "2004-11-19T17:18:00" updated: "2004-11-19T17:18:00" tags: [".Net Original"] author: "Roy Osherove" description: "Wow. What a week. I managed to pull off a user group talk at the IVCUG on Wednesday about Custom Attributes and Interception. Let me tell you, if you though the material was hard, try learning it well enough to be able…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # News of the week - Israeli blogger edition By Roy Osherove November 19, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published November 19, 2004; technical details may be outdated. Wow. What a week. I managed to pull off a user group talk at the [IVCUG](http://www.comconix.com/ivcug/) on Wednesday about Custom Attributes and Interception. Let me tell you, if you though the material was hard, try learning it well enough to be able to congest it into 75 minutes. It took me a night and a half to figure out how to approach the subject matter in a presentational way and I think I kinda pulled it off. Only 2 people seemed to be napping during the talk (which was very VERY technical) and I think I got the message across about interception in the real world. That same day, a few hours earlier, we held the first Israeli technical chat at Microsoft Israel with [.Net Deep Dive](http://teched.magen.com/events/event.aspx?EventID=15089) registered attendees.  Let's be honest - It kinda sucked. Several problem occurred - - The inability for most of the "Experts" in the chat to type Hebrew into the chat window was one of the worst. I mean - this is a Hebrew chat after all. The thing is even if an attendee asked a question in Hebrew and the expert answered them in English it didin't work - you would see Question marks instead of the attendees "quoted" question. That also means goodbye after-chat-transcripts. - People were'nt tuning in, and if they were there were very little questions being asked. Hey- get lots of smart people in a room and don't ask any question - that's just wrong, man... - Over all about 27 people were in the chat room at peak time. That's not enough. Especially considering the fact that over 2000 registrations have been made. There's definitely some lesson in there... More news about the Deep dive event: over 2000 registrations and currently, I'm ~_frightened_~ delighted to find out that about 1400 of those will be in the "Tools & Practices" course. I have to wonder if creating a presentation which involves two virtual PCs running at the same time and displaying about a dozen tools that don't necessarily play well with each other in front of 1400 people is a good idea. The demo-gods will have no mercy. In fact, I am preparing a special chant which I will do right before the first talk, audience included :) Even more news! [Addy Santo](http://weblogs.asp.net/asanto) is coming over in the coming days. I've worked with Addy a few years back and he's a wonderful guy, Ever since he took the red pill though we've seen him  almost zero times which is a shame. In any case, Addy has been working hard at MS in the whole area of smart office apps and InfoPath in particular, so it was a pleasure to find out that he will be doing a special "_InfoPath for architects_" talk in the coming .[Net Architects users group](http://www.microsoft.com/israel/dev/netsa.asp). I bet it's going to be very interesting - he's a great speaker. ~hmm. I had more to say but I'm blacking out a bit. Oh well - I have the house to myself tonight so I guess that means that my blog is getting some life-support after all :)~ **News from the wild** - [Omer talks about](http://weblogs.asp.net/okloeten/archive/2004/11/15/257678.aspx) the possible need to explicitly declare methods as final or virtual instead of letting your language of choice decide it for you. - [Oleg keeps on blogging like crazy](http://www.tkachenko.com/blog/) about all things XML. - Udi talks about the [evils of overtime](http://udidahan.weblogs.us/archives/021718.html) and I completely agree. He then also writes about [code readability](http://udidahan.weblogs.us/archives/021786.html) and quality. That means each line of code is a sentence in a paragraph. Which is kind of what I always tell people when I see their code: "Make it read like a book". It makes all the difference in the world. - Yosi Taguri asks: "[How can we make Localization  better in VS.Net?](http://blogs.msdn.com/yosit/archive/2004/11/08/253848.aspx)" I think he wants an answer in the comments. Got any answers for him? - Natty Gur keeps on [writing great posts about architecture of enterprise applications](http://weblogs.asp.net/ngur/). I wish they could be a little more readable but if you stick with it he has some amazing knowledge in the field. - [Ido Samuelson wants your take](http://dotnetjunkies.com/WebLog/principal/archive/2004/11/19/32666.aspx) on Exception Management strategies. My take to his question is "_Yes - you should have "DalExceptionBase"_ " - [Guy Sofer uploaded a small project](http://weblogs.asp.net/guys/archive/2004/11/15/257384.aspx) to GDN called [Simple Threading Queue Pool](http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=c6124f5c-257a-444a-8c49-86f062f50c84) . Interesting.. - Anatoly tells us about the "[Google Desktop search +" thingy](http://blogs.x2line.com/al/archive/2004/11/19/645.aspx). - Taras talks about : "[Flexible Renamer](http://devintelligence.com/blog/archive/2004/11/08/150.aspx)" (I just use my Total Commander) and leads to screenshots of the upcoming [MSN toolbar suite](http://devintelligence.com/blog/archive/2004/11/14/159.aspx) (sweet!) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 2, 2004 ### [The Regulator sucks for Non-Admins](https://osherove.com/blog/2004/12/2/the-regulator-sucks-for-non-admins.html) - Nov 24, 2004 ### [My TDD webcast yesterday was pretty fun](https://osherove.com/blog/2004/11/24/my-tdd-webcast-yesterday-was-pretty-fun.html) - Nov 17, 2004 ### [Israeli .Net Deep Dive chat going on right now](https://osherove.com/blog/2004/11/17/israeli-net-deep-dive-chat-going-on-right-now.html) - Nov 8, 2004 ### [Simple math with regular expressions?](https://osherove.com/blog/2004/11/8/simple-math-with-regular-expressions.html) --- title: "Israeli .Net Deep Dive chat going on right now" url: "https://osherove.com/blog/2004/11/17/israeli-net-deep-dive-chat-going-on-right-now.md" canonical: "https://osherove.com/blog/2004/11/17/israeli-net-deep-dive-chat-going-on-right-now.html" published: "2004-11-17T13:33:00" updated: "2004-11-17T13:33:00" tags: [".Net Original"] author: "Roy Osherove" description: "In case you were wondering - there is a live chat going on between the upcoming .Net Deep dive speakers and the community: http://www.microsoft.com /israel/communities/chats/dev /chatroom.aspx Feel free to join in and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israeli .Net Deep Dive chat going on right now By Roy Osherove November 17, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published November 17, 2004; technical details may be outdated. In case you were wondering - there is a live chat going on between the upcoming .Net Deep dive speakers and the community: [http://www.microsoft.com/israel/communities/chats/dev/chatroom.aspx](http://www.microsoft.com/israel/communities/chats/dev/chatroom.aspx) Feel free to join in and ask whatever you want. (in english - we have a language problem) the chat ends at 16:15. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 24, 2004 ### [My TDD webcast yesterday was pretty fun](https://osherove.com/blog/2004/11/24/my-tdd-webcast-yesterday-was-pretty-fun.html) - Nov 19, 2004 ### [News of the week - Israeli blogger edition](https://osherove.com/blog/2004/11/19/news-of-the-week-israeli-blogger-edition.html) - Nov 8, 2004 ### [Simple math with regular expressions?](https://osherove.com/blog/2004/11/8/simple-math-with-regular-expressions.html) - Oct 19, 2004 ### [Osherove.Interception 1.04 - Change return values and incoming parameter values at runtime easily](https://osherove.com/blog/2004/10/19/osheroveinterception-104-change-return-values-and-incoming-p.html) --- title: "[OT]Productivity and lesson learning, Linux style?" url: "https://osherove.com/blog/2004/11/16/otproductivity-and-lesson-learning-linux-style.md" canonical: "https://osherove.com/blog/2004/11/16/otproductivity-and-lesson-learning-linux-style.html" published: "2004-11-16T08:19:00" updated: "2004-11-16T08:19:00" tags: ["Off Topic"] author: "Roy Osherove" description: "[Warning: the following link is to an article that is _anti-Microsoft_ you've been warned ] This article is a very interesting read . On one hand I feel bad for the dude that fell into the teeth of BSA, and I feel kinda…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\]Productivity and lesson learning, Linux style? By Roy Osherove November 16, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 16, 2004; technical details may be outdated. _\[Warning: the following link is to an article that is \_anti-Microsoft\_  you've been warned__\]_ [This article is a very interesting read](http://news.com.com/2008-1082_3-5065859.html?tag=lh). On one hand I feel bad for the dude that fell into the teeth of BSA, and I feel kinda happy that in return MS got the opposite of what they wanted - less profit and bad publicity. Why is that? because (and this is only based on what I've read there is only so much I know about this so I might be wrong) it looks like they did that man an injustice and it was unfair. Hey, I love MS products but if I was in his position I don't know what I would do. _"**Has Microsoft tried to win you back?** Microsoft is a growing business with $49 billion in the bank. What do they care about me? If they cared about me, they wouldn't have approached me the way they did in the first place...And I'm glad they didn't try to get me back. I thank them for opening my eyes, because I'm definitely money ahead now and I'm definitely just as productive, and I don't have any problems communicating with my customers. So thank you, Microsoft"_ Hell, I bet there's **some** lesson to be learned from all this. All that said, some of the things that man said on the interview make me wonder if I'd ever want to work for him myself: _"...The other thing is that if you look at productivity. If you put a bunch of stuff on people's desktops they don't need to do their job, chances are they're going to use it. I don't have that problem. If all you need is word processing, that's all you're going to have on your desktop, a word processor. It's not going to have Paint or PowerPoint. I tell you what, our hits to eBay went down greatly when not everybody had a Web browser. For somebody whose job is filling out forms all day, invoicing and exporting, why do they need a Web browser? The idea that if you have 2,000 terminals they all have to have a Web browser, that's crazy. It just creates distractions. "_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 24, 2004 ### [Not Invented here](https://osherove.com/blog/2004/11/24/not-invented-here.html) - Nov 20, 2004 ### [Live .Net Rocks chat](https://osherove.com/blog/2004/11/20/live-net-rocks-chat.html) - Nov 10, 2004 ### [Why does the BorCon Israel Registration page have to suck?](https://osherove.com/blog/2004/11/10/why-does-the-borcon-israel-registration-page-have-to-suck.html) - Nov 7, 2004 ### [Perspective](https://osherove.com/blog/2004/11/7/perspective.html) --- title: "Article: Continuous Database Integration by Peter Hancock" url: "https://osherove.com/blog/2004/11/12/article-continuous-database-integration-by-peter-hancock.md" canonical: "https://osherove.com/blog/2004/11/12/article-continuous-database-integration-by-peter-hancock.html" published: "2004-11-12T11:51:00" updated: "2004-11-12T11:51:00" tags: ["Agile Related", "Cool Articles"] author: "Roy Osherove" description: "Peter Hancock has written a very interesting and real world article about his way of creating an automated database deployment task. It's not a simple thing, but it's possible with a bit of work. He's using NAnt,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Article: Continuous Database Integration by Peter Hancock By Roy Osherove November 12, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published November 12, 2004; technical details may be outdated. [Peter Hancock](http://dotnetjunkies.com/WebLog/piquet/) has written a very interesting and real world article about his way of creating an automated database deployment task. It's not a simple thing, but it's possible with a bit of work. He's using NAnt, CruiseControl.net and osql.exe. I'm planning a writeup of my own project build management experiences later, but this is very very interesting. ## [Continuous Database Integration](http://dotnetjunkies.com/WebLog/piquet/articles/31254.aspx) ## Introduction _The following article came about after reading reading_ [_Evolutionary Database Design_](http://www.martinfowler.com/articles/evodb.html) _by Martin Fowler and Pramod Sadalage.  The concepts were great, but I couldn't find anything on the web that really showed how to go about implementing it.  So I decided to have a go at it myself from the ground up.  Following is how I've managed to do it for the current project I'm working on._ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 27, 2004 ### [Can Agile project management software succeed?](https://osherove.com/blog/2004/11/27/can-agile-project-management-software-succeed.html) - Nov 24, 2004 ### [Not Invented here](https://osherove.com/blog/2004/11/24/not-invented-here.html) - Nov 7, 2004 ### [IntelliJ IDEA keeps getting better](https://osherove.com/blog/2004/11/7/intellij-idea-keeps-getting-better.html) - Nov 7, 2004 ### [The Road to Agile: a series of online presentations](https://osherove.com/blog/2004/11/7/the-road-to-agile-a-series-of-online-presentations.html) --- title: "Why does the BorCon Israel Registration page have to suck?" url: "https://osherove.com/blog/2004/11/10/why-does-the-borcon-israel-registration-page-have-to-suck.md" canonical: "https://osherove.com/blog/2004/11/10/why-does-the-borcon-israel-registration-page-have-to-suck.html" published: "2004-11-10T23:59:00" updated: "2004-11-10T23:59:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Why does a conference such as BorCon Israel have to come up with such a lame ass registration page? I mean, C'mon! The form is actually trying to send email through my email client? What - You can't demonstrate web…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why does the BorCon Israel Registration page have to suck? By Roy Osherove November 10, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 10, 2004; technical details may be outdated. Why does a conference such as [BorCon Israel](http://www.borland.co.il/BorCon_2005.htm) have to come up with such a [lame ass registration page?](http://www.borland.co.il/Form_BorCon_2005.htm) I mean, C'mon! The form is actually trying to send email through my email client? What - You can't demonstrate web pages using the Borland toolset or something? And Usabilty? Design? the page looks like a pure "_I learned HTML coding 2 weeks ago and not they are making me build this registration page_" design. You know better Borland! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 20, 2004 ### [Live .Net Rocks chat](https://osherove.com/blog/2004/11/20/live-net-rocks-chat.html) - Nov 16, 2004 ### [\[OT\]Productivity and lesson learning, Linux style?](https://osherove.com/blog/2004/11/16/otproductivity-and-lesson-learning-linux-style.html) - Nov 7, 2004 ### [Perspective](https://osherove.com/blog/2004/11/7/perspective.html) - Nov 7, 2004 ### [WTF](https://osherove.com/blog/2004/11/7/wtf.html) --- title: "Simple math with regular expressions?" url: "https://osherove.com/blog/2004/11/8/simple-math-with-regular-expressions.md" canonical: "https://osherove.com/blog/2004/11/8/simple-math-with-regular-expressions.html" published: "2004-11-08T18:00:00" updated: "2004-11-08T18:00:00" tags: [".Net Original"] author: "Roy Osherove" description: "A friend of mine (Ariel) made the bold claim that it is possible to write a regular expression (in today's languages such as .Net) that checks simple mathematical functions, for example if a number is divisible by 3. I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Simple math with regular expressions? By Roy Osherove November 8, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published November 8, 2004; technical details may be outdated. A friend of mine (Ariel) made the bold claim that it is possible to write a regular expression (in today's languages such as .Net) that checks simple mathematical functions, for example if a number is divisible by 3. I looked and looked and asked and checked and could find no mention of this. I'm not talking theoretically; I'm looking for an example that shows me this. Can you provide one? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 19, 2004 ### [News of the week - Israeli blogger edition](https://osherove.com/blog/2004/11/19/news-of-the-week-israeli-blogger-edition.html) - Nov 17, 2004 ### [Israeli .Net Deep Dive chat going on right now](https://osherove.com/blog/2004/11/17/israeli-net-deep-dive-chat-going-on-right-now.html) - Oct 19, 2004 ### [Osherove.Interception 1.04 - Change return values and incoming parameter values at runtime easily](https://osherove.com/blog/2004/10/19/osheroveinterception-104-change-return-values-and-incoming-p.html) - Oct 15, 2004 ### [Solving Team Development with web projects hell](https://osherove.com/blog/2004/10/15/solving-team-development-with-web-projects-hell.html) --- title: "Mitigating malicious plug-ins in your application" url: "https://osherove.com/blog/2004/11/7/mitigating-malicious-plug-ins-in-your-application.md" canonical: "https://osherove.com/blog/2004/11/7/mitigating-malicious-plug-ins-in-your-application.html" published: "2004-11-07T23:52:00" updated: "2004-11-07T23:52:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Plugins and security - interesting topic. barely touched. Peter shows and explains very nicely the some of the reasons and ways malicious add-ins could tamer with your application, and some very good ways of mitigating…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mitigating malicious plug-ins in your application By Roy Osherove November 7, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published November 7, 2004; technical details may be outdated. Plugins and security - interesting topic. barely touched. [Peter shows and explains very nicely](http://weblogs.asp.net/ptorr/archive/2004/11/07/253649.aspx) the some of the reasons and ways malicious add-ins could tamer with your application, and some very good ways of mitigating those risks. Bookmarked. (in fact, I'll have to use it in the Future [Regulator](http://regulator.sourceforge.net/)) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Dec 7, 2004 ### [Small but useful SQL tips from SQLJunkies](https://osherove.com/blog/2004/12/7/small-but-useful-sql-tips-from-sqljunkies.html) - Nov 29, 2004 ### [TestDriven.Net version 1.0 is out (with a new site design as well)](https://osherove.com/blog/2004/11/29/testdrivennet-version-10-is-out-with-a-new-site-design-as-we.html) - Nov 1, 2004 ### [What's up?](https://osherove.com/blog/2004/11/1/whats-up.html) - Oct 13, 2004 ### [TopXML releases the System.XML reference online](https://osherove.com/blog/2004/10/13/topxml-releases-the-systemxml-reference-online.html) --- title: "What blogs are other people reading?" url: "https://osherove.com/blog/2004/11/7/what-blogs-are-other-people-reading.md" canonical: "https://osherove.com/blog/2004/11/7/what-blogs-are-other-people-reading.html" published: "2004-11-07T23:11:00" updated: "2004-11-07T23:11:00" tags: ["Blogging"] author: "Roy Osherove" description: "I think it was a nice guy named Oren who asked me at the recent IVBUG meeting about resources where you could see what other people are subscribing to in their RSS readers. Along comes Scoble (its been months since I've…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What blogs are other people reading? By Roy Osherove November 7, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published November 7, 2004; technical details may be outdated. I think it was a nice guy named Oren who asked me at the recent [IVBUG](http://www.renaissance.co.il/ivbug/) meeting about resources where you could see what other people are subscribing to in their RSS readers. Along comes [Scoble](http://scoble.weblogs.com/) _(its been months since I've found anything really valuable there - it's gotten to be a lot like "Name Drop, Name Drop, been here, did that, got to see this,this guy likes me, this guy hates me, this one wants a link (all together now!)")_ with [this post that sums things up](http://radio.weblogs.com/0001011/2004/10/28.html#a8531) for resources of just this kind: _The_ [_Technorati Top 100 blogs list_](http://www.technorati.com/live/top100.html) _has changed a lot recently. Lots of new blogs and it feels more accurate based on my looks around the blogosphere. I'm honored to be holding down the #64 spot._ _Compare to_ [_Feeds.scripting.com's Top 100 list_](http://feeds.scripting.com/rankings)_;_ [_Feedster's Top 100 list_](http://feedster.com/top100.php)_; and_ [_Bloglines Top Blogs list_](http://www.bloglines.com/topblogs)_._ ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Nov 29, 2004 ### [Israeli Geek Dinner with Johanna Rothman](https://osherove.com/blog/2004/11/29/israeli-geek-dinner-with-johanna-rothman.html) - Nov 29, 2004 ### [Geek Dinner was juust fine...](https://osherove.com/blog/2004/11/29/geek-dinner-was-juust-fine.html) - Nov 5, 2004 ### [Israeli .Net bloggers worth a read](https://osherove.com/blog/2004/11/5/israeli-net-bloggers-worth-a-read.html) - Nov 1, 2004 ### [The way it ought to be - Microsoft and feedback](https://osherove.com/blog/2004/11/1/the-way-it-ought-to-be-microsoft-and-feedback.html) --- title: "Perspective" url: "https://osherove.com/blog/2004/11/7/perspective.md" canonical: "https://osherove.com/blog/2004/11/7/perspective.html" published: "2004-11-07T22:38:00" updated: "2004-11-07T22:38:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Reading pat's blog entry about his wife's passing made me cry. Pat, you don't know me but I know you. I wish you all the best and thank you for writing that wonderful post. You expressed in so many words things that I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Perspective By Roy Osherove November 7, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 7, 2004; technical details may be outdated. [Reading pat's blog entry](http://blogs.msdn.com/pathelland/archive/2004/10/28/249133.aspx) about his wife's passing made me cry. Pat, you don't know me but I know you. I wish you all the best and thank you for writing that wonderful post. You expressed in so many words things that I don't even dare think about. Thanks for brining things into perspective, even if unintentionally. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 16, 2004 ### [\[OT\]Productivity and lesson learning, Linux style?](https://osherove.com/blog/2004/11/16/otproductivity-and-lesson-learning-linux-style.html) - Nov 10, 2004 ### [Why does the BorCon Israel Registration page have to suck?](https://osherove.com/blog/2004/11/10/why-does-the-borcon-israel-registration-page-have-to-suck.html) - Nov 7, 2004 ### [WTF](https://osherove.com/blog/2004/11/7/wtf.html) - Nov 5, 2004 ### [\[OT\]Geeky political joke](https://osherove.com/blog/2004/11/5/otgeeky-political-joke.html) --- title: "Smalltalk: Just Try it" url: "https://osherove.com/blog/2004/11/7/smalltalk-just-try-it.md" canonical: "https://osherove.com/blog/2004/11/7/smalltalk-just-try-it.html" published: "2004-11-07T12:17:00" updated: "2004-11-07T12:17:00" tags: [] author: "Roy Osherove" description: "Blaine Buxton says just give it a shot : Isn't it time to deal with complexity with a simple and powerful language? Read this article and realize Smalltalk could be used to fix the \"complexity\" problem by dealing with…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Smalltalk: Just Try it By Roy Osherove November 7, 2004 **Historical article** · Originally published November 7, 2004; technical details may be outdated. [_Blaine Buxton_](http://www.blainebuxton.com/weblog/2004_11_01_archive.html#109953377855691533) _says **just give it a shot**:_ _Isn't it time to deal with complexity with a simple and powerful language? Read this article and realize Smalltalk could be used to fix the "complexity" problem by dealing with it instead of masking it with more complexity. IT systems are complex. You need a language that can deal with it: Smalltalk. If you want rising IT costs and complexity, do what everyone else is doing. Why not try something new, yet has had lots of time to mature_ _The worst that can happen? You'll decide on something else._ [_Grab the download and have a look_](http://smalltalk.cincom.com/downloads/index.ssp) \[via [James Robertson](http://www.cincomsmalltalk.com/blog/)\] OK. I'm intrigued. Challenge accepted. Downloading as you are reading this... _(btw: you'll need to register to the site to download)_ --- title: "WTF" url: "https://osherove.com/blog/2004/11/7/wtf.md" canonical: "https://osherove.com/blog/2004/11/7/wtf.html" published: "2004-11-07T12:14:00" updated: "2004-11-07T12:14:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is scary." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # WTF By Roy Osherove November 7, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 7, 2004; technical details may be outdated. [This is scary.](http://thedailywtf.com/archive/2004/10/27/2962.aspx) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 10, 2004 ### [Why does the BorCon Israel Registration page have to suck?](https://osherove.com/blog/2004/11/10/why-does-the-borcon-israel-registration-page-have-to-suck.html) - Nov 7, 2004 ### [Perspective](https://osherove.com/blog/2004/11/7/perspective.html) - Nov 5, 2004 ### [\[OT\]Geeky political joke](https://osherove.com/blog/2004/11/5/otgeeky-political-joke.html) - Nov 5, 2004 ### [IVBUG Celebrates its Seventh Birthday](https://osherove.com/blog/2004/11/5/ivbug-celebrates-its-seventh-birthday.html) --- title: "IntelliJ IDEA keeps getting better" url: "https://osherove.com/blog/2004/11/7/intellij-idea-keeps-getting-better.md" canonical: "https://osherove.com/blog/2004/11/7/intellij-idea-keeps-getting-better.html" published: "2004-11-07T11:36:00" updated: "2004-11-07T11:36:00" tags: ["Agile Related", "Cool Tools"] author: "Roy Osherove" description: "While VS.Net 2005 tries to keep up, IntelliJ IDEA (for Java) continues to improve itself with loads of very cool, very powerful stuff , and be (in my mind) the best IDE on the market today for productivity coding (sadly…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # IntelliJ IDEA keeps getting better By Roy Osherove November 7, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 7, 2004; technical details may be outdated. While VS.Net 2005 tries to keep up, [IntelliJ IDEA](http://www.jetbrains.com/idea/) (for Java) continues to improve itself with [loads of very cool, very powerful stuff](http://www.jetbrains.com/idea/features/refactoring.html), and be (in my mind) the best IDE on the market today for productivity coding (sadly it does not support C#/VB.Net...yet?). Now they just need to keep up [Resharper](http://www.jetbrains.com/resharper) with the new features and its a win-win situation. P.S It keeps me smiling to watch JetBrains' (makers of said products) site filled with [lots of little typos and errors](http://support.jetbrains.com/kb/category.jspa?categoryID=28), and a total lack of real "What's new" documentation on Resharper. Is it just me or does it seem like their letting their (most talented) developers also update the online site? yeah - this is a .Net blog - but you've gotta give props to the competition, right? They totally deserve it. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 24, 2004 ### [Not Invented here](https://osherove.com/blog/2004/11/24/not-invented-here.html) - Nov 12, 2004 ### [Article: Continuous Database Integration by Peter Hancock](https://osherove.com/blog/2004/11/12/article-continuous-database-integration-by-peter-hancock.html) - Nov 7, 2004 ### [The Road to Agile: a series of online presentations](https://osherove.com/blog/2004/11/7/the-road-to-agile-a-series-of-online-presentations.html) - Nov 5, 2004 ### [Have you been involved in an Agile project in Israel?](https://osherove.com/blog/2004/11/5/have-you-been-involved-in-an-agile-project-in-israel.html) --- title: "The Road to Agile: a series of online presentations" url: "https://osherove.com/blog/2004/11/7/the-road-to-agile-a-series-of-online-presentations.md" canonical: "https://osherove.com/blog/2004/11/7/the-road-to-agile-a-series-of-online-presentations.html" published: "2004-11-07T11:23:00" updated: "2004-11-07T11:23:00" tags: ["Agile Related"] author: "Roy Osherove" description: "There is a series of cool online \"webinars\" ( online live presentations) at Rally Development: The Road to Agile here's the list of all four presentations. already watched the first one and it was very very interesting.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Road to Agile: a series of online presentations By Roy Osherove November 7, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published November 7, 2004; technical details may be outdated. There is a series of cool online "webinars" ( online live presentations) at Rally Development: [**The Road to Agile**](http://rallydev.com/register_for_webinar_series.jsp) here's the list of all four presentations. already watched the first one and it was very very interesting. **Dean Leffingwell** [Avoiding the Four Roadblocks to Agile Adoption](http://rallydev.com/register_for_webinar_series.jsp#deanPresentation) **Tom Poppendieck **[The Agile Customer Toolkit](http://rallydev.com/register_for_webinar_series.jsp#tomPresentation) **Mike Cohn **[Moving from Test-Last to Test-Driven: Motivation and Strategies](http://rallydev.com/register_for_webinar_series.jsp#mikePresentation) **Jim Highsmith **[Agile Project Management - Reliable Innovation](http://rallydev.com/register_for_webinar_series.jsp#jimPresentation) quote: _Rally Software Development in pleased to announce its sponsorship of the Fall, 2004 The Road To Agile Webinar Series. During the months of October, November and December, Rally will host an exclusive series of webinars focused on providing software teams with the practical tools, tips and techniques for succeeding with Agile development practices. You'll learn how to advance your company's competitiveness and make your job more fun and rewarding. These free, one hour webinars are unique in their quality of speakers with all topics presented by recognized Agile experts who have helped hundreds of companies speed delivery of customer value and improve team productivity._ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 12, 2004 ### [Article: Continuous Database Integration by Peter Hancock](https://osherove.com/blog/2004/11/12/article-continuous-database-integration-by-peter-hancock.html) - Nov 7, 2004 ### [IntelliJ IDEA keeps getting better](https://osherove.com/blog/2004/11/7/intellij-idea-keeps-getting-better.html) - Nov 5, 2004 ### [Have you been involved in an Agile project in Israel?](https://osherove.com/blog/2004/11/5/have-you-been-involved-in-an-agile-project-in-israel.html) - Oct 7, 2004 ### [TDD brain teaser - hope I won](https://osherove.com/blog/2004/10/7/tdd-brain-teaser-hope-i-won.html) --- title: "[OT]Geeky political joke" url: "https://osherove.com/blog/2004/11/5/otgeeky-political-joke.md" canonical: "https://osherove.com/blog/2004/11/5/otgeeky-political-joke.html" published: "2004-11-05T23:15:00" updated: "2004-11-05T23:15:00" tags: ["Off Topic"] author: "Roy Osherove" description: "The past few days have proven that \"certain death\" is just a term. Yasser Arafat is still alive, or isn't he? I guess that gives a new meaning to the term \" Non-deterministic finalization \" OK. don't shoot the geek for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\]Geeky political joke By Roy Osherove November 5, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 5, 2004; technical details may be outdated. The past few days have proven that "certain death" is just a term. Yasser Arafat is still alive, or isn't he? I guess that gives a new meaning to the term "_[Non-deterministic finalization](http://www.fawcette.com/vsm/2003_04/magazine/columns/desktopdeveloper/default_pf.aspx)_" OK. don't shoot the geek for a bad joke. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 7, 2004 ### [Perspective](https://osherove.com/blog/2004/11/7/perspective.html) - Nov 7, 2004 ### [WTF](https://osherove.com/blog/2004/11/7/wtf.html) - Nov 5, 2004 ### [IVBUG Celebrates its Seventh Birthday](https://osherove.com/blog/2004/11/5/ivbug-celebrates-its-seventh-birthday.html) - Nov 1, 2004 ### [I'm Back, A webcast screwup, and my upcoming talk schedule](https://osherove.com/blog/2004/11/1/im-back-a-webcast-screwup-and-my-upcoming-talk-schedule.html) --- title: "Israeli .Net bloggers worth a read" url: "https://osherove.com/blog/2004/11/5/israeli-net-bloggers-worth-a-read.md" canonical: "https://osherove.com/blog/2004/11/5/israeli-net-bloggers-worth-a-read.html" published: "2004-11-05T23:07:00" updated: "2004-11-05T23:07:00" tags: ["Blogging"] author: "Roy Osherove" description: "I have about 30 Israeli bloggers on my RSS reader. less than 10 of thos publish stuff on a regular basis and the others are annoyingly silent. Here is the list of the Isralei .Net bloggers that have updated their blogs…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israeli .Net bloggers worth a read By Roy Osherove November 5, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published November 5, 2004; technical details may be outdated. I have about 30 Israeli bloggers on my RSS reader. less than 10 of thos publish stuff on a regular basis and the others are annoyingly silent. Here is the list of the Isralei .Net bloggers that have updated their blogs since the last time I opened by RSS reader (About a week?): [Udi Dahan](http://www.thesoftwaresimplist.com/) (The Software simplist) [Jackie Goldstein](http://weblogs.asp.net/jackieg) (Regional Director and leader of the VB user group) [Guy Sofer](http://weblogs.asp.net/guys) (Who has lately joined the ranks of [Magen](http://www.magen.com/)) [Natty Gur](http://weblogs.asp.net/ngur/rss.aspx) (Heavy architecture blog) [Ohad Israeli](http://weblogs.asp.net/israelio) (Also from Magen) [Addy Santo](http://weblogs.asp.net/asanto) (Lives in the states now but will always be Israeli to me. Now wors at MS, is coming to Israel on december for a visit!) [Anatoly Lubarsky](http://blogs.x2line.com/al) [Aviv Raff](http://aviv.raffon.net/) You should also watch out for [Avner Kashtan's](http://weblogs.asp.net/avnerk) blog (he has some intersting stuff but has not updated in a while) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Nov 29, 2004 ### [Geek Dinner was juust fine...](https://osherove.com/blog/2004/11/29/geek-dinner-was-juust-fine.html) - Nov 7, 2004 ### [What blogs are other people reading?](https://osherove.com/blog/2004/11/7/what-blogs-are-other-people-reading.html) - Nov 1, 2004 ### [The way it ought to be - Microsoft and feedback](https://osherove.com/blog/2004/11/1/the-way-it-ought-to-be-microsoft-and-feedback.html) - Oct 15, 2004 ### [Best Independent Tech Blog Readers Choice Awards](https://osherove.com/blog/2004/10/15/best-independent-tech-blog-readers-choice-awards.html) --- title: "IVBUG Celebrates its Seventh Birthday" url: "https://osherove.com/blog/2004/11/5/ivbug-celebrates-its-seventh-birthday.md" canonical: "https://osherove.com/blog/2004/11/5/ivbug-celebrates-its-seventh-birthday.html" published: "2004-11-05T23:06:00" updated: "2004-11-05T23:06:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Happy 7th birthday to the Israeli VB user group and to its creator, Jackie Goldstein ! What a great example of a community. See Jackie's post on the subject for pics n' stuff .." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # IVBUG Celebrates its Seventh Birthday By Roy Osherove November 5, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 5, 2004; technical details may be outdated. Happy 7th birthday to the [Israeli VB user group](http://www.renaissance.co.il/ivbug/) and to its creator, [Jackie Goldstein](http://weblogs.asp.net/jackieg)! What a great example of a community. See [Jackie's post on the subject for pics n' stuff](http://weblogs.asp.net/jackieg/archive/2004/11/04/252399.aspx).. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 7, 2004 ### [WTF](https://osherove.com/blog/2004/11/7/wtf.html) - Nov 5, 2004 ### [\[OT\]Geeky political joke](https://osherove.com/blog/2004/11/5/otgeeky-political-joke.html) - Nov 1, 2004 ### [I'm Back, A webcast screwup, and my upcoming talk schedule](https://osherove.com/blog/2004/11/1/im-back-a-webcast-screwup-and-my-upcoming-talk-schedule.html) - Oct 19, 2004 ### [OK - back for an evening, leaving tomorrow for a week](https://osherove.com/blog/2004/10/19/ok-back-for-an-evening-leaving-tomorrow-for-a-week.html) --- title: "Have you been involved in an Agile project in Israel?" url: "https://osherove.com/blog/2004/11/5/have-you-been-involved-in-an-agile-project-in-israel.md" canonical: "https://osherove.com/blog/2004/11/5/have-you-been-involved-in-an-agile-project-in-israel.html" published: "2004-11-05T22:50:00" updated: "2004-11-05T22:50:00" tags: ["Agile Related"] author: "Roy Osherove" description: "In the recent week my company, Magen has begun offering a new line of Training services: Agile and Test Driven Development. I'll spare you the details (If you want more details simply contact me through the contact link…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Have you been involved in an Agile project in Israel? By Roy Osherove November 5, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published November 5, 2004; technical details may be outdated. In the recent week my company, [Magen](http://www.magen.com/) has begun offering a new line of Training services: Agile and Test Driven Development. I'll spare you the details (If you want more details simply contact me through the contact link or to "\[email removed\]") but suffice to say that there is a big "boom" of requests for this type of knowledge, and that can't be bad. So I was at a client's site the other day discussing how TDD might be able to help their development process and I get asked this question: _"Are there any success stories **in Israel** relating to Agile Development that you can tell me about that Magen was **not** a part of?"_ Sadly, I didn't have a good answer. I'm almost sure [Udi](http://www.thesoftwaresimplist.com/) was involved in some, but that's about it. The fact of the matter is that this stuff is relatively unheard of in Israel Dev teams, and if it is heard of, its usually in the confines of rumors and conversations, almost never in a real project. So here's a question for y'all Israeli Devs out there - **are you involved/were involved in a project in Israel that used Test Driven Development/Unit Tests/eXtreme Programming or anything else that can be considered "Agile" and lived to tell about it?** **what were your experiences? Good and bad please.** Feel free to contact me directly and tell me about them or leave a comment to this post. I'm looking for real company names in Israel and contact names I can call and talk with directly ("\[email removed\]" is my email). I remember speaking at the Israeli .Net architects user group about Agile Development concepts and there was a guy in the middle row talking during the break about his own experiences with XP. If you're reading this, **please** contact me. I'd love to know all about it. It's important to know of any real world projects who've done this, and I'm not just talking about adding to the marketing hype. People who've done this sorta thing before will be able to contribute lots to the Agile User Group I'm planning to establish in Israel. So again, please contact me. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Nov 7, 2004 ### [IntelliJ IDEA keeps getting better](https://osherove.com/blog/2004/11/7/intellij-idea-keeps-getting-better.html) - Nov 7, 2004 ### [The Road to Agile: a series of online presentations](https://osherove.com/blog/2004/11/7/the-road-to-agile-a-series-of-online-presentations.html) - Oct 7, 2004 ### [TDD brain teaser - hope I won](https://osherove.com/blog/2004/10/7/tdd-brain-teaser-hope-i-won.html) - Oct 5, 2004 ### [Introducing: XtUnit . An Unofficial Unit Testing Extensibility Framework - Add new attributes to NUnit or MbUnit easily!](https://osherove.com/blog/2004/10/5/introducing-xtunit-an-unofficial-unit-testing-extensibility.html) --- title: "The way it ought to be - Microsoft and feedback" url: "https://osherove.com/blog/2004/11/1/the-way-it-ought-to-be-microsoft-and-feedback.md" canonical: "https://osherove.com/blog/2004/11/1/the-way-it-ought-to-be-microsoft-and-feedback.html" published: "2004-11-01T18:02:00" updated: "2004-11-01T18:02:00" tags: ["Blogging"] author: "Roy Osherove" description: "This is exactly how it should work: You post feedback on an event you have been to, your blog is read by one of the presenters in that event which then posts on his own weblog on the power of feedback and tells his…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The way it ought to be - Microsoft and feedback By Roy Osherove November 1, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published November 1, 2004; technical details may be outdated. This is **exactly** how it should work: You post feedback on an event you have been to, your blog is read by one of the presenters in that event which then posts on his own weblog on the power of feedback and tells his manager. Later, the presenter's boss reads the original blog post and posts a details answer on the how's and whys of each point made, making sure to learn important lessons from this feedback and even suggesting ideas for the community for future improvement. Sounds like fiction? Check out [this post from Dave Donaldson](http://loudcarrot.com/Blogs/dave/archive/0001/01/01/667.aspx) giving event feedback, make sure you read all the comments on that post (notice responses from [Rory](http://neopoleon.com/blog/) and [his boss](http://weblogs.asp.net/MikeoMSDN/)). Then read [Rory's response](http://neopoleon.com/blog/posts/9035.aspx) on his blog. then read Dave's "[I'm happy with the end result](http://loudcarrot.com/Blogs/dave/archive/2004/10/26/671.aspx)" post about the whole thing and realize that blogging and feedback makes for happy clients, even if you screw up. Yep. This is the way it should work. Even in Israel. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Nov 7, 2004 ### [What blogs are other people reading?](https://osherove.com/blog/2004/11/7/what-blogs-are-other-people-reading.html) - Nov 5, 2004 ### [Israeli .Net bloggers worth a read](https://osherove.com/blog/2004/11/5/israeli-net-bloggers-worth-a-read.html) - Oct 15, 2004 ### [Best Independent Tech Blog Readers Choice Awards](https://osherove.com/blog/2004/10/15/best-independent-tech-blog-readers-choice-awards.html) - Oct 6, 2004 ### [Twilight-Zone problems](https://osherove.com/blog/2004/10/6/twilight-zone-problems.html) --- title: "What's up?" url: "https://osherove.com/blog/2004/11/1/whats-up.md" canonical: "https://osherove.com/blog/2004/11/1/whats-up.html" published: "2004-11-01T16:07:00" updated: "2004-11-01T16:07:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Udi Dahan shows a simple and effective way to make your exception data more readable in the event log. Yeah. It's really simple. Aviv raff is an up and coming Israeli .Net blogger. He's had 6 posts already (which is why…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What's up? By Roy Osherove November 1, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published November 1, 2004; technical details may be outdated. - [Udi Dahan shows](http://udidahan.weblogs.us/archives/021210.html) a simple and effective way to make your exception data more readable in the event log. Yeah. It's really simple. - [Aviv raff](http://aviv.raffon.net/) is an up and coming Israeli .Net blogger. He's had 6 posts already (which is why I am linking to him) on various subjects, which is more than I can say about many other (unnamed) Israeli .Net bloggers. Go Aviv! - [A new version of NUnit is out](http://www.nunit.org/) \- with extensibility features, Yey! Now you can finally write your own attributes and test suites (for example - a transactional test case, or a multi-threaded test suite...) Anything else worth mentioning? tell me. **P.S - E&C** C# is going to have "Edit And Continue" ability. Say what you will, but I can only see goodness in this. Do all those anti-E&C think that now, that E&C has come to C# than suddenly all those developers will stop doing all the up-front design, unit tests and what not? No. It's **just another aid**. It's like the spare wheel in your car - It's not recommended to use it as a standard while driving, but it's damn good to have it there for those little pieces of time you need to use it. _("gah! With true TDD you should never have to use it!" someone might say, to which I'll reply - "get over yourself, this is the real world". In fact, I dare any anti-E&C buff to have it enabled but **not** to use it from now on for 2 months. can you do that?)_  ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 29, 2004 ### [TestDriven.Net version 1.0 is out (with a new site design as well)](https://osherove.com/blog/2004/11/29/testdrivennet-version-10-is-out-with-a-new-site-design-as-we.html) - Nov 7, 2004 ### [Mitigating malicious plug-ins in your application](https://osherove.com/blog/2004/11/7/mitigating-malicious-plug-ins-in-your-application.html) - Oct 13, 2004 ### [TopXML releases the System.XML reference online](https://osherove.com/blog/2004/10/13/topxml-releases-the-systemxml-reference-online.html) - Oct 12, 2004 ### [Introducing "Project Distributor" - your .Net file and idea sharing ground](https://osherove.com/blog/2004/10/12/introducing-quotproject-distributorquot-your-net-file-and-id.html) --- title: "I'm Back, A webcast screwup, and my upcoming talk schedule" url: "https://osherove.com/blog/2004/11/1/im-back-a-webcast-screwup-and-my-upcoming-talk-schedule.md" canonical: "https://osherove.com/blog/2004/11/1/im-back-a-webcast-screwup-and-my-upcoming-talk-schedule.html" published: "2004-11-01T16:01:00" updated: "2004-11-01T16:01:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm back baby! That is, I Will slowly start to catch up on everything that I've missed in the past couple of weeks. Larkware.Com is my friend on that task. I FINALLY have some time to start doing all the things I've…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm Back, A webcast screwup, and my upcoming talk schedule By Roy Osherove November 1, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 1, 2004; technical details may be outdated. **I'm back baby!** That is, I Will slowly start to catch up on everything that I've missed in the past couple of weeks. [Larkware.Com](http://www.larkware.com/) is my friend on that task. I _FINALLY_ have some time to start doing all the things I've been wanting to do but was too tied up to do them. Some of those include: Resuming the TDD workshops(yes!), Getting the Israel Agile user group going, Getting some Israel Geek dinners going (Juval Lowey is going to be in Israel on December. I'll see if I can somehow get him to join one of these) and speaking at user groups again. That's that for the community side. On the work side its \*amazing\* how many requests for agile lectures and workshops I've gotten in the past too weeks (Many of Magen's customers are starting to "get" it, finally) and that means I have a busy couple of months on my hands. If your company wants training, mentoring or just an overview of Agile methodologies such as Extreme programming, or a short workshop on doing Test Driven Development, don't hesitate to send me an email to "**Roy** _At_ **Magen** _Dot_ **Com"** and we'll talk. **A webcast screwup** Before I detail my upcoming schedule, A little something to the MSFT powers that be: A few weeks ago some of you may have gotten an email with the upcoming webcast list. It had some serious screw ups, unfortunately: - The first two lectures have the same title more or less, but the second one should actually be "production time debugging" - There are no links in the ad's pictures of each lecture - If you click on the link to go to the [webcasts site](http://www.microsoft.com/israel/events/webcasts/developers.mspx) – there is no mention of these webcasts Bad, bad MS! **Upcoming schedule:** -  17.11.04              - **User Group Talk, [IVCUG](http://www.comconix.com/ivcug/)**: Attributes, Reflection and an intro to Interception in .Net  -  23.11.04, 16:00   - **Webcast**: [Test Driven Development with NUnit and .Net](http://www.microsoft.com/israel/events/webcasts/developers.mspx) -  25.11.04              - [**.Net Deep Dive**](http://www.microsoft.com/israel/events/default.aspx?pageType=1&idType=1&id=15089)**(2 talks):** - Top Tools Every .Net Developer should Know - Test Driven Development with .Net  ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 5, 2004 ### [\[OT\]Geeky political joke](https://osherove.com/blog/2004/11/5/otgeeky-political-joke.html) - Nov 5, 2004 ### [IVBUG Celebrates its Seventh Birthday](https://osherove.com/blog/2004/11/5/ivbug-celebrates-its-seventh-birthday.html) - Oct 19, 2004 ### [OK - back for an evening, leaving tomorrow for a week](https://osherove.com/blog/2004/10/19/ok-back-for-an-evening-leaving-tomorrow-for-a-week.html) - Oct 17, 2004 ### [See you in three weeks](https://osherove.com/blog/2004/10/17/see-you-in-three-weeks.html) --- title: "OK - back for an evening, leaving tomorrow for a week" url: "https://osherove.com/blog/2004/10/19/ok-back-for-an-evening-leaving-tomorrow-for-a-week.md" canonical: "https://osherove.com/blog/2004/10/19/ok-back-for-an-evening-leaving-tomorrow-for-a-week.html" published: "2004-10-19T17:54:00" updated: "2004-10-19T17:54:00" tags: ["Off Topic"] author: "Roy Osherove" description: "just so you know - I AM leaving for military service, it was just shortened and I'll be back at the beginning of next month." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # OK - back for an evening, leaving tomorrow for a week By Roy Osherove October 19, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 19, 2004; technical details may be outdated. just so you know - I AM leaving for military service, it was just shortened and I'll be back at the beginning of next month. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 5, 2004 ### [IVBUG Celebrates its Seventh Birthday](https://osherove.com/blog/2004/11/5/ivbug-celebrates-its-seventh-birthday.html) - Nov 1, 2004 ### [I'm Back, A webcast screwup, and my upcoming talk schedule](https://osherove.com/blog/2004/11/1/im-back-a-webcast-screwup-and-my-upcoming-talk-schedule.html) - Oct 17, 2004 ### [See you in three weeks](https://osherove.com/blog/2004/10/17/see-you-in-three-weeks.html) - Oct 17, 2004 ### ['I'm not going to be your monkey'](https://osherove.com/blog/2004/10/17/im-not-going-to-be-your-monkey.html) --- title: "Osherove.Interception 1.04 - Change return values and incoming parameter values at runtime easily" url: "https://osherove.com/blog/2004/10/19/osheroveinterception-104-change-return-values-and-incoming-p.md" canonical: "https://osherove.com/blog/2004/10/19/osheroveinterception-104-change-return-values-and-incoming-p.html" published: "2004-10-19T17:52:00" updated: "2004-10-19T17:52:00" tags: [".Net Original"] author: "Roy Osherove" description: "I just love the idea of interception. It lets you do stuff like this: using Osherove . Interception . Framework ; namespace Osherove . Interception . Samples . AutoEncryption { public class CryptTestedClass :…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Osherove.Interception 1.04 - Change return values and incoming parameter values at runtime easily By Roy Osherove October 19, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published October 19, 2004; technical details may be outdated. I just love the idea of interception. It lets you do stuff like this: --- using Osherove.Interception.Framework; namespace Osherove.Interception.Samples.AutoEncryption {       public class CryptTestedClass:InterceptableObject       {             \[EncryptOutput\]             public string GetEncryptedValue(string someValue)             {                   //after this line someValue will be automatically                   //encrypted and returned to the called in its new form                   return someValue;             }             \[DecryptInput("encrypted")\]             public string ReturnUnEncryptedString (string noChangeableValue,                                                    string encrypted)             {                   //'encrypted' should already be in its unencrypted form in this stage                   //so we just return it.                   return encrypted;             }       } } --- and here are the tests(notice the the encryption example is just a simple string concatenation - for demo purposes. ---             \[Test\]             public void TestEncrypt()             {                CryptTestedClass myClass = new CryptTestedClass();                string output  = myClass.GetEncryptedValue("SomeValue");                Assert.AreEqual("SomeValue\*SomeEncryptStuffHere\*",output);             }             \[Test\]             public void TestDecrypt()             {                   string encrypted = "SomeValue\*SomeEncryptStuffHere";                   string decryptedOutput =                      new CryptTestedClass().                         ReturnUnEncryptedString("some string",encrypted);                   Assert.AreEqual("SomeValue",decryptedOutput);             } --- If you want to be able to create such a feature, you'll need to download the latest version of my interception framework, version 1.0.4 [from here](https://osherove.com/LinkClick.aspx?link=http%3a%2f%2fwww.osherove.com%2fdownloads%2finterception104.zip&mid=347). ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 17, 2004 ### [Israeli .Net Deep Dive chat going on right now](https://osherove.com/blog/2004/11/17/israeli-net-deep-dive-chat-going-on-right-now.html) - Nov 8, 2004 ### [Simple math with regular expressions?](https://osherove.com/blog/2004/11/8/simple-math-with-regular-expressions.html) - Oct 15, 2004 ### [Solving Team Development with web projects hell](https://osherove.com/blog/2004/10/15/solving-team-development-with-web-projects-hell.html) - Oct 15, 2004 ### [\[Tools and Addins\] : SharpTools, web controls and various utilities - free!](https://osherove.com/blog/2004/10/15/tools-and-addins-sharptools-web-controls-and-various-utiliti.html) --- title: "See you in three weeks" url: "https://osherove.com/blog/2004/10/17/see-you-in-three-weeks.md" canonical: "https://osherove.com/blog/2004/10/17/see-you-in-three-weeks.html" published: "2004-10-17T00:11:00" updated: "2004-10-17T00:11:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm leaving tomorrow for what looks to be like a 3 week military duty :( See you all when I get back (Hopefully I'll get a vacation somewhere in the middle..). Cheers, Roy." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # See you in three weeks By Roy Osherove October 17, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 17, 2004; technical details may be outdated. I'm leaving tomorrow for what looks to be like a 3 week military duty :( See you all when I get back (Hopefully I'll get a vacation somewhere in the middle..). Cheers, Roy. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 1, 2004 ### [I'm Back, A webcast screwup, and my upcoming talk schedule](https://osherove.com/blog/2004/11/1/im-back-a-webcast-screwup-and-my-upcoming-talk-schedule.html) - Oct 19, 2004 ### [OK - back for an evening, leaving tomorrow for a week](https://osherove.com/blog/2004/10/19/ok-back-for-an-evening-leaving-tomorrow-for-a-week.html) - Oct 17, 2004 ### ['I'm not going to be your monkey'](https://osherove.com/blog/2004/10/17/im-not-going-to-be-your-monkey.html) - Oct 14, 2004 ### [Unread Gmail messages through an RSS feed? coolness.](https://osherove.com/blog/2004/10/14/unread-gmail-messages-through-an-rss-feed-coolness.html) --- title: "'I'm not going to be your monkey'" url: "https://osherove.com/blog/2004/10/17/im-not-going-to-be-your-monkey.md" canonical: "https://osherove.com/blog/2004/10/17/im-not-going-to-be-your-monkey.html" published: "2004-10-17T00:10:00" updated: "2004-10-17T00:10:00" tags: ["Off Topic"] author: "Roy Osherove" description: "'I'm not going to be your monkey' , said John Stewart in this movie clip. This link just fell into my lap and its really interesting and hard to watch." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 'I'm not going to be your monkey' By Roy Osherove October 17, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 17, 2004; technical details may be outdated. ['I'm not going to be your monkey'](http://www.nickbarlow.com/blog/2004/10/im-not-going-to-be-your-monkey.html) , said John Stewart in [this movie](http://mediamatters.org/items/200410160003) clip.  This link just fell into my lap and its really interesting and hard to watch. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 19, 2004 ### [OK - back for an evening, leaving tomorrow for a week](https://osherove.com/blog/2004/10/19/ok-back-for-an-evening-leaving-tomorrow-for-a-week.html) - Oct 17, 2004 ### [See you in three weeks](https://osherove.com/blog/2004/10/17/see-you-in-three-weeks.html) - Oct 14, 2004 ### [Unread Gmail messages through an RSS feed? coolness.](https://osherove.com/blog/2004/10/14/unread-gmail-messages-through-an-rss-feed-coolness.html) - Oct 10, 2004 ### [Sometimes I'm simply frustrated at the qualification game](https://osherove.com/blog/2004/10/10/sometimes-im-simply-frustrated-at-the-qualification-game.html) --- title: "Solving Team Development with web projects hell" url: "https://osherove.com/blog/2004/10/15/solving-team-development-with-web-projects-hell.md" canonical: "https://osherove.com/blog/2004/10/15/solving-team-development-with-web-projects-hell.html" published: "2004-10-15T23:44:00" updated: "2004-10-15T23:44:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "I've been inspired by this article to change the way one of the teams at work has been handling a large solution. We had a big problem with a large solution (over 100 projects) that had many web services and asp.net…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Solving Team Development with web projects hell By Roy Osherove October 15, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published October 15, 2004; technical details may be outdated. I've been inspired by [this article](http://www.sys-con.com/dotnet/article.cfm?id=320) to change the way one of the teams at work has been handling a large solution. We had a big problem with a large solution (over 100 projects)  that had many web services and asp.net projects within it. the problems arose when the project needed to be built on a new machine at work. creating the project from source safe made for a big hassle because of the way vs.net handles web related projects - it requires they sit on a virtual directory on IIS to be built. SO virtual directories would be created on the new machine automatically but lots of times (especially when trying to re-get the whole project on the same machine multiple times) we would get new virtual directories with different names created automatically for us. This "broke" the solution for other machines which relies on different virtual directories names and so we got a big headache when working as a team on the same web project. It was a nightmare. The article suggests that web projects will not actually be "web projects" inside the solution, but instead will be class library projects which can be built just the same. You can easily drop web pages, asmx pages, controls and anything else you would have in a normal web project into a class lib project and it would build great. Only now you don't need to hassle with virtual directories being automatically created by vs.net. nope - you simply **map your own** directories on the build directories on your project and that's that. very easy and saves us a LOT of time. Another bonus is that web projects are now saved **under** the source tree route instead of **next to it** with regular projects.  Yes - its very nice. anyone have experience with this? any other means of working with a shared web project? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 8, 2004 ### [Simple math with regular expressions?](https://osherove.com/blog/2004/11/8/simple-math-with-regular-expressions.html) - Oct 19, 2004 ### [Osherove.Interception 1.04 - Change return values and incoming parameter values at runtime easily](https://osherove.com/blog/2004/10/19/osheroveinterception-104-change-return-values-and-incoming-p.html) - Oct 15, 2004 ### [\[Tools and Addins\] : SharpTools, web controls and various utilities - free!](https://osherove.com/blog/2004/10/15/tools-and-addins-sharptools-web-controls-and-various-utiliti.html) - Oct 12, 2004 ### [Introducing the Osherove.Interception framework](https://osherove.com/blog/2004/10/12/introducing-the-osheroveinterception-framework.html) --- title: "Best Independent Tech Blog Readers Choice Awards" url: "https://osherove.com/blog/2004/10/15/best-independent-tech-blog-readers-choice-awards.md" canonical: "https://osherove.com/blog/2004/10/15/best-independent-tech-blog-readers-choice-awards.html" published: "2004-10-15T23:18:00" updated: "2004-10-15T23:18:00" tags: ["Blogging"] author: "Roy Osherove" description: "Hmm. So now there's a contest over the 10 best technical blogs. *whistle* I've already put my 5 recommendations in. you? [via Mike ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Best Independent Tech Blog Readers Choice Awards By Roy Osherove October 15, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 15, 2004; technical details may be outdated. Hmm. So now there's a contest over the 10 best technical blogs. \*whistle\* [I've already put my 5 recommendations in. you?](http://www.techweb.com/blogawards/nominate.html) _\[via_ [_Mike_](http://www.larkware.com/)_\]_ ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Nov 5, 2004 ### [Israeli .Net bloggers worth a read](https://osherove.com/blog/2004/11/5/israeli-net-bloggers-worth-a-read.html) - Nov 1, 2004 ### [The way it ought to be - Microsoft and feedback](https://osherove.com/blog/2004/11/1/the-way-it-ought-to-be-microsoft-and-feedback.html) - Oct 6, 2004 ### [Twilight-Zone problems](https://osherove.com/blog/2004/10/6/twilight-zone-problems.html) - Oct 5, 2004 ### [The blogs I read](https://osherove.com/blog/2004/10/5/the-blogs-i-read.html) --- title: "BlogMatrix: RSS news reader with podcasting reception abilities." url: "https://osherove.com/blog/2004/10/15/blogmatrix-rss-news-reader-with-podcasting-reception-abiliti.md" canonical: "https://osherove.com/blog/2004/10/15/blogmatrix-rss-news-reader-with-podcasting-reception-abiliti.html" published: "2004-10-15T23:10:00" updated: "2004-10-15T23:10:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "David Janes sends word of his new RSS news reader: BlogMatrix . Here's what the site says. Notice that theres podcasting abilities in it as well. Interesting. ( What is podcasting? ) \" BlogMatrix introduces Jäger 1.6…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BlogMatrix: RSS news reader with podcasting reception abilities. By Roy Osherove October 15, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 15, 2004; technical details may be outdated. David Janes sends word of his new RSS news reader: [BlogMatrix](http://jaeger.blogmatrix.com/). Here's what the site says. Notice that theres podcasting abilities in it as well. Interesting. _([What is podcasting?](http://en.wikipedia.org/wiki/Podcasting))_ ### _"[BlogMatrix introduces Jäger 1.6 for Windows](http://jaeger.blogmatrix.com/weblog/archives/2004_10.shtml#003009)_ _BlogMatrix is please to announce that Jäger 1.6 for Windows is now available. It can be downloaded from_ [**_here_**](http://jaeger.blogmatrix.com/install/)_. Jäger 1.6 contains many feature enhancements, minor bug fixes and three great new major features:_ - _Podcast Reception_ - _Bloglines Synchronization_ - _Universal Searching_ _**Podcast Reception** BlogMatrix Jäger 1.6 is the first weblog reader to provide integrated Podcast reception. Podcasts are weblog attachments containing audio or video items, such as news items, MP3 music files or audio commentary. Jäger will automatically download these attachments and add them to the playlist of your choice on iTunes or on Windows Media Player._ _BlogMatrix Jäger 1.6 has the best features of any podcast reception tool out there, including entry filtering, choice of media players, scheduling control, plus all the other features that come along with Jäger, such as drag and drop subscriptions and OPML support._ _..."_ ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Nov 26, 2004 ### [Cool Tools Every .Net Developer should be aware of](https://osherove.com/blog/2004/11/26/cool-tools-every-net-developer-should-be-aware-of.html) - Nov 7, 2004 ### [IntelliJ IDEA keeps getting better](https://osherove.com/blog/2004/11/7/intellij-idea-keeps-getting-better.html) - Oct 15, 2004 ### [\[Tools and Addins\] : SharpTools, web controls and various utilities - free!](https://osherove.com/blog/2004/10/15/tools-and-addins-sharptools-web-controls-and-various-utiliti.html) - Oct 14, 2004 ### [Unread Gmail messages through an RSS feed? coolness.](https://osherove.com/blog/2004/10/14/unread-gmail-messages-through-an-rss-feed-coolness.html) --- title: "[Tools and Addins] : SharpTools, web controls and various utilities - free!" url: "https://osherove.com/blog/2004/10/15/tools-and-addins-sharptools-web-controls-and-various-utiliti.md" canonical: "https://osherove.com/blog/2004/10/15/tools-and-addins-sharptools-web-controls-and-various-utiliti.html" published: "2004-10-15T23:04:00" updated: "2004-10-15T23:04:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "Jon Schwartz of \" Morrison Schwartz \" sent me an email saying he wished he knew about the (now closed) add-in competition , cause he's got a great add-in to put up there. Nevertheless, he sent me a link to his add-in,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Tools and Addins\] : SharpTools, web controls and various utilities - free! By Roy Osherove October 15, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 15, 2004; technical details may be outdated. Jon Schwartz of "[Morrison Schwartz](https://osherove.com/blog/2004/10/15/www.ms-inc.net)" sent me an email saying he wished he knew about the (now closed) [add-in competition](http://dev.magen.com/AddinContest), cause he's got a great add-in to put up there. Nevertheless, he sent me a link to his add-in, called "[SharpTools](http://www.ms-inc.net/Default.aspx?Page=SharpToolsInfo)". It's totally free, and is extensible (you can write your own plug-ins for it). here's what the site description says: _[**What is SharpTools?**](http://www.ms-inc.net/Default.aspx?Page=SharpToolsInfo)_ _SharpTools is an extensible add-in to the Microsoft Visual Studio.NET development environment, and a software development kit (SDK) supporting the **rapid** development of further extensions which will run within SharpTools. These further extensions to SharpTools are called SharpTool plug-ins. SharpTools also includes several specific plug-ins, implemented to assist programmers in developing, debugging, testing and documenting code developed within the Visual Studio.NET development environment. SharpTools is Visual Studio.NET, made better!_ If I had more time I'd go to the site and grab me a free copy but there's other news too. There are several other **totally free** controls, Addins and utilities for developers on their site. Among them: MSDE DB manager, Database scripter (schema and data), ASP.Net date picker and calendar controls, authorization, view state optimization and other web controls, most of them freeware. Very cool. [See the complete product listing over here.](http://www.ms-inc.net/Default.aspx?Page=Products) Thanks for the tip Jon! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 19, 2004 ### [Osherove.Interception 1.04 - Change return values and incoming parameter values at runtime easily](https://osherove.com/blog/2004/10/19/osheroveinterception-104-change-return-values-and-incoming-p.html) - Oct 15, 2004 ### [Solving Team Development with web projects hell](https://osherove.com/blog/2004/10/15/solving-team-development-with-web-projects-hell.html) - Oct 12, 2004 ### [Introducing the Osherove.Interception framework](https://osherove.com/blog/2004/10/12/introducing-the-osheroveinterception-framework.html) - Oct 12, 2004 ### [\[Rediscovered\] Advanced debugging tips and stuff you never knew about the "Find" combo box](https://osherove.com/blog/2004/10/12/rediscovered-advanced-debugging-tips-and-stuff-you-never-kne.html) --- title: "MSDN Managed Newsgroups - no answer?" url: "https://osherove.com/blog/2004/10/14/msdn-managed-newsgroups-no-answer.md" canonical: "https://osherove.com/blog/2004/10/14/msdn-managed-newsgroups-no-answer.html" published: "2004-10-14T07:01:00" updated: "2004-10-14T07:01:00" tags: [] author: "Roy Osherove" description: "From Raj : From MSDN Managed Newsgroups : ... A commitment to respond to your post within two business days I am an MSDN Universal subscriber and have posted questions on the MSDN manged newsgroups many of which are…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSDN Managed Newsgroups - no answer? By Roy Osherove October 14, 2004 **Historical article** · Originally published October 14, 2004; technical details may be outdated. [From Raj](http://weblogs.asp.net/rajbk/archive/2004/10/13/242074.aspx): _From_ [_MSDN Managed Newsgroups_](http://msdn.microsoft.com/newsgroups/managed/)_: ...**A commitment to respond to your post** within two business days _ _I am an MSDN Universal subscriber and have posted questions on the MSDN manged newsgroups many of which are more than a week old with **no replies.**_ **_Wake up guys :(_** Maybe someone will wake up when reading this post. --- title: "Unread Gmail messages through an RSS feed? coolness." url: "https://osherove.com/blog/2004/10/14/unread-gmail-messages-through-an-rss-feed-coolness.md" canonical: "https://osherove.com/blog/2004/10/14/unread-gmail-messages-through-an-rss-feed-coolness.html" published: "2004-10-14T06:51:00" updated: "2004-10-14T06:51:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "Well, not RSS, but Atom. Same difference. I didn't know this ! Cool! (Now they just need to support RSS as well)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unread Gmail messages through an RSS feed? coolness. By Roy Osherove October 14, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 14, 2004; technical details may be outdated. Well, not RSS, but Atom. Same difference. [I didn't know this](http://alintex.com/blog/archive/2004/10/14/182.aspx)! Cool! (Now they just need to support RSS as well) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Oct 15, 2004 ### [BlogMatrix: RSS news reader with podcasting reception abilities.](https://osherove.com/blog/2004/10/15/blogmatrix-rss-news-reader-with-podcasting-reception-abiliti.html) - Oct 15, 2004 ### [\[Tools and Addins\] : SharpTools, web controls and various utilities - free!](https://osherove.com/blog/2004/10/15/tools-and-addins-sharptools-web-controls-and-various-utiliti.html) - Oct 12, 2004 ### [TaskSwitchXP - free, cooler task switching](https://osherove.com/blog/2004/10/12/taskswitchxp-free-cooler-task-switching.html) - Sep 3, 2004 ### [Review - Resharper](https://osherove.com/blog/2004/9/3/review-resharper.html) --- title: "TopXML releases the System.XML reference online" url: "https://osherove.com/blog/2004/10/13/topxml-releases-the-systemxml-reference-online.md" canonical: "https://osherove.com/blog/2004/10/13/topxml-releases-the-systemxml-reference-online.html" published: "2004-10-13T22:25:00" updated: "2004-10-13T22:25:00" tags: [".Net Quotations", "Cool sites"] author: "Roy Osherove" description: "Mark Wilson of TopXML pinged me to say that TopXML have released: The .NET System.XML reference So how's this different that other references? They actually have *useful* examples on the classes, with short, to the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TopXML releases the System.XML reference online By Roy Osherove October 13, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published October 13, 2004; technical details may be outdated. Mark Wilson of [TopXML](http://www.topxml.com/) pinged me to say that TopXML have released: [The .NET System.XML reference](http://www.topxml.com/system_xml/default.asp) So how's this different that other references? They actually have \*useful\* examples on the classes, with short, to the point descriptions of each class. Here's what they say: - _Each class description page is supplemented with a list of the public properties and methods provided as part of the class members._ - _Samples are further prefixed with brief introductions. The purpose of these pages is not to provide comprehensive descriptions of individual classes, but to supply simple, introductory code samples._ - _Any public property or method that is actually used within the sample code is bolded in the initial table containing the public properties and methods._ - _The declaration statement of the currently described System.XML class is always bolded within the sample code._ - _Most of the samples can be easily implemented using a Windows form that contains a button and a text box. The code uses the default names of these controls (Button1 and Text1 respectively). Some of the examples, however, need to be incorporated within existing routines._ Coolness! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 7, 2004 ### [Mitigating malicious plug-ins in your application](https://osherove.com/blog/2004/11/7/mitigating-malicious-plug-ins-in-your-application.html) - Nov 1, 2004 ### [What's up?](https://osherove.com/blog/2004/11/1/whats-up.html) - Oct 12, 2004 ### [Introducing "Project Distributor" - your .Net file and idea sharing ground](https://osherove.com/blog/2004/10/12/introducing-quotproject-distributorquot-your-net-file-and-id.html) - Oct 7, 2004 ### [TDD brain teaser - hope I won](https://osherove.com/blog/2004/10/7/tdd-brain-teaser-hope-i-won.html) --- title: "TaskSwitchXP - free, cooler task switching" url: "https://osherove.com/blog/2004/10/12/taskswitchxp-free-cooler-task-switching.md" canonical: "https://osherove.com/blog/2004/10/12/taskswitchxp-free-cooler-task-switching.html" published: "2004-10-12T23:54:00" updated: "2004-10-12T23:54:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Ooh! TaskSwitchXP looks cool ! and it's free?? (via The Gunderloy )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TaskSwitchXP - free, cooler task switching By Roy Osherove October 12, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 12, 2004; technical details may be outdated. Ooh! [TaskSwitchXP looks cool](http://taskswitchxp.sourceforge.net/sshots.html)! and it's free?? _(via_ [_The_ Gunderloy](http://www.larkware.com/Articles/TheDailyGrind478.html)_)_ ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Oct 15, 2004 ### [\[Tools and Addins\] : SharpTools, web controls and various utilities - free!](https://osherove.com/blog/2004/10/15/tools-and-addins-sharptools-web-controls-and-various-utiliti.html) - Oct 14, 2004 ### [Unread Gmail messages through an RSS feed? coolness.](https://osherove.com/blog/2004/10/14/unread-gmail-messages-through-an-rss-feed-coolness.html) - Sep 3, 2004 ### [Review - Resharper](https://osherove.com/blog/2004/9/3/review-resharper.html) - Sep 3, 2004 ### [Programs I can't live without](https://osherove.com/blog/2004/9/3/programs-i-cant-live-without.html) --- title: "Introducing \"Project Distributor\" - your .Net file and idea sharing ground" url: "https://osherove.com/blog/2004/10/12/introducing-quotproject-distributorquot-your-net-file-and-id.md" canonical: "https://osherove.com/blog/2004/10/12/introducing-quotproject-distributorquot-your-net-file-and-id.html" published: "2004-10-12T23:47:00" updated: "2004-10-12T23:47:00" tags: [".Net Quotations", "Cool sites"] author: "Roy Osherove" description: "Darren Neimke (the person responsible for the beauty that is RegexLib.Com ) has created another cool web project: Project Distributor The idea - You have a cool code snippet, or a cool tool, or a cool anything to do…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing "Project Distributor" - your .Net file and idea sharing ground By Roy Osherove October 12, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published October 12, 2004; technical details may be outdated. [Darren Neimke](http://weblogs.asp.net/dneimke/) (the person responsible for the beauty that is [RegexLib.Com](http://www.regexlib.com/)) has created another cool web project: [**Project Distributor**](http://markitup.aspxconnection.com/) **The idea -** You have a cool code snippet, or a cool tool, or a cool _anything_ to do with code that you want to share - that's the place to get to. I know I was looking for a place like that when I began this blogging thing. You can create your own project pages up there and upload your binary files, snippets and ideas. Then people can come to the site, or even subscribe via RSS to the site news, and read all about your cool idea. Think "GotDotNet" only workable and simpler. This is not an open source project platform like SourceForge. just a place to share your ideas and stuff - which you have nowhere on the world to put and let everyone know about it. Heck - I'd just come out with The Regulator, I'd probably put that in there myself. _(p.s - there are more things to do inside - but you'll have to find out for yourself what they are)_ _This is of course work in progress but Darren is [working on it](http://weblogs.asp.net/dneimke/archive/2004/10/11/240687.aspx) as I write this._ Great job Darren! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 1, 2004 ### [What's up?](https://osherove.com/blog/2004/11/1/whats-up.html) - Oct 13, 2004 ### [TopXML releases the System.XML reference online](https://osherove.com/blog/2004/10/13/topxml-releases-the-systemxml-reference-online.html) - Oct 7, 2004 ### [TDD brain teaser - hope I won](https://osherove.com/blog/2004/10/7/tdd-brain-teaser-hope-i-won.html) - Oct 3, 2004 ### [Some news while I was gone](https://osherove.com/blog/2004/10/3/some-news-while-i-was-gone.html) --- title: "Introducing the Osherove.Interception framework" url: "https://osherove.com/blog/2004/10/12/introducing-the-osheroveinterception-framework.md" canonical: "https://osherove.com/blog/2004/10/12/introducing-the-osheroveinterception-framework.html" published: "2004-10-12T04:17:00" updated: "2004-10-12T04:17:00" tags: [".Net Original"] author: "Roy Osherove" description: "Following the Nunit Extensibility framework , I did some thinking and made a More generic framework for interception ability. That means that you can create your own interception attributes not only for unit testing but…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing the Osherove.Interception framework By Roy Osherove October 12, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published October 12, 2004; technical details may be outdated. Following the [Nunit Extensibility framework](https://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx), I did some thinking and made a More generic framework for interception ability. That means that you can create your own interception attributes not only for unit testing but for real world applications as well. the new solution consists of more real world examples (well, one, but a cool one). The coolest example so far is an idea triggered by [Peli](http://blog.dotnetwiki.org/) \- it's a Caching attribute. In this case I created an object that has properties and methods that have an \[AutoCache\] attribute on them. this makes them automatically return values from a simple cache object. Actually - the attribute takes care of everything so the properties and methods actually return NULL. Yep - it magically just works. Give it a shot. I like this idea and I think it might have a future. what do you think? **Download:** [http://teamagile.com/downloads/TeamAgile.ApplicationBlocks.Interception.zip](http://teamagile.com/downloads/TeamAgile.ApplicationBlocks.Interception.zip) Example: public class MyDataObject:CachedPropertyBag {       \[AutoCached("CustomerList")\]       public string\[\] GetCustomerList()       {          //the beauty here is that any callers to this method will actually          //get a string array with 3 items in it.          //can you say "automagically", boys and girls?             return null;       } } ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 15, 2004 ### [Solving Team Development with web projects hell](https://osherove.com/blog/2004/10/15/solving-team-development-with-web-projects-hell.html) - Oct 15, 2004 ### [\[Tools and Addins\] : SharpTools, web controls and various utilities - free!](https://osherove.com/blog/2004/10/15/tools-and-addins-sharptools-web-controls-and-various-utiliti.html) - Oct 12, 2004 ### [\[Rediscovered\] Advanced debugging tips and stuff you never knew about the "Find" combo box](https://osherove.com/blog/2004/10/12/rediscovered-advanced-debugging-tips-and-stuff-you-never-kne.html) - Oct 5, 2004 ### [Introducing: XtUnit . An Unofficial Unit Testing Extensibility Framework - Add new attributes to NUnit or MbUnit easily!](https://osherove.com/blog/2004/10/5/introducing-xtunit-an-unofficial-unit-testing-extensibility.html) --- title: "[Rediscovered] Advanced debugging tips and stuff you never knew about the \"Find\" combo box" url: "https://osherove.com/blog/2004/10/12/rediscovered-advanced-debugging-tips-and-stuff-you-never-kne.md" canonical: "https://osherove.com/blog/2004/10/12/rediscovered-advanced-debugging-tips-and-stuff-you-never-kne.html" published: "2004-10-12T00:27:00" updated: "2004-10-12T00:27:00" tags: [".Net Original"] author: "Roy Osherove" description: "I just \"re-discovered\" an old post of mine relating to some cool debugging tricks. Its amazing I forgot all about these cool tricks and it was fun to rediscover them. I bet some of you could benefit from them (again).…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Rediscovered\] Advanced debugging tips and stuff you never knew about the "Find" combo box By Roy Osherove October 12, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published October 12, 2004; technical details may be outdated. _I just "re-discovered" an old post of mine relating to some cool debugging tricks. Its amazing I forgot all about these cool tricks and it was fun to rediscover them. I bet some of you could benefit from them (again)._ _So - as they say, "Let the recycling begin!"_ [**Advanced debugging tips and stuff you never knew about the "Find" combo box**](https://weblogs.asp.net/rosherove/archive/2003/07/08/9793.aspx) 1) **You can set breakpoints on the callstack** window as well - just select the call and hit F9 or right click. great for recursive functions. 2**) You can set individual breakpoints on different expressions** on the same line bye setting the cursor in the specific expression and hitting F9 3) **CTRL+B - advanced breakpoint properties dialog**(if you didn't know this already) 4) **You can set a breakpoint directly on a specific method in a class if you know their names**. Just write down the "class.method" in the "Function" tab of the breakpoint properties dialog and you'll save yourself lots of time in finding that point in code and pressing F9. **Notices**: - It's case sensitive if you're using a case-sensitive language - The method name might not show up in C++ debugging if it's hidden in a DEFINE - You must select the correct language in the breakpoint dialog. - Oh one more thing - if youre using managed C++ you'll have to prefix the debugging expression with "MC::" so to set a break on class MyClass with function MyFunc you'd have to write "MC::MyClass::MyFunc" in the breakpoint dialog. 5) **You can write breakpoints that break on calls to the framework classes**. for example - you could write in the breakpoint dialog - "Console.WriteLine" and you'll break into disassembly whenever you call that function(You'll get a long list of "child" breakpoints for each of that method's overloads in the breakpoint window) You can also break on properties, but you'll have to prefix the property name with a "get\_" or "set\_" prefix. 6)(best one) **Auto-search for methods to breakpoint on.** In the breakpoint dialog, if you type just the name of a method that you know exists, and that method is unique in the application, you'll automatically set a breakpoint there, without the need to specify class name. **BUT** - if you have overloads to that method, or it exists in more than one namespace, you get a list of all the available methods and overloads, allowing you to select on which ones you'd like to set a breakpoint, and the best part - you have an "All" button to quickly set a breakpoint on all of them. If you'e debugging C++ - you can write the \[name of a class\]+ "." and you'll get a list of all members that can be debugged. note: DON'T try this in other languages - you'll get a very nast crash if you do! 7)**A few things you should have known about the "Find" combo on VS.NET's main toolbar:** - If you type the name of a solution file or any other file that is somehow related to the project or is in the INCLUDE environment variable and then press CTRL+SHIFT+G - VS.Net will open that file in the eidotr for editing. - If you write the name of a method (or class.method) like in the breakpoint dialog and press F9 - you'll get the same functionlity like in the breakpoint dialog. - If you type in ">" in the find combo - you'll see that it turns into a run of the mill command line! (including intellisense and all) \[Much of this was learned from the book "[Debugging Applications for Microsoft .NET and Microsoft Windows](https://www.amazon.com/exec/obidos/ASIN/0735615365/qid=1057615405/sr=8-1/ref=sr_8_1/iserializable-20)"\] and here's a nice tip. **Imagine getting a nasty exception messagebox** (or any other message box in windows)(sounds familiar?). Try pressing CTRL+C while the messagebox is still open. then open notepad and press CTRL+V. Have fun! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 15, 2004 ### [\[Tools and Addins\] : SharpTools, web controls and various utilities - free!](https://osherove.com/blog/2004/10/15/tools-and-addins-sharptools-web-controls-and-various-utiliti.html) - Oct 12, 2004 ### [Introducing the Osherove.Interception framework](https://osherove.com/blog/2004/10/12/introducing-the-osheroveinterception-framework.html) - Oct 5, 2004 ### [Introducing: XtUnit . An Unofficial Unit Testing Extensibility Framework - Add new attributes to NUnit or MbUnit easily!](https://osherove.com/blog/2004/10/5/introducing-xtunit-an-unofficial-unit-testing-extensibility.html) - Oct 3, 2004 ### [Upcoming talks and webcasts I'm involved with](https://osherove.com/blog/2004/10/3/upcoming-talks-and-webcasts-im-involved-with.html) --- title: "Sometimes I'm simply frustrated at the qualification game" url: "https://osherove.com/blog/2004/10/10/sometimes-im-simply-frustrated-at-the-qualification-game.md" canonical: "https://osherove.com/blog/2004/10/10/sometimes-im-simply-frustrated-at-the-qualification-game.html" published: "2004-10-10T23:35:00" updated: "2004-10-10T23:35:00" tags: ["Off Topic"] author: "Roy Osherove" description: "and that's all I'm gonna say on this matter. (were you lucky to read this post before I changed my mind on it ? don't tell me..)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Sometimes I'm simply frustrated at the qualification game By Roy Osherove October 10, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 10, 2004; technical details may be outdated. and that's all I'm gonna say on this matter. _(were you lucky to read this post before I changed my mind on it ? don't tell me..)_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 17, 2004 ### ['I'm not going to be your monkey'](https://osherove.com/blog/2004/10/17/im-not-going-to-be-your-monkey.html) - Oct 14, 2004 ### [Unread Gmail messages through an RSS feed? coolness.](https://osherove.com/blog/2004/10/14/unread-gmail-messages-through-an-rss-feed-coolness.html) - Oct 9, 2004 ### [ZoomQuilt?](https://osherove.com/blog/2004/10/9/zoomquilt.html) - Oct 4, 2004 ### [The Power of User Groups (and a request to Microsoft Israel)](https://osherove.com/blog/2004/10/4/the-power-of-user-groups-and-a-request-to-microsoft-israel.html) --- title: "ZoomQuilt?" url: "https://osherove.com/blog/2004/10/9/zoomquilt.md" canonical: "https://osherove.com/blog/2004/10/9/zoomquilt.html" published: "2004-10-09T22:14:00" updated: "2004-10-09T22:14:00" tags: ["Off Topic"] author: "Roy Osherove" description: "How cool/weird/interesting is this ? (Needs Shockwave) via Tim Marman" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ZoomQuilt? By Roy Osherove October 9, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 9, 2004; technical details may be outdated. How cool/weird/interesting is [this](http://www.ice.org/gallery.php?ids=+12196+56+84+12212+12225+12220+12192+96+12197+12226+12218+12201+12210+12219+12209+12191+12211+&art_id=12209)? (Needs Shockwave) _via_ [_Tim Marman_](http://weblogs.asp.net/tmarman/archive/2004/10/09/240198.aspx) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 14, 2004 ### [Unread Gmail messages through an RSS feed? coolness.](https://osherove.com/blog/2004/10/14/unread-gmail-messages-through-an-rss-feed-coolness.html) - Oct 10, 2004 ### [Sometimes I'm simply frustrated at the qualification game](https://osherove.com/blog/2004/10/10/sometimes-im-simply-frustrated-at-the-qualification-game.html) - Oct 4, 2004 ### [The Power of User Groups (and a request to Microsoft Israel)](https://osherove.com/blog/2004/10/4/the-power-of-user-groups-and-a-request-to-microsoft-israel.html) - Oct 3, 2004 ### [No blogger list on weblogs.asp.net?](https://osherove.com/blog/2004/10/3/no-blogger-list-on-weblogsaspnet.html) --- title: "TDD brain teaser - hope I won" url: "https://osherove.com/blog/2004/10/7/tdd-brain-teaser-hope-i-won.md" canonical: "https://osherove.com/blog/2004/10/7/tdd-brain-teaser-hope-i-won.html" published: "2004-10-07T00:47:00" updated: "2004-10-07T00:47:00" tags: [".Net Quotations", "Agile Related"] author: "Roy Osherove" description: "Update : Yep - I won :) I always wanted a keychain light thingy gizmo. Thanks Jonathan!! Gosh, I hope I got the answer to this TDD brain teaser from Jonathan Cogley right. What do you think? Got a better answer? Great…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD brain teaser - hope I won By Roy Osherove October 7, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published October 7, 2004; technical details may be outdated. _**Update**: Yep - I won :) I always wanted a keychain light thingy gizmo. Thanks Jonathan!!_ --- Gosh, I hope I got the answer to [this TDD brain teaser](http://weblogs.asp.net/jcogley/archive/2004/10/06/238986.aspx)  from [Jonathan Cogley](http://weblogs.asp.net/jcogley) right. What do you think? Got a better answer? Great idea Jonathan. I'd love to see more of these teasers. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 13, 2004 ### [TopXML releases the System.XML reference online](https://osherove.com/blog/2004/10/13/topxml-releases-the-systemxml-reference-online.html) - Oct 12, 2004 ### [Introducing "Project Distributor" - your .Net file and idea sharing ground](https://osherove.com/blog/2004/10/12/introducing-quotproject-distributorquot-your-net-file-and-id.html) - Oct 3, 2004 ### [Some news while I was gone](https://osherove.com/blog/2004/10/3/some-news-while-i-was-gone.html) - Sep 21, 2004 ### [MbUnit 2.21.1.0 RC1 released (and some nifty nifty features!)](https://osherove.com/blog/2004/9/21/mbunit-22110-rc1-released-and-some-nifty-nifty-features.html) --- title: "Twilight-Zone problems" url: "https://osherove.com/blog/2004/10/6/twilight-zone-problems.md" canonical: "https://osherove.com/blog/2004/10/6/twilight-zone-problems.html" published: "2004-10-06T07:16:00" updated: "2004-10-06T07:16:00" tags: ["Blogging"] author: "Roy Osherove" description: "We all had to deal with Twilight-zone problems at one time or another. This one sounds very familiar (as well as the solution). what I like about the heading is that when you get into these problems its like you're in a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Twilight-Zone problems By Roy Osherove October 6, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 6, 2004; technical details may be outdated. We all had to deal with Twilight-zone problems at one time or another. [This one](http://weblogs.asp.net/orron/archive/2004/10/06/238374.aspx) sounds very familiar (as well as the solution). what I like about the heading is that when you get into these problems its like you're in a twilight zone - where everything works back wards than you thought and every move you make make for a nonsensical result. Oh yeah. been there, done that. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Nov 1, 2004 ### [The way it ought to be - Microsoft and feedback](https://osherove.com/blog/2004/11/1/the-way-it-ought-to-be-microsoft-and-feedback.html) - Oct 15, 2004 ### [Best Independent Tech Blog Readers Choice Awards](https://osherove.com/blog/2004/10/15/best-independent-tech-blog-readers-choice-awards.html) - Oct 5, 2004 ### [The blogs I read](https://osherove.com/blog/2004/10/5/the-blogs-i-read.html) - Oct 3, 2004 ### [No blogger list on weblogs.asp.net?](https://osherove.com/blog/2004/10/3/no-blogger-list-on-weblogsaspnet.html) --- title: "Introducing: XtUnit . An Unofficial Unit Testing Extensibility Framework - Add new attributes to NUnit or MbUnit easily!" url: "https://osherove.com/blog/2004/10/5/introducing-xtunit-an-unofficial-unit-testing-extensibility.md" canonical: "https://osherove.com/blog/2004/10/5/introducing-xtunit-an-unofficial-unit-testing-extensibility.html" published: "2004-10-05T17:26:00" updated: "2004-10-05T17:26:00" tags: [".Net Original", "Agile Related"] author: "Roy Osherove" description: "Update : I've uploaded a more complete version of the framework and also changes the file name. please get it from here: http://www.teamagile.com/downloads/TeamAgile.XtUnit.Bin.zip…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing: XtUnit . An Unofficial Unit Testing Extensibility Framework - Add new attributes to NUnit or MbUnit easily! By Roy Osherove October 5, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published October 5, 2004; technical details may be outdated. **Update**: I've uploaded a more complete version of the framework and also changes the file name. please get it from here: [http://www.teamagile.com/downloads/TeamAgile.XtUnit.Bin.zip](http://www.teamagile.com/downloads/TeamAgile.XtUnit.Bin.zip) [http://www.teamagile.com/downloads/TeamAgile.XtUnit.src.zip](http://www.teamagile.com/downloads/TeamAgile.XtUnit.src.zip) if you have the earlier version.  (and just so you know - it works _perfectly_ with the [TestDriven.Net](http://www.testdriven.net/) tool suite) --- One of the things that have bothered me the most since I got into the whole "Add database rollback to your unit tests" thing, is how much work it takes to make your test suite use this feature. I actually went and made a new binary of the NUnit Framework to support this new attribute. All this because there is no clear extensibility model for NUnit these days. Peli, on the other hand has a very nice way of extending MbUnit, but it still entails recompiling his library for this to work (or am I wrong?) so - an idea came to me. A while ago [Peli](http://blog.dotnetwiki.org/) told me he had just found out about ContextBoundObjects and the ability to "intercept" method calls for pre and post processing. He said it might have some cool things that can be used with unit testing but we couldn't find something that was really cool to do with it. The other day, while reading [this nice article](http://www.codeproject.com/csharp/AspectIntercept.asp) about implementing interception in your code, I got an idea: Maybe interception and Contexts are the best way for extensibility? So, I gave it a shot. And it turns out pretty darn cool I have to say. **Introducing the XtUnit.Framework project** With this project you are now able to add any attribute you can think of to you NUnit (or any other xUnit tests) with the ease of simply deriving from a base class. In the solution that you can download you will find 3 projects: - **XtUnit.Framework:** The Extensibility framework base classes (2 of them - one to derive your test fixtures from, and one if you want to create your own attributes) - _**XtUnit.Extensions.Royo**_ is a project that I made that uses these bases classes to add two attributes. The the now known \[Rollback\] attribute, and the second one is a simple \[Tracing\] Attribute. You can see the code and realize how simple it really is. - **XtUnit.SampleTests:** a sample project with one simple fixture that uses the custom attributes. now here are the cool things: - You can now **\*fully\* debug** and step into your tests, and the \[Rollback\] attribute works perfectly! -  **You are not depending on any specific framework**! Simply compile the XtUnit.Framework and XtUnit.Extensions.Royo projects with your Testing framework of choice and that's that! no more NunitX variants, thank god! Yes. This means you can use your existing NUnit 2.x projects with these attributes and even add your won. Just add these two projects to your solution and you're done. - It is **very easy to create your own attributes** (and you can see how easy in the XtUnit.Extensions.Royo project) I'd love to get your feedback. Have fun :) I'd like to thank [Jamie](http://weblogs.asp.net/nunitaddin) for helping me solve two simple and annoying bugs I just couldn't find with my thick head. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 12, 2004 ### [Introducing the Osherove.Interception framework](https://osherove.com/blog/2004/10/12/introducing-the-osheroveinterception-framework.html) - Oct 12, 2004 ### [\[Rediscovered\] Advanced debugging tips and stuff you never knew about the "Find" combo box](https://osherove.com/blog/2004/10/12/rediscovered-advanced-debugging-tips-and-stuff-you-never-kne.html) - Oct 3, 2004 ### [Upcoming talks and webcasts I'm involved with](https://osherove.com/blog/2004/10/3/upcoming-talks-and-webcasts-im-involved-with.html) - Oct 3, 2004 ### [DataSet hell - "Failed to enable constraints. One or more rows contain values...."](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) --- title: "The blogs I read" url: "https://osherove.com/blog/2004/10/5/the-blogs-i-read.md" canonical: "https://osherove.com/blog/2004/10/5/the-blogs-i-read.html" published: "2004-10-05T00:29:00" updated: "2004-10-05T00:29:00" tags: ["Blogging"] author: "Roy Osherove" description: "In case you were wondering - here's the current list of blog subscriptions in my news aggregator, RSS Bandit : /downloads/royo.opml.xml" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The blogs I read By Roy Osherove October 5, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 5, 2004; technical details may be outdated. In case you were wondering - here's the current list of blog subscriptions in my news aggregator, [RSS Bandit](http://www.rssbandit.org/): [/downloads/royo.opml.xml](https://osherove.com/downloads/royo.opml.xml)  ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 15, 2004 ### [Best Independent Tech Blog Readers Choice Awards](https://osherove.com/blog/2004/10/15/best-independent-tech-blog-readers-choice-awards.html) - Oct 6, 2004 ### [Twilight-Zone problems](https://osherove.com/blog/2004/10/6/twilight-zone-problems.html) - Oct 3, 2004 ### [No blogger list on weblogs.asp.net?](https://osherove.com/blog/2004/10/3/no-blogger-list-on-weblogsaspnet.html) - Sep 16, 2004 ### [No Fun Intended](https://osherove.com/blog/2004/9/16/no-fun-intended.html) --- title: "The Power of User Groups (and a request to Microsoft Israel)" url: "https://osherove.com/blog/2004/10/4/the-power-of-user-groups-and-a-request-to-microsoft-israel.md" canonical: "https://osherove.com/blog/2004/10/4/the-power-of-user-groups-and-a-request-to-microsoft-israel.html" published: "2004-10-04T22:58:00" updated: "2004-10-04T22:58:00" tags: ["Off Topic"] author: "Roy Osherove" description: "The Event, The Card, and the amazing disappearing act Almost a year ago, at some random event, (Teched Israel 2004?) Microsoft Israel held a special lunch for user group members and leaders. It was quite nice and all…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Power of User Groups (and a request to Microsoft Israel) By Roy Osherove October 4, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 4, 2004; technical details may be outdated. **The Event, The Card, and the amazing disappearing act** Almost a year ago, at some random event, (Teched Israel 2004?) Microsoft Israel held a special lunch for user group members and leaders. It was quite nice and all the user group leaders got up and talked to the microphone and introduced themselves while people were chewing away at their plates. Michal Geva (Who is heading most of the community and marketing operations at MS Israel is I'm not mistaken) was also there congratulating everyone and inviting everyone to attend more user group meetings. The General Manager of MS Israel, Arye Scope, also spoke of the importance of user groups for Microsoft. All was fine and dandy, and there was even a little surprise: Special "User Group Member" cards were handed out to attendees at the lunch. They look a lot like a MCP cards with an ID and everything only no names. They just say "Microsoft User Group Member" with a member ID. Michal Geva then continued to say that in the very near future these cards will hold special benefits to their holders in the form of discounts on items, events and other swag of some sort. I liked the Idea. MS Israel is trying to come to grips with the great technology community that is growing here in Israel right under their nose. Those cards were a tip of an iceberg that has been slowly coming out of the water ever since. In every occasion MS delegates are telling audiences about the benefits of user groups and what MVPs are all about (I have to say that most people I know from the industry still have no idea what a Microsoft MVP is  or a user groups is until I tell them, at which point the immediately forget all about it which is a shame, and don't get me started on Regional Directors, oh dear). So the trend is continuing to this day but I still don't think its enough. In typical Israeli style where most jobs are done in a half assed manner, I still hold the user group member card in my wallet, but **have not heard about it even once** since that special occasion. In fact I am thinking of selling it on e-bay for a high bid since I don't know of a way anyone who has not been to that special lunch could receive it if they wanted to today. It wasn't mentioned in any user group meeting since then (and I attend most of them, in most of the developer groups), they haven't been mentioned by MS delegates in any other occasion, and frankly I think someone just forgot that they exist. And that's a shame. **User groups need to have their glory days.**  Those cards were a great way to get there**.** **Before we continue** Before I continue I have to blurb a little about why user groups are so important and what user groups are anyway. People just don't realize just how important a user group attendance really is to the average developer. Do you, oh dear reader of this blog, ever attend a user group? Have you even **heard** of user groups? If so, why didn't you go? [Go find out about user groups you might be interested in **right now**](http://www.microsoft.com/israel/usergroups). **What is a user group?** A user group is a group of people that meet, usually on a monthly basis, to hear a lecture about a specific technical issue. A meeting usually last around 3 hours with a break in the middle, and sometimes a little Q&A between the members of the group. Meetings are usually held at the Microsoft Israel facilities in Raanana (near Amdocs) and are **totally free**. The user groups managers are **not** Microsoft employees, but are developers just like you and me, who cared so much about what they do that they opened a group to talk about it and learn from each other. There are about 7 user groups devoted to Microsoft developer matters in Israel, most of them can be found on the site I mentioned above. There are also plenty of groups that talk about system administration and office solutions (as in Excel and Word and OneNote and so on). The presentations at each group are decided by the group leaders, not by Microsoft, and can vary in topics a lot. If you come to a .net user group you're likely to hear a lecture about anything from Reflection and Winforms data binding, to application architecture design or BizTalk integration. Anything goes and you can even suggest lectures of your own if you're up to it. Lecturers range from your everyday developers that have something they are passionate about, to world class presenters that lecture in Tech-Ed, DevDays, PDC and other well known conferences. And its **all free**. Think of it - free knowledge. Can you turn that down? **Bring back the card** Now - back to the membership card.User groups are great, but they need more attention. A membership card that makes your friends jealous is a great way to induce such a reaction. Only no one is doing anything about it. So, if anyone at MS Israel is reading this (and I'm almost sure at least [one person](http://blogs.msdn.com/yosit) does), you should -re-introduce the card. You should give benefits to card holders such as: \- 30% discount to purchase a MS press book at a conference booth \- 20% discount on conference tickets \- 50% discount on MCP exams \- A dedicated mailing list per user group with the ID as a user id \- free shirts at events \- I bet there are many more things Bring back the card, or lose my respect on this issue, and of all those who actually believed you when you said you were going somewhere with this. **You're silly if you don't attend at least one user group meeting** Funnily - a lot of people actively choose not go there, simply because they don't don't how important it is to be there. Most of the people I know that actively (and in a most silly fashion) **choose** not to go usually have reasons to do with priorities. That is - a job that can't wait or family responsibilities that can't wait. bulls\*\*t. A user group meets usually **once a month**. on a _known_ date. If you _really_ want to be there you can most certainly schedule your time to attend one a month from now. A scheduling speaker I once heard asked "If you had a funereal, would you still be too busy to attend? if not, than its just a matter of setting your priorities straight" and he was right. I treat user group meetings as a very serious and important matter. It is one of the best ways to grow, leave the cocoon that you live in inside you current development job and see the world through the eyes of other people, hear conflicting views, be able to ask other people tough questions and being able to share what you know with others who are just as passionate about what they do as you are, to hear great lectures from various people about subjects that you don't get a chance to touch on in your current position or may have never even heard of.  I know more than a few people that I've literally had to drag into such a meeting, and are now attending 2 or 3 different user group meetings each month, and love every minute of it. One of them told me that she suddenly "discovered a world that she didn't know existed" after coming from a lecture about hardcore debugging. and that was a cool feeling. Don't be scared of just showing up to a meeting. Anyone can attend and you don't even have to pre-register to get there. **Just get there**. it's not a big barbecue and you don't really have to talk to anybody if you don't want to. **How I got started with user groups** When I first came to a user group (it was the [VB user group](http://www.renaissance.co.il/ivbug/) run by [Jackie Goldstein](http://weblogs.asp.net/jackieg)) I was pretty spooked to come in alone. but it was nice. I came in, saw other people not talking to anyone just as I was and other people talking with their friends, and a big room with chairs facing a small stage. So I just sat there and waited until the talk started, like many other folks, thinking to myself. It was pretty nice and there was a certain atmosphere of "buzz" in the air. People were coming there to actually learn new stuff, and it was fun to be with people who wanted the same as me. but I didn't talk to anyone on that first meeting. A few meetings later I started to greet some people that were starting to look familiar, nodding my head when walking in. some meetings later I started having conversations with people about the lectures, and started making friends. that's how I met [Jackie](http://weblogs.asp.net/jackieg), and [Udi](http://www.thesoftwaresimplist.com/) and many other people. (Will I meet _you_ there too someday? Be sure to say hi when you come in!) I didn't have a blog at the time, but as my blog started, more and more people approached me saying hi and that was nice too. Today coming in to a user group meeting is a little like coming to a bar full of friends (but without the beer), geeky friends. Its fun and entertaining and even if the lecture of the days is not the greatest I still get to sit and talk with people and share stuff I've gone through during the past weeks. **The benefits of attending a user group are more than you think** So making geeky friends is part of why user groups are good for you, but again - the bigger part is learning about stuff you would never have found yourself. Also, networking is a good part and often is a great way to hear about new jobs opening up and maybe getting a recommendation from the friend you know at the group. Now that's gotta be a great incentive - _go to a user group, find a job_. Well, it's not _that_ simple but its been known to happen. Here's another important thing to keep in mind- if I interview two candidates with the same skills and knowledge, and one of them attends user groups regularly and the other does not, the one that goes to user groups will have a clear advantage to me. Why? because they've proved that they are serious about what they do, that they want to learn more, that they are involved, and that they know what's going on around them, and that they are more **connected** to the outside world. _Connected_ people are more valuable than less connected people in our business. _Connected_ people can pick up a phone or send an IM to their user group friend to help them solve that difficult problem they are facing and have no idea how to solve. Connected friends have **more means to solve problems**. And that, my friends, is one of the biggest benefits that user groups have - they widen your knowledge network thus giving you much much more edge over the competition. BTW, the same thing goes for blogs, and even in a bigger way, since the network can now be international, not just regional. Think about these things the next time you decide that 3 hours of work are more important (yes yes, there are times and exceptions to a rule, but usually 3 hours at a user group are a much better investment long term,especially when you can return those "lost" 3 hours at work the next day if you need to). See you there? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 10, 2004 ### [Sometimes I'm simply frustrated at the qualification game](https://osherove.com/blog/2004/10/10/sometimes-im-simply-frustrated-at-the-qualification-game.html) - Oct 9, 2004 ### [ZoomQuilt?](https://osherove.com/blog/2004/10/9/zoomquilt.html) - Oct 3, 2004 ### [No blogger list on weblogs.asp.net?](https://osherove.com/blog/2004/10/3/no-blogger-list-on-weblogsaspnet.html) - Oct 3, 2004 ### [A new book: Network science, and what SOA has to do with it](https://osherove.com/blog/2004/10/3/a-new-book-network-science-and-what-soa-has-to-do-with-it.html) --- title: "Upcoming talks and webcasts I'm involved with" url: "https://osherove.com/blog/2004/10/3/upcoming-talks-and-webcasts-im-involved-with.md" canonical: "https://osherove.com/blog/2004/10/3/upcoming-talks-and-webcasts-im-involved-with.html" published: "2004-10-03T18:12:00" updated: "2004-10-03T18:12:00" tags: [".Net Original"] author: "Roy Osherove" description: "I'll be doing a webcast about Test Driven Development using Nunit for Microsoft Israel. It's going to take place on the the 23rd of November . I'll give you a heads up with a direct schedule when I know more. It will be…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Upcoming talks and webcasts I'm involved with By Roy Osherove October 3, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published October 3, 2004; technical details may be outdated. I'll be doing a webcast about Test Driven Development using Nunit for Microsoft Israel. It's going to take place on the the 23rd of November . I'll give you a heads up with a direct schedule when I know more. It will be in Hebrew and will feature a lot of stuff I usually show at the TDD workshop (which I **know** some of you are looking forward to - I promise I will bring it back) . Also - in the upcoming Israel DevDays (December I think) I'll be doing two lectures. The first one will be about TDD in .Net and the second one will be about the top tools every .net developer should have installed. I promise some really cool stuff :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 12, 2004 ### [\[Rediscovered\] Advanced debugging tips and stuff you never knew about the "Find" combo box](https://osherove.com/blog/2004/10/12/rediscovered-advanced-debugging-tips-and-stuff-you-never-kne.html) - Oct 5, 2004 ### [Introducing: XtUnit . An Unofficial Unit Testing Extensibility Framework - Add new attributes to NUnit or MbUnit easily!](https://osherove.com/blog/2004/10/5/introducing-xtunit-an-unofficial-unit-testing-extensibility.html) - Oct 3, 2004 ### [DataSet hell - "Failed to enable constraints. One or more rows contain values...."](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) - Sep 22, 2004 ### [ANN: Optimized automatic control binder is out - and its fast!](https://osherove.com/blog/2004/9/22/ann-optimized-automatic-control-binder-is-out-and-its-fast.html) --- title: "No blogger list on weblogs.asp.net?" url: "https://osherove.com/blog/2004/10/3/no-blogger-list-on-weblogsaspnet.md" canonical: "https://osherove.com/blog/2004/10/3/no-blogger-list-on-weblogsaspnet.html" published: "2004-10-03T18:04:00" updated: "2004-10-03T18:04:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "So why is the blogger list now removed from the main page of weblogs.asp.net? I liked my name up there, with the number of posts near it... :(" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # No blogger list on weblogs.asp.net? By Roy Osherove October 3, 2004 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 3, 2004; technical details may be outdated. So why is the blogger list now removed from the main page of weblogs.asp.net? I liked my name up there, with the number of posts near it... :( ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 6, 2004 ### [Twilight-Zone problems](https://osherove.com/blog/2004/10/6/twilight-zone-problems.html) - Oct 5, 2004 ### [The blogs I read](https://osherove.com/blog/2004/10/5/the-blogs-i-read.html) - Sep 16, 2004 ### [No Fun Intended](https://osherove.com/blog/2004/9/16/no-fun-intended.html) - Sep 12, 2004 ### [Do I like the change to weblogs.asp.net? No I don't.](https://osherove.com/blog/2004/9/12/do-i-like-the-change-to-weblogsaspnet-no-i-dont.html) --- title: "Some news while I was gone" url: "https://osherove.com/blog/2004/10/3/some-news-while-i-was-gone.md" canonical: "https://osherove.com/blog/2004/10/3/some-news-while-i-was-gone.html" published: "2004-10-03T18:03:00" updated: "2004-10-03T18:03:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "- TestDriven.Net tool suite is on air - and it looks like an integrated solution that combines MbUnit and the NunidAddin into one mixed pile - allowing you to have all the power of MbUnit along with all the power of the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some news while I was gone By Roy Osherove October 3, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published October 3, 2004; technical details may be outdated.  - [TestDriven.Net](http://www.testdriven.net/wiki/)  tool suite is on air - and it looks like an integrated solution that combines [MbUnit](http://mbunit.tigris.org/) and the [NunidAddin](http://weblogs.asp.net/nunitaddin) into one mixed pile - allowing you to have all the power of MbUnit along with all the power of the Nunit-Addin. This, by the way, means that with that tool suite you'll be able to step into a test that contains a \[Rollback\] Attribute and you'll be debugging inside a COM+ 1.5 transaction. Ain't that sweet? Thanks Peli and Jamie. You two guys have done more for the Unit Testing in .Net world than anyone else ever since Nunit came along. \-[Refactor!](http://devexpress.com/?section=/Products/NET/Refactor) for .Net is a new Addin from the creators of CodeRush.  Some of the features look really really cool. Now if I could only have my way and have all the Addins I know and love run **at the same time**: CodeSmart, C# Refactory, Resharper and CodeRush . Can you do that people? \-[DotNetToolPak](http://dotnettoolpak.com/) - combines several useful free tools into one installable package. The Regulator is one of them. I'm honored! \-YAUTT (Yet Another Unit Testing Tool): [Zanebug](http://www.adapdev.com/zanebug/)   _(via_ [_tdd.com_](http://www.testdriven.com/modules/news/article.php?storyid=191)_)_ \-I just met [Alik Levin](http://xnetmentor.blogspot.com/) today at Microsoft and it was his first day there! **Congratulations** Alik :) Alik has been posting some great how-to movies in Hebrew about .Net on his blog. He also tells me that my name is doing the rounds at MS Israel. Now that can't be too bad, can't it? :) **How to stay updated after a vacation trip**: If you ever leave for a long long time and want to catch up on the blogsphere - Just go to [Larkware.com](http://www.larkware.com/) \- Mike Gunderloy picks up all the interesting tidbits throughout the day and blogs about them. A great way to stay informed, while reading sarcastic remarks from a cynical man about stuff you didn't think about.  All the news I just gave you came from his links. Great job Mike. Keep up the great writing (no. he's not paying me to write this) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 12, 2004 ### [Introducing "Project Distributor" - your .Net file and idea sharing ground](https://osherove.com/blog/2004/10/12/introducing-quotproject-distributorquot-your-net-file-and-id.html) - Oct 7, 2004 ### [TDD brain teaser - hope I won](https://osherove.com/blog/2004/10/7/tdd-brain-teaser-hope-i-won.html) - Sep 21, 2004 ### [MbUnit 2.21.1.0 RC1 released (and some nifty nifty features!)](https://osherove.com/blog/2004/9/21/mbunit-22110-rc1-released-and-some-nifty-nifty-features.html) - Sep 19, 2004 ### [Alik Levin has a blog - with short Hebrew movies on various ASP.Net topics](https://osherove.com/blog/2004/9/19/alik-levin-has-a-blog-with-short-hebrew-movies-on-various-as.html) --- title: "DataSet hell - \"Failed to enable constraints. One or more rows contain values....\"" url: "https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.md" canonical: "https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html" published: "2004-10-03T17:45:00" updated: "2004-10-03T17:45:00" tags: [".Net Original"] author: "Roy Osherove" description: "Important note: Hi folks. This post was written in 2004. Yes, people have been getting this for over 6 years . It’s 2011 now, and here you are, still stuck working on this crap. I highly suggest you read this , as an…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # DataSet hell - "Failed to enable constraints. One or more rows contain values...." By Roy Osherove October 3, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published October 3, 2004; technical details may be outdated. **Important note:** Hi folks. This post was written in 2004. Yes, people have been getting this for over 6 years**. It’s 2011 now, and here you are, still stuck working on this crap.**  [I highly suggest you read this](http://7enn.com/2011/07/04/appreciating-the-power-of-a-true-community/), as an alternative rout to solve your problems.  Thanks, Roy in 2011. \================================ Sunday, October 03, 2004 4:16 PM by [Drew Marsh](http://blog.hackedbrain.com/ "Drew Marsh") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” I remember this\[1\] and nope I never found a solution. :( \[1\] [http://weblogs.asp.net/dmarsh/archive/2002/06/16/492.aspx](http://weblogs.asp.net/dmarsh/archive/2002/06/16/492.aspx) Sunday, October 03, 2004 5:59 PM by Miki Watts #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” While i don’t have a way to identifying the problem column, i encountered this problem while doing a select and not specifying a field that must not be null, such as primary key. Apparently, the dataset fills in null for the non-selected column values, and then checks the contstraints, which of course fails. The solution is to select the non-null column as well. Sunday, October 03, 2004 6:46 PM by [Darren Neimke](http://regexblogs.com/DNeimke "Darren Neimke") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” Hi Roy, the 2 simplest ways to debug this are: a) Run the Sql statements in Query analyer and see what resulsets are returned. This will show what data might potentially be causing the issue. b) there’s a setting on the dataset (or datarelation, can’t remember now) called “EnforceConstraints” - or something - if you set this to false, the dataset should load fine and, again, you will be able to see what data is causing the issue. Sunday, October 03, 2004 6:58 PM by [Roy Osherove](http://www.iserializable.com/ "Roy Osherove") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” Darren - that’s exactly it - I don’t think I should even be doing these hhops to get the data I want. There should be a simpler way. Also Setting enforceCOnstraint on and off does not help. not when you have a dataset with 50 tables in it with relations on them…. Sunday, October 03, 2004 7:15 PM by [Darrell](http://dotnetjunkies.com/WebLog/darrell.norton/ "Darrell") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” I’ve always had luck going through and making sure the non-null columns had no null values returned from the database. Sunday, October 03, 2004 11:49 PM by [Sanjay Sheth](http://sastools.com/b2/ "Sanjay Sheth") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” The solution lies in the GetErrors method of the DataTable class: [http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataDataTableClassGetErrorsTopic.asp](http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataDataTableClassGetErrorsTopic.asp) Essentially, when I see the message above, I check the HasErrors property for each DataTable in the data set and then invoke the GetErrors method on the tables reporting errors. The GetErrors returns a collection of DataRows and you can invoke the .RowError property on the each of the error-stricken rows to find out just exactly what the problem is. Sunday, October 03, 2004 11:52 PM by [Sanjay Sheth](http://sastools.com/b2/ "Sanjay Sheth") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” I forgot to add the part about turning off the .EnableConstraints before the Fill. I normally enable the constraints again, only after the original Fill is complete. Then, you can catch the exception above and launch a error detection function which does what I described above. Monday, October 04, 2004 5:50 AM by [Jackie Goldstein](http://weblogs.asp.net/jackieg "Jackie Goldstein") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” Yes, Sanjay has laid out the way to go on this. Monday, October 04, 2004 10:52 AM by [Roy Osherove](http://www.iserializable.com/ "Roy Osherove") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” Sanjay - Thanks:) Tuesday, October 05, 2004 10:07 PM by [TrackBack](http://blogs.madtechnology.net/chris/archive/2004/10/05/483.aspx "TrackBack") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) DataSet hell - Thursday, December 09, 2004 11:29 PM by [TrackBack](http://weblog.protosystem.net/mlinnen/posts/192.aspx "TrackBack") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) DataSet Constraint issues Friday, June 23, 2006 9:16 AM by Lee #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” Hi, i’ve had the same problem but i don’t know how to turn off the .EnableConstraints property.  Appreciate if someone could help. Thanks Tuesday, June 27, 2006 11:35 AM by Alana #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” Try .EnforceConstraints = false; Monday, July 10, 2006 12:09 PM by Mike #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." Yes, but it still returns the error string. I can’t figure out how to identify what row failed, only what the error is. Even when you cycle through rows in error, there’s nothing to point back to the original row index or field values??? \[email removed\] Wednesday, July 19, 2006 2:37 PM by Joel #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." I ran into this problem as well, and it actually had nothing to do with null or unique values. The problem was caused by a discrepancy between the defined max size of a data column in my project’s XSD and the size in the database. When the call was made to fill the table adapter, the above error message appeared, apparently because one of the columns in the db was larger than the XSD / table adapter allowed for. As far as I know, there’s no meaningful way to parse and deal with this error message. Also, I couldn’t find a way to refresh the XSD, even after the reference to the problematic table in my data connections was updated. Best of luck, Joel Thursday, July 20, 2006 11:57 AM by Hans #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." Joel, thanx, you saved my day! Friday, July 21, 2006 12:42 PM by Greg #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." Saved my day too! As a test, I set all MaxLength values to -1. That proved it was a max column size issue. Now just have to narrow down which one. Greg Saturday, July 22, 2006 12:44 AM by dudo #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." Joel, thx, you saved my day 2! Sunday, July 30, 2006 8:39 AM by John #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: Failed to enable constraints. One or more rows contain values…. Here’s another quirk. I got the error when a select statment just returned 1 row. Why this happened is beyond me, but I have been altering the database and the DataSet a lot. The solution was to just remove the Table and TableAdapter from the DataSet and add everything again. Basically updating the DataSet by refreshing schema or adding columns doesn’t work. And the EnabledConstraints propery usally never affects this problem. If you don’t have your database design set in stone, the DataSet schema will mostlikely be obsolete, and cause these kind of errors. Btw, the table is never returned, so it is not possible to access the GetErrors() method. Tuesday, August 08, 2006 10:38 AM by [Dnote](http://www.dnote.nl/ "Dnote") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." I got this message after I’ve deleted a table from the database. Although I checked the querydesigner twice, DataSets have the habit of remembering stuff that is already gone. I had to remove a column from the dataset manually in the dataset designer in order to solve the problem. Monday, August 14, 2006 3:27 PM by Frustrated Bill #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." I got this error message by changing the length of a column when testing. The refresh schema and even rebuilding the dataset did not work. I also kept loosing my Objectdatasource references in VS. I had to shut it down and start it back up to see the datasources. After looking at these posts, I modified the data to fit the length constraint and magically everything worked. Once it worked once, I was able to type the extended text back in and it still worked? Tuesday, August 29, 2006 11:16 AM by Justin #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." I noticed that if I had one query with a join and another query without that joing on one tableadapter, I would get this error. Adding the additional join corrected the problem. Thursday, August 31, 2006 10:01 PM by Chris #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." I just went through this entire mess, and my fix was none of the above posts, but similar to Joel’s post on 7/19. I have 5 entries in the TableAdaptor, but when I really looked at the .XSD file, there were only 4 entries defined. I found the missing item, and regenerated it by opening the item, and clicking Finish. I checked the .XSD file again, and now there are 5 entries (as there should be). Now suddenly, the page is working again. Thanks go to everyone here, and especially to Joel for me! Sunday, September 03, 2006 10:43 AM by [Dnote](http://www.dnote.nl/ "Dnote") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." Another situation where this error can arise is when the result of the dataset is returning duplicate key values. This can happens because VS.NET assign a prim. key automatically on a column (with me always the first) of the dataset, while this column might not necessarily be primairy. Saturday, September 09, 2006 11:41 AM by Qun Wang #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) My way: I use xsd file, objectdatasource and sps as my programming mode. I encounter the problem too. I add a function to handle the table’s initial event in the xsd file’s codebehind file, looks like this in userdataset.vb: Partial Public Class UsersDataSet Partial Class PeoplesDataTable Private Sub PeoplesDataTable\_Initial(ByVal sender As System.Object, ByVal e As EventArgs) Handles Me.Initialized Me.Constraints.Clear() End Sub End Class Wednesday, September 13, 2006 12:35 PM by JCR #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." Joel, you are the man. Tuesday, September 19, 2006 5:32 PM by [Kyle](http://www.theorywebdev.com/ "Kyle") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." Make sure all your quieries in your table adapters are returning the same Schema (the same columns) if they are not .. make them or make new table adapters. This method solved my issue with this error. Monday, September 25, 2006 12:49 PM by Yaron #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." Sanjay, thanx again Friday, September 29, 2006 4:39 PM by [Hank](http://www.thesol.com/ "Hank") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." This post is what fixed it for me. The default Fill, GetData() query had to match my other parameterized query. “_\# re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” Make sure all your quieries in your table adapters are returning the same Schema (the same columns) if they are not .. make them or make new table adapters. This method solved my issue with this error._ ” Thanks to all who submitted a post! Saturday, September 30, 2006 4:51 AM by Jerry #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." Thanks Joel. You saved my day too! Thanks for his post on Wednesday, July 19, 2006 Tuesday, October 10, 2006 4:30 AM by Michael S. #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." I did it this way: try { this.myDataAdapter.Fill(myDataTable); } catch (System.Data.ConstraintException constrExc) { System.Data.DataRow\[\] rowsErr = myDataTable.GetErrors(); for (int i=0; i Friday, October 13, 2006 3:52 AM by Winter #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." I got this error after having changed a field in my database from int to nvarchar (string). I did not realize that was problem right away, since I had made the change some time before I started using the TableAdapter that it was called by. But after having searched for a few hours I found that the field was still declared as an int in the DataSet-code (and was not nullable as it had been when it was an int, hence the non-null violation?). I resolved it by removing the field (right-click and delete) from the TableAdapter and then putting it back by rewriting the select-phrase to include it. Maybe this is all that is necessary instead of redoing an entire TableAdaptor in some cases? Wednesday, November 08, 2006 5:00 AM by [Tansu](http://www.codebyts.com/ "Tansu") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." I had the same problem and setting the MaxValues to -1 did not help. What did the trick for me was that, my query was combining couple of tables in a stored procedure. Anyway, some of the ID fields in the table had Default values of DBNULL even though they were not nullable. So, I just changed them to default values as in the SQL Server and everything worked fine after that. Thursday, November 09, 2006 2:37 AM by another fix #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." I had the same issue. I located the problem by reducing the number of rows returned until the problem went away. Then I selected one EXTRA row in QA. the problem: returning multiple rows w/ the same primary key. I changed the fill command from: o\_da.fillSchema(o\_ds, SchemaType.Source) to: o\_da.Fill(o\_ds) —— problem solved. Thursday, November 09, 2006 5:03 PM by Taras #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." Kyle’s post fixed the problem for me. I tried appending a query with a different schema. The base schema returned all fields whereas the new query had to return only one field The fix was to create a separate table adapter. Monday, November 13, 2006 3:27 AM by [Fedor](http://www.geodb.ku.dk/ "Fedor") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - "Failed to enable constraints. One or more rows contain values…." John’s post helped me a lot. When working with the DataSet designer, and I do that a lot, a lot of things are automatically wired up for one. And this is exactly where things can go wrong and the only way out is rebuilding the tableadapter from scratch. Especially when, as John puts it, “your database design is not set in stone”. Friday, November 17, 2006 12:29 PM by [robert barber](http://[email removed]/ "robert barber") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” SOLVED!!! My dataset is based on a stored procedure.  The stored procedure returns early if anticapited business rules are not complied.  When returning on an error condition the columns selected prior to a return did not match the columns selected when the stored procedure completed its logic Wednesday, November 22, 2006 11:24 AM by Matt C #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” I had this problem in ASP.Net 2.0 when I had a dataset table containing BIT fields which allowed NULL values.  The table being returned (single record) contained a NULL value in one of my BIT fields.  The dataset (at least in 2.0) allows you to return “Empty” instead of NULL for string fields ONLY (this is under properties of each individual field in the dataset diagram).  For other field types, the only value it allows is “Throw Exception”. Great(!) Solved it for this one record by going into the table and replacing the NULL with False, manually. Longer term, if this is the reason for the error, this can be fixed by ensuring that NULL values are not permitted in your table, and instead setting a default value of (1) or (0) (i.e. true or false) in your BIT field. That’s what I did and the problem has gone away :-) Thursday, November 23, 2006 12:57 PM by duanxn #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” The same issue came up only when we upgrade the db to SQL Server 2005 for 2000, while the middle tier is always using .NET 2.0. As an example, one of the problematic sproc uspGetOrderItem is like: Select o.orderid, i.ItemName, i.Qty From order o join orderitem i on o.orderid = i.orderid. I replaced o.orderid in the select list with i.orderid. NO other code change at middle tier, and it worked! I feel lucky, but I cannot think of any reason why it worked on SQL Server 2000 but not on SQL Server 2005. Can someone help? Thursday, November 30, 2006 8:26 AM by Marja Klaver #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” I used a stored procedure that returned a different number of columns depending on a parameter. I changed the procedure so it always returns the same columns, and the problem is solved! Friday, December 15, 2006 6:35 AM by [Darren Wainwright](http://www.eidesign.co.uk/ "Darren Wainwright") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” I have this problem time to time and have yet never managed to actually solve it - but i have worked around it.. Say you have a table adapter with many methods in it and one of those methods is causing this problem - normally the case for me - just take this one method and give it it’s own table adapter. Seems that some very very tiny detail is conflicting between the methods of the adapter, rather than the stored procedures etc. just my thoughts. Tuesday, January 09, 2007 10:14 AM by Rami #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” This is an annoying issue in 2005. just do a try and catch, and save yourself the headache. Wednesday, January 24, 2007 11:02 AM by Siju #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” Hi, Thanks for all the comments posted here, they are definitely giving me new insights into Datasets. However, I am running into a problem that I can’t seem to solve. I have a dataset in my client application which has multiple tables and I have parent-child relationships and foreign key constraints set. Now when I fill the tables, I get row errors for the child table, that he value need to be present in the parent table. When debugging, I looked at the parent table and the values are there. So why is the child table still throwing errors? Anybody…?? Friday, January 26, 2007 10:32 PM by smith zhang #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” you must first fill the master table,second fill the detail table,maybe will help you to handle the question! good luckly! Friday, February 09, 2007 9:31 AM by arcturus #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” I get the error when I try to enable constraints after Merge. I’ve 143 tables in my dataset and tried to pinpoint the table giving me grief by using Haserror and Geterrors. But there werent any error in any of the tables. Any further suggestions? Thanx Wednesday, February 14, 2007 5:17 AM by Christophe #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” Got the error when databinding an objectDataSource to a repeater. Solved the problem by adding all the remaining columns (I’m not using) to the selectcommand. It works now, I’m happy again…(damn workarounds) thx alot everyone… Tuesday, March 20, 2007 1:33 PM by [Dennis Alzoubi](http://dennis.the-e.net/ "Dennis Alzoubi") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” I’ve got that error when I was using the strongly typed dataset, the solution that worked for me is that I’ve added “Distinct” keyword in the stored procedures that combine two or more tables in the returned final results while defining a primary key in the dataset. Friday, March 30, 2007 2:05 PM by iHateSTDs #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” I had a get statement that would not work with the schema of my table adaptor….after hours of insanity I decided to just add another table adapter based on the query I wanted to use (without the where clause), then added a select query with the where clause to the new table adapter. On my aspx page dropped in a new ObjectDataSource to use the new tableadaptor and it worked like a charm. For now on I will create seperate table adaptors for complex select queries. Hope this helps. Wednesday, April 11, 2007 12:18 PM by [Ed Giardina](http://www.edgiardina.com/ "Ed Giardina") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” With regards to Darren Wainwright’s comments, its because you have a mismatch between the TableAdapter and the specific query with regards to the amount of columns. If your TableAdapter is defined as Select \* FROM table\_a and your specific Fill Method/Get Method / Query is SELECT field1 FROM table\_a or SELECT DISTINCT field1 FROM table\_a and table\_a has more than one column,for instance, the exception will be thrown. I saw this by ‘previewing’ the data with the designer. (Right click on the Query in the designer, and choose preview). The fields not listed in the query were empty, and that’s what the exception is barking about. The TableAdapter Query must have the same columns as the individual Queries attached to it. It makes sense, if you think about it. The Fill/Get method of the TableAdapter is really creating a specific type of DataSet, and if you’re missing fields, the binding doesn’t work properly. Wednesday, April 18, 2007 12:04 AM by [Juan](http://none.com/ "Juan") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) re: DataSet hell - “Failed to enable constraints. One or more rows contain values….” Joel solution suited for me. Basically another developer changed the size of the column and when i did refresh schema the XSD didnt get refreshed as well. I went to check column by column and comparing it with my database and fix it up. Now all is cool. Thanks dude Monday, July 23, 2007 7:22 AM by [» First rule of blogging: Enable Anonymous Comments Community Hacker - Creating online communities and blogs, By Roy Osherove](http://communityhacker.com/first-rule-of-blogging-enable-anonymous-comments/ "TrackBack") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) » First rule of blogging: Enable Anonymous Comments Community Hacker - Creating online communities and blogs, By Roy Osherove Pingback from  » First rule of blogging: Enable Anonymous Comments Community Hacker - Creating online communities and blogs, By Roy Osherove Sunday, September 23, 2007 10:11 PM by [Brian Mains Blog](http://dotnetslackers.com/community/blogs/bmains/archive/2007/09/23/dataset-constraint-error.aspx "TrackBack") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) DataSet Constraint Error I was dealing with an error about "Failing to enable constraints". I was just added to this Wednesday, February 27, 2008 3:52 AM by [Community Blogs](http://weblogs.asp.net/rosherove/archive/2008/02/27/my-top-21-most-viewed-blog-posts.aspx "TrackBack") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) My top 21 Most Viewed Blog posts Here are the top 21 viewed pages on my blog in the past year and a half: Essential Software to install Monday, March 24, 2008 8:01 PM by [Programming Links Of The Day, 3/24 « 36 Chambers - The Legendary Journeys](http://36chambers.wordpress.com/2008/03/24/programming-links-of-the-day-324/ "TrackBack") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) Programming Links Of The Day, 3/24 « 36 Chambers - The Legendary Journeys Pingback from  Programming Links Of The Day, 3/24 « 36 Chambers - The Legendary Journeys Sunday, November 02, 2008 2:47 PM by [nateirwin.net » Blog Archive » ASP.NET DataSet Error: “Failed to enable constraints. One or more rows…”](http://nateirwin.aptanacloud.com/2007/07/03/aspnet-dataset-error-failed-to-enable-constraints-one-or-more-rows/ "TrackBack") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) nateirwin.net » Blog Archive » ASP.NET DataSet Error: "Failed to enable constraints. One or more rows…" Pingback from  nateirwin.net  » Blog Archive   » ASP.NET DataSet Error: "Failed to enable constraints. One or more rows…" Tuesday, February 10, 2009 11:47 AM by [Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.](http://www.iamshendy.ca/uncategorized/failed-to-enable-constraints-one-or-more-rows-contain-values-violating-non-null-unique-or-foreign-key-constraints "TrackBack") #### [#](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints. Pingback from  Failed to enable constraints. One or more rows  contain values violating non-null, unique, or foreign-key  constraints. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 5, 2004 ### [Introducing: XtUnit . An Unofficial Unit Testing Extensibility Framework - Add new attributes to NUnit or MbUnit easily!](https://osherove.com/blog/2004/10/5/introducing-xtunit-an-unofficial-unit-testing-extensibility.html) - Oct 3, 2004 ### [Upcoming talks and webcasts I'm involved with](https://osherove.com/blog/2004/10/3/upcoming-talks-and-webcasts-im-involved-with.html) - Sep 22, 2004 ### [ANN: Optimized automatic control binder is out - and its fast!](https://osherove.com/blog/2004/9/22/ann-optimized-automatic-control-binder-is-out-and-its-fast.html) - Sep 21, 2004 ### [One treeview I'm not going to download](https://osherove.com/blog/2004/9/21/one-treeview-im-not-going-to-download.html) --- title: "A new book: Network science, and what SOA has to do with it" url: "https://osherove.com/blog/2004/10/3/a-new-book-network-science-and-what-soa-has-to-do-with-it.md" canonical: "https://osherove.com/blog/2004/10/3/a-new-book-network-science-and-what-soa-has-to-do-with-it.html" published: "2004-10-03T17:32:00" updated: "2004-10-03T17:32:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm almost done with a new book that I got for my birthday - Linked: The New Science of networks By Albert-Laszlo Barabasi This wonderful book actually deals with new facet of science that is just beginning to grow on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A new book: Network science, and what SOA has to do with it By Roy Osherove October 3, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 3, 2004; technical details may be outdated. I'm almost done with a new book that I got for my birthday - [Linked: The](https://www.amazon.com/exec/obidos/ASIN/0452284392/iserializable-20) [New Science of networks](https://www.amazon.com/exec/obidos/ASIN/0452284392/iserializable-20) By [Albert-Laszlo Barabasi](http://www.nd.edu/~alb/) This wonderful book actually deals with new facet of science that is just beginning to grow on us - Super Networking. The idea that networks are found everywhere is at the bottom of this idea - and that these networks all present some basic undeniable properties which can be mathematically predicted. The Internet is an example of one such network. The nerve system is another. Food chains in animals present another example and business connections between companies and dealer are another. They all have in common some basic mathematical principles and **share the same mathematical behavior**. Its amazing to think about. I heartily recommend reading it (start with the [blurbs/reviews](http://www.nd.edu/~networks/linked/profile.html) if you like) Anyway - there are several properties of such networks. One of them is that they constantly grow. The other is that they have "hubs". In the Internet - a site such as google would be a hub - it collects many links to it and links to many other sites. Hubs exist all around us. [Scoble](http://scoble.weblogs.com/) is a hub of links - and the blogsphere (in my mind) would definitely constitute a linked network such as described in the book. A network of individuals whom you know is such a network and has hubs - people who have many friends and are connected. Another law of these networks is that they obey the power-law. In fact - Clay Shirley has written a while ago on the phenomenon of power-law [within the blogsphere](http://www.shirky.com/writings/powerlaw_weblog.html). Definitely worth a read. So here's an idea for you - perhaps we can classify the structure of code as a network that obeys the power-law? Referring to object oriented projects that have classes - we can start to dissect our code into links and junctions. A class that is used by another class (using a variable instance for example) can be said to have a link to that other class. If that other class is using other classes as well that use this same class together we can see a network of connections forming. Obviously some classes will be used more that others - those will be considered **hubs**. Since our code always changes we can definitely say that the network is growing (link between classes are added and removed constantly while refactoring). Would our hubs exhibit the power-law? I wonder. And my guess would be "yes". This idea leads to some interesting questions: - Some projects are harder to maintain than others due to various problems in the code (unreadable, too procedural and so on). Perhaps we can attribute maintainability points for networks which exhibit power-law properties more than others? Can we then find a way to predict the way a project works and behaves by defining its network topology? - What would the network topology of SOA based solutions look like? Will SOA based solutions look more like a directed network than a regular growing network? How many maintainability points would they get? - more about [SOA](http://staff.newtelligence.net/clemensv/) \- perhaps if we think networking we can starting to develop SOA based solutions that follow power-law networks topology - that is **that various services can choose to talk to other services** based on various "attraction points". Such a network is very durable and cannot be broken easily unless the hubs are targeted directly (which does not happen in random failures). I know I'm not making much sense if you haven't read the book yet but try reading it and them come back to this post and tell me what you think. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 4, 2004 ### [The Power of User Groups (and a request to Microsoft Israel)](https://osherove.com/blog/2004/10/4/the-power-of-user-groups-and-a-request-to-microsoft-israel.html) - Oct 3, 2004 ### [No blogger list on weblogs.asp.net?](https://osherove.com/blog/2004/10/3/no-blogger-list-on-weblogsaspnet.html) - Oct 3, 2004 ### [Back from Croatia but, sadly, not for long](https://osherove.com/blog/2004/10/3/back-from-croatia-but-sadly-not-for-long.html) - Sep 23, 2004 ### [Out of Country - Croatia here we come!](https://osherove.com/blog/2004/9/23/out-of-country-croatia-here-we-come.html) --- title: "Back from Croatia but, sadly, not for long" url: "https://osherove.com/blog/2004/10/3/back-from-croatia-but-sadly-not-for-long.md" canonical: "https://osherove.com/blog/2004/10/3/back-from-croatia-but-sadly-not-for-long.html" published: "2004-10-03T16:57:00" updated: "2004-10-03T16:57:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I just got back from Croatia. Croatia is a pretty cool country – lovely beaches as long as the eye can see (no sand though – just rocks and shells) and amazing landscapes on the inside. Think Greece – only less annoying…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Back from Croatia but, sadly, not for long By Roy Osherove October 3, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 3, 2004; technical details may be outdated. I just got back from Croatia. Croatia is a pretty cool country – lovely beaches as long as the eye can see (no sand though – just rocks and shells) and amazing landscapes on the inside. Think Greece – only less annoying tourists (for now). Lovely. We rented a car and just drove from one end (Zagreb) to the other (Dobrovnik) stopping along the way wherever we wanted. I think my traveliung days will never be the same. This is the way to travel. You’re not locked down to a specific hotel and you can drive for as long as you want – there’s always some place to crash the night. We crashed some really interesting places along the way. One of them was a roadhouse that has a B&B on the 2nd floor. Its mostly for truckers that stop along in the middle of the night. I swear we felt like we were in some kind of movie – the real people – the hard earning, sleepless, all night driving truckers were pulling in – driking and laughing with each other in what sounds like Russian, and smoking so much you’d think there was a pot convention. And then there’s the beer. Tal and I were sitting there along side the people and I was trying to famke my way into a believable beer drinker  - which did not last long. Not to mention the look we got when we asked for an omlet for dinner – no ham, cheese or any kind of meat, only vegetables on it. Those were funny looks we got, I tell ya. Not a day went by when we didn’t say “wow!” at least 10 times during driving or walking somewhere. I loved every moment. There were so many places we didn’t have time to stop in that I think even a month would not be enough. Its just a land full of beauty. Anyway – I’d love to say “and now back to regular programming” but that’s not the case. I have military service duty coming up that should take about amonth of me being out of the house and work. It start in about a week. And that sucks. After that though – I really plan on getting back to my usual self and planting al sorts of half assed ideas into your head. Be warned. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 3, 2004 ### [No blogger list on weblogs.asp.net?](https://osherove.com/blog/2004/10/3/no-blogger-list-on-weblogsaspnet.html) - Oct 3, 2004 ### [A new book: Network science, and what SOA has to do with it](https://osherove.com/blog/2004/10/3/a-new-book-network-science-and-what-soa-has-to-do-with-it.html) - Sep 23, 2004 ### [Out of Country - Croatia here we come!](https://osherove.com/blog/2004/9/23/out-of-country-croatia-here-we-come.html) - Sep 14, 2004 ### [Book library management system - know a good one?](https://osherove.com/blog/2004/9/14/book-library-management-system-know-a-good-one.html) --- title: "Out of Country - Croatia here we come!" url: "https://osherove.com/blog/2004/9/23/out-of-country-croatia-here-we-come.md" canonical: "https://osherove.com/blog/2004/9/23/out-of-country-croatia-here-we-come.html" published: "2004-09-23T19:12:00" updated: "2004-09-23T19:12:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Turns out the Mrs and I are going to Croatia for about a week and a half. Tomorrow. In 5 hours actually. So I'll be out. Meanwhile enjoy our picture at my new (still in building stage) site: www.osherove.com (no content…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Out of Country - Croatia here we come! By Roy Osherove September 23, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 23, 2004; technical details may be outdated. Turns out the Mrs and I are going to Croatia for about a week and a half. Tomorrow. In 5 hours actually. So I'll be out. Meanwhile enjoy our picture at my new (still in building stage) site: [www.osherove.com](https://osherove.com/) (no content up yet - but how do you like my design? ) Cheers, catch you on the flip side! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 3, 2004 ### [A new book: Network science, and what SOA has to do with it](https://osherove.com/blog/2004/10/3/a-new-book-network-science-and-what-soa-has-to-do-with-it.html) - Oct 3, 2004 ### [Back from Croatia but, sadly, not for long](https://osherove.com/blog/2004/10/3/back-from-croatia-but-sadly-not-for-long.html) - Sep 14, 2004 ### [Book library management system - know a good one?](https://osherove.com/blog/2004/9/14/book-library-management-system-know-a-good-one.html) - Sep 11, 2004 ### [Israel Nerd Dinner - coming soon](https://osherove.com/blog/2004/9/11/israel-nerd-dinner-coming-soon.html) --- title: "ANN: Optimized automatic control binder is out - and its fast!" url: "https://osherove.com/blog/2004/9/22/ann-optimized-automatic-control-binder-is-out-and-its-fast.md" canonical: "https://osherove.com/blog/2004/9/22/ann-optimized-automatic-control-binder-is-out-and-its-fast.html" published: "2004-09-22T14:22:00" updated: "2004-09-22T14:22:00" tags: [".Net Original"] author: "Roy Osherove" description: "Last month I posted about a cool way we came up with to automatically bind all the controls on our application forms to various data sources . That solution was cool, but it was slow . Because it used binding. And…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ANN: Optimized automatic control binder is out - and its fast! By Roy Osherove September 22, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 22, 2004; technical details may be outdated. Last month I posted about a cool way we came up with to [automatically bind all the controls on our application forms to various data sources](http://weblogs.asp.net/rosherove/archive/2004/08/31/222948.aspx). That solution was cool, but it was **slow**. Because it used binding. And because I made it in like an hour, and because I didn't optimize the various loops inside it and so on.. Well - here's the new - optimized version of the ControlBinder class. By optimized I mean that with the old class we ran it on a form with about 200 controls and it took about 5 seconds to bind. With the new version it takes 0.6 seconds on the first run. In the next runs (that is - you closed the form and then reopened it and then called bind again) it takes 0.3 seconds. Yeah - its cool and now its even usable!  features: ([see code examples on how to use it](http://weblogs.asp.net/rosherove/archive/2004/08/31/222948.aspx)) - Caching, Caching, Caching: On the first run on the form all attributes, member infos and bindable controls are saved to a cache hidden from the developer. On the next runs the cache is used to bind controls, without the need to use reflection more than once on each form. This way even if you closed the form and reopened it - binding it again will be much faster. - Categories: Bind multiple controls on the form to multiple data sources by providing a "category" attribute value and calling "bind" specifying a category and a data source. - ControlCoordinate class: this one was a bitch. There's no easy way to find a control on a form in win forms 1.1. That is - each control's Index on the containing control can be retrieved, but you can't use that index later to find the control on the form instance. This is because control collections are hierarchical - so if you want to find a control which resides in a control panel on your form you'd have to do something like form.Controls\[0\].Controls\[0\] to get that control. Easy huh? Well - I made a ControlCoordinate class which can take any control and save a "marker" to it, which can later be retrieved easily by calling Coordinate.FindControl(form). Very simple and easy. Its all in there. Coordinates are saved in an inner cache to so that after we know what controls actually have various attributes we can ignore all the other controls and zoom in directly on each control using its coordinate. Phew. That took a while to find out how to do (at first I did not believe the solution has to be this in-elegant) - BindToValueList: You can bind combos as well with this special attribute - Extensibility: Its easy to create your own attributes and control types with special bindings. The object model contains an extensible abstract factory pattern of specific control binder implementations per attribute type or control type. [Download it here](http://files.osherove.com/downloads/automaticbinding.zip) the download contains a single class file and also a simple binding demo with Northwind database. Very easy and simple. Have fun! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 3, 2004 ### [Upcoming talks and webcasts I'm involved with](https://osherove.com/blog/2004/10/3/upcoming-talks-and-webcasts-im-involved-with.html) - Oct 3, 2004 ### [DataSet hell - "Failed to enable constraints. One or more rows contain values...."](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) - Sep 21, 2004 ### [One treeview I'm not going to download](https://osherove.com/blog/2004/9/21/one-treeview-im-not-going-to-download.html) - Sep 15, 2004 ### [Finding a Palindrome](https://osherove.com/blog/2004/9/15/finding-a-palindrome.html) --- title: "MbUnit 2.21.1.0 RC1 released (and some nifty nifty features!)" url: "https://osherove.com/blog/2004/9/21/mbunit-22110-rc1-released-and-some-nifty-nifty-features.md" canonical: "https://osherove.com/blog/2004/9/21/mbunit-22110-rc1-released-and-some-nifty-nifty-features.html" published: "2004-09-21T12:28:00" updated: "2004-09-21T12:28:00" tags: [".Net Quotations", "Agile Related"] author: "Roy Osherove" description: "This very cool framework is getting a facelift with some very very very nifty features. I'm seriously considering doing my next projects with this framework. I just need some real world hands on time with it to make…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MbUnit 2.21.1.0 RC1 released (and some nifty nifty features!) By Roy Osherove September 21, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published September 21, 2004; technical details may be outdated. This very cool framework is getting a facelift with some very very very nifty features. I'm seriously considering doing my next projects with this framework. I just need some real world hands on time with it to make sure. Anyone has any such experience already? [MbUnit 2.21.1.0 RC1 released](http://blog.dotnetwiki.org/archive/2004/09/21/1015.aspx) **New features** - **TestDriven.NET integration:** [MbUnit](http://mbunit.tigris.org/ "MbUnit, Generating Unit Testing and Model Based Testing Framework for .NET Framework") is now shipped with TD.NET (see Download instructions below) and fully integrated with it. You can execute any [MbUnit](http://mbunit.tigris.org/ "MbUnit, Generating Unit Testing and Model Based Testing Framework for .NET Framework") test, fixture, namespace directly from Visual Studio using TD.NET. The execution using TD.NET also creates an HTML that is directly browsable from VS, - **Fixture level setup and teardown:** ([TestFixtureSetUp and TestFixtureTearDown](http://blog.dotnetwiki.org/archive/2004/09/02/896.aspx)) and [assembly level setup and teardown](http://blog.dotnetwiki.org/archive/2004/09/02/896.aspx), - **Drag and drop Unit Testing**: a new "designer friendly" way of creating your fixtures: [Demo1](http://blog.dotnetwiki.org/archive/2004/09/16/963.aspx), [Demo2](http://blog.dotnetwiki.org/archive/2004/09/18/986.aspx), [Demo3](http://blog.dotnetwiki.org/archive/2004/09/19/991.aspx) - **Combinatorial tests**, [in](http://blog.dotnetwiki.org/archive/2004/08/29/856.aspx) [MbUnit](http://mbunit.tigris.org/ "MbUnit, Generating Unit Testing and Model Based Testing Framework for .NET Framework"), [introduction](http://blog.dotnetwiki.org/archive/2004/08/27/837.aspx), [all pairs](http://blog.dotnetwiki.org/archive/2004/08/27/840.aspx) - **Smart test tools in TestFu** such as the [Database Populator Framework](http://blog.dotnetwiki.org/archive/2004/09/06/908.aspx), ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 7, 2004 ### [TDD brain teaser - hope I won](https://osherove.com/blog/2004/10/7/tdd-brain-teaser-hope-i-won.html) - Oct 3, 2004 ### [Some news while I was gone](https://osherove.com/blog/2004/10/3/some-news-while-i-was-gone.html) - Sep 19, 2004 ### [Alik Levin has a blog - with short Hebrew movies on various ASP.Net topics](https://osherove.com/blog/2004/9/19/alik-levin-has-a-blog-with-short-hebrew-movies-on-various-as.html) - Sep 13, 2004 ### [Formatting Hebrew dates](https://osherove.com/blog/2004/9/13/formatting-hebrew-dates.html) --- title: "One treeview I'm not going to download" url: "https://osherove.com/blog/2004/9/21/one-treeview-im-not-going-to-download.md" canonical: "https://osherove.com/blog/2004/9/21/one-treeview-im-not-going-to-download.html" published: "2004-09-21T11:08:00" updated: "2004-09-21T11:08:00" tags: [".Net Original"] author: "Roy Osherove" description: "Award for \"Most Trustworthy name for a control library\" goes to: CrapStuff TreeView . I kid you not." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # One treeview I'm not going to download By Roy Osherove September 21, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 21, 2004; technical details may be outdated. Award for "Most Trustworthy name for a control library" goes to: [CrapStuff TreeView](http://www.asp.net/ControlGallery/ControlDetail.aspx?Control=1014&tabindex=2). I kid you not. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 3, 2004 ### [DataSet hell - "Failed to enable constraints. One or more rows contain values...."](https://osherove.com/blog/2004/10/3/dataset-hell-failed-to-enable-constraints-one-or-more-rows-c.html) - Sep 22, 2004 ### [ANN: Optimized automatic control binder is out - and its fast!](https://osherove.com/blog/2004/9/22/ann-optimized-automatic-control-binder-is-out-and-its-fast.html) - Sep 15, 2004 ### [Finding a Palindrome](https://osherove.com/blog/2004/9/15/finding-a-palindrome.html) - Sep 9, 2004 ### [How Test Driven Development proved itself in a big way!](https://osherove.com/blog/2004/9/9/how-test-driven-development-proved-itself-in-a-big-way.html) --- title: "A testing framework that does BizTalk" url: "https://osherove.com/blog/2004/9/19/a-testing-framework-that-does-biztalk.md" canonical: "https://osherove.com/blog/2004/9/19/a-testing-framework-that-does-biztalk.html" published: "2004-09-19T08:30:00" updated: "2004-09-19T08:30:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Kevin B Smith came up with a test framework built of XML files and derived classes . I'm not sure I'd jump into such a bandwagon so easily - but one thing seems very interesting: He's actually doing BizTalk unit testing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A testing framework that does BizTalk By Roy Osherove September 19, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published September 19, 2004; technical details may be outdated. [Kevin B Smith came up with a test framework built of XML files and derived classes](http://weblogs.asp.net/kevinsmi/archive/2004/09/18/231259.aspx). I'm not sure I'd jump into such a bandwagon so easily - but one thing seems very interesting: **He's actually doing BizTalk unit testing using this framework** - and it seems fitting exactly for BizTalk tests. Definitely something to look at more closely. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Oct 5, 2004 ### [Introducing: XtUnit . An Unofficial Unit Testing Extensibility Framework - Add new attributes to NUnit or MbUnit easily!](https://osherove.com/blog/2004/10/5/introducing-xtunit-an-unofficial-unit-testing-extensibility.html) - Sep 21, 2004 ### [MbUnit 2.21.1.0 RC1 released (and some nifty nifty features!)](https://osherove.com/blog/2004/9/21/mbunit-22110-rc1-released-and-some-nifty-nifty-features.html) - Sep 17, 2004 ### [Drag and drop unit testing](https://osherove.com/blog/2004/9/17/drag-and-drop-unit-testing.html) - Sep 11, 2004 ### [Organization Patterns of Agile Software Development](https://osherove.com/blog/2004/9/11/organization-patterns-of-agile-software-development.html) --- title: "Alik Levin has a blog - with short Hebrew movies on various ASP.Net topics" url: "https://osherove.com/blog/2004/9/19/alik-levin-has-a-blog-with-short-hebrew-movies-on-various-as.md" canonical: "https://osherove.com/blog/2004/9/19/alik-levin-has-a-blog-with-short-hebrew-movies-on-various-as.html" published: "2004-09-19T06:30:00" updated: "2004-09-19T06:30:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Alik Levin has a blog . That's good news already - he's a frequent speaker at various conferences and user groups, but there's more. His blog is, other than a list of posts, a list of short movies in which he explains…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Alik Levin has a blog - with short Hebrew movies on various ASP.Net topics By Roy Osherove September 19, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 19, 2004; technical details may be outdated. [Alik Levin has a blog](http://xnetmentor.blogspot.com/). That's good news already - he's a frequent speaker at various conferences and user groups, but there's more. His blog is, other than a list of posts, a list of short movies in which he explains various technology concepts through demonstration - in Hebrew. So - if for example he talks about  adding instrumentation to your application using Tracing, you can actually click the title of the post and [download a short movie](http://ttvv.tv/Users/FightClub/Alik/Media/2004.9/DiagnosticsByTracing.wmv) detailing a short example of how to do this. Very nice, great idea! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 3, 2004 ### [Some news while I was gone](https://osherove.com/blog/2004/10/3/some-news-while-i-was-gone.html) - Sep 21, 2004 ### [MbUnit 2.21.1.0 RC1 released (and some nifty nifty features!)](https://osherove.com/blog/2004/9/21/mbunit-22110-rc1-released-and-some-nifty-nifty-features.html) - Sep 13, 2004 ### [Formatting Hebrew dates](https://osherove.com/blog/2004/9/13/formatting-hebrew-dates.html) - Sep 11, 2004 ### [Organization Patterns of Agile Software Development](https://osherove.com/blog/2004/9/11/organization-patterns-of-agile-software-development.html) --- title: "Drag and drop unit testing" url: "https://osherove.com/blog/2004/9/17/drag-and-drop-unit-testing.md" canonical: "https://osherove.com/blog/2004/9/17/drag-and-drop-unit-testing.html" published: "2004-09-17T13:32:00" updated: "2004-09-17T13:32:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Peli is a sick genius unit testing devil that has nothing better to do than generate some of the most awesome things I've seen in the agile field for .Net recently. I have no idea why he's not joining Microsoft's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Drag and drop unit testing By Roy Osherove September 17, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published September 17, 2004; technical details may be outdated. [Peli](http://blog.dotnetwiki.org/) is a sick genius unit testing devil that has nothing better to do than generate some of the most awesome things I've seen in the agile field for .Net recently. I have no idea why he's not joining Microsoft's testing tools team. Now he's come up with a way to visually design your unit tests: [Drag and drop unit testing](http://blog.dotnetwiki.org/archive/2004/09/16/963.aspx)  (and I like the Flash demo too) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Sep 21, 2004 ### [MbUnit 2.21.1.0 RC1 released (and some nifty nifty features!)](https://osherove.com/blog/2004/9/21/mbunit-22110-rc1-released-and-some-nifty-nifty-features.html) - Sep 19, 2004 ### [A testing framework that does BizTalk](https://osherove.com/blog/2004/9/19/a-testing-framework-that-does-biztalk.html) - Sep 11, 2004 ### [Organization Patterns of Agile Software Development](https://osherove.com/blog/2004/9/11/organization-patterns-of-agile-software-development.html) - Sep 9, 2004 ### [How Test Driven Development proved itself in a big way!](https://osherove.com/blog/2004/9/9/how-test-driven-development-proved-itself-in-a-big-way.html) --- title: "No Fun Intended" url: "https://osherove.com/blog/2004/9/16/no-fun-intended.md" canonical: "https://osherove.com/blog/2004/9/16/no-fun-intended.html" published: "2004-09-16T22:05:00" updated: "2004-09-16T22:05:00" tags: ["Blogging"] author: "Roy Osherove" description: "I just had to post about this blog because the name is so ironic and funny: \" No Fun Intended \" (found this on my Technorati profile . You do know what Technorati is, don't you?)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # No Fun Intended By Roy Osherove September 16, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published September 16, 2004; technical details may be outdated. I just had to post about this blog because the name is so ironic and funny: "[No Fun Intended](http://geekswithblogs.net/jbentley/)" (found this on my Technorati [profile](http://www.technorati.com/cosmos/links.html?rank=&url=weblogs.asp.net%2Frosherove). You **do** know what [Technorati](http://www.technorati.com/) is, don't you?) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 5, 2004 ### [The blogs I read](https://osherove.com/blog/2004/10/5/the-blogs-i-read.html) - Oct 3, 2004 ### [No blogger list on weblogs.asp.net?](https://osherove.com/blog/2004/10/3/no-blogger-list-on-weblogsaspnet.html) - Sep 12, 2004 ### [Do I like the change to weblogs.asp.net? No I don't.](https://osherove.com/blog/2004/9/12/do-i-like-the-change-to-weblogsaspnet-no-i-dont.html) - Aug 26, 2004 ### [Blogger/Geek dinner?](https://osherove.com/blog/2004/8/26/bloggergeek-dinner.html) --- title: "Finding a Palindrome" url: "https://osherove.com/blog/2004/9/15/finding-a-palindrome.md" canonical: "https://osherove.com/blog/2004/9/15/finding-a-palindrome.html" published: "2004-09-15T23:01:00" updated: "2004-09-15T23:01:00" tags: [".Net Original"] author: "Roy Osherove" description: "[Update: I added a third variation of this which solves all the problems mentioned in the comments. Was really fun - used a single line of regular expressions and it worked like a charm!] It got me intrigued - so here's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Finding a Palindrome By Roy Osherove September 15, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 15, 2004; technical details may be outdated. \[Update: I added a third variation of this which solves all the problems mentioned in the comments. Was really fun - used a single line of regular expressions and it worked like a charm!\] [It](http://blogs.msdn.com/jobsblog/archive/2004/08/25/220334.aspx) got me intrigued - so here's my answer to [finding a palindrome](http://channel9.msdn.com/ShowPost.aspx?PostID=19171) (a string you can read forward and backward the same): \[Test\]    public void TestPelindromSimple()    {          Assert.IsTrue(IsPalindrome("a"),"a");          Assert.IsFalse(IsPalindrome("ab"),"ab");          Assert.IsTrue(IsPalindrome("aba"),"aba");          Assert.IsFalse(IsPalindrome("abc"),"abc");          Assert.IsTrue(IsPalindrome("abba"),"abba");          Assert.IsFalse(IsPalindrome("abbc"),"abbc");          Assert.IsTrue(IsPalindrome("abcba"),"abcba");          Assert.IsFalse(IsPalindrome("abcbc"),"abcbc");          Assert.IsTrue(IsPalindrome("lelelel"),"lelelel");          Assert.IsFalse(IsPalindrome("lele4el"),"lele4el");          Assert.IsFalse(IsPalindrome(null),"null");          Assert.IsTrue(IsPalindrome("ABba"),"ABba");    }    private bool IsPalindrome(string text)    {          if(text\==null)          {                return false;          }          if(text.Length\==1)          {                return true;          }          text\=text.ToLower();          int firsthalfIndex = (text.Length/2);          int secondHalfIndex\= (text.Length/2);          if(text.Length%2!=0)          {                secondHalfIndex+=1;          }          char\[\] part1 = text.Substring(0,firsthalfIndex).ToCharArray();          char\[\] part2 = text.Substring(secondHalfIndex).ToCharArray();          Array.Reverse(part2);          return (new string( part1)== new string(part2));    } I liked what I had but then it occurred to me: all these test can pass with this simple routine: private bool IsPalindrome(string text)  {    if(text\==null)    {       return false;    }    text\=text.ToLower();    char\[\] backwards = text.ToCharArray();    Array.Reverse(backwards);    return (new string( backwards)== text);  } Ain't life funny? \[Update\] This variation adds a single line of regex to comply with the dictionary form of Palindrome. I also added a couple of unit tests to make sure it works: Assert.IsTrue(IsPalindrome("ab cb a"),"ab cb a"); Assert.IsTrue(IsPalindrome("A man, a plan, a canal, Panama!"),"A man, a plan, a canal, Panama!"); private bool IsPalindrome(string text) {    if(text\==null){       return false;    }   text\=text.ToLower();   //remove whitespace and other non numeric chars   **text = Regex.Replace(text,@"\[\\s\\W\]",string.Empty);**   char\[\] backwards = text.ToCharArray();   Array.Reverse(backwards);   return (new string( backwards)== text); }   ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 22, 2004 ### [ANN: Optimized automatic control binder is out - and its fast!](https://osherove.com/blog/2004/9/22/ann-optimized-automatic-control-binder-is-out-and-its-fast.html) - Sep 21, 2004 ### [One treeview I'm not going to download](https://osherove.com/blog/2004/9/21/one-treeview-im-not-going-to-download.html) - Sep 9, 2004 ### [How Test Driven Development proved itself in a big way!](https://osherove.com/blog/2004/9/9/how-test-driven-development-proved-itself-in-a-big-way.html) - Sep 8, 2004 ### [See you at the .Net on the beach convention](https://osherove.com/blog/2004/9/8/see-you-at-the-net-on-the-beach-convention.html) --- title: "Israeli .Net Architects meeting - Refactoring, Class designer and other cool stuff in VS.Net 2005" url: "https://osherove.com/blog/2004/9/15/israeli-net-architects-meeting-refactoring-class-designer-an.md" canonical: "https://osherove.com/blog/2004/9/15/israeli-net-architects-meeting-refactoring-class-designer-an.html" published: "2004-09-15T10:12:00" updated: "2004-09-15T10:12:00" tags: [] author: "Roy Osherove" description: "See you there!!! Greetings .NE T architect! You are welcome to attend our next meeting to be held on Thursday, September 23rd . The next presentation shall focus on Visual Studio 2005 – code name Whidbey. Our presented…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israeli .Net Architects meeting - Refactoring, Class designer and other cool stuff in VS.Net 2005 By Roy Osherove September 15, 2004 **Historical article** · Originally published September 15, 2004; technical details may be outdated. See you there!!! --- Greetings .NET architect!  You are welcome to attend our next meeting to be held on Thursday, **September 23rd**.  The next presentation shall focus on Visual Studio 2005 – code name Whidbey. Our presented is Yosi Taguri from Microsoft, a .NET specialist who has just returned from Whidbey training in the US.  The presentation will focus on: ·    New features and enhancements ·    The Class View Designer – **this is a must see for Architects** ·    Refactoring – this is also an important aspect of improving your code architecture ·    New design features ·    Architectural aspects ·    The new Team Server for team development ·    New overall features to boost development Details summary: Date: **September 23rd, 2004** (23/9/2004) Time: **17:30 – 20:00** Location: **HP offices, 9 Daphna St, Kiryat Etgarim (northern industrial area), Ra’anana** (see [http://www.microsoft.com/israel/dev/netsa.asp](http://www.microsoft.com/israel/dev/netsa.asp)  for location details) Topic: **Visual Studio 2005** Agenda:  17:30 – 17:45 – Assembly 17:45 – 18:45 – Visual Studio 2005 – Yosi Taguri – Microsoft 18:45 – 19:00 – Break 19:00 – 20:00 – Visual Studio 2005 – Yosi Taguri – Microsoft --- title: "Book library management system - know a good one?" url: "https://osherove.com/blog/2004/9/14/book-library-management-system-know-a-good-one.md" canonical: "https://osherove.com/blog/2004/9/14/book-library-management-system-know-a-good-one.html" published: "2004-09-14T07:36:00" updated: "2004-09-14T07:36:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Our company is looking to create a book library for employees to borrow and read books. In the process I'm looking for a book/library management system which is free and is web or windows based with a shared database.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Book library management system - know a good one? By Roy Osherove September 14, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 14, 2004; technical details may be outdated. [Our company](http://www.magen.com/) is looking to create a book library for employees to borrow and read books. In the process I'm looking for a book/library management system which is free and is web or windows based with a shared database. I'm interested how does **your** company handle this? do you have a custom library management project in the company or did you buy one? or did you find an open source/free one? What do you recommend that I do? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 3, 2004 ### [Back from Croatia but, sadly, not for long](https://osherove.com/blog/2004/10/3/back-from-croatia-but-sadly-not-for-long.html) - Sep 23, 2004 ### [Out of Country - Croatia here we come!](https://osherove.com/blog/2004/9/23/out-of-country-croatia-here-we-come.html) - Sep 11, 2004 ### [Israel Nerd Dinner - coming soon](https://osherove.com/blog/2004/9/11/israel-nerd-dinner-coming-soon.html) - Sep 6, 2004 ### [GMane: read mailing lists via news readers](https://osherove.com/blog/2004/9/6/gmane-read-mailing-lists-via-news-readers.html) --- title: "Formatting Hebrew dates" url: "https://osherove.com/blog/2004/9/13/formatting-hebrew-dates.md" canonical: "https://osherove.com/blog/2004/9/13/formatting-hebrew-dates.html" published: "2004-09-13T06:29:00" updated: "2004-09-13T06:29:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Based on the amount of articles out there relating to hebrew dating (and I don't mean a singles bar!) there's always confusion on how exactly to translate a date into its full hebrew representation. Here's a simple…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Formatting Hebrew dates By Roy Osherove September 13, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 13, 2004; technical details may be outdated. Based on the amount of articles out there relating to hebrew dating (and I don't mean a singles bar!) there's always confusion on how exactly to translate a date into its full hebrew representation. Here's a simple method that does this, based on information which is easily available via [this article](http://msdn.microsoft.com/library/en-us/cpguide/html/cpconworkingwithcalendars.asp). --- C# ///   /// Returns the Juwish formatted date   ///   /// Any valid date   /// Set this option to add the day of the week to the formatted date   /// A string containing the Juwish formatted date   public static string GetHebrewJuwishDateString(DateTime anyDate, bool addDayOfWeek)   {    System.Text.StringBuilder hebrewFormatedString = new System.Text.StringBuilder();        // Create the hebrew culture to use hebrew (Juwish) calendar    CultureInfo juwishCulture = CultureInfo.CreateSpecificCulture("he-IL");    juwishCulture.DateTimeFormat.Calendar = new HebrewCalendar();      #region Format the date into a Juwish format    if (addDayOfWeek)    {     // Day of the week in the format " "     hebrewFormatedString.Append(anyDate.ToString("dddd", juwishCulture) + " ");    }    // Day of the month in the format "'"    hebrewFormatedString.Append(anyDate.ToString("dd", juwishCulture) + " ");    // Month and year in the format " "    hebrewFormatedString.Append("" + anyDate.ToString("y", juwishCulture));    #endregion    return hebrewFormatedString.ToString();   } --- VB.NET '''     ''' Summary description for JewishDateHelper.     ''' This Class holds a single method that returns the Hebrew Jewish date format.     '''     Public Class JewishDateHelper         '''         ''' Returns the Juwish formatted date         '''         ''' Any valid date         ''' Set this option to add the day of the week to the formatted date         ''' A string containing the Juwish formatted date         Public Shared Function GetHebrewJuwishDateString(ByVal anyDate As DateTime, ByVal addDayOfWeek As Boolean) As String             Dim hebrewFormatedString As System.Text.StringBuilder = New System.Text.StringBuilder             '' Create the hebrew culture to use hebrew (Juwish) calendar             Dim juwishCulture As CultureInfo = CultureInfo.CreateSpecificCulture("he-IL")             juwishCulture.DateTimeFormat.Calendar = New HebrewCalendar             If (addDayOfWeek) Then                 '' Day of the week in the format " "                 hebrewFormatedString.Append(anyDate.ToString("dddd", juwishCulture) + " ")             End If             '' Day of the month in the format "'"             hebrewFormatedString.Append(anyDate.ToString("dd", juwishCulture) + " ")             '' Month and year in the format " "             hebrewFormatedString.Append("" + anyDate.ToString("y", juwishCulture))             Return hebrewFormatedString.ToString()         End Function Thanks, Ido! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 21, 2004 ### [MbUnit 2.21.1.0 RC1 released (and some nifty nifty features!)](https://osherove.com/blog/2004/9/21/mbunit-22110-rc1-released-and-some-nifty-nifty-features.html) - Sep 19, 2004 ### [Alik Levin has a blog - with short Hebrew movies on various ASP.Net topics](https://osherove.com/blog/2004/9/19/alik-levin-has-a-blog-with-short-hebrew-movies-on-various-as.html) - Sep 11, 2004 ### [Organization Patterns of Agile Software Development](https://osherove.com/blog/2004/9/11/organization-patterns-of-agile-software-development.html) - Sep 7, 2004 ### [Implementing CollectionBase the right way](https://osherove.com/blog/2004/9/7/implementing-collectionbase-the-right-way.html) --- title: "VPC SP1 problems - and one bad solution" url: "https://osherove.com/blog/2004/9/13/vpc-sp1-problems-and-one-bad-solution.md" canonical: "https://osherove.com/blog/2004/9/13/vpc-sp1-problems-and-one-bad-solution.html" published: "2004-09-13T02:43:00" updated: "2004-09-13T02:43:00" tags: [] author: "Roy Osherove" description: "if you've encountered this: \"I upgrade my install of Virtual PC to Service Pack 1 and now all of my Virtual Machines momentarily hang at times. It is like the machine will freeze for a few seconds. Has anyone else seen…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VPC SP1 problems - and one bad solution By Roy Osherove September 13, 2004 **Historical article** · Originally published September 13, 2004; technical details may be outdated. if you've encountered this: "I upgrade my install of Virtual PC to Service Pack 1 and now all of my Virtual Machines momentarily hang at times.  It is like the machine will freeze for a few seconds.  Has anyone else seen this behavior?" You're not the first. This is starting to appear in many places. Looks like it maybe a real bug with SP1 for VPC. the best advice I can give right now is to uninstall the SP and wait for them to release a better one. Her'es to hoping! --- title: "Do I like the change to weblogs.asp.net? No I don't." url: "https://osherove.com/blog/2004/9/12/do-i-like-the-change-to-weblogsaspnet-no-i-dont.md" canonical: "https://osherove.com/blog/2004/9/12/do-i-like-the-change-to-weblogsaspnet-no-i-dont.html" published: "2004-09-12T18:41:00" updated: "2004-09-12T18:41:00" tags: ["Blogging"] author: "Roy Osherove" description: "In case someone is asking me (and no one did, or none of you obviously), I don't like the changes made to weblogs.asp.net main page/feed. It sucks in many ways and it won't even make things better for the folks who…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Do I like the change to weblogs.asp.net? No I don't. By Roy Osherove September 12, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published September 12, 2004; technical details may be outdated. In case someone is asking me (and no one did, or none of you obviously), I don't like the changes made to weblogs.asp.net main page/feed. It sucks in many ways and it won't even make things better for the folks who thought it will lower the amount of traffic they get. Her'es to hoping it changes soon. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 3, 2004 ### [No blogger list on weblogs.asp.net?](https://osherove.com/blog/2004/10/3/no-blogger-list-on-weblogsaspnet.html) - Sep 16, 2004 ### [No Fun Intended](https://osherove.com/blog/2004/9/16/no-fun-intended.html) - Aug 26, 2004 ### [Blogger/Geek dinner?](https://osherove.com/blog/2004/8/26/bloggergeek-dinner.html) - Aug 10, 2004 ### [Testing Blogs at Microsoft, and Addin contest news](https://osherove.com/blog/2004/8/10/testing-blogs-at-microsoft-and-addin-contest-news.html) --- title: "Israel Nerd Dinner - coming soon" url: "https://osherove.com/blog/2004/9/11/israel-nerd-dinner-coming-soon.md" canonical: "https://osherove.com/blog/2004/9/11/israel-nerd-dinner-coming-soon.html" published: "2004-09-11T12:19:00" updated: "2004-09-11T12:19:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I've just sent an email to Jim Blizzard, who's opened a new site called Nerd Dinner.com where you can have a blog dedicated to organizing geek dinners in your country/area. Say tuned for the Israel Nerd Dinner site!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel Nerd Dinner - coming soon By Roy Osherove September 11, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 11, 2004; technical details may be outdated. I've just sent an email to Jim Blizzard, who's opened a new site called [Nerd Dinner.com](http://www.nerddinner.com/) where you can have a blog dedicated to organizing geek dinners in your country/area. Say tuned for the Israel Nerd Dinner site! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 23, 2004 ### [Out of Country - Croatia here we come!](https://osherove.com/blog/2004/9/23/out-of-country-croatia-here-we-come.html) - Sep 14, 2004 ### [Book library management system - know a good one?](https://osherove.com/blog/2004/9/14/book-library-management-system-know-a-good-one.html) - Sep 6, 2004 ### [GMane: read mailing lists via news readers](https://osherove.com/blog/2004/9/6/gmane-read-mailing-lists-via-news-readers.html) - Sep 4, 2004 ### [Great coders == open source? Hardly](https://osherove.com/blog/2004/9/4/great-coders-open-source-hardly.html) --- title: "Organization Patterns of Agile Software Development" url: "https://osherove.com/blog/2004/9/11/organization-patterns-of-agile-software-development.md" canonical: "https://osherove.com/blog/2004/9/11/organization-patterns-of-agile-software-development.html" published: "2004-09-11T09:26:00" updated: "2004-09-11T09:26:00" tags: [".Net Quotations", "Agile Related"] author: "Roy Osherove" description: "\" I just found an excellent wiki web by Coplien and and Harrison on Organization Patterns of Agile Software Development . It’s high quality writing, in fact there is even a dead-trees version on Amazon. You can also…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Organization Patterns of Agile Software Development By Roy Osherove September 11, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published September 11, 2004; technical details may be outdated. "_I just found an excellent wiki web by Coplien and and Harrison on_ [_Organization Patterns of Agile Software Development_](http://www.easycomp.org/cgi-bin/OrgPatterns?BookOutline)_. It’s high quality writing, in fact there is even a_ [_dead-trees version_](https://www.amazon.com/exec/obidos/ASIN/0131467409/darrellnorton-20) _on Amazon. You can also download the chapters of the book in PDF format, all 488 pages of them. This should keep me busy for a while."_ \[via [Darrell Norton](https://osherove.com/blog/2004/9/11/v)\] Looks like an interesting one! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 19, 2004 ### [Alik Levin has a blog - with short Hebrew movies on various ASP.Net topics](https://osherove.com/blog/2004/9/19/alik-levin-has-a-blog-with-short-hebrew-movies-on-various-as.html) - Sep 13, 2004 ### [Formatting Hebrew dates](https://osherove.com/blog/2004/9/13/formatting-hebrew-dates.html) - Sep 7, 2004 ### [Implementing CollectionBase the right way](https://osherove.com/blog/2004/9/7/implementing-collectionbase-the-right-way.html) - Sep 3, 2004 ### [Adding pre and post build events for VB.Net projects](https://osherove.com/blog/2004/9/3/adding-pre-and-post-build-events-for-vbnet-projects.html) --- title: "How Test Driven Development proved itself in a big way!" url: "https://osherove.com/blog/2004/9/9/how-test-driven-development-proved-itself-in-a-big-way.md" canonical: "https://osherove.com/blog/2004/9/9/how-test-driven-development-proved-itself-in-a-big-way.html" published: "2004-09-09T12:06:00" updated: "2004-09-09T12:06:00" tags: [".Net Original", "Agile Related"] author: "Roy Osherove" description: "Over the past year or so I've been going around trying to tell people how and why test-driven development will help their development process. Its hard to convince people. It's actually still hard sometimes, even after…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How Test Driven Development proved itself in a big way! By Roy Osherove September 9, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published September 9, 2004; technical details may be outdated. Over the past year or so I've been going around trying to tell people how and why test-driven development will help their development process. Its hard to convince people. It's actually still hard sometimes, even after people have had real-hands on experience (after attending one of my TDD workshops). Why? because its just too good to be true , sometimes. And being afraid of what to tell your boss matters too. So here's a good story you can tell around the camp fire. Today I've experienced one of the most gratifying results of writing unit tests. We have a system that is near production ready, which involves lots of layers, logic and data. Today we had to do one of the most scary things you can do to a system that is near production - change the indexes of most of your database tables, including some primary keys, then go through all the stored procedures and change them to fit this new schema. How scared would you be? Heres how it worked for us: - Downloaded CodeSmith (awesome application, that.) - Created a simple template for stored procedures against all db tables - Ran the script against the database - generating only DELETE procedures - Ran all the tests - 5 tests out of about 200 failed - We tweaked the procs a little by looking at the old database - Ran all the tests - All the tests were green - We continued the same process for Update and Select procedures. - It took 4 hours to complete this whole experience, with all the tests running in the end. **Imagine doing this on your system today. Would you even consider it?** This is agility in its truest form: The ability to make changes to the system when you need it. And knowing what breaks when you actually do it. And being able to fix it and know that you actually did fix it. I could easily say that the Unit Tests paid for themselves just from today's experience. not to mention the amount of time they have already saved thus far. I am now throughly convinced that Test-Driven development is one of the best ways to tackle, if not reduce, the amount of risk in today's average IT project. If you're all now thinking "we don't have time to incorporate the complete "Extreme Programming" process into our Dev team - you don't have too. the project I'm talking about is NOT doing full on XP. however, TDD is a big part of it, as well as customer on site and refactoring. Some pair programming was done in several parts of the project, but not all of it. I can certainly say that had we not had unit tests - we would be doing today "Prayer Programming" :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 21, 2004 ### [One treeview I'm not going to download](https://osherove.com/blog/2004/9/21/one-treeview-im-not-going-to-download.html) - Sep 15, 2004 ### [Finding a Palindrome](https://osherove.com/blog/2004/9/15/finding-a-palindrome.html) - Sep 8, 2004 ### [See you at the .Net on the beach convention](https://osherove.com/blog/2004/9/8/see-you-at-the-net-on-the-beach-convention.html) - Sep 6, 2004 ### [Yukon "Query Notification": a life saver](https://osherove.com/blog/2004/9/6/yukon-quotquery-notificationquot-a-life-saver.html) --- title: "See you at the .Net on the beach convention" url: "https://osherove.com/blog/2004/9/8/see-you-at-the-net-on-the-beach-convention.md" canonical: "https://osherove.com/blog/2004/9/8/see-you-at-the-net-on-the-beach-convention.html" published: "2004-09-08T11:17:00" updated: "2004-09-08T11:17:00" tags: [".Net Original"] author: "Roy Osherove" description: "I was there last week for the \"Technet\" on the beach\" conference and it was a lot of fun! see you there?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # See you at the .Net on the beach convention By Roy Osherove September 8, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 8, 2004; technical details may be outdated. I was there last week for the "Technet" on the beach" conference and it was a lot of fun! see you there? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 15, 2004 ### [Finding a Palindrome](https://osherove.com/blog/2004/9/15/finding-a-palindrome.html) - Sep 9, 2004 ### [How Test Driven Development proved itself in a big way!](https://osherove.com/blog/2004/9/9/how-test-driven-development-proved-itself-in-a-big-way.html) - Sep 6, 2004 ### [Yukon "Query Notification": a life saver](https://osherove.com/blog/2004/9/6/yukon-quotquery-notificationquot-a-life-saver.html) - Sep 3, 2004 ### [.Net Blogger geek meets Eric Rudder, asks questions, gets answers, is happy](https://osherove.com/blog/2004/9/3/net-blogger-geek-meets-eric-rudder-asks-questions-gets-answe.html) --- title: "Implementing CollectionBase the right way" url: "https://osherove.com/blog/2004/9/7/implementing-collectionbase-the-right-way.md" canonical: "https://osherove.com/blog/2004/9/7/implementing-collectionbase-the-right-way.html" published: "2004-09-07T18:27:00" updated: "2004-09-07T18:27:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Matt Berther (The \"other\" ISerializable...) writes a nice little tidbit about correctly deriving from CollectionBase and adds something I was not aware of: you really really want to override the OnValidate() event of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Implementing CollectionBase the right way By Roy Osherove September 7, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 7, 2004; technical details may be outdated. [Matt Berther](http://www.mattberther.com/) (The "other" ISerializable...) writes a nice little tidbit about [correctly deriving from CollectionBase](http://www.mattberther.com/2004/09/000540.html) and adds something I was not aware of: you really **really** want to override the OnValidate() event of CollectionBase so that you can validate objects before being added to the collection. This is crucial when someone casts your collection to an IList interface and then can have their way with your collection without your approval, unless you override this important method. Thanks Matt. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 13, 2004 ### [Formatting Hebrew dates](https://osherove.com/blog/2004/9/13/formatting-hebrew-dates.html) - Sep 11, 2004 ### [Organization Patterns of Agile Software Development](https://osherove.com/blog/2004/9/11/organization-patterns-of-agile-software-development.html) - Sep 3, 2004 ### [Adding pre and post build events for VB.Net projects](https://osherove.com/blog/2004/9/3/adding-pre-and-post-build-events-for-vbnet-projects.html) - Sep 3, 2004 ### [Services without components on a pre-SP2 XP machine?](https://osherove.com/blog/2004/9/3/services-without-components-on-a-pre-sp2-xp-machine.html) --- title: "Yukon \"Query Notification\": a life saver" url: "https://osherove.com/blog/2004/9/6/yukon-quotquery-notificationquot-a-life-saver.md" canonical: "https://osherove.com/blog/2004/9/6/yukon-quotquery-notificationquot-a-life-saver.html" published: "2004-09-06T18:59:00" updated: "2004-09-06T18:59:00" tags: [".Net Original"] author: "Roy Osherove" description: "At the Israeli SQL user group today we had a special visit: Roger Woter - PM at Microsoft. he talked about the Service broker in Yukon. very cool stuff. However I learned a little thing that I think is absolutely…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Yukon "Query Notification": a life saver By Roy Osherove September 6, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 6, 2004; technical details may be outdated. At the Israeli [SQL user group](http://www.sql.co.il/) today we had a special visit: Roger Woter - PM at Microsoft. he talked about the Service broker in Yukon. very cool stuff. However I learned a little thing that I think is absolutely fabulous: One of the _coolest_ new features to me in Yukon will be a little thing called "_Query Notification_". What's that? I'll give you a hint. Ever used the ASP.Net _Cache_ object? you know how it has a cache expiry period that can be based upon a time span or a file changing on disk? What's the thing missing most from this functionality? that's right - auto-expiry when the data that you cached changes _in the database_. It's just not there. People have to go through hoops to find out when data has changed. Not anymore. With Yukon you can "signal" to the server with the same query that you used to fetch the data you have in memory, and if any row in one of the tables that is in the query is changed, inserted or deleted (meaning running the query now will yield different results) you'll get an **automatic** notification of this that will be sent to a special queue on which you can listen on and re-cache your query with the new data. no more hopping around trying to know if something changed. **Thank you thank you thank you**. :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 9, 2004 ### [How Test Driven Development proved itself in a big way!](https://osherove.com/blog/2004/9/9/how-test-driven-development-proved-itself-in-a-big-way.html) - Sep 8, 2004 ### [See you at the .Net on the beach convention](https://osherove.com/blog/2004/9/8/see-you-at-the-net-on-the-beach-convention.html) - Sep 3, 2004 ### [.Net Blogger geek meets Eric Rudder, asks questions, gets answers, is happy](https://osherove.com/blog/2004/9/3/net-blogger-geek-meets-eric-rudder-asks-questions-gets-answe.html) - Sep 3, 2004 ### [WilsonORMapper at version 3.0, and what's an OR mapper anyway?](https://osherove.com/blog/2004/9/3/wilsonormapper-at-version-30-and-whats-an-or-mapper-anyway.html) --- title: "GMane: read mailing lists via news readers" url: "https://osherove.com/blog/2004/9/6/gmane-read-mailing-lists-via-news-readers.md" canonical: "https://osherove.com/blog/2004/9/6/gmane-read-mailing-lists-via-news-readers.html" published: "2004-09-06T18:49:00" updated: "2004-09-06T18:49:00" tags: ["Cool sites", "Off Topic"] author: "Roy Osherove" description: "this is a great find via the win-tech off topic mailing list: subscribe to mailing lists - from your newsreader! how? www.gmane.org allows subscribing to a mailing list but instead of getting it by email - you get it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # GMane: read mailing lists via news readers By Roy Osherove September 6, 2004 In [Cool sites](https://osherove.com/blog/category/cool-sites), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 6, 2004; technical details may be outdated. this is a great find via the win-tech off topic mailing list: subscribe to mailing lists - from your newsreader! how? [www.gmane.org](http://www.gmane.org/)   allows subscribing to a mailing list but instead of getting it by email - you get it via any NNTP reader. This is cool because now Instead of getting the win-tech-off-topic as emails in outlook I can read it through outlook express or 40tude dialog (my favorite news agent) using the address: I use the gmane news server: news.gmane.org then I subscribe to the group: _gmane.comp.windows.off-topic_ also - for the Nunit developers mailing list:  _gmane.comp.windows.dotnet.nunit.deve_ do you want a mailing list that is not there? simply add it to gmane and subscribe to it via news reader. very cool. very nice. ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Oct 13, 2004 ### [TopXML releases the System.XML reference online](https://osherove.com/blog/2004/10/13/topxml-releases-the-systemxml-reference-online.html) - Oct 12, 2004 ### [Introducing "Project Distributor" - your .Net file and idea sharing ground](https://osherove.com/blog/2004/10/12/introducing-quotproject-distributorquot-your-net-file-and-id.html) - Sep 3, 2004 ### [Weird Google-like toy - Toogle!](https://osherove.com/blog/2004/9/3/weird-google-like-toy-toogle.html) - Aug 24, 2004 ### [Developers.org.il is online with a face lift](https://osherove.com/blog/2004/8/24/developersorgil-is-online-with-a-face-lift.html) --- title: "Great coders == open source? Hardly" url: "https://osherove.com/blog/2004/9/4/great-coders-open-source-hardly.md" canonical: "https://osherove.com/blog/2004/9/4/great-coders-open-source-hardly.html" published: "2004-09-04T16:08:00" updated: "2004-09-04T16:08:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I was reading this article on \" Great Hackers \" Some of the things he says about hackers (\"coders\") is true, but a lot of them are skewed toward open source in a way that is not fair and not real world on any way. I was…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Great coders == open source? Hardly By Roy Osherove September 4, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 4, 2004; technical details may be outdated. I was reading this article on "[Great Hackers](http://www.paulgraham.com/gh.html)"  Some of the things he says about hackers ("coders") is true, but a lot of them are skewed toward open source in a way that is not fair and not real world on any way. I was pretty annoyed to read up to about the first half. then it gets better. Examples of stuff I agree and disagree with: "Great hackers also generally insist on using open source software. Not just because it's better, but because it gives them more control. Good hackers insist on control. This is part of what makes them good hackers: when something's broken, they need to fix it. You want them to feel this way about the software they're writing for you. You shouldn't be surprised when they feel the same way about the operating system." Um.. huh? coming from the windows world I certainly know some great hackers and architects and they all work on non-open source tools, OSs and languages. As a side-thought - if I was doing some project on Linux - do you really think that if I found some silly bug in the underlying API I would generate by own build stack of that Linux distro. just so that my application works? \*that's\* silly. Actually -I would much rather have 3rd party commercial tools. From my experience they are usually better maintained (someone is actually paying someone else to make them better), that is bugs get fixed more, and an overall sense of urgency and customer support is there. With open source its pretty much every man for himself. Take [The Regulator](http://regulator.sourceforge.net/) for example. Since I'm doing it on my free time you get a cool product, made with love and all, but there are bugs in there that need to be fixed. and  _I currently_ don't have time to fix them. so - you get a less usable product. If someone was "paying" me for it the product would be of much better quality. That's the same reason I currently like [FinalBuilder](http://www.finalbuilder.com/) over [NAnt](http://nant.sourceforge.net/) \- more usable, more support, more everything. Maybe today's great hackers are a new breed of coders. ones that realize that actually \*delivering\* software in less time is more important than doing all the nooks and crannies on your own. Maybe \*that\* is what makes them 10-100 times more productive. They know how to take advantage of the environment around them and, be it open source tools or 3rd party commercial tools - the fastest and easiest will usually win the game (provided you get the same results of course. The idea is that they do not compromise quality - just control). so - yes. I lose control if I use an OR mapper to generate by DAL and BL components. but if I deliver a good product in half the time that is still maintainable and can be added with more features- does that really matter? Only if it makes things more boring for me - which is most **certainly** does not. Since now I have more time to study the real interesting stuff. "A couple years ago a venture capitalist friend told me about a new startup he was involved with. It sounded promising. But the next time I talked to him, he said they'd decided to build their software on Windows NT, and had just hired a very experienced NT developer to be their chief technical officer. When I heard this, I thought, these guys are doomed. One, the CTO couldn't be a first rate hacker, because to become an eminent NT developer he would have had to use NT voluntarily, multiple times, and I couldn't imagine a great hacker doing that; and two, even if he was good, he'd have a hard time hiring anyone good to work for him if the project had to be built on NT. \[2\]" Total BS. A good dev is a good dev - be it COBOL, puthon, C++ or VB.Net. "Doomed" is a word I save for people that think things can only be done in one particular way. If that company did fail it wasn't because it did not choose open source. it failed because it made many mistakes lots of other companies make in management, clear objectives and other business related decisions. Who's to say if they had gone open source that would have saved them? Except the author, of course... "One big company that understands what hackers need is Microsoft. I once saw a recruiting ad for Microsoft with a big picture of a door. Work for us, the premise was, and we'll give you a place to work where you can actually get work done. And you know, Microsoft is remarkable among big companies in that they are able to develop software in house. Not well, perhaps, but well enough." That started out good - but jeez. How annoying was that last sentence? "Indeed, these statistics about Cobol or Java being the most popular language can be misleading. What we ought to look at, if we want to know what tools are best, is what hackers choose when they can choose freely-- that is, in projects of their own. When you ask that question, you find that open source operating systems already have a dominant market share, and the number one language is probably Perl." I'd love to see those numbers. "You may not have to go to this extreme. [Bottom-up programming](http://www.paulgraham.com/progbot.html) suggests another way to partition the company: have the smart people work as toolmakers. If your company makes software to do x, have one group that builds tools for writing software of that type, and another that uses these tools to write the applications. This way you might be able to get smart people to write 99% of your code, but still keep them almost as insulated from users as they would be in a traditional research department. The toolmakers would have users, but they'd only be the company's own developers. \[6\] If Microsoft used this approach, their software wouldn't be so full of security holes, because the less smart people writing the actual applications wouldn't be doing low-level stuff like allocating memory. Instead of writing Word directly in C, they'd be plugging together big Lego blocks of Word-language. (Duplo, I believe, is the technical term.)" Interesting thought. I wonder what really happens behind the scenes at MS in that regard. "Because you can't tell a great hacker except by working with him, hackers themselves can't tell how good they are. This is true to a degree in most fields. I've found that people who are great at something are not so much convinced of their own greatness as mystified at why everyone else seems so incompetent" That made me smile... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 11, 2004 ### [Israel Nerd Dinner - coming soon](https://osherove.com/blog/2004/9/11/israel-nerd-dinner-coming-soon.html) - Sep 6, 2004 ### [GMane: read mailing lists via news readers](https://osherove.com/blog/2004/9/6/gmane-read-mailing-lists-via-news-readers.html) - Sep 3, 2004 ### [Programs I can't live without](https://osherove.com/blog/2004/9/3/programs-i-cant-live-without.html) - Sep 3, 2004 ### [A better user group experience is possible, and even expected](https://osherove.com/blog/2004/9/3/a-better-user-group-experience-is-possible-and-even-expected.html) --- title: "Weird Google-like toy - Toogle!" url: "https://osherove.com/blog/2004/9/3/weird-google-like-toy-toogle.md" canonical: "https://osherove.com/blog/2004/9/3/weird-google-like-toy-toogle.html" published: "2004-09-03T21:28:00" updated: "2004-09-03T21:28:00" tags: ["Cool sites"] author: "Roy Osherove" description: "Oh, this is a fun little toy: Toogle ! \"Toogle is a Text version of Googles Image Search. Currently it creates images out of the very term that was used to fetch those images\". [via Kenneth ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Weird Google-like toy - Toogle! By Roy Osherove September 3, 2004 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published September 3, 2004; technical details may be outdated. Oh, this is a fun little toy: [Toogle](http://c6.org/toogle/) ! _"Toogle is a Text version of Googles Image Search. Currently it creates images out of the very term that was used to fetch those images"._ _\[via [Kenneth](http://kentville.blogspot.com/2004/08/kewl-toogle-toogle-is-text-version-of.html)\]_ ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Oct 12, 2004 ### [Introducing "Project Distributor" - your .Net file and idea sharing ground](https://osherove.com/blog/2004/10/12/introducing-quotproject-distributorquot-your-net-file-and-id.html) - Sep 6, 2004 ### [GMane: read mailing lists via news readers](https://osherove.com/blog/2004/9/6/gmane-read-mailing-lists-via-news-readers.html) - Aug 24, 2004 ### [Developers.org.il is online with a face lift](https://osherove.com/blog/2004/8/24/developersorgil-is-online-with-a-face-lift.html) - Aug 10, 2004 ### [What works and what does not work on Virtual PC 2004](https://osherove.com/blog/2004/8/10/what-works-and-what-does-not-work-on-virtual-pc-2004.html) --- title: "Review - Resharper" url: "https://osherove.com/blog/2004/9/3/review-resharper.md" canonical: "https://osherove.com/blog/2004/9/3/review-resharper.html" published: "2004-09-03T20:53:00" updated: "2004-09-03T20:53:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "I've written a review of Resharper by JetBrains. Read it here . Note that the review is about version 1.02 of the product. version 1.03 has just been released and may contain bug fixes to some of the problems listed in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Review - Resharper By Roy Osherove September 3, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 3, 2004; technical details may be outdated. I've written a review of [Resharper](http://www.jetbrains.com/resharper) by JetBrains. [Read it here](http://weblogs.asp.net/rosherove/articles/resharper.aspx). Note that the review is about version 1.02 of the product. version 1.03 has just been released and may contain bug fixes to some of the problems listed in there. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Oct 14, 2004 ### [Unread Gmail messages through an RSS feed? coolness.](https://osherove.com/blog/2004/10/14/unread-gmail-messages-through-an-rss-feed-coolness.html) - Oct 12, 2004 ### [TaskSwitchXP - free, cooler task switching](https://osherove.com/blog/2004/10/12/taskswitchxp-free-cooler-task-switching.html) - Sep 3, 2004 ### [Programs I can't live without](https://osherove.com/blog/2004/9/3/programs-i-cant-live-without.html) - Sep 3, 2004 ### [WilsonORMapper at version 3.0, and what's an OR mapper anyway?](https://osherove.com/blog/2004/9/3/wilsonormapper-at-version-30-and-whats-an-or-mapper-anyway.html) --- title: "Review - JetBrains Resharper" url: "https://osherove.com/blog/2004/9/3/review-jetbrains-resharper.md" canonical: "https://osherove.com/blog/2004/9/3/review-jetbrains-resharper.html" published: "2004-09-03T20:48:00" updated: "2004-09-03T20:48:00" tags: ["Other"] author: "Roy Osherove" description: "Product : Resharper Version 1.02 (note: version 1.03 has just been released) Company : JetBrains Price : 99$ per license A while ago I my wife was taking Java lessons as part of her Bsc degree. I was helping her out…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Review - JetBrains Resharper By Roy Osherove September 3, 2004 In [Other](https://osherove.com/blog/category/other) **Historical article** · Originally published September 3, 2004; technical details may be outdated. **Product**: [Resharper](http://www.jetbrains.com/resharper) **Version** 1.02 (note: version 1.03 has just been released) **Company**: [JetBrains](http://www.jetbrains.com/) **Price**: 99$ per license --- A while ago I my wife was taking Java lessons as part of her Bsc degree. I was helping her out with some stuff and needed to download a Java IDE that can be used to make some of the programs she had as homework. I’m a tool wonk, and as such I like to try out lots of stuff before I make up my mind on a single software tool. So, I tried many IDEs for java (the biggest ones on the market). They were all great, in a way, but cumbersome in other ways. I finally came to an obscure IDE called IntelliJ IDEA made by JetBrains. When I first opened the IDE I felt the same feeling I had when I first opened VS.net – “Coolness!”. After 2 hours of playing with IDEA I was in love. I was not a Java coder but it was still the best IDE I have ever used. It was intelligent in ways I didn’t consider were possible. It knew what I wanted to do, what I needed to do, and what I forgot to do, and let me know about it and take care of it so quickly and easily that I was blown away. The first thing that I did was blog about my humbling experience on my weblog ([here](http://weblogs.asp.net/rosherove/archive/2003/10/26/33538.aspx) and [here](http://weblogs.asp.net/rosherove/archive/2003/11/17/38004.aspx)) and urge Microsoft to look and listen to these guys. And mostly learn and imitate as much as they could. As only Microsoft could – take it to the next level. A few months later I found out that the same company – JetBrains, was going to make a plug-in for VS.Net called Resharper, that would add the same support to refactoring and advanced interactivity that IntelliJ IDEA has. It was great news and I’ve waited patiently with a lot of other people for the first version. Which sucked. It had lots of bugs and was not really ready for prime time. But today – I’m sitting in front of a stable, more mature version of this Add-in to Visual Studio .Net, version 1.02, and it reminds me of all the things I liked in the Java version of it. These guys have made some amazing things happen inside vs.net, on which I will write about in this review.  The promise is starting o be fulfilled. **The good:** Resharper brings to the plate some amazing productivity features. The list of features is very very long and I won’t attempt to reconstruct it all here. I’ll list some of the ones I use most: **Refactoring support** Refactoring – the act of changing the design of existing code while leaving its functionality intact, is sometimes a tedious task. There are some refactoring tools out there such as C# Refactory that allow you to accomplish many these tasks automatically, and in VS.Net 205 we even has a little of those features built in. As an ear to the thrown of Refactoring in Java, Resharper should have had more refactorings that it currently does. The ones that it does have are the most basic ones (although they claim that the next version will add many more) and they work great (“Extract method”, “Extract variable”, “Introduce field” but not much more). Everything can be done with the keyboard. **Smart tags – not just in office!** Smart tags are one of the features I liked most in IntelliJ IDEA – when you make a coding error or something that won’t compile – you automatically have a smart tag appear next to your code. If you click on it you’ll see a list of available actions you can take to remedy the problem automatically. Resharper takes this functionality and puts it inside VS.Net. It is pure coolness. For example: if you are trying to set variables of different types into each other without properly casting them – a smart tag will popup allowing you to automatically cast them correctly or use a “safe cast” (using the “is” keyword in C#). Another example is when you try to use objects that are in a namespace you have note added a “using” field for, you’ll get a smart tag that allows you to automatically add the appropriate namespace at the beginning of the file. Saves lots and lots of time. There are a lot of smart tags in there! **Better intellisense** You get a new intellisense window when you install resharper. It contains advanced functions such as the ability to filter the list based on your typed letters, and even automatically suggest names and types for variables as you type them (just like in vb.net when you try to set an enum variable you get an automatic list of all possible enum values – only much smarter). Another time saver. **Background compilation – almost** This is one of the best features. Resharper will automatically highlight in red a lot of errors that you could previously only find out about only during compilation and sometimes only during runtime! This alone saves at least an hour each coding day. Guaranteed. **Quick navigation, find usages** You can quickly find either a class name or a file name and navigate to them using simple and easy shortcuts.  Small feature – which does not get in your way but helps a lot when you really need it. Another great feature allows you to see all the places in which a class or a member of the class is used in the project or solution or just the current file. For example – you can automatically highlight al the places in which some parameter or variable are used in the file (they all get a background in red) and then press escape to get back into regular code mode. You can even jump between usages using key shortcuts. You can also navigate between derived classes and their base classes, or from a base class you can list all the places in which a specific virtual member is overridden and jump to those quickly and easily. Coding Nirvana. **Custom colors** Resharper takes over your current color scheme (and how may people actually bother to change the default font color scheme in Vs.Net? not many) and adds more custom colors into the font/colors dialog. You automatically get highlighting of all different code elements in different colors (function names and derived functions can have different colors, for example). Also – in the side bar, where you usually see breakpoints you now get new icons that sit next to any methods that are overridden from base classes, telling you what this method overrides. Nice touches everywhere. You can feel the love in the developers work. **So – what’s the bad news?** There are several shortcomings in the product – many of which are simply bugs that should be treated in upcoming versions: - C# support only I hear they will support sb.net as well in the future. I hope so. - Slow working on large projects. I used Resharper on a production project with 70 screens, some of them pretty large with plenty of controls. Resharper grinded to a halt on several machines to the point of being unusable. Which is a shame. The developers that used it loved it so much they would re-enable it on small screens and classes just so they could get all the cool features. This is a bug that was known in a previous version but was supposed to be fixed in this version. Well – it wasn’t on my project. - Original Intellisense is killed After uninstalling or disabling Resharper – Intellisense in VS.Net is not restored. You have to explicitly press CTRL+Space each time to get it. Bad, bad bug which is unacceptable in this class of product. - Not enough refactorings. I would have expected from such a product to contain more refactorings. I shouldn’t need C# refactory and resharper on the same machine to get all the features I want. In my view Resharper should have more refactorings than any other addin out there. The amount of refactorings in IntelliJ IDEA is several dozens (o so it feels). The same should be with redharper – especially with the upcoming version of Whidbey coming along. ### Summary Resharper is a worthwhile purchase. It increases developer productivity and returns the investment in it many times over. In spite of several small bugs and the lack of support for vb.net (which is a shame) – it is the first add-in I can whole heartedly support since my encounter with [CodeSmart](http://www.axtools.com/), my first love. ## More in Other [All posts in Other](https://osherove.com/blog/category/other) - Jan 2, 2007 ### [Baby Osherove - Born 28-12-06](https://osherove.com/blog/2007/1/2/baby-osherove-born-28-12-06.html) - Dec 6, 2006 ### [I screwed up with a client. Here's what I've learned.](https://osherove.com/blog/2006/12/6/i-screwed-up-with-a-client-heres-what-ive-learned.html) - Jun 16, 2004 ### [BackgroundWorker implementation -in C#](https://osherove.com/blog/2004/6/16/backgroundworker-implementation-in-c.html) - Feb 17, 2004 ### [Make your .Net application support scripting - a practical approach](https://osherove.com/blog/2004/2/17/make-your-net-application-support-scripting-a-practical-appr.html) --- title: ".Net Blogger geek meets Eric Rudder, asks questions, gets answers, is happy" url: "https://osherove.com/blog/2004/9/3/net-blogger-geek-meets-eric-rudder-asks-questions-gets-answe.md" canonical: "https://osherove.com/blog/2004/9/3/net-blogger-geek-meets-eric-rudder-asks-questions-gets-answe.html" published: "2004-09-03T19:46:00" updated: "2004-09-03T19:46:00" tags: [".Net Original"] author: "Roy Osherove" description: "I attended a meeting between Eric Rudder - Senior VP of Servers and tools at MSFT, and several Microsoft employees and external Microsoft technology leaders in Israel. I was sort of a Q & A meeting where people could…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Blogger geek meets Eric Rudder, asks questions, gets answers, is happy By Roy Osherove September 3, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 3, 2004; technical details may be outdated. I attended a meeting between [Eric Rudder](http://msdn.microsoft.com/blogs/ericr/) \- Senior VP of Servers and tools at MSFT, and several Microsoft employees and external Microsoft technology leaders in Israel. I was sort of a Q & A meeting where people could ask what they wanted and he just sat there and answered. He's a pretty cool guy (and has good sense of humor). I can't say that I learned too much from the meeting. Personally I think people were not open enough and not felt open enough to ask really hard questions, or that maybe they were not prepared to ask questions. We came more in expectation to hear him speak and learned in the final minute that we were supposed to move the meeting ourselves. If I'd known that I'd make a big list of questions to ask. Second thing - it was way too short. I didn't get to ask all the three questions I had for him. But here's a nice anecdote: That same day , a few hours before the meeting, I emailed him with this letter (I guess his email alias from his blog address.. duh): \---------------SNIP -------------------------------- To: Eric Rudder **Subject:** .Net Blogger geek meets Eric Rudder at Microsoft Israel. Myth or fact? you decide.  Hi Eric. You may not know me (there's an understatement for ya..) but my Name is Roy Osherove and I'm a .Net developer/Consultant here in Israel. I'm also an MVP for .Net and work at Magen – Microsoft Technology Center here in Israel.I'll be at MS Israel today at 17:00 at the talk you are going to give and can't wait to talk to you in person. I also run a fairly well known .Net weblog: [www.iserializable.com](http://www.iserializable.com/ "http") (which is an alias for [http://weblogs.asp.net/rosherove](https://osherove.com/rosherove "http")  ) In which I write about .Net and Test Driven Development and other interesting stuff.  Anyway, I just wanted to let you know that Israel has now started to become part of the global blogsphere community and a lot of people are passionate about .Net. I've also noticed that you started your own blog a while ago but it looks like you have not enough time to actually write to it. That's a shame.  Lastly – I wanted to let you know that I think Microsoft's new found openness to the community via blogs and forums and channel9 and all those other places has greatly reduced the amount of pain a lot of the Developers have had to endure while doing real world applications. There's just more information out there and I'd like to say here "please continue this trend!!" In my blog I am sometimes critical of certain Microsoft aspects, but always as constructive criticism. I hope that MS continues to listen to its customers by reading blogs and other media generated by us "small" developers, because it leads to amazing customer feedback and loyalty. OK. Enough babbling for now. I'll try to meet you today and maybe if you have time we can talk in person.Also, wishfully thinking, you can reach me on MSN IM via _RoyOsherove at Hotmail.com_ . Cheers, and welcome to Israel. _\[Picture of me from the blog\]_  (That's me, only now I have shorter hair..\_ \---------------END SNIP -------------------------------- At the meeting the first thing he said was "ISerializable dot com?" and looked for me in the audience. I raised my hand and he said "you're lucky I checked my email just before.." and that was about it. the meeting went without any further interference but I felt good. Sort of a little "I'm listening" kinda thing. Anyway - a day or two after the meeting I get an email back from him saying he wanted to leave a comment on my blog when I post about the meeting but he so no such post. Sorry Eric :) here it is. I did take advantage of the fact that he actually responded to me and asked him some of the questions that were on my mind: "SQL service broker is one of the things I'm most impressed about. Is this going to be the next-Gen MSMQ?   Small comment about tools – vs 2005 in particular: I think MS should look to JetBrain's IntelliJ IDEA editor to gain more knowledge of features I'd like to see in vs 2005 some day. It is an amazing IDE and MS would do great to learn some important lessons in usability and interactivity in many regards. 2005 takes a step in the right direction but right now is no where near what IDEA has to offer. It made my Java experience a joy (and I don't really know java – imagine that…)  Another subject I wanted to ask you about was the whole issue of extensibility in the developer tools. How long will we suffer with COM objects and interfaces instead of using straightforward reflection and late binding? Will steps be taken in that direction?" **his reply:** "We have done more than look at IntelliJ – we have actually visited their development team (in part to encourage their team to expand their .net language support) … I think folks will enjoy the refactoring support that we’ve added to VS, and I am confident this will continue to improve over time.  I know this can really have a big impact on “enjoyment” – especially if you are in the IDE for several hours per day! I am glad you like SQL Broker – I think our long term strategy is really WS-Reliable Messaging, and we will have both Indigo and SQL be compliant towards the spec.  The feature is really nice for folks that use the design pattern of q’ing requests in the DB … a lot of folks had to cobble this up themselves w. SQL and MSMQ and I think we will make those folks very happy. We are definitely moving more and more towards .NET – COM interop will remain important for a long time, but if you have some interfaces that “bother you” more than others, please make sure to let the team know." **Thanks for taking the time to answer, Eric :)** ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 8, 2004 ### [See you at the .Net on the beach convention](https://osherove.com/blog/2004/9/8/see-you-at-the-net-on-the-beach-convention.html) - Sep 6, 2004 ### [Yukon "Query Notification": a life saver](https://osherove.com/blog/2004/9/6/yukon-quotquery-notificationquot-a-life-saver.html) - Sep 3, 2004 ### [WilsonORMapper at version 3.0, and what's an OR mapper anyway?](https://osherove.com/blog/2004/9/3/wilsonormapper-at-version-30-and-whats-an-or-mapper-anyway.html) - Sep 3, 2004 ### [Testing GUIs and customer tests using FIT](https://osherove.com/blog/2004/9/3/testing-guis-and-customer-tests-using-fit.html) --- title: "Solving System.TypeInitializationException when running the Regulator" url: "https://osherove.com/blog/2004/9/3/solving-systemtypeinitializationexception-when-running-the-r.md" canonical: "https://osherove.com/blog/2004/9/3/solving-systemtypeinitializationexception-when-running-the-r.html" published: "2004-09-03T19:20:00" updated: "2004-09-03T19:20:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "I've recently started to get emails from people who had The Regulator break on their system after installing SP2 (or some other hotfix...). I'm not sure exactly how it broke, but I know how to fix it. Here's a typical…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Solving System.TypeInitializationException when running the Regulator By Roy Osherove September 3, 2004 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published September 3, 2004; technical details may be outdated. I've recently started to get emails from people who had [The Regulator](http://regulator.sourceforge.com/) break on their system after installing SP2 (or some other hotfix...). I'm not sure exactly how it broke, but I know how to fix it. Here's a typical email and the solution is in the end: "_I have been using your Regulator utility for some time and now all of a sudden I'm getting the following error:_ An unhandled exception of type 'System.TypeInitializationException' occurred in Regulator.exe Additional information: The type initializer for "Regulator.SDK.AppContext" threw an exception. _I'm assuming XP SP2 has something to do with this but I'm not 100% certain because a couple colleagues are also using it with SP2 installed with no ill effects._ _I noticed that Net Framework 1.1 SP1 was out yesterday, but I haven't thrown that on yet. Think I'll wait a while._ _BTW, I tried a repair and also an uninstall/reinstall, with the same error cropping up each time. Any ideas?"_ **The solution:** Install The Regulator again but to a **different** folder.That should fix it. The plugin configuration file was messed up and the application can't read it and load the plugins. Re-installing it to a different folder also creates the config file again. Repair will not touch existing config files for some reason. ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Dec 31, 2004 ### [Manage many events easily with EventHandlerList](https://osherove.com/blog/2004/12/31/manage-many-events-easily-with-eventhandlerlist.html) - Dec 7, 2004 ### [Small but useful SQL tips from SQLJunkies](https://osherove.com/blog/2004/12/7/small-but-useful-sql-tips-from-sqljunkies.html) - Sep 3, 2004 ### [attach a debugger to a service automatically at startup](https://osherove.com/blog/2004/9/3/attach-a-debugger-to-a-service-automatically-at-startup.html) - Jul 24, 2004 ### [\[Tip\] how to get Windows Explorer to "Yes to All" or "No to All":](https://osherove.com/blog/2004/7/24/tip-how-to-get-windows-explorer-to-quotyes-to-allquot-or-quo.html) --- title: "Programs I can't live without" url: "https://osherove.com/blog/2004/9/3/programs-i-cant-live-without.md" canonical: "https://osherove.com/blog/2004/9/3/programs-i-cant-live-without.html" published: "2004-09-03T19:06:00" updated: "2004-09-03T19:06:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "ScottOnWriting asked his blog readers what programs they can't live without. Some great suggestions in there (and i'm not just saying that because The Regulator was mentioned 3 times in the comments ;) ) Here's a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Programs I can't live without By Roy Osherove September 3, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 3, 2004; technical details may be outdated. [ScottOnWriting](http://scottonwriting.com/sowblog/posts/1770.aspx) asked his blog readers what programs they can't live without. Some great suggestions in there (and i'm **not** just saying that because [The Regulator](http://regulator.sourceforge.net/) was mentioned 3 times in the comments ;)  ) Here's a partial list of stuff I install on a new machine before I do most anything else: - [The Google Toolbar](http://toolbar.google.com/) - [Dav'es quick search bar](http://www.dqsd.com/) - [Total Commander](http://www.ghisler.com/) - [MSN Messenger](http://messenger.microsoft.com/) - [UltraEdit](http://www.ultraedit.com/) (plus [all the WordFiles](http://www.ultraedit.com/downloads/additional.html) for Syntax highlighting every imaginable language) - [Notepad2](http://www.flos-freeware.ch/notepad2.html) - Logitech Mouseware 9.10 (not the latest version! this specific version contains a feature which was dropped in the latest versions - "HyperJump" - a speed menu to close, scroll, minimize and other actions on the current window. Have to use my own CD. can't download that version anywhere..) - [GetRight](http://www.getright.com/) - [Powermarks](http://www.kaylon.com/power.html)  awesome bookmark utility which supports synchronization between multiple machines using their own site!(I need to get back to using it...) - [IrfanView](http://www.irfanview.com/) (the fastest image viewer today. and its also free!) - [Avant Browser](http://www.avantbrowser.com/) - [Google GMail notifier](http://toolbar.google.com/gmail-helper/) Now for the stuff I install relating to my development experience: - **Addins:** - [CodeSmart for vs.net](http://www.axtools.com/) - [C# Refactory](http://www.xtreme-simplicity.net/CSharpRefactory.html) - [Resharper](http://www.avantfind.com/stat_simple.asp?url=http://www.intellij.com/resharper) - [Nunit-Addin](http://weblogs.asp.net/NUnitAddin/) (not just for unit testing. It Allows ad-hoc debugging of **any** method with no params) - **Other:** - [Reflector](http://www.aisto.com/roeder/dotnet/) - [FinalBuilder](http://www.finalbuilder.com/) - [DsWatch](http://www.codeproject.com/csharp/DSWatch.asp) \- Dataset view in debugger Addin - [Nunit](http://www.nunit.org/) - [Beyond Compare 2.0](http://www.scootersoftware.com/) What do you install first thing? ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Oct 12, 2004 ### [TaskSwitchXP - free, cooler task switching](https://osherove.com/blog/2004/10/12/taskswitchxp-free-cooler-task-switching.html) - Sep 3, 2004 ### [Review - Resharper](https://osherove.com/blog/2004/9/3/review-resharper.html) - Sep 3, 2004 ### [WilsonORMapper at version 3.0, and what's an OR mapper anyway?](https://osherove.com/blog/2004/9/3/wilsonormapper-at-version-30-and-whats-an-or-mapper-anyway.html) - Sep 1, 2004 ### [Wanna win a free Visual Assist License?](https://osherove.com/blog/2004/9/1/wanna-win-a-free-visual-assist-license.html) --- title: "WilsonORMapper at version 3.0, and what's an OR mapper anyway?" url: "https://osherove.com/blog/2004/9/3/wilsonormapper-at-version-30-and-whats-an-or-mapper-anyway.md" canonical: "https://osherove.com/blog/2004/9/3/wilsonormapper-at-version-30-and-whats-an-or-mapper-anyway.html" published: "2004-09-03T18:29:00" updated: "2004-09-03T18:29:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "it's free 50$, it sounds wonderful, and its at a version 3.0(via Mike ) - so its mature enough. I should really give the WilsonORMapper a try. I wonder why COM+ transactions are not supported though. What's an OR…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # WilsonORMapper at version 3.0, and what's an OR mapper anyway? By Roy Osherove September 3, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 3, 2004; technical details may be outdated. it's ~free~ 50$, it sounds wonderful, and its at a version 3.0(via [Mike](http://www.larkware.com/Articles/TheDailyGrind453.html))  - so its mature enough. I should really give the [WilsonORMapper](http://weblogs.asp.net/pwilson/archive/2004/09/01/224402.aspx) a try. I wonder why COM+ transactions are not supported though. What's an OR mapper? its an Object-relational mapping utility - that allows you to create objects that map and persist data to your relational database automatically. It generates code for you and you just have to know how to use the object model that was generated. I never used an OR mapper personally - but I should really give it a try someday. The way I see it it can either save a lot of time, or be a total disaster, or both, or neither. Simple huh? There's also [ObjectSpaces](http://msdn.microsoft.com/library/en-us/dnadonet/html/objectspaces.asp), Microsoft's own future OR mapper is to be released someday, sometime, soon(update: should be merged in as a prt of the upcoming WinFS system). Speaking of which - when people ask me what OR mapper I recommend to try first I recommend they try the (not free) [LLBLGen pro](http://www.llblgen.com/).  I've given the demo a spin and it looks to be amazing. Plus - I know the due behind this thing - [Frans Bouma](http://weblogs.asp.net/fbouma/), and I know that whatever he's behind will be serious and well thought out. The guy is brilliant. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 6, 2004 ### [Yukon "Query Notification": a life saver](https://osherove.com/blog/2004/9/6/yukon-quotquery-notificationquot-a-life-saver.html) - Sep 3, 2004 ### [.Net Blogger geek meets Eric Rudder, asks questions, gets answers, is happy](https://osherove.com/blog/2004/9/3/net-blogger-geek-meets-eric-rudder-asks-questions-gets-answe.html) - Sep 3, 2004 ### [Testing GUIs and customer tests using FIT](https://osherove.com/blog/2004/9/3/testing-guis-and-customer-tests-using-fit.html) - Sep 1, 2004 ### [Sunday at the VB.Net users group: Software Architecture: Techniques, Methods, and Issues](https://osherove.com/blog/2004/9/1/sunday-at-the-vbnet-users-group-software-architecture-techni.html) --- title: "Adding pre and post build events for VB.Net projects" url: "https://osherove.com/blog/2004/9/3/adding-pre-and-post-build-events-for-vbnet-projects.md" canonical: "https://osherove.com/blog/2004/9/3/adding-pre-and-post-build-events-for-vbnet-projects.html" published: "2004-09-03T18:16:00" updated: "2004-09-03T18:16:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Avner told me the other day that he found a way to add pre and post build events supports to VB.Net projects (which is a shame that they don't have them as default like C#). His way was to use the Macro capability of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Adding pre and post build events for VB.Net projects By Roy Osherove September 3, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 3, 2004; technical details may be outdated. [Avner](http://weblogs.asp.net/avnerk/) told me the other day that he [found a way  to add pre and post build events supports to VB.Net projects](http://weblogs.asp.net/avnerk/archive/2004/09/03/225251.aspx) (which is a shame that they don't have them as default like C#). His way was to use the Macro capability of Vs.Net and hook to build events. He wanted to make an add-in that does that. Turns out there is a working sample of exactly such a thing, and much more, from Microsoft. Yep - get all that and more at the [Visual Studio .NET 2003 Automation Samples](http://www.microsoft.com/downloads/details.aspx?FamilyId=3FF9C915-30E5-430E-95B3-621DCCD25150&displaylang=en) page. Thanks for finding this link Avner! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 11, 2004 ### [Organization Patterns of Agile Software Development](https://osherove.com/blog/2004/9/11/organization-patterns-of-agile-software-development.html) - Sep 7, 2004 ### [Implementing CollectionBase the right way](https://osherove.com/blog/2004/9/7/implementing-collectionbase-the-right-way.html) - Sep 3, 2004 ### [Services without components on a pre-SP2 XP machine?](https://osherove.com/blog/2004/9/3/services-without-components-on-a-pre-sp2-xp-machine.html) - Jul 17, 2004 ### [Omer is doing some serious blogging](https://osherove.com/blog/2004/7/17/omer-is-doing-some-serious-blogging.html) --- title: "attach a debugger to a service automatically at startup" url: "https://osherove.com/blog/2004/9/3/attach-a-debugger-to-a-service-automatically-at-startup.md" canonical: "https://osherove.com/blog/2004/9/3/attach-a-debugger-to-a-service-automatically-at-startup.html" published: "2004-09-03T07:59:00" updated: "2004-09-03T07:59:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "Just a small link to remind me later - how to attach a debugger to a service automatically at startup (via Peter Provost )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # attach a debugger to a service automatically at startup By Roy Osherove September 3, 2004 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published September 3, 2004; technical details may be outdated. Just a small link to remind me later  - [how to attach a debugger to a service automatically at startup](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsdebug/html/vxtskLaunchingDebuggerAutomatically.asp) (via [Peter Provost](http://www.peterprovost.org/archive/2004/08/16/1785.aspx)) ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Dec 7, 2004 ### [Small but useful SQL tips from SQLJunkies](https://osherove.com/blog/2004/12/7/small-but-useful-sql-tips-from-sqljunkies.html) - Sep 3, 2004 ### [Solving System.TypeInitializationException when running the Regulator](https://osherove.com/blog/2004/9/3/solving-systemtypeinitializationexception-when-running-the-r.html) - Jul 24, 2004 ### [\[Tip\] how to get Windows Explorer to "Yes to All" or "No to All":](https://osherove.com/blog/2004/7/24/tip-how-to-get-windows-explorer-to-quotyes-to-allquot-or-quo.html) - Apr 29, 2004 ### [\[Cool Tip\] Speed up Outlook email switching](https://osherove.com/blog/2004/4/29/cool-tip-speed-up-outlook-email-switching.html) --- title: "Great Coders Deserve Great Managers" url: "https://osherove.com/blog/2004/9/3/great-coders-deserve-great-managers.md" canonical: "https://osherove.com/blog/2004/9/3/great-coders-deserve-great-managers.html" published: "2004-09-03T07:53:00" updated: "2004-09-03T07:53:00" tags: ["Project Management"] author: "Roy Osherove" description: "I totally agree with Johanna on this one : Great coders do need great managers. I know I've often wanted demended of my workplace to invest in me just as much as I invest in my work. There are several points:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Great Coders Deserve Great Managers By Roy Osherove September 3, 2004 In [Project Management](https://osherove.com/blog/category/project-management) **Historical article** · Originally published September 3, 2004; technical details may be outdated. I totally agree with [Johanna on this one](http://www.jrothman.com/weblog/archive/2004_08_01_mpdarchive.html#109292260386983949): Great coders do need great managers. I know I've often ~wanted~demended of my workplace to invest in me just as much as I invest in my work. There are several points: - Professional developers are craftsmen, and just like any craftsmen, they need good tools to do their job. In this case good tools can be a good mouse and keyboard,  a reasonable sized screen (but two screens or a big screen is a better tool and leads to better productivity - there are facts on this one), good hardware, knowledge sources,(books, internal knowledge base, good technical team or team lead..), productivity Add-ins for Visual Studio and other things like that. So - if you're a manager and your best coder comes over and asks for a mouse that has four buttons - trust them. they. if they say that their machine is too slow for them to do debug and build efficiently, listen to them. If they ask for that add-in that helps them do that "refactoring" work you have no idea what it means, listen to them, and ask them to show it to you and explain. They are (usually) not spoiled - they are flagging you that you have a chance to improve your worker's productivity with a small investment - and generate (or save) lots of money off of that.  - Great coders know what to do once they have a target in sight. Learn to leave them alone and not check over their shoulder every few minutes. Just help them be productive, remove any obstacles that are in their way (they may be right when they say that they'd rather code than go to the 10th meeting today about the product..) and get out of their way. - Great coders need to have unlimited knowledge resources: The Internet is one - but a lot of times books and magazines are a great way to keep them in mental shape. Don't worry if books disappear every once in a while, either. Take it as a complement and purchase more. Or maybe make a library. In any case - let them learn what they need to. And let them learn it on \*your\* time, not their's. they are probably learning on their own time anyway. Respect their quest for knowledge - and you'll get respect and a boost of productivity and loyalty in return. - Great coders need respect. When they say something, listen to them. They may have a point you didn't think about. They may have sat all of last night researching that little corner of the area you're talking about and eve though they may sound a bit crazy - listen to them. - Spoil them. Really. Make them feel important. But them stuff. Give them a small club room to relax. They maybe spoiled but good people are really \*really\* hard to find. - Share them in decisions that affect them. either tell them exactly why some of the hard decisions were made .don't hold back - they can smell fear and lies. If you give them the truth - they will understand. or maybe they'll have a better alternative... If you can - share them in the decision making process as people who can influence the decision. - Let them decide how to build the damn feature you requested - unless you have a specific way you think is best. In that case - confer with them and make the design decision together. - Make them review each other's code. they will learn a lot and you'll benefit from better knowledge dispersed through out your team. I bet there are more things I just can't think about right now will update as needed. **Update**: In response to [James' post on this issue](http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3271650490): In my view, a great manager is also a good enough politician and will "convince" IT on the needs of the developers. in other words - he's there to do fighting for those who can' speak - his/her team. Sometimes that won't work. As a purist I'd say - "Don't stay where they don't trust you enough to listen to your expert advice". Not too realistic - but a good point to think about when you find out there's just no way in hell that anyone's is going to spend 2$ more for each of your 10 devs to get a mouse that actually has a scroll wheel \*shudder\*. ## More in Project Management [All posts in Project Management](https://osherove.com/blog/category/project-management) - Dec 29, 2004 ### [My interview with Johanna Rothman goes live on ITConversations.Com](https://osherove.com/blog/2004/12/29/my-interview-with-johanna-rothman-goes-live-on-itconversatio.html) - Dec 8, 2004 ### [Chatting with Johanna Rothman](https://osherove.com/blog/2004/12/8/chatting-with-johanna-rothman.html) - Jun 17, 2004 ### [It's healthy to be scared of new projects](https://osherove.com/blog/2004/6/17/its-healthy-to-be-scared-of-new-projects.html) - Jun 17, 2004 ### [Communicating Project Progress with a white board](https://osherove.com/blog/2004/6/17/communicating-project-progress-with-a-white-board.html) --- title: "Testing GUIs and customer tests using FIT" url: "https://osherove.com/blog/2004/9/3/testing-guis-and-customer-tests-using-fit.md" canonical: "https://osherove.com/blog/2004/9/3/testing-guis-and-customer-tests-using-fit.html" published: "2004-09-03T07:31:00" updated: "2004-09-03T07:31:00" tags: [".Net Original", "Agile Related"] author: "Roy Osherove" description: "One of the things I have still not talked about in any of my talks is about testing GUIs. The reason is pretty simple: I don't really do that. I find that the amount of effort it takes to test a gui with NunitASP…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Testing GUIs and customer tests using FIT By Roy Osherove September 3, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published September 3, 2004; technical details may be outdated. One of the things I have still not talked about in any of my talks is about testing GUIs. The reason is pretty simple: I don't really do that. I find that the amount of effort it takes to test a gui with [NunitASP](http://nunitasp.sourceforge.net/) (whichh just resleased a new vertion, BTW) or [NunitForms](http://nunitforms.sourceforge.net/) is much higher that it is to simply separate as much logic as possible from the UI layer and test that functionality. I do believe in a test-first fasion - but I'm also a realist. Its jsut too time consuming and the benefits I'd get from it are minimal. If I don't test the GUI, however, the ramifications are not that horrible and usually very easy to fix. One thing that I **do** want to get into is the whole issue of customer tests - [using the FIT framework](http://c2.com/cgi/wiki?FrameworkForIntegratedTest). It's a pretty awesome idea actually: You wrap your object model in a testable and simple object model wrapper which internally calls your real objects and contains various properties that return results. You then let the customer write their own tests against your custom objects, only they don't program against them they actually fill out HTML tables in which they specify the object they want to instantiate, the method they would like to trigger, and the expected results of that call. It very user friends (compared to coding, anyway..) and I can see this as something that could change the way we face the customer today before a major release. I still have a few problems with it though. Such as - when do you actually take the time to write that object model? Customer tests are supposed to be written as the application is written. they also arenot a replacement for unit tests, so when do we have time to write them? do I code up a new method to my object model each time I write a new unit test? where exactly in the coding chain do customer tests fit in? how much extra work are they? Is the amount of extra work justifiable? I'd love it if someone with real world experience in that are has some comments on this matter. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 3, 2004 ### [.Net Blogger geek meets Eric Rudder, asks questions, gets answers, is happy](https://osherove.com/blog/2004/9/3/net-blogger-geek-meets-eric-rudder-asks-questions-gets-answe.html) - Sep 3, 2004 ### [WilsonORMapper at version 3.0, and what's an OR mapper anyway?](https://osherove.com/blog/2004/9/3/wilsonormapper-at-version-30-and-whats-an-or-mapper-anyway.html) - Sep 1, 2004 ### [Sunday at the VB.Net users group: Software Architecture: Techniques, Methods, and Issues](https://osherove.com/blog/2004/9/1/sunday-at-the-vbnet-users-group-software-architecture-techni.html) - Aug 30, 2004 ### [Simple data binding simplified using \[BindToField\] and \[BindToValueList\]](https://osherove.com/blog/2004/8/30/simple-data-binding-simplified-using-bindtofield-and-bindtov.html) --- title: "A better user group experience is possible, and even expected" url: "https://osherove.com/blog/2004/9/3/a-better-user-group-experience-is-possible-and-even-expected.md" canonical: "https://osherove.com/blog/2004/9/3/a-better-user-group-experience-is-possible-and-even-expected.html" published: "2004-09-03T07:16:00" updated: "2004-09-03T07:16:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This and this is what I'm talking about when I say I want today's Israeli user groups to be better than what they are today. If/When I have my own group I promise to do that and more. Amen." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A better user group experience is possible, and even expected By Roy Osherove September 3, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 3, 2004; technical details may be outdated. [This](http://dotnetjunkies.com/WebLog/darrell.norton/archive/2004/09/02/24224.aspx) and [this](http://www.vtdotnet.org/) is what I'm talking about when I say I want today's Israeli user groups to be better than what they are today. If/When I have my own group I promise to do that and more. Amen. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 4, 2004 ### [Great coders == open source? Hardly](https://osherove.com/blog/2004/9/4/great-coders-open-source-hardly.html) - Sep 3, 2004 ### [Programs I can't live without](https://osherove.com/blog/2004/9/3/programs-i-cant-live-without.html) - Aug 26, 2004 ### [Blogger/Geek dinner?](https://osherove.com/blog/2004/8/26/bloggergeek-dinner.html) - Aug 24, 2004 ### [Gmail Notifier - by Google, finally](https://osherove.com/blog/2004/8/24/gmail-notifier-by-google-finally.html) --- title: "Services without components on a pre-SP2 XP machine?" url: "https://osherove.com/blog/2004/9/3/services-without-components-on-a-pre-sp2-xp-machine.md" canonical: "https://osherove.com/blog/2004/9/3/services-without-components-on-a-pre-sp2-xp-machine.html" published: "2004-09-03T05:23:00" updated: "2004-09-03T05:23:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Saar has a nice post detailing how you could hack your way in and out of a transaction using SWC Services without components) even if you don't have SP2 installed on your XP machine. The funny thing is that SWC *did*…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Services without components on a pre-SP2 XP machine? By Roy Osherove September 3, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 3, 2004; technical details may be outdated. [Saar has a nice post](http://dotnetjunkies.com/WebLog/saarc/archive/2004/08/18/22419.aspx) detailing how you could hack your way in and out of a transaction using SWC Services without components) even if you don't have SP2 installed on your XP machine. The funny thing is that SWC \*did\* work on my XP SP1 machine without any hacks needed, but did \*not\* run on a different XP SP1 machine I had used. [There's an explanation for this](http://www.winterdom.com/weblog/archives/000227.html)  . you might want to note that his hack did not work anymore after installing some hot fix. Still - this is something I'll keep here for future reference. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 7, 2004 ### [Implementing CollectionBase the right way](https://osherove.com/blog/2004/9/7/implementing-collectionbase-the-right-way.html) - Sep 3, 2004 ### [Adding pre and post build events for VB.Net projects](https://osherove.com/blog/2004/9/3/adding-pre-and-post-build-events-for-vbnet-projects.html) - Jul 17, 2004 ### [Omer is doing some serious blogging](https://osherove.com/blog/2004/7/17/omer-is-doing-some-serious-blogging.html) - Jul 11, 2004 ### [An interesting Memory Leak problem.](https://osherove.com/blog/2004/7/11/an-interesting-memory-leak-problem.html) --- title: "Wanna win a free Visual Assist License?" url: "https://osherove.com/blog/2004/9/1/wanna-win-a-free-visual-assist-license.md" canonical: "https://osherove.com/blog/2004/9/1/wanna-win-a-free-visual-assist-license.html" published: "2004-09-01T03:35:00" updated: "2004-09-01T03:35:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "I've noticed that Natty Gur is not only speaking at the users group this Sunday, he's also handing out a free license to Visual Assist on his blog to whoever sends him the most FxCop rules. That's pretty cool!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Wanna win a free Visual Assist License? By Roy Osherove September 1, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 1, 2004; technical details may be outdated. I've noticed that [Natty Gur](http://weblogs.asp.net/ngur) is not only speaking at the users group this Sunday, he's also [handing out a free license to Visual Assist](http://weblogs.asp.net/ngur/archive/2004/08/27/221610.aspx) on his blog to whoever sends him the most FxCop rules. That's pretty cool! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Sep 3, 2004 ### [Programs I can't live without](https://osherove.com/blog/2004/9/3/programs-i-cant-live-without.html) - Sep 3, 2004 ### [WilsonORMapper at version 3.0, and what's an OR mapper anyway?](https://osherove.com/blog/2004/9/3/wilsonormapper-at-version-30-and-whats-an-or-mapper-anyway.html) - Aug 24, 2004 ### [Gmail Notifier - by Google, finally](https://osherove.com/blog/2004/8/24/gmail-notifier-by-google-finally.html) - Aug 5, 2004 ### [The Regexinator - VS.Net Addin to search documents using Regex](https://osherove.com/blog/2004/8/5/the-regexinator-vsnet-addin-to-search-documents-using-regex.html) --- title: "Sunday at the VB.Net users group: Software Architecture: Techniques, Methods, and Issues" url: "https://osherove.com/blog/2004/9/1/sunday-at-the-vbnet-users-group-software-architecture-techni.md" canonical: "https://osherove.com/blog/2004/9/1/sunday-at-the-vbnet-users-group-software-architecture-techni.html" published: "2004-09-01T03:32:00" updated: "2004-09-01T03:32:00" tags: [".Net Original"] author: "Roy Osherove" description: "I hope to see you this sunday at the VB.Net users group meeting. should be really fun! here's the invitation letter: Once again, in BIG BOLD LETTERS – PLEASE NOTE THE 1-TIME DAY CHANGE !!! This month we will be meeting…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Sunday at the VB.Net users group: Software Architecture: Techniques, Methods, and Issues By Roy Osherove September 1, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 1, 2004; technical details may be outdated. _I hope to see you this sunday at the VB.Net users group meeting. should be really fun! here's the invitation letter:_ Once again, in **BIG BOLD LETTERS – PLEASE NOTE THE 1-TIME DAY CHANGE !!!** This month we will be meeting on **SUNDAY Sept 5**.  Other than that – same time, same place.  The goal of this month's speaker, [Natty Gur](http://weblogs.asp.net/ngur), is to share with us the various techniques, methods, and issues when addressing software system architecture.  Natty is an independent consultant on architecture and design to many organizations.  He is very passionate about software architecture and will provide an overview of different classical and more recent approaches.  Although we all love to see code, it is important to occasionally take a step back and look at how we should address the "big picture".  As always, we'll have our special "Hatzilu" session at our meeting. So please come prepared to discuss your most frustrating problems (or at least some of them !) and to share some of your own techniques and solutions that you have found useful in your applications. The September meeting of the Israel Visual Basic User Group [http://www.renaissance.co.il/ivbug](http://www.renaissance.co.il/ivbug "http"): **Sunday September 5, 2004 ** **Location****:** **Microsoft Israel** **2 Hapnina St****, Ra'anana** **(09) 7625-100** **Floor 0 , Dekel Room** **It is the new building across from Amdocs.** **After the first traffic circle, there is an area for parking on the right.**  17:30 - 18:00   Assembly 18:00 - 18:05   Introduction and miscellaneous 18:05 - 19:15    **“Software Architecture: Techniques, Methods, and Issues – Part 1****”** [Natty Gur](http://weblogs.asp.net/ngur)  \- Independent Consultant and MS MVP 19:15 - 19:30    Break 19:30 – 19:45   "Hatzilu !"                         Open session, with questions and answers/ideas from everyone 19:45 - 20:45   **“Software Architecture: Techniques, Methods, and Issues – Part 2****”** [Natty Gur](http://weblogs.asp.net/ngur)  \- Independent Consultant and MS MVP ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 3, 2004 ### [WilsonORMapper at version 3.0, and what's an OR mapper anyway?](https://osherove.com/blog/2004/9/3/wilsonormapper-at-version-30-and-whats-an-or-mapper-anyway.html) - Sep 3, 2004 ### [Testing GUIs and customer tests using FIT](https://osherove.com/blog/2004/9/3/testing-guis-and-customer-tests-using-fit.html) - Aug 30, 2004 ### [Simple data binding simplified using \[BindToField\] and \[BindToValueList\]](https://osherove.com/blog/2004/8/30/simple-data-binding-simplified-using-bindtofield-and-bindtov.html) - Aug 26, 2004 ### [Revisited: Killing a process, Introducing: TaskKiller](https://osherove.com/blog/2004/8/26/revisited-killing-a-process-introducing-taskkiller.html) --- title: "Simple data binding simplified using [BindToField] and [BindToValueList]" url: "https://osherove.com/blog/2004/8/30/simple-data-binding-simplified-using-bindtofield-and-bindtov.md" canonical: "https://osherove.com/blog/2004/8/30/simple-data-binding-simplified-using-bindtofield-and-bindtov.html" published: "2004-08-30T19:38:00" updated: "2004-08-30T19:38:00" tags: [".Net Original"] author: "Roy Osherove" description: "In one of the projects I'm on we're doing lots and lots of Winforms data binding. One of the forms is composed of 12 different tabs each with about 2 dozen controls and grids and what not (don't kill the messenger!…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Simple data binding simplified using \[BindToField\] and \[BindToValueList\] By Roy Osherove August 30, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published August 30, 2004; technical details may be outdated. In one of the projects I'm on we're doing lots and lots of Winforms data binding. One of the forms is composed of 12 different tabs each with about 2 dozen controls and grids and what not (don't kill the messenger! that's what porting an old system looks like...) all needing to be bound to multiple datasets and data views.\*shudder\* I can tell you this much - with this much controls on one form - your code and especially binding code is gonna get really ugly real fast. especially tedious . Oh, its nothing too hard - just lots of the same work done on a different target and source every time. one of the things we've come up with to ease our pain is a simple Custom attribute that you can put on a control instance on the form (TextBox for example) that has some meta-data as to what data binding it will use at run time. since this is not the simple lovable drag and drop binding GUI demos you see at conferences, you only really have the data you want at **runtime** and no way to do binding at design time - this is a very simple way to make a lot of that tedious code disappear. Here's how it looks on our form: public class Form1 : System.Windows.Forms.Form  {   **\[BindToField("Products.ProductName")\] **  public   System.Windows.Forms.TextBox txtName;   **\[BindToValueList("Categories.CategoryName","CategoryID")\] **  public System.Windows.Forms.ComboBox cmbCategories; What we actually do at run time is do a very simple call to a bind helper class: public Form1()   {       InitializeComponent();    new SimpleDataComponent().FillNorthwindData(m\_dataset);    //this is the simple way    **ControlBinder.BindControls(this,m\_dataset);**  The binder will automatically seek out all the controls with the custom attribute on them and bind them automatically to the appropriate data source. for controls that display lists of values (appropriately derived from ListControl) we have a "BindToValueListAttribute" for that purpose. Anyway - thought you might like to save some time on your own so feel free to download this code directly from here: [http://dev.magen.com/Agile/Code/ControlBinder.zip](http://dev.magen.com/Agile/Code/ControlBinder.zip) it comes with source and a sample project. The nice thing is that the attribute and binder object have the ability to let you specify more advanced properties for binding. for example (none of these are shown in this post)- - you can specific to exactly what property on the control your data source will be bound to. - you can put multiple attributes on a control to add multiple data bindings to it. - you can add a category to an attribute and have the binder bind only to controls that posses this property. this allows you to have multiple data sources (which can be multiple data views for example) on one form, each bound to a different set of controls on the form, differentiate by category names on the attributes of the controls. This is a great exercise in using Reflection - which I have to say I'm falling for more and more each time I use it. So elegant and simple. I love it. Feel free to add comments and or requests and or bugs on this post. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 3, 2004 ### [Testing GUIs and customer tests using FIT](https://osherove.com/blog/2004/9/3/testing-guis-and-customer-tests-using-fit.html) - Sep 1, 2004 ### [Sunday at the VB.Net users group: Software Architecture: Techniques, Methods, and Issues](https://osherove.com/blog/2004/9/1/sunday-at-the-vbnet-users-group-software-architecture-techni.html) - Aug 26, 2004 ### [Revisited: Killing a process, Introducing: TaskKiller](https://osherove.com/blog/2004/8/26/revisited-killing-a-process-introducing-taskkiller.html) - Aug 23, 2004 ### [Tomorrow is DBA day, and .Net rocks is back on my mind](https://osherove.com/blog/2004/8/23/tomorrow-is-dba-day-and-net-rocks-is-back-on-my-mind.html) --- title: "Agile MSF methodology framework" url: "https://osherove.com/blog/2004/8/28/agile-msf-methodology-framework.md" canonical: "https://osherove.com/blog/2004/8/28/agile-msf-methodology-framework.html" published: "2004-08-28T09:09:00" updated: "2004-08-28T09:09:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Looks very veeery interesting: \"Microsoft Solutions Framework (MSF) Agile is a scenario-driven, context-based, agile software development process for building and improving .NET and other object-oriented applications.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile MSF methodology framework By Roy Osherove August 28, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published August 28, 2004; technical details may be outdated. [Looks very veeery interesting:](http://blogs.msdn.com/keithrowe/archive/2004/08/26/221322.aspx) "Microsoft Solutions Framework (MSF) Agile is a scenario-driven, context-based, agile software development process for building and improving .NET and other object-oriented applications. MSF Agile directly incorporates practices for handling quality of service requirements such as performance and security. It is also context-based and uses a context-driven approach to determine how to operate the project. This approach helps create an adaptive process that overcomes the boundary conditions (such as project size and system criticality) of most agile software development processes while achieving the objectives set out in the vision of the project. MSF Agile is highly customizable, scalable, and will be fully integrated with Visual Studio 2005 Team System. The tooling and processes will work together to provide a more productive user experience than the process or tooling could provide alone. This is because both tooling and processes are built using the same meta-model. In other words, MSF harvests proven guidance from inside and outside of Microsoft and provides a seamless experience with Visual Studio 2005 Team System for process automation and guidance within the software development life cycle. And now (ta-da!) you can go get the zip file and look at what we have so far yourself.  Go to [http://www.gotdotnet.com/workspaces/directory.aspx](http://www.gotdotnet.com/workspaces/directory.aspx) and search for "msf".  The "MSF V4 Beta" workspace will appear.  We need to ask you to sign in. Once you're registered in the workspace, the file is there for you to have a look at. It's a zip file containing a collection of web pages.  Unzip into a convenient directory and start browsing around.  It's not quite complete yet and there will definitely be more changes as we go.  " ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Sep 9, 2004 ### [How Test Driven Development proved itself in a big way!](https://osherove.com/blog/2004/9/9/how-test-driven-development-proved-itself-in-a-big-way.html) - Sep 3, 2004 ### [Testing GUIs and customer tests using FIT](https://osherove.com/blog/2004/9/3/testing-guis-and-customer-tests-using-fit.html) - Aug 8, 2004 ### [Advanced TDD workshop today](https://osherove.com/blog/2004/8/8/advanced-tdd-workshop-today.html) - Aug 5, 2004 ### [Testing web services locally - faster](https://osherove.com/blog/2004/8/5/testing-web-services-locally-faster.html) --- title: "Blogger/Geek dinner?" url: "https://osherove.com/blog/2004/8/26/bloggergeek-dinner.md" canonical: "https://osherove.com/blog/2004/8/26/bloggergeek-dinner.html" published: "2004-08-26T19:56:00" updated: "2004-08-26T19:56:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "It's been a while. how about another blogger/geek dinner ? say - next Sunday - in a week and a half, in the tel Aviv area.. your thoughts are welcome." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blogger/Geek dinner? By Roy Osherove August 26, 2004 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 26, 2004; technical details may be outdated. It's been a while. how about another [blogger/geek dinner](http://dev.magen.com/geeks)? say - next Sunday - in a week and a half, in the tel Aviv area.. your thoughts are welcome. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Sep 16, 2004 ### [No Fun Intended](https://osherove.com/blog/2004/9/16/no-fun-intended.html) - Sep 12, 2004 ### [Do I like the change to weblogs.asp.net? No I don't.](https://osherove.com/blog/2004/9/12/do-i-like-the-change-to-weblogsaspnet-no-i-dont.html) - Aug 10, 2004 ### [Testing Blogs at Microsoft, and Addin contest news](https://osherove.com/blog/2004/8/10/testing-blogs-at-microsoft-and-addin-contest-news.html) - Aug 1, 2004 ### [MS Israel events RSS feed published](https://osherove.com/blog/2004/8/1/ms-israel-events-rss-feed-published.html) --- title: "Revisited: Killing a process, Introducing: TaskKiller" url: "https://osherove.com/blog/2004/8/26/revisited-killing-a-process-introducing-taskkiller.md" canonical: "https://osherove.com/blog/2004/8/26/revisited-killing-a-process-introducing-taskkiller.html" published: "2004-08-26T19:54:00" updated: "2004-08-26T19:54:00" tags: [".Net Original"] author: "Roy Osherove" description: "A few days ago I blogged about a trick how to kill a process that wouldn't die . Well, the trick I had up my sleeve was good, but there were better ways, described oh so eloquently by Pavel Lebedinsky as comments to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Revisited: Killing a process, Introducing: TaskKiller By Roy Osherove August 26, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published August 26, 2004; technical details may be outdated. A few days ago I blogged about a trick [how to kill a process that wouldn't die](http://weblogs.asp.net/rosherove/archive/2004/08/21/218212.aspx). Well, the trick I had up my sleeve was good, but there were better ways, described oh so eloquently by Pavel Lebedinsky as comments to that post. here are the highlights (I was referring to NTSD.exe read about it in the original post): **Introducing TaskKill.exe** "This was a good way to kill processes on Win2K, which doesn't come with a command line tool like kill.exe. The reason it works in some cases when task manager doesn't is because ntsd enables SeDebugPrivilege, allowing you to open processes that you otherwise wouldn't have access to. On XP and Win2003 however you should just use **taskkill.exe**. It's _more_ reliable and should even work in some cases when **ntsd** wouldn't - for example, if the process is deadlocked on the loader lock. Ntsd will not be able to attach to such process (it will eventually time out and suspend it, but when you type 'q' it will simply quit and resume the process (unless you do .kill first)). " **Changing a priority for system processes** "One situation where ntsd does come in handy even on XP+ is when you want to change priority of a system process. Let's say a service (for example, msdtc) is taking up 100% CPU. You want to let it finish whatever it's doing but you don't want it to slow down your interactive processes. So you open up task manager, right-click on the msdtc process and try to change its priority. This fails with access denied because msdtc runs as NETWORK SERVICE and its security descriptor doesn't give you any access. Fortunately, you can launch task manager under debugger ("**ntsd** taskmgr"). Ntsd enables _SeDebugPrivilege_ in its token, and taskmgr inherits this setting so it can now open system processes too. You can even detach the debugger (type 'qd', Enter) and use this instance of task manager to kill system processes or change their priorities. " "...Actually, it looks like on XP SP2 task manager automatically enables SeDebugPrivilege when you try to kill a process. This can easily be seen in debugger (just put a breakpoint on ADVAPI32!AdjustTokenPrivileges). For some reason taskmgr doesn't do this when you try change priority of a process. So starting taskmgr under debugger is only necessary if you want to change priority of a process that you normally don't have access to. It is not needed if you want to to kill such process (at least, not on XP SP2). " Awesome. Thanks Pavel. Anyway - thanks to his great advice and comments I've gone ahead and created a little GUI app that shows you a list of running processes and allows you to "ultra-kill" each one, even if its a system process or a service, underneath using the ntsd and taskkill.exe commands. **Task Killer:** Allows killing a process, filtering and it can hide in the tray. I'm using some of the DevExpress controls in there for the grid and stuff so it looks pretty nice. [Feel free to download this](http://dev.magen.com/agile/code/taskkiller.zip), it requires .Net 1.1 (1.4 MB). yes, I know about psKill and psList. this is just a more friendly way of doing the same basic things. Also - a note regarding [John Lam's post on psKill and psList](http://www.iunknown.com/000344.html): the two tools that already come with windows cover most of what you want them for already: TaskKill.exe and TaskList.exe (on win XP and up). TaskKill.exe already has some pretty wild command line params such as wild card filters, and you can even use equation operators to look for specific processes. who says you don't always get what you need? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 1, 2004 ### [Sunday at the VB.Net users group: Software Architecture: Techniques, Methods, and Issues](https://osherove.com/blog/2004/9/1/sunday-at-the-vbnet-users-group-software-architecture-techni.html) - Aug 30, 2004 ### [Simple data binding simplified using \[BindToField\] and \[BindToValueList\]](https://osherove.com/blog/2004/8/30/simple-data-binding-simplified-using-bindtofield-and-bindtov.html) - Aug 23, 2004 ### [Tomorrow is DBA day, and .Net rocks is back on my mind](https://osherove.com/blog/2004/8/23/tomorrow-is-dba-day-and-net-rocks-is-back-on-my-mind.html) - Aug 23, 2004 ### [A Virtual PC keyboard bug and fix, a new blog, and an agile question](https://osherove.com/blog/2004/8/23/a-virtual-pc-keyboard-bug-and-fix-a-new-blog-and-an-agile-qu.html) --- title: "Gmail Notifier - by Google, finally" url: "https://osherove.com/blog/2004/8/24/gmail-notifier-by-google-finally.md" canonical: "https://osherove.com/blog/2004/8/24/gmail-notifier-by-google-finally.html" published: "2004-08-24T13:10:00" updated: "2004-08-24T13:10:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "Now this is what I've been waiting for - Google has released a Gmail Notifier utility that runs in the system tray. no more running after free obscure apps that don't work. This one if from the monster itself." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Gmail Notifier - by Google, finally By Roy Osherove August 24, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 24, 2004; technical details may be outdated. Now **this** is what I've been waiting for - [Google](http://www.google.com/) has released a [Gmail Notifier utility](http://toolbar.google.com/gmail-helper/) that runs in the system tray. no more running after free obscure apps that don't work. This one if from the monster itself. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Sep 3, 2004 ### [WilsonORMapper at version 3.0, and what's an OR mapper anyway?](https://osherove.com/blog/2004/9/3/wilsonormapper-at-version-30-and-whats-an-or-mapper-anyway.html) - Sep 1, 2004 ### [Wanna win a free Visual Assist License?](https://osherove.com/blog/2004/9/1/wanna-win-a-free-visual-assist-license.html) - Aug 5, 2004 ### [The Regexinator - VS.Net Addin to search documents using Regex](https://osherove.com/blog/2004/8/5/the-regexinator-vsnet-addin-to-search-documents-using-regex.html) - Jul 22, 2004 ### [NUnit 2.2 beta 3 has been released - and some questions](https://osherove.com/blog/2004/7/22/nunit-22-beta-3-has-been-released-and-some-questions.html) --- title: "Developers.org.il is online with a face lift" url: "https://osherove.com/blog/2004/8/24/developersorgil-is-online-with-a-face-lift.md" canonical: "https://osherove.com/blog/2004/8/24/developersorgil-is-online-with-a-face-lift.html" published: "2004-08-24T03:38:00" updated: "2004-08-24T03:38:00" tags: ["Cool sites"] author: "Roy Osherove" description: "http://www.Developers.org.il just got a new face lift. It is definitely starting to look and feel like a professional site. the only thing missing now is visitors. There already is some nice content in there (in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Developers.org.il is online with a face lift By Roy Osherove August 24, 2004 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published August 24, 2004; technical details may be outdated. [http://www.Developers.org.il](http://www.developers.org.il/) just got a new face lift. It is definitely starting to look and feel like a professional site. the only thing missing now is visitors. There already is some nice content in there (in Hebrew!). Feel free to drop in and check it out. You can also drop by the [.Net forum](http://forum.developers.org.il/Community/viewforum.php?f=3) and ask a question. As forum manager I check it nightly and answer questions, but I'm not the only one there so ask away :) ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Sep 6, 2004 ### [GMane: read mailing lists via news readers](https://osherove.com/blog/2004/9/6/gmane-read-mailing-lists-via-news-readers.html) - Sep 3, 2004 ### [Weird Google-like toy - Toogle!](https://osherove.com/blog/2004/9/3/weird-google-like-toy-toogle.html) - Aug 10, 2004 ### [What works and what does not work on Virtual PC 2004](https://osherove.com/blog/2004/8/10/what-works-and-what-does-not-work-on-virtual-pc-2004.html) - Jun 21, 2004 ### [Microsoft Research introduces RSS Feeds, \*finally\*](https://osherove.com/blog/2004/6/21/microsoft-research-introduces-rss-feeds-finally.html) --- title: "Tomorrow is DBA day, and .Net rocks is back on my mind" url: "https://osherove.com/blog/2004/8/23/tomorrow-is-dba-day-and-net-rocks-is-back-on-my-mind.md" canonical: "https://osherove.com/blog/2004/8/23/tomorrow-is-dba-day-and-net-rocks-is-back-on-my-mind.html" published: "2004-08-23T22:00:00" updated: "2004-08-23T22:00:00" tags: [".Net Original"] author: "Roy Osherove" description: "Hey. Tomorrow is a special day. A professional DBA is coming over to look at a database of one of my projects. Yes -I know he's not going to like everything he sees in there. but I intend to take that opportunity to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tomorrow is DBA day, and .Net rocks is back on my mind By Roy Osherove August 23, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published August 23, 2004; technical details may be outdated. Hey. Tomorrow is a special day. A professional DBA is coming over to look at a database of one of my projects. Yes -I **know** he's not going to like everything he sees in there. but I intend to take that opportunity to learn as much as I can from the guy. We have the whole day ahead of us. It's going to be tough, annoying at times, and maybe even a little masochistic, but surely in the end I will come out a better developer, architect and database-ish dude. as usual - it is mistakes that make us all learn the most. Learning from my own mistakes is one of the few things I am trying to find more and more time to set a side for. It's hard though. Both in time  and in spirit. No one likes to be self spanked - but usually the experience leaved you with a lasting memory for the next projects - where you suddenly feel like you know so much more than you did 3 months ago. know that feeling? I hope I'll have this same one tomorrow. Also, speaking of databases - I finally have a CD player in my car (no, we do **not** ride camels to work in Israel!). So I can get back to listen to one of my historical favorites - the [.Net rocks show](http://www.franklins.net/dotnetrocks). Today I was starting to listen to the 2.5 hour long show with [Kimberly Tripp](http://www.franklins.net/fnetdotnetrocks/dotnetrocks.aspx?showid=75) \- an SQL guru. she has some very insightful things to say and I urge you to burn the show onto 2 Cd's and listen to them in your car on the way to and from work. its amazing how much you can learn. though i warn you - the good stuff on the show (where she actually start to speak) comes on only about 35 mins. into the show. I love the show - but if you want to get to the juice - scroll to 35 mins. that's where it is. also - if you've never heard of .Net rocks -you should really start listening to the show from the early shows on. it is an amazing experience to listen to people who's books you've read and memorized in difficult situations (Dan Appelman, anyone?). anyway - here's to discovering more and more stuff like this everyday! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 30, 2004 ### [Simple data binding simplified using \[BindToField\] and \[BindToValueList\]](https://osherove.com/blog/2004/8/30/simple-data-binding-simplified-using-bindtofield-and-bindtov.html) - Aug 26, 2004 ### [Revisited: Killing a process, Introducing: TaskKiller](https://osherove.com/blog/2004/8/26/revisited-killing-a-process-introducing-taskkiller.html) - Aug 23, 2004 ### [A Virtual PC keyboard bug and fix, a new blog, and an agile question](https://osherove.com/blog/2004/8/23/a-virtual-pc-keyboard-bug-and-fix-a-new-blog-and-an-agile-qu.html) - Aug 13, 2004 ### [Add-in Contest winners announced!](https://osherove.com/blog/2004/8/13/add-in-contest-winners-announced.html) --- title: "Stuff to do" url: "https://osherove.com/blog/2004/8/23/stuff-to-do.md" canonical: "https://osherove.com/blog/2004/8/23/stuff-to-do.html" published: "2004-08-23T21:49:00" updated: "2004-08-23T21:49:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Some stuff that i really need to do and don't want to forget: New version of the Regulator with cool new syntax editor New version of NunitX - with the latest version of Nunit as a base source and maybe some more…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Stuff to do By Roy Osherove August 23, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 23, 2004; technical details may be outdated. Some stuff that i really need to do and don't want to forget: - New version of [the Regulator](http://regulator.sourceforge.net/) with cool new syntax editor - New version of [NunitX](http://weblogs.asp.net/rosherove/archive/2004/07/12/180189.aspx) \- with the latest version of Nunit as a base source and maybe some more attributes. - Maybe a version of [Nunit-Addin](http://weblogs.asp.net/nunitaddin) that can run the NunitX version (right now rollback is not supported if run from within the IDE) - An article (secret) - Review: [Resharper](http://www.jetbrains.com/resharper/) (so far - very cool indeed. Amazing. coolest one so far - but terribly slow on large code files and projects) - Announcement of more [coding contests](http://dev.magen.com/addincontest) (already have sponsorship!) - Write more to my blog!! Did i forget anything? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 26, 2004 ### [Blogger/Geek dinner?](https://osherove.com/blog/2004/8/26/bloggergeek-dinner.html) - Aug 24, 2004 ### [Gmail Notifier - by Google, finally](https://osherove.com/blog/2004/8/24/gmail-notifier-by-google-finally.html) - Aug 21, 2004 ### [A short update and a cool process killing trick](https://osherove.com/blog/2004/8/21/a-short-update-and-a-cool-process-killing-trick.html) - Aug 7, 2004 ### [Absolute Powerpoint](https://osherove.com/blog/2004/8/7/absolute-powerpoint.html) --- title: "A Virtual PC keyboard bug and fix, a new blog, and an agile question" url: "https://osherove.com/blog/2004/8/23/a-virtual-pc-keyboard-bug-and-fix-a-new-blog-and-an-agile-qu.md" canonical: "https://osherove.com/blog/2004/8/23/a-virtual-pc-keyboard-bug-and-fix-a-new-blog-and-an-agile-qu.html" published: "2004-08-23T21:18:00" updated: "2004-08-23T21:18:00" tags: [".Net Original"] author: "Roy Osherove" description: "[Update: there's a nice looking FAQ and a Forum devoted to Virtual PC 2004 - though I Don't see this problem mentioned anywhere in there...] A couple of days ago I gave a talk in the Israeli .Net architects user group…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Virtual PC keyboard bug and fix, a new blog, and an agile question By Roy Osherove August 23, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published August 23, 2004; technical details may be outdated. _\[Update: there's a nice looking_ [_FAQ_](http://www.robertmoir.co.uk/win/VirtualPC2004FAQ.html) _and a_ [_Forum_](http://www.robertmoir.co.uk/forums/forum.asp?FORUM_ID=11) _devoted to Virtual PC 2004 - though I Don't see this problem mentioned anywhere in there...\]_ A couple of days ago I gave a talk in the Israeli .Net architects user group about Test Driven Development. The lecture was supposed to heavy with code demos and cool amazing stuff. I was all pumped up. All through the weekend I prepared my new found love, an IBM ThinkPad T41p with 2GB RAM, loading it with an awesome setup: - The main OS only has office and other standard stuff installed - but no dev tools. - All the dev tools are installed in separate OSs - on virtual machines. - I actually have separate virtual machines which currently are (and geeky names too): - Maggie: win XP, VS 200, SQL server 2000 - Bart: win XP, VS 2005 + SQL 2000 - Homer: win XP, vs.net Whidbey (May CTP - has the Team System which is left out of beta 1...) - Lisa: Win 2003 + Yukon + vs.net 2005 - Marge: Longhorn + (TBD) - So - whenever I need to develop something I just open the needed virtual machine and voila - I have it right there. and I can always start fresh with no hassles or re-installs. just keep a clean image backed-up and you'er home free. Anyway - my plan in the presentation was to show off features both in VS.net 2003 and also on vs 2005. So - the presentation lies on the host machine - which has a global share that all virtual machines can access. all the code is there too. when I want to show somethi8ng I simply bring up the correct VPC image and that's that. the 2 GB RAM on the machine allows me to run the stuff on the virtual machine very smoothly ans fast. Things were going well - up to the middle of the lecture. I then moved on to the virtual machine - made it full screen - and started typing some code. to my annoyance - every keystroke on the keyboard seemed to be hitting some random other key on the target OS. I press tab - and I get a "page down" reaction. I press "f" and I get an "enter". imagine this in the middle of a lecture! Things seemed OK when the VPC was not full screen so I went ahead like that, but it was very frustrating. Anyway - seems like this is not just my problem. there's actually some bug that appears with non-US keyboard that makes you do that. [Read this blog post for a full description of the problem](http://blogs.msdn.com/tims/archive/2004/04/22/118093.aspx) and the very easy way of fixing it (the Right Alt key is "stuck" in pressed mode when you switch and you just need to click it once to unpress it or better yet, change the key you use for switching full-screen on). God - that was pretty stressful - I have to say. But I came through in the end and people seemed to enjoy it. darn. For the life of me I can't reproduce this bug again. What the heck was I doing wrong?? **In other news** - Welcome the [new blog from Adlai](http://dotnetjunkies.com/WebLog/adlaim) \- a long time acquaintance of mine from the various user group events. Great guy - here's to a great blog with great content! **In even other news** - I'm seriously considering forming a new [Agile Development and methodologies user group](http://dev.magen.com/agile) here in Israel with monthly meeting and all that. If you are an Israeli developer - I'd love to know what you think of this idea. would you go to the meetings? would you take part? do you have stories about your own problems and solutions relating to agile methodologies? from the number of people that have been coming to my TDD workshops (5 workshops completed so far!!) and to the lectures where I discusses XP and Test Driven Development - this seems to be one of the most interesting topics no-one in Israel knows a lot about. It feels the right time to begin such a group - because people are starting to catch on - and the subject matter seems too  "out there" for the other .Net specific user groups (the .net architects being the next most likely candidate for all the talks - but we can't hog all their time on only agile matters, can we?) so  = chime in. tell me what you think. I'd love to hear it! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 26, 2004 ### [Revisited: Killing a process, Introducing: TaskKiller](https://osherove.com/blog/2004/8/26/revisited-killing-a-process-introducing-taskkiller.html) - Aug 23, 2004 ### [Tomorrow is DBA day, and .Net rocks is back on my mind](https://osherove.com/blog/2004/8/23/tomorrow-is-dba-day-and-net-rocks-is-back-on-my-mind.html) - Aug 13, 2004 ### [Add-in Contest winners announced!](https://osherove.com/blog/2004/8/13/add-in-contest-winners-announced.html) - Jul 31, 2004 ### [My upcoming lecture schedule](https://osherove.com/blog/2004/7/31/my-upcoming-lecture-schedule.html) --- title: "A short update and a cool process killing trick" url: "https://osherove.com/blog/2004/8/21/a-short-update-and-a-cool-process-killing-trick.md" canonical: "https://osherove.com/blog/2004/8/21/a-short-update-and-a-cool-process-killing-trick.html" published: "2004-08-21T12:27:00" updated: "2004-08-21T12:27:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Yes. I am still alive. Meanwhile some things have taken place: 1. I celebrated my 29th birthday. Yey! 2. For my birthday - we got a ThinkPad T41p with 2GB RAM. that should be enough to run those longhorn demos in the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A short update and a cool process killing trick By Roy Osherove August 21, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 21, 2004; technical details may be outdated. Yes. I am still alive. Meanwhile some things have taken place: 1\. I celebrated my 29th birthday. Yey! 2\. For my birthday - we got a ThinkPad T41p with 2GB RAM. that should be enough to run those longhorn demos in the coming future, I hope :) 3\. I've been to a most amazing debugging lecture over at the visual C# users group. Some pretty amazing stuff in there. I should write about that some other time. meanwhile I learned a cool trick: **How to kill a process that wouldn't die through the TaskList dialog** 1\. Locate the process ID (make the "PID" column visible in the task list 2\. open a command prompt 3\. type "ntsd -p \[PID\]" without the quotes 4\. You've just entered a low level debugger and you'll notice that you are now inside a breakpoint on that process that wouldn't die. 5\. type "q" and ENTER to quit the debugger and the process will **die along with it**. 6\. this works for services too. I know I've been away and I can't promise that I'm back in full throttle, but I'll try to keep up with the blog until I can find more time. I'm not happy about not being able to invest time in something that has b\\done me so good so I'm in the process of finding ways to make more time available either through work or some other ways. It will **not** be on family time however. I've also been getting a little out of touch with the community (blogger dinners, TDD workshops etc..). I promise to get back to that ASAP. I'll get that working ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 24, 2004 ### [Gmail Notifier - by Google, finally](https://osherove.com/blog/2004/8/24/gmail-notifier-by-google-finally.html) - Aug 23, 2004 ### [Stuff to do](https://osherove.com/blog/2004/8/23/stuff-to-do.html) - Aug 7, 2004 ### [Absolute Powerpoint](https://osherove.com/blog/2004/8/7/absolute-powerpoint.html) - Aug 5, 2004 ### [MSN Web Messenger - cool piece of work](https://osherove.com/blog/2004/8/5/msn-web-messenger-cool-piece-of-work.html) --- title: "Add-in Contest winners announced!" url: "https://osherove.com/blog/2004/8/13/add-in-contest-winners-announced.md" canonical: "https://osherove.com/blog/2004/8/13/add-in-contest-winners-announced.html" published: "2004-08-13T13:14:00" updated: "2004-08-13T13:14:00" tags: [".Net Original", "Addin Contest"] author: "Roy Osherove" description: "The final winners for the Add-in contest are: http://dev.magen.com/AddinContest/pages/Winners.aspx Total prize worth that we'll be handing out: over $2,000. I'd like to thank all of the prize contributors for their help…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Add-in Contest winners announced! By Roy Osherove August 13, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Addin Contest](https://osherove.com/blog/category/addin-contest) **Historical article** · Originally published August 13, 2004; technical details may be outdated. The final winners for the Add-in contest are: [http://dev.magen.com/AddinContest/pages/Winners.aspx](http://dev.magen.com/AddinContest/pages/Winners.aspx) [Total prize worth](http://dev.magen.com/AddinContest/pages/Prizes.aspx) that we'll be handing out: over $2,000. I'd like to thank all of the prize contributors for their help in donating these cool prizes: [SyncFusion](http://www.syncfusion.com/), [AxTools](http://www.axtools.com/), [DevExpress](http://www.devexpress.com/), [Solutions Design](http://www.sd.nl/), [Matt Mickiewicz](http://www.sitepoint.com/) , [Mike Schnikel](http://www.xtras.net/), [Joshua Ledgard](http://blogs.msdn.com/jledgard/) and [Mike Gunderloy](http://www.larkware.com/). Thank you folks. --- **1st place: GhostDoc** **Author**: Roland Weigelt **Weblog**: [http://weblogs.asp.net/rweigelt](http://weblogs.asp.net/rweigelt) **Download:** [http://dev.magen.com/AddinContest/Document%20Library/1/GhostDoc.zip](http://dev.magen.com/AddinContest/Document%20Library/1/GhostDoc.zip) **Description**: **GhostDoc** is an add-in for Visual Studio .Net 2003 for automatically generating those parts of a C# documentation comment that can be deduced from name and type of e.g. methods, properties or parameters. --- **2nd place: Solvent**
Author: Travis Illig
Download:
Description:
Solvent adds functionality to the Solution Explorer window.
Items include: recursively...

3rd place: GoogleFind
Author: Martin A. Garins
Download:
Description:
Search Google with the Highlighted text from your code window in Visual Studio and the results come up in the traditional Help/Web window in Visual Studio

 
**Most Innovative:** **StepFilter** **Author**: Jean-Sebastien Pelletier **Website**: None Download: [http://dev.magen.com/AddinContest/Document%20Library/1/StepFilter.zip](http://dev.magen.com/AddinContest/Document%20Library/1/StepFilter.zip) **Description**: Enable/Disable the "Step Into" debugger behavior on code multiple points using regular expressions. --- Winners have already been contacted by emails. [Check out the amazing prizes they are Going to get.](http://dev.magen.com/AddinContest/pages/Prizes.aspx) Thanks to all those who participated and sent in entries. I promise this will not be the last contest :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 23, 2004 ### [Tomorrow is DBA day, and .Net rocks is back on my mind](https://osherove.com/blog/2004/8/23/tomorrow-is-dba-day-and-net-rocks-is-back-on-my-mind.html) - Aug 23, 2004 ### [A Virtual PC keyboard bug and fix, a new blog, and an agile question](https://osherove.com/blog/2004/8/23/a-virtual-pc-keyboard-bug-and-fix-a-new-blog-and-an-agile-qu.html) - Jul 31, 2004 ### [My upcoming lecture schedule](https://osherove.com/blog/2004/7/31/my-upcoming-lecture-schedule.html) - Jul 29, 2004 ### [The SQL Server usability advantage](https://osherove.com/blog/2004/7/29/the-sql-server-usability-advantage.html) --- title: "What works and what does not work on Virtual PC 2004" url: "https://osherove.com/blog/2004/8/10/what-works-and-what-does-not-work-on-virtual-pc-2004.md" canonical: "https://osherove.com/blog/2004/8/10/what-works-and-what-does-not-work-on-virtual-pc-2004.html" published: "2004-08-10T13:05:00" updated: "2004-08-10T13:05:00" tags: ["Cool sites"] author: "Roy Osherove" description: "I saw this in a random blog post ( can't find it now so I can't link to it :( ): What works and what does not work on Virtual PC 2004 (622 items listed right now)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What works and what does not work on Virtual PC 2004 By Roy Osherove August 10, 2004 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published August 10, 2004; technical details may be outdated. I saw this in a random blog post ( can't find it now so I can't link to it :( ): [What works and what does not work on Virtual PC 2004](http://vpc.visualwin.com/)  (622 items listed right now) ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Sep 3, 2004 ### [Weird Google-like toy - Toogle!](https://osherove.com/blog/2004/9/3/weird-google-like-toy-toogle.html) - Aug 24, 2004 ### [Developers.org.il is online with a face lift](https://osherove.com/blog/2004/8/24/developersorgil-is-online-with-a-face-lift.html) - Jun 21, 2004 ### [Microsoft Research introduces RSS Feeds, \*finally\*](https://osherove.com/blog/2004/6/21/microsoft-research-introduces-rss-feeds-finally.html) - Feb 25, 2004 ### [Thanks for the System.Web.Mail FAQ, Dave](https://osherove.com/blog/2004/2/25/thanks-for-the-systemwebmail-faq-dave.html) --- title: "Testing Blogs at Microsoft, and Addin contest news" url: "https://osherove.com/blog/2004/8/10/testing-blogs-at-microsoft-and-addin-contest-news.md" canonical: "https://osherove.com/blog/2004/8/10/testing-blogs-at-microsoft-and-addin-contest-news.html" published: "2004-08-10T12:59:00" updated: "2004-08-10T12:59:00" tags: ["Addin Contest", "Blogging"] author: "Roy Osherove" description: "I had a great time today, doing yet another talk a “Ness” - one of the largest companies in Israel - about Agile development and XP projects. (We're working on making this talk again in the coming month available to all…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Testing Blogs at Microsoft, and Addin contest news By Roy Osherove August 10, 2004 In [Addin Contest](https://osherove.com/blog/category/addin-contest), [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published August 10, 2004; technical details may be outdated. I had a great time today, doing yet another talk a “Ness” - one of the largest companies in Israel - about Agile development and XP projects. (We're working on making this talk again in the coming month available to all user group members). Anyway -I found an old friend there that just started out as a QA lead, and was telling him how he could find a vast amount of information about testing from the guys at Microsoft that are in charge of testing - the software test engineers. I remember some posts out there that were talking about  the growing list of testing blogs and resources out there. anyone have any idea where that post is? Right now I could find this blog from STEs:   [http://weblogs.asp.net/chappell/](http://weblogs.asp.net/chappell/) and it looks promising. Leave a comment with resources you think I should point to next time he asks me.  As for the addin contest: results will be announced by the end of the week hopefully. I'm trying to make this close as soon as I can ,but real life comes in and like in a lot of community projects - I jsut can't find the time to finish this. All the would be winners: stay tuned. I **know** how much this means to you! ## More in Addin Contest [All posts in Addin Contest](https://osherove.com/blog/category/addin-contest) - Aug 13, 2004 ### [Add-in Contest winners announced!](https://osherove.com/blog/2004/8/13/add-in-contest-winners-announced.html) - Jul 18, 2004 ### [Announcing:Coolest Add-in Contest - Entries available for download](https://osherove.com/blog/2004/7/18/announcingcoolest-add-in-contest-entries-available-for-downl.html) - Jul 2, 2004 ### [Add-in contest submission phase is now officially over](https://osherove.com/blog/2004/7/2/add-in-contest-submission-phase-is-now-officially-over.html) --- title: "Advanced TDD workshop today" url: "https://osherove.com/blog/2004/8/8/advanced-tdd-workshop-today.md" canonical: "https://osherove.com/blog/2004/8/8/advanced-tdd-workshop-today.html" published: "2004-08-08T06:03:00" updated: "2004-08-08T06:03:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Don't forget - Advanced TDD workshop today - 18:00 at Magen Offices!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Advanced TDD workshop today By Roy Osherove August 8, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published August 8, 2004; technical details may be outdated. Don't forget - Advanced TDD workshop today - 18:00 at Magen Offices! ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Sep 3, 2004 ### [Testing GUIs and customer tests using FIT](https://osherove.com/blog/2004/9/3/testing-guis-and-customer-tests-using-fit.html) - Aug 28, 2004 ### [Agile MSF methodology framework](https://osherove.com/blog/2004/8/28/agile-msf-methodology-framework.html) - Aug 5, 2004 ### [Testing web services locally - faster](https://osherove.com/blog/2004/8/5/testing-web-services-locally-faster.html) - Aug 5, 2004 ### [Agile Resources and a good article on daily Stand up meetings](https://osherove.com/blog/2004/8/5/agile-resources-and-a-good-article-on-daily-stand-up-meeting.html) --- title: "Absolute Powerpoint" url: "https://osherove.com/blog/2004/8/7/absolute-powerpoint.md" canonical: "https://osherove.com/blog/2004/8/7/absolute-powerpoint.html" published: "2004-08-07T17:47:00" updated: "2004-08-07T17:47:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is a great article about the power and weakness behind PowerPoint, and how and why it came to be: Absolute Powerpoint" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Absolute Powerpoint By Roy Osherove August 7, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 7, 2004; technical details may be outdated. This is a great article about the power and weakness behind PowerPoint, and how and why it came to be: [Absolute Powerpoint](http://www.physics.ohio-state.edu/~wilkins/group/powerpt.html) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 23, 2004 ### [Stuff to do](https://osherove.com/blog/2004/8/23/stuff-to-do.html) - Aug 21, 2004 ### [A short update and a cool process killing trick](https://osherove.com/blog/2004/8/21/a-short-update-and-a-cool-process-killing-trick.html) - Aug 5, 2004 ### [MSN Web Messenger - cool piece of work](https://osherove.com/blog/2004/8/5/msn-web-messenger-cool-piece-of-work.html) - Jul 29, 2004 ### [.Net Rocks Tablet PC contest](https://osherove.com/blog/2004/7/29/net-rocks-tablet-pc-contest.html) --- title: "Paper: Developing Identity-Aware ASP.NET Applications" url: "https://osherove.com/blog/2004/8/5/paper-developing-identity-aware-aspnet-applications.md" canonical: "https://osherove.com/blog/2004/8/5/paper-developing-identity-aware-aspnet-applications.html" published: "2004-08-05T19:58:00" updated: "2004-08-05T19:58:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "via Ohad's blog: “The Microsoft Solutions for Security (MSS) team is proud to announce the release and availability of Developing Identity-Aware ASP.NET Applications , a new paper in the Microsoft Identity and Access…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Paper: Developing Identity-Aware ASP.NET Applications By Roy Osherove August 5, 2004 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published August 5, 2004; technical details may be outdated. via Ohad's blog: “The Microsoft Solutions for Security (MSS) team is proud to announce the release and availability of **_[Developing Identity-Aware ASP.NET Applications](http://www.microsoft.com/technet/security/topics/identity/idmanage/default.mspx)_**, a new paper in the [_Microsoft Identity and Access Management Series_](http://go.microsoft.com/fwlink/?LinkId=14841 "http://go.microsoft.com/fwlink/?LinkId=14841"). Organizations today are looking for guidance on how to avoid introducing new directories and authentication schemes that increase complexity and undermine the goals of a successful identity and access management strategy. They want to develop applications that are tightly integrated with their identity infrastructure. This paper provides guidelines for developing applications that use the directory and security services of the Microsoft® Windows® platform. Specifically, the paper discusses identity considerations and guidelines when developing Microsoft ASP.NET multi-tier intranet and extranet Web applications using Microsoft Visual Studio® .NET and Microsoft Windows Server™ 2003 directory and security services. It provides detailed implementation guidance and ASP.NET code samples in Microsoft Visual C#® and Microsoft Visual Basic® .NET for: - Intranet Web applications that use Windows-integrated authentication and Windows Authorization Manager. - Extranet Web applications for B2B, B2C, and B2E scenarios using Windows authentication (including Forms-based authentication, X.509 certificates, and Microsoft Passport) and Windows Authorization Manager. This new paper is based on field experience that deals with real-world problems, and the solutions offered are technically validated. Microsoft engineering teams, architects, consultants, support engineers, partners, and customers contributed to, reviewed and approved the paper.” ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Nov 7, 2004 ### [Mitigating malicious plug-ins in your application](https://osherove.com/blog/2004/11/7/mitigating-malicious-plug-ins-in-your-application.html) - Oct 15, 2004 ### [Solving Team Development with web projects hell](https://osherove.com/blog/2004/10/15/solving-team-development-with-web-projects-hell.html) - Jul 17, 2004 ### [Omer is doing some serious blogging](https://osherove.com/blog/2004/7/17/omer-is-doing-some-serious-blogging.html) - Jun 18, 2004 ### [The Regulator featured on MSDN Magazine, and some version updates coming](https://osherove.com/blog/2004/6/18/the-regulator-featured-on-msdn-magazine-and-some-version-upd.html) --- title: "MSN Web Messenger - cool piece of work" url: "https://osherove.com/blog/2004/8/5/msn-web-messenger-cool-piece-of-work.md" canonical: "https://osherove.com/blog/2004/8/5/msn-web-messenger-cool-piece-of-work.html" published: "2004-08-05T18:04:00" updated: "2004-08-05T18:04:00" tags: ["Off Topic"] author: "Roy Osherove" description: "You know what? MSN web messenger is a cool piece of work. You don't have to install MSN messenger to use it almost like in real life. I love such amazing web work that looks like the real thing. Outlook web access 2003…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSN Web Messenger - cool piece of work By Roy Osherove August 5, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 5, 2004; technical details may be outdated. You know what? [MSN web messenger](http://webmessenger.msn.com/) is a **cool** piece of work. You don't have to install MSN messenger to use it almost like in real life. I love such amazing web work that looks like the real thing. Outlook web access 2003 does the same thing. Amazing GUI inside my browser. It _scares_ me to think how many man-years were spent on making the GUI behave in such a way though. Really creepy. Isn't the next logical step a Smart Client Messenger? or Outlook for that matter? (via [Larkware](http://www.larkware.com/)) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 21, 2004 ### [A short update and a cool process killing trick](https://osherove.com/blog/2004/8/21/a-short-update-and-a-cool-process-killing-trick.html) - Aug 7, 2004 ### [Absolute Powerpoint](https://osherove.com/blog/2004/8/7/absolute-powerpoint.html) - Jul 29, 2004 ### [.Net Rocks Tablet PC contest](https://osherove.com/blog/2004/7/29/net-rocks-tablet-pc-contest.html) - Jul 29, 2004 ### [Congrats to Rory](https://osherove.com/blog/2004/7/29/congrats-to-rory.html) --- title: "The Regexinator - VS.Net Addin to search documents using Regex" url: "https://osherove.com/blog/2004/8/5/the-regexinator-vsnet-addin-to-search-documents-using-regex.md" canonical: "https://osherove.com/blog/2004/8/5/the-regexinator-vsnet-addin-to-search-documents-using-regex.html" published: "2004-08-05T17:52:00" updated: "2004-08-05T17:52:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Found this out through Darren's Regex weblog . The Regexinator looks like a cool idea that someone eventually had to do: It lets you search the active documents using Regex, and when you click on each result you are…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regexinator - VS.Net Addin to search documents using Regex By Roy Osherove August 5, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published August 5, 2004; technical details may be outdated. _Found this out through_ [_Darren's Regex weblog_](http://blogs.regexadvice.com/DNeimke/archive/2004/08/05/1442.aspx)_._ [The Regexinator looks like a cool idea](http://www.gotdotnet.com/Community/Workspaces/Workspace.aspx?id=69bcc9ad-e628-4920-bc07-c17e9b4525c8) that someone eventually had to do: It lets you search the active documents using Regex, and when you click on each result you are automatically taken to the found textin the document. It also has a search feature that uses [Regexlib.com's](http://www.regexlib.com/) web services. overall a great idea but beware - this is a very early version. After having a nice little chat with the two chief devs of this add-in - [James Avery](http://dotavery.com/blog/) and [Pete Wright](http://www.petewright.org/) (who I met for the first time online today) I figured out a couple of installation issues you might have to deal with: 1. The Addin window does not appear after installing it. Solution - open tools-Addin manager and uncheck the add-in 'regexinator". then re-open the dialog and check the add-in again. it should show up now. 2. The tool window might not be big enough to see the “Search button“. resize it to make it bigger. 3. web search does not work with proxy settings yet (did not work on my machine). will be fixed using [this peachy proxy settings class](http://weblogs.asp.net/rosherove/articles/34670.aspx). Great work guys! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Sep 1, 2004 ### [Wanna win a free Visual Assist License?](https://osherove.com/blog/2004/9/1/wanna-win-a-free-visual-assist-license.html) - Aug 24, 2004 ### [Gmail Notifier - by Google, finally](https://osherove.com/blog/2004/8/24/gmail-notifier-by-google-finally.html) - Jul 22, 2004 ### [NUnit 2.2 beta 3 has been released - and some questions](https://osherove.com/blog/2004/7/22/nunit-22-beta-3-has-been-released-and-some-questions.html) - Jul 22, 2004 ### [MbUnit 2.17 released - with the cool database attributes I talked about](https://osherove.com/blog/2004/7/22/mbunit-217-released-with-the-cool-database-attributes-i-talk.html) --- title: "Testing web services locally - faster" url: "https://osherove.com/blog/2004/8/5/testing-web-services-locally-faster.md" canonical: "https://osherove.com/blog/2004/8/5/testing-web-services-locally-faster.html" published: "2004-08-05T16:58:00" updated: "2004-08-05T16:58:00" tags: ["Agile Related"] author: "Roy Osherove" description: "I really hate having to test my web services while still going through the whole TCP IP stack when testing them on the local machine. Luckily, Brian Ritchi has a nice and elegant solution . He created a proxy class that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Testing web services locally - faster By Roy Osherove August 5, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published August 5, 2004; technical details may be outdated. I really hate having to test my web services while still going through the whole TCP IP stack when testing them on the local machine. Luckily, [Brian Ritchi has a nice and elegant solution](http://weblogs.asp.net/britchie/archive/2004/08/02/206427.aspx). He created a proxy class that invokes the local object under the web service instead of the web service itself. That's pretty cool. A good perf gain and a great way to make your automated unit tests run faster.  (via  [TSS](http://www.theserverside.net/news/thread.tss?thread_id=27794)) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Aug 28, 2004 ### [Agile MSF methodology framework](https://osherove.com/blog/2004/8/28/agile-msf-methodology-framework.html) - Aug 8, 2004 ### [Advanced TDD workshop today](https://osherove.com/blog/2004/8/8/advanced-tdd-workshop-today.html) - Aug 5, 2004 ### [Agile Resources and a good article on daily Stand up meetings](https://osherove.com/blog/2004/8/5/agile-resources-and-a-good-article-on-daily-stand-up-meeting.html) - Jul 29, 2004 ### [How not to do TDD](https://osherove.com/blog/2004/7/29/how-not-to-do-tdd.html) --- title: "Agile Resources and a good article on daily Stand up meetings" url: "https://osherove.com/blog/2004/8/5/agile-resources-and-a-good-article-on-daily-stand-up-meeting.md" canonical: "https://osherove.com/blog/2004/8/5/agile-resources-and-a-good-article-on-daily-stand-up-meeting.html" published: "2004-08-05T14:51:00" updated: "2004-08-05T14:51:00" tags: ["Agile Related"] author: "Roy Osherove" description: "You might have noticed that I've turned off the comments for the blog. Damn spammers.I'll put them back on. But there needs to be a way to delete comments by offending IP address or something. Anyway - I thought you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Agile Resources and a good article on daily Stand up meetings By Roy Osherove August 5, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published August 5, 2004; technical details may be outdated. You might have noticed that I've turned off the comments for the blog. Damn spammers.I'll put them back on. But there needs to be a way to delete comments by offending IP address or something. Anyway - I thought you might like a few good resources on Test Driven Development and agile processes. - [Agile Modeling](http://www.agilemodeling.com/) - [Yahoo JUnit Group](http://groups.yahoo.com/group/junit) (oops! I know a friend who really needs this link though.) - [Yahoo XP Group](http://groups.yahoo.com/group/extremeprogramming) - [Yahoo TDD Group](http://groups.yahoo.com/group/testdrivendevelopment) - [Yahoo Refactoring Group](http://groups.yahoo.com/group/refactoring) - [The Coad Letter: TDD Edition](http://bdn.borland.com/coadletter/testdrivendevelopment/) - [The Agile Data Homepage](http://www.agiledata.org/) - [The Agile Alliance](http://www.agilealliance.org/) Another thing: Are you doing a daily stand up meeting with your Dev team? I do - and its a great place to take make your project move forward and detect upcoming problems. This article talk about this subject very well. I suggest you read it and implement something like this with your team. I can personally attest to the “goodness” of the method: [Morning Roll Call](http://bdn.borland.com/article/0,1410,29686,00.html) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Aug 8, 2004 ### [Advanced TDD workshop today](https://osherove.com/blog/2004/8/8/advanced-tdd-workshop-today.html) - Aug 5, 2004 ### [Testing web services locally - faster](https://osherove.com/blog/2004/8/5/testing-web-services-locally-faster.html) - Jul 29, 2004 ### [How not to do TDD](https://osherove.com/blog/2004/7/29/how-not-to-do-tdd.html) - Jul 29, 2004 ### [Selecting an Agile Process](https://osherove.com/blog/2004/7/29/selecting-an-agile-process.html) --- title: "MS Israel events RSS feed published" url: "https://osherove.com/blog/2004/8/1/ms-israel-events-rss-feed-published.md" canonical: "https://osherove.com/blog/2004/8/1/ms-israel-events-rss-feed-published.html" published: "2004-08-01T17:32:00" updated: "2004-08-01T17:32:00" tags: ["Blogging"] author: "Roy Osherove" description: "Finally is all I can say, Microsoft Israel is starting to get RSS. You can now register for the latest MS israel events RSS feed. http://www.microsoft.com/israel/recent/default.aspx A good start!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MS Israel events RSS feed published By Roy Osherove August 1, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published August 1, 2004; technical details may be outdated. **Finally** is all I can say, Microsoft Israel is starting to get RSS. You can now register for the latest MS israel events RSS feed. [http://www.microsoft.com/israel/recent/default.aspx](http://www.microsoft.com/israel/recent/default.aspx) A good start! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Aug 26, 2004 ### [Blogger/Geek dinner?](https://osherove.com/blog/2004/8/26/bloggergeek-dinner.html) - Aug 10, 2004 ### [Testing Blogs at Microsoft, and Addin contest news](https://osherove.com/blog/2004/8/10/testing-blogs-at-microsoft-and-addin-contest-news.html) - Jul 29, 2004 ### [blogs.ineta.org is here](https://osherove.com/blog/2004/7/29/blogsinetaorg-is-here.html) - Jul 23, 2004 ### [Jackie Goldstein is blogging](https://osherove.com/blog/2004/7/23/jackie-goldstein-is-blogging.html) --- title: "My upcoming lecture schedule" url: "https://osherove.com/blog/2004/7/31/my-upcoming-lecture-schedule.md" canonical: "https://osherove.com/blog/2004/7/31/my-upcoming-lecture-schedule.html" published: "2004-07-31T15:13:00" updated: "2004-07-31T15:13:00" tags: [".Net Original"] author: "Roy Osherove" description: "My plan to take over the world is starting to show some progress. if you're in Israel, here's my talk schedule in the coming weeks: This Wednesday - 4/8/2004 IVBUG : VB.Net user group: Regular Expressions in .Net…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My upcoming lecture schedule By Roy Osherove July 31, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 31, 2004; technical details may be outdated. My plan to take over the world is starting to show some progress. if you're in Israel, here's my talk schedule in the coming weeks: --- This Wednesday - 4/8/2004 [](http://www.renaissance.co.il/ivbug/)[IVBUG](http://www.renaissance.co.il/ivbug): VB.Net user group: **Regular Expressions in .Net** _Regular expressions are one of the most powerful and least known technologies for parsing and manipulating text._ _In this session we will discuss the various ways in which Regular Expressions (Regex) can help us in various situations that we might encounter in our daily development. We will talk about some of the basic syntax of regex including Matching, Replacing and grouping. You will also see a cool example of parsing a log file and converting it into XML easily using Regex._ _Lastly – we'll see "The Regulator" - a tool to test and verify your regular expressions. We'll also use it to explain many of the examples._ _Don't miss out on one of the coolest things you've never seen. Regex can be used almost anywhere – a "must know" for every developer out there._ _ --- _ Wednesday - 11/8/2004 [.Net Web developers user group](http://www.microsoft.com/israel/events/default.aspx?pageType=1&idType=1&id=36) **Part I - ADO.Net best practices, tips and tricks** _By Roy Osherove_ _ADO.Net allows you to do many different things in many different ways._ _In this talk we'll discuss some of the most recommended ways of doing things, and things you should \*not\* do as well._ _Among the topics that we will cover -_ _Data Access Application Block – features, benefits and usage ,Concurrency Management - handling dataset conflicts, Performance tips and tricks, Error Handling, And a few more important and interesting things you should know when going deep into your Data Access Layer. _ **Part II - Data Architecture best practices in web applications** _By [Udi Dahan](http://www.thesoftwaresimplist.com/)  (Summary yet determined)_  _---_ Sunday - 22/8/2004 [.Net Architects user group](http://www.microsoft.com/israel/events/default.aspx?pageType=1&idType=1&id=28) **Test Driven Development overview** This talk is an extension to the previous talk I did at the architects user group and zooms in on one of the subjects presented in the earlier talk - Test Driven Development (TDD). I'll show examples of doing TDD on a simple development problem, showing mostly technique, and continue on to talk about more real-world subjects such as database testing and complex object aggregation tests (interaction testing) using mock objects. Lastly - I'll talk about the various unit testing frameworks out there today and where they differ in abilities. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 23, 2004 ### [A Virtual PC keyboard bug and fix, a new blog, and an agile question](https://osherove.com/blog/2004/8/23/a-virtual-pc-keyboard-bug-and-fix-a-new-blog-and-an-agile-qu.html) - Aug 13, 2004 ### [Add-in Contest winners announced!](https://osherove.com/blog/2004/8/13/add-in-contest-winners-announced.html) - Jul 29, 2004 ### [The SQL Server usability advantage](https://osherove.com/blog/2004/7/29/the-sql-server-usability-advantage.html) - Jul 21, 2004 ### [ADO.Net talk went great](https://osherove.com/blog/2004/7/21/adonet-talk-went-great.html) --- title: ".Net Rocks Tablet PC contest" url: "https://osherove.com/blog/2004/7/29/net-rocks-tablet-pc-contest.md" canonical: "https://osherove.com/blog/2004/7/29/net-rocks-tablet-pc-contest.html" published: "2004-07-29T19:38:00" updated: "2004-07-29T19:38:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Wanna win a tablet PC (Toshiba M200, actually - which is a mighty machine)? Go and fill out a contest form over at the .Net Rocks show contest page . Don't forget to listen to .Net rocks (although this is not required…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Rocks Tablet PC contest By Roy Osherove July 29, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 29, 2004; technical details may be outdated. Wanna win a tablet PC (Toshiba M200, actually - which is a mighty machine)? Go and fill out a contest form over at the [.Net Rocks show contest page](http://www.franklins.net/dnrforms/tabletcontest.aspx). Don't forget to listen to .Net rocks (although this is not required to win). They have some great shows. If only I had a car with a CD player. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 7, 2004 ### [Absolute Powerpoint](https://osherove.com/blog/2004/8/7/absolute-powerpoint.html) - Aug 5, 2004 ### [MSN Web Messenger - cool piece of work](https://osherove.com/blog/2004/8/5/msn-web-messenger-cool-piece-of-work.html) - Jul 29, 2004 ### [Congrats to Rory](https://osherove.com/blog/2004/7/29/congrats-to-rory.html) - Jul 29, 2004 ### [Not the PhD type, I guess](https://osherove.com/blog/2004/7/29/not-the-phd-type-i-guess.html) --- title: "How not to do TDD" url: "https://osherove.com/blog/2004/7/29/how-not-to-do-tdd.md" canonical: "https://osherove.com/blog/2004/7/29/how-not-to-do-tdd.html" published: "2004-07-29T19:24:00" updated: "2004-07-29T19:24:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Tim Weaver finds out the hard way how not to inroduce TDD into an existing codebase. Read and learn. http://dotnetjunkies.com/WebLog/tim.weaver/archive/2004/07/29/20655.aspx" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How not to do TDD By Roy Osherove July 29, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 29, 2004; technical details may be outdated. Tim Weaver finds out the hard way how **not** to inroduce TDD into an existing codebase. Read and learn. [http://dotnetjunkies.com/WebLog/tim.weaver/archive/2004/07/29/20655.aspx](http://dotnetjunkies.com/WebLog/tim.weaver/archive/2004/07/29/20655.aspx) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Aug 5, 2004 ### [Testing web services locally - faster](https://osherove.com/blog/2004/8/5/testing-web-services-locally-faster.html) - Aug 5, 2004 ### [Agile Resources and a good article on daily Stand up meetings](https://osherove.com/blog/2004/8/5/agile-resources-and-a-good-article-on-daily-stand-up-meeting.html) - Jul 29, 2004 ### [Selecting an Agile Process](https://osherove.com/blog/2004/7/29/selecting-an-agile-process.html) - Jul 29, 2004 ### [MbUnit is coming along, and I get to have some of my ideas thrown in](https://osherove.com/blog/2004/7/29/mbunit-is-coming-along-and-i-get-to-have-some-of-my-ideas-th.html) --- title: "The SQL Server usability advantage" url: "https://osherove.com/blog/2004/7/29/the-sql-server-usability-advantage.md" canonical: "https://osherove.com/blog/2004/7/29/the-sql-server-usability-advantage.html" published: "2004-07-29T19:13:00" updated: "2004-07-29T19:13:00" tags: [".Net Original"] author: "Roy Osherove" description: "OK. I'll say it here - I fear Oracle a bit. I know it is psychological - or isn't it? this post from Lee Dise had me smiling: “... But backing up Oracle always struck me like trying to walk a cow to a different pasture…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The SQL Server usability advantage By Roy Osherove July 29, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 29, 2004; technical details may be outdated. OK. I'll say it here - I fear Oracle a bit. I know it is psychological - or isn't it? [this post from Lee Dise](http://weblogs.sqlteam.com/leed/archive/2004/07/27/1798.aspx) had me smiling: “..._But backing up Oracle always struck me like trying to walk a cow to a different pasture by butchering it, wrapping all the parts in grocery-store plastic, trucking it, and then re-assembling the cow.  I mean, don't these things walk?  It's a tribute to all the Oracle DBAs out there that anything ever gets accomplished in Oracle.  Oracle DBAs ought to have their own soundtrack, like the selections from Khachaturian's “Sabre Dance“ played for all those plate-spinners and jugglers that used to be on the Ed Sullivan Show.  (“Da-da-da-da da-da-da-da daahh-da-da-da daahh-da-da-da...“) ...“_ Call me crazy but I think the fact that SQL server is such a breeze to handle (usability wise) is one of the most important things. what good is a monster if you can't(or find it really hard or intimidating) make it work for you? I'd Rather have a “Monst” that does the job **and** listens to me with a wagging tail. BTW: one thing I'd really like in SQL server that I know Oracle has: Identities that are unique across multiple tables (I can't remember the right word for that now ). I feel that the fact that Oracle seems to actually make it hard on people to maintain the database easily without hiring a monster trainer for the most simple tasks shows neglect and lack of user listening (or on the other hand shows greed “You want maintenance? we'll sell you some”). Am I crazy? BTW: the post I'm referring to does not necessarily talk about how great SQL server is. In fact - it talks about an annoying flaw. But the following bit from that post also cracked me up at 1.22 am (while my wife is asleep): _“Question:  If the DBMS knew you were approaching the end of your rope, why didn't it say something?  My working hypothesis is that it's kind of like when your wife wants you to take out the trash, but all she says is, “The trash can is almost full.“  Not, “Honey, will you please take out the trash?“  Her objective is not to get you to take out the trash; rather, it is to improve you, the husband, morally and spiritually -- while at the same time getting you to take out the trash.  You're supposed to infer, based on the facts she's provided, that you need to do it.  I say, this is more like training than housekeeping.  My wife insists that she must therefore be a very poor trainer.  But trust me, she's keeping score.“_ ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 13, 2004 ### [Add-in Contest winners announced!](https://osherove.com/blog/2004/8/13/add-in-contest-winners-announced.html) - Jul 31, 2004 ### [My upcoming lecture schedule](https://osherove.com/blog/2004/7/31/my-upcoming-lecture-schedule.html) - Jul 21, 2004 ### [ADO.Net talk went great](https://osherove.com/blog/2004/7/21/adonet-talk-went-great.html) - Jul 19, 2004 ### [Unit Testing scalability and performance](https://osherove.com/blog/2004/7/19/unit-testing-scalability-and-performance.html) --- title: "blogs.ineta.org is here" url: "https://osherove.com/blog/2004/7/29/blogsinetaorg-is-here.md" canonical: "https://osherove.com/blog/2004/7/29/blogsinetaorg-is-here.html" published: "2004-07-29T19:06:00" updated: "2004-07-29T19:06:00" tags: ["Blogging"] author: "Roy Osherove" description: "blogs.ineta.org is here. via Bill" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # blogs.ineta.org is here By Roy Osherove July 29, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 29, 2004; technical details may be outdated. [blogs.ineta.org](http://blogs.ineta.org/) is here. via [Bill](http://geekswithblogs.net/evjen/archive/2004/07/27/8905.aspx) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Aug 10, 2004 ### [Testing Blogs at Microsoft, and Addin contest news](https://osherove.com/blog/2004/8/10/testing-blogs-at-microsoft-and-addin-contest-news.html) - Aug 1, 2004 ### [MS Israel events RSS feed published](https://osherove.com/blog/2004/8/1/ms-israel-events-rss-feed-published.html) - Jul 23, 2004 ### [Jackie Goldstein is blogging](https://osherove.com/blog/2004/7/23/jackie-goldstein-is-blogging.html) - Jul 19, 2004 ### [Blogger/geek dinner is canceled for today](https://osherove.com/blog/2004/7/19/bloggergeek-dinner-is-canceled-for-today.html) --- title: "Congrats to Rory" url: "https://osherove.com/blog/2004/7/29/congrats-to-rory.md" canonical: "https://osherove.com/blog/2004/7/29/congrats-to-rory.html" published: "2004-07-29T18:58:00" updated: "2004-07-29T18:58:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Rory Blyth has taken the plunge and is now a Microsoft Employee. That's pretty cool. Guess I won't have to invite him to the next summit ;) (You knew that one was coming, right??)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Congrats to Rory By Roy Osherove July 29, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 29, 2004; technical details may be outdated. [Rory Blyth has taken the plunge](http://neopoleon.com/blog/posts/7285.aspx) and is now a Microsoft Employee. That's pretty cool. Guess I won't have to invite him to the next summit ;) (You **knew** that one was coming, right??) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 5, 2004 ### [MSN Web Messenger - cool piece of work](https://osherove.com/blog/2004/8/5/msn-web-messenger-cool-piece-of-work.html) - Jul 29, 2004 ### [.Net Rocks Tablet PC contest](https://osherove.com/blog/2004/7/29/net-rocks-tablet-pc-contest.html) - Jul 29, 2004 ### [Not the PhD type, I guess](https://osherove.com/blog/2004/7/29/not-the-phd-type-i-guess.html) - Jul 28, 2004 ### [VS.net Editor team chat when well](https://osherove.com/blog/2004/7/28/vsnet-editor-team-chat-when-well.html) --- title: "Selecting an Agile Process" url: "https://osherove.com/blog/2004/7/29/selecting-an-agile-process.md" canonical: "https://osherove.com/blog/2004/7/29/selecting-an-agile-process.html" published: "2004-07-29T18:42:00" updated: "2004-07-29T18:42:00" tags: ["Agile Related"] author: "Roy Osherove" description: "“Mike Cohn, author of User Stories Applied (which has been getting great reviews on Amazon, by the way), has an excellent presentation on Selecting an Agile Process: Comparing the Leading Alternatives (PDF, 837k). ...“…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Selecting an Agile Process By Roy Osherove July 29, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 29, 2004; technical details may be outdated. _“Mike Cohn, author of_ [_User Stories Applied_](https://www.amazon.com/exec/obidos/ASIN/0321205685/darrellnorton-20) _(which has been getting great reviews on Amazon, by the way), has an excellent presentation on_ [_Selecting an Agile Process: Comparing the Leading Alternatives_](http://www.mountaingoatsoftware.com/pres/Selecting021015.pdf) _(PDF, 837k). ...“_ \[via [Darrell Norton](http://dotnetjunkies.com/WebLog/darrell.norton/archive/2004/07/29/20696.aspx)\] I need to read up on this. Some good stuff here. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Aug 5, 2004 ### [Agile Resources and a good article on daily Stand up meetings](https://osherove.com/blog/2004/8/5/agile-resources-and-a-good-article-on-daily-stand-up-meeting.html) - Jul 29, 2004 ### [How not to do TDD](https://osherove.com/blog/2004/7/29/how-not-to-do-tdd.html) - Jul 29, 2004 ### [MbUnit is coming along, and I get to have some of my ideas thrown in](https://osherove.com/blog/2004/7/29/mbunit-is-coming-along-and-i-get-to-have-some-of-my-ideas-th.html) - Jul 29, 2004 ### [TDD workshop in Atlanta, Georgia - are you up to it?](https://osherove.com/blog/2004/7/29/tdd-workshop-in-atlanta-georgia-are-you-up-to-it.html) --- title: "MbUnit is coming along, and I get to have some of my ideas thrown in" url: "https://osherove.com/blog/2004/7/29/mbunit-is-coming-along-and-i-get-to-have-some-of-my-ideas-th.md" canonical: "https://osherove.com/blog/2004/7/29/mbunit-is-coming-along-and-i-get-to-have-some-of-my-ideas-th.html" published: "2004-07-29T18:26:00" updated: "2004-07-29T18:26:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Peli is doing an awesome job. One wonders where he finds the time. I think he's experiencing the creativity boost I experienced when I was “on my own” for three months a while ago. Remember? I made The Regulator and 3…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MbUnit is coming along, and I get to have some of my ideas thrown in By Roy Osherove July 29, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 29, 2004; technical details may be outdated. [Peli](http://blog.dotnetwiki.org/) is doing an awesome job. One wonders where he finds the time. I think he's experiencing the creativity boost I experienced when I was “on my own” for three months a while ago. Remember? I made The Regulator and 3 MSDN articles and a bunch of contest and a record blog entries amount. Yeah - I had no life whatsoever. Its fun to see I'm not alone :) Anyway - [MbUnit](http://mbunit.tigris.org/) \- Peli's pet project (one of many very cool projects he's doing) is taking off. Sky rocketing actually. MbUnit's GUI now looks like Nunit, and it allows doing all the things I already talked about in my blog for [unit testing databases](http://blog.dotnetwiki.org/archive/2004/07/20/634.aspx) (the various rollback attributes and the DB restore stuff too). Now he added another feature (which I'm proud to say I suggested) - P[erformance testing via Perf Counters](http://blog.dotnetwiki.org/archive/2004/07/28/695.aspx) using simple attributes.  Very Cool indeed. It took about 45 minutes after I suggested it for him to tell me its done. (that's good. It took him less than 10 minutes to tell me the Rollback attribute is done - we didn't even finish our current chat - I swear he could have programmed that feature with one hand while still talking to me on IM - creepy). Anyway, he's now added yet another feature to his [TestFu](http://www.dotnetwiki.org/Default.aspx?tabid=52) library - which allows various interesting data database related automated chores such as back and restore , [A dependency graph for your database](http://blog.dotnetwiki.org/archive/2004/07/28/688.aspx). very nice and cool. Keep it up Peli. You're doing some major breakthroughs for testing. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 29, 2004 ### [How not to do TDD](https://osherove.com/blog/2004/7/29/how-not-to-do-tdd.html) - Jul 29, 2004 ### [Selecting an Agile Process](https://osherove.com/blog/2004/7/29/selecting-an-agile-process.html) - Jul 29, 2004 ### [TDD workshop in Atlanta, Georgia - are you up to it?](https://osherove.com/blog/2004/7/29/tdd-workshop-in-atlanta-georgia-are-you-up-to-it.html) - Jul 29, 2004 ### [TDD workshop went well - ready for the next one?](https://osherove.com/blog/2004/7/29/tdd-workshop-went-well-ready-for-the-next-one.html) --- title: "Not the PhD type, I guess" url: "https://osherove.com/blog/2004/7/29/not-the-phd-type-i-guess.md" canonical: "https://osherove.com/blog/2004/7/29/not-the-phd-type-i-guess.html" published: "2004-07-29T18:11:00" updated: "2004-07-29T18:11:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I consider myself as someone who finds interest in many wonderful things. Sort of a “Bring it on” kinda guy when it relates to knowledge about pretty much anything technological. But rest assured - I will never ever…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Not the PhD type, I guess By Roy Osherove July 29, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 29, 2004; technical details may be outdated. I consider myself as someone who finds interest in many wonderful things. Sort of a “Bring it on” kinda guy when it relates to knowledge about pretty much anything technological. But rest assured - I will never ever write a  [PhD thesis named](http://blog.dotnetwiki.org/archive/2004/07/29/703.aspx): “_Boundary Stabilization Techniques of Quasi-Linear Hyperbolic Initial-Boundary Value Problem_” (I'm surprised this post passed with flying colors on the first run of my spell checker, actually) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 29, 2004 ### [.Net Rocks Tablet PC contest](https://osherove.com/blog/2004/7/29/net-rocks-tablet-pc-contest.html) - Jul 29, 2004 ### [Congrats to Rory](https://osherove.com/blog/2004/7/29/congrats-to-rory.html) - Jul 28, 2004 ### [VS.net Editor team chat when well](https://osherove.com/blog/2004/7/28/vsnet-editor-team-chat-when-well.html) - Jul 19, 2004 ### [Being an INETA speaker?](https://osherove.com/blog/2004/7/19/being-an-ineta-speaker.html) --- title: "TDD workshop in Atlanta, Georgia - are you up to it?" url: "https://osherove.com/blog/2004/7/29/tdd-workshop-in-atlanta-georgia-are-you-up-to-it.md" canonical: "https://osherove.com/blog/2004/7/29/tdd-workshop-in-atlanta-georgia-are-you-up-to-it.html" published: "2004-07-29T17:58:00" updated: "2004-07-29T17:58:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Appearently this TDD workshop thing is picking up quite a momentum. After 3 such meetings I have 3 already setup full with attendees, and even a few interested clients willing to pay up front for a full course on these…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD workshop in Atlanta, Georgia - are you up to it? By Roy Osherove July 29, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 29, 2004; technical details may be outdated. Appearently this TDD workshop thing is picking up quite a momentum. After 3 such meetings I have 3 already setup full with attendees, and even a few interested clients willing to pay up front for a full course on these issues. Also, through the blog - people in the netherlends woudl really like to have a workshop there (which I'd gladly go - but someone would have to finance this trip). Also, Today I got this email: Wes Shaddix from ,Georgia (USA)  asks the following:  “I am interested in promoting TDD in the Atlanta, Georgia (USA) area. Do  you have anyone that you know over here that we could maybe startup a TDD  workshop?” Well? Anyone know anyone? ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 29, 2004 ### [Selecting an Agile Process](https://osherove.com/blog/2004/7/29/selecting-an-agile-process.html) - Jul 29, 2004 ### [MbUnit is coming along, and I get to have some of my ideas thrown in](https://osherove.com/blog/2004/7/29/mbunit-is-coming-along-and-i-get-to-have-some-of-my-ideas-th.html) - Jul 29, 2004 ### [TDD workshop went well - ready for the next one?](https://osherove.com/blog/2004/7/29/tdd-workshop-went-well-ready-for-the-next-one.html) - Jul 22, 2004 ### [Some cool refactoring examples, and what seems to be a lovely book](https://osherove.com/blog/2004/7/22/some-cool-refactoring-examples-and-what-seems-to-be-a-lovely.html) --- title: "TDD workshop went well - ready for the next one?" url: "https://osherove.com/blog/2004/7/29/tdd-workshop-went-well-ready-for-the-next-one.md" canonical: "https://osherove.com/blog/2004/7/29/tdd-workshop-went-well-ready-for-the-next-one.html" published: "2004-07-29T08:29:00" updated: "2004-07-29T08:29:00" tags: ["Agile Related"] author: "Roy Osherove" description: "The 3rd TDD workshop (beginners) was held yesterday and was a great success! Thanks to all who attended. The advanced workshop (featuring database testing) will be held at Magen offices on the 8th of august. Register…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD workshop went well - ready for the next one? By Roy Osherove July 29, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 29, 2004; technical details may be outdated. The 3rd TDD workshop (beginners) was held yesterday and was a great success! Thanks to all who attended. The **advanced** workshop (featuring database testing) will be held at [Magen](http://www.magen.com/) offices on the 8th of august. [Register Here](http://dev.magen.com/Agile/Lists/Events/DispForm.aspx?ID=6)(12 people maximum limit). If you want to Register for a future **beginner** workshop email me to **\[email removed\]** and I'll set you up when I have a final date for it. (I try to do one every month). _Picture: people having fun at the hands on TDD workshop_ _(Note: we are located in Israel- but if you'd like a workshop such as this on held where **you** live email me as well. Even if you're abroad. We just might be able to work out something. )_ ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 29, 2004 ### [MbUnit is coming along, and I get to have some of my ideas thrown in](https://osherove.com/blog/2004/7/29/mbunit-is-coming-along-and-i-get-to-have-some-of-my-ideas-th.html) - Jul 29, 2004 ### [TDD workshop in Atlanta, Georgia - are you up to it?](https://osherove.com/blog/2004/7/29/tdd-workshop-in-atlanta-georgia-are-you-up-to-it.html) - Jul 22, 2004 ### [Some cool refactoring examples, and what seems to be a lovely book](https://osherove.com/blog/2004/7/22/some-cool-refactoring-examples-and-what-seems-to-be-a-lovely.html) - Jul 22, 2004 ### [NUnit 2.2 beta 3 has been released - and some questions](https://osherove.com/blog/2004/7/22/nunit-22-beta-3-has-been-released-and-some-questions.html) --- title: "VS.net Editor team chat when well" url: "https://osherove.com/blog/2004/7/28/vsnet-editor-team-chat-when-well.md" canonical: "https://osherove.com/blog/2004/7/28/vsnet-editor-team-chat-when-well.html" published: "2004-07-28T16:05:00" updated: "2004-07-28T16:05:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Just finished a refreshing chat with the VS editor team. It was really nice. It felt like people were listening. They didn't go got my “Integrate The Regulator into VS 2005” suggestion though. Oh well. They'll get it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VS.net Editor team chat when well By Roy Osherove July 28, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 28, 2004; technical details may be outdated. Just finished a refreshing chat with the VS editor team. It was really nice. It felt like people were listening. They didn't go got my “Integrate The [Regulator](http://royo.is-a-geek.com/iserializable/regulator/) into VS 2005” suggestion though. Oh well. They'll get it one day! Anyway - MS could not do enough of these. It feels great to be heard. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 29, 2004 ### [Congrats to Rory](https://osherove.com/blog/2004/7/29/congrats-to-rory.html) - Jul 29, 2004 ### [Not the PhD type, I guess](https://osherove.com/blog/2004/7/29/not-the-phd-type-i-guess.html) - Jul 19, 2004 ### [Being an INETA speaker?](https://osherove.com/blog/2004/7/19/being-an-ineta-speaker.html) - Jul 18, 2004 ### [Israeli Geek Dinner Tomorrow - at what time?](https://osherove.com/blog/2004/7/18/israeli-geek-dinner-tomorrow-at-what-time.html) --- title: "[Tip] how to get Windows Explorer to \"Yes to All\" or \"No to All\":" url: "https://osherove.com/blog/2004/7/24/tip-how-to-get-windows-explorer-to-quotyes-to-allquot-or-quo.md" canonical: "https://osherove.com/blog/2004/7/24/tip-how-to-get-windows-explorer-to-quotyes-to-allquot-or-quo.html" published: "2004-07-24T08:30:00" updated: "2004-07-24T08:30:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "“Thanks to John Elliot , how to get Windows Explorer to \"Yes to All\" or \"No to All\": If you are copying manually in the GUI with a drag and drop or a CTRL+C/CTRL+V then press SHIFT when you click 'Yes/No' the first time…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Tip\] how to get Windows Explorer to "Yes to All" or "No to All": By Roy Osherove July 24, 2004 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published July 24, 2004; technical details may be outdated. _“Thanks to_ [_John Elliot_](http://www.hanselman.com/blog/ct.ashx?id=89a51e72-404c-4e45-bcd7-5a8df049ca2e&url=http%3a%2f%2fjj5.net)_, how to get Windows Explorer to "Yes to All" or "No to All":_ If you are copying manually in the GUI with a drag and drop or a CTRL+C/CTRL+V then press SHIFT when you click 'Yes/No' the first time you are prompted and it will remember that as the default answer for all other files in the copy operation.“  (via [Scott Hanselman](http://www.hanselman.com/blog/CommentView.aspx?guid=89a51e72-404c-4e45-bcd7-5a8df049ca2e)) ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Sep 3, 2004 ### [Solving System.TypeInitializationException when running the Regulator](https://osherove.com/blog/2004/9/3/solving-systemtypeinitializationexception-when-running-the-r.html) - Sep 3, 2004 ### [attach a debugger to a service automatically at startup](https://osherove.com/blog/2004/9/3/attach-a-debugger-to-a-service-automatically-at-startup.html) - Apr 29, 2004 ### [\[Cool Tip\] Speed up Outlook email switching](https://osherove.com/blog/2004/4/29/cool-tip-speed-up-outlook-email-switching.html) - Apr 29, 2004 ### [How to: Open Word doc links inside Word, NOT inside the browser](https://osherove.com/blog/2004/4/29/how-to-open-word-doc-links-inside-word-not-inside-the-browse.html) --- title: "Jackie Goldstein is blogging" url: "https://osherove.com/blog/2004/7/23/jackie-goldstein-is-blogging.md" canonical: "https://osherove.com/blog/2004/7/23/jackie-goldstein-is-blogging.html" published: "2004-07-23T09:27:00" updated: "2004-07-23T09:27:00" tags: ["Blogging"] author: "Roy Osherove" description: "Looks like I missed out on an important blogging event: Jackie Goldstein has started his own blog here on .net weblogs. For those who don't know - Jackie is a regional director for visual basic in Israel and also runs…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Jackie Goldstein is blogging By Roy Osherove July 23, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 23, 2004; technical details may be outdated. Looks like I missed out on an important blogging event: [Jackie Goldstein has started his own blog](http://weblogs.asp.net/jackieg) here on .net weblogs. For those who don't know - Jackie is a regional director for visual basic in Israel and also runs the oldest user group related to MS technologies - the [VB user group](http://www.renaissance.co.il/ivbug). It's great to see Jackie opening up like this. I'm sure he will  have soo much to say(no pressure! ;) ). [Subscribed](http://weblogs.asp.net/jackieg/rss.aspx)! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Aug 1, 2004 ### [MS Israel events RSS feed published](https://osherove.com/blog/2004/8/1/ms-israel-events-rss-feed-published.html) - Jul 29, 2004 ### [blogs.ineta.org is here](https://osherove.com/blog/2004/7/29/blogsinetaorg-is-here.html) - Jul 19, 2004 ### [Blogger/geek dinner is canceled for today](https://osherove.com/blog/2004/7/19/bloggergeek-dinner-is-canceled-for-today.html) - Jul 13, 2004 ### [Setting my priorities straight](https://osherove.com/blog/2004/7/13/setting-my-priorities-straight.html) --- title: "Some cool refactoring examples, and what seems to be a lovely book" url: "https://osherove.com/blog/2004/7/22/some-cool-refactoring-examples-and-what-seems-to-be-a-lovely.md" canonical: "https://osherove.com/blog/2004/7/22/some-cool-refactoring-examples-and-what-seems-to-be-a-lovely.html" published: "2004-07-22T21:25:00" updated: "2004-07-22T21:25:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Just found this great set of refactoring patterns with examples . The examples are taken from the book “ Refactoring to patterns “ which seems like its worth a read. There is some stuff there that I did not hear or read…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some cool refactoring examples, and what seems to be a lovely book By Roy Osherove July 22, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 22, 2004; technical details may be outdated. Just found this great set of [refactoring patterns with examples](http://www.industriallogic.com/xp/refactoring/catalog.html). The examples are taken from the book “[Refactoring to patterns](https://www.amazon.com/exec/obidos/ASIN/0321213351/iserializable-20)“ which seems like its worth a read. There is some stuff there that I did not hear or read about or thought about as a refactoring pattern but totally made sense once I read it ([constructor chaining](http://www.industriallogic.com/xp/refactoring/chainConstructors.html), for example). I think it deviates from the [classic refactoring book](https://www.amazon.com/exec/obidos/ASIN/0201485672/iserializable-20) to a nice angle - it talks about refactoring your code into distinguishable design patterns, not just removing duplication or bettering readability. I like this notion. although it may seem a bit complicated for those who have no experience with design patterns (to which I recommend heartily [this mind opening classic](https://www.amazon.com/exec/obidos/ASIN/0201633612/iserializable-20)  book). Very cool to be able to point people at this URL to explain what I'm talking about when I say “Refactoring” and people start staring at me. I think this book might be a compliment to the classic that is [Refactoring](https://www.amazon.com/exec/obidos/ASIN/0201485672/iserializable-20) by fowler - and to the design patterns one as well (yes- you need all three is what I think!). Anyway, this was found via [this blog](http://www.netacademia.net/blogspace/petert/archives/001579.html), which I have no idea what language it is written in, I just found it in my referrer logs. see? track back rocks :) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 29, 2004 ### [TDD workshop in Atlanta, Georgia - are you up to it?](https://osherove.com/blog/2004/7/29/tdd-workshop-in-atlanta-georgia-are-you-up-to-it.html) - Jul 29, 2004 ### [TDD workshop went well - ready for the next one?](https://osherove.com/blog/2004/7/29/tdd-workshop-went-well-ready-for-the-next-one.html) - Jul 22, 2004 ### [NUnit 2.2 beta 3 has been released - and some questions](https://osherove.com/blog/2004/7/22/nunit-22-beta-3-has-been-released-and-some-questions.html) - Jul 22, 2004 ### [MbUnit 2.17 released - with the cool database attributes I talked about](https://osherove.com/blog/2004/7/22/mbunit-217-released-with-the-cool-database-attributes-i-talk.html) --- title: "NUnit 2.2 beta 3 has been released - and some questions" url: "https://osherove.com/blog/2004/7/22/nunit-22-beta-3-has-been-released-and-some-questions.md" canonical: "https://osherove.com/blog/2004/7/22/nunit-22-beta-3-has-been-released-and-some-questions.html" published: "2004-07-22T07:50:00" updated: "2004-07-22T07:50:00" tags: ["Agile Related", "Cool Tools"] author: "Roy Osherove" description: "This just in: NUnit 2.2 beta 3 has been released . It fixes several bugs It is able to run under .net 2.0 beta 1 If you were wondering, yes, I've been raising my suggestions about the rollback and database restore…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NUnit 2.2 beta 3 has been released - and some questions By Roy Osherove July 22, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published July 22, 2004; technical details may be outdated. This just in: [NUnit 2.2 beta 3 has been released](http://nunit.sourceforge.net/). - It fixes several bugs - It is able to run under .net 2.0 beta 1 If you were wondering, yes, I've been raising my [suggestions](http://weblogs.asp.net/rosherove/archive/2004/07/20/187863.aspx) about the rollback and database restore attributes in the Nunit-Developers mailing list and they have been received quite well - that is - people were interested, but Nunit version 3 will probably go on a different route than the one products like MbUnit is going in.  Mainly - it will be kept more “simple” but will allow a large set of extensibility points, to which people can add Nunit Extensions. the Nunit Extension project will be a separate project to which community members will contribute (I'll add that all the info I know right now is based only on some emails and might change) and will be distributed along with the NUnit release (sorta like NAnt and NAnt-contrib projects). If that would be the case than that's good news. It should be pretty easy to develop such extensions (though I don't know exactly how that's going to work yet, there are several ways being considered). Anyway - I think soon the Unit Testing Framework market is going to get a little crowded. I think its going to become a little like the IM market - best features + simplicity win, but the tools that can provide support for all frameworks (see Trillian) will also start to pop out. Problems might arise: - Once you start with a framework on your project - how hard will it be to replace it (and would you want to do such a thing?). - How complicated will those frameworks be? - Unit testing will start to be part of formal training for people, since this is starting to be main stream (see Visual Studio 2005 Team System - with unit testing abilities). - How will those frameworks match against the built in support in VS 2005? will they be competitors or will they be welcomed with open arms by the extensibility team? Answers for these burning questions and more, on the next episode of “Roy Osherove - Testing Philosopher” ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 29, 2004 ### [TDD workshop went well - ready for the next one?](https://osherove.com/blog/2004/7/29/tdd-workshop-went-well-ready-for-the-next-one.html) - Jul 22, 2004 ### [Some cool refactoring examples, and what seems to be a lovely book](https://osherove.com/blog/2004/7/22/some-cool-refactoring-examples-and-what-seems-to-be-a-lovely.html) - Jul 22, 2004 ### [MbUnit 2.17 released - with the cool database attributes I talked about](https://osherove.com/blog/2004/7/22/mbunit-217-released-with-the-cool-database-attributes-i-talk.html) - Jul 20, 2004 ### [More agile development resources and an interesting research in the area](https://osherove.com/blog/2004/7/20/more-agile-development-resources-and-an-interesting-research.html) --- title: "MbUnit 2.17 released - with the cool database attributes I talked about" url: "https://osherove.com/blog/2004/7/22/mbunit-217-released-with-the-cool-database-attributes-i-talk.md" canonical: "https://osherove.com/blog/2004/7/22/mbunit-217-released-with-the-cool-database-attributes-i-talk.html" published: "2004-07-22T07:18:00" updated: "2004-07-22T07:18:00" tags: ["Agile Related", "Cool Tools"] author: "Roy Osherove" description: "Peli has released the latest version of MbUnit . It has some really cool additions(click the link to read about them), some of them I helped shape. For example - the Rollback and database restore attributes are in there…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MbUnit 2.17 released - with the cool database attributes I talked about By Roy Osherove July 22, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published July 22, 2004; technical details may be outdated. [Peli](http://blog.dotnetwiki.org/) has released the [latest version of MbUnit](http://blog.dotnetwiki.org/archive/2004/07/22/639.aspx). It has some really cool additions(click the link to read about them), some of them I helped shape. For example - the [Rollback and database restore attributes](http://blog.dotnetwiki.org/archive/2004/07/20/634.aspx) are in there and working. That's pretty awesome. There are a few simple reasons why [MbUnit](http://mbunit.tigris.org/) is still not the most widely use Unit testing framework: 1. The GUI is still not as user friendly as it could be. that is - it is too complicated. in my mind it should look \*exactly\* like the NUnit GUI so that people can relate and use easily. 2.  No TestFixtureSetup and TestFixtureTeardown attributes 3.  No [NunitAddin](http://weblogs.asp.net/nunitaddin)  support(yet?) I'm thinking that if at least the first 2 are fulfilled - I could start using MbUnit in my next project. Right now it is in a place where RSS bandit was a few months ago: Loads of nifty features and abilities but still needs a little nudge to be usable for the masses. Way to go Peli! ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 22, 2004 ### [Some cool refactoring examples, and what seems to be a lovely book](https://osherove.com/blog/2004/7/22/some-cool-refactoring-examples-and-what-seems-to-be-a-lovely.html) - Jul 22, 2004 ### [NUnit 2.2 beta 3 has been released - and some questions](https://osherove.com/blog/2004/7/22/nunit-22-beta-3-has-been-released-and-some-questions.html) - Jul 20, 2004 ### [More agile development resources and an interesting research in the area](https://osherove.com/blog/2004/7/20/more-agile-development-resources-and-an-interesting-research.html) - Jul 19, 2004 ### [Unit Testing scalability and performance](https://osherove.com/blog/2004/7/19/unit-testing-scalability-and-performance.html) --- title: "[CoolTool] BlogWave: Scheduled RSS feed generation and publishing from multiple sources" url: "https://osherove.com/blog/2004/7/22/cooltool-blogwave-scheduled-rss-feed-generation-and-publishi.md" canonical: "https://osherove.com/blog/2004/7/22/cooltool-blogwave-scheduled-rss-feed-generation-and-publishi.html" published: "2004-07-22T06:33:00" updated: "2004-07-22T06:33:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Addy Santo has just published a first alpha of what seems to be a pretty cool tool: BlogWave . Some very cool screenshots and a download link is included. Here are Addy's words: “ This is an alpha (read: mostly…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[CoolTool\] BlogWave: Scheduled RSS feed generation and publishing from multiple sources By Roy Osherove July 22, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published July 22, 2004; technical details may be outdated. Addy Santo has just published a first alpha of what seems to be a pretty cool tool: [BlogWave](http://weblogs.asp.net/asanto/archive/2004/07/21/190667.aspx). Some very cool screenshots and a download link is included. Here are Addy's words: “_This is an alpha (read: mostly functional and sort of stable) version of a tool which enables scheduled generation and publishing of RSS feeds.  This allows, for example, publishing Sharepoint lists and libraries as RSS feeds with no modifications needed to the Sharepoint server._ **_BlogWave Feature List:_** - _Generate RSS feeds based on a variety of inputs:_ - _WSS lists/libraries_ - _Existing RSS files or feeds_ - _Additional input sources are planned, such as Sharepoint searches and aggregated feeds._ - _Publish the generated feeds to different destinations:_ - _Local/network locations_ - _.Text based blogs_ - _WSS libraries_  - _FTP sites._ - _Schedule the generation and publication with a flexible scheduling system_ - _Set which days of the week, what hours, and how often should the generation take place_ - _Set user credentials and advanced options such as running even with no logged-in user or running only when idle._“  Coolness!  I think I'll use this for some of the SPS sites I'm currently doing. Thanks Addy. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jul 22, 2004 ### [NUnit 2.2 beta 3 has been released - and some questions](https://osherove.com/blog/2004/7/22/nunit-22-beta-3-has-been-released-and-some-questions.html) - Jul 22, 2004 ### [MbUnit 2.17 released - with the cool database attributes I talked about](https://osherove.com/blog/2004/7/22/mbunit-217-released-with-the-cool-database-attributes-i-talk.html) - Jun 4, 2004 ### [New ASP.NET Issue Tracker Starter Kit](https://osherove.com/blog/2004/6/4/new-aspnet-issue-tracker-starter-kit.html) - Jun 4, 2004 ### [Free home edition of XMLSpy](https://osherove.com/blog/2004/6/4/free-home-edition-of-xmlspy.html) --- title: "ADO.Net talk went great" url: "https://osherove.com/blog/2004/7/21/adonet-talk-went-great.md" canonical: "https://osherove.com/blog/2004/7/21/adonet-talk-went-great.html" published: "2004-07-21T15:57:00" updated: "2004-07-21T15:57:00" tags: [".Net Original"] author: "Roy Osherove" description: "Phew! this was an exhausting day! I was feeling pretty sick all through the morning today, but things cleared up a big in the afternoon. I also gave my talk at the C# user group today about ADO.Net . It went pretty…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ADO.Net talk went great By Roy Osherove July 21, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 21, 2004; technical details may be outdated. Phew! this was an exhausting day! I was feeling pretty sick all through the morning today, but things cleared up a big in the afternoon. I also gave my talk at the [C# user group](http://www.comconix.com/ivcug/) today about ADO.Net . It went pretty well. One thing of note was that for the first time my wife, Tal, was in attendance at one of my talks. at the first 5 minutes I was actually mumbling a bit - I was nervous and excited she was there listening to me :) Anyway -it went pretty great - only I didn't have enough material - so we finished 20 minutes early. Oh well. A few tips and trick to remember that people really liked: \- [Throw exceptions correctly](http://weblogs.asp.net/rosherove/archive/2004/04/13/112401.aspx) \-  [@@IDENTITY==bad, **scope\_identity**()==good](https://weblogs.asp.net/rosherove/archive/2003/11/13/37217.aspx) much fun was had by all. I am sooo tired. On the other had - my voice seems to be shaping up from the talks. I notice that I am less “voiceless” now after 3 hours of talking than I was the first talk I gave (I couldn't actually talk after an hour the first time). **I'll remind you** about the TDD workshop that is being held on the 28th for the beginners and the advanced one later on in the month. See [http://dev.magen.com/agile](http://dev.magen.com/agile) for more information and registering for those. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 31, 2004 ### [My upcoming lecture schedule](https://osherove.com/blog/2004/7/31/my-upcoming-lecture-schedule.html) - Jul 29, 2004 ### [The SQL Server usability advantage](https://osherove.com/blog/2004/7/29/the-sql-server-usability-advantage.html) - Jul 19, 2004 ### [Unit Testing scalability and performance](https://osherove.com/blog/2004/7/19/unit-testing-scalability-and-performance.html) - Jul 18, 2004 ### [Announcing:Coolest Add-in Contest - Entries available for download](https://osherove.com/blog/2004/7/18/announcingcoolest-add-in-contest-entries-available-for-downl.html) --- title: "More agile development resources and an interesting research in the area" url: "https://osherove.com/blog/2004/7/20/more-agile-development-resources-and-an-interesting-research.md" canonical: "https://osherove.com/blog/2004/7/20/more-agile-development-resources-and-an-interesting-research.html" published: "2004-07-20T17:58:00" updated: "2004-07-20T17:58:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Here's another good place to find presentations and articles related to Agile Development: http://www.rspa.com/reflib/AgileDevelopment.html and here's a great paper about agile development: People Factors in Software…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More agile development resources and an interesting research in the area By Roy Osherove July 20, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 20, 2004; technical details may be outdated. Here's another good place to find presentations and articles related to Agile Development: [http://www.rspa.com/reflib/AgileDevelopment.html](http://www.rspa.com/reflib/AgileDevelopment.html "http://www.rspa.com/reflib/AgileDevelopment.html") and here's a great paper about agile development: [People Factors in Software Management: Lessons From Comparing Agile and Plan-Driven Methods](http://www.stsc.hill.af.mil/crosstalk/2003/12/0312turner.html) (Thanks to Arnon for passing me this one) Also - don't forget I'll be speaking this Wednesday at the IVCUG (C#) user group about ADO.Net best practices and other cool stuff. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 22, 2004 ### [NUnit 2.2 beta 3 has been released - and some questions](https://osherove.com/blog/2004/7/22/nunit-22-beta-3-has-been-released-and-some-questions.html) - Jul 22, 2004 ### [MbUnit 2.17 released - with the cool database attributes I talked about](https://osherove.com/blog/2004/7/22/mbunit-217-released-with-the-cool-database-attributes-i-talk.html) - Jul 19, 2004 ### [Unit Testing scalability and performance](https://osherove.com/blog/2004/7/19/unit-testing-scalability-and-performance.html) - Jul 19, 2004 ### [Database Unit Testing issues and solutions: Rollback And RestoreDatabase abilities](https://osherove.com/blog/2004/7/19/database-unit-testing-issues-and-solutions-rollback-and-rest.html) --- title: "Being an INETA speaker?" url: "https://osherove.com/blog/2004/7/19/being-an-ineta-speaker.md" canonical: "https://osherove.com/blog/2004/7/19/being-an-ineta-speaker.html" published: "2004-07-19T20:12:00" updated: "2004-07-19T20:12:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Hmm. What I would *really* love to do is be an INETA speaker. You get to travel the globe (the closer part of it, anyway) and talk to interesting people about interesting subjects. now - how does one get such a gig?…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Being an INETA speaker? By Roy Osherove July 19, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 19, 2004; technical details may be outdated. Hmm. What I would \*really\* love to do is be an [INETA](http://www.ineta.org/) speaker. You get to travel the globe (the closer part of it, anyway) and talk to interesting people about interesting subjects. now - how does one get such a gig? where do you turn to? I see no membership application up there on the site. any ideas? clues? Topics could probably include : TDD,XP,architecture, ADO.Net,Regex, plugins,reflection. you know - the cool stuff. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 29, 2004 ### [Not the PhD type, I guess](https://osherove.com/blog/2004/7/29/not-the-phd-type-i-guess.html) - Jul 28, 2004 ### [VS.net Editor team chat when well](https://osherove.com/blog/2004/7/28/vsnet-editor-team-chat-when-well.html) - Jul 18, 2004 ### [Israeli Geek Dinner Tomorrow - at what time?](https://osherove.com/blog/2004/7/18/israeli-geek-dinner-tomorrow-at-what-time.html) - Jul 10, 2004 ### [Microsoft is losing the community battle - against itself](https://osherove.com/blog/2004/7/10/microsoft-is-losing-the-community-battle-against-itself.html) --- title: "Unit Testing scalability and performance" url: "https://osherove.com/blog/2004/7/19/unit-testing-scalability-and-performance.md" canonical: "https://osherove.com/blog/2004/7/19/unit-testing-scalability-and-performance.html" published: "2004-07-19T19:34:00" updated: "2004-07-19T19:34:00" tags: [".Net Original", "Agile Related"] author: "Roy Osherove" description: "I had an interesting chat with Clemens today. I told him about the Rollback ability using ES and he totally disagreed with me that its a viable option for testing database usage for several reasons: If you run tests…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing scalability and performance By Roy Osherove July 19, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 19, 2004; technical details may be outdated. I had an interesting chat with [Clemens](http://staff.newtelligence.net/clemensv/) today. I told him about the Rollback ability using ES and he totally disagreed with me that its a viable option for testing database usage for several reasons: - If you run tests with LOTS of data - rollback will take a loooong time - You're introducing "context" into your running code - thus changing is runtime behavior, even if ever so slightly - If you have components that require new transactions or do not support transactions you can't use this technology So how does **he** do it? he restores the database every time. Costly? yes - but less expensive than the other way and the weaknesses just listed won't happen. But more importantly - **why is this big difference in opinion happening**? why do these rollbacks seem perfectly natural to me and so unnatural and irrelevant to him? Its because we're doing the testing in **different ways of thinking**. Clemens is testing scalability issues and integration issues in a much more fierce manner than I have ever though about doing. I guess it comes with the territory. Personally - I never needed such tests. What **would** be required to test load balancing, scalability and perf issues? - Multi threaded testing - Repeated - long running, large data volume tests - lots of interaction in the DB for DALs My tests look nothing like this. I support the approach that when you test something you test it solely for its own functionality and nothing else. for example - an object that is supposed to behave in a specific way with other objects might be tested using mock objects to verify that it works fine. A DAL will be tested for the simple functionality it has, without multiple threads testing it. I know that it works. If I get a scenario that fails it - \*then\* I'd test the harder stuff. here are pointers from my testing needs: - they should run as fast as possible so that you can run them all the time. all of them. - they should test individual object functionality - often using mock objects and interfaces - Against the database I will test the simplest functionality until I need something bigger. Scalability testing does enter this field until I \*need\* scalability. KISS principle. So - what's the big deal? we're  both working on the same direction - on different paths. I do suspect a time will come when I will need to get into hardcore perf and scalability testing. I know Rollback won't help me then. But being able to restore a database easily will. Hopefully - both of these will be available via attributes in my unit tests. [It's possible even today](http://weblogs.asp.net/rosherove/archive/2004/07/20/187863.aspx) \- with a little effort. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 29, 2004 ### [The SQL Server usability advantage](https://osherove.com/blog/2004/7/29/the-sql-server-usability-advantage.html) - Jul 21, 2004 ### [ADO.Net talk went great](https://osherove.com/blog/2004/7/21/adonet-talk-went-great.html) - Jul 18, 2004 ### [Announcing:Coolest Add-in Contest - Entries available for download](https://osherove.com/blog/2004/7/18/announcingcoolest-add-in-contest-entries-available-for-downl.html) - Jul 11, 2004 ### [Introducing: NUnitX and the Rollback attribute - Seamless database rollback with Nunit](https://osherove.com/blog/2004/7/11/introducing-nunitx-and-the-rollback-attribute-seamless-datab.html) --- title: "Database Unit Testing issues and solutions: Rollback And RestoreDatabase abilities" url: "https://osherove.com/blog/2004/7/19/database-unit-testing-issues-and-solutions-rollback-and-rest.md" canonical: "https://osherove.com/blog/2004/7/19/database-unit-testing-issues-and-solutions-rollback-and-rest.html" published: "2004-07-19T19:01:00" updated: "2004-07-19T19:01:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Update : Later on, after this article was written, I've created a much more elegant way to have your own [Rollback] attribute without resorting to a whole new binary version of Nunit. In fact, that attribute will work…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Database Unit Testing issues and solutions: Rollback And RestoreDatabase abilities By Roy Osherove July 19, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 19, 2004; technical details may be outdated. **Update**: Later on, after this article was written, I've created a much more elegant way to have your own \[Rollback\] attribute without resorting to a whole new binary version of Nunit. In fact, that attribute will work with any testing framework out there for .NET. It's called [XTUnit](https://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx) and you can [learn more about it here](https://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx). There are at least two good ways to solve the database rollback problem we are all facing when running unit tests against a real database.  Each method has different strength and weaknesses and I'd say they compliment each other.  **Feature 1 – Database rollback - RollbackAttribute:** **\----------------------------------------------------** One of the most elegant ways I've found to implement database rollback is through transaction. Actually – COM+ transactions. I won't specify all of the idea here – but I'll point you to an article I've written on the subject:  **[Simplified Database Unit testing using Enterprise Services](https://osherove.com/rosherove/articles/dbunittesting.aspx "http")**  In short the article discusses inheriting your test fixture from a serviced component fixture, which has a TransactionOption.Required on it, and calls ContextUtil.SetAbort() on teardown.  This achieves a cool thing: all test code runs inside a transaction and is rolled back automatically. This works well in many scenarios but also has some disadvantages (listed in the article).  So, after a while I came up with an even more elegant way to achieve this functionality with less overhead and hassle: By using Services without components you can take care of many issues arising in the previous way. But I took it one step forward: **[Introducing: NUnitX and the Rollback attribute - Seamless database rollback with Nunit](https://weblogs.asp.net/rosherove/archive/2004/07/12/180189.aspx "http")** I've actually added a new attribute to the Nunit code and a new test case type that inherits from NormalTestCase. Basically – the new class – TransactionTestCase enters a serviced domain before setup and leaved after teardown. One of the coolest things in this is that each test can be marked separately if we want it to run with transaction or not.  **You can download NUnitX from the link above.**   I'd love to be part of the dev team on this thing and integrate it myself if I could. But I don’t know how things work around here so I'm posting the code for the person who is most likely to know what to do with it. I've sent an email to the NUnit-Developers mailing list and we'll see what we come up with.  **Feature 2 – Database Restore – DatabaseRestoreAttribute and DatabaseRestoreInfoAttribute:** **\----------------------------------------------------** The idea here is simple: I don't want some of my tests to run under a transaction for various reasons: \-          if I am testing large amounts of data in multiple threads this is a big perf hit \-          if I have tested components that use TransactionOption.NotSupported or TransactionOption.RequiresNew \-          I don't want to add "context" into my tested code  So the other "best" way is to restore the database each time programmatically from a backup file. There is a great library in the works, by [Jonathan de Halleux](http://blog.dotnetwiki.org/ "http") (creator of [MbUnit](http://mbunit.tigris.org/)) that is called [TestFu](http://blog.dotnetwiki.org/archive/2004/07/13/563.aspx "http").  Among other things it has a SqlAdministrator class that allows one to programmatically restore and backup a database and other things. Very cool. It had only one downside – when you restore a database you need to make sure it has no open connections  from other processes. This class did not check this and so the code fails sometimes. However – I've integrated a derived class that \***does**\* check this and shuts down those process's connections to the DB to be restored.  this new functionality will be available in the next version of TestFu. You can download that class \*today\* directly from here (along with example tests) [http://files.osherove.com/DBBackupRestore.zip](http://files.osherove.com/DBBackupRestore.zip "http") Moving right along about the Attributes I am talking about: What I have already implemented in a version of Nunit (but don't have finalized code yet) is support for this functionality using attributes as well. This support is divided in to 2 attributes. The first one **DatabaseRestoreInfo** is meant on sit on top of the test fixture and provides metadata on the following: \-          db connection string \-          db name \-          backup file/destination to restore from the second attribute is simple: **RestoreDatabaseAttribute** , Sits on any specific test we want to add this functionality to. It has no data. It is simply a signal for a specific test to do a restore after it is run using the metadata from the attribute found on top of the class. So – for a simple class that uses this functionality this could looks something like this:  \[TestFixture\] \[DatabaseRestoreInfo("server=localhost;integrated security=SSPI", "Northwind", @"C;\\backup\\nwind.bak",DeviceType.File)\] Public class MySimpleClassFixture {             \[Test,Rollback\] Public void SomeDBTest() {             //this test will be automatically rolled back using a COM+ transaction }             \[Test,RestoreDatabase\] Public void SomeDBTest() {             //After this test is run the database will be automatically restored form the details on the attribute on the class } } Like I said - we don't have these attributes today - but you can use TestFu in conjunction with your tests to get a similer effect. For now. I'm working on integrating both of these into Nunit by posting these ideas and issues on the [NUnit-Developers](http://sourceforge.net/mail/?group_id=10749) mailing list.. Let's see if I can make that work. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 20, 2004 ### [More agile development resources and an interesting research in the area](https://osherove.com/blog/2004/7/20/more-agile-development-resources-and-an-interesting-research.html) - Jul 19, 2004 ### [Unit Testing scalability and performance](https://osherove.com/blog/2004/7/19/unit-testing-scalability-and-performance.html) - Jul 11, 2004 ### [Introducing: NUnitX and the Rollback attribute - Seamless database rollback with Nunit](https://osherove.com/blog/2004/7/11/introducing-nunitx-and-the-rollback-attribute-seamless-datab.html) - Jul 10, 2004 ### [A simple way to unit-test internal classes](https://osherove.com/blog/2004/7/10/a-simple-way-to-unit-test-internal-classes.html) --- title: "Blogger/geek dinner is canceled for today" url: "https://osherove.com/blog/2004/7/19/bloggergeek-dinner-is-canceled-for-today.md" canonical: "https://osherove.com/blog/2004/7/19/bloggergeek-dinner-is-canceled-for-today.html" published: "2004-07-19T05:33:00" updated: "2004-07-19T05:33:00" tags: ["Blogging"] author: "Roy Osherove" description: "Blogger/geek dinner is canceled for today. Too few people are available. :(" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blogger/geek dinner is canceled for today By Roy Osherove July 19, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 19, 2004; technical details may be outdated. Blogger/geek dinner is canceled for today. Too few people are available. :( ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 29, 2004 ### [blogs.ineta.org is here](https://osherove.com/blog/2004/7/29/blogsinetaorg-is-here.html) - Jul 23, 2004 ### [Jackie Goldstein is blogging](https://osherove.com/blog/2004/7/23/jackie-goldstein-is-blogging.html) - Jul 13, 2004 ### [Setting my priorities straight](https://osherove.com/blog/2004/7/13/setting-my-priorities-straight.html) - Jul 9, 2004 ### [My feed reader of choice - RSS bandit](https://osherove.com/blog/2004/7/9/my-feed-reader-of-choice-rss-bandit.html) --- title: "Announcing:Coolest Add-in Contest - Entries available for download" url: "https://osherove.com/blog/2004/7/18/announcingcoolest-add-in-contest-entries-available-for-downl.md" canonical: "https://osherove.com/blog/2004/7/18/announcingcoolest-add-in-contest-entries-available-for-downl.html" published: "2004-07-18T16:35:00" updated: "2004-07-18T16:35:00" tags: [".Net Original", "Addin Contest"] author: "Roy Osherove" description: "Announcing the Add-in Contest site: http://dev.magen.com/AddinContest/default.aspx Site features: Lists all the entries that were eligible to enter the contest, along with a download link and short descriptions. (some…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Announcing:Coolest Add-in Contest - Entries available for download By Roy Osherove July 18, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Addin Contest](https://osherove.com/blog/category/addin-contest) **Historical article** · Originally published July 18, 2004; technical details may be outdated. ![Coding Contest: Coolest/most useful VS.Net Add-in or Macro](https://osherove.com/img/wb/d3d4203b_royo.is-a-geek.com_pics_contest.gif) **Announcing the Add-in Contest site:** [http://dev.magen.com/AddinContest/default.aspx](http://dev.magen.com/AddinContest/default.aspx) Site features: - Lists **all the entries that were eligible** to enter the contest, along with a download link and short descriptions. (some of these are pretty cool!) - Prize list - Judge list - Schedule for contest phases - All add-ins and macros come with their own documentation in the zip files. Some have more(or much less) documentation that others - be warned. Hopefully (but we're flexible here) by the end of this month we will have a finalized list of winners. **Known issues:** \* yes, I know the site is slow. \* yes I know you can see links for administrator features on the site. Fortunately - you won't be able to use them (you'll get a user pass dialog). Anyone know how to turn these off by the way?? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 21, 2004 ### [ADO.Net talk went great](https://osherove.com/blog/2004/7/21/adonet-talk-went-great.html) - Jul 19, 2004 ### [Unit Testing scalability and performance](https://osherove.com/blog/2004/7/19/unit-testing-scalability-and-performance.html) - Jul 11, 2004 ### [Introducing: NUnitX and the Rollback attribute - Seamless database rollback with Nunit](https://osherove.com/blog/2004/7/11/introducing-nunitx-and-the-rollback-attribute-seamless-datab.html) - Jun 20, 2004 ### [Watch me speak: eXtreme Programming and Agile concepts, at the .Net Architects user group this month](https://osherove.com/blog/2004/6/20/watch-me-speak-extreme-programming-and-agile-concepts-at-the.html) --- title: "Israeli Geek Dinner Tomorrow - at what time?" url: "https://osherove.com/blog/2004/7/18/israeli-geek-dinner-tomorrow-at-what-time.md" canonical: "https://osherove.com/blog/2004/7/18/israeli-geek-dinner-tomorrow-at-what-time.html" published: "2004-07-18T08:24:00" updated: "2004-07-18T08:24:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Geek dinner tomorrow , remember? Now I need you to answer me this: would 19:30 be too early? We're probably talking about El-Gaucho in Tel aviv, like we did last month." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israeli Geek Dinner Tomorrow - at what time? By Roy Osherove July 18, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 18, 2004; technical details may be outdated. [Geek dinner tomorrow](http://dev.magen.com/Geeks/Lists/Events/DispForm.aspx?ID=2), remember? Now I need you to answer me this: would 19:30 be too early? We're probably talking about El-Gaucho in Tel aviv, like we did last month. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 28, 2004 ### [VS.net Editor team chat when well](https://osherove.com/blog/2004/7/28/vsnet-editor-team-chat-when-well.html) - Jul 19, 2004 ### [Being an INETA speaker?](https://osherove.com/blog/2004/7/19/being-an-ineta-speaker.html) - Jul 10, 2004 ### [Microsoft is losing the community battle - against itself](https://osherove.com/blog/2004/7/10/microsoft-is-losing-the-community-battle-against-itself.html) - Jul 9, 2004 ### [What a typical user group looks like](https://osherove.com/blog/2004/7/9/what-a-typical-user-group-looks-like.html) --- title: "Omer is doing some serious blogging" url: "https://osherove.com/blog/2004/7/17/omer-is-doing-some-serious-blogging.md" canonical: "https://osherove.com/blog/2004/7/17/omer-is-doing-some-serious-blogging.html" published: "2004-07-17T19:22:00" updated: "2004-07-17T19:22:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Just wanted to give a shout out and “Re-spect!” for Omer Van Kloeten , who, during the past few weeks has been able to come up with some real serious and deep stuff in his weblog. Here's a partial list of the stuff he's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Omer is doing some serious blogging By Roy Osherove July 17, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published July 17, 2004; technical details may be outdated. Just wanted to give a shout out and “Re-spect!” for [Omer Van Kloeten](http://weblogs.asp.net/okloeten/), who, during the past few weeks has been able to come up with some real serious and deep stuff in his weblog. Here's a partial list of the stuff he's done: - [Found a bug in the C# specification (looks like it)](http://weblogs.asp.net/okloeten/archive/2004/07/17/186186.aspx) - [Released a Lexical Analyzer in C#](http://weblogs.asp.net/okloeten/archive/2004/07/16/185585.aspx) - [Wrote an article about code generation](http://weblogs.asp.net/okloeten/archive/2004/07/11/179615.aspx) - [Raised a smallish but annoying Windows taskbar problem](http://weblogs.asp.net/okloeten/archive/2004/07/13/181939.aspx) (and there's a hidden gen in the last comment!) - [Showed off a preview of  a UIP application block visual designer he made](http://weblogs.asp.net/okloeten/archive/2004/06/29/168987.aspx) Need I say more? [subscribed](http://weblogs.asp.net/okloeten/rss.aspx). ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 3, 2004 ### [Adding pre and post build events for VB.Net projects](https://osherove.com/blog/2004/9/3/adding-pre-and-post-build-events-for-vbnet-projects.html) - Sep 3, 2004 ### [Services without components on a pre-SP2 XP machine?](https://osherove.com/blog/2004/9/3/services-without-components-on-a-pre-sp2-xp-machine.html) - Jul 11, 2004 ### [An interesting Memory Leak problem.](https://osherove.com/blog/2004/7/11/an-interesting-memory-leak-problem.html) - Jun 11, 2004 ### [Add Support for "Set" Collections to .NET](https://osherove.com/blog/2004/6/11/add-support-for-quotsetquot-collections-to-net.html) --- title: "Studies in teaching TDD and XP" url: "https://osherove.com/blog/2004/7/17/studies-in-teaching-tdd-and-xp.md" canonical: "https://osherove.com/blog/2004/7/17/studies-in-teaching-tdd-and-xp.html" published: "2004-07-17T16:05:00" updated: "2004-07-17T16:05:00" tags: [] author: "Roy Osherove" description: "This site has some interesting papers relating to teaching TDD and Extreme Programming. They list common problems with teaching TDD and XP, how they tried to solve it, and there are also some papers detailing how to do…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Studies in teaching TDD and XP By Roy Osherove July 17, 2004 **Historical article** · Originally published July 17, 2004; technical details may be outdated. [This site](http://www.cs.auckland.ac.nz/~rick/xpPapersResources.htm) has some interesting papers relating to teaching TDD and Extreme Programming. They list common problems with teaching TDD and XP, how they tried to solve it, and there are also some papers detailing how to do some  TDD design of abstract classes and interfaces. I should really read all of these. I find myself in the position of questioning a lot about my own methods of teaching these "hard" topics, and its nice to know that the difficulties I'm experiencing are shared by more people. --- title: "New Israeli Blogger: Ido Tandy" url: "https://osherove.com/blog/2004/7/17/new-israeli-blogger-ido-tandy.md" canonical: "https://osherove.com/blog/2004/7/17/new-israeli-blogger-ido-tandy.html" published: "2004-07-17T06:28:00" updated: "2004-07-17T06:28:00" tags: [] author: "Roy Osherove" description: "New Israeli blogger: Ido Tandi . Ido works with me at Magen which, with the recent addition of Ido Samuelson to our team - brings the number of Magen Bloggers to a whopping 4. That's 15% of the company blogging. Gotta…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Israeli Blogger: Ido Tandy By Roy Osherove July 17, 2004 **Historical article** · Originally published July 17, 2004; technical details may be outdated. New Israeli blogger: [Ido Tandi](http://dotnetjunkies.com/WebLog/idotandy/). Ido works with me at [Magen](http://www.magen.com/) which, with the recent addition of [Ido Samuelson](http://dotnetjunkies.com/WebLog/principal) to our team - brings the number of Magen Bloggers to a whopping 4. That's **15%** of the company blogging. Gotta be a first :) Ido's first article tries to summerize "[What is Enterprise Architecture](http://dotnetjunkies.com/weblog/idotandy/articles/19479.aspx)". Good luck with that ;) --- title: "Setting my priorities straight" url: "https://osherove.com/blog/2004/7/13/setting-my-priorities-straight.md" canonical: "https://osherove.com/blog/2004/7/13/setting-my-priorities-straight.html" published: "2004-07-13T12:17:00" updated: "2004-07-13T12:17:00" tags: ["Blogging"] author: "Roy Osherove" description: "Blogging will be a little lighter than usual in the next few weeks I have a life that I have been neglecting a bit and I need to attend to. So - I'll be here.. in spirit. but I'll blog whenever I'll have something…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Setting my priorities straight By Roy Osherove July 13, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 13, 2004; technical details may be outdated. Blogging will be a little lighter than usual in the next few weeks  I have a life that I have been neglecting a bit and I need to attend to. So - I'll be here.. in spirit. but I'll blog whenever I'll have something \*really\* important I need to say or do. Like the Addin contest for example. I have to learn how to balance my schedule more effectively. right now I need to get my priorities straight. But I'll be here and in the community still, just not at the same frequency. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 23, 2004 ### [Jackie Goldstein is blogging](https://osherove.com/blog/2004/7/23/jackie-goldstein-is-blogging.html) - Jul 19, 2004 ### [Blogger/geek dinner is canceled for today](https://osherove.com/blog/2004/7/19/bloggergeek-dinner-is-canceled-for-today.html) - Jul 9, 2004 ### [My feed reader of choice - RSS bandit](https://osherove.com/blog/2004/7/9/my-feed-reader-of-choice-rss-bandit.html) - Jul 2, 2004 ### [More Israeli Bloggers](https://osherove.com/blog/2004/7/2/more-israeli-bloggers.html) --- title: "XP talk rescheduled - replaced with \"ADO.Net Best Practices and advanced Concepts\"" url: "https://osherove.com/blog/2004/7/13/xp-talk-rescheduled-replaced-with-quotadonet-best-practices.md" canonical: "https://osherove.com/blog/2004/7/13/xp-talk-rescheduled-replaced-with-quotadonet-best-practices.html" published: "2004-07-13T08:30:00" updated: "2004-07-13T08:30:00" tags: [] author: "Roy Osherove" description: "The “XP and Agile Concepts” talk I was supposed to give on the 21st of this month has been rescheduled. We're planning to do this talk on a larger scale next month - so don't get too disappointed. Instead - I'll be…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # XP talk rescheduled - replaced with "ADO.Net Best Practices and advanced Concepts" By Roy Osherove July 13, 2004 **Historical article** · Originally published July 13, 2004; technical details may be outdated. The “XP and Agile Concepts” talk I was supposed to give on the 21st of this month has been rescheduled. We're planning to do this talk on a larger scale next month - so don't get too disappointed. Instead - I'll be giving a different talk: ADO.Net Best Practices and advanced Concepts  **When**: 21st of this month 17:30 **Where**: [C# user group](http://www.comconix.com/ivcug/) **What**: ADO.Net allows you to do many different things in many different ways.In this talk we'll discuss some of the most recommended ways of doing things, and things you should \***not**\* do as well. Among the topics: - Data Application Block – features, benefits and usage - Concurrency Management - handling dataset conflicts - Performance tips and tricks - Error Handling And a few more important and interesting things you should know when going deep into your Data Access Layer.  **Required knowledge**: ADO.Net basic usage and working experience --- title: "MBUnit to feature Rollback abilities as well" url: "https://osherove.com/blog/2004/7/11/mbunit-to-feature-rollback-abilities-as-well.md" canonical: "https://osherove.com/blog/2004/7/11/mbunit-to-feature-rollback-abilities-as-well.html" published: "2004-07-11T19:20:00" updated: "2004-07-11T19:20:00" tags: [] author: "Roy Osherove" description: "After my last post about NUnitX I forgot to mention one very cool thing: I've been in touch with Peli - maker of MBUnit (which with a little work can grow to become a mainstream force in the unit testing arena) and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MBUnit to feature Rollback abilities as well By Roy Osherove July 11, 2004 **Historical article** · Originally published July 11, 2004; technical details may be outdated. After my last post about [NUnitX](http://weblogs.asp.net/rosherove/archive/2004/07/12/180189.aspx) I forgot to mention one very cool thing: I've been in touch with Peli - maker of MBUnit (which with a little work can grow to become a mainstream force in the unit testing arena) and shown him my Rollback code for NUnitX. [5 minutes later he had already integrated Rollback ability into MBUnit](http://blog.dotnetwiki.org/archive/2004/07/11/673.aspx). that says a lot for extensibility and design. Way to go Jonathan! Future ventures in this area will include making the [NUnit-Addin](http://weblogs.asp.net/NUnitAddin/) Rollback aware - allowing you to debug and step through your tests with automatic Rollback enabled (right now Nunit addin will run just fine with NunitX, but Rollback will not work). More to come. --- title: "Introducing: NUnitX and the Rollback attribute - Seamless database rollback with Nunit" url: "https://osherove.com/blog/2004/7/11/introducing-nunitx-and-the-rollback-attribute-seamless-datab.md" canonical: "https://osherove.com/blog/2004/7/11/introducing-nunitx-and-the-rollback-attribute-seamless-datab.html" published: "2004-07-11T18:32:00" updated: "2004-07-11T18:32:00" tags: [".Net Original", "Agile Related"] author: "Roy Osherove" description: "Update : You may be more interested in XTUnit , which was released a bit later on and provides the same abilities, without needing a seperate version of NUnit to run. In fact, it runs on any unit testing framework for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing: NUnitX and the Rollback attribute - Seamless database rollback with Nunit By Roy Osherove July 11, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 11, 2004; technical details may be outdated. _**Update**: You may be more interested in [XTUnit](https://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx), which was released a bit later on and provides the same abilities, without needing a seperate version of NUnit to run. In fact, it runs on any unit testing framework for .NET which can use attributes._ My article on [performing database unit tests with rollback ability](https://osherove.com/rosherove/articles/dbunittesting.aspx) has managed to get quite a lot of attention. There were some caveats to that method, though: - You had to inherit from ServicedComponent thus limiting your inheritance chain - It meant you had to strong name your assemblies - Some trouble was encountered when running the tests through the NUnit GUI (disposing objects too soon) for some people. - All tests were run under the same transaction context The other way to go on this was to use the method called "Services without components" - mainly utilising the ServiceDomain and the ServiceConfig classes found in the System.EnterpriseServices namespace, but are relatively unknown or unused. I won't extend the discussion of the actual technicalities here because I'm planning at article on this subject, but for now you can enjoy the fruits of this research today. What I **really wanted** was to be able to write something as elegant as this: \[Test,Rollback\] public void Insert() {       //Do some inserts into the DB here       //and the automatically roll back } So, I dug deep into the bowels of the Nunit Framework and came out with something that did exactly that -  I added a new attribute to the framework - **RollbackAttribute** by placing that attribute on a test method that test case will automatically run inside its own transaction context, and automatically roll back at the end of the test. It's really quite cool and I'm using it today in our applications. yes. using it looks exactly like this: \[Test,Rollback\] public void Insert() {       //Do some inserts into the DB here       //and the automatically roll back } So - I went ahead and compiled a custom version of the NUnit framework just for you. I like to call it NunitX - it is a mutant and as such must have a cool name. Hope you agree. To use - simply add a reference to the NUnit.framework.dll found in the zip file instead of the one you usually reference. that's basically it. [Here's a direct download link for the zip file (130k)](http://dev.magen.com/Agile/Code/NunitX.zip) [Heres a link to XtUnit](http://teamagile.com/Downloads/XtUnit.zip) (as mentioned in the beginning of this post). You may find this a better a implementation that does not need its own version of NUnit to work. **USAGE NOTES** \------------- \* **windows XP SP 1 or above required** (COM+ 1.5 is required for this to work - that's why) \* this version is using Services without components = no strong naming assemblies is needed \* the NUnit Add-in will work, but when you use the Nunit-Addin you will \*not\* have Rollback abilities \* Each Test method will run in its own separate transaction \* If you have an object down the line which uses its own transaction and calls Commit on it - you will not be able to rollback that commit.  This will only happen if that object uses the TransactionOption.RequiresNew flag.  for objects that use the TransactionOption.Required flag - rollback will work just fine. \* you need to use the **Nunit-gui** and **nunit-console** versions that come with **this** distribution.  you CANNOT use the original NUnit gui or console applications to run tests that use this custom framework ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 19, 2004 ### [Unit Testing scalability and performance](https://osherove.com/blog/2004/7/19/unit-testing-scalability-and-performance.html) - Jul 18, 2004 ### [Announcing:Coolest Add-in Contest - Entries available for download](https://osherove.com/blog/2004/7/18/announcingcoolest-add-in-contest-entries-available-for-downl.html) - Jun 20, 2004 ### [Watch me speak: eXtreme Programming and Agile concepts, at the .Net Architects user group this month](https://osherove.com/blog/2004/6/20/watch-me-speak-extreme-programming-and-agile-concepts-at-the.html) - Jun 19, 2004 ### [\[Article\] Simplified Database Unit testing using Enterprise Services](https://osherove.com/blog/2004/6/19/article-simplified-database-unit-testing-using-enterprise-se.html) --- title: "An interesting Memory Leak problem." url: "https://osherove.com/blog/2004/7/11/an-interesting-memory-leak-problem.md" canonical: "https://osherove.com/blog/2004/7/11/an-interesting-memory-leak-problem.html" published: "2004-07-11T15:53:00" updated: "2004-07-11T15:53:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Udi is having a hard time figuring out a nasty weird memory leak problem . I have no idea what the answer is, but I'm sure one of you smart people out there could chime in. I'd love to see what the answer to this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # An interesting Memory Leak problem. By Roy Osherove July 11, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 11, 2004; technical details may be outdated. [Udi is having a hard time figuring out a nasty weird memory leak problem](http://udidahan.weblogs.us/archives/022452.html). I have no idea what the answer is, but I'm sure one of you smart people out there could chime in. I'd love to see what the answer to this problem is. so - here's an exerpt that explains when the memory leak occurs and the explanation that is currenly suggested: “_After asking around a bit, nobody could give me an explanation. Eventually, one of my programmers gave somebody a call, and he had an explanation. Now, this person could speak only Russian, so what I'm saying here comes via a second hand translation by my programmer (I don't speak any Russian). The reason he gave for this happening was that DLL's have a heap which is separate from that of the EXE, and that although structs are value types, they still have heap representation - they are objects that behave like primitives. Now, in cases when the thread is created within code from the DLL, automatic cleanup of memory allocated on the heap doesn't occur when using structs. When the thread is created within code from the EXE, the memory is automatically cleaned up._ _I had a hard time believing this, to say the least, but I couldn't find any other explanation. After checking it up a bit, and talking to some more people, I was still left high and dry. Everywhere I looked (and heard), there was no justification to his claim. However, by that exact same information, my problem shouldn't have been occurring._ _So, like I said before, the solution is to have the code that creates the threads on the EXE. If anyone can tell me why, I'd truly appreciate it - especially if you can find documentation supporting it :)_” ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 3, 2004 ### [Services without components on a pre-SP2 XP machine?](https://osherove.com/blog/2004/9/3/services-without-components-on-a-pre-sp2-xp-machine.html) - Jul 17, 2004 ### [Omer is doing some serious blogging](https://osherove.com/blog/2004/7/17/omer-is-doing-some-serious-blogging.html) - Jun 11, 2004 ### [Add Support for "Set" Collections to .NET](https://osherove.com/blog/2004/6/11/add-support-for-quotsetquot-collections-to-net.html) - Jun 4, 2004 ### [Method PageRank for Reflector](https://osherove.com/blog/2004/6/4/method-pagerank-for-reflector.html) --- title: "Microsoft is losing the community battle - against itself" url: "https://osherove.com/blog/2004/7/10/microsoft-is-losing-the-community-battle-against-itself.md" canonical: "https://osherove.com/blog/2004/7/10/microsoft-is-losing-the-community-battle-against-itself.html" published: "2004-07-10T20:49:00" updated: "2004-07-10T20:49:00" tags: ["Off Topic"] author: "Roy Osherove" description: "in one of my earlier posts, about what a typical user group looks like , Paschal put in this bitter comment: \"Roy the problem is that usergroups are not all the same friendly and nice in every country ! In Ireland sadly…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft is losing the community battle - against itself By Roy Osherove July 10, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 10, 2004; technical details may be outdated. in one of my earlier posts, about [what a typical user group looks like](http://weblogs.asp.net/rosherove/archive/2004/07/09/178283.aspx), [Paschal](http://weblogs.asp.net/pleloup) put in this bitter comment: _"Roy the problem is that usergroups are not all the same friendly and nice in every country ! In Ireland sadly until now the only existing .Net user group is managed by public relation people who cares more about their Seattle client and they have nothing so geeky here. Most of the rare meetings Microsoft organise here are dull. Yes ok I see the point you can make saying something like 'stop moaning do your own user group'. Well honestly I don't have time ! So I prefer to join and talk to a community using the blog, maybe helping somebody somewhere. I know some people can find this lame, but maybe some day I will join a real Irish user group, independent and supportive of their community. "_ If that's not a serious red flag, i don't know what is. I have no idea what's going on in MS Ireland's executives minds, but surely it's not enough to make the community there happy. I guess that's one of the most important things a company such as MS can do for itself - make its users and customers happy. That's definitely not happening over there.  So - if Anyone which is community oriented in MS is reading this post - please take this issue to heart. I don't know enough about the situation there but it definitely does not smell right. I'd say to anyone involved in those efforts over there to get their butts up and start doing something for the community - while there still is one. To a more limited degree, however, there are things to be said from MS Israel as well. what do I mean? In the recent year or so we've seen the big Redmond giant become much more transparent. It has been a remarkable change for the customers and end users. Much more information, much more sharing, much more attention to details. It's been amazing and I applaud MS for doing so. This process of transparency, mostly through employee weblogs, has done another thing: it has raised the bar for community involvement for all the other MS embassies in foreign countries. Places such as Israel, Ireland, Brazil, Spain, Italy and many more, now seem duller and more contained within themselves when compared to the Redmond machine. it can't be helped, really. Developers from all around the world are reading msdn blogs and weblogs.asp.net and starting to wonder "why don't **we** have that as well?". That's a totally valid question. MS embassies which could have lived forever on doing just enough to sell products and help support for their native speakers now should find themselves at a disadvantage, community wise, when faced and compared to Redmond, and most rightly so. It is embarrassing. The only analogy I can compare it to is to what happened several years ago in the telephony market in Israel. Up until a few years ago the overseas telephony market in Israel was monopolised by the "Bezeq" company- to call abroad you would have to take out a small mortgage and still count the seconds each conversations you did so that you would still be left with your pants on. then the market suddenly opened for competitors and BEZEq's prices dropped by about 90% to stay competitive - thus showing off the huge amounts of profit they've made on the customers. This same situation - community wise, is now starting to appear for MS and its embassies. only this time MS Redmond is the competitor, showing how things "can be done right" making the developers ask for more. The only problem right now is this: It doesn't feel like the foreign embassies are **truly** listening. I think people who are not from the US are losing out on things that could have been much better. Especially lack of communication with the local MS branch. MS Israel for example, still does not know how to listen to the community as well as its mother-ship does. For example, at the last user group meeting a nice lady stopped by before the meeting started and asked all attendees to fill out the paper reviews after the lecture - specifying things that are bothering us, things that could have been better and things that are missing. she would read them all, she said. to me - that's amazingly out of touch with today's online community. You can no longer(and should not) be able to get away with such things. why is the only weblog from a MS employee in Israel is [Yosi Taguri's weblog](http://blogs.msdn.com/yosit)?(and it's rarely updated since yossi is so busy) I know yossi is doing some great things for the community in Israel but one man is definitely not enough. the people who are supposedly in charge of community in MS Israel can do much more to listen to us. they should open weblogs, they should **read** weblogs, they should do more to unite the user groups in Israel today (I'm part of an effort to do just that these days). they should **not** hand out papers and pens and expect people to spill their guts out. at the end of the day people are tired and want to go home. heck - even I didn't write comments on that paper because I was tired and forgot, and you can't blame me for not speaking my mind, can you? So - MS branches around the world - **listen up**. You need to take charge, you need to swipe you local community off its feet because I bet most of you are not doing enough. You should read weblogs and comment on stuff that matters. you should open your own weblogs and share what you're going through. you should share the community in the decision making process. You should stop living in a bubble. It just won't fly anymore. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 19, 2004 ### [Being an INETA speaker?](https://osherove.com/blog/2004/7/19/being-an-ineta-speaker.html) - Jul 18, 2004 ### [Israeli Geek Dinner Tomorrow - at what time?](https://osherove.com/blog/2004/7/18/israeli-geek-dinner-tomorrow-at-what-time.html) - Jul 9, 2004 ### [What a typical user group looks like](https://osherove.com/blog/2004/7/9/what-a-typical-user-group-looks-like.html) - Jul 6, 2004 ### [MVP](https://osherove.com/blog/2004/7/6/mvp.html) --- title: "A simple way to unit-test internal classes" url: "https://osherove.com/blog/2004/7/10/a-simple-way-to-unit-test-internal-classes.md" canonical: "https://osherove.com/blog/2004/7/10/a-simple-way-to-unit-test-internal-classes.html" published: "2004-07-10T14:34:00" updated: "2004-07-10T14:34:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Jamie Cansdale (Of Nunit Add-in fame)has been cool enough to share with me a quick way that allows you to test internal classes in your project without referencing the Nunit framework DLL. it's pretty simple, actually.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A simple way to unit-test internal classes By Roy Osherove July 10, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 10, 2004; technical details may be outdated. [Jamie Cansdale](http://weblogs.asp.net/nunitaddin) (Of Nunit Add-in fame)has been cool enough to share with me a quick way that allows you to test internal classes in your project without referencing the Nunit framework DLL. it's pretty simple, actually. He simply put the whole NUnit framework attributes and assert class in one cs file. [Download the file here](http://dev.magen.com/Agile/Code/NUnitFramework.cs.zip). that's pretty elegant and I'll have to remember that the next time I need this technique. There are two other ways I can think of to test internal classes: 1. Use tests inside the project and enclose them inside conditional compilation arguments 2. Use a separate test project and “link“ to the actual source files you want to use 1. Right click on project 2. Add Existing item 3. in the browse dialog, highlight the file in the tested project 4. open the small menu on the 'Open“ button 5. select “Link file“ 6. Note: this only works for classes that have dependencies that are shared between the test and the tested project so it might get a bit too much work if you have large dependencies in your class files. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 19, 2004 ### [Database Unit Testing issues and solutions: Rollback And RestoreDatabase abilities](https://osherove.com/blog/2004/7/19/database-unit-testing-issues-and-solutions-rollback-and-rest.html) - Jul 11, 2004 ### [Introducing: NUnitX and the Rollback attribute - Seamless database rollback with Nunit](https://osherove.com/blog/2004/7/11/introducing-nunitx-and-the-rollback-attribute-seamless-datab.html) - Jul 2, 2004 ### [2nd Test Driven Development Workshop](https://osherove.com/blog/2004/7/2/2nd-test-driven-development-workshop.html) - Jun 22, 2004 ### [Community reminders: TDD workshop & Blogger Dinner](https://osherove.com/blog/2004/6/22/community-reminders-tdd-workshop-amp-blogger-dinner.html) --- title: "My feed reader of choice - RSS bandit" url: "https://osherove.com/blog/2004/7/9/my-feed-reader-of-choice-rss-bandit.md" canonical: "https://osherove.com/blog/2004/7/9/my-feed-reader-of-choice-rss-bandit.html" published: "2004-07-09T10:23:00" updated: "2004-07-09T10:23:00" tags: ["Blogging"] author: "Roy Osherove" description: "Since I was asked this somewhere - I use RSS Bandit as my feed reader. Nice,cool and free." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My feed reader of choice - RSS bandit By Roy Osherove July 9, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 9, 2004; technical details may be outdated. Since I was asked this somewhere - I use [RSS Bandit](http://www.rssbandit.org/) as my feed reader. Nice,cool and free. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 19, 2004 ### [Blogger/geek dinner is canceled for today](https://osherove.com/blog/2004/7/19/bloggergeek-dinner-is-canceled-for-today.html) - Jul 13, 2004 ### [Setting my priorities straight](https://osherove.com/blog/2004/7/13/setting-my-priorities-straight.html) - Jul 2, 2004 ### [More Israeli Bloggers](https://osherove.com/blog/2004/7/2/more-israeli-bloggers.html) - Jun 30, 2004 ### [2nd Israeli Blogger\\Geek Dinner - a success](https://osherove.com/blog/2004/6/30/2nd-israeli-bloggergeek-dinner-a-success.html) --- title: "What a typical user group looks like" url: "https://osherove.com/blog/2004/7/9/what-a-typical-user-group-looks-like.md" canonical: "https://osherove.com/blog/2004/7/9/what-a-typical-user-group-looks-like.html" published: "2004-07-09T09:49:00" updated: "2004-07-09T09:49:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I wanted to share with you what a typical user group meeting looks like. I know that when I decided I wanted to go to a user group meeting I was pretty scared to go on my own. Go figure. My first user group meeting was…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What a typical user group looks like By Roy Osherove July 9, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 9, 2004; technical details may be outdated. I wanted to share with you what a typical user group meeting looks like. I know that when I decided I wanted to go to a user group meeting I was pretty scared to go on my own. Go figure. My first user group meeting was the [VB.Net user group](http://www.renaissance.co.il/ivbug), run by Jackie Goldstein.  This photo is the a meeting of this same user group (you can see Jackie looking at the camera's direction on the lower right corner). In the meeting the talk was about SQL reporting services and the presenter was Shai-bar lev. As you can see people are asking, taking notes and generally having a good time while learning something valuable. Can you beat that? the second photo is what usually happens after a user group meting: people stick around And geek out. here you can see [Yosi](http://blogs.msdn.com/yosit), [Udi](http://udidahan.weblogs.us/) and other folks talking about really geeky stuff. always fun and entertaining. I wanted to encourage those of my readers that have never gone to a user group because they were shy or some other reason, to just go ahead a do it. - It's a great place to meet people and hear interesting Q&A on stuff that matters to you and your job. - Networking, networking, networking - 60-40 rule here says that 40% of the lectures at any user group will probably be less useful to you that you would have liked (and you can never know in advance if they will because it depends a lot on the presenter). on the 60% that are useful - it's usually really interesting and a great eye-opener. Therefore I usually try to attend as many user group meetings as I possibly can because when I find that one meeting that really helps - it repays big time for all the meetings that did not. - Stop living in a bubble. If you only do one thing in your job a user group is the place to go to discover new and exciting stuff. live a little. Learn a little. - Great for your resume: a person who goes to user group meetings is always a step ahead than a person that does not. - Get involved with community: you get a nice sense of camaraderie when you go to meetings. People have the same problems that you do and the same questions and fears. It's great to feel a part of something. If you decide to go a to a user group - look me up and say hi. I'd love to chat a little. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 18, 2004 ### [Israeli Geek Dinner Tomorrow - at what time?](https://osherove.com/blog/2004/7/18/israeli-geek-dinner-tomorrow-at-what-time.html) - Jul 10, 2004 ### [Microsoft is losing the community battle - against itself](https://osherove.com/blog/2004/7/10/microsoft-is-losing-the-community-battle-against-itself.html) - Jul 6, 2004 ### [MVP](https://osherove.com/blog/2004/7/6/mvp.html) - Jun 30, 2004 ### [The Broken - somewhat interesting "hacker" video show](https://osherove.com/blog/2004/6/30/the-broken-somewhat-interesting-quothackerquot-video-show.html) --- title: "Announcements: Geek Dinner, TDD workshops and upcoming lectures schedule" url: "https://osherove.com/blog/2004/7/8/announcements-geek-dinner-tdd-workshops-and-upcoming-lecture.md" canonical: "https://osherove.com/blog/2004/7/8/announcements-geek-dinner-tdd-workshops-and-upcoming-lecture.html" published: "2004-07-08T15:31:00" updated: "2004-07-08T15:31:00" tags: [] author: "Roy Osherove" description: "Yes I know. been *real* busy. Hope to get back at you soon soon. Meanwhile, some community stuff I've been wanting to do and some stuff I've been asked to do. Also - I wanted to say thanks for the large amount of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Announcements: Geek Dinner, TDD workshops and upcoming lectures schedule By Roy Osherove July 8, 2004 **Historical article** · Originally published July 8, 2004; technical details may be outdated. Yes I know. been \*real\* busy. Hope to get back at you soon soon. Meanwhile, some community stuff I've been wanting to do and some stuff I've been asked to do. Also - I wanted to say thanks for the large amount of congratulations I got on my MVP post. It means a lot to me. SO, here goes: You can [download the presentation slides](http://dev.magen.com/Agile/Powerpoint%20Slides/XPAndAgile.ppt) from the last “XP and Agile concepts“ talk I did. Mind you: this is all in **Israel**. Announcing: [Geek Dinner codename “Memory Leak”](http://dev.magen.com/Geeks/Lists/Events/DispForm.aspx?ID=2) this month - the 19th Announcing: [TDD Workshop (beginners):](http://dev.magen.com/Agile/Lists/Events/DispForm.aspx?ID=5) this month - the 28th  Announcing: [TDD Workshop(Advanced):](http://dev.magen.com/Agile/Lists/Events/DispForm.aspx?ID=6) next month - the 8th (See the full schedule here: [http://dev.magen.com/Agile/](http://dev.magen.com/Agile/)) Upcoming lectures (more specific information will be posted as the dates approach): ADO.Net Best Practices and advanced Concepts  (XP talk is being rescheduled) **When**: 21st of this month 17:30 **Where**: [C# user group](http://www.comconix.com/ivcug/) **What**: ADO.Net allows you to do many different things in many different ways.In this talk we'll discuss some of the most recommended ways of doing things, and things you should \***not**\* do as well. Among the topics: - Data Application Block – features, benefits and usage - Concurrency Management - handling dataset conflicts - Performance tips and tricks - Error Handling And a few more important and interesting things you should know when going deep into your Data Access Layer.  **Required knowledge**: ADO.Net basic usage and working experience  **Regular Expressions Deep Dive** **When:** 4th of august, 17:30 **Where**: [VB.Net user group](http://www.renaissance.co.il/ivbug/) What: 3 hours of working with Regex and showing some absolutely cool stuff you can do with them. Mind opener - guaranteed. Including Regex Groups, replaces and introducing **The Regulator** behind the scenes. --- title: "User group meeting today: Intro to SQL reporting services" url: "https://osherove.com/blog/2004/7/7/user-group-meeting-today-intro-to-sql-reporting-services.md" canonical: "https://osherove.com/blog/2004/7/7/user-group-meeting-today-intro-to-sql-reporting-services.html" published: "2004-07-07T04:56:00" updated: "2004-07-07T04:56:00" tags: [] author: "Roy Osherove" description: "See you there ? This month we will focus on the SQL Server 2000 Reporting Services . This is a relatively recent addition to the SQL Server family and is available for free to licensed owners of SQL Server 2000. Our…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # User group meeting today: Intro to SQL reporting services By Roy Osherove July 7, 2004 **Historical article** · Originally published July 7, 2004; technical details may be outdated. [See you there](http://www.renaissance.co.il/ivbug/)? This month we will focus on the **SQL Server 2000 Reporting Services**.  This is a relatively recent addition to the SQL Server family and is available for free to licensed owners of SQL Server 2000. Our presenter will be Shai Bar-Lev, who is the R&D manager for OOPS4.net.  There is alot to cover on this topic, so Shai will be filling both presentation slots.  I also hope we can generate some discussion as to how this product compares to other reporting tools, such as Crystal Reports.  As always, we'll have our special "Hatzilu" session at our meeting. So please come prepared to discuss your most frustrating problems (or at least some of them !) and to share some of your own techniques and solutions that you have found useful in your applications. 17:30 - 18:00   Assembly 18:00 - 18:05   Introduction and miscellaneous 18:05 - 19:15    **“SQL Server 2000 Reporting Services – Part 1”**                        Shai Bar-Lev, OOPS4.net 19:15 - 19:30    Break 19:30 – 19:45   "Hatzilu !"                         Open session, with questions and answers/ideas from everyone 19:45 - 20:45   **“SQL Server 2000 Reporting Services – Part 2”**                        Shai Bar-Lev, OOPS4.net  \[[the](http://www.renaissance.co.il/ivbug/) [IVBUG](http://www.renaissance.co.il/ivbug) website\] --- title: "MVP" url: "https://osherove.com/blog/2004/7/6/mvp.md" canonical: "https://osherove.com/blog/2004/7/6/mvp.html" published: "2004-07-06T01:25:00" updated: "2004-07-06T01:25:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'll try not to get too corny here. I promise. Yesterday's lecture at the .Net architects group about XP and agile methods went quite well.. to say the least. I had quite a surprise waiting for me when I started. I was…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MVP By Roy Osherove July 6, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 6, 2004; technical details may be outdated. I'll try not to get too corny here. I promise. Yesterday's lecture at the .Net architects group about XP and agile methods went quite well.. to say the least. I had quite a surprise waiting for me when I started. I was just presenting myself at the first slide in front of about 60 people, when all of a sudden [Yosi Taguri](http://blogs.msdn.com/yosit) jumps on stage shouting “_You forgot something_!”. He then continues to publicly ESc my presentation slide and change the slide in powerpoint (everyone is still watching) to say “Roy Osherove, MVP” . This was followed by about 5 minutes where Yosi explained to the room what [MVP](http://mvp.support.microsoft.com/) is all about and how they actually blocked email that should have gotten to me earlier just so that he could make this into a surprise. Well, Yosi, it worked :) I wasn't going to post about this until I got a confirmation email but since Udi has been kind enough to [tell the world](http://udidahan.weblogs.us/archives/022337.html) already I guess I have no choice. So, yes. I'm going to be an MVP. I'm honored to be part of a group which holds in it some of the most amazing people I know (even if only by the blogsphere). So, thanks. I appreciated being noticed and appreciated. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 10, 2004 ### [Microsoft is losing the community battle - against itself](https://osherove.com/blog/2004/7/10/microsoft-is-losing-the-community-battle-against-itself.html) - Jul 9, 2004 ### [What a typical user group looks like](https://osherove.com/blog/2004/7/9/what-a-typical-user-group-looks-like.html) - Jun 30, 2004 ### [The Broken - somewhat interesting "hacker" video show](https://osherove.com/blog/2004/6/30/the-broken-somewhat-interesting-quothackerquot-video-show.html) - Jun 21, 2004 ### [Israeli Geek Dinners have their own site now](https://osherove.com/blog/2004/6/21/israeli-geek-dinners-have-their-own-site-now.html) --- title: "2nd Test Driven Development Workshop" url: "https://osherove.com/blog/2004/7/2/2nd-test-driven-development-workshop.md" canonical: "https://osherove.com/blog/2004/7/2/2nd-test-driven-development-workshop.html" published: "2004-07-02T05:06:00" updated: "2004-07-02T05:06:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Last week's Test Driven Development workshop was just lovely. Although it was \"intimate\" - only 4 people actually showed up, it allowed for a more face-to-face conversation and attention. The whole idea behind this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 2nd Test Driven Development Workshop By Roy Osherove July 2, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published July 2, 2004; technical details may be outdated. Last week's [Test Driven Development workshop](http://dev.magen.com/Agile) was just lovely. Although it was "intimate" - only 4 people actually showed up, it allowed for a more face-to-face conversation and attention. The whole idea behind this workshop is to let people experience TDD with an instructor - someone who points out the pitfalls and common misconceptions, someone who is there to say "No, you don't have a failing test yet". That was one of the things I wished I had when just learning this stuff out. In the pictures you can see the folks are actually doing the unit tests, and are experiencing pair programming as well. Lots of smiling and joking was going on - part of what happens when you work with people who really want to learn. In the pictures you can see [Memi Lavi](http://weblogs.asp.net/memi/), [Udi Dahan](http://udidahan.weblogs.us/), [Omer Van Kloeten](http://weblogs.asp.net/OKloeten/) (in uniform) and Or Meirov(no blog... yet!) - a "new" dude who happened to read my blog one day and decided he wanted to come over. I urge you all to do exactly the same. After the workshop ended we had some great discussion about how does TDD and XP in general fit into service-oriented companies (fixed price projects) and what steps would be needed in order to make the development more open to this kind of change. Some stuff was brought up that I didn't even consider, especially by Memi, and for that I'm thankful. One of the coolest things about these workshops is that you learn just as much as you teach. I learned a lot about how people approach TDD and development, when Pair programming may \*not\* work and the role of the business side of things in introducing XP to the company. But I still feel like we're just at the beginning of discovering this methodologies and all its uses. I didn't start out learning TDD. when I was a VB programmer (always will be, semper-phi!) I discovered this little thing called the VBUnit framework. It's the VB6 equivalent of NUnit, only because VB6 does not support inheritance or attributes you are left to use Interfaces to implement your tests and test suites. I have to admit it took me a while to "get it". And when I did implement unit tests in my VB6 code - I did it all wrong. I did it in the wrong project, I ran the tests using a custom made executable because I didn't realize there was a test runner you could use. Lots of stuff. But Only later, when I read more about NUnit I realized how far away from the "vision" of unit testing I was. Why? There was no guidance. With NUnit - people need this guidance just as much. It's fun to be able to provide this and watching the looks on people's faces when they hit a breaking change for in the workshop - and suddenly the NUnit Progress bar turns red. [I'll be speaking this Monday](http://weblogs.asp.net/rosherove/archive/2004/06/20/160573.aspx) at the .Net architects user group on the basic concepts behind XP and TDD. See you there. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 11, 2004 ### [Introducing: NUnitX and the Rollback attribute - Seamless database rollback with Nunit](https://osherove.com/blog/2004/7/11/introducing-nunitx-and-the-rollback-attribute-seamless-datab.html) - Jul 10, 2004 ### [A simple way to unit-test internal classes](https://osherove.com/blog/2004/7/10/a-simple-way-to-unit-test-internal-classes.html) - Jun 22, 2004 ### [Community reminders: TDD workshop & Blogger Dinner](https://osherove.com/blog/2004/6/22/community-reminders-tdd-workshop-amp-blogger-dinner.html) - Jun 20, 2004 ### [Watch me speak: eXtreme Programming and Agile concepts, at the .Net Architects user group this month](https://osherove.com/blog/2004/6/20/watch-me-speak-extreme-programming-and-agile-concepts-at-the.html) --- title: "Add-in contest submission phase is now officially over" url: "https://osherove.com/blog/2004/7/2/add-in-contest-submission-phase-is-now-officially-over.md" canonical: "https://osherove.com/blog/2004/7/2/add-in-contest-submission-phase-is-now-officially-over.html" published: "2004-07-02T04:23:00" updated: "2004-07-02T04:23:00" tags: ["Addin Contest"] author: "Roy Osherove" description: "The Add-in contest submission phase is now officially over. Over the next few weeks I'll gather up the 20 or so submissions that fit the criteria )those who did't were notified in advance) and put them up on a site.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Add-in contest submission phase is now officially over By Roy Osherove July 2, 2004 In [Addin Contest](https://osherove.com/blog/category/addin-contest) **Historical article** · Originally published July 2, 2004; technical details may be outdated. The [Add-in contest submission phase](http://weblogs.asp.net/rosherove/archive/2004/04/21/117663.aspx) is now **officially** over. Over the next few weeks I'll gather up the 20 or so submissions that fit the criteria )those who did't were notified in advance) and put them up on a site. I'll also hand them out for our ditinguished judges to take a look. Winners will be notified by the end of July. Some cool stuff was submitted, I have to say. ## More in Addin Contest [All posts in Addin Contest](https://osherove.com/blog/category/addin-contest) - Aug 10, 2004 ### [Testing Blogs at Microsoft, and Addin contest news](https://osherove.com/blog/2004/8/10/testing-blogs-at-microsoft-and-addin-contest-news.html) - Jul 18, 2004 ### [Announcing:Coolest Add-in Contest - Entries available for download](https://osherove.com/blog/2004/7/18/announcingcoolest-add-in-contest-entries-available-for-downl.html) - Jun 17, 2004 ### [Add-in contest ends this month!](https://osherove.com/blog/2004/6/17/add-in-contest-ends-this-month.html) - May 21, 2004 ### [T- (11+30) + explanation + apology](https://osherove.com/blog/2004/5/21/t-1130-explanation-apology.html) --- title: "More Israeli Bloggers" url: "https://osherove.com/blog/2004/7/2/more-israeli-bloggers.md" canonical: "https://osherove.com/blog/2004/7/2/more-israeli-bloggers.html" published: "2004-07-02T03:31:00" updated: "2004-07-02T03:31:00" tags: ["Blogging"] author: "Roy Osherove" description: "While I was gone, a few new Israeli Bloggers have joined the blogsphere: Eliav Gnessin Aelij Arbel Erik Rozman (MVP) Looks like our plot to take over the world is going well, don't you think? ;)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More Israeli Bloggers By Roy Osherove July 2, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 2, 2004; technical details may be outdated. While I was gone, a few new Israeli Bloggers have joined the blogsphere: - [Eliav Gnessin](http://www.dotnetjunkies.com/weblog/sober/) - [Aelij Arbel](http://arbel.net/blog)  - [Erik Rozman](http://msmvp.org/erik.htm) (MVP) Looks like our plot to take over the world is going well, don't you think? ;) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 13, 2004 ### [Setting my priorities straight](https://osherove.com/blog/2004/7/13/setting-my-priorities-straight.html) - Jul 9, 2004 ### [My feed reader of choice - RSS bandit](https://osherove.com/blog/2004/7/9/my-feed-reader-of-choice-rss-bandit.html) - Jun 30, 2004 ### [2nd Israeli Blogger\\Geek Dinner - a success](https://osherove.com/blog/2004/6/30/2nd-israeli-bloggergeek-dinner-a-success.html) - Jun 22, 2004 ### [Community reminders: TDD workshop & Blogger Dinner](https://osherove.com/blog/2004/6/22/community-reminders-tdd-workshop-amp-blogger-dinner.html) --- title: "The Broken - somewhat interesting \"hacker\" video show" url: "https://osherove.com/blog/2004/6/30/the-broken-somewhat-interesting-quothackerquot-video-show.md" canonical: "https://osherove.com/blog/2004/6/30/the-broken-somewhat-interesting-quothackerquot-video-show.html" published: "2004-06-30T17:52:00" updated: "2004-06-30T17:52:00" tags: ["Off Topic"] author: "Roy Osherove" description: "A friend pointed me to http://www.thebroken.org/ . two dudes - doing a video show, and they talk about hacking, social engineering and interview Kevin Mitnick. In episode one the demonstrate how they do WarDriving and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Broken - somewhat interesting "hacker" video show By Roy Osherove June 30, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 30, 2004; technical details may be outdated. A friend pointed me to [http://www.thebroken.org/](http://www.thebroken.org/) .  two dudes - doing a video show, and they talk about hacking, social engineering and interview Kevin Mitnick. In episode one the demonstrate how they do WarDriving and what software they use to hack into (the not so prevalent) encrypted wireless networks they come in touch with. It's interesting. And Funny. Be sure to check out “Hacking with Ramzi” somewhere in the middle of the first video. Awesome :) borderline illegal, in a way, but still very interesting. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 9, 2004 ### [What a typical user group looks like](https://osherove.com/blog/2004/7/9/what-a-typical-user-group-looks-like.html) - Jul 6, 2004 ### [MVP](https://osherove.com/blog/2004/7/6/mvp.html) - Jun 21, 2004 ### [Israeli Geek Dinners have their own site now](https://osherove.com/blog/2004/6/21/israeli-geek-dinners-have-their-own-site-now.html) - Jun 20, 2004 ### [Reminder: Israeli Blogger\\Geek Dinner this thursday evening](https://osherove.com/blog/2004/6/20/reminder-israeli-bloggergeek-dinner-this-thursday-evening.html) --- title: "2nd Israeli Blogger\\Geek Dinner - a success" url: "https://osherove.com/blog/2004/6/30/2nd-israeli-bloggergeek-dinner-a-success.md" canonical: "https://osherove.com/blog/2004/6/30/2nd-israeli-bloggergeek-dinner-a-success.html" published: "2004-06-30T17:33:00" updated: "2004-06-30T17:33:00" tags: ["Blogging"] author: "Roy Osherove" description: "It's been a while, I know. but I've been busy with stuff that actually *pays* :) The 2nd Ever Geek/Blogger Dinner was a success. In attendence were : Omer Van Kloeten - The diligent young blogger who helped in arranging…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 2nd Israeli Blogger\\Geek Dinner - a success By Roy Osherove June 30, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 30, 2004; technical details may be outdated. It's been a while, I know. but I've been busy with stuff that actually \*pays\* :) The 2nd Ever Geek/Blogger Dinner was a success. In attendence were : - [Omer Van Kloeten](http://weblogs.asp.net/OKloeten/) \- The diligent young blogger who helped in arranging the meet up place, making calls and reserving places. Thanks Omer! - [Ido Samuelson](http://dotnetjunkies.com/WebLog/principal/) - [Avner Kashtan](http://weblogs.asp.net/avnerk) - [Ohad Israeli](http://weblogs.asp.net/israelio) (which has been busy posting some great content on his blog!) - Shmulik Primes For the geeks who cancelled at the last momet - boohoo. You lost some great ultra-geek conversation. Plus a great dinner :) I'm thinking this should be a monthly thing. What do \*you\* think? \[Update - I put Udi and Memi in there even though they were not there. Guess I'm just tired. And I got mixed up with the TDD workshop which I'll blog about later..\] ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 9, 2004 ### [My feed reader of choice - RSS bandit](https://osherove.com/blog/2004/7/9/my-feed-reader-of-choice-rss-bandit.html) - Jul 2, 2004 ### [More Israeli Bloggers](https://osherove.com/blog/2004/7/2/more-israeli-bloggers.html) - Jun 22, 2004 ### [Community reminders: TDD workshop & Blogger Dinner](https://osherove.com/blog/2004/6/22/community-reminders-tdd-workshop-amp-blogger-dinner.html) - Jun 17, 2004 ### [Lots of new Israeli .Net Bloggers around!](https://osherove.com/blog/2004/6/17/lots-of-new-israeli-net-bloggers-around.html) --- title: "Community reminders: TDD workshop & Blogger Dinner" url: "https://osherove.com/blog/2004/6/22/community-reminders-tdd-workshop-amp-blogger-dinner.md" canonical: "https://osherove.com/blog/2004/6/22/community-reminders-tdd-workshop-amp-blogger-dinner.html" published: "2004-06-22T14:21:00" updated: "2004-06-22T14:21:00" tags: ["Agile Related", "Blogging"] author: "Roy Osherove" description: "3 open seats still left at the TDD workshop I'm holding. know anyone that wants to join? http://dev.magen.com/agile Also - Don't forget: Blogger Dinner this thursday . let me know if your'e coming" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Community reminders: TDD workshop & Blogger Dinner By Roy Osherove June 22, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related), [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 22, 2004; technical details may be outdated. 3 open seats still left at the TDD workshop I'm holding. know anyone that wants to join? [http://dev.magen.com/agile](http://dev.magen.com/agile) Also - Don't forget: [Blogger Dinner this thursday](http://dev.magen.com/geeks). let me know if your'e coming ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jul 10, 2004 ### [A simple way to unit-test internal classes](https://osherove.com/blog/2004/7/10/a-simple-way-to-unit-test-internal-classes.html) - Jul 2, 2004 ### [2nd Test Driven Development Workshop](https://osherove.com/blog/2004/7/2/2nd-test-driven-development-workshop.html) - Jun 20, 2004 ### [Watch me speak: eXtreme Programming and Agile concepts, at the .Net Architects user group this month](https://osherove.com/blog/2004/6/20/watch-me-speak-extreme-programming-and-agile-concepts-at-the.html) - Jun 19, 2004 ### [\[Article\] Simplified Database Unit testing using Enterprise Services](https://osherove.com/blog/2004/6/19/article-simplified-database-unit-testing-using-enterprise-se.html) --- title: "Microsoft Research introduces RSS Feeds, *finally*" url: "https://osherove.com/blog/2004/6/21/microsoft-research-introduces-rss-feeds-finally.md" canonical: "https://osherove.com/blog/2004/6/21/microsoft-research-introduces-rss-feeds-finally.html" published: "2004-06-21T12:52:00" updated: "2004-06-21T12:52:00" tags: ["Cool sites"] author: "Roy Osherove" description: "The Microsoft research site has been redesigned. Streamlined. I like it. But, that's not what's important here. Guess what these are? News and Headlines Downloads Publications Yep. Subscribed." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft Research introduces RSS Feeds, \*finally\* By Roy Osherove June 21, 2004 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published June 21, 2004; technical details may be outdated. The [Microsoft research](http://research.microsoft.com/) site has been redesigned. Streamlined. I like it. But, that's not what's important here. Guess what _these_ are?
News and Headlines
Downloads
Publications
Yep. Subscribed. ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Aug 24, 2004 ### [Developers.org.il is online with a face lift](https://osherove.com/blog/2004/8/24/developersorgil-is-online-with-a-face-lift.html) - Aug 10, 2004 ### [What works and what does not work on Virtual PC 2004](https://osherove.com/blog/2004/8/10/what-works-and-what-does-not-work-on-virtual-pc-2004.html) - Feb 25, 2004 ### [Thanks for the System.Web.Mail FAQ, Dave](https://osherove.com/blog/2004/2/25/thanks-for-the-systemwebmail-faq-dave.html) - Feb 6, 2004 ### [The Best Unit Test framework in town](https://osherove.com/blog/2004/2/6/the-best-unit-test-framework-in-town.html) --- title: "Israeli Geek Dinners have their own site now" url: "https://osherove.com/blog/2004/6/21/israeli-geek-dinners-have-their-own-site-now.md" canonical: "https://osherove.com/blog/2004/6/21/israeli-geek-dinners-have-their-own-site-now.html" published: "2004-06-21T12:38:00" updated: "2004-06-21T12:38:00" tags: ["Off Topic"] author: "Roy Osherove" description: "GeekDinner.com was already takesn, but still... It gave me the idea to do a Geek Dinner site here. So, I'm proud to host the first Blogger\\Geek Dinner over at : http://dev.magen.com/Geeks This should be the site for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israeli Geek Dinners have their own site now By Roy Osherove June 21, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 21, 2004; technical details may be outdated. GeekDinner.com was already takesn, but still... It gave me the idea to do a Geek Dinner site here. So, I'm proud to host the first Blogger\\Geek Dinner over at : [http://dev.magen.com/Geeks](http://dev.magen.com/Geeks)  This should be the site for updates on the whereabouts of the next geek\\dinner. Hope you find helpful. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 6, 2004 ### [MVP](https://osherove.com/blog/2004/7/6/mvp.html) - Jun 30, 2004 ### [The Broken - somewhat interesting "hacker" video show](https://osherove.com/blog/2004/6/30/the-broken-somewhat-interesting-quothackerquot-video-show.html) - Jun 20, 2004 ### [Reminder: Israeli Blogger\\Geek Dinner this thursday evening](https://osherove.com/blog/2004/6/20/reminder-israeli-bloggergeek-dinner-this-thursday-evening.html) - Jun 18, 2004 ### [Israelis at Redmond](https://osherove.com/blog/2004/6/18/israelis-at-redmond.html) --- title: "Reminder: Israeli Blogger\\Geek Dinner this thursday evening" url: "https://osherove.com/blog/2004/6/20/reminder-israeli-bloggergeek-dinner-this-thursday-evening.md" canonical: "https://osherove.com/blog/2004/6/20/reminder-israeli-bloggergeek-dinner-this-thursday-evening.html" published: "2004-06-20T16:56:00" updated: "2004-06-20T16:56:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is your friendly reminder: Geek Dinner this thursday, 21:00, Tel Aviv: El-Gaucho (kosher) Sounds ok to you?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Reminder: Israeli Blogger\\Geek Dinner this thursday evening By Roy Osherove June 20, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 20, 2004; technical details may be outdated. This is your friendly reminder: Geek Dinner this thursday, 21:00, Tel Aviv: [El-Gaucho](http://www.rest.co.il/RestsSites/RestCard.asp?RID=3077) (kosher) Sounds ok to you? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 30, 2004 ### [The Broken - somewhat interesting "hacker" video show](https://osherove.com/blog/2004/6/30/the-broken-somewhat-interesting-quothackerquot-video-show.html) - Jun 21, 2004 ### [Israeli Geek Dinners have their own site now](https://osherove.com/blog/2004/6/21/israeli-geek-dinners-have-their-own-site-now.html) - Jun 18, 2004 ### [Israelis at Redmond](https://osherove.com/blog/2004/6/18/israelis-at-redmond.html) - Jun 18, 2004 ### [Some GMail tips](https://osherove.com/blog/2004/6/18/some-gmail-tips.html) --- title: "Watch me speak: eXtreme Programming and Agile concepts, at the .Net Architects user group this month" url: "https://osherove.com/blog/2004/6/20/watch-me-speak-extreme-programming-and-agile-concepts-at-the.md" canonical: "https://osherove.com/blog/2004/6/20/watch-me-speak-extreme-programming-and-agile-concepts-at-the.html" published: "2004-06-20T14:30:00" updated: "2004-06-20T14:30:00" tags: [".Net Original", "Agile Related"] author: "Roy Osherove" description: "Mark your calendars, folks. Greetings Israeli .NET architect! You are welcome to attend our next meeting to be held on July 5 th . Please note that this is the June meeting and has been postponed due to coordination…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Watch me speak: eXtreme Programming and Agile concepts, at the .Net Architects user group this month By Roy Osherove June 20, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 20, 2004; technical details may be outdated. **Mark your calendars, folks.** Greetings Israeli .NET architect!  You are welcome to attend our next meeting to be held on **July 5th**. Please note that this is the June meeting and has been postponed due to coordination problems. This month, we will discuss **eXtreme programming and agile concepts**. This unusual, yes interesting topic is gaining momentum in the industry. This talk will introduce the basic concepts behind the “Extreme Programming” development methodology, and the rationales behind it. We will also talk about some of the more “controversial” aspects of it – Test Driven Development and Pair Programming, with anecdotes from real world experience with these concepts. Besides introduction to these concepts we will also cover some of the methods used to teach development teams these practices, and what it takes from both the technical side and the managerial, political side of things. Get ready to open your minds - It’s gonna get bumpy!  Details summary: Date: **July 5th, 2004** (5/7/2004) Time: **17:30 – 20:00** Location: **HP offices, 9 Daphna St, Kiryat Etgarim (northern industrial area), Ra’anana**  (see http://www.microsoft.com/israel/dev/netsa.asp for location details) Topic: **eXtreme programming and agile concepts** **Agenda:** **17:30 – 17:45** – Assembly **17:45 – 18:45** – eXtreme programming and agile concepts – Roy Osherove – Senior Consultant - Magen Software Enginnering **18:45 – 19:00** – Break **19:00 – 20:00** – eXtreme programming and agile concepts – Roy Osherove – Senior Consultant - Magen Software Enginnering ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 18, 2004 ### [Announcing:Coolest Add-in Contest - Entries available for download](https://osherove.com/blog/2004/7/18/announcingcoolest-add-in-contest-entries-available-for-downl.html) - Jul 11, 2004 ### [Introducing: NUnitX and the Rollback attribute - Seamless database rollback with Nunit](https://osherove.com/blog/2004/7/11/introducing-nunitx-and-the-rollback-attribute-seamless-datab.html) - Jun 19, 2004 ### [\[Article\] Simplified Database Unit testing using Enterprise Services](https://osherove.com/blog/2004/6/19/article-simplified-database-unit-testing-using-enterprise-se.html) - Jun 16, 2004 ### [Implementing the BackgroundWorker component - today(source included)](https://osherove.com/blog/2004/6/16/implementing-the-backgroundworker-component-todaysource-incl.html) --- title: "[Article] Simplified Database Unit testing using Enterprise Services" url: "https://osherove.com/blog/2004/6/19/article-simplified-database-unit-testing-using-enterprise-se.md" canonical: "https://osherove.com/blog/2004/6/19/article-simplified-database-unit-testing-using-enterprise-se.html" published: "2004-06-19T16:59:00" updated: "2004-06-19T16:59:00" tags: [".Net Original", "Agile Related"] author: "Roy Osherove" description: "I was reading Test Driven Development in Microsoft .Net today(great book) - especially the chapter about doing database unit tests, and got this incredible idea in my head. I tested it on my home machine and it worked.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Article\] Simplified Database Unit testing using Enterprise Services By Roy Osherove June 19, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 19, 2004; technical details may be outdated. I was reading [Test Driven Development in Microsoft .Net](https://www.amazon.com/exec/obidos/ASIN/0735619484/iserializable-20) today(great book) - especially the chapter about doing database unit tests, and got this incredible idea in my head. I tested it on my home machine and it worked. I then checked with some trusted people to verify that I'm thinking correctly and after I got an OK I went ahead and wrote an article about it. This is the result - and I think it's going to change the way I do database testing in .Net in a fundamental way. It's been a while since I've written an article -it's fun to get back in the saddle :) [Simplified Database Unit testing using Enterprise Services](http://weblogs.asp.net/rosherove/articles/dbunittesting.aspx) **Summary:** _In this article I’ll show what problems we encounter today when we perform unit tests against database related components, and the various ways used to solve these problems. I’ll also show a new method to solve these problems, which is far easier and simpler than any of the others. At the end of this article you will have the tools necessary to do simple and easy unit tests against database related components without the need to write messy cleanup code after your tests._ ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 11, 2004 ### [Introducing: NUnitX and the Rollback attribute - Seamless database rollback with Nunit](https://osherove.com/blog/2004/7/11/introducing-nunitx-and-the-rollback-attribute-seamless-datab.html) - Jun 20, 2004 ### [Watch me speak: eXtreme Programming and Agile concepts, at the .Net Architects user group this month](https://osherove.com/blog/2004/6/20/watch-me-speak-extreme-programming-and-agile-concepts-at-the.html) - Jun 16, 2004 ### [Implementing the BackgroundWorker component - today(source included)](https://osherove.com/blog/2004/6/16/implementing-the-backgroundworker-component-todaysource-incl.html) - Jun 16, 2004 ### [Problem & Solution: Allow only one instance of any MDI child form in your MDI application](https://osherove.com/blog/2004/6/16/problem-amp-solution-allow-only-one-instance-of-any-mdi-chil.html) --- title: "Simplified Database Unit testing using Enterprise Services" url: "https://osherove.com/blog/2004/6/19/simplified-database-unit-testing-using-enterprise-services.md" canonical: "https://osherove.com/blog/2004/6/19/simplified-database-unit-testing-using-enterprise-services.html" published: "2004-06-19T16:51:00" updated: "2004-06-19T16:51:00" tags: ["Unit Testing"] author: "Roy Osherove" description: "By Roy Osherove Summary : In this article I’ll show what problems we encounter today when we perform unit tests against database related component, and the various ways used to solve these problems. I’ll also show a new…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Simplified Database Unit testing using Enterprise Services By Roy Osherove June 19, 2004 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published June 19, 2004; technical details may be outdated. ### _By Roy Osherove_ ### _Summary:_ _In this article I’ll show what problems we encounter today when we perform unit tests against database related component, and the various ways used to solve these problems. I’ll also show a new method to solve these problems, which is far easier and simpler than any of the others. At the end of this article you will have the tools necessary to do simple and easy unit tests against database related components without the need to write messy cleanup code after your tests._ **Update**: You will find more information on issues and solutions regarding this approach in the following article: [Issues and solutions for database unit testing with enterprise services](http://weblogs.asp.net/rosherove/archive/2004/07/20/187863.aspx). You may also find [XTUnit](http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx) helpful in this regard. ### Introduction Test Driven Development makes life easier. Unit tests are the lifeblood of a good Test Driven Development approach (and thus, are also the lifeblood of most of the agile methodologies out there such as XP, Scrum and others). Therefore it stands to reason that one should strive to create unit tests with the least amount of work and maintenance, which will in turn allow the developer to focus on the business problem at hand and the various design and algorithms needed to create a working product/component. For the past couple of years I’ve been struggling with Unit tests, That is, I’ve used them in major production projects and have seen the good and the bad that can come from a fully test Driven approach. I’ll let the “good” part be taken care of by the numerous other articles out there that talk about the benefits you get from Unit Tests and TDD, and will focus on one of the most problematic parts of Unit tests in a real world project – testing against the database. Testing Data Access layer components (DALs for short) is problematic in a number of ways. The number one reason f is this: Testing the various CRUD(Create, Retrieve, Update, Delete) operations on a single class can result in a massive amount of “garbage” data residing on the test database (You **are** using a test database, aren’t you?). This creates several problems: **1.**      **Problem: Garbage Data** Your database will eventually be full of junk data which you’ll need to get rid of sooner or later **2.**      **Problem: Affecting other tests** Worst, you may break one of the golden rules of unit testing:  **No test should be dependent on another test to perform correctly**. That is, you should be able to run your tests in _any_ order you choose or maybe just one of them at a time, and they should all still work. That means that every test needs to start with a known state on which it will act. For DALs this usually means a known state of records in the database. But guess what? When you test CRUD operations you’re actually changing the state of the database, so the next test that will be run that might depend on a specific record being there might fail because you just deleted that record in your current test. Anything can happen. **3.**      **Problem: starting tests from a known state** This is the other side of the previous problem: My test needs to have something in the database in order to perform correctly. For example – it needs a specific “category” entity in the Category tables in order to test inserting a child “Product” into the Products table. I need to make sure I insert these values into the database before I perform the test, but I also want to make sure that data is no longer there after I finish my test. ### Dealing with the problems So how do you deal with all this garbage data that’s making your database and tests unstable? Obviously, you need to make sure that before and after each test you leave the database in the same state that you got it in. That is – you need to “undo” your CRUD operations after testing them. Here are some of the most prevalent methods used to achieve this: 1. **Remove it manually** This is the most obvious and in simple cases one of the simplest to achieve. To do this, after each test (at the end of it) you execute the opposite actions than the ones you took in the test. For example, if you inserted a record in the test – you delete it at the end. Some problems and questions that arise from this approach: o       If I inserted the record into the Database using my objects’ Insert() method which I was testing – should I remove it from the database using the object’s Delete() method (which might have not been tested yet or may not even exist yet!) or should I do it against the database using direct calling of stored procedures or direct ADO.Net classes? o       If I choose to remove the records I inserted directly from the DB – this involves some serious amounts of extra code, residing in my test! And that code can have bugs as well. o       If I choose to use my object to delete and Insert as well - what do I test first? (Chicken and the egg kind of question..) o       I can also choose to remove all the garbage data at the end of all the tests run (_TestFixureTearDown_ method). But then I’d need lots of data and custom code and …. It’s just complicated. o       I can ignore all my garbage data and restore my database from backup before running all the unit tests. This might solve the problem partially but may still leave a few unit tests that mess with other test’s data. A big no-no. 2. **Use the transaction object in ADO.Net** In his very interesting and insightful book, “[Test Driven Development with Microsoft.Net](https://www.amazon.com/exec/obidos/ASIN/0735619484/iserializable-20)”,  [James Newkirk](http://blogs.msdn.com/jamesnewkirk/) addresses this same problem with a seemingly simply solution: Execute all your actions inside a transaction and rollback that transaction when you’re done with each test. This is a great solution and can definitely be implemented, but also has its problems: - You need to worry about components that manage their own inner transaction but still will need to use outside transactions initiated by the unit tests. - To workaround this problem James came up with an implementation of the Command pattern inside the unit tests (the book has a good example). However –even if it accomplishes the task nicely, after using this pattern we are left with more complicated unit tests that we should have, and all this just to be able to support rollback functionality. ### A simpler way The previous two approaches are the most used, and if you’ve used either of them you’d know that they are still hard to achieve with massive amount of custom work just to make the database data more reliable. When I was reading Jame’s book, in the chapter that discusses implementing transactions, I came across this little sentence (abbreviated): _“We want to achieve the same functionality as “RequiresTransaction” for each tested component, just like in COM+”_ This sentence triggered an interesting thought : why work so hard? Why not let COM+(Or, “Enterprise Services” in .Net) do the work of coordinating the transactions for us? Thus – I came up with another way of implementing database rollback functionality : ##### _Using Enterprise Services_ What we want is to be able to achieve the transaction functionality without all the overhead of writing our own custom Transaction manager class as prescribed in James’ book. How do we do that? With COM+ Enterprise services.  Here is the technical gist of the method: Our simple efforts start with this simple base class --- using System; using NUnit.Framework; using System.EnterpriseServices; namespace TransactionTesting { \[TestFixture\] \[Transaction(TransactionOption.Required)\] public class DatabaseFixture:ServicedComponent  { \[TearDown\]       public void TransactionTearDown()       {             if(ContextUtil.IsInTransaction)             {                   ContextUtil.SetAbort();             }       } } } --- Here are some important pointers about this class: - This class will be the base class that your DAL unit tests will inherit from. It allows for automatic transaction enlistment using the COM+ architecture through the EnterpriseServices namespace in .Net. for that end : - It inherits from _ServicedComponent_ - It has the following attributes on it: 1. \[TestFixture\] 2. \[Transaction(TransactionOption.Required)\] The second attribute specifies that whenever this class is instantiated or invoked, COM+ will automatically create a transaction context for it to run under, or enlist it into an existing transaction context. - It has a simple _TearDown_ method which will call _ContextUtil.SetAbort()._ This causes the following flow to occur: 1.      Before each test a transaction context is opened (or enlisted into an existing transaction) 2.      The test is performed 3.      TearDown is called and the transaction is rolled back thus We get the following benefits from this approach: 1.      it is dead simple and easy to implement 2.      You need **no code whatsoever** to roll back any database changes your components have made throughout the test. They will be rolled back automatically. 3.      You do not need to manage transaction by yourself. ##### _A few more settings and we’re done_ We’re still not finished but we’re awfully close to the finish line. All serviced components need to have strong names. This one is no exception. - Use the SN.exe tool with the –k option to create a key file. - In your test project open AssemblyInfo.cs and set the following attribute (add it if it is not there): \[assembly: AssemblyKeyFile(@"..\\..\\..\\test.snk")\]  Notice that I’ve put here a relative file path. This is the file I generated from sn.exe and it is located in the same directory as my .sln file. That way I can put this same attribute on all the other projects that need it as well. - Put a static _Version_ attribute in your test project: - Look for this in the AssemblyInfo.cs file :\[assembly: AssemblyVersion("1.0.\*")\] - And change it into \[assembly: AssemblyVersion("1.0.0")\] or whatever version you like. This step is important because by default when the attribute is at its default state Visual Stuido.Net will _automatically_ increment the assembly version with each build. That’s a bad practice to have on _any_ project, but when you’re dealing with a COM+  component (A _ServicedComponent_ is just that) you need to realize that for every separate version of the test assembly that you build, you will have created a **different** COM+ component in the COM+ catalogue of the testing machine. SO – after you’ve run the tests 50 times a day your COM+ catalog might turn out to look pretty scary and we don’t want that. Setting the version to a fixed version saves us this little headache. - Since your test assembly now has a **strong name**, _every_ assembly that it references must have a strong name as well. This is easily done: put this same attribute in each of the referenced projects set in your test project. That’s basically it. You’re done. Here is a simple example of a test fixture that derives from this class to achieve a perfectly transparent data rollback after each test. This class tests a simple class that does category insert and delete against the Northwind database: --- using System; using NUnit.Framework; using System.Data; using System.Data.SqlClient; using Microsoft.ApplicationBlocks.Data; using NorthwindDAL; namespace TransactionTesting {       public class CategoryTests:DatabaseFixture       {             string CONN = @"Server=localhost;Database=Northwind;Trusted\_Connection=True";             \[Test\]             public void Insert()             {                   CategoryManager mgr = new CategoryManager();                   int newID = mgr.Insert("Test category");                   VerifyRowExists(CONN, newID,true);             }             \[Test\]             public void Delete()             {                   CategoryManager mgr = new CategoryManager();                   int newID = mgr.Insert("Test category");                   bool result = mgr.Delete(newID);                   Assert.IsTrue(result);                   VerifyRowExists(CONN, newID,false);             }             private void VerifyRowExists(string connectionString, int existingRowID,bool shouldExist)             {                   string SELECT = "Select \* from Categories where categoryID=" + existingRowID.ToString();                   SqlDataReader dr = SqlHelper.ExecuteReader(connectionString,CommandType.Text,SELECT);                   Assert.AreEqual(shouldExist,dr.HasRows);                   dr.Close();             }       } } ---  As you can see there is no clean up code anywhere. That’s how simple this technique  really is. Just so you can see there are no tricks up my sleeve – here is the CategoryManager tested class (in VB.Net – just for the heck of it): --- Public Class CategoryManager     Private CONN As String = "Server=localhost;Database=Northwind;Trusted\_Connection=True"     Public Function Insert(ByVal CategoryName As String) As Integer         Dim sql As String = "Insert into categories (categoryName) values('" + CategoryName + "');Select scope\_identity()"         Dim result As Integer = NorthwindDAL.Data.SqlHelper.ExecuteScalar(CONN, CommandType.Text, sql)         Return result     End Function     Public Function Delete(ByVal id As Integer) As Boolean         Dim sql As String = "delete from categories where categoryID=" + id.ToString()         Dim result As Integer = \_             NorthwindDAL.Data.SqlHelper.ExecuteNonQuery(CONN, CommandType.Text, sql)         Return (result = 1)     End Function End Class --- No tricks, no hidden cards. The database actually gets updated, only the updates are rolled back. ### Conclusion In this article I’ve show a way to define simpler, more maintainable unit tests against the database access layer components using the powerful and easy to use services of COM+.  Hopefully using this technique database unit testing can become a much less painful experience, and thus allow more developers do more tests on their database code – and find those bugs as soon as possible. ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Aug 27, 2006 ### [Simple designs through Test Driven Development](https://osherove.com/blog/2006/8/27/simple-designs-through-test-driven-development.html) - Apr 3, 2005 ### [Naming standards for unit tests](https://osherove.com/blog/2005/4/3/naming-standards-for-unit-tests.html) - Sep 24, 2003 ### [Fun with Unit Tests – Testing abstract classes](https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.html) - Sep 21, 2003 ### [Introduction to Test-driven development with NUnit and the NUnit-Add-in](https://osherove.com/blog/2003/9/21/introduction-to-test-driven-development-with-nunit-and-the-n.html) --- title: "Israelis at Redmond" url: "https://osherove.com/blog/2004/6/18/israelis-at-redmond.md" canonical: "https://osherove.com/blog/2004/6/18/israelis-at-redmond.html" published: "2004-06-18T23:09:00" updated: "2004-06-18T23:09:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Looks like I've found another Ex-Israeli-turned-Redmond . I wonder just how many of those reside within Redmond. Why do I look for them? I think it's about Camaraderie in a way, or maybe just to see more proof and know…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israelis at Redmond By Roy Osherove June 18, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 18, 2004; technical details may be outdated. Looks like I've found [another Ex-Israeli-turned-Redmond](http://blogs.msdn.com/uril/archive/2004/06/11/153761.aspx) . I wonder just how many of those reside within Redmond. Why do I look for them? I think it's about Camaraderie in a way, or maybe just to see more proof and know that it's actually possible to get from here to there. Plus - it's great for networking! :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 21, 2004 ### [Israeli Geek Dinners have their own site now](https://osherove.com/blog/2004/6/21/israeli-geek-dinners-have-their-own-site-now.html) - Jun 20, 2004 ### [Reminder: Israeli Blogger\\Geek Dinner this thursday evening](https://osherove.com/blog/2004/6/20/reminder-israeli-bloggergeek-dinner-this-thursday-evening.html) - Jun 18, 2004 ### [Some GMail tips](https://osherove.com/blog/2004/6/18/some-gmail-tips.html) - Jun 17, 2004 ### [Meet me and Ohad at Computex?](https://osherove.com/blog/2004/6/17/meet-me-and-ohad-at-computex.html) --- title: "Some GMail tips" url: "https://osherove.com/blog/2004/6/18/some-gmail-tips.md" canonical: "https://osherove.com/blog/2004/6/18/some-gmail-tips.html" published: "2004-06-18T21:40:00" updated: "2004-06-18T21:40:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I don't normally suggest ways to “cheat” a system, but some people seem to really want some more extra GMail invites to share with stuff that matters to them. So here's the deal: You finally got invited to GMail. You…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some GMail tips By Roy Osherove June 18, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 18, 2004; technical details may be outdated. I don't normally suggest ways to “cheat” a system, but some people seem to really want some more extra GMail invites to [share with stuff that matters to them.](http://dotnetguy.techieswithcats.com/archives/004177.shtml) So here's the deal: You finally got invited to GMail. You invited two friends already, you have one invite left. You want to share it with a good cause but one is just not enough. What do you do? You invite **yourself**. You then create a new GMail account from that invitation. One day later you get 3 GMail invites available to you to share with good causes. Want some more ? invite yourself a few times more. Multiply the number of new accounts by three and see where that gets you. Obviously this should come with a warning: don't abuse the system for bad causes. But heck, this was so easy to figure out I just had to share, especially for those seeking out to do good. Until Google finishes the popularity contest or figure out this loophole - I guess it's ok to use it. Another GMail tip: You can't send in ZIP files. na-ah. However - you **can** send in RAR files. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 20, 2004 ### [Reminder: Israeli Blogger\\Geek Dinner this thursday evening](https://osherove.com/blog/2004/6/20/reminder-israeli-bloggergeek-dinner-this-thursday-evening.html) - Jun 18, 2004 ### [Israelis at Redmond](https://osherove.com/blog/2004/6/18/israelis-at-redmond.html) - Jun 17, 2004 ### [Meet me and Ohad at Computex?](https://osherove.com/blog/2004/6/17/meet-me-and-ohad-at-computex.html) - Jun 17, 2004 ### [\[ot\] Devil Duckie](https://osherove.com/blog/2004/6/17/ot-devil-duckie.html) --- title: "The Regulator featured on MSDN Magazine, and some version updates coming" url: "https://osherove.com/blog/2004/6/18/the-regulator-featured-on-msdn-magazine-and-some-version-upd.md" canonical: "https://osherove.com/blog/2004/6/18/the-regulator-featured-on-msdn-magazine-and-some-version-upd.html" published: "2004-06-18T21:00:00" updated: "2004-06-18T21:00:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "MSDN Magazine has an article by James Avery called : Ten Must-Have Tools Every Developer Should Download Now . I was very flattered to learn that my little adventure into regular expressions, The Regulator , is named in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator featured on MSDN Magazine, and some version updates coming By Roy Osherove June 18, 2004 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published June 18, 2004; technical details may be outdated. MSDN Magazine has an article by [James Avery](http://www.dotavery.com/blog) called : [Ten Must-Have Tools Every Developer Should Download Now](http://msdn.microsoft.com/msdnmag/issues/04/07/MustHaveTools/default.aspx). I was very flattered to learn that my little adventure into regular expressions,[The Regulator](http://regulator.sourceforge.net/),  is named in that respectable list (although the screen shot is totally out of date...) **Thanks for the Kudos**. I appreciate it. Other than The Regulator there are some must-explore tools you will probably need at one point or another, or even on a daily basis. Be sure to check it out. A few updates on the state of the current version: - There's a really stupid problem with the Installer for the .net 1.0 version of the tool: It requires .Net 1.1 to run :) My bad - I totally messed up and forgot to change the required runtime setting for the setup project. - If you're running in Non-Admin mode - you'll crash when trying to close it or save a file. I'm working on it to save settings into an IsolatedStorage file, but to make it write a file you'll have to make it trusted anyway. - Intellisense still sucks, mostly because the Awesome Edit control donated by Syncfusion is a little lacking in this area. I'll make it work somehow. For now you can disable Intellisense via the general settings dialog. I'll work on all these issues in the soon coming new version. Got anymore stuff that bothers you about The Regulator? Say it loud and proud in the comments section. Speaking of which, how's the help file? are you happy with it? Does it need more work? Is it actually useful? ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Aug 5, 2004 ### [Paper: Developing Identity-Aware ASP.NET Applications](https://osherove.com/blog/2004/8/5/paper-developing-identity-aware-aspnet-applications.html) - Jul 17, 2004 ### [Omer is doing some serious blogging](https://osherove.com/blog/2004/7/17/omer-is-doing-some-serious-blogging.html) - Jun 11, 2004 ### [Add Support for "Set" Collections to .NET](https://osherove.com/blog/2004/6/11/add-support-for-quotsetquot-collections-to-net.html) - Jun 4, 2004 ### [Wintellect Web-exclusive articles](https://osherove.com/blog/2004/6/4/wintellect-web-exclusive-articles.html) --- title: "Lots of new Israeli .Net Bloggers around!" url: "https://osherove.com/blog/2004/6/17/lots-of-new-israeli-net-bloggers-around.md" canonical: "https://osherove.com/blog/2004/6/17/lots-of-new-israeli-net-bloggers-around.html" published: "2004-06-17T20:36:00" updated: "2004-06-17T20:36:00" tags: ["Blogging"] author: "Roy Osherove" description: "Mordy Shahar joins the Israeli .Net Bloggers crowed . Along with Ohad and Avner , he's also working at Magen with me. Keep your eyes open on this one. I hear he has a lot to say. Hey Mordy - not more hiding for you. I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Lots of new Israeli .Net Bloggers around! By Roy Osherove June 17, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 17, 2004; technical details may be outdated. [Mordy Shahar joins the Israeli .Net Bloggers crowed](http://dotnetjunkies.com/WebLog/mordy%5Fshahar/). Along with [Ohad](http://weblogs.asp.net/israelio) and [Avner](http://weblogs.asp.net/avnerk), he's also working at [Magen](http://www.magen.com/) with me. Keep your eyes open on this one. I hear he has a lot to say. [Hey Mordy](http://dotnetjunkies.com/WebLog/mordy_shahar/archive/2004/06/14/16460.aspx) \- not more hiding for you. I now have 22 Israeli .Net Bloggers listed on my site. Ah - I remember a time there were like 2 or three. - [Addy Santo](https://osherove.com/asanto) - [Anatoly Lubarsky](http://gensystem.europe.webmatrixhosting.net/al/) - [Avner Kashtan](https://osherove.com/avnerk) - [Guy Sofer](https://osherove.com/guys) - [Ido Samuelson](http://dotnetjunkies.com/WebLog/principal/) - [Leon](http://dotnetjunkies.com/WebLog/leon/) - [](https://osherove.com/lrozner/)[Lior Rozner](https://osherove.com/lrozner/ "weblog") - [Memi Lavi](https://osherove.com/memi/) - [Mordy Shahar](http://dotnetjunkies.com/WebLog/mordy%5Fshahar/) - [Natty Gur](https://osherove.com/NGur/) - [Ohad Israeli](https://osherove.com/israelio) - [Oleg Tkachenko](http://www.tkachenko.com/blog) - [Omer Van Kloeten](https://osherove.com/OKloeten/) - [Or Ron](https://osherove.com/orron) - [Sa'ar Carmi](http://dotnetjunkies.com/WebLog/saarc/) - [Shmarya](http://blog.satr-it.com/) - [Shmulik Primes](http://dotnetjunkies.com/WebLog/primess) - [Udi Dahan(The Software Simplist)](http://udidahan.weblogs.us/) - [Uri Gorobets](http://dotnetjunkies.com/WebLog/removable%20thoughts/) - [Yorai's Page (Delphi)](http://www.yoraispage.com/) - [Yosi Taguri](http://blogs.msdn.com/yosit) - [Ziv Caspi](http://radio.weblogs.com/0106548/) - [Jonathan Einav](http://dotnetjunkies.com/WebLog/snow_master/) What about **you?** Are you in Israel? wanna blog too? contact me and I'll tell you how to start quick and easy. The more knowledge we share - the more knowledge we get. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 30, 2004 ### [2nd Israeli Blogger\\Geek Dinner - a success](https://osherove.com/blog/2004/6/30/2nd-israeli-bloggergeek-dinner-a-success.html) - Jun 22, 2004 ### [Community reminders: TDD workshop & Blogger Dinner](https://osherove.com/blog/2004/6/22/community-reminders-tdd-workshop-amp-blogger-dinner.html) - Jun 13, 2004 ### [Another Israeli .Net Blogger: Leon](https://osherove.com/blog/2004/6/13/another-israeli-net-blogger-leon.html) - Jun 11, 2004 ### [\[New Blog\] Sa'ar Carmi](https://osherove.com/blog/2004/6/11/new-blog-saar-carmi.html) --- title: "It's healthy to be scared of new projects" url: "https://osherove.com/blog/2004/6/17/its-healthy-to-be-scared-of-new-projects.md" canonical: "https://osherove.com/blog/2004/6/17/its-healthy-to-be-scared-of-new-projects.html" published: "2004-06-17T20:10:00" updated: "2004-06-17T20:10:00" tags: ["Project Management"] author: "Roy Osherove" description: "I think it's healthy to be afraid of new projects. Really. Whenever I get a new assignment, when I just get the first sentences of the project description, and I don't know how I'm going to implement it yet, I get those…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # It's healthy to be scared of new projects By Roy Osherove June 17, 2004 In [Project Management](https://osherove.com/blog/category/project-management) **Historical article** · Originally published June 17, 2004; technical details may be outdated. I think it's healthy to be afraid of new projects. Really. Whenever I get a new assignment, when I just get the first sentences of the project description, and I don't know how I'm going to implement it yet, I get those totally human thoughts burning in me: "How the **hell** are we supposed to do that??", "Are they nuts?", "They want **that** to do **this**???" and so on. To me these are totally healthy thoughts. There's a phrase - _"Fear is the best protection mechanism. It keeps us on our toes"_. If you're going into a project with a totally peaceful mind and you think you know exactly how its going to end up or what you're going to do - you're preparing yourself for a nasty surprise. There are no guarantees in life. _Especially_ in the software industry. 70-80% of all software projects world wide are either failing miserably at hitting the target end date or being cancelled all together. It is **that** unpredictable. Mostly because of the way we are used to doing things. Even the best of us. Agile methodologies try to solve this problem with various countermeasures. They also succeed - to a degree. But no one can ever tell themselves "this is going to be just fine and dandy. I have nothing to worry about". na-ah. Managing project risks is all about doing the worries beforehand and taking care of the "what happens if"s before the happen. That's a healthy worry. If you're not worried when you start a project - you better start. And you better not stop worrying until you actually finish it , ship it and... wait - now you need to ship version 2.0, don't you? :) let the vicious circle begin. ## More in Project Management [All posts in Project Management](https://osherove.com/blog/category/project-management) - Dec 8, 2004 ### [Chatting with Johanna Rothman](https://osherove.com/blog/2004/12/8/chatting-with-johanna-rothman.html) - Sep 3, 2004 ### [Great Coders Deserve Great Managers](https://osherove.com/blog/2004/9/3/great-coders-deserve-great-managers.html) - Jun 17, 2004 ### [Communicating Project Progress with a white board](https://osherove.com/blog/2004/6/17/communicating-project-progress-with-a-white-board.html) --- title: "Communicating Project Progress with a white board" url: "https://osherove.com/blog/2004/6/17/communicating-project-progress-with-a-white-board.md" canonical: "https://osherove.com/blog/2004/6/17/communicating-project-progress-with-a-white-board.html" published: "2004-06-17T19:55:00" updated: "2004-06-17T19:55:00" tags: ["Agile Related", "Project Management"] author: "Roy Osherove" description: "One of the things most notable about XP that I really like is the notion of pure communication through the simplest things. For example - the whiteboard. In an XP project - the whiteboard is your biggest friend. It's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Communicating Project Progress with a white board By Roy Osherove June 17, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related), [Project Management](https://osherove.com/blog/category/project-management) **Historical article** · Originally published June 17, 2004; technical details may be outdated. One of the things most notable about XP that I really like is the notion of pure communication through the simplest things. For example - the whiteboard. In an XP project - the whiteboard is your biggest friend. - It's the best way to communicate ideas visually and fast - It's great for letting everyone know what's going on - It's easy to change and erase and move stuff. One of the things that people often do in these sort of projects is create what is called a "[Wall- Gantt](http://blog.ardvaark.net/article.php?story=)" - that means a whole Gantt chart mounted up on a wall somewhere for everyone to see - totally made of sticky notes and other papers - making it totally flexible for changes. If you remember - an XP project is all about accommodating changes. I, too, have my own personal preference on how to show project progress to the team. It's based on the main whiteboard that our current project's team has mounted in the room (the one wall everyone sees when they turn around). Here's a picture of what it looked like a few weeks ago (stuff blurred for obvious reasons) Looks.... human, doesn't it? :) here's a short explanation of what you're seeing here: **The Project Progress Report Table** - In the lower part of this image you see grid(table). This table basically outlines all the modules to be built in the project and the various layers each module will need. - **The Y axis** shows the various layers in the project : Design, DAL,BL,WorkFlow(WF),Service Interface(SI),UIP and GUI (obviously a distributed application) - **the X axis** shows the names of each main module to be built (various modules taken from the design document and speaking to the client. - When a specific phase/layer for a module is finished it is coloured Green. - For example: for the most left module in the image - the following phases and layers have been completed: Design, DAL, BL and Workflow design. It still needs to have the following to be done: WorkFlow component, Service Interface (web service), UIP layer and the actual GUI forms. - The green 'X's mark layers that do not need implementation in this design - the red markers (which are actually Hebrew letters) in some of the cubes are the initials of the dev team members. This way we know who is working on what. the easiest rule about this table is : _the more green you have - the further you are in the project. When everything is green you're done with implementation._ **The Pending Tasks areas** Around the Project table you can see various cubes (5 big cubes with people names on top in red). Each cube belongs to a team member and lists the current tasks they have for the coming few days. Finished tasks are marked with "V".  These tasks are listed in sync with the project progress table and give off a separate - more elaborate view of the smaller tasks each dev member needs to perform in order to finish their current layer/task. **So what do you get out of this white board?** - You can walk in to the room and know in less than 10 seconds where the project stands, where it's heading and what is still not finished. - You can define your work either in breadth(Work on several modules at once across the diagram) or vertically (Complete each "column" in the table vertically and continue on to the next module) . in this project you can clearly see that we have taken the "breadth" approach. - Full communication between everyone. To me one of the most annoying things is to work on a project where you have no idea where you are heading. You are working in a void with no real meaning. In this way you see exactly where in the project you fit in and what your impact on the project really is. - It's much easier to handle than a Gantt chart - although it does not fully replace a Gantt chart. Some things cannot be expressed in terms of layers. They have to be modelled hierarchically. - You can see that this fits most well with small teams working closely with each other. Again, another facet of agile methodologies. **The Work Flow** Each morning the whole team (5 people) gather up for a 10 minute meeting with details of what they are going to do today, questions and problems that might arise and other things. The whiteboard is updated in this meeting with the current status of all tasks and everyone now knows what everyone else is doing. There are 1-2 meetings like this on a typical day. **Anything else?** Obviously this is not all there is to it, but it's one of the core parts of managing a project for me. One of the first things I look for in a new project space is the whiteboard. it is usually the life raft of miscommunication. If there isn't one I make sure I get one at least (but 3-4 is also great. You can never have too much communication). in this post I've shown how a whiteboard can also be used to communicate project progress, not only technical ideas. I'd love to get your feedback on these methods. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 20, 2004 ### [Watch me speak: eXtreme Programming and Agile concepts, at the .Net Architects user group this month](https://osherove.com/blog/2004/6/20/watch-me-speak-extreme-programming-and-agile-concepts-at-the.html) - Jun 19, 2004 ### [\[Article\] Simplified Database Unit testing using Enterprise Services](https://osherove.com/blog/2004/6/19/article-simplified-database-unit-testing-using-enterprise-se.html) - Jun 17, 2004 ### [The Israeli Agile development workshop - New site](https://osherove.com/blog/2004/6/17/the-israeli-agile-development-workshop-new-site.html) - Jun 7, 2004 ### [Test Driven Development webcast](https://osherove.com/blog/2004/6/7/test-driven-development-webcast.html) --- title: "Troubling APIs" url: "https://osherove.com/blog/2004/6/17/troubling-apis.md" canonical: "https://osherove.com/blog/2004/6/17/troubling-apis.html" published: "2004-06-17T18:13:00" updated: "2004-06-17T18:13:00" tags: [] author: "Roy Osherove" description: "Avner blogs about some really weird stuff (and baad Office Developers) when it comes to creating an Office COM add-in. Really. It's as amazing to read as this from Joel : “I first heard about this from one of the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Troubling APIs By Roy Osherove June 17, 2004 **Historical article** · Originally published June 17, 2004; technical details may be outdated. [Avner blogs about](http://weblogs.asp.net/avnerk/archive/2004/06/17/158210.aspx) some really weird stuff (and baad Office Developers) when it comes to creating an Office COM add-in. Really. It's as amazing to read as [this from Joel](http://www.joelonsoftware.com/articles/APIWar.html): “I first heard about this from one of the developers of the hit game SimCity, who told me that there was a critical bug in his application: it used memory right after freeing it, a major no-no that _happened_ to work OK on DOS but would not work under Windows where memory that is freed is likely to be snatched up by another running application right away. The testers on the Windows team were going through various popular applications, testing them to make sure they worked OK, but SimCity kept crashing. They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and _added special code_ that checked if SimCity was running, and if it did, _ran the memory allocator in a special mode in which you could still use memory after freeing it_.” --- title: "Meet me and Ohad at Computex?" url: "https://osherove.com/blog/2004/6/17/meet-me-and-ohad-at-computex.md" canonical: "https://osherove.com/blog/2004/6/17/meet-me-and-ohad-at-computex.html" published: "2004-06-17T12:17:00" updated: "2004-06-17T12:17:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Ohad and me are going over to the Computex conference . If you're there too feel free to call me up at 064-655388 at we'll get together to browse the displays as what will be known as “The Geeky Bunch”." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Meet me and Ohad at Computex? By Roy Osherove June 17, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 17, 2004; technical details may be outdated. [Ohad](http://weblogs.asp.net/israelio) and me are going over to the [Computex conference](http://glz.msn.co.il/glz/computers/news/31833834FDC94225826876E20F121A24.htm). If you're there too feel free to call me up at 064-655388 at we'll get together to browse the displays as what will be known as “The Geeky Bunch”. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 18, 2004 ### [Israelis at Redmond](https://osherove.com/blog/2004/6/18/israelis-at-redmond.html) - Jun 18, 2004 ### [Some GMail tips](https://osherove.com/blog/2004/6/18/some-gmail-tips.html) - Jun 17, 2004 ### [\[ot\] Devil Duckie](https://osherove.com/blog/2004/6/17/ot-devil-duckie.html) - Jun 13, 2004 ### [Tech-Ed Swag? In Israel? What's that?](https://osherove.com/blog/2004/6/13/tech-ed-swag-in-israel-whats-that.html) --- title: "The Israeli Agile development workshop - New site" url: "https://osherove.com/blog/2004/6/17/the-israeli-agile-development-workshop-new-site.md" canonical: "https://osherove.com/blog/2004/6/17/the-israeli-agile-development-workshop-new-site.html" published: "2004-06-17T10:17:00" updated: "2004-06-17T10:17:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Some good news - finally. I've been “harassing” my boss at Magen , Reuven, about this for quite some time, so no wonder he has given up. He gave me a brand spanking dedicated server at Magen to host various community…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Israeli Agile development workshop - New site By Roy Osherove June 17, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 17, 2004; technical details may be outdated. Some good news - finally. I've been “harassing” my boss at [Magen](http://www.magen.com/), Reuven, about this for quite some time, so no wonder he has given up. He gave me a brand spanking dedicated server at Magen to host various community sites I'm thinking about. It even has a cool dns: [http://dev.magen.com](http://dev.magen.com/)  although right now it is protected from anonymous users until I actually get some content on the thing. Here comes the good news part: The server has SharePoint installed on it - so even though the parent portal is not open to anonymous users, I'll be opening up child portals to the public as they go live. The first one to go is : [Agile Israel - the Test Driven Development Workshop site.](http://dev.magen.com/Agile) Yep. no more fiddling around with my home server. the TDD workshop finally has its own “grown up“ site. The site already lists the second planned meeting of the TDD workshop - the one I've been promising so much: [Second TDD workshop meeting workspace](http://dev.magen.com/Agile/TDD1?InstanceID=1)  If you want to register for the session email me at \[\[email removed\]\] with “TDD workshop“ in the subject line. Note: maximum 10 people at each meeting. House rules. See you there! ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 19, 2004 ### [\[Article\] Simplified Database Unit testing using Enterprise Services](https://osherove.com/blog/2004/6/19/article-simplified-database-unit-testing-using-enterprise-se.html) - Jun 17, 2004 ### [Communicating Project Progress with a white board](https://osherove.com/blog/2004/6/17/communicating-project-progress-with-a-white-board.html) - Jun 7, 2004 ### [Test Driven Development webcast](https://osherove.com/blog/2004/6/7/test-driven-development-webcast.html) - Jun 4, 2004 ### [When people don't want to do pair programming](https://osherove.com/blog/2004/6/4/when-people-dont-want-to-do-pair-programming.html) --- title: "Add-in contest ends this month!" url: "https://osherove.com/blog/2004/6/17/add-in-contest-ends-this-month.md" canonical: "https://osherove.com/blog/2004/6/17/add-in-contest-ends-this-month.html" published: "2004-06-17T08:28:00" updated: "2004-06-17T08:28:00" tags: ["Addin Contest"] author: "Roy Osherove" description: "13 days to go . I suggest you start sending in your add-ins. If the slow submission rate keeps up I would have no choice but to postpone or cancel the contest altogether. FYI. As of now less than 10 submission received.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Add-in contest ends this month! By Roy Osherove June 17, 2004 In [Addin Contest](https://osherove.com/blog/category/addin-contest) **Historical article** · Originally published June 17, 2004; technical details may be outdated. [13 days to go](http://weblogs.asp.net/rosherove/archive/2004/04/21/117663.aspx). I suggest you start sending in your add-ins. If the slow submission rate keeps up I would have no choice but to postpone or cancel the contest altogether. FYI. As of now less than 10 submission received. The contest won't open with less than 20. ## More in Addin Contest [All posts in Addin Contest](https://osherove.com/blog/category/addin-contest) - Jul 18, 2004 ### [Announcing:Coolest Add-in Contest - Entries available for download](https://osherove.com/blog/2004/7/18/announcingcoolest-add-in-contest-entries-available-for-downl.html) - Jul 2, 2004 ### [Add-in contest submission phase is now officially over](https://osherove.com/blog/2004/7/2/add-in-contest-submission-phase-is-now-officially-over.html) - May 21, 2004 ### [T- (11+30) + explanation + apology](https://osherove.com/blog/2004/5/21/t-1130-explanation-apology.html) - May 9, 2004 ### [Add-in Contest news and updates](https://osherove.com/blog/2004/5/9/add-in-contest-news-and-updates.html) --- title: "[ot] Devil Duckie" url: "https://osherove.com/blog/2004/6/17/ot-devil-duckie.md" canonical: "https://osherove.com/blog/2004/6/17/ot-devil-duckie.html" published: "2004-06-17T08:26:00" updated: "2004-06-17T08:26:00" tags: ["Off Topic"] author: "Roy Osherove" description: "No - I do not have better things to spend my money on. I want this: can you guess yet? it's the USB Devil Duckie Drive , of course. “ Once you reach your destination, plug in your Devil Duckie Drive and put him to work.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[ot\] Devil Duckie By Roy Osherove June 17, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 17, 2004; technical details may be outdated. No - I do **not** have better things to spend my money on. I want this: ![](https://osherove.com/img/wb/e7b9aa61_www.thinkgeek.com_images_products_front_devil-duckie.jpg) can you guess yet? it's the [USB Devil Duckie Drive](http://www.thinkgeek.com/gadgets/electronic/6a29/), of course. “_Once you reach your destination, plug in your Devil Duckie Drive and put him to work. His expressive (and often hypnotic) eyes will blink as he reads and writes your data. “_ (thanks for the tip, [Avner](http://weblogs.asp.net/avnerk)) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 18, 2004 ### [Some GMail tips](https://osherove.com/blog/2004/6/18/some-gmail-tips.html) - Jun 17, 2004 ### [Meet me and Ohad at Computex?](https://osherove.com/blog/2004/6/17/meet-me-and-ohad-at-computex.html) - Jun 13, 2004 ### [Tech-Ed Swag? In Israel? What's that?](https://osherove.com/blog/2004/6/13/tech-ed-swag-in-israel-whats-that.html) - Jun 13, 2004 ### [Convincing Management to buy books](https://osherove.com/blog/2004/6/13/convincing-management-to-buy-books.html) --- title: "Implementing the BackgroundWorker component - today(source included)" url: "https://osherove.com/blog/2004/6/16/implementing-the-backgroundworker-component-todaysource-incl.md" canonical: "https://osherove.com/blog/2004/6/16/implementing-the-backgroundworker-component-todaysource-incl.html" published: "2004-06-16T07:27:00" updated: "2004-06-16T07:27:00" tags: [".Net Original"] author: "Roy Osherove" description: "Juval wrote a very cool article (registration required) about implementing the BackGroundWorker component found in VS.Net 2005 in C# today. Just for the heck of it (and because I needed to), I implemented this component…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Implementing the BackgroundWorker component - today(source included) By Roy Osherove June 16, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 16, 2004; technical details may be outdated. Juval wrote [a very cool article](http://www.devx.com/codemag/Article/20639?trk=DXRSS_DOTNET)(registration required) about implementing the BackGroundWorker component found in VS.Net 2005 in C# today. Just for the heck of it (and because I needed to), I implemented this component (the article only shows some of the code needed to make this work). [You can get the source code here](http://weblogs.asp.net/rosherove/articles/BackgroundWorker.aspx). If you don't know what the BackgroundWorker component is, it's a simple class really, that allows you to do asynchronous multi threaded operations in your winform apps with much less hassle than needs to be. I wrote about these problems in my blog as well. Juval shows how to implement it with ease and explains lots of the concepts regarding multi threading along the way. Very interesting and already very helpful in a project I'm working on. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 20, 2004 ### [Watch me speak: eXtreme Programming and Agile concepts, at the .Net Architects user group this month](https://osherove.com/blog/2004/6/20/watch-me-speak-extreme-programming-and-agile-concepts-at-the.html) - Jun 19, 2004 ### [\[Article\] Simplified Database Unit testing using Enterprise Services](https://osherove.com/blog/2004/6/19/article-simplified-database-unit-testing-using-enterprise-se.html) - Jun 16, 2004 ### [Problem & Solution: Allow only one instance of any MDI child form in your MDI application](https://osherove.com/blog/2004/6/16/problem-amp-solution-allow-only-one-instance-of-any-mdi-chil.html) - Jun 13, 2004 ### [Unit Testing in Whidbey - some pointers for improvement](https://osherove.com/blog/2004/6/13/unit-testing-in-whidbey-some-pointers-for-improvement.html) --- title: "BackgroundWorker implementation -in C#" url: "https://osherove.com/blog/2004/6/16/backgroundworker-implementation-in-c.md" canonical: "https://osherove.com/blog/2004/6/16/backgroundworker-implementation-in-c.html" published: "2004-06-16T07:20:00" updated: "2004-06-16T07:20:00" tags: ["Other"] author: "Roy Osherove" description: "BackgroundWorker class – built using instructions from this fine article by Juval . using System ; using System . ComponentModel ; namespace Unique . Shavit . UI { #region BackgroundWorker public class BackgroundWorker…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BackgroundWorker implementation -in C\# By Roy Osherove June 16, 2004 In [Other](https://osherove.com/blog/category/other) **Historical article** · Originally published June 16, 2004; technical details may be outdated. BackgroundWorker class – built using instructions from [this fine article by Juval](http://www.devx.com/codemag/Article/20639?trk=DXRSS_DOTNET). --- using System; using System.ComponentModel; namespace Unique.Shavit.UI {       #region BackgroundWorker       public class BackgroundWorker       {             bool m\_CancelPending \= false;             bool m\_ReportsProgress \= false;             bool m\_SupportsCancellation \= false;             public event DoWorkEventHandler DoWork;             public event ProgressChangedEventHandler ProgressChanged;             public event RunWorkerCompletedEventHandler RunWorkerCompleted;             public bool WorkerSupportsCancellation             {                   get                   {                         lock(this)                         {                               return m\_SupportsCancellation;                         }                   }                   set                   {                         lock(this)                         {                               m\_SupportsCancellation \= value;                         }                   }             }             public bool WorkerReportsProgress             {                   get                   {                         lock(this)                         {                               return m\_ReportsProgress;                         }                   }                   set                   {                         lock(this)                         {                               m\_ReportsProgress \= value;                         }                   }             }             public bool CancellationPending             {                   get                   {                         lock(this)                         {                               return m\_CancelPending;                         }                   }             }                 public void RunWorkerAsync()             {                   RunWorkerAsync(null);             }             public void RunWorkerAsync(object argument)             {                   m\_CancelPending \= false;                   if(DoWork != null)                   {                         DoWorkEventArgs args \= new DoWorkEventArgs(argument);                         AsyncCallback callback;                         callback \= new AsyncCallback(ReportCompletion);                         DoWork.BeginInvoke(this,args,callback,args);                   }             }             public void ReportProgress(int percent)             {                   if(WorkerReportsProgress)                   {                         ProgressChangedEventArgs progressArgs;                         progressArgs \= new ProgressChangedEventArgs(percent);                                           OnProgressChanged(progressArgs);                   }             }             public void CancelAsync()             {                   lock(this)                   {                         m\_CancelPending \= true;                   }             }             protected virtual void OnProgressChanged(ProgressChangedEventArgs progressArgs)             {                   ProcessDelegate(ProgressChanged,this,progressArgs);             }             protected virtual void OnRunWorkerCompleted(RunWorkerCompletedEventArgs completedArgs)             {                   ProcessDelegate(RunWorkerCompleted,this,completedArgs);             }             public delegate void DoWorkEventHandler(object sender, DoWorkEventArgs e);             public delegate void ProgressChangedEventHandler(object sender, ProgressChangedEventArgs e);             public delegate void RunWorkerCompletedEventHandler(object sender, RunWorkerCompletedEventArgs e);             void ProcessDelegate(Delegate del,params object\[\] args)             {                   Delegate temp \= del;                   if(temp \== null)                   {                         return;                   }                   Delegate\[\] delegates \= temp.GetInvocationList();                   foreach(Delegate handler in delegates)                   {                         InvokeDelegate(handler,args);                   }             }             void InvokeDelegate(Delegate del,object\[\] args)             {                   System.ComponentModel.ISynchronizeInvoke synchronizer;                   synchronizer \= del.Target as System.ComponentModel.ISynchronizeInvoke;                   if(synchronizer != null) //A Windows Forms object                   {                         if(synchronizer.InvokeRequired \== false)                         {                               del.DynamicInvoke(args);                               return;                         }                         try                         {                               synchronizer.Invoke(del,args);                         }                         catch                         {}                   }                     else //Not a Windows Forms object                   {                         del.DynamicInvoke(args);                   }              }             void ReportCompletion(IAsyncResult asyncResult)             {                   System.Runtime.Remoting.Messaging.AsyncResult ar \= (System.Runtime.Remoting.Messaging.AsyncResult)asyncResult;                   DoWorkEventHandler del;                   del  \= (DoWorkEventHandler)ar.AsyncDelegate;                   DoWorkEventArgs doWorkArgs \= (DoWorkEventArgs)ar.AsyncState;                   object result \= null;                   Exception error \= null;                   try                   {                         del.EndInvoke(asyncResult);                         result \= doWorkArgs.Result;                   }                   catch(Exception exception)                   {                         error \= exception;                   }                   RunWorkerCompletedEventArgs completedArgs \= new RunWorkerCompletedEventArgs(result, error, doWorkArgs.Cancel);                   OnRunWorkerCompleted(completedArgs);             }       }       #endregion       #region AsyncCompletedEventArgs       public class AsyncCompletedEventArgs : EventArgs       {                 public AsyncCompletedEventArgs (bool cancelled,Exception ex)             {                   Cancelled\= cancelled;                   Error \= ex;             }             public AsyncCompletedEventArgs(){}             public readonly Exception Error;             public readonly bool Cancelled;                 }       #endregion       #region CancelEventArgs       public class CancleEventArgs : EventArgs       {             private bool m\_cancel \= false;             public bool Cancel             {                   get                   {                         return m\_cancel;                   }                   set                   {                         m\_cancel\=value;                   }             }                 }       #endregion       #region DoWorkEventArgs       public class DoWorkEventArgs : CancleEventArgs       {             public bool Result             {                   get                   {                         return false;                   }                   set                   {                   }             }             public readonly object Argument;                public DoWorkEventArgs(object objArgument)             {                   Argument \= objArgument;             }       } #endregion       #region ProgressChangedEventArgs       public class ProgressChangedEventArgs : EventArgs       {             public readonly int ProgressPercentage;                     public ProgressChangedEventArgs (int intProgressPercentage)             {                   ProgressPercentage \= intProgressPercentage;             }       }       #endregion       #region RunWorkerCompletedEventArgs       public class RunWorkerCompletedEventArgs : AsyncCompletedEventArgs       {                       public readonly object Result;             public RunWorkerCompletedEventArgs (object objResult, Exception exException, bool bCancel)                   :base(bCancel,exException)             {                                   Result \= objResult;             }       } #endregion } ## More in Other [All posts in Other](https://osherove.com/blog/category/other) - Dec 6, 2006 ### [I screwed up with a client. Here's what I've learned.](https://osherove.com/blog/2006/12/6/i-screwed-up-with-a-client-heres-what-ive-learned.html) - Sep 3, 2004 ### [Review - JetBrains Resharper](https://osherove.com/blog/2004/9/3/review-jetbrains-resharper.html) - Feb 17, 2004 ### [Make your .Net application support scripting - a practical approach](https://osherove.com/blog/2004/2/17/make-your-net-application-support-scripting-a-practical-appr.html) - Jan 17, 2004 ### [Learning from mistakes: the Don Quixote pattern](https://osherove.com/blog/2004/1/17/learning-from-mistakes-the-don-quixote-pattern.html) --- title: "Problem & Solution: Allow only one instance of any MDI child form in your MDI application" url: "https://osherove.com/blog/2004/6/16/problem-amp-solution-allow-only-one-instance-of-any-mdi-chil.md" canonical: "https://osherove.com/blog/2004/6/16/problem-amp-solution-allow-only-one-instance-of-any-mdi-chil.html" published: "2004-06-16T06:56:00" updated: "2004-06-16T06:56:00" tags: [".Net Original"] author: "Roy Osherove" description: "One of the things I needed to do at an MDI application I was involved with was the ability to only load a specific form once, and make sure it does not load again. That form could not be modal, but could only have one…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Problem & Solution: Allow only one instance of any MDI child form in your MDI application By Roy Osherove June 16, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 16, 2004; technical details may be outdated. One of the things I needed to do at an MDI application I was involved with was the ability to only load a specific form once, and make sure it does not load again. That form could not be modal, but could only have one instance running inside the MDI parent.  I came up with a rather elegant solution, if I do say so myself :) _(Of course what usually happens when I come up with an “elegant” solution is that someone shows me a simple property on the form that says something like "AllowOneInstanceOnly" which does exactly what I did here. )_ **How to call this class:** In your MDI form, simply write this: MdiFormLoader.LoadFormType(typeof(CustomerDetailsForm), this); --- using System; using System.Windows.Forms; using System.Collections.Specialized; namespace UI.Utilities {       public class MdiFormLoader       {             private static HybridDictionary m\_InitializedForms \= new HybridDictionary();             public static void LoadFormType(Type formType, Form mdiParentForm)             {                   if (IsAlreadyLoaded(formType))                   {                         return;                   }                   FlagAsLoaded(formType);                   Form frm \= (Form)Activator.CreateInstance(formType);                   frm.MdiParent \= mdiParentForm;                   frm.Closed += new EventHandler(FormClosed);                   frm.Show();             }             private static void FlagAsLoaded(Type formType)             {                   m\_InitializedForms\[formType.Name\] \= true;             }             private static void FlagAsNotLoaded(Type formType)             {                   m\_InitializedForms\[formType.Name\] \= false;             }             private static bool IsAlreadyLoaded(Type formType)             {                   return ((m\_InitializedForms\[formType.Name\] != null) &&                         (bool)m\_InitializedForms\[formType.Name\] \== true);             }             private static void FormClosed(object sender, EventArgs e)             {                   Form closingForm \= (Form)sender;                   closingForm.Closed \-= new EventHandler(FormClosed);                   FlagAsNotLoaded(sender.GetType());             }       } } ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 19, 2004 ### [\[Article\] Simplified Database Unit testing using Enterprise Services](https://osherove.com/blog/2004/6/19/article-simplified-database-unit-testing-using-enterprise-se.html) - Jun 16, 2004 ### [Implementing the BackgroundWorker component - today(source included)](https://osherove.com/blog/2004/6/16/implementing-the-backgroundworker-component-todaysource-incl.html) - Jun 13, 2004 ### [Unit Testing in Whidbey - some pointers for improvement](https://osherove.com/blog/2004/6/13/unit-testing-in-whidbey-some-pointers-for-improvement.html) - Jun 12, 2004 ### [Writing a VS.Net Add-in, ugh](https://osherove.com/blog/2004/6/12/writing-a-vsnet-add-in-ugh.html) --- title: "No IVCUG meeting today :(" url: "https://osherove.com/blog/2004/6/16/no-ivcug-meeting-today.md" canonical: "https://osherove.com/blog/2004/6/16/no-ivcug-meeting-today.html" published: "2004-06-16T06:47:00" updated: "2004-06-16T06:47:00" tags: [] author: "Roy Osherove" description: "Just in case you were wondering - there is no IVCUG meeting today. I just called Shai Bar lev and he informed me of this." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # No IVCUG meeting today :( By Roy Osherove June 16, 2004 **Historical article** · Originally published June 16, 2004; technical details may be outdated. Just in case you were wondering - there is no [IVCUG](http://www.comconix.com/ivcug/) meeting today. I just called Shai Bar lev and he informed me of this. --- title: "A new Israeli .Net user group?" url: "https://osherove.com/blog/2004/6/16/a-new-israeli-net-user-group.md" canonical: "https://osherove.com/blog/2004/6/16/a-new-israeli-net-user-group.html" published: "2004-06-16T03:52:00" updated: "2004-06-16T03:52:00" tags: [] author: "Roy Osherove" description: "Looks like there's new Israeli .Net user group being formed?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A new Israeli .Net user group? By Roy Osherove June 16, 2004 **Historical article** · Originally published June 16, 2004; technical details may be outdated. [Looks like there's new Israeli .Net user group being formed?](http://dotnetjunkies.com/WebLog/removable%20thoughts/archive/2004/06/15/16517.aspx) --- title: "Another Israeli .Net Blogger: Leon" url: "https://osherove.com/blog/2004/6/13/another-israeli-net-blogger-leon.md" canonical: "https://osherove.com/blog/2004/6/13/another-israeli-net-blogger-leon.html" published: "2004-06-13T19:19:00" updated: "2004-06-13T19:19:00" tags: ["Blogging"] author: "Roy Osherove" description: "Ack! Another Israeli .Net Blogger: Leon . It seems “our” plot to take over the world has now moved into phase two - taking over the blogsphere." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another Israeli .Net Blogger: Leon By Roy Osherove June 13, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 13, 2004; technical details may be outdated. Ack! **Another** Israeli .Net Blogger: [Leon](http://dotnetjunkies.com/WebLog/leon/). It seems “our” plot to take over the world has now moved into phase two - taking over the blogsphere. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 22, 2004 ### [Community reminders: TDD workshop & Blogger Dinner](https://osherove.com/blog/2004/6/22/community-reminders-tdd-workshop-amp-blogger-dinner.html) - Jun 17, 2004 ### [Lots of new Israeli .Net Bloggers around!](https://osherove.com/blog/2004/6/17/lots-of-new-israeli-net-bloggers-around.html) - Jun 11, 2004 ### [\[New Blog\] Sa'ar Carmi](https://osherove.com/blog/2004/6/11/new-blog-saar-carmi.html) - Jun 11, 2004 ### [\[New blog\] He Who Can Not Be Googled](https://osherove.com/blog/2004/6/11/new-blog-he-who-can-not-be-googled.html) --- title: "Tech-Ed Swag? In Israel? What's that?" url: "https://osherove.com/blog/2004/6/13/tech-ed-swag-in-israel-whats-that.md" canonical: "https://osherove.com/blog/2004/6/13/tech-ed-swag-in-israel-whats-that.html" published: "2004-06-13T18:25:00" updated: "2004-06-13T18:25:00" tags: ["Off Topic"] author: "Roy Osherove" description: "One of the things that were supposed to be at Tech-Ed Israel was a handout of some nice DVDs and CDs with cool source and software to play with (much like at any other given Tech-Ed around the world. Well, Microsoft…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tech-Ed Swag? In Israel? What's that? By Roy Osherove June 13, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 13, 2004; technical details may be outdated. One of the things that were **supposed** to be at Tech-Ed Israel was a handout of some nice DVDs and CDs with cool source and software to play with (much like at any other given Tech-Ed around the world.  Well, Microsoft Israel screwed up and no-one got anything (There was some glitch or something..?), except a nice back-pack and a bunch of promotional flyers. A little bird told me that this was supposed to be “fixed” by sending these packages out to attendies after Tech-Ed, but nothing like that has even remotely hit anyone I know that was there, myself included. Hey, Microsoft Israel - **wake up**. How come we are the only ones not getting [cool swag](http://weblogs.asp.net/eking/archive/2004/05/27/143470.aspx)? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 17, 2004 ### [Meet me and Ohad at Computex?](https://osherove.com/blog/2004/6/17/meet-me-and-ohad-at-computex.html) - Jun 17, 2004 ### [\[ot\] Devil Duckie](https://osherove.com/blog/2004/6/17/ot-devil-duckie.html) - Jun 13, 2004 ### [Convincing Management to buy books](https://osherove.com/blog/2004/6/13/convincing-management-to-buy-books.html) - Jun 12, 2004 ### [\[ot\] Piano is love](https://osherove.com/blog/2004/6/12/ot-piano-is-love.html) --- title: "Unit Testing in Whidbey - some pointers for improvement" url: "https://osherove.com/blog/2004/6/13/unit-testing-in-whidbey-some-pointers-for-improvement.md" canonical: "https://osherove.com/blog/2004/6/13/unit-testing-in-whidbey-some-pointers-for-improvement.html" published: "2004-06-13T18:15:00" updated: "2004-06-13T18:15:00" tags: [".Net Original"] author: "Roy Osherove" description: "Jim Newkirk - apparently the guy in charge of all the Unit Testing stuff in VS Team System, and the guy who co-wrote Nunit , shows us a new object in the Unit Testing Framework of VSTS(Team system) - PrivateObject . The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing in Whidbey - some pointers for improvement By Roy Osherove June 13, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 13, 2004; technical details may be outdated. [Jim Newkirk](http://weblogs.asp.net/jamesnewkirk) \- apparently the guy in charge of all the Unit Testing stuff in VS Team System, and the guy who co-wrote [Nunit](http://www.nunit.org/), shows us a new object in the Unit Testing Framework of VSTS(Team system) - [PrivateObject](http://weblogs.asp.net/jamesnewkirk/archive/2004/06/07/150361.aspx). The whole idea behind the object is that you can Test Private methods inside your tested class. So what happens is that when you auto-generate unit tests, and you have a TestClass.PrivateMethod() - You will automatically get a class that **inherits** from PrivateObject,  which exposes all the private methods as well, as if they were public, essentially calling PrivateObject.Invoke(“MyPrivateMethodName“) underneath the covers. Think “Web Service Proxies“, only different :) What I like about this is that it's a very elegant solution to an age old problem - How do you test Private methods without “exposing“ them as public? (the question of whether you should even test private methods at all is in itself a matter of religion. Think VB vs. C#, only different :) ) Anyway - that's cool. Kudos. I like the fact that if I **wanted to** I could do it. But now, for some more pressing matters. I have a couple of points to make about Unit Testing in Whidbey: - I want to do a simple Red-Green-Refactor cycle. Why can't I do that in the simplest way possible? The simplest way for me would be to: - Create a test project (not from the wizard! I don't want to do load testing, ugh. I just want to build a class, got it?) - Create a test that does not even compile - Make it compile by adding a new Tested Project - Make the test compile and fail (this is where you get stuck) - Like I said - the last stage can't be done this simple because: - You can't run your unit tests unless you have specified a Test Configuration scheme. So: - Now I need to add **another** test project which will automatically contain a test configuration scheme (yep - that's the only way to do it. I asked Jim) - **now** you can run your tests. ugh. - Like Peter Provost wrote - it would be nice to have auto-creation of non existing classes, not just non-existing methods. - I want to be able to just add a test class to any project, not just a test project. - What's with the Assert.Inconclusive? It either fails or it passes, right? Assert.Inconclusive == Fail Otherwise I love some of the newer stuff, like the fact that you have an object test bed - You can right click on a class and instantiate that object using dialog provided parameters. (this is all in design time). Then you have this object sitting there and you can invoke its methods by right click on it's icon. You can debug into the source code too. Much like what the amazing NUnit-Addin has done for me in the past (and probably well into the future). I'd love to see Ad-hoc debugging a-la Nunit-Addin style. That would be awesome. Great job guys - but still needs some major polish until I could work with it as smoothly as I can with NUnit and NUnit-Add-in today. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 16, 2004 ### [Implementing the BackgroundWorker component - today(source included)](https://osherove.com/blog/2004/6/16/implementing-the-backgroundworker-component-todaysource-incl.html) - Jun 16, 2004 ### [Problem & Solution: Allow only one instance of any MDI child form in your MDI application](https://osherove.com/blog/2004/6/16/problem-amp-solution-allow-only-one-instance-of-any-mdi-chil.html) - Jun 12, 2004 ### [Writing a VS.Net Add-in, ugh](https://osherove.com/blog/2004/6/12/writing-a-vsnet-add-in-ugh.html) - Jun 7, 2004 ### [\[Problem and solution\] Right-to-left menus get scrambled when form is maximized](https://osherove.com/blog/2004/6/7/problem-and-solution-right-to-left-menus-get-scrambled-when.html) --- title: "Unit Testing should be in all VS 2005 Versions" url: "https://osherove.com/blog/2004/6/13/unit-testing-should-be-in-all-vs-2005-versions.md" canonical: "https://osherove.com/blog/2004/6/13/unit-testing-should-be-in-all-vs-2005-versions.html" published: "2004-06-13T17:15:00" updated: "2004-06-13T17:15:00" tags: [] author: "Roy Osherove" description: "Unit Testing support should be included with all versions of Visual Studio 2005 and not just with Team System. If you agree, please spread this around and remember to Comment/TrackBack Peter Provost's origianl post ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Testing should be in all VS 2005 Versions By Roy Osherove June 13, 2004 **Historical article** · Originally published June 13, 2004; technical details may be outdated. **Unit Testing support should be included with all versions of Visual Studio 2005 and not just with Team System.** If you agree, please spread this around and remember to Comment/TrackBack [Peter Provost's](http://www.peterprovost.org/) [origianl post](http://www.peterprovost.org/archive/2004/06/12/1379.aspx). --- title: "Convincing Management to buy books" url: "https://osherove.com/blog/2004/6/13/convincing-management-to-buy-books.md" canonical: "https://osherove.com/blog/2004/6/13/convincing-management-to-buy-books.html" published: "2004-06-13T13:39:00" updated: "2004-06-13T13:39:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Johanna Rothman gives a very interesting take on how to convince your manager to buy books . If you don't know who she is, she's a world class consultant who's also been doing lectures here in Israel at SELA university…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Convincing Management to buy books By Roy Osherove June 13, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 13, 2004; technical details may be outdated. Johanna Rothman gives a very interesting take on [how to convince your manager to buy books](http://www.jrothman.com/weblog/archive/2004_06_01_mpdarchive.html#108627627555391018).  If you don't know who she is, she's a world class consultant who's also been doing lectures  here in Israel at SELA university about product development and project management. We've also met her for a Blogger dinner some time ago, it was really interesting. My take on Johanna's words: 1. some books do not go old or stale even after 20 years ([Code Complete](https://www.amazon.com/exec/obidos/ASIN/1556154844/iserializable-20) (which actually has version 2.0), [PeopleWare](https://www.amazon.com/exec/obidos/ASIN/0932633439/iserializable-20), [Design Patterns](https://www.amazon.com/exec/obidos/ASIN/0201633612/iserializable-20)… and many more) 2. Some books go stale after a while but the benefit you get from them reimburses you many times over in that period of time. ([plenty of those](http://weblogs.asp.net/rosherove/articles/6802.aspx)) 3. People feel like you are taking care of them when you make a library and invite them to take books home. 4. Books are often better than online material because: 1. You can take them with you to the bathroom, or bed, or train 2. You can hand them over for someone 3. It is harder for most people to read from the screen of the computer 5. I'm not waiting for management to buy me books. I buy them myself. But management \*should\* buy them, because there's nothing better than a library to get to at the end of the day and pick out something you've been really wanting to read, like [project management](https://www.amazon.com/exec/obidos/ASIN/1556159005/iserializable-20), [architecture](https://www.amazon.com/exec/obidos/ASIN/0321127420/iserializable-20), [problem solving](https://www.amazon.com/exec/obidos/ASIN/1883629004/iserializable-20) or [the .net framework annotated reference](https://www.amazon.com/exec/obidos/ASIN/0321154894/iserializable-20). 6. I don't think there is one developer I know that thinks books are not a good investment. That many smart people can't be wrong. BTW : one comment listed under Johanna's post says that the guy would rather buy his own books so that he can take them with him when he moves jobs. Definitely something to think about. One thing you need to remember is that regardless of management - you should worry for your own education. No one else will. It also makes for a great answer to one of my favorite interview questions: “So tell me about the last book you've read to do with technology”. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 17, 2004 ### [\[ot\] Devil Duckie](https://osherove.com/blog/2004/6/17/ot-devil-duckie.html) - Jun 13, 2004 ### [Tech-Ed Swag? In Israel? What's that?](https://osherove.com/blog/2004/6/13/tech-ed-swag-in-israel-whats-that.html) - Jun 12, 2004 ### [\[ot\] Piano is love](https://osherove.com/blog/2004/6/12/ot-piano-is-love.html) - Jun 11, 2004 ### [Moving from a green screen is hard](https://osherove.com/blog/2004/6/11/moving-from-a-green-screen-is-hard.html) --- title: "Writing a VS.Net Add-in, ugh" url: "https://osherove.com/blog/2004/6/12/writing-a-vsnet-add-in-ugh.md" canonical: "https://osherove.com/blog/2004/6/12/writing-a-vsnet-add-in-ugh.html" published: "2004-06-12T14:01:00" updated: "2004-06-12T14:01:00" tags: [".Net Original"] author: "Roy Osherove" description: "I've been dabbling a bit with the notion of creating a Regulator Add-in for VS.Net. Still not sure what exactly it will feature - got any suggestions? Anyway - I don't have much experience with writing Add-ins for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Writing a VS.Net Add-in, ugh By Roy Osherove June 12, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 12, 2004; technical details may be outdated. I've been dabbling a bit with the notion of creating a Regulator Add-in for VS.Net. Still not sure what exactly it will feature  - got any suggestions? Anyway - I don't have much experience with writing Add-ins for vs.net so I happily started one project. Boy - it should **not** be this hard. Even trying to do something as simple as creating a tool window in Vs.Net is really hard. All the interfaces and extensibility model of VS is still in set in the wayback machine  - meaning COM interfaces and ActiveX galore. I wonder - when will COM be like COBOL? (And will we call it “COMOL“?) Anyway - to make a short story long and unreadable, the only way to make a tool window in VS.Net that features your .Net control is to make it host an ActiveX host control. That means you need to make an ActiveX control that will **host** your own .Net managed user control which will reside inside it. it's pretty horrific. A nice intro article to this whole ToolWindow horror [can be read here](http://www.codeproject.com/dotnet/msgaddin.asp). The question remains - how do you get an ActiveX control that will host your .Net user control inside it? Luckily for us developers - this dark corner of the universe has been exposed: there is a ATL C++ implementation of just such an ActiveX control. [You can get it here](http://www.microsoft.com/downloads/details.aspx?familyid=3ff9c915-30e5-430e-95b3-621dccd25150&displaylang=en) , look for “ToolWindow Add-ins“ down in the page (and here's a [direct download](http://download.microsoft.com/download/7/f/0/7f035772-9add-4caa-ba54-979385904b40/ToolWindow.exe) link). once you get past this hurdle - you can actually write wonderful(ugly, long) code. So, the least I could do is refactor that bit of code you need to write into some form of generic Class with a static method. \--------------------- Here's the code for a simple VB.Net class that takes some of the pain out of this process: Public Class ControlHoster     Public Shared Function SetupToolWindow(ByVal applicationObject As EnvDTE.DTE, \_                                             ByVal addInInstance As EnvDTE.AddIn, \_                                             ByVal caption As String, \_                                             ByVal HostedControlFullName As String)         Dim GUIDString As String = Guid.NewGuid().ToString()         Dim ProgID As String = "VSUserControlHost.VSUserControlHostCtl"         Dim assemblyLocation As String = System.Reflection.Assembly.GetExecutingAssembly().Location         Dim objTemp As Object = Nothing         Dim retVal As EnvDTE.Window = \_                 applicationObject.Windows.CreateToolWindow(addInInstance, \_                                                             ProgID, \_                                                             caption, \_                                                             GUIDString, \_                                                             objTemp)         retVal.Visible = True         objTemp.HostUserControl(assemblyLocation, HostedControlFullName)         Return retVal     End Function End Class        I really like doing this in VB.Net - makes all the casting and Reflection goo work seamlessly. Anyway - I'm still not happy about this. I'm now facing  a more difficult problem - my Add-in does not even show up in the “Tool“ menu. I bet it's something really silly, isn't it? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 16, 2004 ### [Problem & Solution: Allow only one instance of any MDI child form in your MDI application](https://osherove.com/blog/2004/6/16/problem-amp-solution-allow-only-one-instance-of-any-mdi-chil.html) - Jun 13, 2004 ### [Unit Testing in Whidbey - some pointers for improvement](https://osherove.com/blog/2004/6/13/unit-testing-in-whidbey-some-pointers-for-improvement.html) - Jun 7, 2004 ### [\[Problem and solution\] Right-to-left menus get scrambled when form is maximized](https://osherove.com/blog/2004/6/7/problem-and-solution-right-to-left-menus-get-scrambled-when.html) - Jun 7, 2004 ### [Israeli Blogger Dinner postponed](https://osherove.com/blog/2004/6/7/israeli-blogger-dinner-postponed.html) --- title: "[ot] Piano is love" url: "https://osherove.com/blog/2004/6/12/ot-piano-is-love.md" canonical: "https://osherove.com/blog/2004/6/12/ot-piano-is-love.html" published: "2004-06-12T13:29:00" updated: "2004-06-12T13:29:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I've discovered the joy of the piano. I've always been musically incllined. I played the drums as a kid (I bet some of my old neighbours still remember it “affectionately”...), learn the flute (though I recall nothing),…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[ot\] Piano is love By Roy Osherove June 12, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 12, 2004; technical details may be outdated. I've discovered the joy of the piano. I've always been musically incllined. I played the drums as a kid (I bet some of my old neighbours still remember it “affectionately”...), learn the flute (though I recall nothing), I've been playing classical guitar for the past 7 years (no notes, just hearing and mimicing) and I've always wanted to dabble with playing the keyboard of a musical instrument. Luckily our new apratment came already equipped with a piano. Nothing fancy but it sure gets the job done. So I've been “playing” on it. Well, “playing” is a harsh word. Perhaps “Experimenting” would be better. The cool thing is that I can just sit there and find some key combination that sounds great to me and just hit it for like 10 minutes with various levels of power, letting it ring out, echo...  It's **wonderful**. Today I've even learned how to play two of my favorite beatels songs: “Let it be” and “Imagine”. Again - “Experimenting” is more like it. I guess my implementation of these songs is kinda like how Windows 1.0 is compared to Windows XP - “eh” summs it up nicely. “Stop that” even better. But I like it. Of course - my wife is nowhere near the house right now - she's “visiting friends” - meaning “You will not see me until you stop that horrid thing”. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 13, 2004 ### [Tech-Ed Swag? In Israel? What's that?](https://osherove.com/blog/2004/6/13/tech-ed-swag-in-israel-whats-that.html) - Jun 13, 2004 ### [Convincing Management to buy books](https://osherove.com/blog/2004/6/13/convincing-management-to-buy-books.html) - Jun 11, 2004 ### [Moving from a green screen is hard](https://osherove.com/blog/2004/6/11/moving-from-a-green-screen-is-hard.html) - Jun 9, 2004 ### [A GMail alternative, today](https://osherove.com/blog/2004/6/9/a-gmail-alternative-today.html) --- title: "[New Blog] Sa'ar Carmi" url: "https://osherove.com/blog/2004/6/11/new-blog-saar-carmi.md" canonical: "https://osherove.com/blog/2004/6/11/new-blog-saar-carmi.html" published: "2004-06-11T18:02:00" updated: "2004-06-11T18:02:00" tags: ["Blogging"] author: "Roy Osherove" description: "Yep. that's #4 in the last few days. What's going on? Welcome Saar Carmi to the blogsphere. I know Sa'ar a little and it looks like we're in for a very technical blog. Congrats!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[New Blog\] Sa'ar Carmi By Roy Osherove June 11, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 11, 2004; technical details may be outdated. Yep. that's #4 in the last few days. What's going on? Welcome [Saar Carmi](http://dotnetjunkies.com/WebLog/saarc/) to the blogsphere. I know Sa'ar a little and it looks like we're in for a very technical blog. Congrats! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 17, 2004 ### [Lots of new Israeli .Net Bloggers around!](https://osherove.com/blog/2004/6/17/lots-of-new-israeli-net-bloggers-around.html) - Jun 13, 2004 ### [Another Israeli .Net Blogger: Leon](https://osherove.com/blog/2004/6/13/another-israeli-net-blogger-leon.html) - Jun 11, 2004 ### [\[New blog\] He Who Can Not Be Googled](https://osherove.com/blog/2004/6/11/new-blog-he-who-can-not-be-googled.html) - Jun 8, 2004 ### [And \*another\* blogger: Alon Fleiss](https://osherove.com/blog/2004/6/8/and-another-blogger-alon-fleiss.html) --- title: "[New blog] He Who Can Not Be Googled" url: "https://osherove.com/blog/2004/6/11/new-blog-he-who-can-not-be-googled.md" canonical: "https://osherove.com/blog/2004/6/11/new-blog-he-who-can-not-be-googled.html" published: "2004-06-11T05:10:00" updated: "2004-06-11T05:10:00" tags: ["Blogging"] author: "Roy Osherove" description: "“Oddly enough, my parents named me Or Ron, with complete disregard to my seemingly promising future in the software industry and to the advent of the Internet search engines. Having a first name that also serves as a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[New blog\] He Who Can Not Be Googled By Roy Osherove June 11, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 11, 2004; technical details may be outdated. _“Oddly enough, my parents named me Or Ron, with complete disregard to my seemingly promising future in the software industry and to the advent of the Internet search engines. Having a first name that also serves as a Boolean operator, has doomed me to a life devoid of ego-surfing. No matter how much material is credited to me on the web, no reference can ever be found. "He Who Can Not Be Googled" was born._ “ Please welcome the \*third\* Israeli .Net blogger in the past 3 days: [Or Ron.](http://weblogs.asp.net/orron) Or has been running the .Net Junior Developers user group here in Israel for a long time, a group which has won many awards and is considered a model for others to mimic. [Subscribed](http://weblogs.asp.net/orron/Rss.aspx). ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 13, 2004 ### [Another Israeli .Net Blogger: Leon](https://osherove.com/blog/2004/6/13/another-israeli-net-blogger-leon.html) - Jun 11, 2004 ### [\[New Blog\] Sa'ar Carmi](https://osherove.com/blog/2004/6/11/new-blog-saar-carmi.html) - Jun 8, 2004 ### [And \*another\* blogger: Alon Fleiss](https://osherove.com/blog/2004/6/8/and-another-blogger-alon-fleiss.html) - Jun 8, 2004 ### [Another Israeli .Net Blogger: Ohad Israeli](https://osherove.com/blog/2004/6/8/another-israeli-net-blogger-ohad-israeli.html) --- title: "Moving from a green screen is hard" url: "https://osherove.com/blog/2004/6/11/moving-from-a-green-screen-is-hard.md" canonical: "https://osherove.com/blog/2004/6/11/moving-from-a-green-screen-is-hard.html" published: "2004-06-11T04:47:00" updated: "2004-06-11T04:47:00" tags: ["Off Topic"] author: "Roy Osherove" description: "James points to a discussion of the hard transition Data Entry folk do when moving from a “Green Screen” application onto a GUI based app (web/win). I totally agree. The issue actually dawned on me a couple of weeks…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Moving from a green screen is hard By Roy Osherove June 11, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 11, 2004; technical details may be outdated. James points to a [discussion of the hard transition Data Entry folk do](http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3264158589) when moving from a “Green Screen” application onto a GUI based app (web/win). I totally agree. The issue actually dawned on me a couple of weeks ago. I was talking to a friend who works at aviation. In one of our chats he complained that “Now they're making us move to a whole GUI based system. I don't see what was wrong with the old one! I could enter data at the speed of though. Now I'll have to use the **mouse**!” He's totally right. It would be much slower for someone who memorizes beeps and keystrokes to move to a web based interface. The experience **can** be encapsulated into a new GUI windows app, but it would still be hard for the app devs to create an app that mimics the old one as accurately as desired for people not to have growing pains. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 13, 2004 ### [Convincing Management to buy books](https://osherove.com/blog/2004/6/13/convincing-management-to-buy-books.html) - Jun 12, 2004 ### [\[ot\] Piano is love](https://osherove.com/blog/2004/6/12/ot-piano-is-love.html) - Jun 9, 2004 ### [A GMail alternative, today](https://osherove.com/blog/2004/6/9/a-gmail-alternative-today.html) - Jun 8, 2004 ### ["Pen And Paper" interviews](https://osherove.com/blog/2004/6/8/quotpen-and-paperquot-interviews.html) --- title: "Add Support for \"Set\" Collections to .NET" url: "https://osherove.com/blog/2004/6/11/add-support-for-quotsetquot-collections-to-net.md" canonical: "https://osherove.com/blog/2004/6/11/add-support-for-quotsetquot-collections-to-net.html" published: "2004-06-11T04:10:00" updated: "2004-06-11T04:10:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "One of the missing collection classes in .Net is one that's not as often used, but when you need it, boy, it's really missing, is the Set . You know - Set theory (”Group Theory”) and all, including Intesect, join and so…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Add Support for "Set" Collections to .NET By Roy Osherove June 11, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published June 11, 2004; technical details may be outdated. One of the missing collection classes in .Net is one that's not as often used, but when you need it, boy, it's **really** missing, is the **Set**. You know - Set theory (”Group Theory”) and all, including Intesect, join and so on. I found this really nice Set implementation library with Source over on CodeProject : [http://www.codeproject.com/csharp/sets.asp](http://www.codeproject.com/csharp/sets.asp)  You might also want to read the discussion at the bottom of the article, some nice points there. Another link related to this is that someone created a more performance oriented variant of the Set - LargeListDictionary, on CodeProject, based on this article. It might come in Handly some day too: [http://www.codeproject.com/useritems/LargeListDictionary.asp](http://www.codeproject.com/useritems/LargeListDictionary.asp) (via win-tech-off-topc mailing list) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 17, 2004 ### [Omer is doing some serious blogging](https://osherove.com/blog/2004/7/17/omer-is-doing-some-serious-blogging.html) - Jul 11, 2004 ### [An interesting Memory Leak problem.](https://osherove.com/blog/2004/7/11/an-interesting-memory-leak-problem.html) - Jun 4, 2004 ### [Method PageRank for Reflector](https://osherove.com/blog/2004/6/4/method-pagerank-for-reflector.html) - Jun 4, 2004 ### [Wintellect Web-exclusive articles](https://osherove.com/blog/2004/6/4/wintellect-web-exclusive-articles.html) --- title: "A GMail alternative, today" url: "https://osherove.com/blog/2004/6/9/a-gmail-alternative-today.md" canonical: "https://osherove.com/blog/2004/6/9/a-gmail-alternative-today.html" published: "2004-06-09T18:57:00" updated: "2004-06-09T18:57:00" tags: ["Off Topic"] author: "Roy Osherove" description: "GMail is annoying. In fact, it is very annoying. the “Wer'e cool” bunch have decided to “test” the service, and everyone is clamoring for a GMail account. Well, guess what Google? I just found a service which features:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A GMail alternative, today By Roy Osherove June 9, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 9, 2004; technical details may be outdated. GMail is annoying. In fact, it is very annoying. the “Wer'e cool” bunch have decided to “test” the service, and everyone is clamoring for a GMail account. Well, guess what Google? I just found a service which features: - 1GM email (accessible through POP3) - 100MB space for FTP and webdav access - Some more stuff. All free. And it's available today. Don't be afraid of the name, either. It just means better graphics on the home page: [Give SpyMac a try and get your 1GB fix today.](http://www.spymac.com/) (Thanks to Mordy for the tip!) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 12, 2004 ### [\[ot\] Piano is love](https://osherove.com/blog/2004/6/12/ot-piano-is-love.html) - Jun 11, 2004 ### [Moving from a green screen is hard](https://osherove.com/blog/2004/6/11/moving-from-a-green-screen-is-hard.html) - Jun 8, 2004 ### ["Pen And Paper" interviews](https://osherove.com/blog/2004/6/8/quotpen-and-paperquot-interviews.html) - Jun 4, 2004 ### [2nd Israeli Blogger dinner is a go!](https://osherove.com/blog/2004/6/4/2nd-israeli-blogger-dinner-is-a-go.html) --- title: "\"Pen And Paper\" interviews" url: "https://osherove.com/blog/2004/6/8/quotpen-and-paperquot-interviews.md" canonical: "https://osherove.com/blog/2004/6/8/quotpen-and-paperquot-interviews.html" published: "2004-06-08T19:12:00" updated: "2004-06-08T19:12:00" tags: ["Off Topic"] author: "Roy Osherove" description: "[ Update : just wanted to say that there is a lot I don't agree with in Ido's post. Some of the things he lists there are quite legitimate in my view. I wrote this post beccause it reminded me of some stuff *I* displike…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # "Pen And Paper" interviews By Roy Osherove June 8, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 8, 2004; technical details may be outdated. _\[**Update**: just wanted to say that there is a lot I don't agree with in Ido's post. Some of the things he lists there are quite legitimate in my view. I wrote this post beccause it reminded me of some stuff \*I\* displike about interviews, nothing more\]_ Ido [writes about bad interviews](http://dotnetjunkies.com/WebLog/principal/archive/2004/06/06/15590.aspx). I had my own thoughs on this subject. but I wanted to add a point: One thing I don't really get is the Pen and Paper interview. Why on earth would I, as an interviewer, want to see a candidate write code on a piece of paper? There are many issues in this. To me this is nothing more that making life hard on the candidate. If you want to see them struggle with no intellisense just let them type in notepad. Heck, I 'd rather see how fast my candidate types, how they handle the computer and keyboard, how they navigate the software, I want to see just how proficient they are in the tools they are supposed to use everyday. Notepad is the least I would give anyone. Make them write code by hand? Sadism. Also - there is a lot of good in watching a person handle VS.Net (as they would in your real production environment). The more proficient they are in using VS.Net, the better you know just how much \*real\* hands-on expirience they have with it. Nothing says “I have very little experience in this“ than a person who couldn't find the “Output“ window in less than a second IMHO. Now, I agree, an interview should not just be about what you know, but about how you deal with \*not knowing\*. Fair enough. Give them the tools, give them a problem, and watch them \*try\* to solve it. See how they do in the real world. Hard? you bet. Stressfull? oh yes. Real-world? Definitely. I woudln't expect anything less from a person who I intend to hire. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 11, 2004 ### [Moving from a green screen is hard](https://osherove.com/blog/2004/6/11/moving-from-a-green-screen-is-hard.html) - Jun 9, 2004 ### [A GMail alternative, today](https://osherove.com/blog/2004/6/9/a-gmail-alternative-today.html) - Jun 4, 2004 ### [2nd Israeli Blogger dinner is a go!](https://osherove.com/blog/2004/6/4/2nd-israeli-blogger-dinner-is-a-go.html) - Jun 4, 2004 ### [I'm on Skype](https://osherove.com/blog/2004/6/4/im-on-skype.html) --- title: "And *another* blogger: Alon Fleiss" url: "https://osherove.com/blog/2004/6/8/and-another-blogger-alon-fleiss.md" canonical: "https://osherove.com/blog/2004/6/8/and-another-blogger-alon-fleiss.html" published: "2004-06-08T18:59:00" updated: "2004-06-08T18:59:00" tags: ["Blogging"] author: "Roy Osherove" description: "Yes, another blogger joins the sphere: This time it is no other than Alon Fleiss . Many Israeli devs know Alon from his many years of teaching experience in the field. Heck, even my wife studied at some of his classes…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # And \*another\* blogger: Alon Fleiss By Roy Osherove June 8, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 8, 2004; technical details may be outdated. Yes, another blogger joins the sphere: This time it is no other than [Alon Fleiss](http://dotnetjunkies.com/WebLog/alon). Many Israeli devs know Alon from his many years of teaching experience in the field. Heck, even my wife studied at some of his classes over at SELA university. They guy is a **guru** when it comes to low level C++,.Net and other interesting things. I think Alon might have some very interesting things to share with the community. Are we starting to see a trend here? I think we are. Coolness! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 11, 2004 ### [\[New Blog\] Sa'ar Carmi](https://osherove.com/blog/2004/6/11/new-blog-saar-carmi.html) - Jun 11, 2004 ### [\[New blog\] He Who Can Not Be Googled](https://osherove.com/blog/2004/6/11/new-blog-he-who-can-not-be-googled.html) - Jun 8, 2004 ### [Another Israeli .Net Blogger: Ohad Israeli](https://osherove.com/blog/2004/6/8/another-israeli-net-blogger-ohad-israeli.html) - Jun 8, 2004 ### [Israeli Blogger Dinner re-scheduled (yes, again)](https://osherove.com/blog/2004/6/8/israeli-blogger-dinner-re-scheduled-yes-again.html) --- title: "Another Israeli .Net Blogger: Ohad Israeli" url: "https://osherove.com/blog/2004/6/8/another-israeli-net-blogger-ohad-israeli.md" canonical: "https://osherove.com/blog/2004/6/8/another-israeli-net-blogger-ohad-israeli.html" published: "2004-06-08T13:33:00" updated: "2004-06-08T13:33:00" tags: ["Blogging"] author: "Roy Osherove" description: "Ohad Israeli, my co-worker and .Net guru , has just joined the blogging scene . Expect lots of cool and interesting stuff about low level internals and high level architecture posts. This guy is good." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another Israeli .Net Blogger: Ohad Israeli By Roy Osherove June 8, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 8, 2004; technical details may be outdated. Ohad Israeli, my co-worker and .Net guru , [has just joined the blogging scene](http://weblogs.asp.net/israelio). Expect lots of cool and interesting stuff about low level internals and high level architecture posts. This guy is **good.** ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 11, 2004 ### [\[New blog\] He Who Can Not Be Googled](https://osherove.com/blog/2004/6/11/new-blog-he-who-can-not-be-googled.html) - Jun 8, 2004 ### [And \*another\* blogger: Alon Fleiss](https://osherove.com/blog/2004/6/8/and-another-blogger-alon-fleiss.html) - Jun 8, 2004 ### [Israeli Blogger Dinner re-scheduled (yes, again)](https://osherove.com/blog/2004/6/8/israeli-blogger-dinner-re-scheduled-yes-again.html) - Jun 7, 2004 ### [Hebrew .Net weblogs now available!](https://osherove.com/blog/2004/6/7/hebrew-net-weblogs-now-available.html) --- title: "Israeli Blogger Dinner re-scheduled (yes, again)" url: "https://osherove.com/blog/2004/6/8/israeli-blogger-dinner-re-scheduled-yes-again.md" canonical: "https://osherove.com/blog/2004/6/8/israeli-blogger-dinner-re-scheduled-yes-again.html" published: "2004-06-08T13:30:00" updated: "2004-06-08T13:30:00" tags: ["Blogging"] author: "Roy Osherove" description: "Due to popular demand, I rescheduled the dinner again. Please mark your calendars people! Thursday, June 24, 21:00 2nd Israeli Blogger dinner. no excuses! 2nd Blogger Dinner Are you an Israeli Blogger or developer? do…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israeli Blogger Dinner re-scheduled (yes, again) By Roy Osherove June 8, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 8, 2004; technical details may be outdated. Due to popular demand, I rescheduled the dinner again. Please mark your calendars people! Thursday, June 24, 21:00 2nd Israeli Blogger dinner. **no excuses!** **2nd Blogger Dinner** Are you an Israeli Blogger or developer? do you read weblogs about .Net? [Omer](http://weblogs.asp.net/OKloeten/) has been kind enough to remind me that we still have not had a proper Blogger dinner. **we have our 2nd Blogger dinner.** **Date:** June 24 **Time**: 21:00 **Place**: some nice pub or restaurant somewhere in Tel-Aviv (got a suggestion? it must be kosher). **More** details to come. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 8, 2004 ### [And \*another\* blogger: Alon Fleiss](https://osherove.com/blog/2004/6/8/and-another-blogger-alon-fleiss.html) - Jun 8, 2004 ### [Another Israeli .Net Blogger: Ohad Israeli](https://osherove.com/blog/2004/6/8/another-israeli-net-blogger-ohad-israeli.html) - Jun 7, 2004 ### [Hebrew .Net weblogs now available!](https://osherove.com/blog/2004/6/7/hebrew-net-weblogs-now-available.html) - Jun 4, 2004 ### [2nd Israeli Blogger dinner is a go!](https://osherove.com/blog/2004/6/4/2nd-israeli-blogger-dinner-is-a-go.html) --- title: "[Problem and solution] Right-to-left menus get scrambled when form is maximized" url: "https://osherove.com/blog/2004/6/7/problem-and-solution-right-to-left-menus-get-scrambled-when.md" canonical: "https://osherove.com/blog/2004/6/7/problem-and-solution-right-to-left-menus-get-scrambled-when.html" published: "2004-06-07T17:45:00" updated: "2004-06-07T17:45:00" tags: [".Net Original"] author: "Roy Osherove" description: "Lots of weird things happen when you try to develop a right-to-left internationalized software package. For example, You *think* your menus on the main form are fine, in a right-to-left state, but when you *maximize*…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Problem and solution\] Right-to-left menus get scrambled when form is maximized By Roy Osherove June 7, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 7, 2004; technical details may be outdated. Lots of weird things happen when you try to develop a right-to-left internationalized software package. For example, You \*think\* your menus on the main form are fine, in a right-to-left state, but when you \*maximize\* the form all the menus suddenly are re-ordered left-to-right. Like magic. **How to fix it** - though it seems really stupid- it works. In this example I am making my form maximized from code along with the lines that changes the menus back to their rightful state: private void Form1\_Load(object sender, System.EventArgs e) { this.WindowState = FormWindowState.Maximized; // WORKAROUND RightToLeft Problem this.OnRightToLeftChanged(EventArgs.Empty); } ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 13, 2004 ### [Unit Testing in Whidbey - some pointers for improvement](https://osherove.com/blog/2004/6/13/unit-testing-in-whidbey-some-pointers-for-improvement.html) - Jun 12, 2004 ### [Writing a VS.Net Add-in, ugh](https://osherove.com/blog/2004/6/12/writing-a-vsnet-add-in-ugh.html) - Jun 7, 2004 ### [Israeli Blogger Dinner postponed](https://osherove.com/blog/2004/6/7/israeli-blogger-dinner-postponed.html) - Jun 4, 2004 ### [VB is rubbish? rubbish.](https://osherove.com/blog/2004/6/4/vb-is-rubbish-rubbish.html) --- title: "Hebrew .Net weblogs now available!" url: "https://osherove.com/blog/2004/6/7/hebrew-net-weblogs-now-available.md" canonical: "https://osherove.com/blog/2004/6/7/hebrew-net-weblogs-now-available.html" published: "2004-06-07T17:36:00" updated: "2004-06-07T17:36:00" tags: ["Blogging"] author: "Roy Osherove" description: "One big concern I hear from people I meet is that they really want to have a weblog, but they want to write in hebrew, not in english, simply because they can express themselves better in their mother tounge. That was a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hebrew .Net weblogs now available! By Roy Osherove June 7, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 7, 2004; technical details may be outdated. One big concern I hear from people I meet is that they really want to have a weblog, but they want to write in hebrew, not in english, simply because they can express themselves better in their mother tounge. That was a problem. Lots of the blogging community in Israel either resides in non-technical sites, and whatever blogging infrastracture setup for public use is usually without RSS support. Well, fear no more. [http://www.developers.org.il](http://www.developers.org.il/) is on its way to being the main source for technical knowledge for the development community in Israel. It is still in its infancy stages, but already you have some great [forums](http://forum.developers.org.il/Community/index.php), and various technical articles. Today I found out that you can even start you own blog over there : [http://www.developers.org.il/blogs/blogs.asp](http://www.developers.org.il/blogs/blogs.asp "http://www.developers.org.il/blogs/blogs.asp")  The blog can be written in hebrew and also gets its own RSS feed! nice. SO, let your fears vanish. I want to see some Israli .Net bloggers opening their Hebrew blog over there, and be sure to let me know about it, so I can put you on my .Net bloggers list at the front page :) Happy writing! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 8, 2004 ### [Another Israeli .Net Blogger: Ohad Israeli](https://osherove.com/blog/2004/6/8/another-israeli-net-blogger-ohad-israeli.html) - Jun 8, 2004 ### [Israeli Blogger Dinner re-scheduled (yes, again)](https://osherove.com/blog/2004/6/8/israeli-blogger-dinner-re-scheduled-yes-again.html) - Jun 4, 2004 ### [2nd Israeli Blogger dinner is a go!](https://osherove.com/blog/2004/6/4/2nd-israeli-blogger-dinner-is-a-go.html) - May 29, 2004 ### [FeedBurner? I like it.](https://osherove.com/blog/2004/5/29/feedburner-i-like-it.html) --- title: "Test Driven Development webcast" url: "https://osherove.com/blog/2004/6/7/test-driven-development-webcast.md" canonical: "https://osherove.com/blog/2004/6/7/test-driven-development-webcast.html" published: "2004-06-07T13:21:00" updated: "2004-06-07T13:21:00" tags: ["Agile Related"] author: "Roy Osherove" description: "Reminder to self: watch the on demand online webcast: Test Driven Development With James Newkirk" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven Development webcast By Roy Osherove June 7, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 7, 2004; technical details may be outdated. Reminder to self: watch the on demand online webcast: [Test Driven Development With James Newkirk](http://msevents.microsoft.com/CUI/EventDetail.aspx?culture=en-US&EventID=1032254189) ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 17, 2004 ### [Communicating Project Progress with a white board](https://osherove.com/blog/2004/6/17/communicating-project-progress-with-a-white-board.html) - Jun 17, 2004 ### [The Israeli Agile development workshop - New site](https://osherove.com/blog/2004/6/17/the-israeli-agile-development-workshop-new-site.html) - Jun 4, 2004 ### [When people don't want to do pair programming](https://osherove.com/blog/2004/6/4/when-people-dont-want-to-do-pair-programming.html) - May 19, 2004 ### [TDD workshop was great!](https://osherove.com/blog/2004/5/19/tdd-workshop-was-great.html) --- title: "Israeli Blogger Dinner postponed" url: "https://osherove.com/blog/2004/6/7/israeli-blogger-dinner-postponed.md" canonical: "https://osherove.com/blog/2004/6/7/israeli-blogger-dinner-postponed.html" published: "2004-06-07T07:24:00" updated: "2004-06-07T07:24:00" tags: [".Net Original"] author: "Roy Osherove" description: "Sorry. There's just too much to do :( But! Thursday, July 1st, 21:00 2nd Israeli Blogger dinner. no excuses! 2nd Blogger Dinner Are you an Israeli Blogger or developer? do you read weblogs about .Net? Omer has been kind…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israeli Blogger Dinner postponed By Roy Osherove June 7, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 7, 2004; technical details may be outdated. Sorry. There's just too much to do :( But! Thursday, July 1st, 21:00 2nd Israeli Blogger dinner. **no excuses!** **2nd Blogger Dinner** Are you an Israeli Blogger or developer? do you read weblogs about .Net? [Omer](http://weblogs.asp.net/OKloeten/) has been kind enough to remind me that we still have not had a proper Blogger dinner. **we have our 2nd Blogger dinner.** **Date:** Thursday, July 1st **Time**: 21:00 **Place**: some nice pub or restaurant somewhere in Tel-Aviv (got a suggestion? it must be kosher). **More** details to come. _PS:_ Expect news of the TDD workshop real soon. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 12, 2004 ### [Writing a VS.Net Add-in, ugh](https://osherove.com/blog/2004/6/12/writing-a-vsnet-add-in-ugh.html) - Jun 7, 2004 ### [\[Problem and solution\] Right-to-left menus get scrambled when form is maximized](https://osherove.com/blog/2004/6/7/problem-and-solution-right-to-left-menus-get-scrambled-when.html) - Jun 4, 2004 ### [VB is rubbish? rubbish.](https://osherove.com/blog/2004/6/4/vb-is-rubbish-rubbish.html) - Jun 4, 2004 ### [Solving weird problems, and making others solve them as well](https://osherove.com/blog/2004/6/4/solving-weird-problems-and-making-others-solve-them-as-well.html) --- title: "Method PageRank for Reflector" url: "https://osherove.com/blog/2004/6/4/method-pagerank-for-reflector.md" canonical: "https://osherove.com/blog/2004/6/4/method-pagerank-for-reflector.html" published: "2004-06-04T20:53:00" updated: "2004-06-04T20:53:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Just beautiful. Peli is creating an add-in to Reflector that simulates PageRank on methods - giving you the most called methods at the highest rank, allowing you to realize what you should be testing first in an…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Method PageRank for Reflector By Roy Osherove June 4, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published June 4, 2004; technical details may be outdated. Just beautiful. [Peli is creating an add-in to Reflector that simulates **PageRank** on methods](http://blog.dotnetwiki.org/archive/2004/06/04/317.aspx) - giving you the most called methods at the highest rank, allowing you to realize what you should be testing first in an existing application. Peli is slowly becoming one of the coolest bloggers around. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 11, 2004 ### [An interesting Memory Leak problem.](https://osherove.com/blog/2004/7/11/an-interesting-memory-leak-problem.html) - Jun 11, 2004 ### [Add Support for "Set" Collections to .NET](https://osherove.com/blog/2004/6/11/add-support-for-quotsetquot-collections-to-net.html) - Jun 4, 2004 ### [Wintellect Web-exclusive articles](https://osherove.com/blog/2004/6/4/wintellect-web-exclusive-articles.html) - Jun 2, 2004 ### [Getting \*really\* creative with IL graphs](https://osherove.com/blog/2004/6/2/getting-really-creative-with-il-graphs.html) --- title: "2nd Israeli Blogger dinner is a go!" url: "https://osherove.com/blog/2004/6/4/2nd-israeli-blogger-dinner-is-a-go.md" canonical: "https://osherove.com/blog/2004/6/4/2nd-israeli-blogger-dinner-is-a-go.html" published: "2004-06-04T20:00:00" updated: "2004-06-04T20:00:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "2nd Blogger Dinner Are you an Israeli Blogger or developer? do you read weblogs about .Net? Omer has been kind enough to remind me that we still have not had a proper blogger dinner. So how does this tuesday sound? we…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 2nd Israeli Blogger dinner is a go! By Roy Osherove June 4, 2004 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 4, 2004; technical details may be outdated. **2nd Blogger Dinner** Are you an Israeli Blogger or developer? do you read weblogs about .Net? [Omer](http://weblogs.asp.net/OKloeten/) has been kind enough to remind me that we still have not had a proper blogger dinner. So how does this tuesday sound? **we have our 2nd blogger dinner.** ~**Date:** Tuesday June 8th~ \[see [here for details](http://weblogs.asp.net/rosherove/archive/2004/06/07/149970.aspx) of new date and time\] **Time**: 21:00 **Place**: some nice pub or restaurant somewhere in Tel-Aviv (got a suggestion? it must be kosher). **More** details to come. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 8, 2004 ### [Israeli Blogger Dinner re-scheduled (yes, again)](https://osherove.com/blog/2004/6/8/israeli-blogger-dinner-re-scheduled-yes-again.html) - Jun 7, 2004 ### [Hebrew .Net weblogs now available!](https://osherove.com/blog/2004/6/7/hebrew-net-weblogs-now-available.html) - May 29, 2004 ### [FeedBurner? I like it.](https://osherove.com/blog/2004/5/29/feedburner-i-like-it.html) - May 27, 2004 ### [Another Israeli Blogger](https://osherove.com/blog/2004/5/27/another-israeli-blogger.html) --- title: "I'm on Skype" url: "https://osherove.com/blog/2004/6/4/im-on-skype.md" canonical: "https://osherove.com/blog/2004/6/4/im-on-skype.html" published: "2004-06-04T14:26:00" updated: "2004-06-04T14:26:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Well, I bought myself a pair of headphones with a mic attached, and installed Skype. I feel chatty, so if you feel like it, and see me online, Skype me (surprisingly, my user name is royosherove). If you've talked to me…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm on Skype By Roy Osherove June 4, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 4, 2004; technical details may be outdated. Well, I bought myself a pair of headphones with a mic attached, and installed Skype. I feel chatty, so if you feel like it, and see me online, Skype me (surprisingly, my user name is royosherove). If you've talked to me through the blogsphere, or on MSN messenger - I'd love to hear from you. I'll be offline in the next few hours (Dinner with the folks..) but catch me later. I'll be happy to talk with you in person! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 8, 2004 ### ["Pen And Paper" interviews](https://osherove.com/blog/2004/6/8/quotpen-and-paperquot-interviews.html) - Jun 4, 2004 ### [2nd Israeli Blogger dinner is a go!](https://osherove.com/blog/2004/6/4/2nd-israeli-blogger-dinner-is-a-go.html) - Jun 4, 2004 ### [\[ot\] Hebrew blogging attempt](https://osherove.com/blog/2004/6/4/ot-hebrew-blogging-attempt.html) - Jun 4, 2004 ### [Bad interviews are your best friend](https://osherove.com/blog/2004/6/4/bad-interviews-are-your-best-friend.html) --- title: "VB is rubbish? rubbish." url: "https://osherove.com/blog/2004/6/4/vb-is-rubbish-rubbish.md" canonical: "https://osherove.com/blog/2004/6/4/vb-is-rubbish-rubbish.html" published: "2004-06-04T12:38:00" updated: "2004-06-04T12:38:00" tags: [".Net Original"] author: "Roy Osherove" description: "Bob powell writes a scathing post about how VB is rubbish . I have to say, as a Mort myself, some of what he says is true, and has been said before, but some of it is just total miundestanding of the reasons for the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VB is rubbish? rubbish. By Roy Osherove June 4, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 4, 2004; technical details may be outdated. [Bob powell writes a scathing post about how VB is rubbish](http://bobpowelldotnet.blogspot.com/2004_06_01_bobpowelldotnet_archive.html#108608385170604631). I have to say, as a Mort myself, some of what he says is true, and has been said before, but some of it is just total miundestanding of the reasons for the differences between the languages. I'll tryo to answer some of it: . _“The crummy thing has case insensitive names so POINT = Point = point which is totally ridiculous! This is not something I've just discovered BTW.. I just feel compelled to stand on top of a building somewhere and scream about what total rubbish VB really is!”_ Really? I thought is was th other way around when I started with C#. Why the hell do I want canse sensitivity? so I can write code that has multiple variables with the same name only differed by casing? how maintainable, readable and understandable is that? _Why don't VB programmers feel insulted at having "advanced members" hidden from them by default?_ We do. It is insulting. I wish that changed. _What is it with "overloads overrides" I mean, really, it's one or the other right? Sure, you can override an overload but the method signature is defined in the base class so henceforth, it's just an override. If you have a method name with the same name as some other and the parameter list is different, its just an overload. Why should you even need to declare it?? The blasted compiler already knows but no. we have to write the "overloads" in explicitly. If you don't write it in, the compiler tells you to put it in! WHATS WRONG WITH DOING IT IN THE COMPILER LIKE A REAL PROGRAMMING LANGUAGE WOULD???? _ It's so explicit so that the code's intention is more redable. I don't write code for my compiler. I mostly write code for the next developer who maintains my code. They don't have to go browsing to see if somethign is an overload, override or any such other “hidden” behavior. Sure, sometimes it gets alittle wordy, but I'd rather have more words and understand what I'm looking at that having something a only a compiler understands. _Me? MyBase? These are terms for 7 year old children! _um... ok... _Line continuation characters??? AARRGGHH!!_ Yeah that sucks too. I wish there was a way to incorportate a feature like “option lineMarkers 0“ or something. _As a C, C++, C# programmer, when I have to program in VB because of the requirements of a client, I get the distinct impression that I've become a second-class citizen who operates on a strict need-to-know basis and who is credited with little or no intelligence by the designers of the language. Am I the only person who feels this way? _you're kinda overreacting.  a lot of this is simply culture shock, nothing more. that said, Sometimes I feel the same way too. We are not alone. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 7, 2004 ### [\[Problem and solution\] Right-to-left menus get scrambled when form is maximized](https://osherove.com/blog/2004/6/7/problem-and-solution-right-to-left-menus-get-scrambled-when.html) - Jun 7, 2004 ### [Israeli Blogger Dinner postponed](https://osherove.com/blog/2004/6/7/israeli-blogger-dinner-postponed.html) - Jun 4, 2004 ### [Solving weird problems, and making others solve them as well](https://osherove.com/blog/2004/6/4/solving-weird-problems-and-making-others-solve-them-as-well.html) - Jun 4, 2004 ### [Planning a daily, automatic build](https://osherove.com/blog/2004/6/4/planning-a-daily-automatic-build.html) --- title: "Wintellect Web-exclusive articles" url: "https://osherove.com/blog/2004/6/4/wintellect-web-exclusive-articles.md" canonical: "https://osherove.com/blog/2004/6/4/wintellect-web-exclusive-articles.html" published: "2004-06-04T11:26:00" updated: "2004-06-04T11:26:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "From Dino's blog , it looks like the guys at Wintellect have started their own set of exclusive articles publishing from employees.There is a very good starting set over there already. Now, if they'd only publish an RSS…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Wintellect Web-exclusive articles By Roy Osherove June 4, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published June 4, 2004; technical details may be outdated. From [Dino's blog](http://weblogs.asp.net/despos/archive/2004/06/03/147485.aspx), it looks like the guys at Wintellect have started their [own set of exclusive articles](http://www.wintellect.com/resources/articles/exclusiveart.aspx) publishing from employees.There is a very good starting set over there already. Now, if they'd only publish an RSS feed it'd be perfect. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 11, 2004 ### [Add Support for "Set" Collections to .NET](https://osherove.com/blog/2004/6/11/add-support-for-quotsetquot-collections-to-net.html) - Jun 4, 2004 ### [Method PageRank for Reflector](https://osherove.com/blog/2004/6/4/method-pagerank-for-reflector.html) - Jun 2, 2004 ### [Getting \*really\* creative with IL graphs](https://osherove.com/blog/2004/6/2/getting-really-creative-with-il-graphs.html) - Jun 2, 2004 ### [TechEd Europe sessions I'd love to be at](https://osherove.com/blog/2004/6/2/teched-europe-sessions-id-love-to-be-at.html) --- title: "New ASP.NET Issue Tracker Starter Kit" url: "https://osherove.com/blog/2004/6/4/new-aspnet-issue-tracker-starter-kit.md" canonical: "https://osherove.com/blog/2004/6/4/new-aspnet-issue-tracker-starter-kit.html" published: "2004-06-04T11:23:00" updated: "2004-06-04T11:23:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "There's a new ASP.NET Community starter kit : Issue Tracker (via Early Adopter ). This joins in nicely to something I've been wanting to blog about: there's a real lack of good free issue tracking software. I asked…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New ASP.NET Issue Tracker Starter Kit By Roy Osherove June 4, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published June 4, 2004; technical details may be outdated. There's a new ASP.NET Community starter kit : [Issue Tracker](http://www.asp.net/Default.aspx?tabindex=9&tabid=47) (via [Early Adopter](http://ea.3leaf.com/2004/06/new_aspnet_issu.html)). This joins in nicely to something I've been wanting to blog about: there's a real lack of good free issue tracking software. I asked around and no one can tell me of a free good one, especially something with a rich client front end, that's suited for a place with more than 1 developer. This is of course despite that fact that people seem to **love** re-inventing the wheel all over again at each company and create an issue tracker of their own. go figure. Maybe this one will be a good compromise. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jul 22, 2004 ### [MbUnit 2.17 released - with the cool database attributes I talked about](https://osherove.com/blog/2004/7/22/mbunit-217-released-with-the-cool-database-attributes-i-talk.html) - Jul 22, 2004 ### [\[CoolTool\] BlogWave: Scheduled RSS feed generation and publishing from multiple sources](https://osherove.com/blog/2004/7/22/cooltool-blogwave-scheduled-rss-feed-generation-and-publishi.html) - Jun 4, 2004 ### [Free home edition of XMLSpy](https://osherove.com/blog/2004/6/4/free-home-edition-of-xmlspy.html) - Jun 4, 2004 ### [Managed Smart Documents Wrapper](https://osherove.com/blog/2004/6/4/managed-smart-documents-wrapper.html) --- title: "Free home edition of XMLSpy" url: "https://osherove.com/blog/2004/6/4/free-home-edition-of-xmlspy.md" canonical: "https://osherove.com/blog/2004/6/4/free-home-edition-of-xmlspy.html" published: "2004-06-04T10:54:00" updated: "2004-06-04T10:54:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "XMLSpy has a free home edition ! (via DevHawk ) coolness" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free home edition of XMLSpy By Roy Osherove June 4, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published June 4, 2004; technical details may be outdated. XMLSpy has a [free home edition](http://www.altova.com/support_freexmlspyhome.asp)! (via [DevHawk](http://www.altova.com/support_freexmlspyhome.asp)) coolness ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jul 22, 2004 ### [\[CoolTool\] BlogWave: Scheduled RSS feed generation and publishing from multiple sources](https://osherove.com/blog/2004/7/22/cooltool-blogwave-scheduled-rss-feed-generation-and-publishi.html) - Jun 4, 2004 ### [New ASP.NET Issue Tracker Starter Kit](https://osherove.com/blog/2004/6/4/new-aspnet-issue-tracker-starter-kit.html) - Jun 4, 2004 ### [Managed Smart Documents Wrapper](https://osherove.com/blog/2004/6/4/managed-smart-documents-wrapper.html) - May 29, 2004 ### [\[Cool Tool\] Dataset Quick Watch "visualizer" Add-in for VS.Net 2003](https://osherove.com/blog/2004/5/29/cool-tool-dataset-quick-watch-quotvisualizerquot-add-in-for.html) --- title: "[ot] Hebrew blogging attempt" url: "https://osherove.com/blog/2004/6/4/ot-hebrew-blogging-attempt.md" canonical: "https://osherove.com/blog/2004/6/4/ot-hebrew-blogging-attempt.html" published: "2004-06-04T09:34:00" updated: "2004-06-04T09:34:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This blog will be a small attempt to write in hebrew. ???? ?????. ?????? ?????? ????? ???." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[ot\] Hebrew blogging attempt By Roy Osherove June 4, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 4, 2004; technical details may be outdated. This blog will be a small attempt to write in hebrew. ???? ?????. ?????? ?????? ????? ???. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 4, 2004 ### [2nd Israeli Blogger dinner is a go!](https://osherove.com/blog/2004/6/4/2nd-israeli-blogger-dinner-is-a-go.html) - Jun 4, 2004 ### [I'm on Skype](https://osherove.com/blog/2004/6/4/im-on-skype.html) - Jun 4, 2004 ### [Bad interviews are your best friend](https://osherove.com/blog/2004/6/4/bad-interviews-are-your-best-friend.html) - Jun 2, 2004 ### [Worst UI ever?](https://osherove.com/blog/2004/6/2/worst-ui-ever.html) --- title: "When people don't want to do pair programming" url: "https://osherove.com/blog/2004/6/4/when-people-dont-want-to-do-pair-programming.md" canonical: "https://osherove.com/blog/2004/6/4/when-people-dont-want-to-do-pair-programming.html" published: "2004-06-04T09:30:00" updated: "2004-06-04T09:30:00" tags: ["Agile Related"] author: "Roy Osherove" description: "At one of the projects I had a chance to manage, I had to teach an entire teams (3 people) how to do pair programming. I didn't call it “Pair programming” though, as that would have brought on the FUDs, but I just made…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # When people don't want to do pair programming By Roy Osherove June 4, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published June 4, 2004; technical details may be outdated. At one of the projects I had a chance to manage, I had to teach an entire teams (3 people) how to do pair programming. I didn't call it “Pair programming” though, as that would have brought on the FUDs, but I just made people work with each other, test-driven development style. People seemed to be fond with the idea and have acknowledged their belief the TDD has indeed helped them a lot, but after a  while they stopped doing pair programming. When asked why arn't they working on something together they responded that “it just seems unnecessary”. How do you respond to that? do you just let them go on without pairing? This was not a project under my control in the sense of staff, and I don't believe in forcing people to pair, because that leads to unproductive behavior. So they went on doing TDD without pairing. The code was still much better, but they definitely took more time to do it. My point? there isn't one, really. Just wanted to share that sometimes not everything is a rose garden. be prepared. Have you met such a situation? how did you deal with it? ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 17, 2004 ### [The Israeli Agile development workshop - New site](https://osherove.com/blog/2004/6/17/the-israeli-agile-development-workshop-new-site.html) - Jun 7, 2004 ### [Test Driven Development webcast](https://osherove.com/blog/2004/6/7/test-driven-development-webcast.html) - May 19, 2004 ### [TDD workshop was great!](https://osherove.com/blog/2004/5/19/tdd-workshop-was-great.html) - May 17, 2004 ### [Announcing: Israel Agile Development mailing list](https://osherove.com/blog/2004/5/17/announcing-israel-agile-development-mailing-list.html) --- title: "Solving weird problems, and making others solve them as well" url: "https://osherove.com/blog/2004/6/4/solving-weird-problems-and-making-others-solve-them-as-well.md" canonical: "https://osherove.com/blog/2004/6/4/solving-weird-problems-and-making-others-solve-them-as-well.html" published: "2004-06-04T09:09:00" updated: "2004-06-04T09:09:00" tags: [".Net Original"] author: "Roy Osherove" description: "Scott blogs about a weird problem he had with ASP.Net, and then asks “Could this be a good problem solver question for an interview?” Certainly, some people would take days to solve this problem. Personally I think I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Solving weird problems, and making others solve them as well By Roy Osherove June 4, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 4, 2004; technical details may be outdated. [Scott blogs about](http://www.hanselman.com/blog/PermaLink.aspx?guid=c5c30e5f-87b5-441d-a225-86bc0555a4f0) a weird problem he had with ASP.Net, and then asks “Could this be a good problem solver question for an interview?” Certainly, some people would take days to solve this problem. Personally I think I would have taken less than 10 minutes. You see, I find that a lot of times the brute force approach works:) A re-boot would have solved it... Of course - brute force often leaves you asking “so what actually went wrong there?“ , but [sometimes perfectionism is not the best thing](http://www.joelonsoftware.com/items/2004/04/22.html). But is it good for an interview? maybe just to see people coping with it on a timed basis. There should be **no need** to actually _finish_ on time, but just so that the interviewer would get a sense of how the person goes on to solve a problem. I think facing a problem like this I'd be kinda getting a pale-faced look, but I'd be able to solve it, especially now that Scott blogged about it. It's going to be plastered over the first search result in google tomorrow.... :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 7, 2004 ### [Israeli Blogger Dinner postponed](https://osherove.com/blog/2004/6/7/israeli-blogger-dinner-postponed.html) - Jun 4, 2004 ### [VB is rubbish? rubbish.](https://osherove.com/blog/2004/6/4/vb-is-rubbish-rubbish.html) - Jun 4, 2004 ### [Planning a daily, automatic build](https://osherove.com/blog/2004/6/4/planning-a-daily-automatic-build.html) - Jun 4, 2004 ### [More discussion about MS and agile methodologies](https://osherove.com/blog/2004/6/4/more-discussion-about-ms-and-agile-methodologies.html) --- title: "Planning a daily, automatic build" url: "https://osherove.com/blog/2004/6/4/planning-a-daily-automatic-build.md" canonical: "https://osherove.com/blog/2004/6/4/planning-a-daily-automatic-build.html" published: "2004-06-04T08:30:00" updated: "2004-06-04T08:30:00" tags: [".Net Original"] author: "Roy Osherove" description: "One of the tasks I'm facing at a project these days is coming up with a automatic build configuration for the project. the idea is having a “daily build” for an existing project which comprises of roughly 110 sub…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Planning a daily, automatic build By Roy Osherove June 4, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 4, 2004; technical details may be outdated. One of the tasks I'm facing at a project these days is coming up with a automatic build configuration for the project. the idea is having a “daily build” for an existing project which comprises of roughly 110 sub projects (imagine loading **that** solution in vs.net!). It is quite fun. Like solving a big puzzle. Here's a little about what I envision. Feel free to comment. **The tool:** The automatic build tool that we Will be using is [FinalBuilder](https://osherove.com/blog/2004/6/4/FinalBuilder). It has roved itself in many areas I've seen, including some of the most [respected](http://www.larkware.com/) [members](http://www.joelonsoftware.com/articles/fog0000000023.html) in the community that use it on a daily basis. _Why not the free tools out there?_ Let's face it - MSBuild, NAnt and all their friends, unless I'm mistaken, are pretty sucky in the visual development and maintenance department. I made a promise to myself I won't do manual XML editing unless I am forced to by gun point or a salary decrease. Neither has happened. yet. **The architecture:** A build server A source control server A backup server A testing server A staging environment (multiple machines imitating the machines at the production location) A remote staging environment(less machines but more similar security restrictions). **In broad strokes a daily build would mean:** The build server takes out all source control from source  control build it all (including all versions, debug and release) Back up to zip files using incremented version ,date and time into the backup server Deploy automatically onto the testing machine all the part of the distributed application in question, allowing the team to run smoke test on the built application. However, there are more processes. After smoke testing and more rigorous tests, another automatic script will deploy a version into the staging server. It Will use the backed up zip files from the back up server for this. Load testing and others will performed on the stating servers. After that another automatic deployment will take place - onto the **remote** staging servers. These serves sit in the same place as the real production ones, and so enjoy the same security benefits , meaning we can test what happens behind the real firewall and active directory and all that. Once tests have passed there, we can use another auto deploy into production. These are the basic steps. It's pretty fun planning this, kinda like building your own big ant farm. One of the biggest issues we are facing and still haven't solved is this: Databases. In many cases, making a new release might mean just a few changes on the database data, and nothing more. There needs to be a way to get just those changes from the dev DB and into the test DB, automatically. It gets a little tricker. We also want the database to be backed up along with each version's source files into the backup server. A binary backup will do in some cases (multiple databases here, but some databases need to be retained only in schema and not in binary form. certainly this will prove to be the biggest challenge in this process. I'd be interested to hear how other people get around this problem. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 4, 2004 ### [VB is rubbish? rubbish.](https://osherove.com/blog/2004/6/4/vb-is-rubbish-rubbish.html) - Jun 4, 2004 ### [Solving weird problems, and making others solve them as well](https://osherove.com/blog/2004/6/4/solving-weird-problems-and-making-others-solve-them-as-well.html) - Jun 4, 2004 ### [More discussion about MS and agile methodologies](https://osherove.com/blog/2004/6/4/more-discussion-about-ms-and-agile-methodologies.html) - Jun 4, 2004 ### [Managed Smart Documents Wrapper](https://osherove.com/blog/2004/6/4/managed-smart-documents-wrapper.html) --- title: "Bad interviews are your best friend" url: "https://osherove.com/blog/2004/6/4/bad-interviews-are-your-best-friend.md" canonical: "https://osherove.com/blog/2004/6/4/bad-interviews-are-your-best-friend.html" published: "2004-06-04T08:09:00" updated: "2004-06-04T08:09:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Recently a frined who was looking for a dev job approached me before an important interview. He said one thing that I just had to share. he said “They're going to test me on my knowledge, what if I don't know the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Bad interviews are your best friend By Roy Osherove June 4, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 4, 2004; technical details may be outdated. Recently a frined who was looking for a dev job approached me before an important interview. He said one thing that I just had to share. he said _“They're going to test me on my knowledge, what if I don't know the answers?”_ The first point is that **nobody** knows all the answers to all the questions, so get used to it. In fact, I remember several interviews at which I felt pretty stupid. I'm sure most developrs have. Second of all, getting good questions which you didn't even consider is **one of the best things for you career**. They are big red flags (in most cases) telling you what you **really** need to know in order to be regarded as someone who knows they're stuff.  After the interview, try to remember all the questions you were asked that you didn't know the answer to. At home, go through each one and **learn** the topic until  you can answer the question in your sleep. Here's something that's happened to me, in more than on occasion. I came in for a job interview at this place, and I had very little experience in .Net. But I was eager to learn and had great confidence. The interviewer asked me these questions, it kind of went something like this: **Q**: _So, do you know what reflection is?_ **A**: um.. no, not really. but I learn really quickly. **Q**. _hmm.ok , have you done anything with attributes?_ **A**: um.. nope. **Q**: _what abot remoting?_ **A**: sorry - didn't get a chance to. And so it went on and on. At the end of the interview I had quite a list of subjects to go through. First thing I did was buy [Ingo's remoting book](https://www.amazon.com/exec/obidos/ASIN/1590590252/iserializable-20) (still one of the best I've read in a technical sense) and study it until I could tell people I knew what remoting was. Than I studied all the other questions I had no idea about. 2 months later, if I had gone to that same job interview, I'd pass with flying colors. Another one, from a different interview: **Q**: _You have 3 hours to make a winform application that recieves data from the DB and shows it in a form with a master grid and detail controls, all updateable (3 tables in the DB)._ **A:** 3 hours later, I did it, but not completely. It was quite a nightmare working with datasets and the .Net datagrid at that time. needless to say I had zero experience working with databinding in winforms at that time, so It was a nightmare. Doing things the old VB6 way in .Net proved quite a challenge. **Q**: _You didn't get the job. You are still stuck in the past - working too hard. You have no idea how to do proper databinding with master detail records in .Net. This same job could be done in 20 -40 mins._ Oh, I knew that I blew it long before I got the answer. I knew something was terribly wrong with what I did. So, the weeks after that I made myself do this same project over and over until I did it the _proper_ way with data binding and all. BTW - that's how I wrote the little article: [Winform Data binding lessons learned](http://weblogs.asp.net/rosherove/story/9088.aspx). So what I'm saying is - treat job interview as an opportunity to do some industrial espionage - Learn from the interviewer what you need to know for the next interview.  These are the opportunities you are given. don't miss them. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 4, 2004 ### [I'm on Skype](https://osherove.com/blog/2004/6/4/im-on-skype.html) - Jun 4, 2004 ### [\[ot\] Hebrew blogging attempt](https://osherove.com/blog/2004/6/4/ot-hebrew-blogging-attempt.html) - Jun 2, 2004 ### [Worst UI ever?](https://osherove.com/blog/2004/6/2/worst-ui-ever.html) - Jun 2, 2004 ### [In search of Bingo](https://osherove.com/blog/2004/6/2/in-search-of-bingo.html) --- title: "More discussion about MS and agile methodologies" url: "https://osherove.com/blog/2004/6/4/more-discussion-about-ms-and-agile-methodologies.md" canonical: "https://osherove.com/blog/2004/6/4/more-discussion-about-ms-and-agile-methodologies.html" published: "2004-06-04T07:07:00" updated: "2004-06-04T07:07:00" tags: [".Net Original"] author: "Roy Osherove" description: "This post is a retort to this: http://geekswithblogs.net/jglynn/archive/2004/05/10/4751.aspx Jay hopes that my comments about adopting XP at Microsoft will never be heard. My answer to that would be hopefully never. In…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More discussion about MS and agile methodologies By Roy Osherove June 4, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 4, 2004; technical details may be outdated. This post is a  retort to this: [http://geekswithblogs.net/jglynn/archive/2004/05/10/4751.aspx](http://geekswithblogs.net/jglynn/archive/2004/05/10/4751.aspx)  Jay hopes that my [comments](http://weblogs.asp.net/rosherove/archive/2004/05/08/128219.aspx) about adopting XP at Microsoft will never be heard. _My answer to that would be hopefully never. In his post, Roy ponders how the XP process would work on projects as large and vast as what Microsoft produces. Is he really serious? Can something like Word be developed using XP?  I can't possibly see how._ Well, Jay , XP has worked on a **very** large project [over at Chrysler](http://www.xprogramming.com/Practices/xpractices.htm) a few years back (many years back actually). There's no reason to think that due process will not lead to success on even bigger ones. It's been working on many a projects around the world and for the past couple of years has been gaining more and more recognition as something that's definitely worth looking at and learning from. I myself have found that even taking \*some\* of the concepts it uses provides for huge benefits. And you know what? I'm sure MS is doing Unit testing somewhere behind the iron curtain. Granted, it's not as “evolved” yet, but its definitely something every good developer will want to know about. And MS is filled with those. More from Jay: _Microsoft needs to stay out of this area. They are best suited at making tools._ Making tools? how about Operating systems? programming languages? _I think it would become very difficult if Microsoft started shoving processes down my throat._ What have you been programming with so far in your N-tier applications? a few words: DNA, MSF, and parts of those are all in most of the development methodologies and architectures existing today. Like it or not. _And heaven forbid that they should start tieing features of the tools with processes._ Hardly. Tyeing in and facilitating certain abilities are two separate things. You won't **have** to do XP on Whidbey, but you **could** much easier than in previous versions. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 4, 2004 ### [Solving weird problems, and making others solve them as well](https://osherove.com/blog/2004/6/4/solving-weird-problems-and-making-others-solve-them-as-well.html) - Jun 4, 2004 ### [Planning a daily, automatic build](https://osherove.com/blog/2004/6/4/planning-a-daily-automatic-build.html) - Jun 4, 2004 ### [Managed Smart Documents Wrapper](https://osherove.com/blog/2004/6/4/managed-smart-documents-wrapper.html) - Jun 2, 2004 ### [Israeli .Net User group meeting today - you coming?](https://osherove.com/blog/2004/6/2/israeli-net-user-group-meeting-today-you-coming.html) --- title: "Managed Smart Documents Wrapper" url: "https://osherove.com/blog/2004/6/4/managed-smart-documents-wrapper.md" canonical: "https://osherove.com/blog/2004/6/4/managed-smart-documents-wrapper.html" published: "2004-06-04T06:19:00" updated: "2004-06-04T06:19:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "Oh, i know there are some people looking exactly for something like this : Vertigo Software's Managed Smart Documents WrapperT simplifies Microsoft® Office Smart Document Development with a new, object-oriented,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Managed Smart Documents Wrapper By Roy Osherove June 4, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published June 4, 2004; technical details may be outdated. Oh, i know there are some people looking exactly for [something like this](http://www.vertigosoftware.com/wrapper.htm): **Vertigo Software's Managed Smart Documents WrapperT simplifies Microsoft® Office Smart Document Development with a new, object-oriented, declarative programming model, supported with new project templates, samples, and documentation.** yes, it's free (subject to EULA) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 4, 2004 ### [Planning a daily, automatic build](https://osherove.com/blog/2004/6/4/planning-a-daily-automatic-build.html) - Jun 4, 2004 ### [More discussion about MS and agile methodologies](https://osherove.com/blog/2004/6/4/more-discussion-about-ms-and-agile-methodologies.html) - Jun 2, 2004 ### [Israeli .Net User group meeting today - you coming?](https://osherove.com/blog/2004/6/2/israeli-net-user-group-meeting-today-you-coming.html) - May 31, 2004 ### [The Regulator 2.0.3 - \*finally\* with a help file!](https://osherove.com/blog/2004/5/31/the-regulator-203-finally-with-a-help-file.html) --- title: "Worst UI ever?" url: "https://osherove.com/blog/2004/6/2/worst-ui-ever.md" canonical: "https://osherove.com/blog/2004/6/2/worst-ui-ever.html" published: "2004-06-02T21:25:00" updated: "2004-06-02T21:25:00" tags: ["Off Topic"] author: "Roy Osherove" description: "oh. my. god. I downloaded and installed this just so that I could believe what I had seen, and yes. it was very real. I couldn't stop looking at it. It was like watching an accident. You just can't look awaym no matter…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Worst UI ever? By Roy Osherove June 2, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 2, 2004; technical details may be outdated. [oh. my. god.](http://thedailywtf.com/archive/2004/06/02/188.aspx) I downloaded and installed this just so that I could believe what I had seen, and yes. it was very real. I couldn't stop looking at it. It was like watching an accident. You just can't look awaym no matter how horrible it is. Now, here's the question: If you didn't know what the name of the program was, how long would it take you to figure out that is is actually a file manager? with two panes on left and right? It took me a few minutes just to get over the visual shock. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 4, 2004 ### [\[ot\] Hebrew blogging attempt](https://osherove.com/blog/2004/6/4/ot-hebrew-blogging-attempt.html) - Jun 4, 2004 ### [Bad interviews are your best friend](https://osherove.com/blog/2004/6/4/bad-interviews-are-your-best-friend.html) - Jun 2, 2004 ### [In search of Bingo](https://osherove.com/blog/2004/6/2/in-search-of-bingo.html) - Jun 2, 2004 ### [I've been contacted...](https://osherove.com/blog/2004/6/2/ive-been-contacted.html) --- title: "Getting *really* creative with IL graphs" url: "https://osherove.com/blog/2004/6/2/getting-really-creative-with-il-graphs.md" canonical: "https://osherove.com/blog/2004/6/2/getting-really-creative-with-il-graphs.html" published: "2004-06-02T17:58:00" updated: "2004-06-02T17:58:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Holy moly, this guy is good . He's also the one behind mbUnit, which is a pretty interesting Unit testing framework. With the kind help of Lutz Roeder , I have recompiled the IL Grapher into a Reflector Add-in..." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Getting \*really\* creative with IL graphs By Roy Osherove June 2, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published June 2, 2004; technical details may be outdated. Holy moly, [this guy is **good**](http://blog.dotnetwiki.org/archive/2004/05/31/287.aspx). He's also the one behind mbUnit, which is a pretty interesting Unit testing framework. _With the kind help of_ [_Lutz Roeder_](http://www.aisto.com/roeder/)_, I have recompiled the_ [_IL Grapher_](http://blog.dotnetwiki.org/archive/2004/05/11/198.aspx) _into a_ [_Reflector_](http://www.aisto.com/roeder/dotnet/) _Add-in..._ [![](https://osherove.com/img/wb/393ea74c_blog.dotnetwiki.org_images_8_o_ilgraphinreflector.PNG)](http://blog.dotnetwiki.org/archive/2004/05/31/287.aspx) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 4, 2004 ### [Method PageRank for Reflector](https://osherove.com/blog/2004/6/4/method-pagerank-for-reflector.html) - Jun 4, 2004 ### [Wintellect Web-exclusive articles](https://osherove.com/blog/2004/6/4/wintellect-web-exclusive-articles.html) - Jun 2, 2004 ### [TechEd Europe sessions I'd love to be at](https://osherove.com/blog/2004/6/2/teched-europe-sessions-id-love-to-be-at.html) - May 31, 2004 ### [.Net daily affirmation](https://osherove.com/blog/2004/5/31/net-daily-affirmation.html) --- title: "TechEd Europe sessions I'd love to be at" url: "https://osherove.com/blog/2004/6/2/teched-europe-sessions-id-love-to-be-at.md" canonical: "https://osherove.com/blog/2004/6/2/teched-europe-sessions-id-love-to-be-at.html" published: "2004-06-02T07:58:00" updated: "2004-06-02T07:58:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Ever since Tech-Ed Israel I have a whole new respect for Clemens . Not only technological, but also presentation wise. I think he was one of th best, if not the best presenter there. And then I find out he's doing these…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TechEd Europe sessions I'd love to be at By Roy Osherove June 2, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published June 2, 2004; technical details may be outdated. Ever since Tech-Ed Israel I have a whole new respect for [Clemens](http://staff.newtelligence.net/clemensv/). Not only technological, but also presentation wise. I think he was one of th best, if not **the** best presenter there. And then I find out [he's doing these presentations at Tech-Ed Europe:](http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=68872086-b344-431b-a6fa-9b358aa386e1) **CTS308 Building Proseware, Inc. – a non-trivial service-oriented system (just me)** Proseware, Inc. is an online bookseller. A big one. They have warehouses all over Europe, have millions of customers, sell millions of different items and process tens of thousands of orders every day. So imagine they came around to you and asked you to build a system for them. What would you do? In this session, we explain what we would do and what we did. The Proseware Services Demo consists of 14 autonomous, collaborating services, designed with best-practice architecture principles and implemented on Windows Server 2003. Proseware leverages the power of technologies such as Enterprise Services, ASP.NET Web Services, the Microsoft Message Queue, Microsoft Web Services Enhancements 2.0 to implement a large scale, robust, secure and scalable service oriented system that shows how all these technologies can be put to work effectively and that reflects the complexity of real-life enterprise applications. **ARC230 The Nerd, the Suit and the Fortune Teller (sharing the stage with Pat Helland and Rafal Lukawiecki)** Object Orientation promised to deliver us from all IT evil and to ensure longevity and reuse of software. With today’s business requirements changing faster than it takes to compile an application and an ever-present call for integration, even that approach does not seem to work. However, it seems that Service Oriented Architecture (SOA), Operational Service Orientation of IT departments (MOF, ITIL), Service-Based Interoperability (WS-Guidelines) and Service-Based User Interfaces (messenger, wizards) are quietly converging onto a new paradigm in IT. For the lack of a better name, we call it “Service Oriented Convergence”. Come to this session and see if this concept has any merit and value to you. Rather than endure a typical PowerPoint presentation, you will observe a discussion between: an experienced developer, an unforgiving businessman in charge of IT and a visionary technology innovator. On your behalf, they will battle out their differing points of view and leave you with useful guidance on ways to handle this very important issue that will affect your job, work and future. Oh, and we hope this session is unlikely to be boring. Hey [Yosi](http://blogs.msdn.com/yosit) \- how about brining Clemens back for another round?? ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 4, 2004 ### [Wintellect Web-exclusive articles](https://osherove.com/blog/2004/6/4/wintellect-web-exclusive-articles.html) - Jun 2, 2004 ### [Getting \*really\* creative with IL graphs](https://osherove.com/blog/2004/6/2/getting-really-creative-with-il-graphs.html) - May 31, 2004 ### [.Net daily affirmation](https://osherove.com/blog/2004/5/31/net-daily-affirmation.html) - May 29, 2004 ### [\[Cool Tool\] Dataset Quick Watch "visualizer" Add-in for VS.Net 2003](https://osherove.com/blog/2004/5/29/cool-tool-dataset-quick-watch-quotvisualizerquot-add-in-for.html) --- title: "Israeli .Net User group meeting today - you coming?" url: "https://osherove.com/blog/2004/6/2/israeli-net-user-group-meeting-today-you-coming.md" canonical: "https://osherove.com/blog/2004/6/2/israeli-net-user-group-meeting-today-you-coming.html" published: "2004-06-02T06:30:00" updated: "2004-06-02T06:30:00" tags: [".Net Original"] author: "Roy Osherove" description: "Next Meeting: June 2 17:30 - 18:00 Assembly 18:00 - 18:05 Introduction and miscellaneous 18:05 - 19:15 “Challenges and Solutions in Building Rich-Client Applications – Part 1” Israel Kehat, I.K.S. - Israel Kehat…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israeli .Net User group meeting today - you coming? By Roy Osherove June 2, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 2, 2004; technical details may be outdated. **Next Meeting:  June 2**  17:30 - 18:00   Assembly 18:00 - 18:05   Introduction and miscellaneous 18:05 - 19:15    “Challenges and Solutions in Building Rich-Client Applications – Part 1”                         Israel Kehat, I.K.S.  - Israel Kehat Solutions 19:15 - 19:30    Break 19:30 – 19:45   "Hatzilu !"                         Open session, with questions and answers/ideas from everyone 19:45 - 20:45   “Challenges and Solutions in Building Rich-Client Applications – Part 2”                         Israel Kehat, I.K.S.  - Israel Kehat Solutions Now - here's the deal - can you guess which user group this is? VB.Net, C++/C#,.Net Architects or Web developers? (aside from the time of the month thing) No. you can't. So you should just be there if you can. It's not about the naming. .Net is the underlying concept between all of these groups, and so it does not matter what .Net language you use in your day to day job. It's the framework, stupid :) [See you there!](http://www.renaissance.co.il/ivbug/) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 4, 2004 ### [More discussion about MS and agile methodologies](https://osherove.com/blog/2004/6/4/more-discussion-about-ms-and-agile-methodologies.html) - Jun 4, 2004 ### [Managed Smart Documents Wrapper](https://osherove.com/blog/2004/6/4/managed-smart-documents-wrapper.html) - May 31, 2004 ### [The Regulator 2.0.3 - \*finally\* with a help file!](https://osherove.com/blog/2004/5/31/the-regulator-203-finally-with-a-help-file.html) - May 28, 2004 ### [The Regulator 2.0.2](https://osherove.com/blog/2004/5/28/the-regulator-202.html) --- title: "In search of Bingo" url: "https://osherove.com/blog/2004/6/2/in-search-of-bingo.md" canonical: "https://osherove.com/blog/2004/6/2/in-search-of-bingo.html" published: "2004-06-02T03:54:00" updated: "2004-06-02T03:54:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I was just taking a look at the sneak peek video that Carl And Rory have released on to the the world from Tech-Ed. The first thing I noticed is that the video quality is very good. The second thing is that Rory is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # In search of Bingo By Roy Osherove June 2, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 2, 2004; technical details may be outdated. I was just taking a look at the [sneak peek video](http://perseus.franklins.net/[email removed]) that [Carl And Rory](http://www.franklins.net/dotnetrocks) have released on to the the world from Tech-Ed. The first thing I noticed is that the video quality is very good. The second thing is that Rory is funny on video as well. The third thing is that the “full” video is probably going to be very interesting. Hey you guys should do a montage of the cool stuff on the video (like a trailer). Anyway - the movie is nice, but it runs much deeper than a couple of guys talking about Steve ballmer and making faces for the camera. It does, haven't you noticed? Sure it can be called “Carl And Rory's day out on the town” but if you **really** dig deep into the movie and look for the **real** plot, you'd see that it can also be called “_In search of Bingo_”. Notice at the end of the movie there's a girl named Tanya that Carl signs her RD bingo card? look closely from the beginning of the movie through out. Look behind Rory's back as he speaks. Try to hear the voices: **In Search of Bingo** **Act 1 - proper introductions:** _Tanya speaks to some RD and is asking him to sign her bingo card. She then asks him if he knows where she can find the other RDs on the card.He points to two directions, to the left of Rory and to Carl as he's talking to the camera._ Tanya_: “.... Sign this...”_ RD_: Sure......_ Tanya_: ...Where can I find....Alright_ RD_: \[Points o Carl\] He's on the card \[points to other person\] He's on the card_ Tanya_: \[looks at Carl suspiciously\] Him? \[looks at card again\]_ RD_: Yep.... \[points at her card\]_ Tanya_: Oh!.... oh! it's the same row!..._ _\[Carl and Rory keep talking, while the RD explains to Tanya how Bingo works\]_ Tanya_: Alright, thanks!_ _\[continues on to the next RD to the left of Rory and gets an autograph while Carl and Rory talk some more\]_ **Act 2 - the reckoning** _\[As Rory does his second Ballmer impersonation, Tanya looks shyly at the camera\]_ Tanya turns to Carl_: Can you..._ Carl_: Oh sure! \[signs\]_ and the rest is history. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 4, 2004 ### [Bad interviews are your best friend](https://osherove.com/blog/2004/6/4/bad-interviews-are-your-best-friend.html) - Jun 2, 2004 ### [Worst UI ever?](https://osherove.com/blog/2004/6/2/worst-ui-ever.html) - Jun 2, 2004 ### [I've been contacted...](https://osherove.com/blog/2004/6/2/ive-been-contacted.html) - May 29, 2004 ### [Typical Norway Scenario](https://osherove.com/blog/2004/5/29/typical-norway-scenario.html) --- title: "I've been contacted..." url: "https://osherove.com/blog/2004/6/2/ive-been-contacted.md" canonical: "https://osherove.com/blog/2004/6/2/ive-been-contacted.html" published: "2004-06-02T03:23:00" updated: "2004-06-02T03:23:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I always thought I was a pretty regular guy, You know - get up, go to work, come home, watch TV dude. But lately I've been getting contacted by all sorts of very high ranking people. And by high ranking I mean really…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I've been contacted... By Roy Osherove June 2, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 2, 2004; technical details may be outdated. I always thought I was a pretty regular guy, You know - get up, go to work, come home, watch TV dude. But lately I've been getting contacted by all sorts of very high ranking people. And by high ranking I mean **really** high ranking. Royalty ranking.  Why Just this morning I was contacted by _Daniel Kabila_ the son of the late Democratic Republic of Congo President _Laurent Desire Kabila ._ He needed my help with some money problem he had. But that's not all. Just a few days ago, _another_ royalty from Congo, this time a respected leader who is fleeting the country, asked for my help with some financial matters (I cannot say say who and what - I promised!). And here I thought the world was a cold lonely place. Obviously lots of royalty are developers in their hearts. They have read my weblog and decided that who else but a developer from Israel would be able to help them. Sure, I can see that. In fact, I'm having some issues with my mortgage and am seriously considering contacting some poor sap in.. I don't know, Spain? to help me with them. I'm sure he could help. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 2, 2004 ### [Worst UI ever?](https://osherove.com/blog/2004/6/2/worst-ui-ever.html) - Jun 2, 2004 ### [In search of Bingo](https://osherove.com/blog/2004/6/2/in-search-of-bingo.html) - May 29, 2004 ### [Typical Norway Scenario](https://osherove.com/blog/2004/5/29/typical-norway-scenario.html) - May 27, 2004 ### [\[OT\] Why you should never put your picture on the Internet](https://osherove.com/blog/2004/5/27/ot-why-you-should-never-put-your-picture-on-the-internet.html) --- title: "The Regulator 2.0.3 - *finally* with a help file!" url: "https://osherove.com/blog/2004/5/31/the-regulator-203-finally-with-a-help-file.md" canonical: "https://osherove.com/blog/2004/5/31/the-regulator-203-finally-with-a-help-file.html" published: "2004-05-31T19:29:00" updated: "2004-05-31T19:29:00" tags: [".Net Original"] author: "Roy Osherove" description: "What Is The Regulator? Go download it It's finally done. I took the time and made a Help file for The Regulator. It's now bundled along with the new version up on SourceForge - 2.0.3. Go get it . You can also download…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator 2.0.3 - \*finally\* with a help file! By Roy Osherove May 31, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 31, 2004; technical details may be outdated. [**What Is The Regulator?**](http://regulator.sourceforge.net/)    [**Go download it**](http://sourceforge.net/projects/regulator) It's finally done. I took the time and made a Help file for The Regulator. It's now bundled along with the new version up on SourceForge - [2.0.3. Go get it](https://sourceforge.net/projects/regulator/).  You can also download just the Help file as a separate zip file is you really want to. The help file also lists some of my Regex articles and other resources. Do you have an article you want to contribute to the Regulator Help file? drop me a line and I'll see if the article fits in content-wise. If so, I'll put it in the next version along with a nice credit in the help file. How's that? Mind you - the help integration was the only change in this version. SO if you have version 2.02 the you already have the same functionality - but non of the cool help file tips & tricks! (including keyboard shortcuts...)  :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 4, 2004 ### [Managed Smart Documents Wrapper](https://osherove.com/blog/2004/6/4/managed-smart-documents-wrapper.html) - Jun 2, 2004 ### [Israeli .Net User group meeting today - you coming?](https://osherove.com/blog/2004/6/2/israeli-net-user-group-meeting-today-you-coming.html) - May 28, 2004 ### [The Regulator 2.0.2](https://osherove.com/blog/2004/5/28/the-regulator-202.html) - May 28, 2004 ### [Opened: C# and .Net framework forum at Developers.org.il](https://osherove.com/blog/2004/5/28/opened-c-and-net-framework-forum-at-developersorgil.html) --- title: ".Net daily affirmation" url: "https://osherove.com/blog/2004/5/31/net-daily-affirmation.md" canonical: "https://osherove.com/blog/2004/5/31/net-daily-affirmation.html" published: "2004-05-31T03:37:00" updated: "2004-05-31T03:37:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "YOU ARE NOT INADEQUATE . You do NOT have to refactor all your code. You do NOT have to keep up with the latest news from microsoft, and know everythnig there is to know about longhorn, whidbey, avalon, XAML, indigo and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net daily affirmation By Roy Osherove May 31, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 31, 2004; technical details may be outdated. _[YOU ARE NOT INADEQUATE](http://www.secretgeek.net/Comments_inadequate.asp)._ - _You do NOT have to refactor all your code._ - _You do NOT have to keep up with the latest news from microsoft, and know everythnig there is to know about longhorn, whidbey, avalon, XAML, indigo and star wars III._ - _You do not have to ..._ \[via [Leon](http://www.secretgeek.net/Comments_inadequate.asp) via [](http://radio.weblogs.com/0001011/2004/05/30.html#a7653)[Scoble](http://scoble.weblogs.com/)\] Excellent post. go read it all. Sure made **me** feel better about myself :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 2, 2004 ### [Getting \*really\* creative with IL graphs](https://osherove.com/blog/2004/6/2/getting-really-creative-with-il-graphs.html) - Jun 2, 2004 ### [TechEd Europe sessions I'd love to be at](https://osherove.com/blog/2004/6/2/teched-europe-sessions-id-love-to-be-at.html) - May 29, 2004 ### [\[Cool Tool\] Dataset Quick Watch "visualizer" Add-in for VS.Net 2003](https://osherove.com/blog/2004/5/29/cool-tool-dataset-quick-watch-quotvisualizerquot-add-in-for.html) - May 28, 2004 ### [Workaround for Help Issue in Community Technology Preview May 2004](https://osherove.com/blog/2004/5/28/workaround-for-help-issue-in-community-technology-preview-ma.html) --- title: "[Cool Tool] Dataset Quick Watch \"visualizer\" Add-in for VS.Net 2003" url: "https://osherove.com/blog/2004/5/29/cool-tool-dataset-quick-watch-quotvisualizerquot-add-in-for.md" canonical: "https://osherove.com/blog/2004/5/29/cool-tool-dataset-quick-watch-quotvisualizerquot-add-in-for.html" published: "2004-05-29T14:21:00" updated: "2004-05-29T14:21:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "Finally! someone came up with a way to view the contents of a Dataset object while debugging: The Dataset QuickWatch project allows you to view the contents of a dataset just like the “visualizers” in Whidbey (well,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool Tool\] Dataset Quick Watch "visualizer" Add-in for VS.Net 2003 By Roy Osherove May 29, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 29, 2004; technical details may be outdated. Finally! someone came up with a way to view the contents of a Dataset object while debugging: [The Dataset QuickWatch project](http://www.codeproject.com/csharp/DSWatch.asp) allows you to view the contents of a dataset just like the “visualizers” in Whidbey (well, almost. you select the expression, right click it and hit the “Dataset Quick Watch” menu. Same difference) Thank you! (via Ohad) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 2, 2004 ### [TechEd Europe sessions I'd love to be at](https://osherove.com/blog/2004/6/2/teched-europe-sessions-id-love-to-be-at.html) - May 31, 2004 ### [.Net daily affirmation](https://osherove.com/blog/2004/5/31/net-daily-affirmation.html) - May 28, 2004 ### [Workaround for Help Issue in Community Technology Preview May 2004](https://osherove.com/blog/2004/5/28/workaround-for-help-issue-in-community-technology-preview-ma.html) - May 26, 2004 ### [Cool VS 2005 "Burton" videos](https://osherove.com/blog/2004/5/26/cool-vs-2005-quotburtonquot-videos.html) --- title: "FeedBurner? I like it." url: "https://osherove.com/blog/2004/5/29/feedburner-i-like-it.md" canonical: "https://osherove.com/blog/2004/5/29/feedburner-i-like-it.html" published: "2004-05-29T13:31:00" updated: "2004-05-29T13:31:00" tags: ["Blogging"] author: "Roy Osherove" description: "[Update: of course one small caveat is that the refresh rate of the feed is taking a bit. THis post hasn't yet been downloaded using the new feed although is was written about 4 minutes ago. Maybe I'm just impetiant…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # FeedBurner? I like it. By Roy Osherove May 29, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 29, 2004; technical details may be outdated. _\[Update: of course one small caveat is that the refresh rate of the feed is taking a bit. THis post hasn't yet been downloaded using the new feed although is was written about 4 minutes ago. Maybe I'm just impetiant that way huh?\]_ [FeedBurner](http://www.feedburner.com/) seems nice. I've learned about it through [BLTS blog](http://www.netcrucible.com/blog/PermaLink.aspx?guid=82b57f79-28e4-4b39-8a07-90a0f91da2b7). They basically take your RSS feed and add layers on top of it to provide some pretty cool services: - Formatting the feed to accommodate lots of newsreaders who should know better - Automatically transform Amazon links in the post into an Amazon Referrer ID link (Let's give this book a try shall we? [Coder To Developer](https://www.amazon.com/exec/obidos/tg/detail/-/078214327X) by [Mike Gunderloy](http://www.larkware.com/) is a great book) - beautify and reformat the raw XML feed into browser friendly human readable format with a customizable explanation of what this feed is. - Read stats - some more cool stuff.... And it appears free too! so - try this feed on for size. tell me if you like it: [http://feeds.feedburner.com/Iserializable](http://feeds.feedburner.com/Iserializable)    ![](https://osherove.com/img/wb/937a9dd4_www.feedburner.com_fb_images_pub_fbapix.gif) One important thing I can think of that this service can enable is “follow-me“ subscriptions, in that even if you change blogs of more to different url's people can still subscribe to the same feed, and all the author has to do is change the feed source in the FeedBurner properties page. nice. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 7, 2004 ### [Hebrew .Net weblogs now available!](https://osherove.com/blog/2004/6/7/hebrew-net-weblogs-now-available.html) - Jun 4, 2004 ### [2nd Israeli Blogger dinner is a go!](https://osherove.com/blog/2004/6/4/2nd-israeli-blogger-dinner-is-a-go.html) - May 27, 2004 ### [Another Israeli Blogger](https://osherove.com/blog/2004/5/27/another-israeli-blogger.html) - May 24, 2004 ### [\[OT\] Sad joke](https://osherove.com/blog/2004/5/24/ot-sad-joke.html) --- title: "Typical Norway Scenario" url: "https://osherove.com/blog/2004/5/29/typical-norway-scenario.md" canonical: "https://osherove.com/blog/2004/5/29/typical-norway-scenario.html" published: "2004-05-29T12:18:00" updated: "2004-05-29T12:18:00" tags: ["Off Topic"] author: "Roy Osherove" description: "OSLO (Reuters) - One of the Nordic region's biggest power stations shut Friday to let an expert tune a grand piano for a concert undisturbed by the hum of huge hydroelectric generators. \"When you put a big piano in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Typical Norway Scenario By Roy Osherove May 29, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 29, 2004; technical details may be outdated. [OSLO (Reuters)](http://www.reuters.com/newsArticle.jhtml?type=oddlyEnoughNews&storyID=5288949) \- One of the Nordic region's biggest power stations shut Friday to let an expert tune a grand piano for a concert undisturbed by the hum of huge hydroelectric generators. "When you put a big piano in there, you also need to tune it, and that is very difficult if the machines are running," said Tron Engebrethsen, senior vice president at Norwegian power company Statkraft. The generators will be switched back on after Friday evening's concert which is being staged in an enormous underground hall at the 1,120-megawatt Sima power plant. \------------------ Having been to Norway this eerily makes sense to me :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 2, 2004 ### [In search of Bingo](https://osherove.com/blog/2004/6/2/in-search-of-bingo.html) - Jun 2, 2004 ### [I've been contacted...](https://osherove.com/blog/2004/6/2/ive-been-contacted.html) - May 27, 2004 ### [\[OT\] Why you should never put your picture on the Internet](https://osherove.com/blog/2004/5/27/ot-why-you-should-never-put-your-picture-on-the-internet.html) - May 26, 2004 ### [ok, I get it](https://osherove.com/blog/2004/5/26/ok-i-get-it.html) --- title: "The Regulator 2.0.2" url: "https://osherove.com/blog/2004/5/28/the-regulator-202.md" canonical: "https://osherove.com/blog/2004/5/28/the-regulator-202.html" published: "2004-05-28T17:07:00" updated: "2004-05-28T17:07:00" tags: [".Net Original"] author: "Roy Osherove" description: "What Is The Regulator? Go download it Notes: This is a minor bug fix release. This release mainly deals with Intellisense support. for example, you can now *disable* Intellisense altogether through the options dialog.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator 2.0.2 By Roy Osherove May 28, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 28, 2004; technical details may be outdated. [**What Is The Regulator?**](http://regulator.sourceforge.net/)    [**Go download it**](http://sourceforge.net/projects/regulator) **Notes:** This is a minor bug fix release. This release mainly deals with Intellisense support. for example, you can now \*disable\* Intellisense altogether through the options dialog. Also some Intellisense bugs were fixed, but it is still less than perfect. I hope to get more time and work on that specifically on the next release. \-------------------------------------------------------------------------------- **Changes: **version 2.0.2 \------------------ \-added: Enable/Disable Intellisense support through the main options dialog \-fixed: settings were not saved on application exit (except for proxy settings) \-fixed: Intellisense now is less intrusive, but still not perfect. hence the option to turn it off if you want to. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 2, 2004 ### [Israeli .Net User group meeting today - you coming?](https://osherove.com/blog/2004/6/2/israeli-net-user-group-meeting-today-you-coming.html) - May 31, 2004 ### [The Regulator 2.0.3 - \*finally\* with a help file!](https://osherove.com/blog/2004/5/31/the-regulator-203-finally-with-a-help-file.html) - May 28, 2004 ### [Opened: C# and .Net framework forum at Developers.org.il](https://osherove.com/blog/2004/5/28/opened-c-and-net-framework-forum-at-developersorgil.html) - May 17, 2004 ### [Announcing: Israel Agile Development mailing list](https://osherove.com/blog/2004/5/17/announcing-israel-agile-development-mailing-list.html) --- title: "Workaround for Help Issue in Community Technology Preview May 2004" url: "https://osherove.com/blog/2004/5/28/workaround-for-help-issue-in-community-technology-preview-ma.md" canonical: "https://osherove.com/blog/2004/5/28/workaround-for-help-issue-in-community-technology-preview-ma.html" published: "2004-05-28T15:43:00" updated: "2004-05-28T15:43:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "I'm starting to dabble a little with Whidbey CTP from may, so you may start to see some posting on thie new technology. be warned. for now, this helped: Workaround for Help Issue in Community Technology Preview May 2004…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Workaround for Help Issue in Community Technology Preview May 2004 By Roy Osherove May 28, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 28, 2004; technical details may be outdated. I'm starting to dabble a little with Whidbey CTP from may, so you may start to see some posting on thie new technology. be warned. for now, this helped: [Workaround for Help Issue in Community Technology Preview May 2004](http://blogs.msdn.com/robcaron/archive/2004/05/27/143485.aspx) fixed it right up! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 31, 2004 ### [.Net daily affirmation](https://osherove.com/blog/2004/5/31/net-daily-affirmation.html) - May 29, 2004 ### [\[Cool Tool\] Dataset Quick Watch "visualizer" Add-in for VS.Net 2003](https://osherove.com/blog/2004/5/29/cool-tool-dataset-quick-watch-quotvisualizerquot-add-in-for.html) - May 26, 2004 ### [Cool VS 2005 "Burton" videos](https://osherove.com/blog/2004/5/26/cool-vs-2005-quotburtonquot-videos.html) - May 23, 2004 ### [\[Book\] "Slack", Where Learning Happens](https://osherove.com/blog/2004/5/23/book-quotslackquot-where-learning-happens.html) --- title: "Opened: C# and .Net framework forum at Developers.org.il" url: "https://osherove.com/blog/2004/5/28/opened-c-and-net-framework-forum-at-developersorgil.md" canonical: "https://osherove.com/blog/2004/5/28/opened-c-and-net-framework-forum-at-developersorgil.html" published: "2004-05-28T13:54:00" updated: "2004-05-28T13:54:00" tags: [".Net Original"] author: "Roy Osherove" description: "I'm proud to announce that the Forums section of www.Developers.org.il is now re-opened with a new look and feel (and a new system underneath - lots of bugs with the old one). I'll be managing the C# and .Net framework…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Opened: C\# and .Net framework forum at Developers.org.il By Roy Osherove May 28, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 28, 2004; technical details may be outdated. I'm proud to announce that the Forums section of [www.Developers.org.il](http://www.developers.org.il/) is now re-opened with a new look and feel (and a new system underneath - lots of bugs with the old one). I'll be managing the [C# and .Net framework forum](http://forum.developers.org.il/Community/viewforum.php?f=3) so feel free to drop in ans ask questions relating to those subjects. [www.Developers.org.il](http://www.developers.org.il/)  is claiming(trying?) to be main site for Israeli developers of all languages, and is of course, in Hebrew (so are the forums). Some people find it easier to read in native tongue which I totally respect. In other news, here's a little tidbit that I already found through the forum: [Object Oriented Programming with C# (in Hebrew)](http://www.corner.co.il/index.htm) You can read the whole book aniline. The book ain't that great, but if you want to learn C# programming and you **absolutely** do not want to deal with English - this is a place to start with. **PS:** Another Israeli .Net forum that is very active is this one: [http://www.tapuz.co.il/tapuzforum/main/forumpage.asp?forum=831](http://www.tapuz.co.il/tapuzforum/main/forumpage.asp?forum=831) lots of great answers there too so you might want to try and check out there as well. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 31, 2004 ### [The Regulator 2.0.3 - \*finally\* with a help file!](https://osherove.com/blog/2004/5/31/the-regulator-203-finally-with-a-help-file.html) - May 28, 2004 ### [The Regulator 2.0.2](https://osherove.com/blog/2004/5/28/the-regulator-202.html) - May 17, 2004 ### [Announcing: Israel Agile Development mailing list](https://osherove.com/blog/2004/5/17/announcing-israel-agile-development-mailing-list.html) - May 17, 2004 ### [Test Driven Development Workshop this Wednesday](https://osherove.com/blog/2004/5/17/test-driven-development-workshop-this-wednesday.html) --- title: "Another Israeli Blogger" url: "https://osherove.com/blog/2004/5/27/another-israeli-blogger.md" canonical: "https://osherove.com/blog/2004/5/27/another-israeli-blogger.html" published: "2004-05-27T17:50:00" updated: "2004-05-27T17:50:00" tags: ["Blogging"] author: "Roy Osherove" description: "Yorai is another israeli developer/blogger - only in Delphi. Still, I think there's currently so few of us that he gets a link in my Bloggers section. Plus, he seems to be writing some interesting stuff, also about .Net…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another Israeli Blogger By Roy Osherove May 27, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 27, 2004; technical details may be outdated. [Yorai](http://www.yoraispage.com/) is another israeli developer/blogger - only in Delphi. Still, I think there's currently so few of us that he gets a link in my Bloggers section.  Plus, he seems to be writing some interesting stuff, also about .Net and I'm not sure but it looks like he's doing Delphi .Net? Just [look at this post and](http://www.yoraispage.com/articles/20040517.asp) tell me nothing smells **really really** familiar. And I'll repeat my mantra: \* are you an Israeli .Net blogger and I don't know you? contact me through the blog and tell me about it and I'll add you to my list. \* Do you want to start your own .Net blog? tell me about it too. I'll refer you to the best place to start. P.S: Yorai posted about this, which I hope sounds as funny as it reads: [The Shining, in 30 seconds, and re-enacted by bunnies](http://www.angryalien.com/0504/shiningbunnies.html). From the same people that gave you [The Exorcist](http://www.angryalien.com/0204/exorcistbunnies.html) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 4, 2004 ### [2nd Israeli Blogger dinner is a go!](https://osherove.com/blog/2004/6/4/2nd-israeli-blogger-dinner-is-a-go.html) - May 29, 2004 ### [FeedBurner? I like it.](https://osherove.com/blog/2004/5/29/feedburner-i-like-it.html) - May 24, 2004 ### [\[OT\] Sad joke](https://osherove.com/blog/2004/5/24/ot-sad-joke.html) - May 22, 2004 ### [Recommended C# Bloggers](https://osherove.com/blog/2004/5/22/recommended-c-bloggers.html) --- title: "[OT] Why you should never put your picture on the Internet" url: "https://osherove.com/blog/2004/5/27/ot-why-you-should-never-put-your-picture-on-the-internet.md" canonical: "https://osherove.com/blog/2004/5/27/ot-why-you-should-never-put-your-picture-on-the-internet.html" published: "2004-05-27T17:31:00" updated: "2004-05-27T17:31:00" tags: ["Off Topic"] author: "Roy Osherove" description: "[Update: thanks to SecretGeek for giving an alternative link BTW: looks like I shouldn't have posted *my* picture either :) ] Until I get my act back together and return to “normal” programming, here's another thing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] Why you should never put your picture on the Internet By Roy Osherove May 27, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 27, 2004; technical details may be outdated. _\[Update: thanks to_ [_SecretGeek_](http://www.secretgeek.net/) _for giving an alternative link_ _BTW: looks like_ [_I shouldn't have posted \*my\* picture either_](http://www.secretgeek.net/royo_is_a.asp) _:) \]_ Until I get my act back together and return to “normal” programming,  here's another thing that made me smile even when I was really down: This is why you should [never put your picture on the Internet](http://www.binaryshadow.com/images/Never.html) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 2, 2004 ### [I've been contacted...](https://osherove.com/blog/2004/6/2/ive-been-contacted.html) - May 29, 2004 ### [Typical Norway Scenario](https://osherove.com/blog/2004/5/29/typical-norway-scenario.html) - May 26, 2004 ### [ok, I get it](https://osherove.com/blog/2004/5/26/ok-i-get-it.html) - May 26, 2004 ### [The daily WTF](https://osherove.com/blog/2004/5/26/the-daily-wtf.html) --- title: "Cool VS 2005 \"Burton\" videos" url: "https://osherove.com/blog/2004/5/26/cool-vs-2005-quotburtonquot-videos.md" canonical: "https://osherove.com/blog/2004/5/26/cool-vs-2005-quotburtonquot-videos.html" published: "2004-05-26T21:20:00" updated: "2004-05-26T21:20:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Some very cool VSTS videos here: http://www.activewin.com/awin/comments.asp?HeadlineIndex=24465 (via Early Adopter ) VSTS: Unit and Load Testing Demos Unit testing seems to be finally fully supported. Also auto…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool VS 2005 "Burton" videos By Roy Osherove May 26, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 26, 2004; technical details may be outdated. Some very cool VSTS videos here: [http://www.activewin.com/awin/comments.asp?HeadlineIndex=24465](http://www.activewin.com/awin/comments.asp?HeadlineIndex=24465)  (via [Early Adopter](http://ea.3leaf.com/2004/05/visual_studio_2_1.html)) [**VSTS: Unit and Load Testing Demos**](http://www.microsoft.com/downloads/details.aspx?FamilyID=88f7cb8b-473b-4ed5-ba47-abbc06d0048e&DisplayLang=en) Unit testing seems to be finally fully supported. Also auto generating unit tests, code coverage and more! [**VSTS: Source Code Control and Item Tracking Demo**](http://www.microsoft.com/downloads/details.aspx?FamilyID=b14a5274-ddfd-4333-94cc-17e63138c25a&DisplayLang=en) Finally! no more turning to half assed, disgusting looking, un-usable freeware bug tracking (no I don't like web based interfaces) finally it is right inside vs.net. [**VSTS 2005: Static Code Analysis Demos**](http://www.microsoft.com/downloads/details.aspx?FamilyID=77c4e99a-b035-43ab-a0a4-b52e29e2a89c&DisplayLang=en) [**VSTS: Project Management Tools Demo**](http://www.microsoft.com/downloads/details.aspx?FamilyID=0d7624d0-f81d-41b5-b297-616fa32f60a0&DisplayLang=en) You can post bugs either from withing vs.net, excel, ms project and other places, and then just “sync“ them all together. very nice. Very nice. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 29, 2004 ### [\[Cool Tool\] Dataset Quick Watch "visualizer" Add-in for VS.Net 2003](https://osherove.com/blog/2004/5/29/cool-tool-dataset-quick-watch-quotvisualizerquot-add-in-for.html) - May 28, 2004 ### [Workaround for Help Issue in Community Technology Preview May 2004](https://osherove.com/blog/2004/5/28/workaround-for-help-issue-in-community-technology-preview-ma.html) - May 23, 2004 ### [\[Book\] "Slack", Where Learning Happens](https://osherove.com/blog/2004/5/23/book-quotslackquot-where-learning-happens.html) - May 21, 2004 ### [Useful config files scenarios to keep on hand](https://osherove.com/blog/2004/5/21/useful-config-files-scenarios-to-keep-on-hand.html) --- title: "ok, I get it" url: "https://osherove.com/blog/2004/5/26/ok-i-get-it.md" canonical: "https://osherove.com/blog/2004/5/26/ok-i-get-it.html" published: "2004-05-26T08:51:00" updated: "2004-05-26T08:51:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Heh. Scott says that some people in Tech-Ed are now wearing shirts saying “Rory was invited”. Made me laugh out loud (though not in a evil “MUHahaha” laugh, sorry)." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ok, I get it By Roy Osherove May 26, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 26, 2004; technical details may be outdated. Heh. [Scott says](http://www.hanselman.com/blog/PermaLink.aspx?guid=35613ea5-feac-4fc4-810a-1763fa4c0232) that some people in Tech-Ed are now wearing shirts saying “Rory was invited”. Made me laugh out loud (though not in a evil “MUHahaha” laugh, sorry). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 29, 2004 ### [Typical Norway Scenario](https://osherove.com/blog/2004/5/29/typical-norway-scenario.html) - May 27, 2004 ### [\[OT\] Why you should never put your picture on the Internet](https://osherove.com/blog/2004/5/27/ot-why-you-should-never-put-your-picture-on-the-internet.html) - May 26, 2004 ### [The daily WTF](https://osherove.com/blog/2004/5/26/the-daily-wtf.html) - May 23, 2004 ### [If you're a developer in Norway, Mercatus is hiring](https://osherove.com/blog/2004/5/23/if-youre-a-developer-in-norway-mercatus-is-hiring.html) --- title: "The daily WTF" url: "https://osherove.com/blog/2004/5/26/the-daily-wtf.md" canonical: "https://osherove.com/blog/2004/5/26/the-daily-wtf.html" published: "2004-05-26T08:47:00" updated: "2004-05-26T08:47:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This site is starting a funny little trend: The Daily WTF speaking about annoying development stuff. He also encourages that you send your own WTFs over through a contact form on the site and he'll blog them. (via Matt…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The daily WTF By Roy Osherove May 26, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 26, 2004; technical details may be outdated. This site is starting a funny little trend: [The Daily WTF](http://thedailywtf.com/) speaking about annoying development stuff.  He also encourages that you send your own WTFs over through a contact form on the site and he'll blog them. (via [Matt](http://www.mattberther.com/2004/05/000479.html), the “other” ISerializable ;)  ) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 27, 2004 ### [\[OT\] Why you should never put your picture on the Internet](https://osherove.com/blog/2004/5/27/ot-why-you-should-never-put-your-picture-on-the-internet.html) - May 26, 2004 ### [ok, I get it](https://osherove.com/blog/2004/5/26/ok-i-get-it.html) - May 23, 2004 ### [If you're a developer in Norway, Mercatus is hiring](https://osherove.com/blog/2004/5/23/if-youre-a-developer-in-norway-mercatus-is-hiring.html) - May 21, 2004 ### [Comment spam wave](https://osherove.com/blog/2004/5/21/comment-spam-wave.html) --- title: "[OT] Sad joke" url: "https://osherove.com/blog/2004/5/24/ot-sad-joke.md" canonical: "https://osherove.com/blog/2004/5/24/ot-sad-joke.html" published: "2004-05-24T06:56:00" updated: "2004-05-24T06:56:00" tags: ["Blogging"] author: "Roy Osherove" description: "This joke came in the mail today, and while I'm not usually into politics, I just had to write this down. It would have been really funny if it wasn't so sad (and don't flame me, this is all in good, satirical, dark…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] Sad joke By Roy Osherove May 24, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 24, 2004; technical details may be outdated. This joke came in the mail today, and while I'm not usually into politics, I just had to write this down. It would have been really funny if it wasn't so sad (and don't flame me, this is all in good, satirical, dark humor): A guy in Paris sees a pit bull attacking a toddler.  He kills the pit bull and saves the child's life.  Reporters swarmed the fellow. "Tell us! What's your name? All Paris will love you!  Tomorrow's headline  will be: ****"Parisian Hero Saves Girl from Vicious Dog!"**** The guy says, "Well, I'm not from Paris.  "Reporters: "That's OK. Then the whole of France  will love you and tomorrow's headline will read:  ****'French Hero Saves Girl from Vicious Dog!'"****  The guy says, "I'm not from France, either."  Reporters: "That's OK also. All Europe will love you.  Tomorrow's headlines will shout:  ****"European Hero Saves Girl from Vicious Dog!"****  The guy says, "I'm not from Europe, either. "Reporters: "So, where ARE you from?  The guy says, "I'm from Israel."  The next day's headlines read: ****"Israeli Murders a Dog,  Leaves a Girl Bleeding!"**** ****"Israeli Brings Violence to Paris: a Pet is Murdered, Girl Wounded"**** ****"Israeli Attack: One Dead, a Wounded Toddler Rescued".**** ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 29, 2004 ### [FeedBurner? I like it.](https://osherove.com/blog/2004/5/29/feedburner-i-like-it.html) - May 27, 2004 ### [Another Israeli Blogger](https://osherove.com/blog/2004/5/27/another-israeli-blogger.html) - May 22, 2004 ### [Recommended C# Bloggers](https://osherove.com/blog/2004/5/22/recommended-c-bloggers.html) - May 22, 2004 ### [Returning to RSS bandit and a couple of requests](https://osherove.com/blog/2004/5/22/returning-to-rss-bandit-and-a-couple-of-requests.html) --- title: "If you're a developer in Norway, Mercatus is hiring" url: "https://osherove.com/blog/2004/5/23/if-youre-a-developer-in-norway-mercatus-is-hiring.md" canonical: "https://osherove.com/blog/2004/5/23/if-youre-a-developer-in-norway-mercatus-is-hiring.html" published: "2004-05-23T18:21:00" updated: "2004-05-23T18:21:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Mercatus , the company I was working with for two months in the last winter, is looking for good people. They're located in Norway, (Flore) and are doing .Net web based projects there. I'm writing about this because…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # If you're a developer in Norway, Mercatus is hiring By Roy Osherove May 23, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 23, 2004; technical details may be outdated. [Mercatus](http://www.mercatus.no/home/default.htm), the company I was working with for two months in the last winter, is looking for good people. They're located in Norway, (Flore) and are doing .Net web based projects there. I'm writing about this because staying there for two months gave me a full appreciation for what a good boss is all about. It's  a small company, but the boss there, Michael Dorfman(one of the partners) is heavily into the blogsphere and .Net, and has done some stuff for his employees that I have not seen other IT managers do. He is fixated on giving his employees the best resources, books, training and information they could get, and is one of the most fun people to be around. And don't get me started on the wonderful people working there. I had one of the best times of my life working there. Heck, if I was a Norwegian based developer, I'd be taking a job there probably. Send him an email to **Michael** _at_ **mercatus** _dot_ **no** ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 26, 2004 ### [ok, I get it](https://osherove.com/blog/2004/5/26/ok-i-get-it.html) - May 26, 2004 ### [The daily WTF](https://osherove.com/blog/2004/5/26/the-daily-wtf.html) - May 21, 2004 ### [Comment spam wave](https://osherove.com/blog/2004/5/21/comment-spam-wave.html) - May 20, 2004 ### [My secret agenda](https://osherove.com/blog/2004/5/20/my-secret-agenda.html) --- title: "[Book] \"Slack\", Where Learning Happens" url: "https://osherove.com/blog/2004/5/23/book-quotslackquot-where-learning-happens.md" canonical: "https://osherove.com/blog/2004/5/23/book-quotslackquot-where-learning-happens.html" published: "2004-05-23T18:11:00" updated: "2004-05-23T18:11:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "I saw this post yesterday on the XP mailing list and I just had to quote it. It quotes from the book Slack by Tom DeMarco (author of “ PeopleWare ” and “ The Mythical Man Month “, two of my all time favorite books) and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Book\] "Slack", Where Learning Happens By Roy Osherove May 23, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 23, 2004; technical details may be outdated. I saw this post yesterday on the [XP mailing list](http://groups.yahoo.com/group/extremeprogramming/) and I just had to quote it. It quotes from the book [Slack](https://www.amazon.com/exec/obidos/ASIN/0767907698/iserializable-20) by Tom DeMarco (author of “[PeopleWare](https://www.amazon.com/exec/obidos/ASIN/0932633439/iserializable-20)” and “[~The Mythical Man Month~](https://www.amazon.com/exec/obidos/ASIN/0201835959/iserializable-20)“, two of my all time favorite books) and it reads brilliantly. I think I'll have to buy this book now. This quotes an answer to a thread that talks about how even in successful XP projects, people who have actually been involved in the project will choose to simply disbelieve that XP was responsible for the success of the project: _\>Yes, these things definitely happen.  If early projects are successful, \>people often look for any reason other than XP that this could have \>happened.  In addition, people will choose to simply disbelieve that it \>is true no matter how provable it is.  In essence, people are willing to \>call you a liar in order to maintain their fantasy that XP couldn't have \>made any difference._  There's a quote from DeMarco's \_Slack\_ that I found interesting and may apply here: "I know from my early years of teaching development methods that when people learn something that really matters to them, they go through a moment of panic.  As soon as it's apparent that this new approach is superior to what they have been doing for years, there is an unspoken "Oh shit" that ripples through the room.  Their faces turn white.  You can practically hear the flip-flops in their stomachs. "At such a moment, it helps the learner to be able to glance over at someone else whose face is also white, who's also got a little perspiration showing on the upper lip.  The presence of the co-learner, the patient urging of the facilitator, and a lot of easy, unthreatening reinforcing material are necessary to help get people past this professional's learning block.  Without all these elements in place, many or all of the potential learners will dismiss the troubling new idea as 'preposterous.'" from chapter 26, "Where Learning Happens," of \_Slack\_, by Tom DeMarco. Jim \-- Jim Shore ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 28, 2004 ### [Workaround for Help Issue in Community Technology Preview May 2004](https://osherove.com/blog/2004/5/28/workaround-for-help-issue-in-community-technology-preview-ma.html) - May 26, 2004 ### [Cool VS 2005 "Burton" videos](https://osherove.com/blog/2004/5/26/cool-vs-2005-quotburtonquot-videos.html) - May 21, 2004 ### [Useful config files scenarios to keep on hand](https://osherove.com/blog/2004/5/21/useful-config-files-scenarios-to-keep-on-hand.html) - May 20, 2004 ### [NUnit 2.2 beta 1](https://osherove.com/blog/2004/5/20/nunit-22-beta-1.html) --- title: "Recommended C# Bloggers" url: "https://osherove.com/blog/2004/5/22/recommended-c-bloggers.md" canonical: "https://osherove.com/blog/2004/5/22/recommended-c-bloggers.html" published: "2004-05-22T17:15:00" updated: "2004-05-22T17:15:00" tags: ["Blogging"] author: "Roy Osherove" description: "If you've read my blog for a while you'd know that I'm not much for a popularity contest. however, I am most honored to be listed along with these great people in the same place, in what Eric Gunnerson posted as a list…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Recommended C\# Bloggers By Roy Osherove May 22, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 22, 2004; technical details may be outdated. If you've read my blog for a while you'd know that I'm not much for a popularity contest. however, I am most honored to be listed along with these great people in the same place, in what [Eric Gunnerson](http://blogs.msdn.com/ericgu/) posted as a list of [Recommended C# bloggers](http://blogs.msdn.com/ericgu/archive/2004/05/22/139564.aspx?Pending=true). - [Ian Griffiths](http://www.interact-sw.co.uk/iangblog/)   - [Craig Andera](http://staff.develop.com/candera/weblog2/default.aspx) - [Wesner Moise](http://wesnerm.blogs.com/net_undocumented) - [Frans Bouma](https://osherove.com/fbouma/) - [Brad Wilson](http://www.techieswithcats.com/dotnetguy) - [John Lam](http://www.iunknown.com/) - [Clemens Vasters](http://staff.newtelligence.net/clemensv/) - [Ted Neward](http://www.neward.net/ted/weblog) - [Steve Maine](http://hyperthink.net/blog) - [Miguel de Icaza](http://primates.ximian.com/~miguel/all.html) - [Justin Rogers](http://weblogs.asp.net/justin_rogers/Rss.aspx) - [Ingo Rammer](http://www.ingorammer.com/) - [Niels Berglund](http://staff.develop.com/nielsb/) - [Richard Blewett](http://staff.develop.com/richardb/weblog/) At least half of these folks are inside my aggregator, and I 3 names here are not familier to me. Looks like I need to add some subscriptions! I can attest to those that I know that they certainly deserve to be listed as a good source of knowledge. The weird thing is that my [Regex blog](http://blogs.regexadvice.com/royo/) is the one listed over there, and not this weblog. Quite weird,  because I have less than 20 posts on that blog and this place is my main place of writing. Still, this is very cool. I know I have'nt been posting much tech stuff in the past few weeks but I promise to get back to that as soon as I have something worth saying. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 27, 2004 ### [Another Israeli Blogger](https://osherove.com/blog/2004/5/27/another-israeli-blogger.html) - May 24, 2004 ### [\[OT\] Sad joke](https://osherove.com/blog/2004/5/24/ot-sad-joke.html) - May 22, 2004 ### [Returning to RSS bandit and a couple of requests](https://osherove.com/blog/2004/5/22/returning-to-rss-bandit-and-a-couple-of-requests.html) - May 22, 2004 ### [Peli's blog - a great unit testing information center](https://osherove.com/blog/2004/5/22/pelis-blog-a-great-unit-testing-information-center.html) --- title: "Returning to RSS bandit and a couple of requests" url: "https://osherove.com/blog/2004/5/22/returning-to-rss-bandit-and-a-couple-of-requests.md" canonical: "https://osherove.com/blog/2004/5/22/returning-to-rss-bandit-and-a-couple-of-requests.html" published: "2004-05-22T12:15:00" updated: "2004-05-22T12:15:00" tags: ["Blogging"] author: "Roy Osherove" description: "I've been trying on RSS bandit for about a month now, and loving it. I still miss some of sharpreader's features (which I'll outline later) but I love the fact that I can synchronize my feed list between home and work.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Returning to RSS bandit and a couple of requests By Roy Osherove May 22, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 22, 2004; technical details may be outdated. I've been trying on [RSS bandit](http://www.rssbandit.org/) for about a month now, and loving it. I still miss some of [sharpreader's](http://sharpreader.net/) features (which I'll outline later) but I love the fact that I can synchronize my feed list between home and work. Plus its much more responsive now. Great job Dare. some features I'd still like to see: 1. Sort feeds manually (not just by name, but manually drag a feed to where I want) 2. open all feeds tree automatically on startup. 3. Still sometimes when looking at a closed node with more that 2 level inside, I don't see all the unread items inside and have to click hte inside nodes to see them (the count is accurate though, but the post list is not) 4. I \*still\* don't like the fact that some feeds are not validated and are sent to the “errors“ folder. SOmetimes Early Adoper feeds fails. what's that about> never happened in sharpreader. 5. when uploading or downloading a feed I don't need the extra msgbox that says “done!“. I only wanna see it if it fails. for the rest I have a status bar. I want it to act just like when posting a blog reply. 6. I want a setting that will alow bandit to ask me before I close “would you like to update the synchonize feed list?“ or maybe even update it automatically ever X minutes (like auto save) 7. **A bit usability feature** for me would be that a feed and a folder would have differnet icons. Would make it much easer to traverse the feed tree. 8. When updating all feeds, I want the feeds that are still _waiting_ to start updating to have an icon that states they are still “obsolete“. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 24, 2004 ### [\[OT\] Sad joke](https://osherove.com/blog/2004/5/24/ot-sad-joke.html) - May 22, 2004 ### [Recommended C# Bloggers](https://osherove.com/blog/2004/5/22/recommended-c-bloggers.html) - May 22, 2004 ### [Peli's blog - a great unit testing information center](https://osherove.com/blog/2004/5/22/pelis-blog-a-great-unit-testing-information-center.html) - May 22, 2004 ### [HOWTO: fight back the current spam scum](https://osherove.com/blog/2004/5/22/howto-fight-back-the-current-spam-scum.html) --- title: "Peli's blog - a great unit testing information center" url: "https://osherove.com/blog/2004/5/22/pelis-blog-a-great-unit-testing-information-center.md" canonical: "https://osherove.com/blog/2004/5/22/pelis-blog-a-great-unit-testing-information-center.html" published: "2004-05-22T12:00:00" updated: "2004-05-22T12:00:00" tags: ["Blogging"] author: "Roy Osherove" description: "Peli's blog has been on my aggregator for a few weeks now. He is, among other things, responsible for mbUnit , a Generative Unit and Model-based Test Framework. his blog discusses the techniques for the stuff he does…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Peli's blog - a great unit testing information center By Roy Osherove May 22, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 22, 2004; technical details may be outdated. [Peli's blog](http://blog.dotnetwiki.org/) has been on my aggregator for a few weeks now. He is, among other things, responsible for [mbUnit](http://mbunit.tigris.org/), a Generative Unit and Model-based Test Framework. his blog discusses the techniques for the stuff he does plus lots of other goodies. [his latest post](http://blog.dotnetwiki.org/archive/2004/05/22/255.aspx) discusses implementing “Mutation Testing” in .net, where you “mutate” a tested component at runtime to see if the test actually catches the faults that will occur. For example, changing an “if” clause from true to false and see if the test fails. He does this using RAIL, which is a cool thing on its own that I should play with more. Very insightful. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 22, 2004 ### [Recommended C# Bloggers](https://osherove.com/blog/2004/5/22/recommended-c-bloggers.html) - May 22, 2004 ### [Returning to RSS bandit and a couple of requests](https://osherove.com/blog/2004/5/22/returning-to-rss-bandit-and-a-couple-of-requests.html) - May 22, 2004 ### [HOWTO: fight back the current spam scum](https://osherove.com/blog/2004/5/22/howto-fight-back-the-current-spam-scum.html) - May 21, 2004 ### [Comment spam wave](https://osherove.com/blog/2004/5/21/comment-spam-wave.html) --- title: "HOWTO: fight back the current spam scum" url: "https://osherove.com/blog/2004/5/22/howto-fight-back-the-current-spam-scum.md" canonical: "https://osherove.com/blog/2004/5/22/howto-fight-back-the-current-spam-scum.html" published: "2004-05-22T11:35:00" updated: "2004-05-22T11:35:00" tags: ["Blogging"] author: "Roy Osherove" description: "via Jesse : If you have been spammed today by the guy that is hitting us all go t https://www.stormpay.com/stormpay/report_spam.php and report that affiliate: 2004887 is spamming you (cut and paste one of his messages…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # HOWTO: fight back the current spam scum By Roy Osherove May 22, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 22, 2004; technical details may be outdated. via [Jesse](http://weblogs.asp.net/jezell/archive/2004/05/22/139180.aspx): If you have been spammed today by the guy that is hitting us all go t [https://www.stormpay.com/stormpay/report\_spam.php](https://www.stormpay.com/stormpay/report_spam.php) and report that affiliate: 2004887 is spamming you (cut and paste one of his messages in the box). If the link is down when you try, then send an email t [\[email removed\]](http://weblogs.asp.net/rosherove/Admin/[email removed]) Then, use the following emails and affiliate IDs to report to the rest of the affiliate programs this guy is using to make sure he doesn't get any money for his spam. \[email removed\] 466479 \[email removed\] 125079 \[email removed\] 9NXRRPELRVGJ8 \[email removed\] pub-6435000594396515 ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 22, 2004 ### [Returning to RSS bandit and a couple of requests](https://osherove.com/blog/2004/5/22/returning-to-rss-bandit-and-a-couple-of-requests.html) - May 22, 2004 ### [Peli's blog - a great unit testing information center](https://osherove.com/blog/2004/5/22/pelis-blog-a-great-unit-testing-information-center.html) - May 21, 2004 ### [Comment spam wave](https://osherove.com/blog/2004/5/21/comment-spam-wave.html) - May 21, 2004 ### [T- (11+30) + explanation + apology](https://osherove.com/blog/2004/5/21/t-1130-explanation-apology.html) --- title: "Comment spam wave" url: "https://osherove.com/blog/2004/5/21/comment-spam-wave.md" canonical: "https://osherove.com/blog/2004/5/21/comment-spam-wave.html" published: "2004-05-21T20:34:00" updated: "2004-05-21T20:34:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "I'm getting comment spam (about 50 in the past two hours or so), and for some reason .Text won't let me disable my comments. Already mailed Scott about it but thought maybe anyone had a quick fix for this?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Comment spam wave By Roy Osherove May 21, 2004 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 21, 2004; technical details may be outdated. I'm getting comment spam (about 50 in the past two hours or so), and for some reason .Text won't let me disable my comments. Already mailed Scott about it but thought maybe anyone had a quick fix for this? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 22, 2004 ### [Peli's blog - a great unit testing information center](https://osherove.com/blog/2004/5/22/pelis-blog-a-great-unit-testing-information-center.html) - May 22, 2004 ### [HOWTO: fight back the current spam scum](https://osherove.com/blog/2004/5/22/howto-fight-back-the-current-spam-scum.html) - May 21, 2004 ### [T- (11+30) + explanation + apology](https://osherove.com/blog/2004/5/21/t-1130-explanation-apology.html) - May 20, 2004 ### [Blog like nobody's reading](https://osherove.com/blog/2004/5/20/blog-like-nobodys-reading.html) --- title: "Useful config files scenarios to keep on hand" url: "https://osherove.com/blog/2004/5/21/useful-config-files-scenarios-to-keep-on-hand.md" canonical: "https://osherove.com/blog/2004/5/21/useful-config-files-scenarios-to-keep-on-hand.html" published: "2004-05-21T20:24:00" updated: "2004-05-21T20:24:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Suzanne shows some useful application config files that allow you do achieve specific CLR stuff:. I'll probably need this some day. here are the examples titles: - Forces the v1.0 CLR to be run. If the v1.0 CLR is not…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Useful config files scenarios to keep on hand By Roy Osherove May 21, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 21, 2004; technical details may be outdated. [Suzanne shows some useful application config files](http://blogs.msdn.com/suzcook/archive/2004/05/14/132022.aspx) that allow you do achieve specific CLR stuff:. I'll probably need this some day. here are the examples titles:  - Forces the v1.0 CLR to be run. If the v1.0 CLR is not installed, the app will fail to run. \- Redirects “assemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=25283151a234958d“ to version 2.0.0.0 of that assembly. This is only useful for strongly-named assemblies, since versions don't matter for those that are simply-named. \- Redirects “assemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8968ee41e78ce97a“ to codebase “http://www.yourwebsite.com/filename.dll“. 'Href' can also be set to something like “file:///c:/localfile/filename.dll“. Note that redirecting to a codebase causes a System.Net.WebPermission or System.IO.FileIOPermissionAccess.Read + PathDiscovery demand when loading that assembly. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 26, 2004 ### [Cool VS 2005 "Burton" videos](https://osherove.com/blog/2004/5/26/cool-vs-2005-quotburtonquot-videos.html) - May 23, 2004 ### [\[Book\] "Slack", Where Learning Happens](https://osherove.com/blog/2004/5/23/book-quotslackquot-where-learning-happens.html) - May 20, 2004 ### [NUnit 2.2 beta 1](https://osherove.com/blog/2004/5/20/nunit-22-beta-1.html) - May 7, 2004 ### [State of alternative languages on the CLR?](https://osherove.com/blog/2004/5/7/state-of-alternative-languages-on-the-clr.html) --- title: "T- (11+30) + explanation + apology" url: "https://osherove.com/blog/2004/5/21/t-1130-explanation-apology.md" canonical: "https://osherove.com/blog/2004/5/21/t-1130-explanation-apology.html" published: "2004-05-21T19:30:00" updated: "2004-05-21T19:30:00" tags: ["Addin Contest", "Blogging"] author: "Roy Osherove" description: "First, I apologize for any problem my little contest scheduling conflict caused. Before I explain exactly what happened, I'll just say that the contest will close at June 30th (end of next month) and not the end of this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # T- (11+30) + explanation + apology By Roy Osherove May 21, 2004 In [Addin Contest](https://osherove.com/blog/category/addin-contest), [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 21, 2004; technical details may be outdated. First, I apologize for any [problem](http://dotnetjunkies.com/WebLog/jkimble/archive/2004/05/21/14176.aspx) my little [contest](http://weblogs.asp.net/rosherove/archive/2004/04/21/117663.aspx) scheduling conflict caused. Before I explain exactly what happened, I'll just say that the contest **will** close at June 30th (end of next month) and **not** the end of this month. Now for what happened: there is one very good reason for my annoying actions regarding the contest end date: I am somewhat stupid. That is, my brain sometimes fools me into thinking I've done stuff while in reality I've done different stuff. Take the code contest for example. When I decided to lengthen the contest, I wanted to lengthen the submission time by one extra month. not two, but one. That means I wanted to extend it until the end of May (this month). Somehow my fingers and brain told me to write “June“ instead and I happily went on my way with the fact that the contest ends this month planted firmly in my brain all the while telling the outside world that it is ending one month later. SO yesterday I put in a friendly [reminder](http://weblogs.asp.net/rosherove/archive/2004/05/20/135933.aspx#FeedBack) that only 11 days left for submissions and I get a friendly question saying that it actually says “June“ in the contest page. Again, stupid me, I just went into the page and “fixed“ the date to show what I had always thought was the real date. Since I was in a hurry to get out for the weekend dinner I didn't even stop to consider the consequences this has on people that rely the later date. Sorry again. my bad, totally. So, the date moves up by a month and hopefully everyone is happy again. I hope to see some cool add-ins coming up. Sorry for any misunderstanding this may have caused. ## More in Addin Contest [All posts in Addin Contest](https://osherove.com/blog/category/addin-contest) - Jul 2, 2004 ### [Add-in contest submission phase is now officially over](https://osherove.com/blog/2004/7/2/add-in-contest-submission-phase-is-now-officially-over.html) - Jun 17, 2004 ### [Add-in contest ends this month!](https://osherove.com/blog/2004/6/17/add-in-contest-ends-this-month.html) - May 9, 2004 ### [Add-in Contest news and updates](https://osherove.com/blog/2004/5/9/add-in-contest-news-and-updates.html) - May 7, 2004 ### [Another book added to Add-in contest prizes](https://osherove.com/blog/2004/5/7/another-book-added-to-add-in-contest-prizes.html) --- title: "Missed the Google lecture, but here's a short summary" url: "https://osherove.com/blog/2004/5/20/missed-the-google-lecture-but-heres-a-short-summary.md" canonical: "https://osherove.com/blog/2004/5/20/missed-the-google-lecture-but-heres-a-short-summary.html" published: "2004-05-20T21:45:00" updated: "2004-05-20T21:45:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "I didn't get to go to the Google lecture like I wanted to, but I hear it was really good! here's a blurb from the Google Blog about this lecture: Ido Kenan, NRG Maariv has filed a story about Google's ethics committee .…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Missed the Google lecture, but here's a short summary By Roy Osherove May 20, 2004 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published May 20, 2004; technical details may be outdated. I didn't get to go to the [Google lecture](http://weblogs.asp.net/rosherove/archive/2004/05/10/128812.aspx) like I wanted to, but I hear it was really good! here's a blurb from the [Google Blog](http://google.blogspace.com/archives/001242) about this lecture: _Ido Kenan, NRG Maariv has filed_ [_a story about Google's ethics committee_](http://www.maariv.co.il/channels/13/ART/714/607.html)_. He sent us this translation:_ _Google has an ethics committee for decisions on changes to their algorithms. The committee is comprised of Google workers "who are concerned about ethics", said Dr. Eran Gabber, a software engineer with Google, at a lecture yesterday (Monday) at the Tel Aviv University._ _Dr. Gabber came to Israel to recruit Computer Science students for an annual Google project, where 100 students from around the world are invited to work at Google for a 12-week period during the summer._ _Dr. Gabber said: "We change Pagerank when we find that spammers are abusing it, but we don't change it often. There's an internal ethics committee in Google. Internally, there are people who are concerned about ethics. In Google, there are a lot of people who find ethics important"._ _There are photos at_ [_the original article_](http://www.maariv.co.il/channels/13/ART/714/607.html) _(in Hebrew). Thanks again to Ido Kenan, NRG Maariv for this story._ Geez, just like the news paper to focus on the “non geeky” stuff. I wish they had taped it somewhere so we could see it. I'd translate the whole thing myself if I had time (and money, and a big plasma TV), ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Jun 11, 2004 ### [Add Support for "Set" Collections to .NET](https://osherove.com/blog/2004/6/11/add-support-for-quotsetquot-collections-to-net.html) - Jun 4, 2004 ### [Wintellect Web-exclusive articles](https://osherove.com/blog/2004/6/4/wintellect-web-exclusive-articles.html) - May 9, 2004 ### [\[Google Lecture\] Finding needles in a 20 TB haystack, 200 million times per day](https://osherove.com/blog/2004/5/9/google-lecture-finding-needles-in-a-20-tb-haystack-200-milli.html) - Apr 24, 2004 ### [Good article about ReaderWriterLock and Multi Threading](https://osherove.com/blog/2004/4/24/good-article-about-readerwriterlock-and-multi-threading.html) --- title: "Blog like nobody's reading" url: "https://osherove.com/blog/2004/5/20/blog-like-nobodys-reading.md" canonical: "https://osherove.com/blog/2004/5/20/blog-like-nobodys-reading.html" published: "2004-05-20T19:59:00" updated: "2004-05-20T19:59:00" tags: ["Blogging"] author: "Roy Osherove" description: "Darren likes to change his IM name when he's online to interesting sentences. Right now it is : “Work like you don't need the money. Love like you've never been hurt. Dance like nobody's watching” Heh. One might add, in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blog like nobody's reading By Roy Osherove May 20, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 20, 2004; technical details may be outdated. [Darren](http://weblogs.asp.net/dneimke) likes to change his IM name when he's online to interesting sentences. Right now it is : _“Work like you don't need the money. Love like you've never been hurt. Dance like nobody's watching”_ Heh. One might add, in the spirit of the times: _“Blog like nobody's reading”._ Now **there's** a real challenge for you. Back in the day (About a year ago?) when I just started blogging, I could write whatever I wanted. I _knew_ that my current boss would never read what I wrote and I _didn't even consider_ that someone might be googling me a few years from now. That led to a pretty interesting (and sometimes totally stupid and pointless) blogging experience. As time went by I find myself changing the way I approach writing this blog. I have a lot more dillemmas concerning what I can and cannot write. lots of self cencorship, not neccessarily technology wise. I keep fighting the urge to write what I think people will want to read and just write what I want to. The last few posts were just like that. I wonder, a few decades from now, if blogging will truly be considered some sort of a communication revolution or simply a small spec of dust on the pages of comunication history. Will the dillemmas that are just now starting to haunt the blogsphere be remembered? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 21, 2004 ### [Comment spam wave](https://osherove.com/blog/2004/5/21/comment-spam-wave.html) - May 21, 2004 ### [T- (11+30) + explanation + apology](https://osherove.com/blog/2004/5/21/t-1130-explanation-apology.html) - May 20, 2004 ### [My secret agenda](https://osherove.com/blog/2004/5/20/my-secret-agenda.html) - May 20, 2004 ### [Of software legends, myths and proportions](https://osherove.com/blog/2004/5/20/of-software-legends-myths-and-proportions.html) --- title: "My secret agenda" url: "https://osherove.com/blog/2004/5/20/my-secret-agenda.md" canonical: "https://osherove.com/blog/2004/5/20/my-secret-agenda.html" published: "2004-05-20T19:31:00" updated: "2004-05-20T19:31:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "This is to all you folks who think my blog posts that “complain“ about stuff have an agenda behind them for getting more hits or any other thing. I'm an opinionated guy, if you have not noticed by now. I say what I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My secret agenda By Roy Osherove May 20, 2004 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 20, 2004; technical details may be outdated. This is to all you folks who think my blog posts that “complain“ about stuff have an agenda behind them for getting more hits or any other thing. I'm an opinionated guy, if you have not noticed by now. I say what I believe in. I do \*not\* have a secret agenda. Whatever “agenda” I may have It is usually stated right there on my blog or even on my post. Believe it or not, I do this thing because I love it and I care for the stuff I write about. I complain about stuff that matters to me and that I find important to the community. Yes, I do have a big ego and I do feel I sometimes speak for others who don't have a blog but feel the same. I think MS and the community should be able to hear voices from all sides of the fence and sometimes, just sometimes, those voices may not be telling you stuff you like to hear. well, tough. I may be wrong(at which case I retract or apologize and try to check before I leap), but then again I just may be right. Whatever it is, you might want to listen, because I'm not doing this for some secret black ops mission behind the scenes. I am your \*best customer\*, Microsoft. I am the one telling you what I **don't** like as well as what I like. as for community leaders - don't take anything I say to be against you personally. Nothing is and there is nothing I like more than meeting new people. But sometimes people write about stuff that I just \*have\* to comment on. Which I do. And you know what? if you think I'm wrong you can always write a comment and I'll read it. I might even realize your point of view makes more sense and switch over. That's life. I think that looking at a situation that you find disturbing in a way and watching other people just \*not say anything\* is one of the things that drives me crazy the most. Sure, I'll take a deep breath, but after counting to 20 if I still feel like writing about it, I'll do just that. At worst case a conversation will start and end.  At best case it will have made some kind of difference, taken notice by someone, or even just let me fan out some of my emotions. Amen. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 21, 2004 ### [T- (11+30) + explanation + apology](https://osherove.com/blog/2004/5/21/t-1130-explanation-apology.html) - May 20, 2004 ### [Blog like nobody's reading](https://osherove.com/blog/2004/5/20/blog-like-nobodys-reading.html) - May 20, 2004 ### [Of software legends, myths and proportions](https://osherove.com/blog/2004/5/20/of-software-legends-myths-and-proportions.html) - May 9, 2004 ### [Great blog about Smart Documents and Office 2003 .Net intergration](https://osherove.com/blog/2004/5/9/great-blog-about-smart-documents-and-office-2003-net-intergr.html) --- title: "NUnit 2.2 beta 1" url: "https://osherove.com/blog/2004/5/20/nunit-22-beta-1.md" canonical: "https://osherove.com/blog/2004/5/20/nunit-22-beta-1.html" published: "2004-05-20T16:03:00" updated: "2004-05-20T16:03:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Via Sam , Looks like there's lots to explore in the new release of Nunit version 2.2 beta 1." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NUnit 2.2 beta 1 By Roy Osherove May 20, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 20, 2004; technical details may be outdated. [Via Sam](http://samgentile.com/blog/archive/2004/05/20/11545.aspx), Looks like there's lots to explore in the new release of [Nunit version 2.2](http://sourceforge.net/forum/forum.php?forum_id=377077) beta 1. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 23, 2004 ### [\[Book\] "Slack", Where Learning Happens](https://osherove.com/blog/2004/5/23/book-quotslackquot-where-learning-happens.html) - May 21, 2004 ### [Useful config files scenarios to keep on hand](https://osherove.com/blog/2004/5/21/useful-config-files-scenarios-to-keep-on-hand.html) - May 7, 2004 ### [State of alternative languages on the CLR?](https://osherove.com/blog/2004/5/7/state-of-alternative-languages-on-the-clr.html) - May 7, 2004 ### [Comment Rot(tm)](https://osherove.com/blog/2004/5/7/comment-rottm.html) --- title: "Of software legends, myths and proportions" url: "https://osherove.com/blog/2004/5/20/of-software-legends-myths-and-proportions.md" canonical: "https://osherove.com/blog/2004/5/20/of-software-legends-myths-and-proportions.html" published: "2004-05-20T13:43:00" updated: "2004-05-20T13:43:00" tags: ["Blogging"] author: "Roy Osherove" description: "Is it just me or is the popularity contest getting a little out of hand? http://www.hanselman.com/blog/PermaLink.aspx?guid=dab2db7b-2ca6-45a3-a879-d7c354b98c9c You'll want to stop by and see if you have the intellectual…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Of software legends, myths and proportions By Roy Osherove May 20, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 20, 2004; technical details may be outdated. Is it just me or is the popularity contest getting a little out of hand? [http://www.hanselman.com/blog/PermaLink.aspx?guid=dab2db7b-2ca6-45a3-a879-d7c354b98c9c](http://www.hanselman.com/blog/PermaLink.aspx?guid=dab2db7b-2ca6-45a3-a879-d7c354b98c9c) _You'll want to stop by and see if you have the intellectual horsepower it takes to be the **Apprentice.NET**!  The Winner will receive a ticket to the EXCLUSIVE INVITE ONLY **.NET Influencer's Dinner** and rub elbows with various .NET Illuminati.  Truly a lifetime chance, and only possible to those with chops enough to be the Apprentice.NET._  _For those of you who are more 'Survivor'-brute-force-scavenger-hunt types ;) don't worry, we'll have **RD Bingo** for you to play.  You'll have a card with the faces of Bloggers and RDs that you know and love.  Get that individual to initial over their face.  Getting Bingo (or Blackout Bingo) wins prizes (plus it forces you anti-social bastards to network!)_ Sure, I know some of this is tongue in cheek sorta thing, but still. When did Bloggers become rock stars to win dinners with? “.Net Influencers“? hmm... I know these are all great people but C'mon! just wear the “_I'm a Legend, worship me._” T-shirt and be done with it already. Do we really want to cultivate the cult of the worshiping masses? In the last year I've seen Bloggers become celebrities, celebrities become legends, and I've seen legends become myths. We need to remember (and especially those who are at the helm) who we are and what we are here to do. We should not get all full of ourselves creating contests for people to meet us. We should just _meet_ them. We should not be handing out autographs, but software, tips, tricks and code. Oh and gadgets. I have to say that yes, I'd love to meet with each and every one of the “cool bunch” but I would feel really awkward trying to win their grace through a contest. What's next? A Don Box coffee mug? wasn't the “software legends” thing enough? Isn't this all getting a little out of proportion? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 20, 2004 ### [Blog like nobody's reading](https://osherove.com/blog/2004/5/20/blog-like-nobodys-reading.html) - May 20, 2004 ### [My secret agenda](https://osherove.com/blog/2004/5/20/my-secret-agenda.html) - May 9, 2004 ### [Great blog about Smart Documents and Office 2003 .Net intergration](https://osherove.com/blog/2004/5/9/great-blog-about-smart-documents-and-office-2003-net-intergr.html) - May 9, 2004 ### [The first Israeli Blogger dinner was really good](https://osherove.com/blog/2004/5/9/the-first-israeli-blogger-dinner-was-really-good.html) --- title: "T - 11" url: "https://osherove.com/blog/2004/5/20/t-11.md" canonical: "https://osherove.com/blog/2004/5/20/t-11.html" published: "2004-05-20T13:25:00" updated: "2004-05-20T13:25:00" tags: [] author: "Roy Osherove" description: "[update: this post is not correct. see this post for the most updated information] This is your friendly reminder: 11 days left." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # T - 11 By Roy Osherove May 20, 2004 **Historical article** · Originally published May 20, 2004; technical details may be outdated. _\[update: this post is not correct. see_ [_this post_](http://weblogs.asp.net/rosherove/archive/2004/05/22/138316.aspx) _for the most updated information\]_ This is your friendly reminder: [11 days left.](http://weblogs.asp.net/rosherove/archive/2004/04/21/117663.aspx) --- title: "The Regulator gains popularity" url: "https://osherove.com/blog/2004/5/19/the-regulator-gains-popularity.md" canonical: "https://osherove.com/blog/2004/5/19/the-regulator-gains-popularity.html" published: "2004-05-19T19:06:00" updated: "2004-05-19T19:06:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "When Clemens Vasters was here for the Israel Tech-Ed 2004, he gave some great presentations (which I really should write here some of the notes I've written about them). Other than that I managed to grab him for a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator gains popularity By Roy Osherove May 19, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 19, 2004; technical details may be outdated. When [Clemens Vasters](http://staff.newtelligence.net/clemensv/) was here for the Israel Tech-Ed 2004, he gave some great presentations (which I really should write here some of the notes I've written about them). Other than that I managed  to grab him for a little chat and also got a chance to show him The Regulator.  [He really liked it](http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=f0a763b9-2e24-44be-9245-b615e1057407). I'm flattered. One complaint I seem to be getting with the latest beta is about the intellisense. It is a bit too aggressive and I still need to round out some corners with that feature. I'll try to get a version out asap to fix this. in the meanwhile if you want to disable intellisense, just open the file quickmenu.config in the program dir and remove all the nodes for “MenuItem”. The intellisense looks at the first char of the “value” attribute in each node to see if it needs to be brought up. By removing the items you remove the intellisense. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 4, 2004 ### [Managed Smart Documents Wrapper](https://osherove.com/blog/2004/6/4/managed-smart-documents-wrapper.html) - May 29, 2004 ### [\[Cool Tool\] Dataset Quick Watch "visualizer" Add-in for VS.Net 2003](https://osherove.com/blog/2004/5/29/cool-tool-dataset-quick-watch-quotvisualizerquot-add-in-for.html) - May 8, 2004 ### [Numega DevPartner Profiler - free community edition](https://osherove.com/blog/2004/5/8/numega-devpartner-profiler-free-community-edition.html) - May 1, 2004 ### [New version for NUnit Add-in](https://osherove.com/blog/2004/5/1/new-version-for-nunit-add-in.html) --- title: "TDD workshop was great!" url: "https://osherove.com/blog/2004/5/19/tdd-workshop-was-great.md" canonical: "https://osherove.com/blog/2004/5/19/tdd-workshop-was-great.html" published: "2004-05-19T15:44:00" updated: "2004-05-19T15:44:00" tags: ["Agile Related"] author: "Roy Osherove" description: "I define success by “interesting”, “learning experience” and “fun”. all 3 were present there. That's what happens when you put 9 smart people together in the same room, especially two on each machine (1 left hanging.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD workshop was great! By Roy Osherove May 19, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published May 19, 2004; technical details may be outdated. I define success by “interesting”, “learning experience” and “fun”. all 3 were present there. That's what happens when you put 9 smart people together in the same room, especially two on each machine (1 left hanging. next time we'll correct that). The meeting included a lecture on what is unit testing, working with NUnit and more about the “why” of it. After that we had a hands on lab where people sat in pairs and wrote a simple application that got more and more complex as the training continued. the objective was to show how unit tests help with a dynamically changing code base. And it it. People seemed to “get” it. At the end we all sat down and had a little discussion on some of the aspects of what we just did and what we **didn't** do. some conclusions: - there will **definitely** be another workshop for those who missed out - possibly a “TDD - a little more in-depth“ session, talking about database testing and other nuances. - You should all register to the mailing list I've set up. : [IL-agile-Dev](http://groups.yahoo.com/group/il-agile-dev/). we'll talk about some of the things we did there, and most importantly, about some of the problems we face today with implementing TDD in the organization. One more thing. I was directed to this interesting article today that talk about a case study of implementing TDD and the benefits that followed (including some actual numbers): [Integrating Unit Testing Into A Software](http://www.agilealliance.org/articles/articles/IntegratingUnitTesting.pdf) If you want to register for the next session  (in the coming weeks) which will be identical to this one, email me at **\[email removed\].** If you want to register for a more advanced session (about database testing) email me as well saying so. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Jun 7, 2004 ### [Test Driven Development webcast](https://osherove.com/blog/2004/6/7/test-driven-development-webcast.html) - Jun 4, 2004 ### [When people don't want to do pair programming](https://osherove.com/blog/2004/6/4/when-people-dont-want-to-do-pair-programming.html) - May 17, 2004 ### [Announcing: Israel Agile Development mailing list](https://osherove.com/blog/2004/5/17/announcing-israel-agile-development-mailing-list.html) - May 17, 2004 ### [Test Driven Development Workshop this Wednesday](https://osherove.com/blog/2004/5/17/test-driven-development-workshop-this-wednesday.html) --- title: "Reminder: TDD workshop today" url: "https://osherove.com/blog/2004/5/19/reminder-tdd-workshop-today.md" canonical: "https://osherove.com/blog/2004/5/19/reminder-tdd-workshop-today.html" published: "2004-05-19T10:09:00" updated: "2004-05-19T10:09:00" tags: [] author: "Roy Osherove" description: "Reminder: today at 18:00 is the TDD workshop . It's already closed for registration but just letting you know in case there is any confusion on the time. As for those who wanted to attend but couldn't for lack of room:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Reminder: TDD workshop today By Roy Osherove May 19, 2004 **Historical article** · Originally published May 19, 2004; technical details may be outdated. Reminder: today at 18:00 is [the TDD workshop](http://weblogs.asp.net/rosherove/archive/2004/04/25/119764.aspx). It's already closed for registration but just letting you know in case there is any confusion on the time. As for those who wanted to attend but couldn't for lack of room: if this goes well I'm planning to do more sessions until everyone is satisfied. I'll be letting y'all know how it goes. Too bad I forgot to bring my camera :( --- title: "Back online" url: "https://osherove.com/blog/2004/5/18/back-online.md" canonical: "https://osherove.com/blog/2004/5/18/back-online.html" published: "2004-05-18T15:20:00" updated: "2004-05-18T15:20:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Oh yeah! finally. Gosh. so much to catch up on." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Back online By Roy Osherove May 18, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 18, 2004; technical details may be outdated. Oh yeah! finally. Gosh. so much to catch up on. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 21, 2004 ### [Comment spam wave](https://osherove.com/blog/2004/5/21/comment-spam-wave.html) - May 20, 2004 ### [My secret agenda](https://osherove.com/blog/2004/5/20/my-secret-agenda.html) - May 17, 2004 ### [Still no internet connection at home](https://osherove.com/blog/2004/5/17/still-no-internet-connection-at-home.html) - May 11, 2004 ### [Moving this Friday - posting will stop for a few days](https://osherove.com/blog/2004/5/11/moving-this-friday-posting-will-stop-for-a-few-days.html) --- title: "Still no internet connection at home" url: "https://osherove.com/blog/2004/5/17/still-no-internet-connection-at-home.md" canonical: "https://osherove.com/blog/2004/5/17/still-no-internet-connection-at-home.html" published: "2004-05-17T10:31:00" updated: "2004-05-17T10:31:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm still working in a connectionless environment from home. I really don't like my phone company. Should be fixed in the next few days though. In the mean time all my sites are down, including The Regulator homepage.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Still no internet connection at home By Roy Osherove May 17, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 17, 2004; technical details may be outdated. I'm still working in a connectionless environment from home. I really don't like my phone company. Should be fixed in the next few days though. In the mean time all my sites are down, including The Regulator homepage. you can still download it directly from sourceforge: [http://sourceforge.net/projects/regulator/](http://sourceforge.net/projects/regulator/) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 20, 2004 ### [My secret agenda](https://osherove.com/blog/2004/5/20/my-secret-agenda.html) - May 18, 2004 ### [Back online](https://osherove.com/blog/2004/5/18/back-online.html) - May 11, 2004 ### [Moving this Friday - posting will stop for a few days](https://osherove.com/blog/2004/5/11/moving-this-friday-posting-will-stop-for-a-few-days.html) - May 8, 2004 ### [Saddam Hussein's cat](https://osherove.com/blog/2004/5/8/saddam-husseins-cat.html) --- title: "Announcing: Israel Agile Development mailing list" url: "https://osherove.com/blog/2004/5/17/announcing-israel-agile-development-mailing-list.md" canonical: "https://osherove.com/blog/2004/5/17/announcing-israel-agile-development-mailing-list.html" published: "2004-05-17T10:28:00" updated: "2004-05-17T10:28:00" tags: [".Net Original", "Agile Related"] author: "Roy Osherove" description: "One more bit of news: I'm announcing the opening of the Israel Agile Development mailing list http://groups.yahoo.com/group/il-agile-dev Anyone can join in the discussion. The group will be there to discuss: Current and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Announcing: Israel Agile Development mailing list By Roy Osherove May 17, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published May 17, 2004; technical details may be outdated. One more bit of news: I'm announcing the opening of the [Israel Agile Development mailing list](http://groups.yahoo.com/group/il-agile-dev) [http://groups.yahoo.com/group/il-agile-dev](http://groups.yahoo.com/group/il-agile-dev) Anyone can join in the discussion. The group will be there to discuss: - Current and future agile methodologies including XP, SCRUM and so on - Test Driven development - TDD workshop meetings schedules - Questions and problems encountered in the daily development life when using agile methods - anything goes in the context of agile. Religious wars...? maybe. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 28, 2004 ### [The Regulator 2.0.2](https://osherove.com/blog/2004/5/28/the-regulator-202.html) - May 28, 2004 ### [Opened: C# and .Net framework forum at Developers.org.il](https://osherove.com/blog/2004/5/28/opened-c-and-net-framework-forum-at-developersorgil.html) - May 17, 2004 ### [Test Driven Development Workshop this Wednesday](https://osherove.com/blog/2004/5/17/test-driven-development-workshop-this-wednesday.html) - May 9, 2004 ### [MSDN mag, this is why I lament](https://osherove.com/blog/2004/5/9/msdn-mag-this-is-why-i-lament.html) --- title: "Test Driven Development Workshop this Wednesday" url: "https://osherove.com/blog/2004/5/17/test-driven-development-workshop-this-wednesday.md" canonical: "https://osherove.com/blog/2004/5/17/test-driven-development-workshop-this-wednesday.html" published: "2004-05-17T10:27:00" updated: "2004-05-17T10:27:00" tags: [".Net Original", "Agile Related"] author: "Roy Osherove" description: "OK. It's decided: Test Driven Development Workshop This Wednesday the 19Th , 18:00 Magen offices Beit Rubinstein 20 Lincoln st' 10 th floor Call me if you have any trouble. One more thing: 2 seats have opened due to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven Development Workshop this Wednesday By Roy Osherove May 17, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published May 17, 2004; technical details may be outdated. OK. It's decided: Test Driven Development Workshop This Wednesday the 19Th , 18:00 [Magen offices](http://www.magen.com/) Beit Rubinstein 20 Lincoln st' 10th floor Call me if you have any trouble. One more thing: 2 seats have opened due to time constraints of the attendees. Wanna join us? contact me at **\[email removed\]** Session will include \* lecture about the basic ideas \* hands on lab developing with NUnit and the NUnit Add-in Length: about 3 hours (more if people want to continue on) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 28, 2004 ### [Opened: C# and .Net framework forum at Developers.org.il](https://osherove.com/blog/2004/5/28/opened-c-and-net-framework-forum-at-developersorgil.html) - May 17, 2004 ### [Announcing: Israel Agile Development mailing list](https://osherove.com/blog/2004/5/17/announcing-israel-agile-development-mailing-list.html) - May 9, 2004 ### [MSDN mag, this is why I lament](https://osherove.com/blog/2004/5/9/msdn-mag-this-is-why-i-lament.html) - May 7, 2004 ### [Notice: TDD workshop at Magen rescheduled to next week](https://osherove.com/blog/2004/5/7/notice-tdd-workshop-at-magen-rescheduled-to-next-week.html) --- title: "Moving this Friday - posting will stop for a few days" url: "https://osherove.com/blog/2004/5/11/moving-this-friday-posting-will-stop-for-a-few-days.md" canonical: "https://osherove.com/blog/2004/5/11/moving-this-friday-posting-will-stop-for-a-few-days.html" published: "2004-05-11T17:22:00" updated: "2004-05-11T17:22:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Posting will be sort of non existent in the coming days. We're moving into a new place which will be reflected in lack of Internet connectability for a while. As I write this, They've already moved the air conditioner…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Moving this Friday - posting will stop for a few days By Roy Osherove May 11, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 11, 2004; technical details may be outdated. Posting will be sort of non existent in the coming days. We're moving into a new place which will be reflected in lack of Internet connectability for a while. As I write this, They've already moved the air conditioner into the new place, leaving me with nothing but a fan and a prayer for lack of a heat wave until Friday (moving day). Tomorrow Tal is coming back from Bangkok with lots of stories of elephant rides and trips (yes, this is a work trip!), while I'll share with her the hassles that went into completing the mortgage and arranging for movers, phone, Internet etc. while she was having her fun... She had better bring some damn good pictures, is all I can say ;) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 18, 2004 ### [Back online](https://osherove.com/blog/2004/5/18/back-online.html) - May 17, 2004 ### [Still no internet connection at home](https://osherove.com/blog/2004/5/17/still-no-internet-connection-at-home.html) - May 8, 2004 ### [Saddam Hussein's cat](https://osherove.com/blog/2004/5/8/saddam-husseins-cat.html) - May 8, 2004 ### [Post-TechEd-Israel-Dinner and a little about Indigo](https://osherove.com/blog/2004/5/8/post-teched-israel-dinner-and-a-little-about-indigo.html) --- title: "[Google Lecture] Finding needles in a 20 TB haystack, 200 million times per day" url: "https://osherove.com/blog/2004/5/9/google-lecture-finding-needles-in-a-20-tb-haystack-200-milli.md" canonical: "https://osherove.com/blog/2004/5/9/google-lecture-finding-needles-in-a-20-tb-haystack-200-milli.html" published: "2004-05-09T18:45:00" updated: "2004-05-09T18:45:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "Finding needles in a 20 TB haystack, 200 million times per day. Dr Eran Gabber, Google Tel Aviv University, Tel Aviv Monday - 17/5/2004, 12:00 - 14:00, Schreiber - 309 Abstract: Google faces two large technical…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Google Lecture\] Finding needles in a 20 TB haystack, 200 million times per day By Roy Osherove May 9, 2004 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published May 9, 2004; technical details may be outdated. Finding needles in a 20 TB haystack, 200 million times per day.                            Dr Eran Gabber, Google Tel Aviv University, Tel Aviv Monday - 17/5/2004, 12:00 - 14:00, Schreiber - 309 Abstract: Google faces two large technical challenges: ensuring that our search results are as relevant as possible, and serving hundreds of millions of queries in a fraction of a second at a reasonable cost. To solve the first problem, we perform an offline matrix computation to produce PageRank, a query independent measure of page reputation, and combine it with more traditional query-specific scoring. To solve the distributed computing problem, we use tens of thousands of commodity PCs and highly fault-tolerant software. I will discuss some details of these solutions, and also share some interesting statistical tidbits about search and the web. Now **this** looks promising! ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Jun 4, 2004 ### [Wintellect Web-exclusive articles](https://osherove.com/blog/2004/6/4/wintellect-web-exclusive-articles.html) - May 20, 2004 ### [Missed the Google lecture, but here's a short summary](https://osherove.com/blog/2004/5/20/missed-the-google-lecture-but-heres-a-short-summary.html) - Apr 24, 2004 ### [Good article about ReaderWriterLock and Multi Threading](https://osherove.com/blog/2004/4/24/good-article-about-readerwriterlock-and-multi-threading.html) - Apr 13, 2004 ### [Code DOM articles galore](https://osherove.com/blog/2004/4/13/code-dom-articles-galore.html) --- title: "Great blog about Smart Documents and Office 2003 .Net intergration" url: "https://osherove.com/blog/2004/5/9/great-blog-about-smart-documents-and-office-2003-net-intergr.md" canonical: "https://osherove.com/blog/2004/5/9/great-blog-about-smart-documents-and-office-2003-net-intergr.html" published: "2004-05-09T18:20:00" updated: "2004-05-09T18:20:00" tags: ["Blogging"] author: "Roy Osherove" description: "Right under your nose, Avner has been writing very good content about implementing Smart Doduments in .Net and Office 2003. He's going through hell, and we all benefit. Ain't the blogsphere grand? ;)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Great blog about Smart Documents and Office 2003 .Net intergration By Roy Osherove May 9, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 9, 2004; technical details may be outdated. Right under your nose, [Avner has been writing very good content](http://weblogs.asp.net/avnerk) about implementing Smart Doduments in .Net and Office 2003. He's going through hell, and we all benefit. Ain't the blogsphere grand? ;) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 20, 2004 ### [My secret agenda](https://osherove.com/blog/2004/5/20/my-secret-agenda.html) - May 20, 2004 ### [Of software legends, myths and proportions](https://osherove.com/blog/2004/5/20/of-software-legends-myths-and-proportions.html) - May 9, 2004 ### [The first Israeli Blogger dinner was really good](https://osherove.com/blog/2004/5/9/the-first-israeli-blogger-dinner-was-really-good.html) - May 8, 2004 ### [Blogger Dinner with Johanna Rothman this Sunday evening](https://osherove.com/blog/2004/5/8/blogger-dinner-with-johanna-rothman-this-sunday-evening.html) --- title: "Add-in Contest news and updates" url: "https://osherove.com/blog/2004/5/9/add-in-contest-news-and-updates.md" canonical: "https://osherove.com/blog/2004/5/9/add-in-contest-news-and-updates.html" published: "2004-05-09T18:17:00" updated: "2004-05-09T18:17:00" tags: ["Addin Contest"] author: "Roy Osherove" description: "There's a problem with the Add-in Contest. We're not getting enough entries. I'm starting to wonder. Is it too hard? are people too lazy? is a first prize worth over 2,000$ and fame not worth the trouble? SO here's what…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Add-in Contest news and updates By Roy Osherove May 9, 2004 In [Addin Contest](https://osherove.com/blog/category/addin-contest) **Historical article** · Originally published May 9, 2004; technical details may be outdated. There's a problem with the Add-in Contest. We're not getting enough entries. I'm starting to wonder. Is it too hard? are people too lazy? is a first prize worth over 2,000$ and fame not worth the trouble? SO here's what I'll do. The contest is hereby extended by another month. that means you can submit an entry up until June 30. I've also added [C# Refactory](http://www.xtreme-simplicity.net/CSharpRefactory.html) by Xtreme Simplicity to first prize. Now. what else do I have to do to get you people to write some cool add-ins? ## More in Addin Contest [All posts in Addin Contest](https://osherove.com/blog/category/addin-contest) - Jun 17, 2004 ### [Add-in contest ends this month!](https://osherove.com/blog/2004/6/17/add-in-contest-ends-this-month.html) - May 21, 2004 ### [T- (11+30) + explanation + apology](https://osherove.com/blog/2004/5/21/t-1130-explanation-apology.html) - May 7, 2004 ### [Another book added to Add-in contest prizes](https://osherove.com/blog/2004/5/7/another-book-added-to-add-in-contest-prizes.html) - Apr 25, 2004 ### [1st prize just got a whole lot bigger](https://osherove.com/blog/2004/4/25/1st-prize-just-got-a-whole-lot-bigger.html) --- title: "The first Israeli Blogger dinner was really good" url: "https://osherove.com/blog/2004/5/9/the-first-israeli-blogger-dinner-was-really-good.md" canonical: "https://osherove.com/blog/2004/5/9/the-first-israeli-blogger-dinner-was-really-good.html" published: "2004-05-09T18:09:00" updated: "2004-05-09T18:09:00" tags: ["Blogging"] author: "Roy Osherove" description: "The first Israeli Blogger dinner with honorary guest Johanna Rothman has come to a successfully conclusion. It was great. Lots of great conversation about the state of project management in Israel and abroad, various…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The first Israeli Blogger dinner was really good By Roy Osherove May 9, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 9, 2004; technical details may be outdated. The first [Israeli Blogger dinner](http://weblogs.asp.net/rosherove/archive/2004/05/08/128459.aspx) with honorary guest [Johanna Rothman](http://www.jrothman.com/) has come to a successfully conclusion. It was great. Lots of great conversation about the state of project management in Israel and abroad, various techniques and war stories and lots of good laughs. It was great folks. We should so it again. I promise we will. But next time I'll alert you much more in advance so we can do it right, with even more people. **You just wait**. In attendance were: [Johanna](http://www.jrothman.com/), [Udi Dahan](http://udidahan.weblogs.us/), [Ido Samuelson](http://www.dotnetjunkies.com/weblog/principal), [Memi Lavi](http://weblogs.asp.net/memi/) and myself. [Omer](http://weblogs.asp.net/okloeten/) wanted to come but couldn't make it. Next time Omer :) ~Pictures will be posted as soon as I get them from Memi!~ [![](https://osherove.com/img/wb/1d41fe62_textamerica.com_user.images_12_IMG_396112_Thumb_T40405102307190.jpg)](http://royo.textamerica.com/?r=768926) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 20, 2004 ### [Of software legends, myths and proportions](https://osherove.com/blog/2004/5/20/of-software-legends-myths-and-proportions.html) - May 9, 2004 ### [Great blog about Smart Documents and Office 2003 .Net intergration](https://osherove.com/blog/2004/5/9/great-blog-about-smart-documents-and-office-2003-net-intergr.html) - May 8, 2004 ### [Blogger Dinner with Johanna Rothman this Sunday evening](https://osherove.com/blog/2004/5/8/blogger-dinner-with-johanna-rothman-this-sunday-evening.html) - May 7, 2004 ### [The benefits of employee blogs](https://osherove.com/blog/2004/5/7/the-benefits-of-employee-blogs.html) --- title: "MSDN mag, this is why I lament" url: "https://osherove.com/blog/2004/5/9/msdn-mag-this-is-why-i-lament.md" canonical: "https://osherove.com/blog/2004/5/9/msdn-mag-this-is-why-i-lament.html" published: "2004-05-09T17:52:00" updated: "2004-05-09T17:52:00" tags: [".Net Original"] author: "Roy Osherove" description: "Some people think I was wrong in saying that MSDN has gone too far hyping up future content. There's a time a place to say \"Get ready for this because it replaces something you've had to reinvent by yourself up until…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSDN mag, this is why I lament By Roy Osherove May 9, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 9, 2004; technical details may be outdated. [Some people](http://ea.3leaf.com/2004/05/msdn_mag_why_la.html) think I was wrong in saying that [MSDN has gone too far](http://weblogs.asp.net/rosherove/archive/2004/05/08/128174.aspx) hyping up future content. There's a time a place to say "Get ready for this because it replaces something you've had to reinvent by yourself up until today". The time may be now, but the place should be limited to a \*logical\* section of the content. There are still lots of problems to solve with today's tools. Frankly, when I'm fighting some hard debugging problem the last thing I need is someone telling me "_You know, in Whidbey this is easier!"_ instead of showing me how to fix it today. Yes, I'd like to know about the future. No, I don't want to know \*only\* about the future. I have problems \*today\*, I am missing knowledge \*today\*. It looks as if MSDN mag is turning into a huge hype machine on the backs of the \*important\* information. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 17, 2004 ### [Announcing: Israel Agile Development mailing list](https://osherove.com/blog/2004/5/17/announcing-israel-agile-development-mailing-list.html) - May 17, 2004 ### [Test Driven Development Workshop this Wednesday](https://osherove.com/blog/2004/5/17/test-driven-development-workshop-this-wednesday.html) - May 7, 2004 ### [Notice: TDD workshop at Magen rescheduled to next week](https://osherove.com/blog/2004/5/7/notice-tdd-workshop-at-magen-rescheduled-to-next-week.html) - May 7, 2004 ### [Test Driven Development and Microsoft](https://osherove.com/blog/2004/5/7/test-driven-development-and-microsoft.html) --- title: "Blogger Dinner with Johanna Rothman this Sunday evening" url: "https://osherove.com/blog/2004/5/8/blogger-dinner-with-johanna-rothman-this-sunday-evening.md" canonical: "https://osherove.com/blog/2004/5/8/blogger-dinner-with-johanna-rothman-this-sunday-evening.html" published: "2004-05-08T13:23:00" updated: "2004-05-08T13:23:00" tags: ["Blogging"] author: "Roy Osherove" description: "If you live in Israel and can get to Tel Aviv this coming Sunday evening Johanna Rothman - author of two of my favorite blogs: Managing Product Development and Hiring Technical People is coming to Israel for a week. Not…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blogger Dinner with Johanna Rothman this Sunday evening By Roy Osherove May 8, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 8, 2004; technical details may be outdated. _If you live in Israel and can get to Tel Aviv this coming Sunday evening_ [Johanna Rothman](http://www.jrothman.com/) \- author of two of my favorite blogs: [Managing Product Development](http://www.jrothman.com/weblog/blogger.html) and [Hiring Technical People](http://www.jrothman.com/weblog/htpblogger.html) is coming to Israel for a week. Not only that - we're planning a [Blogger Dinner](http://www.jrothman.com/weblog/archive/2004_05_01_mpdarchive.html#108402912509743638) this Sunday evening (the 9th) at 20:00 probably at the Dan Panorama hotel in Tel Aviv. [Contact me through the blog](http://weblogs.asp.net/rosherove/contact.aspx) to let me know if you're coming so that we can reserve enough seats. Should make for an interesting evening! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 9, 2004 ### [Great blog about Smart Documents and Office 2003 .Net intergration](https://osherove.com/blog/2004/5/9/great-blog-about-smart-documents-and-office-2003-net-intergr.html) - May 9, 2004 ### [The first Israeli Blogger dinner was really good](https://osherove.com/blog/2004/5/9/the-first-israeli-blogger-dinner-was-really-good.html) - May 7, 2004 ### [The benefits of employee blogs](https://osherove.com/blog/2004/5/7/the-benefits-of-employee-blogs.html) - May 3, 2004 ### [Going to Tech-Ed. See you there?](https://osherove.com/blog/2004/5/3/going-to-tech-ed-see-you-there.html) --- title: "Saddam Hussein's cat" url: "https://osherove.com/blog/2004/5/8/saddam-husseins-cat.md" canonical: "https://osherove.com/blog/2004/5/8/saddam-husseins-cat.html" published: "2004-05-08T10:12:00" updated: "2004-05-08T10:12:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This made me laugh out loud: Saddam Hussein's cat . (via Rory )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Saddam Hussein's cat By Roy Osherove May 8, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 8, 2004; technical details may be outdated. This made me laugh out loud: [Saddam Hussein's cat](http://ianwhite.is-a-geek.com/weblogx/PermaLink.aspx/8217b3d0-4063-4a55-876e-1722fbc055d5). (via [Rory](http://neopoleon.com/blog/posts/6034.aspx)) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 17, 2004 ### [Still no internet connection at home](https://osherove.com/blog/2004/5/17/still-no-internet-connection-at-home.html) - May 11, 2004 ### [Moving this Friday - posting will stop for a few days](https://osherove.com/blog/2004/5/11/moving-this-friday-posting-will-stop-for-a-few-days.html) - May 8, 2004 ### [Post-TechEd-Israel-Dinner and a little about Indigo](https://osherove.com/blog/2004/5/8/post-teched-israel-dinner-and-a-little-about-indigo.html) - Apr 29, 2004 ### [A new low in television reached](https://osherove.com/blog/2004/4/29/a-new-low-in-television-reached.html) --- title: "Post-TechEd-Israel-Dinner and a little about Indigo" url: "https://osherove.com/blog/2004/5/8/post-teched-israel-dinner-and-a-little-about-indigo.md" canonical: "https://osherove.com/blog/2004/5/8/post-teched-israel-dinner-and-a-little-about-indigo.html" published: "2004-05-08T09:45:00" updated: "2004-05-08T09:45:00" tags: ["Off Topic"] author: "Roy Osherove" description: "The night after Tech-Ed Israel, Yosi Taguri arranged for a small dinner with a few MVPs and friends. Among the guests were Dino Esposito , Shy Cohen - PM on the Indigo team, and Hans Verbeek - Tech evangelist for SQL…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Post-TechEd-Israel-Dinner and a little about Indigo By Roy Osherove May 8, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 8, 2004; technical details may be outdated. The night after Tech-Ed Israel, [Yosi Taguri](http://blogs.msdn.com/yosit) arranged for a small dinner with a few MVPs and friends. Among the guests were [Dino Esposito](http://weblogs.asp.net/despos), Shy Cohen - PM on the Indigo team, and [Hans Verbeek](http://weblogs.asp.net/hans_vb) \- Tech evangelist for SQL and Yukon. It was a lot of fun. I posted pics from the dinner at my photo blog. I got to talking with Shy Cohen a little bit about Indigo and how it relates to a presentation about ShadowFax/FABRIQ tha we had seen at tech ed. One of the things I go from this lecture was that Shadowfax was a framework that enabled you to achieve some of the things Indigo is all about in terms of SOA pipelines and messages. First shy said this was not really the case and we went into kind of a deep conversation about what Indigo is really all about.  it was really interesting. Unfortunately - I was pretty drunk so I can't remember half of it. Talk about a lack of WS-Reliability :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 11, 2004 ### [Moving this Friday - posting will stop for a few days](https://osherove.com/blog/2004/5/11/moving-this-friday-posting-will-stop-for-a-few-days.html) - May 8, 2004 ### [Saddam Hussein's cat](https://osherove.com/blog/2004/5/8/saddam-husseins-cat.html) - Apr 29, 2004 ### [A new low in television reached](https://osherove.com/blog/2004/4/29/a-new-low-in-television-reached.html) - Apr 29, 2004 ### [Tech-Ed Israel Blogger/Nerd Dinner anyone?](https://osherove.com/blog/2004/4/29/tech-ed-israel-bloggernerd-dinner-anyone.html) --- title: "Numega DevPartner Profiler - free community edition" url: "https://osherove.com/blog/2004/5/8/numega-devpartner-profiler-free-community-edition.md" canonical: "https://osherove.com/blog/2004/5/8/numega-devpartner-profiler-free-community-edition.html" published: "2004-05-08T07:46:00" updated: "2004-05-08T07:46:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "There's a free community edition of Numega DevPartner Profiler available for download. Thanks Duncan . Profiling is important and should be at the start of every optimization effort." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Numega DevPartner Profiler - free community edition By Roy Osherove May 8, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 8, 2004; technical details may be outdated. There's a [free community edition of Numega DevPartner Profiler](http://www.compuware.com/media.asp?cid=3019X36) available for download. Thanks [Duncan](http://blogs.msdn.com/duncanma/archive/2004/05/08/128353.aspx). Profiling is important and should be at the start of every optimization effort. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 29, 2004 ### [\[Cool Tool\] Dataset Quick Watch "visualizer" Add-in for VS.Net 2003](https://osherove.com/blog/2004/5/29/cool-tool-dataset-quick-watch-quotvisualizerquot-add-in-for.html) - May 19, 2004 ### [The Regulator gains popularity](https://osherove.com/blog/2004/5/19/the-regulator-gains-popularity.html) - May 1, 2004 ### [New version for NUnit Add-in](https://osherove.com/blog/2004/5/1/new-version-for-nunit-add-in.html) - Apr 28, 2004 ### [\[Cool Tool\] NotePad2](https://osherove.com/blog/2004/4/28/cool-tool-notepad2.html) --- title: "Notice: TDD workshop at Magen rescheduled to next week" url: "https://osherove.com/blog/2004/5/7/notice-tdd-workshop-at-magen-rescheduled-to-next-week.md" canonical: "https://osherove.com/blog/2004/5/7/notice-tdd-workshop-at-magen-rescheduled-to-next-week.html" published: "2004-05-07T22:37:00" updated: "2004-05-07T22:37:00" tags: [".Net Original"] author: "Roy Osherove" description: "I'm going to move the expected date of the TDD workshop to next week (16-20th) because of time limitations. Moving to a new apartment while working full time is challenging enough as it is :) I'll also be emailing those…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Notice: TDD workshop at Magen rescheduled to next week By Roy Osherove May 7, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 7, 2004; technical details may be outdated. I'm going to move the expected date of the [TDD workshop to next week](http://weblogs.asp.net/rosherove/archive/2004/04/25/119764.aspx) (16-20th) because of time limitations. Moving to a new apartment while working full time is challenging enough as it is :) I'll also be emailing those who registered personally. The good news is that already more than 20 people have signed on for the workshop, which is pretty cool. I expect more to come after the first one finished successfully. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 17, 2004 ### [Test Driven Development Workshop this Wednesday](https://osherove.com/blog/2004/5/17/test-driven-development-workshop-this-wednesday.html) - May 9, 2004 ### [MSDN mag, this is why I lament](https://osherove.com/blog/2004/5/9/msdn-mag-this-is-why-i-lament.html) - May 7, 2004 ### [Test Driven Development and Microsoft](https://osherove.com/blog/2004/5/7/test-driven-development-and-microsoft.html) - May 7, 2004 ### [MSDN magazine has gone too far (into the future)](https://osherove.com/blog/2004/5/7/msdn-magazine-has-gone-too-far-into-the-future.html) --- title: "The benefits of employee blogs" url: "https://osherove.com/blog/2004/5/7/the-benefits-of-employee-blogs.md" canonical: "https://osherove.com/blog/2004/5/7/the-benefits-of-employee-blogs.html" published: "2004-05-07T22:16:00" updated: "2004-05-07T22:16:00" tags: ["Blogging"] author: "Roy Osherove" description: "Some words of wisdom on the power of employee blogs from Allen Bauer (One of the people behind the next version of Delphi): Danny and I were having a discussion yesterday regarding the benefits that a company can gain…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The benefits of employee blogs By Roy Osherove May 7, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 7, 2004; technical details may be outdated. Some words of wisdom [on the power of employee blogs](http://homepages.borland.com/abauer/2004_05_02_archive.php#108377146496845791) from Allen Bauer (One of the people behind the next version of Delphi): _Danny and I were having a discussion yesterday regarding the benefits that a company can gain by allowing its average-joe employees to maintain a blog hosted from their site or simply allowed to comment on what they do for they're "day job." I made the comment that blogs have the intangible effect of putting a collective "face" and "personality" on to an otherwise amorphous, cold and faceless corporation. It helps cement in the customer's minds that there are real people with real lives behind the products and services produced by the company. They have likes and dislikes, opinions, faults and emotions. Take, for instance, the fact that Microsoft has well over 400 active bloggers. Do you find that appears to make them more approachable and candid as a company? Does blogging help or hurt their public image? Do you find it satisfying that when you post a comment to a blog and the blog owner responds, even if it is a simple "thanks for your comments" response?_ But what happens when the company's sole business or service is its employees knowledge? Take Magen. the company I work for as an example. Magen is a small company (about 25 employees overall). It's based around providing services of .Net mentoring on projects, teaching labs and various Microsoft related material. The main functionality of an employee of Magen is to \*know\*. What happens if I write an article on some technology as a Magen employee? wouldn't it be considered “information leakage“ since we are getting paid to distribute information for customers only? The answer, as always is “depends“. Some fine lines need to be drawn. Usually it will be what defines “sensitive“ or withheld information that Magen has access to (then all NDAa apply and so on). but there are also cases where a technology is also features somewhere or is general public knowledge. In the end of the day, if I provide an article that talks about regular expressions for example, or if I speak about it in a user group, Magen only benefits from this because : - The company gets a “face“ and credibility for knowledge of its employees - the amount of information expressed cannot harm any of the company's business. In fact it just may give them more business from people who will want to dig deeper into the knowledge pool and would pay for that. Reputation is everything and this is good reputation. - The company gets in touch with the community, allowing it to react to changes faster if needed, get feedback faster and basically have a dialog with potential customers very early on. All these things are implied and are not what this blog is about. It started before I started working there and now it is simply adding to the benefits. So, the thing to note is that employee blogging as I see it is a very positive thing. But, as always, there's a lot of FUD around and many companies don't even know what blogs are. Let's hope this changes in the near future. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 9, 2004 ### [The first Israeli Blogger dinner was really good](https://osherove.com/blog/2004/5/9/the-first-israeli-blogger-dinner-was-really-good.html) - May 8, 2004 ### [Blogger Dinner with Johanna Rothman this Sunday evening](https://osherove.com/blog/2004/5/8/blogger-dinner-with-johanna-rothman-this-sunday-evening.html) - May 3, 2004 ### [Going to Tech-Ed. See you there?](https://osherove.com/blog/2004/5/3/going-to-tech-ed-see-you-there.html) - May 3, 2004 ### [Another Israeli .Net blogger joins the bunch](https://osherove.com/blog/2004/5/3/another-israeli-net-blogger-joins-the-bunch.html) --- title: "State of alternative languages on the CLR?" url: "https://osherove.com/blog/2004/5/7/state-of-alternative-languages-on-the-clr.md" canonical: "https://osherove.com/blog/2004/5/7/state-of-alternative-languages-on-the-clr.html" published: "2004-05-07T21:40:00" updated: "2004-05-07T21:40:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "James points to an interesting question: Staffan asks: All these languages (Smalltalk, Python, etc) are pretty far from being strongly-typed imperative languages, so it seems that it is indeed possible to use more…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # State of alternative languages on the CLR? By Roy Osherove May 7, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 7, 2004; technical details may be outdated. [James points](http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3261153607) to an interesting question: [_Staffan_](http://blog.tomtebo.org/PermaLink.aspx?guid=dfc52c0f-9623-4f2e-8d72-5d581bb35919) _asks:_ _All these languages (Smalltalk, Python, etc) are pretty far from being strongly-typed imperative languages, so it seems that it is indeed possible to use more dynamic languages on the .Net platform. Indeed,_ [_Jim Hugunin_](http://hugunin.net/)_, the author of IronPython (and_ [_Jython_](http://www.jython.org/)_, the Python-on-JVM implementation) notes that while his initial intention was to write an article titled "Why .NET is a terrible platform for dynamic languages", he ended up with the conclusion that the CLR is indeed a good platform for dynamic languages. My question is: Is anyone using these languages on the .Net platform in real projects? I'd be very interested to hear any success stories._ _Any Answers?_ I've personally have never used any of the alternative languages in .Net. Only VB,C# and C++. I did take the time to check out the Perl.net implementation (or was it the Smalltalk.Net implementation?) but didn't get too far on it. It would be interesting to see if anyone actually has done some real world work with these .net dynamic languages. Well? Any answers? ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 21, 2004 ### [Useful config files scenarios to keep on hand](https://osherove.com/blog/2004/5/21/useful-config-files-scenarios-to-keep-on-hand.html) - May 20, 2004 ### [NUnit 2.2 beta 1](https://osherove.com/blog/2004/5/20/nunit-22-beta-1.html) - May 7, 2004 ### [Comment Rot(tm)](https://osherove.com/blog/2004/5/7/comment-rottm.html) - May 1, 2004 ### [New version for NUnit Add-in](https://osherove.com/blog/2004/5/1/new-version-for-nunit-add-in.html) --- title: "Test Driven Development and Microsoft" url: "https://osherove.com/blog/2004/5/7/test-driven-development-and-microsoft.md" canonical: "https://osherove.com/blog/2004/5/7/test-driven-development-and-microsoft.html" published: "2004-05-07T20:56:00" updated: "2004-05-07T20:56:00" tags: [".Net Original", "Agile Related"] author: "Roy Osherove" description: "Test Driven Development is great. No, scratch that. TDD is life saving . But it's still young. Yes, event though it was being implemented more than a decade ago, it's still in its infancy stages. There's lots of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven Development and Microsoft By Roy Osherove May 7, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published May 7, 2004; technical details may be outdated. Test Driven Development is great. No, scratch that. TDD is **life saving**. But it's still young. Yes, event though it was being implemented more than a decade ago, it's still in its infancy stages. There's lots of FUD(fear, uncertainty, doubt) going on around it, but those that “get” it truly become what is now commonly known as “test infected”. Some more problems related to infancy emerge as I make my way through a project which has a “mixed mode” development approach. It was done with a big upfront architecture design, and also with high level layers and SRS documents for some components. But the implementation is being done in a totally TDD way. But a lot of questions rise up on account of this approach: - **How do you reconcile TDD with a structured approach to project management?** Since TDD supports and endorses “design as you go“ development, it's hard to do up front design of anything because it just feels “wrong“. The way we are doing it is that we have several big up front designs of the system's parts and components, but we implements them as test cases based on requirements. Those tests are written one by one in a TDD manner and each of them goes through the Red, Green Refactor cycle. - **How do you convince your team about doing it?** lots of FUD emerges once you introduce the idea of “testing first“. There's no other way that I've found but to take 2-3 days and actually do small hands on exercises with the team, preferably in pairs, using TDD. After that they are hooked. - **How do you introduce the concept of Pair Programming into a FUD environment?** You don't. You simply \*do\* it. “Sit with him and do this together, OK“ usually works. “Try to switch with each other every such and such time so that you both learn and do at the same time, OK“ works as well after that..The phrase “pair programming“ should not even be uttered until the project is done with, or you will get FUD. Oh yes. learned this the hard way. Nothing is set in stone. It's all still a “learn as you go” experience for us and a lot of other projects. To be honest there's no way to introduce XP fully with all of its tenets into a structured organization easily (unless the CEO decides about it personally). It's just too big a shock. TDD is a start. I'm quite curious as to how Microsoft is embracing this change in concept. They've hired one of the authors of NUnit and we're starting to see some articles here and there about test driven development, but I wonder. Are they actually trying to do XP or even TDD somewhere in their product teams? Are there actually developers at Microsoft using NUnit or some other tool going “Red, Green, Refactor” on their code? how would an XP process work on products as large and vast as the ones Microsoft is usually working on? will we see new documents from the PAG group about implementing the tenets of XP on an enterprise class application? I wish this is in our future. XP and TDD are missing a guiding hand. Microsoft is a great leader to set the pace on this issue. In next year's tech-Ed I'd like to see some sessions on these issue. some real world sessions on XP and TDD. How to use Nunit. I bet there would still be plenty of people who will not know all this stuff. How about putting TDD support in Whidbey (like most of the Java IDEs have had for a long time now)? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 9, 2004 ### [MSDN mag, this is why I lament](https://osherove.com/blog/2004/5/9/msdn-mag-this-is-why-i-lament.html) - May 7, 2004 ### [Notice: TDD workshop at Magen rescheduled to next week](https://osherove.com/blog/2004/5/7/notice-tdd-workshop-at-magen-rescheduled-to-next-week.html) - May 7, 2004 ### [MSDN magazine has gone too far (into the future)](https://osherove.com/blog/2004/5/7/msdn-magazine-has-gone-too-far-into-the-future.html) - May 7, 2004 ### [Code readability and communication](https://osherove.com/blog/2004/5/7/code-readability-and-communication.html) --- title: "Comment Rot(tm)" url: "https://osherove.com/blog/2004/5/7/comment-rottm.md" canonical: "https://osherove.com/blog/2004/5/7/comment-rottm.html" published: "2004-05-07T20:26:00" updated: "2004-05-07T20:26:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "I must have missed this somehow, but Eric lippert writes about the dangerous and time consuming phenomenon called “ Comment Rot ”. I suggest you read it. I could not have said it better myself." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Comment Rot(tm) By Roy Osherove May 7, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 7, 2004; technical details may be outdated. I must have missed this somehow, but Eric lippert writes about the dangerous and time consuming phenomenon called “[Comment Rot](http://blogs.msdn.com/ericlippert/archive/2004/05/04/125893.aspx)”. I suggest you read it. I could not have said it better myself. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 20, 2004 ### [NUnit 2.2 beta 1](https://osherove.com/blog/2004/5/20/nunit-22-beta-1.html) - May 7, 2004 ### [State of alternative languages on the CLR?](https://osherove.com/blog/2004/5/7/state-of-alternative-languages-on-the-clr.html) - May 1, 2004 ### [New version for NUnit Add-in](https://osherove.com/blog/2004/5/1/new-version-for-nunit-add-in.html) - May 1, 2004 ### [\[Cool component suite\] NetXP](https://osherove.com/blog/2004/5/1/cool-component-suite-netxp.html) --- title: "MSDN magazine has gone too far (into the future)" url: "https://osherove.com/blog/2004/5/7/msdn-magazine-has-gone-too-far-into-the-future.md" canonical: "https://osherove.com/blog/2004/5/7/msdn-magazine-has-gone-too-far-into-the-future.html" published: "2004-05-07T19:41:00" updated: "2004-05-07T19:41:00" tags: [".Net Original"] author: "Roy Osherove" description: "This is truly annoying. here's the MSDN magazine's current and future covers: um.. excuse me? Is there any particular reason I should be reading MSDN magazine if I wanted to learn something about a technology I am using…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSDN magazine has gone too far (into the future) By Roy Osherove May 7, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 7, 2004; technical details may be outdated. This is truly annoying. here's the MSDN magazine's current and future covers: ![May 2004](https://osherove.com/img/wb/3c75e1f7_msdn.microsoft.com_msdnmag_images_covers_May04cover.gif) ![June 2004](https://osherove.com/img/wb/602a5eac_msdn.microsoft.com_msdnmag_images_covers_June04cover.gif) um.. excuse me? Is there any particular reason I should be reading MSDN magazine if I wanted to learn something about a technology I am using **today**? what's all this “future revealed“ thing? we get enough of this on the web. I shouldn't be paying money to read about stuff I can't even use today. or at least not for half of the magazine articles on it! Please bring MSDN magazine back into the real world. I sure hope the next issue isn't about solving problems in longhorn applications. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 7, 2004 ### [Notice: TDD workshop at Magen rescheduled to next week](https://osherove.com/blog/2004/5/7/notice-tdd-workshop-at-magen-rescheduled-to-next-week.html) - May 7, 2004 ### [Test Driven Development and Microsoft](https://osherove.com/blog/2004/5/7/test-driven-development-and-microsoft.html) - May 7, 2004 ### [Code readability and communication](https://osherove.com/blog/2004/5/7/code-readability-and-communication.html) - May 7, 2004 ### [My favorite Tech-Ed quote, and what you need to know about FABRIQ](https://osherove.com/blog/2004/5/7/my-favorite-tech-ed-quote-and-what-you-need-to-know-about-fa.html) --- title: "Another book added to Add-in contest prizes" url: "https://osherove.com/blog/2004/5/7/another-book-added-to-add-in-contest-prizes.md" canonical: "https://osherove.com/blog/2004/5/7/another-book-added-to-add-in-contest-prizes.html" published: "2004-05-07T19:29:00" updated: "2004-05-07T19:29:00" tags: ["Addin Contest"] author: "Roy Osherove" description: "Just added another book to the add-in contest prize bunch: Build Your Own ASP.NET Website Using C# & VB.NET . Thanks Matt! Reminder : you have until the end of this month to submit an add-in and win prizes worth up to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another book added to Add-in contest prizes By Roy Osherove May 7, 2004 In [Addin Contest](https://osherove.com/blog/category/addin-contest) **Historical article** · Originally published May 7, 2004; technical details may be outdated. Just added another book to the [add-in contest](http://weblogs.asp.net/rosherove/archive/2004/04/21/117663.aspx) prize bunch: [Build Your Own ASP.NET Website Using C# & VB.NET](http://www.sitepoint.com/books/aspnet1/). Thanks Matt! _Reminder_: you have until the end of this month to [submit an add-in](http://weblogs.asp.net/rosherove/archive/2004/04/21/117663.aspx) and win prizes worth up to 2000$. And here's a small tip: there are currently **not a lot** of entries. So your chance to win is **pretty big**. Your call. ## More in Addin Contest [All posts in Addin Contest](https://osherove.com/blog/category/addin-contest) - May 21, 2004 ### [T- (11+30) + explanation + apology](https://osherove.com/blog/2004/5/21/t-1130-explanation-apology.html) - May 9, 2004 ### [Add-in Contest news and updates](https://osherove.com/blog/2004/5/9/add-in-contest-news-and-updates.html) - Apr 25, 2004 ### [1st prize just got a whole lot bigger](https://osherove.com/blog/2004/4/25/1st-prize-just-got-a-whole-lot-bigger.html) - Apr 23, 2004 ### [What Add-ins would you like to see in the contest?](https://osherove.com/blog/2004/4/23/what-add-ins-would-you-like-to-see-in-the-contest.html) --- title: "Code readability and communication" url: "https://osherove.com/blog/2004/5/7/code-readability-and-communication.md" canonical: "https://osherove.com/blog/2004/5/7/code-readability-and-communication.html" published: "2004-05-07T18:55:00" updated: "2004-05-07T18:55:00" tags: [".Net Original"] author: "Roy Osherove" description: "Memi writes about a simple case in which VB.Net's “wordiness” adds to the clarity of the code.: “Inherits vs Implemets in C# I guess the difference is obvious - you inherit a class and implement an interface. If you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Code readability and communication By Roy Osherove May 7, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 7, 2004; technical details may be outdated. [Memi writes about a simple case](http://weblogs.asp.net/memi/archive/2004/05/07/127876.aspx) in which VB.Net's “wordiness” adds to the clarity of the code.: _“Inherits vs Implemets in C#_   _I guess the difference is obvious - you **inherit** a class and **implement** an interface._ _If you write in VB.NET, the difference just shines._ _...However, as you sure know, in C# things are a bit messier“_ I totally agree. One of the things VB.Net (and VB before it) was trying to solve is the code readability issue. This is something I have total respect for. As systems grow in complexity and the technology and programming languages grow to higher and higher levels, the act of coding has become (or at least is in the direction of) more about achieving a task and less about struggling with code. The tools are becoming available to take more and more off our hands of the trivial and mundane stuff using code generation techniques, pre-built tools and code and visual wizards and gadgets. Added to that is the growing realization that readable, **maintainable** code is better than less readable and maintainable code. C# “inherits“ from a language that was not about readablity. VB.Net is based on exactly such a concept -  a concept which at times can lead to some hourrendously long and scary bits of code even though you are using a language designed to promote just the opposite. But I digress. I **love** the fact that in VB.Net the langauge forces your code to announce exactly what it is doing, and even what it is **not** doing. “I am **implementing** and interface. I am **inheriting**  a class. I am **not overridable.** You **must inherit** me.“ and so on. To me this is brilliant in a way. Developers are **lazy bastards**. The last barrier between a lazy bastard and readable code is the compiler. VB.Net took that concept seriously and ran with it. One of the ways to make things more readable in non C/C++ has always been naming conventions. Big, important and solid naming conventions helped the poor developer save themselves from maintenance hell (to a degree). There are actually conding contests on the internet that defy the C programmer to come up with the most distorted code that compiles. Yes. People have been **drawing** with code. Amazing. With the advant of higher level languages and IDEs, people have started slipping up with doing proper naming conventions. The main reasons for that are of course - the tools. The IDE provides the developer with loads of information about the code the developer is currently looking at. I can just hover my mouse on a variable and see exactly what type it is, not having to name it with a specific prefix or any sort of notation. I can jump between procedures to see the code inside them, not having to write really meaningful names for those procedures. I can **be a lazy bastard** if I wanted to and the fancy IDE that I use will just silently help me along reading my own horrible code. But that's just me. Someone else that needs to read my code will find it much harder to understand the code I wrote, even with all the fancy help features. It's way to harder to read and understand the meaning behind the code you **didn't** write when all that time you are struggling to move your mouse over to a particular word to see what type the variable is, or jump to a prcedure to see what's inside. It's keeping you from understanding the driving logic behind the code. It's like looking at a big picture, only able to see one specific color in that picture at any single moment. SO, the dissonance between the ease with which I can produce ugly code and the lack of ease in maintaining that code later can almost be described as inversly proportional to each other. It's the perfect technology equasion: technology advancement is inversly proportional to the minimaly required mental abilities of the people who will use it. McDonald's cash registers is the perfect example. These people have **pictures** they need to tap on to do an order. Nothing more. Will we see the same here? this trend was very appearent when VB first came out. Suddenly everyone and their mother could do a simple program. Sure, no one could understand the code, but it was just to easy to set aside. Now these features have matured even in the RAD world, and that's exactly the kind of conversation that is growing in today's blogsphere and other places: redability is about **communication**. Communication, agile methodologies, test driven development -all those things are based on the same principals. But I digress again :) What's the best way to tell how readable your code is? try reading it in Notepad. No syntax highlighting, no tooltips. nothing. Scary, isn't it? Naming conventions were invented because people were doing the equivalent of just that for **a lot** of time. do we really need to worry about such situations anymore? I know I have almost always read code on the screen rather than print it, but I do know people who do code reviews with printed books of code.  What's the point I'm trying to make here? Readable code should **not** be about the tools you write with. It should be one of the most fundumental things every developer should learn. It helps you organize your thoughts and ideas, it saves you from writing comments that become irrelevant 5 minutes later and it lets you be proud of your code. Memi adds the following: _“I was in a number of presentations where the presenter showed a code silimar to the above, and said the class **inherits** from IInterface. But the highlight of this was in the (great) TechEd in Israel, when a presenter said, when talking about a code similar to the above, that we have here a **multiple inheritance**.“_ yikes! is all I can say about that. Sure, techinically he may be correct, the class does both interface inheritance and implementation inheritance (both totally legitimate technical terms which describe both cases), but still, the “multiple inheritance“ term is a bit too overloaded as is. BTW: where were you Memi? I was loking for you! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 7, 2004 ### [Test Driven Development and Microsoft](https://osherove.com/blog/2004/5/7/test-driven-development-and-microsoft.html) - May 7, 2004 ### [MSDN magazine has gone too far (into the future)](https://osherove.com/blog/2004/5/7/msdn-magazine-has-gone-too-far-into-the-future.html) - May 7, 2004 ### [My favorite Tech-Ed quote, and what you need to know about FABRIQ](https://osherove.com/blog/2004/5/7/my-favorite-tech-ed-quote-and-what-you-need-to-know-about-fa.html) - May 7, 2004 ### [Back from Tech-Ed, and another Israeli .Net blogger found.](https://osherove.com/blog/2004/5/7/back-from-tech-ed-and-another-israeli-net-blogger-found.html) --- title: "Got new books!" url: "https://osherove.com/blog/2004/5/7/got-new-books.md" canonical: "https://osherove.com/blog/2004/5/7/got-new-books.html" published: "2004-05-07T11:05:00" updated: "2004-05-07T11:05:00" tags: ["Recommended books"] author: "Roy Osherove" description: "Just got these books: Coder To Developer by Mike Gunderloy - which I have a strong feeling is going to be next month's Book of the month Designing highly usable software Effective software test automation The last two I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Got new books! By Roy Osherove May 7, 2004 In [Recommended books](https://osherove.com/blog/category/recommended-books) **Historical article** · Originally published May 7, 2004; technical details may be outdated. Just got these books: - [Coder To Developer](https://www.amazon.com/exec/obidos/ASIN/078214327X/iserializable-20) by [Mike Gunderloy](http://www.larkware.com/) \- which I have a strong feeling is going to be next month's _Book of the month_ - [Designing highly usable software](https://www.amazon.com/exec/obidos/ASIN/0748401121/iserializable-20) - [Effective software test automation](https://www.amazon.com/exec/obidos/ASIN/0782143202/iserializable-20) The last two I didn't get a chance to actually read yet so I don't know how good they are. I'll let you know. However, next week I'm expecting to recive these two wonderful books: - [Test Driven Development in .Net](https://www.amazon.com/exec/obidos/ASIN/0735619484/iserializable-20) - [Framework Class Library Annotated reference volume 1](https://www.amazon.com/exec/obidos/ASIN/0321154894/iserializable-20) both of which I can recommend both from all the other reviews I've heard and based on what I've been able to read from them thus far. ## More in Recommended books [All posts in Recommended books](https://osherove.com/blog/category/recommended-books) - Sep 14, 2005 ### [Back to Basics before Indigo: \[Book\] Understanding COM+](https://osherove.com/blog/2005/9/14/back-to-basics-before-indigo-book-understanding-com.html) - Apr 15, 2005 ### [\[Book of the month\] Working effectively with legacy code](https://osherove.com/blog/2005/4/15/book-of-the-month-working-effectively-with-legacy-code.html) - May 1, 2004 ### [Book of the month: May](https://osherove.com/blog/2004/5/1/book-of-the-month-may.html) - Apr 3, 2004 ### [Book of the month for April](https://osherove.com/blog/2004/4/3/book-of-the-month-for-april.html) --- title: "My favorite Tech-Ed quote, and what you need to know about FABRIQ" url: "https://osherove.com/blog/2004/5/7/my-favorite-tech-ed-quote-and-what-you-need-to-know-about-fa.md" canonical: "https://osherove.com/blog/2004/5/7/my-favorite-tech-ed-quote-and-what-you-need-to-know-about-fa.html" published: "2004-05-07T09:07:00" updated: "2004-05-07T09:07:00" tags: [".Net Original"] author: "Roy Osherove" description: "Ido has a favorite quote from Tech-Ed Israel. I also have a favorite one, by Clemens , paraphrasing Don Box about why SOAP was designed over HTTP: “If, with all the efforts, sysadmins cannot really stop porn, they…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My favorite Tech-Ed quote, and what you need to know about FABRIQ By Roy Osherove May 7, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 7, 2004; technical details may be outdated. [Ido](http://dotnetjunkies.com/WebLog/principal/) has a [favorite quote](http://dotnetjunkies.com/WebLog/principal/archive/2004/05/06/13016.aspx) from Tech-Ed Israel. I also have a favorite one, by [Clemens](http://staff.newtelligence.net/clemensv/), paraphrasing Don Box about why SOAP was designed over HTTP: _“If, with all the efforts, sysadmins cannot really stop porn, they cannot stop SOAP”_ Clemens, BTW, gave some amazing talks at Tech-Ed. I'll post about them later. for now, I suggest you get acquainted with the FABRIQ project, to be announced at Tech-Ed USA and how it solves some of the stuff Shadowfax did not address (scalability concerns mainly) using agent-oriented architecture and SOA concepts. [Here's a FABRIQ talk he did](http://www.dotnetmaailma.com/dotnetmaailma/seminaarit/online/EmeaArchitectForum2004.htm) at another conference. Some amazing stuff there. (plus, he's wearing a tie! we got him here with his “_I wrote DasBlog. Thank me with Beer_“ shirt ) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 7, 2004 ### [MSDN magazine has gone too far (into the future)](https://osherove.com/blog/2004/5/7/msdn-magazine-has-gone-too-far-into-the-future.html) - May 7, 2004 ### [Code readability and communication](https://osherove.com/blog/2004/5/7/code-readability-and-communication.html) - May 7, 2004 ### [Back from Tech-Ed, and another Israeli .Net blogger found.](https://osherove.com/blog/2004/5/7/back-from-tech-ed-and-another-israeli-net-blogger-found.html) - May 1, 2004 ### [Book of the month: May](https://osherove.com/blog/2004/5/1/book-of-the-month-may.html) --- title: "Back from Tech-Ed, and another Israeli .Net blogger found." url: "https://osherove.com/blog/2004/5/7/back-from-tech-ed-and-another-israeli-net-blogger-found.md" canonical: "https://osherove.com/blog/2004/5/7/back-from-tech-ed-and-another-israeli-net-blogger-found.html" published: "2004-05-07T08:39:00" updated: "2004-05-07T08:39:00" tags: [".Net Original"] author: "Roy Osherove" description: "Tech-ed was fun . I had a blast. I've already started posting some of the pics I took on my photo blog . Lots to write about but I'm really tired so I'll be writing the information in multiple posts over some length of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Back from Tech-Ed, and another Israeli .Net blogger found. By Roy Osherove May 7, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 7, 2004; technical details may be outdated. Tech-ed was **fun**. I had a blast. I've already started posting some of the pics I took on my [photo blog](http://royo.textamerica.com/). Lots to write about but I'm really tired so I'll be writing the information in multiple posts over some length of time. In other news - another Israeli .Net Blogger found: [Anatoly Lubarsky](http://gensystem.europe.webmatrixhosting.net/al/). A few points I want to write about: - Dino Esposito - Clemens Vasters (loves The Regulator!) - The Dev Track - Shy Cohen - The Dinner - Presentation notes - Israeli Bloggers at Tech-Ed ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 7, 2004 ### [Code readability and communication](https://osherove.com/blog/2004/5/7/code-readability-and-communication.html) - May 7, 2004 ### [My favorite Tech-Ed quote, and what you need to know about FABRIQ](https://osherove.com/blog/2004/5/7/my-favorite-tech-ed-quote-and-what-you-need-to-know-about-fa.html) - May 1, 2004 ### [Book of the month: May](https://osherove.com/blog/2004/5/1/book-of-the-month-may.html) - Apr 29, 2004 ### [TrimEnd() Vs. SubString()](https://osherove.com/blog/2004/4/29/trimend-vs-substring.html) --- title: "Going to Tech-Ed. See you there?" url: "https://osherove.com/blog/2004/5/3/going-to-tech-ed-see-you-there.md" canonical: "https://osherove.com/blog/2004/5/3/going-to-tech-ed-see-you-there.html" published: "2004-05-03T16:32:00" updated: "2004-05-03T16:32:00" tags: ["Blogging"] author: "Roy Osherove" description: "Tomorrow morning I'm leaving for Tech-Ed Israel in Eilat. Will be there for 3 days. I hope I get the chance to blog from there, but if I don't you should know why - I don't own a laptop. Go figure. If you're looking for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Going to Tech-Ed. See you there? By Roy Osherove May 3, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 3, 2004; technical details may be outdated. Tomorrow morning I'm leaving for Tech-Ed Israel in Eilat. Will be there for 3 days. I hope I get the chance to blog from there, but if I don't you should know why - I don't own a laptop. Go figure. If you're looking for me, you can look for something that looks like this:  (click to see a bigger Roy) Yet. That's me, after a haircut. Just add beer :) I'll be wearing an official Magen, Microsoft Technology Center black T-Shirt throughout (we got 3), so look for those shirts. This year I've chosen to go in darks and pastels. Since logos seem to be **the** thing this season, I've chosen a white/green logo, something hi-tech. You'll notice the background tries to imitate a native Israeli home, along with wedding pictures hanging off the walls, and a real glass window. The dark window is symbolic for night time. The lack of smile says _I see you, but I don't recognize you since I have short term memory loss for people with which I go to conferences_.  If you see me, ping me by friendly tap on the shoulder, preferably holding an extra glass of beer, and say [Regulator](http://regulator.sourceforge.net/) Rocks! ;) I'll also be bringing my new digital camera, and will try to post Tech-Ed photos to my [photoblog](http://royo.textamerica.com/). BTW, I'm playing backup presenter in case some lecturer can't make it. I'm all ready with a lecture about regular expressions. We'll see what happens. If it happens, it will be my first Tech-Ed lecture. Ain't life interesting sometimes? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 8, 2004 ### [Blogger Dinner with Johanna Rothman this Sunday evening](https://osherove.com/blog/2004/5/8/blogger-dinner-with-johanna-rothman-this-sunday-evening.html) - May 7, 2004 ### [The benefits of employee blogs](https://osherove.com/blog/2004/5/7/the-benefits-of-employee-blogs.html) - May 3, 2004 ### [Another Israeli .Net blogger joins the bunch](https://osherove.com/blog/2004/5/3/another-israeli-net-blogger-joins-the-bunch.html) - Apr 29, 2004 ### [The blogsphere generosity wave - Viral Marketing](https://osherove.com/blog/2004/4/29/the-blogsphere-generosity-wave-viral-marketing.html) --- title: "Another Israeli .Net blogger joins the bunch" url: "https://osherove.com/blog/2004/5/3/another-israeli-net-blogger-joins-the-bunch.md" canonical: "https://osherove.com/blog/2004/5/3/another-israeli-net-blogger-joins-the-bunch.html" published: "2004-05-03T15:50:00" updated: "2004-05-03T15:50:00" tags: ["Blogging"] author: "Roy Osherove" description: "Another Israeli blogger joins the bunch: Ido Samuelson . DotNetJunkies is starting to look like .NetWeblogs at the beginning. Lots of good people writing about new stuff and excited about blogging about it. Coolness :)…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another Israeli .Net blogger joins the bunch By Roy Osherove May 3, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 3, 2004; technical details may be outdated. Another Israeli blogger joins the bunch: [Ido Samuelson](http://dotnetjunkies.com/WebLog/principal/). DotNetJunkies is starting to look like .NetWeblogs at the beginning. Lots of good people writing about new stuff and excited about blogging about it. Coolness :) (I'm not saying .NetWeblogs isn't like that anymore, just that there is a lot more noise lately) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 7, 2004 ### [The benefits of employee blogs](https://osherove.com/blog/2004/5/7/the-benefits-of-employee-blogs.html) - May 3, 2004 ### [Going to Tech-Ed. See you there?](https://osherove.com/blog/2004/5/3/going-to-tech-ed-see-you-there.html) - Apr 29, 2004 ### [The blogsphere generosity wave - Viral Marketing](https://osherove.com/blog/2004/4/29/the-blogsphere-generosity-wave-viral-marketing.html) - Apr 29, 2004 ### [Early & Adopter relocated](https://osherove.com/blog/2004/4/29/early-amp-adopter-relocated.html) --- title: "New version for NUnit Add-in" url: "https://osherove.com/blog/2004/5/1/new-version-for-nunit-add-in.md" canonical: "https://osherove.com/blog/2004/5/1/new-version-for-nunit-add-in.html" published: "2004-05-01T17:06:00" updated: "2004-05-01T17:06:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "New version of NUNit Addin : Looks like lots of new stuff has been added. Coolness. Thanks Jamie!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New version for NUnit Add-in By Roy Osherove May 1, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 1, 2004; technical details may be outdated. [New version of NUNit Addin](http://weblogs.asp.net/nunitaddin/archive/2004/05/01/124453.aspx) : Looks like lots of new stuff has been added. Coolness. Thanks Jamie! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 7, 2004 ### [State of alternative languages on the CLR?](https://osherove.com/blog/2004/5/7/state-of-alternative-languages-on-the-clr.html) - May 7, 2004 ### [Comment Rot(tm)](https://osherove.com/blog/2004/5/7/comment-rottm.html) - May 1, 2004 ### [\[Cool component suite\] NetXP](https://osherove.com/blog/2004/5/1/cool-component-suite-netxp.html) - Apr 30, 2004 ### [Convert a Dataset to an ADO Recordset/Excel XML and more...](https://osherove.com/blog/2004/4/30/convert-a-dataset-to-an-ado-recordsetexcel-xml-and-more.html) --- title: "Book of the month: May" url: "https://osherove.com/blog/2004/5/1/book-of-the-month-may.md" canonical: "https://osherove.com/blog/2004/5/1/book-of-the-month-may.html" published: "2004-05-01T15:04:00" updated: "2004-05-01T15:04:00" tags: [".Net Original", "Recommended books"] author: "Roy Osherove" description: "I've updated my current book of the month and the list of book recommendations. I've also added a “recommended books“ category to my blog, for future reference. I'd love to hear your book recommendations. Book of the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Book of the month: May By Roy Osherove May 1, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Recommended books](https://osherove.com/blog/category/recommended-books) **Historical article** · Originally published May 1, 2004; technical details may be outdated. I've updated my current book of the month and [the list of book recommendations.](http://dotnetweblogs.com/rosherove/story/6802.aspx) I've also added a “recommended books“ category to my blog, for future reference. I'd love to hear your book recommendations. Book of the month for this month is the one that didn't make it last month(hence I'll recycle my post from last month about it): [.NET Framework Standard Library Annotated Reference Vol 1,](https://www.amazon.com/exec/obidos/ASIN/0321154894/iserializable-20) by [Brad Abrams](http://blogs.msdn.com/brada/). ![Book of the month: .NET Framework Standard Library Annotated Reference, Volume 1: Base Class Library and Extended Numerics Library, 1/e](https://osherove.com/img/wb/93349290_images.amazon.com_images_P_0321154894.01._PE32_PI_SCMZZZZZZZ_.jpg) I really like this quote from Brad about the book: _I tried to maintain a very minium level of editorial discretion on the annotations. My goal was to get folks that were heavily involved in the design of the BCL to comment candidly from their point of view. There are no annotations that are wrong technically, but that does not mean they are all the Microsoft official position_ [Brad is also sharing stuff from the book on his blog](http://blogs.msdn.com/brada/category/4449.aspx). Very interesting. I'd say this book is a must if you want to deeply understand some of the reasons and logic (and sometimes mistakes) that went into creating the base class library of the .Net framework. I'm one of those who believes the deeper you are aware of what's underneath, the better you can deal with problems and understand why things happen, and thus deal with them more easily. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 7, 2004 ### [My favorite Tech-Ed quote, and what you need to know about FABRIQ](https://osherove.com/blog/2004/5/7/my-favorite-tech-ed-quote-and-what-you-need-to-know-about-fa.html) - May 7, 2004 ### [Back from Tech-Ed, and another Israeli .Net blogger found.](https://osherove.com/blog/2004/5/7/back-from-tech-ed-and-another-israeli-net-blogger-found.html) - Apr 29, 2004 ### [TrimEnd() Vs. SubString()](https://osherove.com/blog/2004/4/29/trimend-vs-substring.html) - Apr 29, 2004 ### [Why is VS.Net Add-in architecture so overly complicated?](https://osherove.com/blog/2004/4/29/why-is-vsnet-add-in-architecture-so-overly-complicated.html) --- title: "[Cool component suite] NetXP" url: "https://osherove.com/blog/2004/5/1/cool-component-suite-netxp.md" canonical: "https://osherove.com/blog/2004/5/1/cool-component-suite-netxp.html" published: "2004-05-01T14:33:00" updated: "2004-05-01T14:33:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Mike points to a (free for personal and freeware use) cool components and controls suite: NetXP. Some cool stuff there including: Components and extender providers Command bars, list bar, and status bar Various Windows…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool component suite\] NetXP By Roy Osherove May 1, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 1, 2004; technical details may be outdated. [Mike points](http://www.larkware.com/Articles/TheDailyGrind361.html) to a (free for personal and freeware use) cool components and controls suite: NetXP. Some cool stuff there including: - [Components and extender providers](http://www.dacris.com/netxp/Showcase/Components.aspx) - [Command bars, list bar, and status bar](http://www.dacris.com/netxp/Showcase/Bars.aspx) - [Various Windows Forms controls](http://www.dacris.com/netxp/Showcase/Controls.aspx) - [Docking manager and related controls](http://www.dacris.com/netxp/Showcase/Docking.aspx) - [Task pane control suite](http://www.dacris.com/netxp/Showcase/TaskPane.aspx) - [Reusable forms](http://www.dacris.com/netxp/Showcase/Forms.aspx) - [Utility library and wrappers](http://www.dacris.com/netxp/Showcase/Library.aspx) - [Other components](http://www.dacris.com/netxp/Showcase/Other.aspx) nice! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 7, 2004 ### [Comment Rot(tm)](https://osherove.com/blog/2004/5/7/comment-rottm.html) - May 1, 2004 ### [New version for NUnit Add-in](https://osherove.com/blog/2004/5/1/new-version-for-nunit-add-in.html) - Apr 30, 2004 ### [Convert a Dataset to an ADO Recordset/Excel XML and more...](https://osherove.com/blog/2004/4/30/convert-a-dataset-to-an-ado-recordsetexcel-xml-and-more.html) - Apr 30, 2004 ### [Beware of Vs.Net plugins and wizards bearing gifts](https://osherove.com/blog/2004/4/30/beware-of-vsnet-plugins-and-wizards-bearing-gifts.html) --- title: "Convert a Dataset to an ADO Recordset/Excel XML and more..." url: "https://osherove.com/blog/2004/4/30/convert-a-dataset-to-an-ado-recordsetexcel-xml-and-more.md" canonical: "https://osherove.com/blog/2004/4/30/convert-a-dataset-to-an-ado-recordsetexcel-xml-and-more.html" published: "2004-04-30T20:22:00" updated: "2004-04-30T20:22:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Brendan Tompkins has written a handy utility that can transform an ADO.NET DataSet into different formats, including ADO Recordset XML, Comma Delimited, Tab Delimited and Excel XML. He writes about it in his post…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Convert a Dataset to an ADO Recordset/Excel XML and more... By Roy Osherove April 30, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 30, 2004; technical details may be outdated. _Brendan Tompkins  has written a handy utility that can transform an ADO.NET DataSet into different formats, including ADO Recordset XML, Comma Delimited, Tab Delimited and Excel XML. He writes about it in his post_ [_Transform an ADO.NET DataSet to ADO Recordset XML, Excel XML and more!_](http://dotnetjunkies.com/WebLog/bsblog/archive/2004/04/27/12229.aspx)   \[via [Dare](http://blogs.msdn.com/DareObasanjo/archive/2004/04/30/124011.aspx)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 1, 2004 ### [New version for NUnit Add-in](https://osherove.com/blog/2004/5/1/new-version-for-nunit-add-in.html) - May 1, 2004 ### [\[Cool component suite\] NetXP](https://osherove.com/blog/2004/5/1/cool-component-suite-netxp.html) - Apr 30, 2004 ### [Beware of Vs.Net plugins and wizards bearing gifts](https://osherove.com/blog/2004/4/30/beware-of-vsnet-plugins-and-wizards-bearing-gifts.html) - Apr 29, 2004 ### [Problem and Solution: Weird MSMQ memory leak when calling Peek()](https://osherove.com/blog/2004/4/29/problem-and-solution-weird-msmq-memory-leak-when-calling-pee.html) --- title: "Beware of Vs.Net plugins and wizards bearing gifts" url: "https://osherove.com/blog/2004/4/30/beware-of-vsnet-plugins-and-wizards-bearing-gifts.md" canonical: "https://osherove.com/blog/2004/4/30/beware-of-vsnet-plugins-and-wizards-bearing-gifts.html" published: "2004-04-30T20:10:00" updated: "2004-04-30T20:10:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "This might be a good idea to know if you're a judge on the Add-in contest: --------------------- I installed some Visual Studio.Net 2003 plug-ins a while back. Didn't find them very useful so I decided to uninstall. Oh…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Beware of Vs.Net plugins and wizards bearing gifts By Roy Osherove April 30, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 30, 2004; technical details may be outdated. This might be a good idea to know if you're a judge on the Add-in contest: \--------------------- _I  installed some Visual Studio.Net 2003 plug-ins a while back. Didn't find them very useful so I decided to uninstall._ _Oh sh!te..._ _All of the sudden when I try and add a new Windows Form Class, I get an **“Could not run the ".....vsz" wizard."** error. Many posts that I've Googled to suggest a “Repair” of Visual Studio. No problem with that I guess, except that I can't waste a day installing Visual Studio again._ _Luckily I found the_ [_solution_](http://www.petedavis.net/dotnet_articles/wizardfix.html)_..._  _\[via [Willem](http://dotnetjunkies.com/WebLog/willemo/archive/2004/04/30/12471.aspx)\]_ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 1, 2004 ### [\[Cool component suite\] NetXP](https://osherove.com/blog/2004/5/1/cool-component-suite-netxp.html) - Apr 30, 2004 ### [Convert a Dataset to an ADO Recordset/Excel XML and more...](https://osherove.com/blog/2004/4/30/convert-a-dataset-to-an-ado-recordsetexcel-xml-and-more.html) - Apr 29, 2004 ### [Problem and Solution: Weird MSMQ memory leak when calling Peek()](https://osherove.com/blog/2004/4/29/problem-and-solution-weird-msmq-memory-leak-when-calling-pee.html) - Apr 24, 2004 ### [Good article about ReaderWriterLock and Multi Threading](https://osherove.com/blog/2004/4/24/good-article-about-readerwriterlock-and-multi-threading.html) --- title: "TrimEnd() Vs. SubString()" url: "https://osherove.com/blog/2004/4/29/trimend-vs-substring.md" canonical: "https://osherove.com/blog/2004/4/29/trimend-vs-substring.html" published: "2004-04-29T22:59:00" updated: "2004-04-29T22:59:00" tags: [".Net Original"] author: "Roy Osherove" description: "Many developers have had to write a loop that writes out a comma separated value list . There's always the trick of how you make that last comma get removed from the end of that string. Usually, at the end of the loop,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TrimEnd() Vs. SubString() By Roy Osherove April 29, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 29, 2004; technical details may be outdated. Many developers have had to [write a loop that writes out a comma separated value list](http://weblogs.asp.net/dburke/archive/2004/04/28/122332.aspx). There's always the trick of how you make that last comma get removed from the end of that string. Usually, at the end of the loop, many developers will do something like this to remove the last char in the string: _out = out.Substring( 0, out.LastIndexOf( ',' )_ However, there's a **cleaner** way to accomplish this task: _out = out.TrimEnd(',')_ _TrimeEnd_ can receive a char array so you can remove any unwanted chars from the end easily. The code is also more readable. And yes, there's a TrimStart() to match that function. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 7, 2004 ### [Back from Tech-Ed, and another Israeli .Net blogger found.](https://osherove.com/blog/2004/5/7/back-from-tech-ed-and-another-israeli-net-blogger-found.html) - May 1, 2004 ### [Book of the month: May](https://osherove.com/blog/2004/5/1/book-of-the-month-may.html) - Apr 29, 2004 ### [Why is VS.Net Add-in architecture so overly complicated?](https://osherove.com/blog/2004/4/29/why-is-vsnet-add-in-architecture-so-overly-complicated.html) - Apr 29, 2004 ### [How to: Creating project groups under a single solution](https://osherove.com/blog/2004/4/29/how-to-creating-project-groups-under-a-single-solution.html) --- title: "A new low in television reached" url: "https://osherove.com/blog/2004/4/29/a-new-low-in-television-reached.md" canonical: "https://osherove.com/blog/2004/4/29/a-new-low-in-television-reached.html" published: "2004-04-29T22:47:00" updated: "2004-04-29T22:47:00" tags: ["Off Topic"] author: "Roy Osherove" description: "eek! American Television is reaching new amazing lows . (via Bill ) ” In a unique television event, Barbara Walters documents a young birth mother's journey as she selects who, among five anxious couples vying for a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A new low in television reached By Roy Osherove April 29, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 29, 2004; technical details may be outdated. eek! American Television is reaching [new amazing lows](http://abcnews.go.com/sections/2020/Living/Adoption_promo_040426-1.html). (via [Bill](http://geekswithblogs.net/evjen/archive/2004/04/26/4377.aspx)) _” In a unique television event, Barbara Walters documents a young birth mother's journey as she selects who, among five anxious couples vying for a child of their own, will become parents to her child. “_ _"I was basically deciding if they're going to have children or not. I was kind of playing God," says Jessica, 16, about her heartwrenching choice of who would adopt and raise her unborn baby boy while allowing her to continue to play a part in his life“_ _“20/20 cameras are there as each couple tries to convince the pregnant girl that they would be the best parents for her soon-to-be-born baby. But after all of the heartache, will the 8½-month pregnant high school sophomore really be ready to sign away her legal rights once the baby is born and she can hold him in her arms? “_ All I can say is that this makes me sick and I would never watch such a horrifying thing. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 8, 2004 ### [Saddam Hussein's cat](https://osherove.com/blog/2004/5/8/saddam-husseins-cat.html) - May 8, 2004 ### [Post-TechEd-Israel-Dinner and a little about Indigo](https://osherove.com/blog/2004/5/8/post-teched-israel-dinner-and-a-little-about-indigo.html) - Apr 29, 2004 ### [Tech-Ed Israel Blogger/Nerd Dinner anyone?](https://osherove.com/blog/2004/4/29/tech-ed-israel-bloggernerd-dinner-anyone.html) - Apr 29, 2004 ### [Unblocking an attachment blocked by outlook](https://osherove.com/blog/2004/4/29/unblocking-an-attachment-blocked-by-outlook.html) --- title: "The blogsphere generosity wave - Viral Marketing" url: "https://osherove.com/blog/2004/4/29/the-blogsphere-generosity-wave-viral-marketing.md" canonical: "https://osherove.com/blog/2004/4/29/the-blogsphere-generosity-wave-viral-marketing.html" published: "2004-04-29T22:21:00" updated: "2004-04-29T22:21:00" tags: ["Blogging"] author: "Roy Osherove" description: "Mike Schnikel is handing out free XDN subscriptions to .Net bloggers. He also donated some for my Add-in contest so that makes him a pretty cool guy, and a pretty good marketer too. The cool thing for me is that his…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The blogsphere generosity wave - Viral Marketing By Roy Osherove April 29, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published April 29, 2004; technical details may be outdated. Mike Schnikel is handing out free XDN subscriptions to .Net bloggers. He also donated some for [my Add-in contest](http://weblogs.asp.net/rosherove/archive/2004/04/21/117663.aspx) so that makes him a pretty cool guy, and a pretty good marketer too. The cool thing for me is that his latest generosity binge seems to have been inspired by [one of my posts about viral marketing](http://weblogs.asp.net/rosherove/archive/2004/04/23/118547.aspx). Feel free to thank me with beer ;) **FREE [XDN](http://blogs.xtras.net/mikes/ct.ashx?id=2650d93d-0994-4f74-ae52-900173d03ebd&url=http%3a%2f%2fwww.xtras.net%2fxdn) Professional for .NET Bloggers during May 2004** _[Mike Schinkel](http://blogs.xtras.net/mikes/), president of [Xtras.Net](http://blogs.xtras.net/mikes/ct.ashx?id=2650d93d-0994-4f74-ae52-900173d03ebd&url=http%3a%2f%2fwww.xtras.net%2f), made [an offer](http://blogs.xtras.net/mikes/PermaLink,guid,2650d93d-0994-4f74-ae52-900173d03ebd.aspx) on his [personal blog](http://blogs.xtras.net/mikes/) of a free [XDN](http://blogs.xtras.net/mikes/ct.ashx?id=2650d93d-0994-4f74-ae52-900173d03ebd&url=http%3a%2f%2fwww.xtras.net%2fxdn) Professional membership (_[_http://www.xtras.net/xdn_](http://www.xtras.net/xdn)_) during the month of May 2004 for anyone that blogs about .NET frequently. If you are a .NET blogger, see [Mike's post](http://blogs.xtras.net/mikes/PermaLink,guid,2650d93d-0994-4f74-ae52-900173d03ebd.aspx) for how to get your free [XDN](http://blogs.xtras.net/mikes/ct.ashx?id=2650d93d-0994-4f74-ae52-900173d03ebd&url=http%3a%2f%2fwww.xtras.net%2fxdn) membership._ ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 3, 2004 ### [Going to Tech-Ed. See you there?](https://osherove.com/blog/2004/5/3/going-to-tech-ed-see-you-there.html) - May 3, 2004 ### [Another Israeli .Net blogger joins the bunch](https://osherove.com/blog/2004/5/3/another-israeli-net-blogger-joins-the-bunch.html) - Apr 29, 2004 ### [Early & Adopter relocated](https://osherove.com/blog/2004/4/29/early-amp-adopter-relocated.html) - Apr 20, 2004 ### [Hardcore XML blog](https://osherove.com/blog/2004/4/20/hardcore-xml-blog.html) --- title: "Tech-Ed Israel Blogger/Nerd Dinner anyone?" url: "https://osherove.com/blog/2004/4/29/tech-ed-israel-bloggernerd-dinner-anyone.md" canonical: "https://osherove.com/blog/2004/4/29/tech-ed-israel-bloggernerd-dinner-anyone.html" published: "2004-04-29T22:13:00" updated: "2004-04-29T22:13:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'll be at Tech-Ed Israel in Eilat next week and was thinking, assuming there are enough of you there, to arrange for a special blogger/nerd dinner along with Dino Esposito on one of the evenings. Leave a comment if you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tech-Ed Israel Blogger/Nerd Dinner anyone? By Roy Osherove April 29, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 29, 2004; technical details may be outdated. I'll be at Tech-Ed Israel in Eilat next week and was thinking, assuming there are enough of you there, to arrange for a special blogger/nerd dinner along with Dino Esposito on one of the evenings. Leave a comment if you wanna join in. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 8, 2004 ### [Post-TechEd-Israel-Dinner and a little about Indigo](https://osherove.com/blog/2004/5/8/post-teched-israel-dinner-and-a-little-about-indigo.html) - Apr 29, 2004 ### [A new low in television reached](https://osherove.com/blog/2004/4/29/a-new-low-in-television-reached.html) - Apr 29, 2004 ### [Unblocking an attachment blocked by outlook](https://osherove.com/blog/2004/4/29/unblocking-an-attachment-blocked-by-outlook.html) - Apr 26, 2004 ### [Less is more, but more is more](https://osherove.com/blog/2004/4/26/less-is-more-but-more-is-more.html) --- title: "[Cool Tip] Speed up Outlook email switching" url: "https://osherove.com/blog/2004/4/29/cool-tip-speed-up-outlook-email-switching.md" canonical: "https://osherove.com/blog/2004/4/29/cool-tip-speed-up-outlook-email-switching.html" published: "2004-04-29T22:01:00" updated: "2004-04-29T22:01:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "Ah! great Outlook tip: “Note to self: Next time it takes up to 15 seconds to switch between emails, be sure to disable the instant messaging feature. Tools->Options->Other->uncheck \"Enable Instant Messaging in Outlook\".…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool Tip\] Speed up Outlook email switching By Roy Osherove April 29, 2004 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published April 29, 2004; technical details may be outdated. Ah! great Outlook tip: _“Note to self: Next time it takes up to 15 seconds to switch between emails, be sure to disable the instant messaging feature._ _Tools->Options->Other->uncheck "Enable Instant Messaging in Outlook". “_ \[[MelloBlog](http://www.melloblog.com/Feedback.aspx?BlogID=37)\] Nice.  In my case I could only find the “enable person name smart tag” checkbox though. Seems like that one works. ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Sep 3, 2004 ### [attach a debugger to a service automatically at startup](https://osherove.com/blog/2004/9/3/attach-a-debugger-to-a-service-automatically-at-startup.html) - Jul 24, 2004 ### [\[Tip\] how to get Windows Explorer to "Yes to All" or "No to All":](https://osherove.com/blog/2004/7/24/tip-how-to-get-windows-explorer-to-quotyes-to-allquot-or-quo.html) - Apr 29, 2004 ### [How to: Open Word doc links inside Word, NOT inside the browser](https://osherove.com/blog/2004/4/29/how-to-open-word-doc-links-inside-word-not-inside-the-browse.html) - Apr 29, 2004 ### [Unblocking an attachment blocked by outlook](https://osherove.com/blog/2004/4/29/unblocking-an-attachment-blocked-by-outlook.html) --- title: "Early & Adopter relocated" url: "https://osherove.com/blog/2004/4/29/early-amp-adopter-relocated.md" canonical: "https://osherove.com/blog/2004/4/29/early-amp-adopter-relocated.html" published: "2004-04-29T21:49:00" updated: "2004-04-29T21:49:00" tags: ["Blogging"] author: "Roy Osherove" description: "If you haven't noticed, Early & Adopter's blog has moved over to here . Apprently Radio is being a bitch so they ditched it and moved over. They have a excellent .Net blog. Highly recommended." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Early & Adopter relocated By Roy Osherove April 29, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published April 29, 2004; technical details may be outdated. If you haven't noticed, Early & Adopter's blog has moved over to [here](http://ea.3leaf.com/). Apprently Radio is being a bitch so they ditched it and moved over. They have a excellent .Net blog. Highly recommended. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 3, 2004 ### [Another Israeli .Net blogger joins the bunch](https://osherove.com/blog/2004/5/3/another-israeli-net-blogger-joins-the-bunch.html) - Apr 29, 2004 ### [The blogsphere generosity wave - Viral Marketing](https://osherove.com/blog/2004/4/29/the-blogsphere-generosity-wave-viral-marketing.html) - Apr 20, 2004 ### [Hardcore XML blog](https://osherove.com/blog/2004/4/20/hardcore-xml-blog.html) - Apr 14, 2004 ### [Nice blog](https://osherove.com/blog/2004/4/14/nice-blog.html) --- title: "IT User groups in Israel (not just .Net)" url: "https://osherove.com/blog/2004/4/29/it-user-groups-in-israel-not-just-net.md" canonical: "https://osherove.com/blog/2004/4/29/it-user-groups-in-israel-not-just-net.html" published: "2004-04-29T21:39:00" updated: "2004-04-29T21:39:00" tags: [] author: "Roy Osherove" description: "I was recently introduced to the fact that there are a lot more technology centered user groups in Israel that I thought. The good news is that they span many technologies - from Java to Interex (which is a totally new…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # IT User groups in Israel (not just .Net) By Roy Osherove April 29, 2004 **Historical article** · Originally published April 29, 2004; technical details may be outdated. I was recently introduced to the fact that there are a lot more technology centered user groups in Israel that I thought. The good news is that they span many technologies  - from Java to Interex (which is a totally new word to me). The bad news is that most of them seem to be as organized and maintained as a bunch of hippies on the beach. I'll post the complete list here shortly, but first - How I got it. I was recently approached by email by a person named Gabor Szabo(Does not sound Israeli but he's form Israel). Gabor is the manager of the [Perl User group in Israel](http://perl.org.il/), which is one of the more organized groups here. He approached me because he somehow found a link to [www.ildotnet.com](http://www.ildotnet.com/)  and figured I was the person to contact in regards to User Groups in Israel. Oh well. Could have done worse ;) Anyway, Gabor is trying to organize a global “IT User Group Open Day“ here in Israel, to be attended by members of all the IT user groups. For that he wanted to find all the user groups there are in Israel and contact their admins. Tha's how he found me. Although I told him I am not the person to talk to regarding management of .Net user groups, I said I would connect him to other UG leaders, something which I have not done yet, but this is a start of that move. The “IT User Group Open Day“ thing is something that already exists in Australia. Gabor liked it and thought he'd try to implement it here. Hard work, but who knows. Maybe we can make it. Here's a description for the event: _IT User Group Open Day represents an excellent opportunity to talk to members about their group's activities and the numerous benefits associated with membership.  Visitors will be able to find out how user groups can help prepare for a career, develop an existing career, make them worth more as a permanent or contract employee, or simply put them together with others that share their interests and knowledge_ Gabor has also opened a mailing list for UG leaders for organizing the event. [Here is the mailing list](http://perl.org.il/mailman/listinfo/itug). One of the things he posted on this mailing list was all the User groups in Israel he could find. Here it is. Some of these arn't even good links or lead to dead sites with not maintenance seen anywhere. Can't say I'm surprised. Even my ILdotNet.com baby is not doing so great (which, BTW, I may have some great news about this one in the near future!). For this I am including a list I compiled using Google with UG names and some URLs. If there are more name/URL pairs I'd appreciate your input (including individual links to the .NET groups if there are) If you know people from these groups, you are welcome to invite them either in a private e-mail or by announcing [our mailing list](http://perl.org.il/mailman/listinfo/itug) on a public forum. Linux - [http://www.linux.org.il/](http://www.linux.org.il/) Linux - IGLU - [http://www.iglu.org.il/](http://www.iglu.org.il/) Linux - Haifux - [http://www.haifux.org.il](http://www.haifux.org.il/) Linux - Telux - Tel Aviv Linux - JLUG - Jerusalem Linux User Group Hackers.il HaMakor [http://www.hamakor.org.il/](http://www.hamakor.org.il/) Perl - Israel.pm [http://www.perl.org.il/](http://www.perl.org.il/) Perl - Jerusalem.pm Java - IJUG - [http://www.ijug.org.il/](http://www.ijug.org.il/) Java - Javadesk - [http://www.javadesk.com/](http://www.javadesk.com/) Rational / IBM - ? Synopsys - SNUG - [http://www.snug-universal.org/israel/israel.htm](http://www.snug-universal.org/israel/israel.htm) Interex LUG [http://www.interex.org/lug/Israel.html](http://www.interex.org/lug/Israel.html) Oracle [http://www.eoug.com/contacts/ug\_emea/middleeast/IL/](http://www.eoug.com/contacts/ug_emea/middleeast/IL/) Business Objects - BOISRAEL [http://www.forumtopics.com/busobj/viewforum.php?f=68](http://www.forumtopics.com/busobj/viewforum.php?f=68) CA - [http://ca.com/offices/israel/local/usergroup.html](http://ca.com/offices/israel/local/usergroup.html) Apple - [http://www.macintosh.co.il/](http://www.macintosh.co.il/) .NET - [http://www.microsoft.com/israel/communities/usergroups/default.aspx](http://www.microsoft.com/israel/communities/usergroups/default.aspx)  , [http://www.ildotnet.com/](http://www.ildotnet.com/) PHP - Python - Palm - PALMI - [http://www.palmi.co.il](http://www.palmi.co.il/) Delphi - [http://www.barak.co.il/barak/dlphiweb.htm](http://www.barak.co.il/barak/dlphiweb.htm) OS/2 - [http://teamos2.israel.eu.org/](http://teamos2.israel.eu.org/) SAP - [http://www.isug.org](http://www.isug.org/) --- title: "How to: Open Word doc links inside Word, NOT inside the browser" url: "https://osherove.com/blog/2004/4/29/how-to-open-word-doc-links-inside-word-not-inside-the-browse.md" canonical: "https://osherove.com/blog/2004/4/29/how-to-open-word-doc-links-inside-word-not-inside-the-browse.html" published: "2004-04-29T21:14:00" updated: "2004-04-29T21:14:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "I hate it when a word document link opens inside my browser instead of inside Word. The same for excel, powerpoint and visio. Enter the blogsphere Matrix . Gus figures out how to disable the damn thing And then Omar…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to: Open Word doc links inside Word, NOT inside the browser By Roy Osherove April 29, 2004 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published April 29, 2004; technical details may be outdated. I hate it when a word document link opens inside my browser instead of inside Word. The same for excel, powerpoint and visio. **Enter the blogsphere Matrix**. - Gus figures out [how to disable the damn thing](http://blogs.msdn.com/gusperez/archive/2004/04/28/122768.aspx) - And then [Omar finds a way to automate it](http://www.shahine.com/omar/PermaLink,guid,b6d6cdba-4b86-439a-a373-8a1cb8a58bca.aspx) ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Jul 24, 2004 ### [\[Tip\] how to get Windows Explorer to "Yes to All" or "No to All":](https://osherove.com/blog/2004/7/24/tip-how-to-get-windows-explorer-to-quotyes-to-allquot-or-quo.html) - Apr 29, 2004 ### [\[Cool Tip\] Speed up Outlook email switching](https://osherove.com/blog/2004/4/29/cool-tip-speed-up-outlook-email-switching.html) - Apr 29, 2004 ### [Unblocking an attachment blocked by outlook](https://osherove.com/blog/2004/4/29/unblocking-an-attachment-blocked-by-outlook.html) - Mar 27, 2004 ### [VS-Styler :Toggle and save your VS.Net font and color settings instantly](https://osherove.com/blog/2004/3/27/vs-styler-toggle-and-save-your-vsnet-font-and-color-settings.html) --- title: "Why is VS.Net Add-in architecture so overly complicated?" url: "https://osherove.com/blog/2004/4/29/why-is-vsnet-add-in-architecture-so-overly-complicated.md" canonical: "https://osherove.com/blog/2004/4/29/why-is-vsnet-add-in-architecture-so-overly-complicated.html" published: "2004-04-29T20:27:00" updated: "2004-04-29T20:27:00" tags: [".Net Original"] author: "Roy Osherove" description: "One of the weirdest things for me is trying to understand the motives behind some of the technical decisions that went into designing the VS.Net Add-in/Plugin architecture. It's an amazing and powerful scheme that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why is VS.Net Add-in architecture so overly complicated? By Roy Osherove April 29, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 29, 2004; technical details may be outdated. One of the weirdest things for me is trying to understand the motives behind some of the technical decisions that went into designing the VS.Net Add-in/Plugin architecture. It's an amazing and powerful scheme that allows a plugin developer have various degrees of power, but there's just something weird about it. It still uses COM! Why must Add-in developers suffer going through to create VS.Net add-ins? is it some sort of security thing? Is using pure reflection based loading too simple? Seems to me like someone was trying to make this difficult on purpose, so that it won't look like child's play to create add-ins or understand how they work. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 1, 2004 ### [Book of the month: May](https://osherove.com/blog/2004/5/1/book-of-the-month-may.html) - Apr 29, 2004 ### [TrimEnd() Vs. SubString()](https://osherove.com/blog/2004/4/29/trimend-vs-substring.html) - Apr 29, 2004 ### [How to: Creating project groups under a single solution](https://osherove.com/blog/2004/4/29/how-to-creating-project-groups-under-a-single-solution.html) - Apr 29, 2004 ### [Bill Vaughn blogs, and I ask an ADO.Net question](https://osherove.com/blog/2004/4/29/bill-vaughn-blogs-and-i-ask-an-adonet-question.html) --- title: "Problem and Solution: Weird MSMQ memory leak when calling Peek()" url: "https://osherove.com/blog/2004/4/29/problem-and-solution-weird-msmq-memory-leak-when-calling-pee.md" canonical: "https://osherove.com/blog/2004/4/29/problem-and-solution-weird-msmq-memory-leak-when-calling-pee.html" published: "2004-04-29T20:21:00" updated: "2004-04-29T20:21:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "I was recently faced with the task of trying to figure out why, sporadically, when Calling an MSMQ's Peek() function, an application would loose memory for no apparent reason. It was pretty weird and hard to even…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Problem and Solution: Weird MSMQ memory leak when calling Peek() By Roy Osherove April 29, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 29, 2004; technical details may be outdated. I was recently faced with the task of trying to figure out why, sporadically, when Calling an MSMQ's Peek() function, an application would loose memory for no apparent reason. It was pretty weird and hard to even recreate. Searching google turned up [this very helpful news group message](http://tinyurl.com/2cjr9) which seems to have answered the problem: \----SNIP------------ _If you try to peek or receive messages on a remote queue which does not exist (the queue or the machine) you will loose memory for every try you do. The bad part is that there is no direct way to check if a remote queue exists, but there is a workaround. MessageQueue.Exists(queuename) only works for local queues. If you try to send a message to a queue using this format name “FormatName:direct=os:\\private$\\myqueue”  you will not get an error if the queue does not exists. If you try to peek or receive you get an error, but at that point the memory is already lost. Sample code to reproduce memory leak:       MessageQueue mq = new MessageQueue("FormatName:direct=OS:dcc-roger-test\\\\private$\\\\1234");       System.Messaging.Message msg = new System.Messaging.Message();                                        try                                                                                                   {                                                                                                           msg = mq.Peek(TimeSpan.FromTicks(2));                                                        }                                                                                                     catch                                                                                                 {                                                                                                     }                                                                                                     if(msg != null)                                                                                       {                                                                                                           msg.Dispose();                                                                                  }                                                                                                     mq.Close();                                                                                           mq.Dispose();                                                                                                                                                                                         Forcing a GC.Collect / GC.WaitForPendingFinalizers / GC.GetTotalMemory(true) gives back a small portion of the lost memory. Be aware of the virtual memory usage of your .net applications, in my example I had about 15mb in “mem usage” in Task Manager and over 1 gb in virtual memory usage. The workaround is simple, just make sure you can read from the queue before you try to peek / receive from it. CanRead returns false if the queue does not exist or if you do not have rights to access it.       if(mq.CanRead)                                                                                        {                                                                                                           msg = mq.Peek(TimeSpan.FromTicks(2));                                                           }                                                                                               Best Regards, Roger Larsen Dialogic Communications Corporation _ \----SNIP------------ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 30, 2004 ### [Convert a Dataset to an ADO Recordset/Excel XML and more...](https://osherove.com/blog/2004/4/30/convert-a-dataset-to-an-ado-recordsetexcel-xml-and-more.html) - Apr 30, 2004 ### [Beware of Vs.Net plugins and wizards bearing gifts](https://osherove.com/blog/2004/4/30/beware-of-vsnet-plugins-and-wizards-bearing-gifts.html) - Apr 24, 2004 ### [Good article about ReaderWriterLock and Multi Threading](https://osherove.com/blog/2004/4/24/good-article-about-readerwriterlock-and-multi-threading.html) - Apr 22, 2004 ### [Some cool stuff coming in ADO.NET 2.0](https://osherove.com/blog/2004/4/22/some-cool-stuff-coming-in-adonet-20.html) --- title: "How to: Creating project groups under a single solution" url: "https://osherove.com/blog/2004/4/29/how-to-creating-project-groups-under-a-single-solution.md" canonical: "https://osherove.com/blog/2004/4/29/how-to-creating-project-groups-under-a-single-solution.html" published: "2004-04-29T20:13:00" updated: "2004-04-29T20:13:00" tags: [".Net Original"] author: "Roy Osherove" description: "One of the features that I seem to miss most about working with VS.Net and working on an enterprise level application (10+ projects in the same solution) is having no folders inside the solution with which to group…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to: Creating project groups under a single solution By Roy Osherove April 29, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 29, 2004; technical details may be outdated. One of the features that I seem to miss most about working with VS.Net and working on an enterprise level application (10+ projects in the same solution) is having no folders inside the solution with which to group related projects together. For example, usually I'll have a pair of projects for each Application tier, one for unit tests and another for the tier implementation (“Dal“,“Dal.Tests“). Using such a folder scheme as mentioned above I'd have a folder under my solution called “Dal” under which these two projects will reside. It gets more complicated when you want to include various application blocks with their code inside the solution, which in turn might be comprised of several projects on their own (the logging application block comprises 3-4 projects.ugh)  Soon the solution starts to look like a big pile of projects and you can't seem to find anything without going through hell. Well. There's good news and good news. The g_ood_ news is that in VS.Net 2005 you get these folders. The _better_ news is that you don't have to wait for Vs.Net 2005 to get this functionality. If you have VS.Net enterprise edition, you can use something called “Enterprise Template Project” to act as a project folder. To accomplish this here's how I'd create the scenario depicted above: - Create a new empty solution - Right  click on the solution and select "Add-New Project" - From the dialog select "Other Project Types" - Select the "Enterprise Template Project" - You get a new project with a weird icon inside your solution. - Now, here's the kicker: right click on your newly added project and select "Add-" - You get a "New project" in that menu. You've just added a "folder" to your solution. You can add Template projects inside template projects - giving you the ability to create a very complicated and inclusive hierarchy of your enterprise solution. I've seen such a solution containing about 30 project, all grouped and named logically, and it was a breeze to navigate in. Have fun! (Thanks for the tip, Ohad) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 29, 2004 ### [TrimEnd() Vs. SubString()](https://osherove.com/blog/2004/4/29/trimend-vs-substring.html) - Apr 29, 2004 ### [Why is VS.Net Add-in architecture so overly complicated?](https://osherove.com/blog/2004/4/29/why-is-vsnet-add-in-architecture-so-overly-complicated.html) - Apr 29, 2004 ### [Bill Vaughn blogs, and I ask an ADO.Net question](https://osherove.com/blog/2004/4/29/bill-vaughn-blogs-and-i-ask-an-adonet-question.html) - Apr 25, 2004 ### [1st prize just got a whole lot bigger](https://osherove.com/blog/2004/4/25/1st-prize-just-got-a-whole-lot-bigger.html) --- title: "Bill Vaughn blogs, and I ask an ADO.Net question" url: "https://osherove.com/blog/2004/4/29/bill-vaughn-blogs-and-i-ask-an-adonet-question.md" canonical: "https://osherove.com/blog/2004/4/29/bill-vaughn-blogs-and-i-ask-an-adonet-question.html" published: "2004-04-29T19:52:00" updated: "2004-04-29T19:52:00" tags: [".Net Original"] author: "Roy Osherove" description: "Bill Vaughn started a blog over at DotNetJunkies . Coolness! I've been reading an hearing some of Bill's thoughts on Data Access in the recent past and all I can say is that I wish I knew all the stuff he's already…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Bill Vaughn blogs, and I ask an ADO.Net question By Roy Osherove April 29, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 29, 2004; technical details may be outdated.  [Bill Vaughn started a blog over at DotNetJunkies](http://dotnetjunkies.com/WebLog/hitchhiking/archive/2004/04/29/12408.aspx). Coolness! I've been reading an hearing some of Bill's thoughts on Data Access in the recent past and all I can say is that I wish I knew all the stuff he's already forgotten about ADO.Net and Data Access techniques in general. [Subscribed](http://dotnetjunkies.com/WebLog/hitchhiking/Rss.aspx). Now, here's something for Bill to gnaw on, since he specifically said  _“I've been known to answer questions when I can and I try not to make up the answer when I can't...”_  **Context:** - You have a Dataset that contains one parent table and one child table (with a relation between them). - The Parent table has a primary key comprising of Identity Values that needs to be reconciled with the database. - The Relation between the two tables is declared as “Cascade Update” and “Cascade Delete”. - You have a new row in the parent table and some new child rows for that row in the child table that you need to add to the database. - To save bandwidth, you use the GetChanges() method of the dataset and update those values. - The update succeeds and also retrieves back the new identity value of the new row (following all the steps mentioned in [this MSDN article](http://msdn.microsoft.com/msdnmag/issues/04/05/DataPoints/default.aspx)) - Identity columns are set to -1 with an increment of -1 to prevent database collisions **Problem:** Trying to merge the changed dataset with the original produces a ContraintException due to some sort of problem with the child rows in the child table(even though Cascade update is set to true). This problem does not occur if there are no new child rows to be updated as well. **Possible Solutions?** - [This article](http://devcenter.infragistics.com/Articles/ArticleTemplate.Aspx?ArticleID=2147) seems like a possible way to resolve this. What do you think? - I've heard on one of the recent .Net Rocks shows that Bill suggested approaching this problem by actually creating some empty rows on the database first instead of creating them in memory, thus preventing an constraint conflicts. However, it was mentioned as an afterthought to the conversation and I'm not sure that's the most elegant solution here. - _\[Added later\]_ Here's [Bill's article on this issue](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadonet/html/manidcrisis.asp). I'll read it and see how it fits the problem. - _\[Added later\]_  Bill has many other cool and useful [articles on his website](http://www.betav.com/). I'll have a look see when I get some time this weekend. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 29, 2004 ### [Why is VS.Net Add-in architecture so overly complicated?](https://osherove.com/blog/2004/4/29/why-is-vsnet-add-in-architecture-so-overly-complicated.html) - Apr 29, 2004 ### [How to: Creating project groups under a single solution](https://osherove.com/blog/2004/4/29/how-to-creating-project-groups-under-a-single-solution.html) - Apr 25, 2004 ### [1st prize just got a whole lot bigger](https://osherove.com/blog/2004/4/25/1st-prize-just-got-a-whole-lot-bigger.html) - Apr 25, 2004 ### [Test Driven Development Workshop is a go!](https://osherove.com/blog/2004/4/25/test-driven-development-workshop-is-a-go.html) --- title: "Unblocking an attachment blocked by outlook" url: "https://osherove.com/blog/2004/4/29/unblocking-an-attachment-blocked-by-outlook.md" canonical: "https://osherove.com/blog/2004/4/29/unblocking-an-attachment-blocked-by-outlook.html" published: "2004-04-29T18:31:00" updated: "2004-04-29T18:31:00" tags: ["Off Topic", "Tips & Tricks"] author: "Roy Osherove" description: "[Update: Jose pointed me to the outlook Add-In I was talking about. Thanks!] So what do you do whaen you recieve a file attachement that oulook so cleverly blocked? Simply click “forward” on the mesage and the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unblocking an attachment blocked by outlook By Roy Osherove April 29, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published April 29, 2004; technical details may be outdated. _\[Update: Jose pointed me to the outlook [Add-In I was talking](http://www.slovaktech.com/attachmentoptions.htm) about. Thanks!\]_ So what do you do whaen you recieve a file attachement that oulook so cleverly blocked? Simply click “forward” on the mesage and the attachement will still be there, only it will be unblocked and you can save it. Also, I remember some Outlook security add-in making the rounds some time ago that let you disable “security features” in outlook, file types locking among them. dang if I can find it now though.. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 29, 2004 ### [A new low in television reached](https://osherove.com/blog/2004/4/29/a-new-low-in-television-reached.html) - Apr 29, 2004 ### [Tech-Ed Israel Blogger/Nerd Dinner anyone?](https://osherove.com/blog/2004/4/29/tech-ed-israel-bloggernerd-dinner-anyone.html) - Apr 26, 2004 ### [Less is more, but more is more](https://osherove.com/blog/2004/4/26/less-is-more-but-more-is-more.html) - Apr 26, 2004 ### [Smalltalk glasses](https://osherove.com/blog/2004/4/26/smalltalk-glasses.html) --- title: "Personal reminder" url: "https://osherove.com/blog/2004/4/29/personal-reminder.md" canonical: "https://osherove.com/blog/2004/4/29/personal-reminder.html" published: "2004-04-29T14:27:00" updated: "2004-04-29T14:27:00" tags: [] author: "Roy Osherove" description: "This is a reminder for me: What's missing in VS.Net pluggability? Enterprise Templates MSMQ Memory leak" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Personal reminder By Roy Osherove April 29, 2004 **Historical article** · Originally published April 29, 2004; technical details may be outdated. This is a reminder for me: - What's missing in VS.Net pluggability? - Enterprise Templates - MSMQ Memory leak --- title: "[Cool Tool] NotePad2" url: "https://osherove.com/blog/2004/4/28/cool-tool-notepad2.md" canonical: "https://osherove.com/blog/2004/4/28/cool-tool-notepad2.html" published: "2004-04-28T11:12:00" updated: "2004-04-28T11:12:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "[Update: Steve Eichert shows how to make notepad2 replace good ol' Notepad without windows file protection interfering in the process. Thanks!] Just found out this cool little util through the win-tech-off-topic list:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool Tool\] NotePad2 By Roy Osherove April 28, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published April 28, 2004; technical details may be outdated. _\[Update:_ [_Steve Eichert shows_](http://dotnetjunkies.com/WebLog/seichert/archive/2004/04/30/12462.aspx) _how to make notepad2 replace good ol' Notepad without windows file protection interfering in the process. Thanks!\]_ Just found out this cool little util through the win-tech-off-topic list: [NotePad2](http://www.flos-freeware.ch/notepad2.html) \- freeware notepad replacement with some extra features: **Features** • Customizable syntax highlighting: • • HTML, XML, CSS, JavaScript, VBScript, ASP, PHP, CSS, Perl/CGI • • C/C++, C#, Java, VB, Pascal, Assembler, SQL, Python, NSIS • • INI, REG, INF, BAT, DIFF • Drag & drop text editing inside and outside Notepad2 • Basic regular expression search and replace • Useful word, line and block editing shortcuts • Rectangular selection (Alt+Mouse) • Brace matching, auto indent, long line marker, zoom functions • Support for Unicode, UTF-8, Unix and Mac text files • Open shell links • Mostly adjustable ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 8, 2004 ### [Numega DevPartner Profiler - free community edition](https://osherove.com/blog/2004/5/8/numega-devpartner-profiler-free-community-edition.html) - May 1, 2004 ### [New version for NUnit Add-in](https://osherove.com/blog/2004/5/1/new-version-for-nunit-add-in.html) - Apr 22, 2004 ### [Blogsphere viral marketing](https://osherove.com/blog/2004/4/22/blogsphere-viral-marketing.html) - Apr 20, 2004 ### [\[Tool\] WMI Strongly Typed Class Generator](https://osherove.com/blog/2004/4/20/tool-wmi-strongly-typed-class-generator.html) --- title: "Less is more, but more is more" url: "https://osherove.com/blog/2004/4/26/less-is-more-but-more-is-more.md" canonical: "https://osherove.com/blog/2004/4/26/less-is-more-but-more-is-more.html" published: "2004-04-26T15:44:00" updated: "2004-04-26T15:44:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Here's a cool sentence I heard on “Frasier”, which, ironically, applies to the software industry as well: “If less is more, just think mow much more “more” will be”" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Less is more, but more is more By Roy Osherove April 26, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 26, 2004; technical details may be outdated. Here's a cool sentence I heard on “Frasier”, which, ironically, applies to the software industry as well: _“If less is more, just think mow much more “more” will be”_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 29, 2004 ### [Tech-Ed Israel Blogger/Nerd Dinner anyone?](https://osherove.com/blog/2004/4/29/tech-ed-israel-bloggernerd-dinner-anyone.html) - Apr 29, 2004 ### [Unblocking an attachment blocked by outlook](https://osherove.com/blog/2004/4/29/unblocking-an-attachment-blocked-by-outlook.html) - Apr 26, 2004 ### [Smalltalk glasses](https://osherove.com/blog/2004/4/26/smalltalk-glasses.html) - Apr 26, 2004 ### [My big, fat, photoblog cat](https://osherove.com/blog/2004/4/26/my-big-fat-photoblog-cat.html) --- title: "Smalltalk glasses" url: "https://osherove.com/blog/2004/4/26/smalltalk-glasses.md" canonical: "https://osherove.com/blog/2004/4/26/smalltalk-glasses.html" published: "2004-04-26T15:26:00" updated: "2004-04-26T15:26:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I read James Robertson's SmallTalk blog . I don't know why really (except that he has sometimes funny and interesting off topic posts). I don't write in SmallTalk (although I've tried it acouple of times). Maybe it's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Smalltalk glasses By Roy Osherove April 26, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 26, 2004; technical details may be outdated. I read [James Robertson's SmallTalk blog](http://www.cincomsmalltalk.com/blog/blogView). I don't know why really (except that he has sometimes funny and interesting off topic posts). I don't write in SmallTalk (although I've tried it  acouple of times). Maybe it's for the same reason I sometimes put my radio on some Hasidic channel (equivelant to hardcore christian talk radio) - it's interesting to learn about toally different cultures and habits than my own. Fascinating. So Reading about SmallTalk gives me a perspective outside the Microsoft angle, and that helps look at things sometimes in a more balanced way. There are also a couple of Linux and Java Blogs I used to follow but not anymore. I think at some point I had to reinstall or reformat some stuff in my OS and the feed data got lost. Anyway - same thing there. James has written a blog reader in SmallTalk - “[BottomFeeder](http://c2.com/cgi/wiki?BottomFeeder)”. And it supports plugins. I wonder how plugins are supported in SmallTalk. What's the SmallTalk equivelant of Reflection, for example? of a DLL? dynamic loading? Like I said - a totally different world and culture. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 29, 2004 ### [Unblocking an attachment blocked by outlook](https://osherove.com/blog/2004/4/29/unblocking-an-attachment-blocked-by-outlook.html) - Apr 26, 2004 ### [Less is more, but more is more](https://osherove.com/blog/2004/4/26/less-is-more-but-more-is-more.html) - Apr 26, 2004 ### [My big, fat, photoblog cat](https://osherove.com/blog/2004/4/26/my-big-fat-photoblog-cat.html) - Apr 23, 2004 ### [What Add-ins would you like to see in the contest?](https://osherove.com/blog/2004/4/23/what-add-ins-would-you-like-to-see-in-the-contest.html) --- title: "Superstar!" url: "https://osherove.com/blog/2004/4/26/superstar.md" canonical: "https://osherove.com/blog/2004/4/26/superstar.html" published: "2004-04-26T15:14:00" updated: "2004-04-26T15:14:00" tags: [] author: "Roy Osherove" description: "Julia Lerman is a Rock Star . You go girl! :) (via Mike )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Superstar! By Roy Osherove April 26, 2004 **Historical article** · Originally published April 26, 2004; technical details may be outdated. - [Julia Lerman is a Rock Star](http://www.devsource.ziffdavis.com/article2/0,1759,1572715,00.asp). You go girl! :) (via [Mike](http://www.larkware.com/Articles/TheDailyGrind357.html)) --- title: "My big, fat, photoblog cat" url: "https://osherove.com/blog/2004/4/26/my-big-fat-photoblog-cat.md" canonical: "https://osherove.com/blog/2004/4/26/my-big-fat-photoblog-cat.html" published: "2004-04-26T11:43:00" updated: "2004-04-26T11:43:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Got bored. Started a photoblog . Here's my big fat Israeli cat. Oh, yeah. This post is a little off topic." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My big, fat, photoblog cat By Roy Osherove April 26, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 26, 2004; technical details may be outdated. Got bored. Started a [photoblog](http://royo.textamerica.com/). Here's my big fat Israeli cat. Oh, yeah. This post is a little off topic. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 26, 2004 ### [Less is more, but more is more](https://osherove.com/blog/2004/4/26/less-is-more-but-more-is-more.html) - Apr 26, 2004 ### [Smalltalk glasses](https://osherove.com/blog/2004/4/26/smalltalk-glasses.html) - Apr 23, 2004 ### [What Add-ins would you like to see in the contest?](https://osherove.com/blog/2004/4/23/what-add-ins-would-you-like-to-see-in-the-contest.html) - Apr 21, 2004 ### [Taiwan is closer than I thought](https://osherove.com/blog/2004/4/21/taiwan-is-closer-than-i-thought.html) --- title: "1st prize just got a whole lot bigger" url: "https://osherove.com/blog/2004/4/25/1st-prize-just-got-a-whole-lot-bigger.md" canonical: "https://osherove.com/blog/2004/4/25/1st-prize-just-got-a-whole-lot-bigger.html" published: "2004-04-25T20:48:00" updated: "2004-04-25T20:48:00" tags: [".Net Original", "Addin Contest"] author: "Roy Osherove" description: "Just got the word- Essential Suite by SyncFusion has been added to 1st prize at the Add-in competition . That's the same suite of tools I use in The Regulator , along with the cool text editor that supports Syntax…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 1st prize just got a whole lot bigger By Roy Osherove April 25, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Addin Contest](https://osherove.com/blog/category/addin-contest) **Historical article** · Originally published April 25, 2004; technical details may be outdated. Just got the word- [Essential Suite](http://www.syncfusion.com/products/suite.aspx) by [SyncFusion](http://www.syncfusion.com/) has been added to [1st prize at the Add-in competition](http://weblogs.asp.net/rosherove/archive/2004/04/21/117663.aspx). That's the same suite of tools I use in [The Regulator](http://regulator.sourceforge.net/), along with the cool text editor that supports Syntax highlighting and Intellisense. Coolness factor raised again. First prize alone now stands at over 2,200$ **yikes**! If I were you I'd be thinking really hard what add-in I should be building for this contest. **Really hard**. PS You can register for the [contest RSS feed](http://weblogs.asp.net/rosherove/category/4911.aspx/rss). I'll be sending updates and cool entries descriptions along the contest timeline. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 29, 2004 ### [How to: Creating project groups under a single solution](https://osherove.com/blog/2004/4/29/how-to-creating-project-groups-under-a-single-solution.html) - Apr 29, 2004 ### [Bill Vaughn blogs, and I ask an ADO.Net question](https://osherove.com/blog/2004/4/29/bill-vaughn-blogs-and-i-ask-an-adonet-question.html) - Apr 25, 2004 ### [Test Driven Development Workshop is a go!](https://osherove.com/blog/2004/4/25/test-driven-development-workshop-is-a-go.html) - Apr 23, 2004 ### [Hands on Test Driven Development - class resources needed](https://osherove.com/blog/2004/4/23/hands-on-test-driven-development-class-resources-needed.html) --- title: "Test Driven Development Workshop is a go!" url: "https://osherove.com/blog/2004/4/25/test-driven-development-workshop-is-a-go.md" canonical: "https://osherove.com/blog/2004/4/25/test-driven-development-workshop-is-a-go.html" published: "2004-04-25T08:23:00" updated: "2004-04-25T08:23:00" tags: [".Net Original", "Agile Related"] author: "Roy Osherove" description: "[Note; Applies to Israeli developers only] Great news! I just got the go ahead from my boss here at Magen, Reuven, to use Magen’s facilities for hosting the first “ Hands on Test Driven Development Workshop” (see link…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven Development Workshop is a go! By Roy Osherove April 25, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published April 25, 2004; technical details may be outdated. _\[Note; Applies to Israeli developers only\]_ Great news! I just got the go ahead from my boss here at Magen, Reuven, to use Magen’s facilities for hosting the first “[Hands on Test Driven Development Workshop”](http://weblogs.asp.net/rosherove/archive/2004/04/24/119273.aspx) (see link for the background information on this effort). Here’s the game plan: **When**: Wednesday the 19th 19.5.04 **Length**: Around 3 hours, starting at 18:00 **Where: [Magen offices](http://www.magen.com/)** **What:** - Introduction to agile methodologies - Intro to NUnit and unit testing concepts - Hands on: create simple applications with TDD - Hands on: create a little more complex apps using TDD - DB testing concepts - (You will be working in pairs) Any more suggestions? **What you need to know**: C# or VB.Net.  **At least 1 year** experience developing actual real applications, or you will be in over your head. Seriously. **How to register:** We only have space enough for 10 people (2 on each machine). If you want in, email me to **\[email removed\]** with the subject “TDD registration”. **First 10 people** to email will be enrolled in the first workshop. Depending on the number of people who want in, we will consider doing more workshops. If you want to train on your own personal laptop email me as well and we’ll see if we can add you in besides the first 10 (It’s also a question of how much space we have). **Price**: Completely free. Maybe even a pizza somewhere in the middle. OK. Let’s see how this goes. We’ll never know if we don’t give it a try. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 29, 2004 ### [Bill Vaughn blogs, and I ask an ADO.Net question](https://osherove.com/blog/2004/4/29/bill-vaughn-blogs-and-i-ask-an-adonet-question.html) - Apr 25, 2004 ### [1st prize just got a whole lot bigger](https://osherove.com/blog/2004/4/25/1st-prize-just-got-a-whole-lot-bigger.html) - Apr 23, 2004 ### [Hands on Test Driven Development - class resources needed](https://osherove.com/blog/2004/4/23/hands-on-test-driven-development-class-resources-needed.html) - Apr 22, 2004 ### [VB.Net is diverging from C#. That can't be bad, or can it?](https://osherove.com/blog/2004/4/22/vbnet-is-diverging-from-c-that-cant-be-bad-or-can-it.html) --- title: "Good article about ReaderWriterLock and Multi Threading" url: "https://osherove.com/blog/2004/4/24/good-article-about-readerwriterlock-and-multi-threading.md" canonical: "https://osherove.com/blog/2004/4/24/good-article-about-readerwriterlock-and-multi-threading.html" published: "2004-04-24T13:41:00" updated: "2004-04-24T13:41:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "MultiThreading in .Net is an important issue. Sebastien writes a good article about multithreading using C# examples, mainly talking about the benefits of the ReaderWriterLock object and using the “ Dispose ” pattern.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good article about ReaderWriterLock and Multi Threading By Roy Osherove April 24, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published April 24, 2004; technical details may be outdated. MultiThreading in .Net is an important issue. [Sebastien writes a good article about multithreading](http://blog.thetechnologist.net/Trackback,guid,a1dd3efd-8715-4653-a16a-10c125046174.aspx) using C# examples, mainly talking about the benefits of the **ReaderWriterLock** object and using the “**Dispose**” pattern. Some stuff I didn't know in there (but that's nothing new - I seems as though anywhere I look there's a bit of knowledge that I had no idea about. The blogsphere is an amazing fountain of knowledge.) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 30, 2004 ### [Beware of Vs.Net plugins and wizards bearing gifts](https://osherove.com/blog/2004/4/30/beware-of-vsnet-plugins-and-wizards-bearing-gifts.html) - Apr 29, 2004 ### [Problem and Solution: Weird MSMQ memory leak when calling Peek()](https://osherove.com/blog/2004/4/29/problem-and-solution-weird-msmq-memory-leak-when-calling-pee.html) - Apr 22, 2004 ### [Some cool stuff coming in ADO.NET 2.0](https://osherove.com/blog/2004/4/22/some-cool-stuff-coming-in-adonet-20.html) - Apr 20, 2004 ### [\[Tool\] WMI Strongly Typed Class Generator](https://osherove.com/blog/2004/4/20/tool-wmi-strongly-typed-class-generator.html) --- title: "Hands on Test Driven Development - class resources needed" url: "https://osherove.com/blog/2004/4/23/hands-on-test-driven-development-class-resources-needed.md" canonical: "https://osherove.com/blog/2004/4/23/hands-on-test-driven-development-class-resources-needed.html" published: "2004-04-23T21:01:00" updated: "2004-04-23T21:01:00" tags: [".Net Original"] author: "Roy Osherove" description: "[Note: this post applies to Israeli blog readers] One of the talks that I *really* want to do at one of the user groups is “Hands on Test Driven Development Explained” (like this one ) . The thing about TDD is that the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hands on Test Driven Development - class resources needed By Roy Osherove April 23, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 23, 2004; technical details may be outdated. _\[Note: this post applies to Israeli blog readers\]_ One of the talks that I \*really\* want to do at one of the user groups is “Hands on Test Driven Development Explained” _(like_ [_this one_](http://dotnetjunkies.com/WebLog/darrell.norton/archive/2004/04/23/12007.aspx)_)_. The thing about TDD is that the **only** way I've found people to start “getting” it, is by actually **doing** it. “doing” is a strong word. “Experiencing the mind switch” is a better description of the process that takes place. There really is no other way to teach TDD except by a hands-on walk through with the instructor. **The main problem** with this is that none of the user group facilities that I've seen or know about (Microsoft's place or HP's building in Raanana) have a computer class with computers for the “students” as well, like in a real computer school(like Sivan or John Bryce). So here's the deal - if you are from **Israel** and know someone who would like to “donate” a class room off hours along with full computer instruction equipement for about 3-4 hours please contact me through my blog contact link or email me at [my contact form](https://osherove.com/contact) and we can work out the details. I'm also wondering - assuming we can actually get such a classroom - would you attend? I'd like to hear reasons if not. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 25, 2004 ### [1st prize just got a whole lot bigger](https://osherove.com/blog/2004/4/25/1st-prize-just-got-a-whole-lot-bigger.html) - Apr 25, 2004 ### [Test Driven Development Workshop is a go!](https://osherove.com/blog/2004/4/25/test-driven-development-workshop-is-a-go.html) - Apr 22, 2004 ### [VB.Net is diverging from C#. That can't be bad, or can it?](https://osherove.com/blog/2004/4/22/vbnet-is-diverging-from-c-that-cant-be-bad-or-can-it.html) - Apr 21, 2004 ### [\[Coding Contest\] Most Useful/Innovative VS.Net Add-in/Macro (and some huge prizes)](https://osherove.com/blog/2004/4/21/coding-contest-most-usefulinnovative-vsnet-add-inmacro-and-s.html) --- title: "What Add-ins would you like to see in the contest?" url: "https://osherove.com/blog/2004/4/23/what-add-ins-would-you-like-to-see-in-the-contest.md" canonical: "https://osherove.com/blog/2004/4/23/what-add-ins-would-you-like-to-see-in-the-contest.html" published: "2004-04-23T19:33:00" updated: "2004-04-23T19:33:00" tags: ["Addin Contest", "Off Topic"] author: "Roy Osherove" description: "The Add-In contest is really picking up steam . The prizes rock, and hopefully we'll all be getting some cool entries that we can all benefit from. However, I got a good suggestion from Eric Brunsen: “How about adding a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What Add-ins would you like to see in the contest? By Roy Osherove April 23, 2004 In [Addin Contest](https://osherove.com/blog/category/addin-contest), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 23, 2004; technical details may be outdated. [The Add-In contest is really picking up steam](http://weblogs.asp.net/rosherove/archive/2004/04/21/117663.aspx). The prizes rock, and hopefully we'll all be getting some cool entries that we can all benefit from. However, I got a good suggestion from Eric Brunsen: _“How about adding a little "flavor" to your contest. have a place/way for people to post ideas of add-ins they would like, and then post them somewhere.  This way, developers who want to play, but can't think of a good add-in would have some samples to choose from.“_ Good idea! So, in this spirit - if you have an idea for an add-in you wish to see submitted to the contest - **post a comment here**. I'll also link to it from the main contest page. Who knows, you just may get what you wish for! Happy thinking!  PS You don't have to come up with only “useful“ add-ins. “cool“ and “totally weird“ can also be considered. As an example, her'es an idea for a wacky Add-in I'd like to see in VS.Net: _Add-in suggestion:_ **Name**_: ”_Coding pe_t_” **Description**: A virtual dog,cat or monkey will roam inside VS.Net, screaming “yowza!“whenever you hit a breakpoint,  and doing a double back flip whenever a build has ended. It will also feature the occasional pink elephant flying across (and inside) the VS.Net form designer if it is open“ ## More in Addin Contest [All posts in Addin Contest](https://osherove.com/blog/category/addin-contest) - May 7, 2004 ### [Another book added to Add-in contest prizes](https://osherove.com/blog/2004/5/7/another-book-added-to-add-in-contest-prizes.html) - Apr 25, 2004 ### [1st prize just got a whole lot bigger](https://osherove.com/blog/2004/4/25/1st-prize-just-got-a-whole-lot-bigger.html) - Apr 21, 2004 ### [\[Coding Contest\] Most Useful/Innovative VS.Net Add-in/Macro (and some huge prizes)](https://osherove.com/blog/2004/4/21/coding-contest-most-usefulinnovative-vsnet-add-inmacro-and-s.html) --- title: "Blogsphere viral marketing" url: "https://osherove.com/blog/2004/4/22/blogsphere-viral-marketing.md" canonical: "https://osherove.com/blog/2004/4/22/blogsphere-viral-marketing.html" published: "2004-04-22T20:46:00" updated: "2004-04-22T20:46:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Gavin knows how to do viral marketing well . I'm writing this, arn't I? :) [Update] Here's another great viral marketer: “Anyway, John offers an interesting deal on his website. He writes: Imagine you are applying for a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blogsphere viral marketing By Roy Osherove April 22, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published April 22, 2004; technical details may be outdated. [Gavin knows how to do viral marketing well](http://weblogs.asp.net/gavinjoyce/archive/2004/04/21/117477.aspx). I'm writing this, arn't I? :) **_\[Update\]_** Here's another great viral marketer: “Anyway, John offers an [interesting deal](http://www.jkador.com/brainteaser/answer.htm) on his website. He writes: _Imagine you are applying for a job and the interviewer asks you this question. How would you handle it? Send me your most creative answer to [\[email removed\]](http://blogs.msdn.com/jobsblog/admin/[email removed]) and I’ll use your answer with credit to you in the book. I will also send you a signed copy. This is not a trick question. Any prisoner in the country can try it._ **_You are a prisoner in solitary confinement serving a life sentence. It is Friday afternoon and you absolutely must have a cigarette. The only person who can give you one is the guard outside your cell. What do you do to get a cigarette? “_** (via [Gretchen](http://blogs.msdn.com/JobsBlog/archive/2004/04/22/118541.aspx)) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 1, 2004 ### [New version for NUnit Add-in](https://osherove.com/blog/2004/5/1/new-version-for-nunit-add-in.html) - Apr 28, 2004 ### [\[Cool Tool\] NotePad2](https://osherove.com/blog/2004/4/28/cool-tool-notepad2.html) - Apr 20, 2004 ### [\[Tool\] WMI Strongly Typed Class Generator](https://osherove.com/blog/2004/4/20/tool-wmi-strongly-typed-class-generator.html) - Apr 15, 2004 ### [New version of Data Access Application Block available](https://osherove.com/blog/2004/4/15/new-version-of-data-access-application-block-available.html) --- title: "VB.Net is diverging from C#. That can't be bad, or can it?" url: "https://osherove.com/blog/2004/4/22/vbnet-is-diverging-from-c-that-cant-be-bad-or-can-it.md" canonical: "https://osherove.com/blog/2004/4/22/vbnet-is-diverging-from-c-that-cant-be-bad-or-can-it.html" published: "2004-04-22T20:39:00" updated: "2004-04-22T20:39:00" tags: [".Net Original"] author: "Roy Osherove" description: "It's interesting to see how VB.NET is slowly but surely diverging itself into a whole different language and toolset. The most notable of these changes to me right now is the “ My” language addition , available in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VB.Net is diverging from C\#. That can't be bad, or can it? By Roy Osherove April 22, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 22, 2004; technical details may be outdated. It's interesting to see how VB.NET is slowly but surely diverging itself into a whole different language and toolset. The most notable of these changes to me right now is the “[My” language addition](http://msdn.microsoft.com/msdnmag/issues/04/05/VisualBasic2005/default.aspx), available in VB.Net only in the next version of VS.Net (2005). This feature is pretty frigging' cool. It basically is an “alternate” object model, a simpler object model with shortcuts to lots of frequently used .Net functionality, which also simplifies lots of the calling conventions for many activities such as read/write files, printing, reading comm ports and so on. This is indeed a good feature, and is a welcome addition to vb.net. But it has a not so good side. It means VB.Net programmers will be learning and using a simpler, but most importantly \*different\* object model for many tasks, than the one used by C# developers. That would lead to difficulties in migrating between these two languages and developing/maintenance of shared code bases with these two languages intertwined. Basically, a vb.net dev who wishes to write in C# would have to “re-learn” the same “different” object model used by C#. This effectively overturns lots of the statements going on right now that say “if you can develop in \*this\*, you can develop in \*that\*“. No. The learning curve just grew when switching sides. At least it only grew when switching from one of those sides to the other. A C# dev can still use the same programming object model they are used to in VB.Net, barring small syntax changes. A VB.Net dev who only used to work with “My” will have quite a learning curve to go through. So how do you solve this? I'd say go ahead and add the “My” feature to C# as well. I don't see any other way around it. Well, there is another way though quite impractical - when you teach VB.Net - teach it using the C# object model, not the simplified one (assuming you want the devs you teach to be able to work in both languages in the future) More stuff this could cause: the return of the VB coder myth (a.k.a “Mort”). Maybe it can even convince vb coders to leave C# alone afraid of the learning curve. In conclusion, I'm not trying to diss this feature. In fact, I think it is so important, it should be in both languages, or it will make \*too much\*  of a difference and create an invisible, yet remarkably familiar "wall" between the two old camps. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 25, 2004 ### [Test Driven Development Workshop is a go!](https://osherove.com/blog/2004/4/25/test-driven-development-workshop-is-a-go.html) - Apr 23, 2004 ### [Hands on Test Driven Development - class resources needed](https://osherove.com/blog/2004/4/23/hands-on-test-driven-development-class-resources-needed.html) - Apr 21, 2004 ### [\[Coding Contest\] Most Useful/Innovative VS.Net Add-in/Macro (and some huge prizes)](https://osherove.com/blog/2004/4/21/coding-contest-most-usefulinnovative-vsnet-add-inmacro-and-s.html) - Apr 21, 2004 ### [Ack! My DataTable magically grew a new data column. Here's why.](https://osherove.com/blog/2004/4/21/ack-my-datatable-magically-grew-a-new-data-column-heres-why.html) --- title: "Some cool stuff coming in ADO.NET 2.0" url: "https://osherove.com/blog/2004/4/22/some-cool-stuff-coming-in-adonet-20.md" canonical: "https://osherove.com/blog/2004/4/22/some-cool-stuff-coming-in-adonet-20.html" published: "2004-04-22T19:59:00" updated: "2004-04-22T19:59:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Very nice MSDN TV show on some of the new features in ADO.NET 2.0. Some really cool stuff in there. (link via Christa )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some cool stuff coming in ADO.NET 2.0 By Roy Osherove April 22, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 22, 2004; technical details may be outdated. Very nice MSDN TV show on some of the new features in ADO.NET 2.0.  Some really cool stuff in there. (link via [Christa](http://sqljunkies.com/WebLog/christac/archive/2004/04/22/2162.aspx)) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 29, 2004 ### [Problem and Solution: Weird MSMQ memory leak when calling Peek()](https://osherove.com/blog/2004/4/29/problem-and-solution-weird-msmq-memory-leak-when-calling-pee.html) - Apr 24, 2004 ### [Good article about ReaderWriterLock and Multi Threading](https://osherove.com/blog/2004/4/24/good-article-about-readerwriterlock-and-multi-threading.html) - Apr 20, 2004 ### [\[Tool\] WMI Strongly Typed Class Generator](https://osherove.com/blog/2004/4/20/tool-wmi-strongly-typed-class-generator.html) - Apr 15, 2004 ### [New version of Data Access Application Block available](https://osherove.com/blog/2004/4/15/new-version-of-data-access-application-block-available.html) --- title: "Taiwan is closer than I thought" url: "https://osherove.com/blog/2004/4/21/taiwan-is-closer-than-i-thought.md" canonical: "https://osherove.com/blog/2004/4/21/taiwan-is-closer-than-i-thought.html" published: "2004-04-21T19:19:00" updated: "2004-04-21T19:19:00" tags: ["Off Topic"] author: "Roy Osherove" description: "The past week has be *tough*. We found on on Sunday that my wife needs to leave for Taipei,Taiwan on Monday . That's right, the day after that. So, we were all busy and anxious to get all packing. Her job is sending her…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Taiwan is closer than I thought By Roy Osherove April 21, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 21, 2004; technical details may be outdated. The past week has be \*tough\*. We found on on Sunday that my wife needs to leave for Taipei,Taiwan on **Monday**. That's right, the day **after** that. So, we were all busy and anxious to get all packing. Her job is sending her off there for some client stuff. Should be back within two weeks That leaves me to take care of signing all the mortgage papers we were going to do together, and all the other nitty gritty stuff that she seems to do so much more easily that me. **I miss you honey**, and love you. Come back soon _(but not too soon. I'm liking this “stay up 'ill late clicking on the keyboard” thing without bothering/waking anyone up...)_ Heh. Before she went away I secretly took are brand new digital camera _(that, most importantly, can shoot small videos too)_ and took 2 short videos into the flash memory. One of them was our Cat, Zion, in his best sleeping position, looking at the camera with contempt, as if saying “_who the hell are you_” with a french accent (no offense). The other one was me miming out “I love you and miss you and hug you and shed tears for your leaving” _(“Shed tears” is a classic mime thing. You reach with your hand into your eye and make beliefe tear drops are falling into your other hand. Yah, I'm artistic like that)_. So now she'll never forget what her two favorite slobs look like. _Darling, we will always have Zion_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 26, 2004 ### [My big, fat, photoblog cat](https://osherove.com/blog/2004/4/26/my-big-fat-photoblog-cat.html) - Apr 23, 2004 ### [What Add-ins would you like to see in the contest?](https://osherove.com/blog/2004/4/23/what-add-ins-would-you-like-to-see-in-the-contest.html) - Apr 21, 2004 ### [Simple and addicting game](https://osherove.com/blog/2004/4/21/simple-and-addicting-game.html) - Apr 21, 2004 ### [SMSpam](https://osherove.com/blog/2004/4/21/smspam.html) --- title: "Simple and addicting game" url: "https://osherove.com/blog/2004/4/21/simple-and-addicting-game.md" canonical: "https://osherove.com/blog/2004/4/21/simple-and-addicting-game.html" published: "2004-04-21T18:23:00" updated: "2004-04-21T18:23:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This game is simple and really addicting: Can you seperate the blue from the red?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Simple and addicting game By Roy Osherove April 21, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 21, 2004; technical details may be outdated. This game is simple and really addicting: [Can you seperate the blue from the red?](http://www.stormwerks.com/linked/stuf/balls.swf) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 23, 2004 ### [What Add-ins would you like to see in the contest?](https://osherove.com/blog/2004/4/23/what-add-ins-would-you-like-to-see-in-the-contest.html) - Apr 21, 2004 ### [Taiwan is closer than I thought](https://osherove.com/blog/2004/4/21/taiwan-is-closer-than-i-thought.html) - Apr 21, 2004 ### [SMSpam](https://osherove.com/blog/2004/4/21/smspam.html) - Apr 15, 2004 ### [The art of folding](https://osherove.com/blog/2004/4/15/the-art-of-folding.html) --- title: "SMSpam" url: "https://osherove.com/blog/2004/4/21/smspam.md" canonical: "https://osherove.com/blog/2004/4/21/smspam.html" published: "2004-04-21T16:41:00" updated: "2004-04-21T16:41:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It is final. SMS is far more annoying than regular email spam. How so? Here's a little story. A couple of months ago my wife and me went to a disco club (if you're from israel, it was the TLV - be warned!). All was fine…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SMSpam By Roy Osherove April 21, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 21, 2004; technical details may be outdated. It is final. SMS is **far** more annoying than regular email spam. How so? Here's a little story. A couple of months ago my wife and me went to a disco club (if you're from israel, it was the TLV - be warned!). All was fine and dandy and we had a lot of fun. The week after that, on thursday evening, my cell phone starts beeping like crazy. I was never much into beeping, even my machine is on mute most of the time, so this was pretty annoying. It seems that someone decided to send me an SMS message to my cell phone. Now, here's the really annoying part about getting an SMS on my phone(samsung). This particular model **will beep every minute until you actually read the message**. No way around that. I s\*it you not. So, after picking up the phone, unlocking it by - pressing “#” for 3 seconds (sigh), - going to menu, “read messages”(sigh) - and waiting a second for the message list to load (sigh), - clicking on the “new” sign and waiting another second (sigh) I finally got to read the important text that my phone wanted so much to tell me about - it was an SMS message from the TLV, telling me I should really attend their party the next day, because DJ so and so will be there. Needless to say I was pissed. How the hell did they get my number? Then I remembered that on that evening we went dancing, we filled out a membership form with my details, including cell phone. ugh. What was I thinking?? I dimissed the message and returned to my day job, not before deleting it by - going to “messages”, - ”last Message”, - ”Delete”, - ”Confirm”, - ”Deleted” (sigh, another 5 seconds down the drain).  the next week I get another message from them, so I call them up and ask to be removed. Of course I wasn't, and the next week I got another SMS. not only that, I got **another different** SMS, from a **different** club, which appereantly is trading phone numbers (like any common spammer trades emails) with the TLV. aaarrrggg! **Conclusion** - SMS is the next spam medium. beware. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 21, 2004 ### [Taiwan is closer than I thought](https://osherove.com/blog/2004/4/21/taiwan-is-closer-than-i-thought.html) - Apr 21, 2004 ### [Simple and addicting game](https://osherove.com/blog/2004/4/21/simple-and-addicting-game.html) - Apr 15, 2004 ### [The art of folding](https://osherove.com/blog/2004/4/15/the-art-of-folding.html) - Apr 15, 2004 ### [Getting creative with the windows sound recorder](https://osherove.com/blog/2004/4/15/getting-creative-with-the-windows-sound-recorder.html) --- title: "[Coding Contest] Most Useful/Innovative VS.Net Add-in/Macro (and some huge prizes)" url: "https://osherove.com/blog/2004/4/21/coding-contest-most-usefulinnovative-vsnet-add-inmacro-and-s.md" canonical: "https://osherove.com/blog/2004/4/21/coding-contest-most-usefulinnovative-vsnet-add-inmacro-and-s.html" published: "2004-04-21T15:49:00" updated: "2004-04-21T15:49:00" tags: [".Net Original", "Addin Contest"] author: "Roy Osherove" description: "So here's the deal. We hold a contest. It will be called Most useful Add-in/macro for visual studio .Net You send me your submissions (including code) and according to who wins, we give out some prizes. The judges :…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Coding Contest\] Most Useful/Innovative VS.Net Add-in/Macro (and some huge prizes) By Roy Osherove April 21, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Addin Contest](https://osherove.com/blog/category/addin-contest) **Historical article** · Originally published April 21, 2004; technical details may be outdated. So here's the deal. **We hold a contest.** It will be called **Most useful Add-in/macro for visual studio .Net** You send me your submissions (including code) and according to who wins, we give out some prizes. **The judges**: [Mike Gunderloy](http://www.larkware.com/), [Frans Bouma](http://weblogs.asp.net/fbouma), [Rory Blyth](http://www.neopoleon.com/), and myself. [![](https://osherove.com/img/wb/d3d4203b_royo.is-a-geek.com_pics_contest.gif)](http://weblogs.asp.net/rosherove/archive/2004/04/21/117663.aspx) Register for the [contest RSS feed](http://weblogs.asp.net/rosherove/category/4911.aspx/rss) [Suggest an Add-in idea](http://weblogs.asp.net/rosherove/archive/2004/04/24/119223.aspx) **Submissions accepted only until the end of June** (June 30th) **Only new code please**! don't submit something that's already running out there in the wild. this whole contest is about _new stuff_ and not _re-packaged_ stuff, thank you. the 3 finalists will receive some cool prizes. Also, all submissions will be released to the public as free source for people to use and enjoy(with due credits). Code can be C# or VB.Net, your pick. Mail it over to **\[email removed\]** with all your details (including website links and such) **Only entries with code are accepted.** **1st prize:** - [Essential Suite](http://www.syncfusion.com/products/suite.aspx) by [SyncFusion](http://www.syncfusion.com/) (1,295$ !) - [C# Refactory](http://www.xtreme-simplicity.net/CSharpRefactory.html) by Xtreme Simplicity(99$) - [CodeSmart 2003](http://www.axtools.com/) pack by [](http://www.axtools.com/)[AXTools](https://osherove.com/blog/2004/4/21/www.axtools.com)  (299$) - [XTra Grid suite](http://www.devexpress.com/?section=/Products/NET/XtraGrid) by [DevExpress](http://www.devexpress.com/) (399$) - Book: [Coder To Developer](https://www.amazon.com/exec/obidos/ASIN/078214327X/Iserializable-20) by [Mike Gunderloy](http://www.larkware.com/)  (21$) - Book: [Inside Visual Studio.Net](https://www.amazon.com/exec/obidos/ASIN/0735618747/iserializable-20)  signed by One of the authors ([Craig Skibo](http://blogs.msdn.com/craigskibo))  (34$) - Book: [.NET Framework Standard Library Annotated Reference Vol 1](https://www.amazon.com/exec/obidos/ASIN/0321154894/iserializable-20) (44$) - Book: [Test-Driven Development in Microsoft .Net](https://www.amazon.com/exec/obidos/ASIN/0735619484/iserializable-20) (33$) - [XDN Pro Membership](http://www.xtras.net/XDN) by [Xtras.Net](http://www.xtras.net/) (99$) - A tour of MS Offices in Redmond (if you can get there by yourself) (priceless) - **Total Worth: 2,323$** **2nd prize:** - [CodeRush](http://www.devexpress.com/?section=/Products/NET/CodeRush) for VS.Net by [DevExpress](http://www.devexpress.com/) (249$) - [_LLBLGen Pro_](http://www.llblgen.com/)  - by [Solutions Design](http://www.sd.nl/)  (210$) - [XDN Pro Membership](http://www.xtras.net/XDN) by [Xtras.Net](http://www.xtras.net/) (99$) - Book: [Coder To Developer](https://www.amazon.com/exec/obidos/ASIN/078214327X/Iserializable-20) by [Mike Gunderloy](http://www.larkware.com/) (21$) - Book: [Inside Visual Studio.Net](https://www.amazon.com/exec/obidos/ASIN/0735618747/iserializable-20)  signed by One of the authors ([Craig Skibo](http://blogs.msdn.com/craigskibo)) (34$) - Book: [.NET Framework Standard Library Annotated Reference Vol 1](https://www.amazon.com/exec/obidos/ASIN/0321154894/iserializable-20) (44$) - Book: [Test-Driven Development in Microsoft .Net](https://www.amazon.com/exec/obidos/ASIN/0735619484/iserializable-20)(33$) - **Total Worth: 690$** **3rd prize:** - [XDN Pro Membership](http://www.xtras.net/XDN) by [Xtras.Net](http://www.xtras.net/) (99$) - Book: [Coder To Developer](https://www.amazon.com/exec/obidos/ASIN/078214327X/Iserializable-20) by [Mike Gunderloy](http://www.larkware.com/) (21$) - Book: [Inside Visual Studio.Net](https://www.amazon.com/exec/obidos/ASIN/0735618747/iserializable-20)  signed by One of the authors ([Craig Skibo](http://blogs.msdn.com/craigskibo)) (34$) - Book: [.NET Framework Standard Library Annotated Reference Vol 1](https://www.amazon.com/exec/obidos/ASIN/0321154894/iserializable-20)  (44$) - Book: [Test-Driven Development in Microsoft .Net](https://www.amazon.com/exec/obidos/ASIN/0735619484/iserializable-20)(33$) - Book:[Build Your own ASP.NET website](http://sitepoint.com/books/aspnet1/) (45$) - **Total Worth: 276$** **Bonus:** the most **crazy and innovative** add-in (not necessarily useful!) will get a special prize from me: - [CodeSmart 2003](http://www.axtools.com/) for VS.Net by [](http://www.axtools.com/)[AXTools](https://osherove.com/blog/2004/4/21/www.axtools.com) (189$) - [XDN Pro Membership](http://www.xtras.net/XDN) by [Xtras.Net](http://www.xtras.net/) (99$) - Book:[Build Your own ASP.NET website](http://sitepoint.com/books/aspnet1/) (45$) - **Total Worth: 333$** Hopefully these prizes will help motivate you a bit :) Some thoughts for possible add-ins:  Refactorings, color and font themes, chat.... get creative! Let's see what we can come up with, shall we? Now's your chance to shine! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 23, 2004 ### [Hands on Test Driven Development - class resources needed](https://osherove.com/blog/2004/4/23/hands-on-test-driven-development-class-resources-needed.html) - Apr 22, 2004 ### [VB.Net is diverging from C#. That can't be bad, or can it?](https://osherove.com/blog/2004/4/22/vbnet-is-diverging-from-c-that-cant-be-bad-or-can-it.html) - Apr 21, 2004 ### [Ack! My DataTable magically grew a new data column. Here's why.](https://osherove.com/blog/2004/4/21/ack-my-datatable-magically-grew-a-new-data-column-heres-why.html) - Apr 20, 2004 ### [The Regulator v. 2.01 - now with Intellisense](https://osherove.com/blog/2004/4/20/the-regulator-v-201-now-with-intellisense.html) --- title: "Ack! My DataTable magically grew a new data column. Here's why." url: "https://osherove.com/blog/2004/4/21/ack-my-datatable-magically-grew-a-new-data-column-heres-why.md" canonical: "https://osherove.com/blog/2004/4/21/ack-my-datatable-magically-grew-a-new-data-column-heres-why.html" published: "2004-04-21T10:34:00" updated: "2004-04-21T10:34:00" tags: [".Net Original"] author: "Roy Osherove" description: "Ugh. That was almost fun :) I was showing some of the guys how to do unit testing against a database, and we got stuck on a test that does an insert using a dataset. Imagine this: you use a simple data adapter against…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ack! My DataTable magically grew a new data column. Here's why. By Roy Osherove April 21, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 21, 2004; technical details may be outdated. Ugh. That was **almost** fun :) I was showing some of the guys how to do unit testing against a database, and we got stuck on a test that does an insert using a dataset. Imagine this: you use a simple data adapter against the “categories“ table in northwind, using a simple insert command with one parameter to be sent to an insertCategory stored procedure in the database. Couldn't be simpler, right? Yet a strange thing was happening: The data table that was being updated (there was only one of those in the DS, for Categories table) starts out before the update with 4 columns (for the 4 cols in the original categories table), but after calling data adapter.update(DS) , the table suddenly contains **5 columns(!).** I kid you not. We started trying to track this down, and after about 30 mins, we found what the problem was: The insert sproc was returning the identity value of the newly insert row like so: INSERT INTO categories.... bla Select scope\_identity() This was a problem for the data adapter which could not map back the returned value into the updated data row in question, so it automatically created a new data column inside the data table. Changing the syntax to this: INSERT INTO categories.... bla Select scope\_identity() **as CategoryID** fixed it up real nice. **beware**! Another interesting anecdote: this is one of those small annoying bugs that creep up on you. Because we were doing this whole exercise in a test-driven manner, we were able to discover it almost instantly (well, not the source, but the fact that there **was** a problem). Imagine having to wade through massive amounts of code in a production application, hunting this bug. ugh! How did we discover that the column counts were different? We were using a small testing utility class that was provided by the generous Mr. [Darrell Norton](http://dotnetjunkies.com/WebLog/darrell.norton), who's had lots of experience with TDD in the DB world. This small utility class compares two datasets in many ways, including all current values and row counts. Thanks [Darrell](http://dotnetjunkies.com/WebLog/darrell.norton)! Maybe you can post it? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 22, 2004 ### [VB.Net is diverging from C#. That can't be bad, or can it?](https://osherove.com/blog/2004/4/22/vbnet-is-diverging-from-c-that-cant-be-bad-or-can-it.html) - Apr 21, 2004 ### [\[Coding Contest\] Most Useful/Innovative VS.Net Add-in/Macro (and some huge prizes)](https://osherove.com/blog/2004/4/21/coding-contest-most-usefulinnovative-vsnet-add-inmacro-and-s.html) - Apr 20, 2004 ### [The Regulator v. 2.01 - now with Intellisense](https://osherove.com/blog/2004/4/20/the-regulator-v-201-now-with-intellisense.html) - Apr 15, 2004 ### [Misunderstanding timestamp](https://osherove.com/blog/2004/4/15/misunderstanding-timestamp.html) --- title: "Hardcore XML blog" url: "https://osherove.com/blog/2004/4/20/hardcore-xml-blog.md" canonical: "https://osherove.com/blog/2004/4/20/hardcore-xml-blog.html" published: "2004-04-20T18:41:00" updated: "2004-04-20T18:41:00" tags: ["Blogging"] author: "Roy Osherove" description: "I'll admit it now: when it comes to hardcore XML schemas,xsd's, DiffGrams and all that stuff - my eyes glaze over. Its something that I know I'll have to get into someday, but right now I'm mostly a bystander looking at…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hardcore XML blog By Roy Osherove April 20, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published April 20, 2004; technical details may be outdated. I'll admit it now: when it comes to hardcore XML schemas,xsd's, DiffGrams and all that stuff - my eyes glaze over. Its something that I **know** I'll have to get into someday, but right now I'm mostly a bystander looking at all the cool traffic go by. My mind is currently occupied with enough as it is. However, if I'll ever need to get into that stuff, I'll know what blog to start from: [Oleg's blog](http://www.tkachenko.com/blog/). Oleg is an XML MVP and there is some serious stuff floating on there. If you are into this, you should definitely subscribe. And no, I'm not writing this simply because he's another Israeli Blogger :) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Apr 29, 2004 ### [The blogsphere generosity wave - Viral Marketing](https://osherove.com/blog/2004/4/29/the-blogsphere-generosity-wave-viral-marketing.html) - Apr 29, 2004 ### [Early & Adopter relocated](https://osherove.com/blog/2004/4/29/early-amp-adopter-relocated.html) - Apr 14, 2004 ### [Nice blog](https://osherove.com/blog/2004/4/14/nice-blog.html) - Apr 13, 2004 ### [The day after](https://osherove.com/blog/2004/4/13/the-day-after.html) --- title: "[Tool] WMI Strongly Typed Class Generator" url: "https://osherove.com/blog/2004/4/20/tool-wmi-strongly-typed-class-generator.md" canonical: "https://osherove.com/blog/2004/4/20/tool-wmi-strongly-typed-class-generator.html" published: "2004-04-20T18:36:00" updated: "2004-04-20T18:36:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "WMI rocks, but it's common to be afraid of it. Yosi points to a very cool tool that will help overcome this fear and make working with WMI a little easier: Microsoft (R) Management Strongly Typed Class Generator -…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Tool\] WMI Strongly Typed Class Generator By Roy Osherove April 20, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published April 20, 2004; technical details may be outdated. WMI rocks, but it's common to be afraid of it. Yosi points to a very cool tool that will help overcome this fear and make working with WMI a little easier: [Microsoft (R) Management Strongly Typed Class Generator - MgmtClassGen.exe](http://blogs.msdn.com/yosit/archive/2004/04/19/116043.aspx) _Example :         MgmtclassGen Win32\_Logicaldisk /L VB /N root\\cimv2 /P c:\\temp\\logicaldisk.vb_ _You can find it under you sdk bin directory, so instead of figuring out the properties of the objects you get a strongly type object to work with._ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 24, 2004 ### [Good article about ReaderWriterLock and Multi Threading](https://osherove.com/blog/2004/4/24/good-article-about-readerwriterlock-and-multi-threading.html) - Apr 22, 2004 ### [Some cool stuff coming in ADO.NET 2.0](https://osherove.com/blog/2004/4/22/some-cool-stuff-coming-in-adonet-20.html) - Apr 15, 2004 ### [New version of Data Access Application Block available](https://osherove.com/blog/2004/4/15/new-version-of-data-access-application-block-available.html) - Apr 14, 2004 ### [Code Readability and double negation - not uninteresting!](https://osherove.com/blog/2004/4/14/code-readability-and-double-negation-not-uninteresting.html) --- title: "The Regulator v. 2.01 - now with Intellisense" url: "https://osherove.com/blog/2004/4/20/the-regulator-v-201-now-with-intellisense.md" canonical: "https://osherove.com/blog/2004/4/20/the-regulator-v-201-now-with-intellisense.html" published: "2004-04-20T17:48:00" updated: "2004-04-20T17:48:00" tags: [".Net Original"] author: "Roy Osherove" description: "In short - lots fixed, and cool stuff added! Go download version 2.0.1 beta -------------- -added: \"Document Changed\" dialog specifies the name of the document in question. -added: Intellisense in the Regex window. Can…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator v. 2.01 - now with Intellisense By Roy Osherove April 20, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 20, 2004; technical details may be outdated. In short - lots fixed, and cool stuff added! [Go download](http://www.sourceforge.net/projects/regulator) **version 2.0.1 beta** \-------------- \-added: "Document Changed" dialog specifies the name of the document in question. \-added: Intellisense in the Regex window.  Can be configured by changing the quick menu.config file. \-added: Intellisense in the "Replace with" window. automatically list available named groups when typing "$" in the replace with input window \-added: Regex Intellisense will auto-select regions user needs to fill out (behavior like in the snippets plugin)   \-fixed: Regex text would sometimes revert back to the last-saved text, causing data loss in the text \-fixed: multiple "Document Changed" dialogs appeared before closing a document or the application \-fixed: "Replace with" text and "Input  file" text were not loaded properly from saved projects \-fixed: "Support" link in "About" dialog now works **Here's a screen shot that shows my currently favorite new feature:** ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 21, 2004 ### [\[Coding Contest\] Most Useful/Innovative VS.Net Add-in/Macro (and some huge prizes)](https://osherove.com/blog/2004/4/21/coding-contest-most-usefulinnovative-vsnet-add-inmacro-and-s.html) - Apr 21, 2004 ### [Ack! My DataTable magically grew a new data column. Here's why.](https://osherove.com/blog/2004/4/21/ack-my-datatable-magically-grew-a-new-data-column-heres-why.html) - Apr 15, 2004 ### [Misunderstanding timestamp](https://osherove.com/blog/2004/4/15/misunderstanding-timestamp.html) - Apr 14, 2004 ### [Connection pools and a DAAB v. 3 mystery](https://osherove.com/blog/2004/4/14/connection-pools-and-a-daab-v-3-mystery.html) --- title: "Misunderstanding timestamp" url: "https://osherove.com/blog/2004/4/15/misunderstanding-timestamp.md" canonical: "https://osherove.com/blog/2004/4/15/misunderstanding-timestamp.html" published: "2004-04-15T14:21:00" updated: "2004-04-15T14:21:00" tags: [".Net Original"] author: "Roy Osherove" description: "timestamp columns in SQL server are misunderstood. I know they are because today I was definitely misunderstanding them, and I'm (according to Google) not the first. So what's to not understand? Well, here's the deal. I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Misunderstanding timestamp By Roy Osherove April 15, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 15, 2004; technical details may be outdated. timestamp columns in SQL server are misunderstood. I know they are because today I was definitely misunderstanding them, and I'm (according to Google) not the first. So what's to not understand? Well, here's the deal. I had an application that required me to log for each row in a specific table the exact time at which it was last updated/Inserted. “Great!” I thought, “Sounds like a task for the timestamp column!” . And so we tried. The funny thing about a timestamp column is that when we wanted to retrieve it from the database in the unit test, we had to Cast it into a datetime DB type, since it is Binary. That should have been my first clue, but I kept on. When we finally got the data back, the year of the date column was always set to 1900. Yep. More inserts, more 1900. Each row was different value in a way, waay back at the end of the number, but the date was absolutely not what I expected. So what was the problem? The problem was that we were using timestamp for something it wasn't made for. A timestamp is there simply for the purpose of keeping track on the “version” of one unique row in a database table. It is a totally binary number that changes, but it does **not** represent a datetime construct. The only thing promised is that whenever a row is inserted/updated, that the value in that column will stay unique across changes of the specific row. that's it. Since it was **not** a datetime construct, casting it into a datetime type resulted in how the datetime casting engine parsed this binary values, defaulting to 1900 because there really was no year specified in the converted value. So now that its established that we do **not** want to use a timestamp, how do I keep track of a row's “last updated” state? The hard way, that's how. I can either get the date as part of a stored procedure parameter and set it every update, or I can just set it on updates and inserts automatically inside the stored procedure using “GETDATE()” functionality in SQL. There's another way: doing a trigger on Update and Insert to set the column value to the current date, but triggers are something I try to avoid, so let's ignore that possibility. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 21, 2004 ### [Ack! My DataTable magically grew a new data column. Here's why.](https://osherove.com/blog/2004/4/21/ack-my-datatable-magically-grew-a-new-data-column-heres-why.html) - Apr 20, 2004 ### [The Regulator v. 2.01 - now with Intellisense](https://osherove.com/blog/2004/4/20/the-regulator-v-201-now-with-intellisense.html) - Apr 14, 2004 ### [Connection pools and a DAAB v. 3 mystery](https://osherove.com/blog/2004/4/14/connection-pools-and-a-daab-v-3-mystery.html) - Apr 11, 2004 ### [DotNet vs. Smalltalk](https://osherove.com/blog/2004/4/11/dotnet-vs-smalltalk.html) --- title: "The art of folding" url: "https://osherove.com/blog/2004/4/15/the-art-of-folding.md" canonical: "https://osherove.com/blog/2004/4/15/the-art-of-folding.html" published: "2004-04-15T13:52:00" updated: "2004-04-15T13:52:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Oh. and speaking of an amazing video, I really need to learn how to fold my shirts . Sounds boring, but just watch the video." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The art of folding By Roy Osherove April 15, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 15, 2004; technical details may be outdated. Oh. and speaking of an amazing video, [I really need to learn how to fold my shirts](http://www.geeklife.com/article.aspx?articleid=1368). Sounds boring, but just watch the video. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 21, 2004 ### [Simple and addicting game](https://osherove.com/blog/2004/4/21/simple-and-addicting-game.html) - Apr 21, 2004 ### [SMSpam](https://osherove.com/blog/2004/4/21/smspam.html) - Apr 15, 2004 ### [Getting creative with the windows sound recorder](https://osherove.com/blog/2004/4/15/getting-creative-with-the-windows-sound-recorder.html) - Apr 15, 2004 ### [Problems downloading The Regulator?](https://osherove.com/blog/2004/4/15/problems-downloading-the-regulator.html) --- title: "Getting creative with the windows sound recorder" url: "https://osherove.com/blog/2004/4/15/getting-creative-with-the-windows-sound-recorder.md" canonical: "https://osherove.com/blog/2004/4/15/getting-creative-with-the-windows-sound-recorder.html" published: "2004-04-15T13:29:00" updated: "2004-04-15T13:29:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is simply too cool. (turn your speakers on)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Getting creative with the windows sound recorder By Roy Osherove April 15, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 15, 2004; technical details may be outdated. [This is simply too cool.](http://www.milkandcookies.com/links/14339/) (turn your speakers on) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 21, 2004 ### [SMSpam](https://osherove.com/blog/2004/4/21/smspam.html) - Apr 15, 2004 ### [The art of folding](https://osherove.com/blog/2004/4/15/the-art-of-folding.html) - Apr 15, 2004 ### [Problems downloading The Regulator?](https://osherove.com/blog/2004/4/15/problems-downloading-the-regulator.html) - Apr 14, 2004 ### [When friends show off](https://osherove.com/blog/2004/4/14/when-friends-show-off.html) --- title: "Problems downloading The Regulator?" url: "https://osherove.com/blog/2004/4/15/problems-downloading-the-regulator.md" canonical: "https://osherove.com/blog/2004/4/15/problems-downloading-the-regulator.html" published: "2004-04-15T03:18:00" updated: "2004-04-15T03:18:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I've had one report of someone not being able to download the latest version of The Regulator from sourceforge. It puts out a “file not found“ message for some reason. I just tried it myself and it seems to work great.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Problems downloading The Regulator? By Roy Osherove April 15, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 15, 2004; technical details may be outdated. I've had one report of someone not being able to download the [latest version of The Regulator](http://regulator.sourceforge.com/) from sourceforge. It puts out a _“file not found“_ message for some reason. I just tried it myself and it seems to work great. Anyone else encoutered this or has any idea why this is happening? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 15, 2004 ### [The art of folding](https://osherove.com/blog/2004/4/15/the-art-of-folding.html) - Apr 15, 2004 ### [Getting creative with the windows sound recorder](https://osherove.com/blog/2004/4/15/getting-creative-with-the-windows-sound-recorder.html) - Apr 14, 2004 ### [When friends show off](https://osherove.com/blog/2004/4/14/when-friends-show-off.html) - Apr 13, 2004 ### [When links attack](https://osherove.com/blog/2004/4/13/when-links-attack.html) --- title: "New version of Data Access Application Block available" url: "https://osherove.com/blog/2004/4/15/new-version-of-data-access-application-block-available.md" canonical: "https://osherove.com/blog/2004/4/15/new-version-of-data-access-application-block-available.html" published: "2004-04-15T03:13:00" updated: "2004-04-15T03:13:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "Its the Beta before version 3.1, and I'm still not sure about everything that's new in it, but the site is reporting that this version fixes all the bugs in the earlier version. Download here as for a provider…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New version of Data Access Application Block available By Roy Osherove April 15, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published April 15, 2004; technical details may be outdated. Its the Beta before version 3.1, and I'm still not sure about everything that's new in it, but the site is reporting that this version fixes all the bugs in the earlier version. [Download here](http://www.gotdotnet.com/Community/Workspaces/viewuploads.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431) as for a provider implementation for ODP.Net - there seems to be one in the site's forum for Oracle.Net, but not for ODP (these are 2 different Oracle managed provider implementations available today). Surely,it shouldn't be that hard to create one, should it? ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 22, 2004 ### [Some cool stuff coming in ADO.NET 2.0](https://osherove.com/blog/2004/4/22/some-cool-stuff-coming-in-adonet-20.html) - Apr 20, 2004 ### [\[Tool\] WMI Strongly Typed Class Generator](https://osherove.com/blog/2004/4/20/tool-wmi-strongly-typed-class-generator.html) - Apr 14, 2004 ### [Code Readability and double negation - not uninteresting!](https://osherove.com/blog/2004/4/14/code-readability-and-double-negation-not-uninteresting.html) - Apr 14, 2004 ### [A UI Singleton?](https://osherove.com/blog/2004/4/14/a-ui-singleton.html) --- title: "Code Readability and double negation - not uninteresting!" url: "https://osherove.com/blog/2004/4/14/code-readability-and-double-negation-not-uninteresting.md" canonical: "https://osherove.com/blog/2004/4/14/code-readability-and-double-negation-not-uninteresting.html" published: "2004-04-14T13:23:00" updated: "2004-04-14T13:23:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Ooh, Omer has a nice question about Code Readability and expressing double negation in seriously harsh conditions (no outside function allowed). go take a side." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Code Readability and double negation - not uninteresting! By Roy Osherove April 14, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 14, 2004; technical details may be outdated. Ooh, [Omer has a nice question](http://weblogs.asp.net/okloeten/archive/2004/04/14/113009.aspx) about Code Readability and expressing double negation in seriously harsh conditions (no outside function allowed). go take a side. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 20, 2004 ### [\[Tool\] WMI Strongly Typed Class Generator](https://osherove.com/blog/2004/4/20/tool-wmi-strongly-typed-class-generator.html) - Apr 15, 2004 ### [New version of Data Access Application Block available](https://osherove.com/blog/2004/4/15/new-version-of-data-access-application-block-available.html) - Apr 14, 2004 ### [A UI Singleton?](https://osherove.com/blog/2004/4/14/a-ui-singleton.html) - Apr 13, 2004 ### [How to re-throw an exception correctly](https://osherove.com/blog/2004/4/13/how-to-re-throw-an-exception-correctly.html) --- title: "A UI Singleton?" url: "https://osherove.com/blog/2004/4/14/a-ui-singleton.md" canonical: "https://osherove.com/blog/2004/4/14/a-ui-singleton.html" published: "2004-04-14T13:07:00" updated: "2004-04-14T13:07:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Steven explains a concept I haven't thought about before - the UI Singleton pattern . Nice concept. Yeah, I can admit that I've done my share of “ Expose this control of the form as a Public Static member ” Sorry.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A UI Singleton? By Roy Osherove April 14, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 14, 2004; technical details may be outdated. [Steven](http://weblogs.asp.net/stevencohn/) explains a concept I haven't thought about before - the [UI Singleton pattern](http://weblogs.asp.net/stevencohn/archive/2004/04/13/112695.aspx). Nice concept. Yeah, I can admit that I've done my share of “_Expose this control of the form as a Public Static member_” Sorry. Steven's approach is so much simpler. Definitely something to think about ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 15, 2004 ### [New version of Data Access Application Block available](https://osherove.com/blog/2004/4/15/new-version-of-data-access-application-block-available.html) - Apr 14, 2004 ### [Code Readability and double negation - not uninteresting!](https://osherove.com/blog/2004/4/14/code-readability-and-double-negation-not-uninteresting.html) - Apr 13, 2004 ### [How to re-throw an exception correctly](https://osherove.com/blog/2004/4/13/how-to-re-throw-an-exception-correctly.html) - Apr 13, 2004 ### [Test Driven Development with Microsoft .NET - seems to be a good one](https://osherove.com/blog/2004/4/13/test-driven-development-with-microsoft-net-seems-to-be-a-goo.html) --- title: "When friends show off" url: "https://osherove.com/blog/2004/4/14/when-friends-show-off.md" canonical: "https://osherove.com/blog/2004/4/14/when-friends-show-off.html" published: "2004-04-14T12:44:00" updated: "2004-04-14T12:44:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Addy is showing off his desktop space. Heh. I like this comment on that picture: “Pull down the matrix poster. That's so five years ago. “ He also links to some words of wisdom on the recent past . Gawd , that is one…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # When friends show off By Roy Osherove April 14, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 14, 2004; technical details may be outdated. Addy is [showing off](http://weblogs.asp.net/asanto/archive/2004/04/13/112527.aspx) his desktop space. Heh. I like this comment on that picture: _“Pull down the matrix poster. That's so five years ago. “_ He also [links](http://weblogs.asp.net/asanto/archive/2004/04/13/112452.aspx) to some [words of wisdom on the recent past](http://www.addysanto.com/blog/arguing.jpg). _Gawd_, that is one nasty poster, yet extremely funny. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 15, 2004 ### [Getting creative with the windows sound recorder](https://osherove.com/blog/2004/4/15/getting-creative-with-the-windows-sound-recorder.html) - Apr 15, 2004 ### [Problems downloading The Regulator?](https://osherove.com/blog/2004/4/15/problems-downloading-the-regulator.html) - Apr 13, 2004 ### [When links attack](https://osherove.com/blog/2004/4/13/when-links-attack.html) - Apr 13, 2004 ### [Regulator Gift Certificates](https://osherove.com/blog/2004/4/13/regulator-gift-certificates.html) --- title: "Nice blog" url: "https://osherove.com/blog/2004/4/14/nice-blog.md" canonical: "https://osherove.com/blog/2004/4/14/nice-blog.html" published: "2004-04-14T12:26:00" updated: "2004-04-14T12:26:00" tags: ["Blogging"] author: "Roy Osherove" description: "I just discovered Chasey Chesnut's blog . Pretty funny guy, CF MVP that has some nice info. Plus, he has a funny name ;) The weird thing - his blog site is actually fun to read online rather than through an aggregator.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice blog By Roy Osherove April 14, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published April 14, 2004; technical details may be outdated. I just discovered [Chasey Chesnut's blog](http://www.brains-n-brawn.com/). Pretty funny guy, CF MVP that has some nice info. Plus, he has a funny name ;) The weird thing - his blog site is actually fun to read online rather than through an aggregator. I think its the whole tree thing... makes it looks rather cutsy! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Apr 29, 2004 ### [Early & Adopter relocated](https://osherove.com/blog/2004/4/29/early-amp-adopter-relocated.html) - Apr 20, 2004 ### [Hardcore XML blog](https://osherove.com/blog/2004/4/20/hardcore-xml-blog.html) - Apr 13, 2004 ### [The day after](https://osherove.com/blog/2004/4/13/the-day-after.html) - Apr 3, 2004 ### [Shmarya joins the fray](https://osherove.com/blog/2004/4/3/shmarya-joins-the-fray.html) --- title: "Connection pools and a DAAB v. 3 mystery" url: "https://osherove.com/blog/2004/4/14/connection-pools-and-a-daab-v-3-mystery.md" canonical: "https://osherove.com/blog/2004/4/14/connection-pools-and-a-daab-v-3-mystery.html" published: "2004-04-14T11:30:00" updated: "2004-04-14T11:30:00" tags: [".Net Original"] author: "Roy Osherove" description: "Phew. Yesterday I gave a whole day about ADO.Net to a group of fine young people, and today I gave about an hour more about ADO.Net best practices. Boy am I tired. I found out that after about 3 hours of speaking my…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Connection pools and a DAAB v. 3 mystery By Roy Osherove April 14, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 14, 2004; technical details may be outdated. Phew. Yesterday I gave a whole day about ADO.Net to a group of fine young people, and today I gave about an hour more about ADO.Net best practices. Boy am I tired. I found out that after about 3 hours of speaking my voice starts to fade. Obviously I'm not speaking correctly. I know that there are techniques that allow you to speak a lot and not lose your voice even a bit. Anyone know of any? Anyway, One of the things I talked about today was about connection pooling. I got a question about what happens when a connection string is used to connect to the database via a different user (using SSPI), yet the connection string is the same(Connections are pooled based on an exact connection string match). I didn't know the answer to that, so I checked. Turns out that when different users log in, even with the exact same connection string, they do not share the same pool. therefore, it is less efficient to use multiple accounts to access the database, as multiple connection pools will be created for them. [Go here](http://www.ondotnet.com/pub/a/dotnet/2004/02/09/connpool.html) to learn a little more about the subject of connection pools. I also talked about using the Data Access Application Block, versions 2.0 and 3.0. It was very cool to look at people's faces when they saw 8 lines of data access code to fill a dataset turned magically into one simple line. Very nice.  I found [this very nice article](http://ipattern.com/simpleblog/PermLink.aspx?entryid=24) that talks about how the [DAAB v.3](http://www.gotdotnet.com/community/workspaces/newsitem.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431&newsId=1304) works and operates, including how it uses the Abstract Factory pattern to do its bidding, allowing you to blindly use different and configurable data providers. I also got a question about that issue which I could not answer. The question was, given that with the data access block v.3 you get 3 pre-made data providers - Sql,OleDb and Oracle, is there an oracle implementation somewhere for this application block? (i.e 'that inherits from AdoHelper class') I asked some of the people here and someone said they somewhere that yes, there is, but looking this up in google found nothing. The article I'm linking to here, by Maxim Karpov states : _“Unfortunately, there is no implementation for Oracle database; therefore, it is up to you to develop the support for this database if needed. It is as simple as inheriting from AdoHelper class and overriding the method with Oracle specific functionality”_ Too bad. I bet someone somewhere did create such an implementation. Do you know of any? **\[Update\]** One thing I forgot to mention was that just before my talk one of the guys from the crowd approached me, I've never seen him before, and said he's been reading my blog for a long time and that its nice to finally meet me. (Sorry, I can't remember your name! please post a comment so that I can correct this wrong) Sure made me feel good all over. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 20, 2004 ### [The Regulator v. 2.01 - now with Intellisense](https://osherove.com/blog/2004/4/20/the-regulator-v-201-now-with-intellisense.html) - Apr 15, 2004 ### [Misunderstanding timestamp](https://osherove.com/blog/2004/4/15/misunderstanding-timestamp.html) - Apr 11, 2004 ### [DotNet vs. Smalltalk](https://osherove.com/blog/2004/4/11/dotnet-vs-smalltalk.html) - Apr 10, 2004 ### [The Regulator 2.0 is out](https://osherove.com/blog/2004/4/10/the-regulator-20-is-out.html) --- title: "When links attack" url: "https://osherove.com/blog/2004/4/13/when-links-attack.md" canonical: "https://osherove.com/blog/2004/4/13/when-links-attack.html" published: "2004-04-13T14:24:00" updated: "2004-04-13T14:24:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Chris Fralic sends us a pointer to the Product Quick Links page of the Five Star Billiards, Inc. website. This page lists hundreds of products in no discernable order. It should definitely not be called the \"Quick…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # When links attack By Roy Osherove April 13, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 13, 2004; technical details may be outdated. _Chris Fralic sends us a pointer to the_ [_Product Quick Links_](http://www.fivestarbilliards.com/thestore/) _page of the Five Star Billiards, Inc. website. This page lists hundreds of products in no discernable order. It should definitely not be called the "Quick Links" page. Chris adds, "It's almost a thing of beauty - there are patterns emerging in this sea of links..."_ \[via [This is Broken](http://broken.typepad.com/b/)\] Truly, I'm seeing some patterns in there.... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 15, 2004 ### [Problems downloading The Regulator?](https://osherove.com/blog/2004/4/15/problems-downloading-the-regulator.html) - Apr 14, 2004 ### [When friends show off](https://osherove.com/blog/2004/4/14/when-friends-show-off.html) - Apr 13, 2004 ### [Regulator Gift Certificates](https://osherove.com/blog/2004/4/13/regulator-gift-certificates.html) - Apr 13, 2004 ### [My Passover Present](https://osherove.com/blog/2004/4/13/my-passover-present.html) --- title: "How to re-throw an exception correctly" url: "https://osherove.com/blog/2004/4/13/how-to-re-throw-an-exception-correctly.md" canonical: "https://osherove.com/blog/2004/4/13/how-to-re-throw-an-exception-correctly.html" published: "2004-04-13T14:15:00" updated: "2004-04-13T14:15:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "A smart tip on throwing exceptions by Brad . (via Scott )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to re-throw an exception correctly By Roy Osherove April 13, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 13, 2004; technical details may be outdated.
A smart tip on throwing exceptions by Brad.
(via [Scott](http://scottwater.com/blog/archive/2004/04/12/11779.aspx)) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 14, 2004 ### [Code Readability and double negation - not uninteresting!](https://osherove.com/blog/2004/4/14/code-readability-and-double-negation-not-uninteresting.html) - Apr 14, 2004 ### [A UI Singleton?](https://osherove.com/blog/2004/4/14/a-ui-singleton.html) - Apr 13, 2004 ### [Test Driven Development with Microsoft .NET - seems to be a good one](https://osherove.com/blog/2004/4/13/test-driven-development-with-microsoft-net-seems-to-be-a-goo.html) - Apr 13, 2004 ### [Code DOM articles galore](https://osherove.com/blog/2004/4/13/code-dom-articles-galore.html) --- title: "Test Driven Development with Microsoft .NET - seems to be a good one" url: "https://osherove.com/blog/2004/4/13/test-driven-development-with-microsoft-net-seems-to-be-a-goo.md" canonical: "https://osherove.com/blog/2004/4/13/test-driven-development-with-microsoft-net-seems-to-be-a-goo.html" published: "2004-04-13T14:09:00" updated: "2004-04-13T14:09:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Steve Eichert reviews the book “TDD with .Net” , and seems to really like it. He also made something that I really appreciate - he wrote down a list of bullet points while reading the book, and then posted it. Even from…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven Development with Microsoft .NET - seems to be a good one By Roy Osherove April 13, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 13, 2004; technical details may be outdated. [Steve Eichert reviews the book “TDD with .Net”](http://dotnetjunkies.com/WebLog/seichert/archive/2004/04/12/11272.aspx) , and seems to really like it. He also made something that I really appreciate - he wrote down a list of bullet points while reading the book, and then posted it. Even from such small points, you can still learn a lot, specifically about testing ADO.Net and web services. Great Job Steve. If you are working in a company where you are in charge of purchasing books, I suggest you get this book, if only to find out how test driven development can help your organization. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 14, 2004 ### [A UI Singleton?](https://osherove.com/blog/2004/4/14/a-ui-singleton.html) - Apr 13, 2004 ### [How to re-throw an exception correctly](https://osherove.com/blog/2004/4/13/how-to-re-throw-an-exception-correctly.html) - Apr 13, 2004 ### [Code DOM articles galore](https://osherove.com/blog/2004/4/13/code-dom-articles-galore.html) - Apr 13, 2004 ### [Microsoft Research Academic Days in Israel](https://osherove.com/blog/2004/4/13/microsoft-research-academic-days-in-israel.html) --- title: "Code DOM articles galore" url: "https://osherove.com/blog/2004/4/13/code-dom-articles-galore.md" canonical: "https://osherove.com/blog/2004/4/13/code-dom-articles-galore.html" published: "2004-04-13T13:54:00" updated: "2004-04-13T13:54:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Omer has posted a set of articles regarding the Code DOM (the set of classes that allow you to dynamically write and generate code on the fly using the .Net framework for the .Net framework) Some good stuff in there. I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Code DOM articles galore By Roy Osherove April 13, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published April 13, 2004; technical details may be outdated. [Omer has posted a set of articles](http://weblogs.asp.net/okloeten/archive/2004/04/10/110628.aspx) regarding the Code DOM (the set of classes that allow you to dynamically write and generate code on the fly using the .Net framework **for** the .Net framework) Some good stuff in there. I got the chance to read the original Hebrew article and learned a lot. Omer has also helped me write one of the plugins for the current [Regulator](http://regulator.sourceforge.net/), the plugin that generates C#or VB.Net code on the fly from the current Regex. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 13, 2004 ### [How to re-throw an exception correctly](https://osherove.com/blog/2004/4/13/how-to-re-throw-an-exception-correctly.html) - Apr 13, 2004 ### [Test Driven Development with Microsoft .NET - seems to be a good one](https://osherove.com/blog/2004/4/13/test-driven-development-with-microsoft-net-seems-to-be-a-goo.html) - Apr 13, 2004 ### [Microsoft Research Academic Days in Israel](https://osherove.com/blog/2004/4/13/microsoft-research-academic-days-in-israel.html) - Apr 9, 2004 ### [CodeDOM adventures and oddities](https://osherove.com/blog/2004/4/9/codedom-adventures-and-oddities.html) --- title: "Microsoft Research Academic Days in Israel" url: "https://osherove.com/blog/2004/4/13/microsoft-research-academic-days-in-israel.md" canonical: "https://osherove.com/blog/2004/4/13/microsoft-research-academic-days-in-israel.html" published: "2004-04-13T13:49:00" updated: "2004-04-13T13:49:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "“It'a hapenning in Israel, next week. I will be giving a talk (pure philosophical one) on Indigo. If you are somehow connected to the academic world, you are welcome to join . the price is 200 nis which are almost 50$…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft Research Academic Days in Israel By Roy Osherove April 13, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 13, 2004; technical details may be outdated. _“It'a hapenning in Israel, next week. I will be giving a talk (pure philosophical one) on Indigo. If you are somehow connected to the academic world, you are welcome to_ [_join_](http://www.microsoft.com/israel/events/research/invitation.asp)_. the price is 200 nis which are almost 50$ for a 2 day conference and a night stay at a 5 stars hotel. Did I mention this is an MSR conference...”_ \[[Yosi Taguri](http://blogs.msdn.com/yosit/archive/2004/04/13/112244.aspx)\] 50$ for 2 nights at a salten sea resort? That sounds pretty good even without the MSR keynotes :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 13, 2004 ### [Test Driven Development with Microsoft .NET - seems to be a good one](https://osherove.com/blog/2004/4/13/test-driven-development-with-microsoft-net-seems-to-be-a-goo.html) - Apr 13, 2004 ### [Code DOM articles galore](https://osherove.com/blog/2004/4/13/code-dom-articles-galore.html) - Apr 9, 2004 ### [CodeDOM adventures and oddities](https://osherove.com/blog/2004/4/9/codedom-adventures-and-oddities.html) - Apr 6, 2004 ### [Good AppDomain FAQ](https://osherove.com/blog/2004/4/6/good-appdomain-faq.html) --- title: "Regulator Gift Certificates" url: "https://osherove.com/blog/2004/4/13/regulator-gift-certificates.md" canonical: "https://osherove.com/blog/2004/4/13/regulator-gift-certificates.html" published: "2004-04-13T13:38:00" updated: "2004-04-13T13:38:00" tags: ["Off Topic"] author: "Roy Osherove" description: "[Note: shameless plug ahead] Speaking of presents, one of the things I changed in The Regulator 2.0 was the “Donate” link. It used to point to a Paypal account, but it seems that PayPal sucks when you're overseas. No…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Regulator Gift Certificates By Roy Osherove April 13, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 13, 2004; technical details may be outdated. _\[Note: shameless plug ahead\]_ Speaking of presents, one of the things I changed in [The Regulator 2.0](http://regulator.sourceforge.net/) was the “Donate” link. It used to point to a Paypal account, but it seems that PayPal sucks when you're overseas. No Israel bank accounts allowed. bah. So I added a link instead to anyone who wants, to send me an [Amazon Gift Certificate](https://www.amazon.com/exec/obidos/gc-email-order1) over to [my contact form](https://osherove.com/contact) . Yeah, I can't even have an Amazon Honor System, because Amazon does not work with out of seas accounts neither. So, an Amazon Gift Certificate was my best bet. This way I get to buy books that help me learn more, out of something that I created by reading other books :) ain't that a cool little development program? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 14, 2004 ### [When friends show off](https://osherove.com/blog/2004/4/14/when-friends-show-off.html) - Apr 13, 2004 ### [When links attack](https://osherove.com/blog/2004/4/13/when-links-attack.html) - Apr 13, 2004 ### [My Passover Present](https://osherove.com/blog/2004/4/13/my-passover-present.html) - Apr 11, 2004 ### [Non MVPs at the MVP summit - looks bad, smells bad](https://osherove.com/blog/2004/4/11/non-mvps-at-the-mvp-summit-looks-bad-smells-bad.html) --- title: "My Passover Present" url: "https://osherove.com/blog/2004/4/13/my-passover-present.md" canonical: "https://osherove.com/blog/2004/4/13/my-passover-present.html" published: "2004-04-13T13:28:00" updated: "2004-04-13T13:28:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Joy. I got for Passover (a.k.a The Jewish Christmas) from my boss a webcam. It's the third one we got. Luckily, it came with an exchange coupon, and behold, the coupon was just right for me to replace it with a CD/MP3…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My Passover Present By Roy Osherove April 13, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 13, 2004; technical details may be outdated. Joy. I got for Passover (a.k.a The Jewish Christmas) from my boss a webcam. It's the third one we got. Luckily, it came with an exchange coupon, and behold, the coupon was just right for me to replace it with a CD/MP3 diskman. My current transportation does not contain a disk player built in, hence - I was happy. I also got one of those adapters between a Diskman and the car cassette tape player. You know, they look like a cassette but they're actually transmitting the CD audio. Finally, I can drive in my car, listening to .Net Rocks .I missed the past 9 shows so all I had to do was burn them in MP3 format on one CD (they fit snuggly in, all of them) and play it in my car all the way from here to Eilat and back (Eilat is a 6 hour drive from here). Too bad I can't listen to the live shows though. It's Friday night in Israel when the shows air, which is Family Dinner night. No computer for me. Oh well, Diskman it is! One of the funniest things for me is to watch people's faces when I tell them I listen to a recorded radio show on .Net. They seem to freak out. Even some of the people here at work, which are really smart,intelligent and technology savvy people seem to think it's sorta stupid. I guess there's nothing that would change they're mind unless they hear the show with Paul Allen (father of VB) or some of the other amazing shows out there. Truly folks, You're missing a lot. [Check it out.](http://www.franklins.net/dotnetrocks.asp) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 13, 2004 ### [When links attack](https://osherove.com/blog/2004/4/13/when-links-attack.html) - Apr 13, 2004 ### [Regulator Gift Certificates](https://osherove.com/blog/2004/4/13/regulator-gift-certificates.html) - Apr 11, 2004 ### [Non MVPs at the MVP summit - looks bad, smells bad](https://osherove.com/blog/2004/4/11/non-mvps-at-the-mvp-summit-looks-bad-smells-bad.html) - Apr 8, 2004 ### [My phone manners need work](https://osherove.com/blog/2004/4/8/my-phone-manners-need-work.html) --- title: "The day after" url: "https://osherove.com/blog/2004/4/13/the-day-after.md" canonical: "https://osherove.com/blog/2004/4/13/the-day-after.html" published: "2004-04-13T00:32:00" updated: "2004-04-13T00:32:00" tags: ["Blogging"] author: "Roy Osherove" description: "Well, it's the morning of the day after. Everyone talked a lot and I think I personally have learned a lot. lots of stuff has been hitting the fan, which is not what I wanted. I did want a conversation to start, not all…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The day after By Roy Osherove April 13, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published April 13, 2004; technical details may be outdated. Well, it's the morning of the day after. Everyone talked a lot and I think I personally have learned a lot. lots of stuff has been hitting the fan, which is not what I wanted. I did want a conversation to start, not all these personal attacks. Still, its all about conversation and I respect everything that was said back to me(to a degree). Maybe sometimes I need to lighten up a bit, I know. I do still stand by my opinions, but looking back things could have been done more tactfully, and on a less louder note. I don't think standing by one's beliefs can ever be a bad things, as long as you listen back to other people's beliefs, which I certainly did. While a lot of irrelevant stuff flew over, some important stuff did stick “get over yourself”,”stop whining” were the main points. Let me just say “point taken”. I'll take responsibility for my actions and would like to apologize to [Rory](http://www.neopoleon.com/blog) for any misunderstanding my post may have caused. Even though it was not meant to be about him personally, he was still atacked by it which I regret. There's nothing more I can do about this, but yesterday sure made for a crappy day for both of us. I did lose sleep over this. I'll try to be more "diplomatic" in the future. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Apr 20, 2004 ### [Hardcore XML blog](https://osherove.com/blog/2004/4/20/hardcore-xml-blog.html) - Apr 14, 2004 ### [Nice blog](https://osherove.com/blog/2004/4/14/nice-blog.html) - Apr 3, 2004 ### [Shmarya joins the fray](https://osherove.com/blog/2004/4/3/shmarya-joins-the-fray.html) - Apr 1, 2004 ### [Is TextAmerica good enough for a desktop contest?](https://osherove.com/blog/2004/4/1/is-textamerica-good-enough-for-a-desktop-contest.html) --- title: "DotNet vs. Smalltalk" url: "https://osherove.com/blog/2004/4/11/dotnet-vs-smalltalk.md" canonical: "https://osherove.com/blog/2004/4/11/dotnet-vs-smalltalk.html" published: "2004-04-11T22:41:00" updated: "2004-04-11T22:41:00" tags: [".Net Original"] author: "Roy Osherove" description: "This is an interesting read. (via Cincom) here's the end of it: “Microsoft, are you listening? I am making a concerted effort here to give up my Smalltalk bigotry and you guys aren't helping! What ever happened to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # DotNet vs. Smalltalk By Roy Osherove April 11, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 11, 2004; technical details may be outdated. [This is an interesting read.](http://minotaur.mine.nu/roller/page/swart/20040410#dotnet_vs_smalltalk) (via Cincom) here's the end of it: _“Microsoft, are you listening? I am making a concerted effort here to give up my_ [_Smalltalk bigotry_](http://www.google.com/search?q=smalltalk+bigot) _and you guys aren't helping! What ever happened to_ [_"simple things should be simple, complex things should be possible"_](http://laurel.actlab.utexas.edu/~cynbe/muq/muf3_19.html)_? Instead, with .NET only trivial tasks seem to be simple, everything else is complex and time consuming.“_ ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 15, 2004 ### [Misunderstanding timestamp](https://osherove.com/blog/2004/4/15/misunderstanding-timestamp.html) - Apr 14, 2004 ### [Connection pools and a DAAB v. 3 mystery](https://osherove.com/blog/2004/4/14/connection-pools-and-a-daab-v-3-mystery.html) - Apr 10, 2004 ### [The Regulator 2.0 is out](https://osherove.com/blog/2004/4/10/the-regulator-20-is-out.html) - Apr 5, 2004 ### [The next Regulator is gonna rock (with your help)](https://osherove.com/blog/2004/4/5/the-next-regulator-is-gonna-rock-with-your-help.html) --- title: "Non MVPs at the MVP summit - looks bad, smells bad" url: "https://osherove.com/blog/2004/4/11/non-mvps-at-the-mvp-summit-looks-bad-smells-bad.md" canonical: "https://osherove.com/blog/2004/4/11/non-mvps-at-the-mvp-summit-looks-bad-smells-bad.html" published: "2004-04-11T20:55:00" updated: "2004-04-11T20:55:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Update: Hi this is roy from the year 2013. The post below was written in 2004. I was a DICK back then, it seems. so I apologize. I am keeping this up here so people can see that everyone can be a dick sometimes, and it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Non MVPs at the MVP summit - looks bad, smells bad By Roy Osherove April 11, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 11, 2004; technical details may be outdated. > **Update:** Hi this is roy from the year 2013. The post below was written in 2004. I was a DICK back then, it seems. so I apologize. I am keeping this up here so people can see that everyone can be a dick sometimes, and it is ok to admit it and say you’re sorry. Sorry again Rory! Before I start this post, let me just say I respect [Rory](http://neopoleon.com/blog), I think he is a very funny and intelligent guy and does a great job co hosting the [.Net Rocks show](http://www.franklins.net/dotnetrocks). In fact, he is even going to be one of the judges in the upcoming contest that I have planned (for which prizes will be given worth more than 1200$!) No. This post is not meant as something against Rory, but on something a bit bigger; How Microsoft handles Community. The thing that got me riled up was reading Rory’s blog post [about him being at the MVP summit even though he is not an MVP](http://neopoleon.com/blog/posts/5244.aspx). I’m going to ask the Microsoft community leaders a question and I bet I’m not the only one who was asking himself that: “_What the f\*\*k??_.” Now that that’s out of my system, let me continue on a mellower note: By letting people into the MVP summit who are not in fact MVPs, you cheapen the MVP tag (yeah just as Rory feared in his post). I **do** think less of this because I think (and let me be blunt) that if Rory could have gotten in, so could I. So could many other people who help day in and day out in newsgroups and articles (I was never a newsgroup dude though, and there are plenty more worthy than me in that area) this is somewhat of a slap in their faces saying “_Sure, you did great things, but he’s really funny!”._  If you wanted to let him in there, just slap an MVP on his shirt and let him in so as not to offend the other people (which would be a sign of just how easy/hard it is to get an MVP) Even Rory, in his post acknowledged the fact that this might not look good: _“I thought there might be some resentment about a non-MVP/RD attending. If I were an MVP, then I might feel that it cheapens the experience..”_ Well, maybe you shouldn’t have accepted. If it made **you** feel uneasy, maybe you should have taken it as a sign.  And here’s a thought, **maybe** some people at the summit felt the same way, but who’s gonna say something to your face? You’re a great guy and everyone loves you. They just don’t think you should be there, because, well, you’re not an MVP. I bet that if Rory got in, so did many other people who in fact, should not be there according to the “rules”. And what are rules if they are broken and accepted by the community that tries to uphold them? A joke. They make you look **bad**, Microsoft. [Frans Bouma](http://weblogs.asp.net/fbouma/) received his MVP a bit too late to attend, so he didn’t. And guess what, I think Frans’ being there would have made a lot more sense. I wonder what he felt reading Rory’s post on this. You say that you only give MVPs to people who deserve it, you hold events for them you make them part of the “private club”, but the MVP award is slowly starting to seem to me as nothing more than a popularity contest. Rory’s MVP should be coming real soon now, I bet. He’s really popular.  And yes, I do wonder, if anyone offers me this award, will it really mean anything, or will it just mean that I’m popular? As an epilogue, some of you might find this post distasteful, some might think this is all about sour grapes (and I admit that’s about 10% true because I do want to become an MVP), but consider the message behind this post. It holds true no matter what.  The thought even crossed my mind that writing this might make my chances of actually getting an MVP much smaller. If that **indeed** is the case, I wouldn’t want it anyway. Hopefully, it’s not. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 13, 2004 ### [Regulator Gift Certificates](https://osherove.com/blog/2004/4/13/regulator-gift-certificates.html) - Apr 13, 2004 ### [My Passover Present](https://osherove.com/blog/2004/4/13/my-passover-present.html) - Apr 8, 2004 ### [My phone manners need work](https://osherove.com/blog/2004/4/8/my-phone-manners-need-work.html) - Apr 5, 2004 ### [Windows Media Player problem? here's a very good FAQ page](https://osherove.com/blog/2004/4/5/windows-media-player-problem-heres-a-very-good-faq-page.html) --- title: "The Regulator 2.0 is out" url: "https://osherove.com/blog/2004/4/10/the-regulator-20-is-out.md" canonical: "https://osherove.com/blog/2004/4/10/the-regulator-20-is-out.html" published: "2004-04-10T14:45:00" updated: "2004-04-10T14:45:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "It's just a beta , and most of the documentation will only be available on the wiki in the coming future, but: -added: installer -added: generate C# or vb.net code from regex(via tools menu) -added: regex Analyzer.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator 2.0 is out By Roy Osherove April 10, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published April 10, 2004; technical details may be outdated. [It's just a beta](http://sourceforge.net/projects/regulator/), and most of the documentation will only be available on the [wiki](http://royo.is-a-geek.com/flexwiki/default.aspx/Regulator.HomePage) in the coming future, but: \-added: installer \-added: generate C# or vb.net code from regex(via tools menu) \-added: regex Analyzer. Describes in plain language the regular expression(via view menu) \-added: Compile to Assembly. Compiles the current regex into a dll. (via tools menu) \-added: The Regulator can now accept a file name of type ".express" as a command line argument to open with \-added: file association for ".express" files. Double clicking on an express file will launch a new instance of The Regulator with the document open. \-added:  ability to specify a web address in the input file text area   must be preceded with http/ftp prefixes. \-added: pressing "Enter" when writing an input file name/web will automatically refresh from that file(no need to click the refresh icon) \-added: plugin creation ability  - Plugins are divided into two kinds: dialogs and dockable.   -dialogs are accesible via the "Tools" menu   -Dockable plugins are acceisible via the "view" menu  Included plugins(with source):  - Plugin lister. will show all the currently loaded plugins.  - CodeWriter. Generates C# or VB.NET code from the regular expression  - Regex Analyzer. Describes in plain language the regular expression  - Compile to Assembly. Compiles the current regex into a dll.  - Snippets. same as in original version only as plugin  - Regexlib.com search. same as in original version only as plugin  - Regexlib.com submit. same as in original version only as plugin \-removed: performance tab \-changed: icons and links in the main form \-fixed: Regex options toolbar bug fixed where unchecking one of the options would remove all the other options as well (darn bit masking) \-fixed: closing a single document did not prompt a "save before close" dialog if document was changed and not saved. \-fixed: various problems related to inaccurate relative file paths (snippets loading and saving not working correctly for example) \-fixed: importing a regular expression from web search now correctly places input segments into separate input rows (Replacing "|||" with new lines) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 14, 2004 ### [Connection pools and a DAAB v. 3 mystery](https://osherove.com/blog/2004/4/14/connection-pools-and-a-daab-v-3-mystery.html) - Apr 11, 2004 ### [DotNet vs. Smalltalk](https://osherove.com/blog/2004/4/11/dotnet-vs-smalltalk.html) - Apr 5, 2004 ### [The next Regulator is gonna rock (with your help)](https://osherove.com/blog/2004/4/5/the-next-regulator-is-gonna-rock-with-your-help.html) - Apr 3, 2004 ### [Another book of the month, and what's up with ApplicationException?](https://osherove.com/blog/2004/4/3/another-book-of-the-month-and-whats-up-with-applicationexcep.html) --- title: "CodeDOM adventures and oddities" url: "https://osherove.com/blog/2004/4/9/codedom-adventures-and-oddities.md" canonical: "https://osherove.com/blog/2004/4/9/codedom-adventures-and-oddities.html" published: "2004-04-09T21:43:00" updated: "2004-04-09T21:43:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Omer posts some interesting bits on using the CodeDOM code generator , including some tricks. One important thing to know is how the code generator will generate string declarations. Omer discovers that you can't make…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CodeDOM adventures and oddities By Roy Osherove April 9, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 9, 2004; technical details may be outdated. [Omer posts some interesting bits on using the CodeDOM code generator](http://weblogs.asp.net/okloeten/archive/2004/04/09/110491.aspx), including some tricks. One important thing to know is how the code generator will generate string declarations. Omer discovers that you can't make it perpend a “@” at the string's start. it does it automatically using a hard coded set of rules. Some more oddities lie there, but [Omer](http://weblogs.asp.net/okloeten) points them better than I can. He has much more experience than me on this one. The subject came up because I'm using some of Omer's code as a basis for a plugin for [The next Regulator](http://regulator.sourceforge.net/)., coming out in a few days. The plugin, you may be surprised to know, generates C# or VB.Net code from the current regex. BTW, Omer is one of those guys who are really bright and every time we talk it astounds me just how much knowledge he has that I seem to have little clue about. He should definitely post more. Funny thing, he's pretty young (like 20?). I'm scared to think what he's going to be like in 10 years. \*shudder\* ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 13, 2004 ### [Code DOM articles galore](https://osherove.com/blog/2004/4/13/code-dom-articles-galore.html) - Apr 13, 2004 ### [Microsoft Research Academic Days in Israel](https://osherove.com/blog/2004/4/13/microsoft-research-academic-days-in-israel.html) - Apr 6, 2004 ### [Good AppDomain FAQ](https://osherove.com/blog/2004/4/6/good-appdomain-faq.html) - Apr 5, 2004 ### [Sample chapter from "The Visual Basic .NET Programming Language" available](https://osherove.com/blog/2004/4/5/sample-chapter-from-quotthe-visual-basic-net-programming-lan.html) --- title: "My phone manners need work" url: "https://osherove.com/blog/2004/4/8/my-phone-manners-need-work.md" canonical: "https://osherove.com/blog/2004/4/8/my-phone-manners-need-work.html" published: "2004-04-08T19:35:00" updated: "2004-04-08T19:35:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Tal says I'm impossible to talk to on the phone when I'm at work. She's right, of course. I'm always sounding either condesending, impatient or bored. I really need to work on it. Sorry honey. (of course, instead of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My phone manners need work By Roy Osherove April 8, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 8, 2004; technical details may be outdated. Tal says I'm impossible to talk to on the phone when I'm at work. She's right, of course. I'm always sounding either condesending, impatient or bored. I really need to work on it. Sorry honey. (of course, instead of leaving my computer, her I am **blogging** about it. go figure) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 13, 2004 ### [My Passover Present](https://osherove.com/blog/2004/4/13/my-passover-present.html) - Apr 11, 2004 ### [Non MVPs at the MVP summit - looks bad, smells bad](https://osherove.com/blog/2004/4/11/non-mvps-at-the-mvp-summit-looks-bad-smells-bad.html) - Apr 5, 2004 ### [Windows Media Player problem? here's a very good FAQ page](https://osherove.com/blog/2004/4/5/windows-media-player-problem-heres-a-very-good-faq-page.html) - Apr 2, 2004 ### [MVP Summit pointers, and a shout out to James Robertson](https://osherove.com/blog/2004/4/2/mvp-summit-pointers-and-a-shout-out-to-james-robertson.html) --- title: "Good AppDomain FAQ" url: "https://osherove.com/blog/2004/4/6/good-appdomain-faq.md" canonical: "https://osherove.com/blog/2004/4/6/good-appdomain-faq.html" published: "2004-04-06T20:01:00" updated: "2004-04-06T20:01:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Yeah, lots of hype in the air today. But, more important stuff first. AppDomain FAQ seems to be a good resource. (via yves ) As For channel 9 ? I have a whole post lined up but it'll have to wait for tomorrow." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good AppDomain FAQ By Roy Osherove April 6, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 6, 2004; technical details may be outdated. Yeah, lots of hype in the air today. But, more important stuff first. [AppDomain FAQ](http://www.gotdotnet.com/team/clr/AppdomainFAQ.aspx) seems to be a good resource. (via [yves](http://weblogs.asp.net/yvesdolc/archive/2004/04/06/108595.aspx)) As For [channel 9](http://channel9.msdn.com/)? I have a whole post lined up but it'll have to wait for tomorrow. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 13, 2004 ### [Microsoft Research Academic Days in Israel](https://osherove.com/blog/2004/4/13/microsoft-research-academic-days-in-israel.html) - Apr 9, 2004 ### [CodeDOM adventures and oddities](https://osherove.com/blog/2004/4/9/codedom-adventures-and-oddities.html) - Apr 5, 2004 ### [Sample chapter from "The Visual Basic .NET Programming Language" available](https://osherove.com/blog/2004/4/5/sample-chapter-from-quotthe-visual-basic-net-programming-lan.html) - Apr 4, 2004 ### [MSDN Subscriber Downloads gets an RSS feed](https://osherove.com/blog/2004/4/4/msdn-subscriber-downloads-gets-an-rss-feed.html) --- title: "Windows Media Player problem? here's a very good FAQ page" url: "https://osherove.com/blog/2004/4/5/windows-media-player-problem-heres-a-very-good-faq-page.md" canonical: "https://osherove.com/blog/2004/4/5/windows-media-player-problem-heres-a-very-good-faq-page.html" published: "2004-04-05T23:50:00" updated: "2004-04-05T23:50:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Bleh . I'm trying to watch an all important streaming video of some really important things (no, not that), and windows media player 9 only plays audio and no video. Coolness. Always wanted to know what its like to be…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Windows Media Player problem? here's a very good FAQ page By Roy Osherove April 5, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 5, 2004; technical details may be outdated. **Bleh**. I'm trying to watch an all important streaming video of some really important things (no, not that), and windows media player 9 only plays audio and no video. Coolness. Always wanted to know what its like to be blind, but after 5 seconds it gets **really** old. So now what? Google Google. While I still have not found the answer I was looking for(maybe you know?), I came across this wonderful media player FAQ page: [Windows Media Player: WMP mini FAQ](http://www.nwlink.com/~zachd/pss/pss.html) **\[Update:** _OK. I somehow fixed it. The solution was:_ _\- open Tools-Options-Performance-Advanced_ _\- uncheck “use video mixing renderer”_ _That's it. Go figure. It used to work, but now it does not. Never actually “checked” it myself._ _Some windows problems are best left unanswered I guess...\]_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 11, 2004 ### [Non MVPs at the MVP summit - looks bad, smells bad](https://osherove.com/blog/2004/4/11/non-mvps-at-the-mvp-summit-looks-bad-smells-bad.html) - Apr 8, 2004 ### [My phone manners need work](https://osherove.com/blog/2004/4/8/my-phone-manners-need-work.html) - Apr 2, 2004 ### [MVP Summit pointers, and a shout out to James Robertson](https://osherove.com/blog/2004/4/2/mvp-summit-pointers-and-a-shout-out-to-james-robertson.html) - Mar 28, 2004 ### [Another day, another contest. Wanna help?](https://osherove.com/blog/2004/3/28/another-day-another-contest-wanna-help.html) --- title: "Sample chapter from \"The Visual Basic .NET Programming Language\" available" url: "https://osherove.com/blog/2004/4/5/sample-chapter-from-quotthe-visual-basic-net-programming-lan.md" canonical: "https://osherove.com/blog/2004/4/5/sample-chapter-from-quotthe-visual-basic-net-programming-lan.html" published: "2004-04-05T23:08:00" updated: "2004-04-05T23:08:00" tags: [".Net Quotations", "Free book chapters"] author: "Roy Osherove" description: "For those of you who've been considering buying my book but just want to make sure that it's worth whatever they're charging for it these days, Addison-Wesley (my publishers) has provided a sample chapter online in PDF…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Sample chapter from "The Visual Basic .NET Programming Language" available By Roy Osherove April 5, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published April 5, 2004; technical details may be outdated. _For those of you who've been considering buying my book but just want to make sure that it's worth whatever they're charging for it these days, Addison-Wesley (my publishers) has provided a_ [_sample chapter_](http://www.awprofessional.com/content/images/0321169514/samplechapter/vickch13.pdf) _online in PDF format. The chapter is about inheritance, so it should give you a good idea of what the rest of the book is going to be like._ _As always, you can buy the book_ [_here_](https://www.amazon.com/exec/obidos/ASIN/0321169514/iserializable-20)_._ \[via [Paul Vick](http://panopticoncentral.net/archive/2004/04/05/895.aspx)\] _(I changed the book link to include my referrer link instead of Paul's)_ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 9, 2004 ### [CodeDOM adventures and oddities](https://osherove.com/blog/2004/4/9/codedom-adventures-and-oddities.html) - Apr 6, 2004 ### [Good AppDomain FAQ](https://osherove.com/blog/2004/4/6/good-appdomain-faq.html) - Apr 4, 2004 ### [MSDN Subscriber Downloads gets an RSS feed](https://osherove.com/blog/2004/4/4/msdn-subscriber-downloads-gets-an-rss-feed.html) - Apr 3, 2004 ### [Small, Spiffy, Freeware utilities](https://osherove.com/blog/2004/4/3/small-spiffy-freeware-utilities.html) --- title: "The next Regulator is gonna rock (with your help)" url: "https://osherove.com/blog/2004/4/5/the-next-regulator-is-gonna-rock-with-your-help.md" canonical: "https://osherove.com/blog/2004/4/5/the-next-regulator-is-gonna-rock-with-your-help.html" published: "2004-04-05T22:41:00" updated: "2004-04-05T22:41:00" tags: [".Net Original"] author: "Roy Osherove" description: "I've been getting a lot of requests for new features in The Regulator . Some people want it to be able to compile the regex to an assembly, some want it to be able to do a examine-o-matic in the style of Regex Workbench…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The next Regulator is gonna rock (with your help) By Roy Osherove April 5, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 5, 2004; technical details may be outdated. I've been getting a lot of requests for new features in [The Regulator](http://regulator.sourceforge.net/). Some people want it to be able to compile the regex to an assembly, some want it to be able to do a examine-o-matic in the style of [Regex Workbench](http://blogs.gotdotnet.com/ericgu/commentview.aspx/3eaf7ed2-d76b-427a-913c-79284e11e9cd) (you get a textual description on your expression in words) and all sorts of other things. **The bad news** is that, I'm not going to add all these new features in the next version **The good news are:** \- the next version is pretty darn close (like less than a week) \- It will allow you to write plugins for The Regulator meaning:        - It should take less than 5 minutes to create either a dialog based or a dock able plug in for The Regulator        - you can add all those features you wanted but I did not supply        - the version will come with some plugins including source to serve as examples \- I will put up a list of all plugins on my site \- the best plugins will be included in the next versions of the regulator out of the box (with due credits) In short, the next version will be an almost total rewrite and refactoring version. Just how deep this will run? well, If you've worked with Regulator , yo'll remember having two panes: the web search, and snippets. in this new version they are already implemented as plugins. Totally independent of the main application. One nice thing about the plugin framework in The Regulator is that it will allow you to just drop and run new plugins. You'll just have to copy the plugin dll into the regulator directory, and on the next run it will be loaded automatically into the GUI/menus. No configuration needed. other stuff I'm working on for the next version: \- an installer \- some basic documentation (yeah I know it's really missing) \- some small enhancements (like getting the input text directly off the web and such) \- I removed the “performace“ chart for now. too much trouble, and no one was really using it... got any more feature requests? I'd love to hear them. Maybe I'll even include them in this version. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 11, 2004 ### [DotNet vs. Smalltalk](https://osherove.com/blog/2004/4/11/dotnet-vs-smalltalk.html) - Apr 10, 2004 ### [The Regulator 2.0 is out](https://osherove.com/blog/2004/4/10/the-regulator-20-is-out.html) - Apr 3, 2004 ### [Another book of the month, and what's up with ApplicationException?](https://osherove.com/blog/2004/4/3/another-book-of-the-month-and-whats-up-with-applicationexcep.html) - Apr 3, 2004 ### [Book of the month for April](https://osherove.com/blog/2004/4/3/book-of-the-month-for-april.html) --- title: "MSDN Subscriber Downloads gets an RSS feed" url: "https://osherove.com/blog/2004/4/4/msdn-subscriber-downloads-gets-an-rss-feed.md" canonical: "https://osherove.com/blog/2004/4/4/msdn-subscriber-downloads-gets-an-rss-feed.html" published: "2004-04-04T11:16:00" updated: "2004-04-04T11:16:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Good news for MSDN subscribers : be notified of new downloads available from MSDN Subscriber Downloads via this RSS feed . [via Signs on the sand ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSDN Subscriber Downloads gets an RSS feed By Roy Osherove April 4, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 4, 2004; technical details may be outdated. _Good news for_ [_MSDN subscribers_](http://msdn.microsoft.com/subscriptions/)_: be notified of new downloads available from MSDN Subscriber Downloads via_ [_this RSS feed_](http://msdn.microsoft.com/subscriptions/rss.xml)_._ \[via [Signs on the sand](http://www.tkachenko.com/blog/archives/000211.html)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 6, 2004 ### [Good AppDomain FAQ](https://osherove.com/blog/2004/4/6/good-appdomain-faq.html) - Apr 5, 2004 ### [Sample chapter from "The Visual Basic .NET Programming Language" available](https://osherove.com/blog/2004/4/5/sample-chapter-from-quotthe-visual-basic-net-programming-lan.html) - Apr 3, 2004 ### [Small, Spiffy, Freeware utilities](https://osherove.com/blog/2004/4/3/small-spiffy-freeware-utilities.html) - Apr 3, 2004 ### [A .Net LDAP library + article](https://osherove.com/blog/2004/4/3/a-net-ldap-library-article.html) --- title: "Shmarya joins the fray" url: "https://osherove.com/blog/2004/4/3/shmarya-joins-the-fray.md" canonical: "https://osherove.com/blog/2004/4/3/shmarya-joins-the-fray.html" published: "2004-04-03T16:03:00" updated: "2004-04-03T16:03:00" tags: ["Blogging"] author: "Roy Osherove" description: "Another Israeli Blogger joins the fray. This time it's Shmarya . He decided to host the blog on his own server (using .TEXT) though, rather than join the mass media frenzy that is weblogs.asp.net lately." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Shmarya joins the fray By Roy Osherove April 3, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published April 3, 2004; technical details may be outdated. Another Israeli Blogger joins the fray. This time it's [Shmarya](http://blog.satr-it.com/). He decided to host the blog on his own server (using .TEXT) though, rather than join the mass media frenzy that is weblogs.asp.net lately. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Apr 14, 2004 ### [Nice blog](https://osherove.com/blog/2004/4/14/nice-blog.html) - Apr 13, 2004 ### [The day after](https://osherove.com/blog/2004/4/13/the-day-after.html) - Apr 1, 2004 ### [Is TextAmerica good enough for a desktop contest?](https://osherove.com/blog/2004/4/1/is-textamerica-good-enough-for-a-desktop-contest.html) - Apr 1, 2004 ### [Israel slowly discovers RSS](https://osherove.com/blog/2004/4/1/israel-slowly-discovers-rss.html) --- title: "Another book of the month, and what's up with ApplicationException?" url: "https://osherove.com/blog/2004/4/3/another-book-of-the-month-and-whats-up-with-applicationexcep.md" canonical: "https://osherove.com/blog/2004/4/3/another-book-of-the-month-and-whats-up-with-applicationexcep.html" published: "2004-04-03T12:05:00" updated: "2004-04-03T12:05:00" tags: [".Net Original"] author: "Roy Osherove" description: "OK. I have to admit that this book was a very close second to my Book of the month: .NET Framework Standard Library Annotated Reference Vol 1 , by Brad Abrams . I really like this quote from Brad about the book: I tried…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another book of the month, and what's up with ApplicationException? By Roy Osherove April 3, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 3, 2004; technical details may be outdated. OK. I have to admit that this book was a very close second to my Book of the month: [.NET Framework Standard Library Annotated Reference Vol 1,](https://www.amazon.com/exec/obidos/ASIN/0321154894/iserializable-20) by [Brad Abrams](http://blogs.msdn.com/brada/). I really like this quote from Brad about the book: _I tried to maintain a very minium level of editorial discretion on the annotations. My goal was to get folks that were heavily involved in the design of the BCL to comment candidly from their point of view. There are no annotations that are wrong technically, but that does not mean they are all the Microsoft official position_ [Brad is also sharing stuff from the book on his blog](http://blogs.msdn.com/brada/category/4449.aspx). Very interesting. I'd say this book is a must if you want to deeply understand some of the reasons and logic (and sometimes mistakes) that went into creating the base class library of the .Net framework. I'm one of those who believes the deeper you are aware of what's underneath, the better you can deal with problems and understand why things happen, and thus deal with them more easily. **Now about ApplicationException** Actually, the first post Brad made about the book brought up a discussion about using the ApplicationException class in your application. [In short, Don't](http://blogs.msdn.com/brada/archive/2004/03/25/96251.aspx). Yep. It came as a surprise to me as well. All the MS examples out there use this and I've read in lots of places that this class should be used as your base exception class. But now comes Brad and turns the tables. The comments on that post are very interesting. Personally, I still don't understand how this discrepancy came to be. Anyone know? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 10, 2004 ### [The Regulator 2.0 is out](https://osherove.com/blog/2004/4/10/the-regulator-20-is-out.html) - Apr 5, 2004 ### [The next Regulator is gonna rock (with your help)](https://osherove.com/blog/2004/4/5/the-next-regulator-is-gonna-rock-with-your-help.html) - Apr 3, 2004 ### [Book of the month for April](https://osherove.com/blog/2004/4/3/book-of-the-month-for-april.html) - Apr 3, 2004 ### [From Java Generics to questioning assumptions](https://osherove.com/blog/2004/4/3/from-java-generics-to-questioning-assumptions.html) --- title: "Book of the month for April" url: "https://osherove.com/blog/2004/4/3/book-of-the-month-for-april.md" canonical: "https://osherove.com/blog/2004/4/3/book-of-the-month-for-april.html" published: "2004-04-03T11:40:00" updated: "2004-04-03T11:40:00" tags: [".Net Original", "Recommended books"] author: "Roy Osherove" description: "Book of the month: Test Driven Development in Microsoft .Net From the reactions I'm starting to get from people this book is a winner. Highly recommended." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Book of the month for April By Roy Osherove April 3, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Recommended books](https://osherove.com/blog/category/recommended-books) **Historical article** · Originally published April 3, 2004; technical details may be outdated. Book of the month: [**Test Driven Development in Microsoft .Net**](https://www.amazon.com/exec/obidos/ASIN/0735619484/iserializable-20) [![Book of the month: Test Driven Development in Microsoft .Net](https://osherove.com/img/wb/829a9e3b_images.amazon.com_images_P_0735619484.01._PE_PI_SCMZZZZZZZ_.jpg)](https://www.amazon.com/exec/obidos/ASIN/0735619484/iserializable-20) From the reactions I'm starting to get from people this book is a winner. Highly recommended. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 5, 2004 ### [The next Regulator is gonna rock (with your help)](https://osherove.com/blog/2004/4/5/the-next-regulator-is-gonna-rock-with-your-help.html) - Apr 3, 2004 ### [Another book of the month, and what's up with ApplicationException?](https://osherove.com/blog/2004/4/3/another-book-of-the-month-and-whats-up-with-applicationexcep.html) - Apr 3, 2004 ### [From Java Generics to questioning assumptions](https://osherove.com/blog/2004/4/3/from-java-generics-to-questioning-assumptions.html) - Apr 1, 2004 ### [Looking for a good Knowledge base management solution](https://osherove.com/blog/2004/4/1/looking-for-a-good-knowledge-base-management-solution.html) --- title: "From Java Generics to questioning assumptions" url: "https://osherove.com/blog/2004/4/3/from-java-generics-to-questioning-assumptions.md" canonical: "https://osherove.com/blog/2004/4/3/from-java-generics-to-questioning-assumptions.html" published: "2004-04-03T11:27:00" updated: "2004-04-03T11:27:00" tags: [".Net Original"] author: "Roy Osherove" description: "[ Small update : all occurences of “loose“ have been replaced by the word “dynamic“, due to an explicit request . So there. Can anyone explain the difference?] Bruce Eckel is Over it . Actually, he's over the fact that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # From Java Generics to questioning assumptions By Roy Osherove April 3, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 3, 2004; technical details may be outdated. _\[**Small update**: all occurences of “loose“ have been replaced by the word “dynamic“, due to an [explicit request](http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3258441115). So there. Can anyone explain the difference?\]_ [Bruce Eckel is Over it](http://mindview.net/WebLog/log-0053). Actually, he's over the fact that Java Generics do not allow dynamic typing (you have to use interfaces). Will .Net generics support dynamic typing? He's come to terms with the fact that Python is sometimes(and often times) the “better“ language to do stuff. He's come into acceptance. But he's learned to live with both of them at peace. But that's not the main point I saw in his post. The main point I saw was that sometimes, no matter how strongly you believe something is true, you're going to have to question yourself and the “facts” if you want to proceed in a better,faster,more elegant way to do stuff. Bruce tells about people discovering Python and the power it holds within, mainly the quickness with which you can create programs that do things. But here python is just an example (to me). I see this holds true for a lot of things, both in  and out of software development. Taking XP for example, you know what, not even that. Taking TDD for example. People who do TDD for the first time have the same exact “discovery” that Bruce describes in his post.  - 1st time try is motivated by something which is not “dangerous” to try out \-  enlightenment \- questioning yourself for your previous methods \- slowly converting to become “test infected”, leaving the “old” methodologies behind until such time that they are **really** needed. The main struggling points to get people to do step number one. BTW, the same can be said for par programming. Just look at the over alll output and speed vs the “old” way. Disbelief,quesitoning assumptions, these are all things that go through your mind when you try to come to terms with such weird facts. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 3, 2004 ### [Another book of the month, and what's up with ApplicationException?](https://osherove.com/blog/2004/4/3/another-book-of-the-month-and-whats-up-with-applicationexcep.html) - Apr 3, 2004 ### [Book of the month for April](https://osherove.com/blog/2004/4/3/book-of-the-month-for-april.html) - Apr 1, 2004 ### [Looking for a good Knowledge base management solution](https://osherove.com/blog/2004/4/1/looking-for-a-good-knowledge-base-management-solution.html) - Apr 1, 2004 ### ["Database Access with Visual Basic .NET" is the book chapter I was pointing to](https://osherove.com/blog/2004/4/1/quotdatabase-access-with-visual-basic-netquot-is-the-book-ch.html) --- title: "Small, Spiffy, Freeware utilities" url: "https://osherove.com/blog/2004/4/3/small-spiffy-freeware-utilities.md" canonical: "https://osherove.com/blog/2004/4/3/small-spiffy-freeware-utilities.html" published: "2004-04-03T10:59:00" updated: "2004-04-03T10:59:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Some pretty useful freeware tools,applets and... stuff here . (via Kent ) SlickRun does look pretty cool and simple." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Small, Spiffy, Freeware utilities By Roy Osherove April 3, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 3, 2004; technical details may be outdated. Some pretty useful freeware tools,applets and... stuff [here](http://www.bayden.com/other/). (via [Kent](http://blogs.msdn.com/ksharkey/archive/2004/04/02/106939.aspx)) [SlickRun](http://www.bayden.com/SlickRun/) **does** look pretty cool and simple. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 5, 2004 ### [Sample chapter from "The Visual Basic .NET Programming Language" available](https://osherove.com/blog/2004/4/5/sample-chapter-from-quotthe-visual-basic-net-programming-lan.html) - Apr 4, 2004 ### [MSDN Subscriber Downloads gets an RSS feed](https://osherove.com/blog/2004/4/4/msdn-subscriber-downloads-gets-an-rss-feed.html) - Apr 3, 2004 ### [A .Net LDAP library + article](https://osherove.com/blog/2004/4/3/a-net-ldap-library-article.html) - Apr 3, 2004 ### [True Binary Serialization and Compression of Datasets](https://osherove.com/blog/2004/4/3/true-binary-serialization-and-compression-of-datasets.html) --- title: "A .Net LDAP library + article" url: "https://osherove.com/blog/2004/4/3/a-net-ldap-library-article.md" canonical: "https://osherove.com/blog/2004/4/3/a-net-ldap-library-article.html" published: "2004-04-03T10:35:00" updated: "2004-04-03T10:35:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Oh, this should come in handy in one of my upcoming things, I think: Novell has a .Net C# LDAP library with an article that explains how to do the important stuff with it. I still can't find the download link for said…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A .Net LDAP library + article By Roy Osherove April 3, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published April 3, 2004; technical details may be outdated. Oh, this should come in handy in one of my upcoming things, I think: [Novell has a .Net C# LDAP library with an article that explains how to do the important stuff with it.](http://www.novell.com/coolsolutions/cooldev/features/a_net_cplus_ldap_library_cdev.html#1) I still can't find the download link for said library, but the article explains a lot of the logic behid LDAP. A good read. (link via [Darrell](http://dotnetjunkies.com/WebLog/darrell.norton/) via [Brendan](http://dotnetjunkies.com/WebLog/bsblog/archive/2004/03/31/10461.aspx)) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 4, 2004 ### [MSDN Subscriber Downloads gets an RSS feed](https://osherove.com/blog/2004/4/4/msdn-subscriber-downloads-gets-an-rss-feed.html) - Apr 3, 2004 ### [Small, Spiffy, Freeware utilities](https://osherove.com/blog/2004/4/3/small-spiffy-freeware-utilities.html) - Apr 3, 2004 ### [True Binary Serialization and Compression of Datasets](https://osherove.com/blog/2004/4/3/true-binary-serialization-and-compression-of-datasets.html) - Apr 3, 2004 ### [DPack: Free enhancement Add-ins to VS.NET IDE](https://osherove.com/blog/2004/4/3/dpack-free-enhancement-add-ins-to-vsnet-ide.html) --- title: "True Binary Serialization and Compression of Datasets" url: "https://osherove.com/blog/2004/4/3/true-binary-serialization-and-compression-of-datasets.md" canonical: "https://osherove.com/blog/2004/4/3/true-binary-serialization-and-compression-of-datasets.html" published: "2004-04-03T10:26:00" updated: "2004-04-03T10:26:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Scott Galloway points, in the a comment to this post, to an article that explains how to do binary serialization and compression of Datasets , which can come in handy when you're looking for something like that.." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # True Binary Serialization and Compression of Datasets By Roy Osherove April 3, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published April 3, 2004; technical details may be outdated. [Scott Galloway](http://www.mostlylucid.co.uk/) points, in the a comment to [this](http://dotnetjunkies.com/WebLog/jkimble/archive/2004/03/30/10383.aspx) post, to an [article that explains how to do binary serialization and compression of Datasets](http://www.eggheadcafe.com/articles/20031219.asp), which can come in handy when you're looking for something like that.. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 3, 2004 ### [Small, Spiffy, Freeware utilities](https://osherove.com/blog/2004/4/3/small-spiffy-freeware-utilities.html) - Apr 3, 2004 ### [A .Net LDAP library + article](https://osherove.com/blog/2004/4/3/a-net-ldap-library-article.html) - Apr 3, 2004 ### [DPack: Free enhancement Add-ins to VS.NET IDE](https://osherove.com/blog/2004/4/3/dpack-free-enhancement-add-ins-to-vsnet-ide.html) - Mar 30, 2004 ### [When Regular Expressions Attack](https://osherove.com/blog/2004/3/30/when-regular-expressions-attack.html) --- title: "DPack: Free enhancement Add-ins to VS.NET IDE" url: "https://osherove.com/blog/2004/4/3/dpack-free-enhancement-add-ins-to-vsnet-ide.md" canonical: "https://osherove.com/blog/2004/4/3/dpack-free-enhancement-add-ins-to-vsnet-ide.html" published: "2004-04-03T00:36:00" updated: "2004-04-03T00:36:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Includes Delphi keyboard mapping scheme, Code Browser add-in, Code Navigator add-in, and numbered bookmarks. Other features coming soon! http://www.usysware. com/dpack.htm [via Adam Anderson ] The Code browser is just…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # DPack: Free enhancement Add-ins to VS.NET IDE By Roy Osherove April 3, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 3, 2004; technical details may be outdated. _Includes Delphi keyboard mapping scheme, Code Browser add-in, Code Navigator add-in, and numbered bookmarks. Other features coming soon!_ [_http://www.usysware._com/dpack.htm](http://www.usysware.com/dpack.htm) \[via [Adam Anderson](http://falafelsoft.com/Flogs/adam/archive/2004/04/02/223.aspx)\] The Code browser is just like [QuickJump](http://www.codeproject.com/dotnet/quickjump_net.asp), and the Code Navigator could be done with a simple macro, but add to that numbered bookmarks and a simple installation package for all of them, and I like what I see! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 3, 2004 ### [A .Net LDAP library + article](https://osherove.com/blog/2004/4/3/a-net-ldap-library-article.html) - Apr 3, 2004 ### [True Binary Serialization and Compression of Datasets](https://osherove.com/blog/2004/4/3/true-binary-serialization-and-compression-of-datasets.html) - Mar 30, 2004 ### [When Regular Expressions Attack](https://osherove.com/blog/2004/3/30/when-regular-expressions-attack.html) - Mar 28, 2004 ### [Low defect rates are not a myth](https://osherove.com/blog/2004/3/28/low-defect-rates-are-not-a-myth.html) --- title: "MVP Summit pointers, and a shout out to James Robertson" url: "https://osherove.com/blog/2004/4/2/mvp-summit-pointers-and-a-shout-out-to-james-robertson.md" canonical: "https://osherove.com/blog/2004/4/2/mvp-summit-pointers-and-a-shout-out-to-james-robertson.html" published: "2004-04-02T23:53:00" updated: "2004-04-02T23:53:00" tags: ["Off Topic"] author: "Roy Osherove" description: "How cool is this? My blog was mentioned by James Robertson (The Robert Scoble of Smalltalk?) in his talk about blogs and RSS. Thanks James. I'll be sure to mention you whenever my next user group talk becomes a reality.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MVP Summit pointers, and a shout out to James Robertson By Roy Osherove April 2, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 2, 2004; technical details may be outdated. How cool is this? My blog was mentioned by [James Robertson](http://www.cincomsmalltalk.com/blog/blogView)(The Robert [Scoble](http://scoble.weblogs.com/) of Smalltalk?)  in his [talk](http://benjaminm.net/PermaLink.aspx?guid=069b7efd-624e-42a5-9f4d-d28bd0a451d9) about blogs and RSS. Thanks James. I'll be sure to mention you whenever my next user group talk becomes a reality. Sure, not quite the same exposure, and, no Martin Fowler to listen, but still... ;) On a different note, many MVPs are now gathering at Redmond for the MVP summit. A few points about that: 1. I envy you all 2. Therefore, make the best of your stay 3. God help you if you don't blog about all the cool stuff you saw and did there 4. I'm never going to read it, as it will make me more envy 5. I hope to meet you the next time around! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 8, 2004 ### [My phone manners need work](https://osherove.com/blog/2004/4/8/my-phone-manners-need-work.html) - Apr 5, 2004 ### [Windows Media Player problem? here's a very good FAQ page](https://osherove.com/blog/2004/4/5/windows-media-player-problem-heres-a-very-good-faq-page.html) - Mar 28, 2004 ### [Another day, another contest. Wanna help?](https://osherove.com/blog/2004/3/28/another-day-another-contest-wanna-help.html) - Mar 28, 2004 ### [Some engineer jokes](https://osherove.com/blog/2004/3/28/some-engineer-jokes.html) --- title: "Is TextAmerica good enough for a desktop contest?" url: "https://osherove.com/blog/2004/4/1/is-textamerica-good-enough-for-a-desktop-contest.md" canonical: "https://osherove.com/blog/2004/4/1/is-textamerica-good-enough-for-a-desktop-contest.html" published: "2004-04-01T15:57:00" updated: "2004-04-01T15:57:00" tags: ["Blogging"] author: "Roy Osherove" description: "I'm still looking for a good place to host my desktop screen shots contest. TextAmerica looks pretty cool, except you can only view the pictures up to a certain size (which is problematic when trying to determine…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Is TextAmerica good enough for a desktop contest? By Roy Osherove April 1, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published April 1, 2004; technical details may be outdated. I'm still looking for a good place to host my desktop screen shots contest. TextAmerica looks pretty cool, except you can only view the pictures up to a certain size (which is problematic when trying to determine whether a screen shot of 1040 pixels is worth a prize). Anyway.. I'm not sure. Maybe you can [see what it looks like](http://desktops.textamerica.com/?page=default) and give me your comments. The nice things I like about text America: **The good:** - You get an [RSS feed](http://desktops.textamerica.com/rss.asp?imgtype=full) of latest photos - very cool to see a contest RSS feed. - Easy to post there - I just email it in. There is also a community blogging option there that means anyone can email their pics into the blog and I just approve of them. this can make for a great community pics blog if not for a contest. **The bad:** \- The photos cannot exceed 480px in size. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Apr 13, 2004 ### [The day after](https://osherove.com/blog/2004/4/13/the-day-after.html) - Apr 3, 2004 ### [Shmarya joins the fray](https://osherove.com/blog/2004/4/3/shmarya-joins-the-fray.html) - Apr 1, 2004 ### [Israel slowly discovers RSS](https://osherove.com/blog/2004/4/1/israel-slowly-discovers-rss.html) - Mar 29, 2004 ### [More Israeli bloggers!](https://osherove.com/blog/2004/3/29/more-israeli-bloggers.html) --- title: "Israel slowly discovers RSS" url: "https://osherove.com/blog/2004/4/1/israel-slowly-discovers-rss.md" canonical: "https://osherove.com/blog/2004/4/1/israel-slowly-discovers-rss.html" published: "2004-04-01T08:45:00" updated: "2004-04-01T08:45:00" tags: ["Blogging"] author: "Roy Osherove" description: "This is very cool. One of the biggest news sites in Israel - YNet , has published a big news article covering the benefits of RSS and XML. All I can say is finally!. Ironically, this same site, has a community…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel slowly discovers RSS By Roy Osherove April 1, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published April 1, 2004; technical details may be outdated. This is very cool. One of the biggest news sites in Israel - [YNet](http://www.ynet.co.il/), has published a [big news article](http://www.ynet.co.il/articles/1,7340,L-2858430,00.html) covering the benefits of RSS and XML. All I can say is **finally!.** Ironically, this same site, [has a community technology related weblog](http://www.ynet.co.il/home/0,7340,L-2537,00.html) (think “SlashDot“ with less Linux zealots) which has no RSS feed. _(warning: The sites are in Hebrew)_ ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Apr 3, 2004 ### [Shmarya joins the fray](https://osherove.com/blog/2004/4/3/shmarya-joins-the-fray.html) - Apr 1, 2004 ### [Is TextAmerica good enough for a desktop contest?](https://osherove.com/blog/2004/4/1/is-textamerica-good-enough-for-a-desktop-contest.html) - Mar 29, 2004 ### [More Israeli bloggers!](https://osherove.com/blog/2004/3/29/more-israeli-bloggers.html) - Mar 19, 2004 ### [Is sharing information in a blog wrong for your company? An ethical dilemma](https://osherove.com/blog/2004/3/19/is-sharing-information-in-a-blog-wrong-for-your-company-an-e.html) --- title: "Looking for a good Knowledge base management solution" url: "https://osherove.com/blog/2004/4/1/looking-for-a-good-knowledge-base-management-solution.md" canonical: "https://osherove.com/blog/2004/4/1/looking-for-a-good-knowledge-base-management-solution.html" published: "2004-04-01T08:30:00" updated: "2004-04-01T08:30:00" tags: [".Net Original"] author: "Roy Osherove" description: "There's a lot of knowledge hosted on our servers. documents, articles, links. you know how it goes. We want to index it and create a search able knowledge base with links to all the files,ability to add files easily and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Looking for a good Knowledge base management solution By Roy Osherove April 1, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 1, 2004; technical details may be outdated. There's a lot of knowledge hosted on our servers. documents, articles, links. you know how it goes. We want to index it and create a search able knowledge base with links to all the files,ability to add files easily and also articles. maybe even forums? and such. Anyone have any recommendations? Is [MyKB.com](http://www.mykb.com/) good enough for a company intra-net with tons of material? Also, would SharePoint server make a good knowledge base candidate(we already have one installed and running)? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 3, 2004 ### [Book of the month for April](https://osherove.com/blog/2004/4/3/book-of-the-month-for-april.html) - Apr 3, 2004 ### [From Java Generics to questioning assumptions](https://osherove.com/blog/2004/4/3/from-java-generics-to-questioning-assumptions.html) - Apr 1, 2004 ### ["Database Access with Visual Basic .NET" is the book chapter I was pointing to](https://osherove.com/blog/2004/4/1/quotdatabase-access-with-visual-basic-netquot-is-the-book-ch.html) - Mar 31, 2004 ### [VS.Net Database Projects - learn to use them (Sample chapter included)](https://osherove.com/blog/2004/3/31/vsnet-database-projects-learn-to-use-them-sample-chapter-inc.html) --- title: "\"Database Access with Visual Basic .NET\" is the book chapter I was pointing to" url: "https://osherove.com/blog/2004/4/1/quotdatabase-access-with-visual-basic-netquot-is-the-book-ch.md" canonical: "https://osherove.com/blog/2004/4/1/quotdatabase-access-with-visual-basic-netquot-is-the-book-ch.html" published: "2004-04-01T08:26:00" updated: "2004-04-01T08:26:00" tags: [".Net Original"] author: "Roy Osherove" description: "Heh. Turns out that last book chapter that I pointed to was from a book written by Jackie Goldstein and Jeffrey P. McManus. It's a small world. Jackie it the VB regional director for Israel and also heads the VB/VB.Net…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # "Database Access with Visual Basic .NET" is the book chapter I was pointing to By Roy Osherove April 1, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 1, 2004; technical details may be outdated. Heh. Turns out that last book chapter that [I pointed to](http://weblogs.asp.net/rosherove/archive/2004/03/31/104662.aspx) was from a book written by Jackie Goldstein and Jeffrey P. McManus. It's a small world. Jackie it the VB regional director for Israel and also heads the VB/VB.Net user group here in Israel. Hey Jackie! I didn't even check out the name of the book before posting the chapter, sorry :) So, let me right a wrong. The book name from which the excellent chapter on database projects came from is [Database Access with Visual Basic .NET (3rd Edition)](https://www.amazon.com/exec/obidos/ASIN/0672323435/iserializable-20) . If the rest of the book is as easy to understand as this chapter is, I recommend it. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 3, 2004 ### [From Java Generics to questioning assumptions](https://osherove.com/blog/2004/4/3/from-java-generics-to-questioning-assumptions.html) - Apr 1, 2004 ### [Looking for a good Knowledge base management solution](https://osherove.com/blog/2004/4/1/looking-for-a-good-knowledge-base-management-solution.html) - Mar 31, 2004 ### [VS.Net Database Projects - learn to use them (Sample chapter included)](https://osherove.com/blog/2004/3/31/vsnet-database-projects-learn-to-use-them-sample-chapter-inc.html) - Mar 31, 2004 ### [Scripting .Net on MSDN-AA](https://osherove.com/blog/2004/3/31/scripting-net-on-msdn-aa.html) --- title: "VS.Net Database Projects - learn to use them (Sample chapter included)" url: "https://osherove.com/blog/2004/3/31/vsnet-database-projects-learn-to-use-them-sample-chapter-inc.md" canonical: "https://osherove.com/blog/2004/3/31/vsnet-database-projects-learn-to-use-them-sample-chapter-inc.html" published: "2004-03-31T07:41:00" updated: "2004-03-31T07:41:00" tags: [".Net Original", "Free book chapters"] author: "Roy Osherove" description: "I just got acquainted with the Database Project in VS.Net. Very cool. This sample chapter gives a very nice intro on the Hows and Whys of it(PDF). I'll be adding this to my current project shortly. Some of the main…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VS.Net Database Projects - learn to use them (Sample chapter included) By Roy Osherove March 31, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published March 31, 2004; technical details may be outdated. I just got acquainted with the Database Project in VS.Net. Very cool. [This sample chapter](http://www.devx.com/assets/download/5865.pdf) gives a very nice intro on the Hows and Whys of it(PDF).  I'll be adding this to my current project shortly. Some of the main features - you can put your SQL scripts in the database easily and reconstruct the whole database (inc. data!) from within the project. Lots of other abilities, but the main thing is that it allows you to generate the scripts automatically, and even create change scripts automatically when you change the schema. Very nice. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 1, 2004 ### [Looking for a good Knowledge base management solution](https://osherove.com/blog/2004/4/1/looking-for-a-good-knowledge-base-management-solution.html) - Apr 1, 2004 ### ["Database Access with Visual Basic .NET" is the book chapter I was pointing to](https://osherove.com/blog/2004/4/1/quotdatabase-access-with-visual-basic-netquot-is-the-book-ch.html) - Mar 31, 2004 ### [Scripting .Net on MSDN-AA](https://osherove.com/blog/2004/3/31/scripting-net-on-msdn-aa.html) - Mar 29, 2004 ### [Very good contest news, and an apology to Mark Miller](https://osherove.com/blog/2004/3/29/very-good-contest-news-and-an-apology-to-mark-miller.html) --- title: "Scripting .Net on MSDN-AA" url: "https://osherove.com/blog/2004/3/31/scripting-net-on-msdn-aa.md" canonical: "https://osherove.com/blog/2004/3/31/scripting-net-on-msdn-aa.html" published: "2004-03-31T06:08:00" updated: "2004-03-31T06:08:00" tags: [".Net Original"] author: "Roy Osherove" description: "My Scripting in .Net article just got published on MSDN-AA . I need to find time to write more articles...." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scripting .Net on MSDN-AA By Roy Osherove March 31, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 31, 2004; technical details may be outdated. My Scripting in .Net article [just got published on MSDN-AA](http://www.msdnaa.net/content/?5240). I need to find time to write more articles.... ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 1, 2004 ### ["Database Access with Visual Basic .NET" is the book chapter I was pointing to](https://osherove.com/blog/2004/4/1/quotdatabase-access-with-visual-basic-netquot-is-the-book-ch.html) - Mar 31, 2004 ### [VS.Net Database Projects - learn to use them (Sample chapter included)](https://osherove.com/blog/2004/3/31/vsnet-database-projects-learn-to-use-them-sample-chapter-inc.html) - Mar 29, 2004 ### [Very good contest news, and an apology to Mark Miller](https://osherove.com/blog/2004/3/29/very-good-contest-news-and-an-apology-to-mark-miller.html) - Mar 29, 2004 ### [A Biztalk 2004 riddle - Catching an exception from a web service](https://osherove.com/blog/2004/3/29/a-biztalk-2004-riddle-catching-an-exception-from-a-web-servi.html) --- title: "When Regular Expressions Attack" url: "https://osherove.com/blog/2004/3/30/when-regular-expressions-attack.md" canonical: "https://osherove.com/blog/2004/3/30/when-regular-expressions-attack.html" published: "2004-03-30T13:31:00" updated: "2004-03-30T13:31:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "It's not that I'm BAD at regular expressions, I just learn enough to get me by when I need them. I'm nothing like Darren, who decided to do something like this : While reading the VB Language Spec today I decided to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # When Regular Expressions Attack By Roy Osherove March 30, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published March 30, 2004; technical details may be outdated. It's not that I'm BAD at regular expressions, I just learn enough to get me by when I need them. I'm nothing like Darren, [who decided to do something like this](http://blogs.regexadvice.com/DNeimke/posts/873.aspx): _While reading the VB Language Spec today I decided to attempt to follow the grammar syntax for matching DateTime Literals:_     [_http://msdn.microsoft.com/library/en-us/vbls7/html/vblrfvbspec2\_4\_6.asp?frame=true_](http://msdn.microsoft.com/library/en-us/vbls7/html/vblrfvbspec2_4_6.asp?frame=true) _The resulting pattern can be seen (fully commented) here:_     [_http://www.regexlib.com/REDetails.aspx?regexp\_id=638_](http://www.regexlib.com/REDetails.aspx?regexp_id=638) OK. I can't resist. Here's the full pattern (and it looks great in [The Regulator](http://royo.is-a-geek.com/regulator)): ``` (?'DateLiteral' (?# Per the VB Spec : DateLiteral ::= '#' [ Whitespace+ ] DateOrTime [ Whitespace+ ] '#' ) \#\s* (?'DateOrTime' (?# DateOrTime ::= DateValue Whitespace+ TimeValue | DateValue | TimeValue ) (?'DateValue' (?# DateValue ::= Whitespace+ TimeValue | DateValue | TimeValue ) ( (?# DateValue ::= MonthValue / DayValue / YearValue | MonthValue - DayValue - YearValue ) (?'Month'(0?[1-9])|1[0-2]) (?# Month 01 - 12 ) (?'Sep'[-/]) (?# Date separator '-' or '/' ) (?'Day'0?[1-9]|[12]\d|3[01]) (?# Day 01 - 31 ) \k'Sep' (?# whatever date separator was previously matched ) (?'Year'\d{1,4}) \s+ (?# TimeValue ::= HourValue : MinuteValue [ : SecondValue ] [ WhiteSpace+ ] [ AMPM ] ) (?'HourValue'(0?[1-9])|1[0-9]|2[0-4]) (?# Hour 01 - 24 ) [:] (?'MinuteValue'0?[1-9]|[1-5]\d|60) (?# Minute 01 - 60 ) [:] (?'SecondValue':0?[1-9]|[1-5]\d|60)? (?# Optional Minute :01 - :60 ) \s* (?'AMPM'[AP]M)? ) | ( (?# DateValue ::= MonthValue / DayValue / YearValue | MonthValue - DayValue - YearValue ) (?'Month'(0?[1-9])|1[0-2]) (?# Month 01 - 12 ) (?'Sep'[-/]) (?# Date separator '-' or '/' ) (?'Day'0?[1-9]|[12]\d|3[01]) (?# Month 01 - 31 ) \k'Sep' (?# whatever date separator was previously matched ) (?'Year'\d{4}) ) | ( (?# TimeValue ::= HourValue : MinuteValue [ : SecondValue ] [ WhiteSpace+ ] [ AMPM ] ) (?'HourValue'(0?[1-9])|1[0-9]|2[0-4]) (?# Hour 01 - 24 ) [:] (?'MinuteValue'0?[1-9]|[1-5]\d|60) (?# Minute 01 - 60 ) [:] (?'SecondValue':0?[1-9]|[1-5]\d|60)? (?# Optional Minute :01 - :60 ) \s* (?'AMPM'[AP]M)? ) ) ) \s*\# ) ``` ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 3, 2004 ### [True Binary Serialization and Compression of Datasets](https://osherove.com/blog/2004/4/3/true-binary-serialization-and-compression-of-datasets.html) - Apr 3, 2004 ### [DPack: Free enhancement Add-ins to VS.NET IDE](https://osherove.com/blog/2004/4/3/dpack-free-enhancement-add-ins-to-vsnet-ide.html) - Mar 28, 2004 ### [Low defect rates are not a myth](https://osherove.com/blog/2004/3/28/low-defect-rates-are-not-a-myth.html) - Mar 27, 2004 ### [VS-Styler :Toggle and save your VS.Net font and color settings instantly](https://osherove.com/blog/2004/3/27/vs-styler-toggle-and-save-your-vsnet-font-and-color-settings.html) --- title: "[Cool tool] SQLCheck - FREE SQL server performance monitor/screen saver" url: "https://osherove.com/blog/2004/3/30/cool-tool-sqlcheck-free-sql-server-performance-monitorscreen.md" canonical: "https://osherove.com/blog/2004/3/30/cool-tool-sqlcheck-free-sql-server-performance-monitorscreen.html" published: "2004-03-30T13:07:00" updated: "2004-03-30T13:07:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "via Stefano , Very nice: SQLcheck is an interesting (and FREE) Performance Monitor for SQL Server. With this tool, you can investigates, organizes and explains critical information about your server’s hardware,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool tool\] SQLCheck - FREE SQL server performance monitor/screen saver By Roy Osherove March 30, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published March 30, 2004; technical details may be outdated. **via** [**Stefano**](http://dotnetjunkies.com/WebLog/demiliani/archive/2004/03/30/10365.aspx)**, Very nice:** **[_SQLcheck_](http://www.idera.com/Products/SQLcheck/)** _is an interesting (and FREE) Performance Monitor for SQL Server._ _With this tool, you can investigates, organizes and explains critical information about your server’s hardware, operating system and SQL Server. With SQLcheck's performance dashboard, you can quickly view detailed explanations and receive recovery suggestions._ _Why this tools is interesting for me? Because with this new release (2.0) it can now operate as a secure Screen Saver... really cool!!!_ ![](https://osherove.com/img/wb/2bd65cc1_www.idera.com_Images_SQLcheckLarge.gif) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Apr 15, 2004 ### [New version of Data Access Application Block available](https://osherove.com/blog/2004/4/15/new-version-of-data-access-application-block-available.html) - Apr 10, 2004 ### [The Regulator 2.0 is out](https://osherove.com/blog/2004/4/10/the-regulator-20-is-out.html) - Mar 27, 2004 ### [VS-Styler :Toggle and save your VS.Net font and color settings instantly](https://osherove.com/blog/2004/3/27/vs-styler-toggle-and-save-your-vsnet-font-and-color-settings.html) - Mar 24, 2004 ### [How CodeRush pissed me off](https://osherove.com/blog/2004/3/24/how-coderush-pissed-me-off.html) --- title: "Very good contest news, and an apology to Mark Miller" url: "https://osherove.com/blog/2004/3/29/very-good-contest-news-and-an-apology-to-mark-miller.md" canonical: "https://osherove.com/blog/2004/3/29/very-good-contest-news-and-an-apology-to-mark-miller.html" published: "2004-03-29T20:42:00" updated: "2004-03-29T20:42:00" tags: [".Net Original"] author: "Roy Osherove" description: "Oh this is going to be good. I already have collected prizes for my upcoming contest. Let me just say that first place gets over 300$ worth of goodies . sounds cool already? I'm still looking for more prizes/swag (this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Very good contest news, and an apology to Mark Miller By Roy Osherove March 29, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 29, 2004; technical details may be outdated. Oh this is going to be good. I already have collected prizes for my upcoming contest. Let me just say that first place **gets over 300$ worth of goodies**. sounds cool already? I'm still looking for more prizes/swag (this will be a hell of a thing in the end). I'm also looking for interesting contest suggestions (Coding challenge/screenshots/what else is there?). Comment or ping me if you have some ideas. Now about CodeRush. I was too angry to post that moment, and I apologize. In retrospect my post was a bit too much, though I still agree with most of what was said there. Mark Miller of DevExpress has left a [good response in the comments section of that post](http://weblogs.asp.net/rosherove/archive/2004/03/25/95612.aspx), so feel free to read that. Let me just say that: \- CodeSmart \*should\* have been included because unlike all the other tools that were considered, this is a competing add-in, not a separate tool \- I should have made a review which was a little more to the point and not so angry. Sorry again. Blogging is, unlike marketing, a human activity :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 31, 2004 ### [VS.Net Database Projects - learn to use them (Sample chapter included)](https://osherove.com/blog/2004/3/31/vsnet-database-projects-learn-to-use-them-sample-chapter-inc.html) - Mar 31, 2004 ### [Scripting .Net on MSDN-AA](https://osherove.com/blog/2004/3/31/scripting-net-on-msdn-aa.html) - Mar 29, 2004 ### [A Biztalk 2004 riddle - Catching an exception from a web service](https://osherove.com/blog/2004/3/29/a-biztalk-2004-riddle-catching-an-exception-from-a-web-servi.html) - Mar 28, 2004 ### [I think I found my book of the month](https://osherove.com/blog/2004/3/28/i-think-i-found-my-book-of-the-month.html) --- title: "A Biztalk 2004 riddle - Catching an exception from a web service" url: "https://osherove.com/blog/2004/3/29/a-biztalk-2004-riddle-catching-an-exception-from-a-web-servi.md" canonical: "https://osherove.com/blog/2004/3/29/a-biztalk-2004-riddle-catching-an-exception-from-a-web-servi.html" published: "2004-03-29T18:50:00" updated: "2004-03-29T18:50:00" tags: [".Net Original"] author: "Roy Osherove" description: "So here's what my friend is trying to do: He has a web service which is throwing and exception, hard coded, so that we can test if BizTalk gets it. The exception was thrown either as a Soap Exception or as a regular…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Biztalk 2004 riddle - Catching an exception from a web service By Roy Osherove March 29, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 29, 2004; technical details may be outdated. So here's what my friend is trying to do: He has a web service which is throwing and exception, hard coded, so that we can test if BizTalk gets it. The exception was thrown either as a Soap Exception or as a regular exception (we tried both ways). In BizTalk we have a try-catch shape, but we get NOTHING when we try raising the message. Pretty simple, right? Yet there is no documented way on how this should actually work.  This might be an issue with the way the web service was written? Or it may be an issue with BizTalk? we're not sure. The WS is dead simple, just for testing. **As a last resort, I'm posting to my blog**. Hope someone in blogland can help. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 31, 2004 ### [Scripting .Net on MSDN-AA](https://osherove.com/blog/2004/3/31/scripting-net-on-msdn-aa.html) - Mar 29, 2004 ### [Very good contest news, and an apology to Mark Miller](https://osherove.com/blog/2004/3/29/very-good-contest-news-and-an-apology-to-mark-miller.html) - Mar 28, 2004 ### [I think I found my book of the month](https://osherove.com/blog/2004/3/28/i-think-i-found-my-book-of-the-month.html) - Mar 28, 2004 ### [Troubled comments in XML documents](https://osherove.com/blog/2004/3/28/troubled-comments-in-xml-documents.html) --- title: "More Israeli bloggers!" url: "https://osherove.com/blog/2004/3/29/more-israeli-bloggers.md" canonical: "https://osherove.com/blog/2004/3/29/more-israeli-bloggers.html" published: "2004-03-29T02:57:00" updated: "2004-03-29T02:57:00" tags: ["Blogging"] author: "Roy Osherove" description: "Slowly but surely, more and more Israeli folk are starting to open a .Net blog. My Israeli .Net blogger list on my blog home page is getting bigger and bigger. Just the other day I added Guy Sofer's blog to the list and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More Israeli bloggers! By Roy Osherove March 29, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published March 29, 2004; technical details may be outdated. Slowly but surely, more and more Israeli folk are starting to open a .Net blog. My Israeli .Net blogger list on my blog home page is getting bigger and bigger.  Just the other day I added [Guy Sofer's](http://weblogs.asp.net/guys) blog to the list and now I'm adding [Shmulik Primes](http://dotnetjunkies.com/WebLog/primess)' link as well. It's fun :) You have to understand, Israel is such a small place, all us Israelis might as well work for the same big company. No, we don't all know each other, but usually if we talk for 5 minutes it turns out we do , indirectly or even directly. If you are a .Net developer in Israel, even a beginner, and you want to start a blog here or anywhere and not sure where to start, [contact](http://weblogs.asp.net/rosherove/contact.aspx) me and I'll help you figure things out. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Apr 1, 2004 ### [Is TextAmerica good enough for a desktop contest?](https://osherove.com/blog/2004/4/1/is-textamerica-good-enough-for-a-desktop-contest.html) - Apr 1, 2004 ### [Israel slowly discovers RSS](https://osherove.com/blog/2004/4/1/israel-slowly-discovers-rss.html) - Mar 19, 2004 ### [Is sharing information in a blog wrong for your company? An ethical dilemma](https://osherove.com/blog/2004/3/19/is-sharing-information-in-a-blog-wrong-for-your-company-an-e.html) - Mar 13, 2004 ### [Why is RSS adoption so low? Here's why.](https://osherove.com/blog/2004/3/13/why-is-rss-adoption-so-low-heres-why.html) --- title: "Another day, another contest. Wanna help?" url: "https://osherove.com/blog/2004/3/28/another-day-another-contest-wanna-help.md" canonical: "https://osherove.com/blog/2004/3/28/another-day-another-contest-wanna-help.html" published: "2004-03-28T19:19:00" updated: "2004-03-28T19:19:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm thinking of doing another contest, something in the likes of the Desktop Screenshot contest that was held here last year(and sadly, all the shots were taken down). Do you know people who know people who can give…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another day, another contest. Wanna help? By Roy Osherove March 28, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 28, 2004; technical details may be outdated. I'm thinking of doing another contest, something in the likes of the Desktop Screenshot contest that was held here last year(and sadly, all the shots were taken down). Do you know people who know people who can give free swag as prizes? Would you be willing to give free hosting space for hosting the picture gallery/other things the contest might entail? Cool stuff that would be welcome: Tech Books(maybe [Amazon](https://osherove.com/blog/2004/3/28/www.amazon.com) vouchers?),software licenses, MSFT company store money(Scoble?), cool posters that you can't get for free and whatever else cool stuff you can think of. Contact me either through my [Contact](http://weblogs.asp.net/rosherove/contact.aspx) link, or as a comment for this post. Thanks! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 5, 2004 ### [Windows Media Player problem? here's a very good FAQ page](https://osherove.com/blog/2004/4/5/windows-media-player-problem-heres-a-very-good-faq-page.html) - Apr 2, 2004 ### [MVP Summit pointers, and a shout out to James Robertson](https://osherove.com/blog/2004/4/2/mvp-summit-pointers-and-a-shout-out-to-james-robertson.html) - Mar 28, 2004 ### [Some engineer jokes](https://osherove.com/blog/2004/3/28/some-engineer-jokes.html) - Mar 27, 2004 ### [Big Fish](https://osherove.com/blog/2004/3/27/big-fish.html) --- title: "Some engineer jokes" url: "https://osherove.com/blog/2004/3/28/some-engineer-jokes.md" canonical: "https://osherove.com/blog/2004/3/28/some-engineer-jokes.html" published: "2004-03-28T19:08:00" updated: "2004-03-28T19:08:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I really love engineer jokes. four three two one and finally zero" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some engineer jokes By Roy Osherove March 28, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 28, 2004; technical details may be outdated. I really love engineer jokes. [four](http://w-uh.com/posts/040327a-understanding_eng.html) [three](http://w-uh.com/posts/040325c-understanding_eng.html) [two](http://w-uh.com/posts/040324c-understanding_eng.html) [one](http://w-uh.com/posts/040323d-understanding_eng.html) and finally [zero](http://w-uh.com/posts/040322a-engineering_conve.html) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 2, 2004 ### [MVP Summit pointers, and a shout out to James Robertson](https://osherove.com/blog/2004/4/2/mvp-summit-pointers-and-a-shout-out-to-james-robertson.html) - Mar 28, 2004 ### [Another day, another contest. Wanna help?](https://osherove.com/blog/2004/3/28/another-day-another-contest-wanna-help.html) - Mar 27, 2004 ### [Big Fish](https://osherove.com/blog/2004/3/27/big-fish.html) - Mar 22, 2004 ### [New look for Technorati](https://osherove.com/blog/2004/3/22/new-look-for-technorati.html) --- title: "I think I found my book of the month" url: "https://osherove.com/blog/2004/3/28/i-think-i-found-my-book-of-the-month.md" canonical: "https://osherove.com/blog/2004/3/28/i-think-i-found-my-book-of-the-month.html" published: "2004-03-28T19:01:00" updated: "2004-03-28T19:01:00" tags: [".Net Original"] author: "Roy Osherove" description: "Looks like we have a winner for my next book of the month... Test Driven Development in Microsoft .Net by James W. Newkirk and Alexei A. Vorontsov That is, I'm planning to buy it. It seems to have lots of stuff I've…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I think I found my book of the month By Roy Osherove March 28, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 28, 2004; technical details may be outdated. Looks like we have a winner for my next book of the month... [**Test Driven Development in Microsoft .Net**](https://www.amazon.com/exec/obidos/ASIN/0735619484/iserializable-20) by James W. Newkirk and Alexei A. Vorontsov That is, I'm planning to buy it. It seems to have lots of stuff I've been craving for in printed form, such as testing databases, web services, multi threading issues and lots more. Anyone already got a chance to read it? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 29, 2004 ### [Very good contest news, and an apology to Mark Miller](https://osherove.com/blog/2004/3/29/very-good-contest-news-and-an-apology-to-mark-miller.html) - Mar 29, 2004 ### [A Biztalk 2004 riddle - Catching an exception from a web service](https://osherove.com/blog/2004/3/29/a-biztalk-2004-riddle-catching-an-exception-from-a-web-servi.html) - Mar 28, 2004 ### [Troubled comments in XML documents](https://osherove.com/blog/2004/3/28/troubled-comments-in-xml-documents.html) - Mar 27, 2004 ### [Israel .Net Architects user group meeting today :Service Oriented Architecture](https://osherove.com/blog/2004/3/27/israel-net-architects-user-group-meeting-today-service-orien.html) --- title: "Low defect rates are not a myth" url: "https://osherove.com/blog/2004/3/28/low-defect-rates-are-not-a-myth.md" canonical: "https://osherove.com/blog/2004/3/28/low-defect-rates-are-not-a-myth.html" published: "2004-03-28T17:40:00" updated: "2004-03-28T17:40:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Pretty amazing that some of the companies that are using XP practices to the bone are getting bug rates as low as a single defect a year , during 1-2 weeks release cycles.don't you think?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Low defect rates are not a myth By Roy Osherove March 28, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published March 28, 2004; technical details may be outdated. Pretty amazing that some of the companies that are using XP practices _to the bone_ are getting bug rates [as low as a single defect a year](http://martinfowler.com/bliki/VeryLowDefectProject.html), during 1-2 weeks release cycles.don't you think? ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 3, 2004 ### [DPack: Free enhancement Add-ins to VS.NET IDE](https://osherove.com/blog/2004/4/3/dpack-free-enhancement-add-ins-to-vsnet-ide.html) - Mar 30, 2004 ### [When Regular Expressions Attack](https://osherove.com/blog/2004/3/30/when-regular-expressions-attack.html) - Mar 27, 2004 ### [VS-Styler :Toggle and save your VS.Net font and color settings instantly](https://osherove.com/blog/2004/3/27/vs-styler-toggle-and-save-your-vsnet-font-and-color-settings.html) - Mar 27, 2004 ### [Very good intro article to Test Driven Development, but lots more needed](https://osherove.com/blog/2004/3/27/very-good-intro-article-to-test-driven-development-but-lots.html) --- title: "Troubled comments in XML documents" url: "https://osherove.com/blog/2004/3/28/troubled-comments-in-xml-documents.md" canonical: "https://osherove.com/blog/2004/3/28/troubled-comments-in-xml-documents.html" published: "2004-03-28T08:44:00" updated: "2004-03-28T08:44:00" tags: [".Net Original"] author: "Roy Osherove" description: "Note to self: a comment in an XML file must not contain string of this nature: '-------------' , or the XML file won't load into an XML Document object. Took me long enough to figure it out though... thanks Ohad." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Troubled comments in XML documents By Roy Osherove March 28, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 28, 2004; technical details may be outdated. Note to self: a comment in an XML file must **not** contain string of this nature: '-------------' , or the XML file won't load into an XML Document object. Took me long enough to figure it out though... thanks Ohad. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 29, 2004 ### [A Biztalk 2004 riddle - Catching an exception from a web service](https://osherove.com/blog/2004/3/29/a-biztalk-2004-riddle-catching-an-exception-from-a-web-servi.html) - Mar 28, 2004 ### [I think I found my book of the month](https://osherove.com/blog/2004/3/28/i-think-i-found-my-book-of-the-month.html) - Mar 27, 2004 ### [Israel .Net Architects user group meeting today :Service Oriented Architecture](https://osherove.com/blog/2004/3/27/israel-net-architects-user-group-meeting-today-service-orien.html) - Mar 27, 2004 ### [The problem with Multi-Cast Delegates](https://osherove.com/blog/2004/3/27/the-problem-with-multi-cast-delegates.html) --- title: "VS-Styler :Toggle and save your VS.Net font and color settings instantly" url: "https://osherove.com/blog/2004/3/27/vs-styler-toggle-and-save-your-vsnet-font-and-color-settings.md" canonical: "https://osherove.com/blog/2004/3/27/vs-styler-toggle-and-save-your-vsnet-font-and-color-settings.html" published: "2004-03-27T22:25:00" updated: "2004-03-27T22:25:00" tags: [".Net Quotations", "Cool Tools", "Tips & Tricks"] author: "Roy Osherove" description: "Jason Olson went ahead and ran with my idea of an IDE add-in that saved your font configuration to pass around, and made it much much better . I'll let him tell about it: Well, VSStyler is now ready for download. It is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VS-Styler :Toggle and save your VS.Net font and color settings instantly By Roy Osherove March 27, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published March 27, 2004; technical details may be outdated. [Jason Olson](http://geekswithblogs.net/jolson/) went ahead and ran with [my idea](http://weblogs.asp.net/rosherove/archive/2003/07/05/9722.aspx) of an IDE add-in that saved your font configuration to pass around, and [made it much much better](http://geekswithblogs.net/jolson/archive/2004/02/14/2124.aspx). I'll let him tell about it: _Well,_ [_VSStyler_](http://www.gotdotnet.com/Community/Workspaces/workspace.aspx?id=722d7817-b935-4faf-9bf7-fe3e84d463af) _is now ready for download. It is an add-in into Visual Studio .NET 2003 that allows you to save font and color settings into “styles”. This way, you can switch settings at the drop of a hat. I currently use this at work for a presentation/codeReview style and my regular programming style. It allows me to instantly change to either style I wish at anytime. I was hoping that we putting this out on the net, some of you might benefit from it, especially the presenters out there_ Very Cool! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 30, 2004 ### [When Regular Expressions Attack](https://osherove.com/blog/2004/3/30/when-regular-expressions-attack.html) - Mar 28, 2004 ### [Low defect rates are not a myth](https://osherove.com/blog/2004/3/28/low-defect-rates-are-not-a-myth.html) - Mar 27, 2004 ### [Very good intro article to Test Driven Development, but lots more needed](https://osherove.com/blog/2004/3/27/very-good-intro-article-to-test-driven-development-but-lots.html) - Mar 27, 2004 ### [SQL Server 2000 replication white paper](https://osherove.com/blog/2004/3/27/sql-server-2000-replication-white-paper.html) --- title: "A cool Selection Expansion macro" url: "https://osherove.com/blog/2004/3/27/a-cool-selection-expansion-macro.md" canonical: "https://osherove.com/blog/2004/3/27/a-cool-selection-expansion-macro.html" published: "2004-03-27T22:18:00" updated: "2004-03-27T22:18:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "David Scott decided he would really really like a feature that CodeRush has - Selection Expansion , where if you press a shortcut, the selection of text in the IDE expands into the next bigger logical block (”Single…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A cool Selection Expansion macro By Roy Osherove March 27, 2004 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published March 27, 2004; technical details may be outdated. [David Scott](http://www.idiotproof.org/DasBlog/default.aspx) decided he would really really like a feature that [CodeRush](http://www.eagle-software.com/coderush.htm) has - _Selection Expansion_, where if you press a shortcut, the selection of text in the IDE expands into the next bigger logical block (”Single line->Encapsulating if()block->whole method-> Whole class-> and so on...). [So he wrote a macro that does it and made it available for download](http://www.idiotproof.org/DasBlog/PermaLink.aspx?guid=84a07b84-6023-4b36-a9a6-641845d84459). Very cool. I wish he had a macro that does the opposite too though :) ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Apr 29, 2004 ### [Unblocking an attachment blocked by outlook](https://osherove.com/blog/2004/4/29/unblocking-an-attachment-blocked-by-outlook.html) - Mar 27, 2004 ### [VS-Styler :Toggle and save your VS.Net font and color settings instantly](https://osherove.com/blog/2004/3/27/vs-styler-toggle-and-save-your-vsnet-font-and-color-settings.html) - Feb 29, 2004 ### [Problem And Solution: "Login failes for some users on a DotNetNuke based portal"](https://osherove.com/blog/2004/2/29/problem-and-solution-quotlogin-failes-for-some-users-on-a-do.html) - Feb 6, 2004 ### [Doing Test Driven Development with no DLLs](https://osherove.com/blog/2004/2/6/doing-test-driven-development-with-no-dlls.html) --- title: "Israel .Net Architects user group meeting today :Service Oriented Architecture" url: "https://osherove.com/blog/2004/3/27/israel-net-architects-user-group-meeting-today-service-orien.md" canonical: "https://osherove.com/blog/2004/3/27/israel-net-architects-user-group-meeting-today-service-orien.html" published: "2004-03-27T22:06:00" updated: "2004-03-27T22:06:00" tags: [".Net Original"] author: "Roy Osherove" description: "The .Net Architects user group is meeting today (the 28th). The meeting will be about SOA (Service Oriented Architecture) and the speaker will be Udi Dahan . Hope to see you there! I know some people from Megen are…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel .Net Architects user group meeting today :Service Oriented Architecture By Roy Osherove March 27, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 27, 2004; technical details may be outdated. [The .Net Architects user group is meeting today](http://www.microsoft.com/israel/events/default.aspx?pageType=1&idType=1&id=28) (the 28th). The meeting will be about SOA (Service Oriented Architecture) and the speaker will be [Udi Dahan](http://www.thesoftwaresimplist.com/). Hope to see you there! I know some people from Megen are coming too. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 28, 2004 ### [I think I found my book of the month](https://osherove.com/blog/2004/3/28/i-think-i-found-my-book-of-the-month.html) - Mar 28, 2004 ### [Troubled comments in XML documents](https://osherove.com/blog/2004/3/28/troubled-comments-in-xml-documents.html) - Mar 27, 2004 ### [The problem with Multi-Cast Delegates](https://osherove.com/blog/2004/3/27/the-problem-with-multi-cast-delegates.html) - Mar 27, 2004 ### [Delegates & Events - A short Q&A](https://osherove.com/blog/2004/3/27/delegates-amp-events-a-short-qampa.html) --- title: "Very good intro article to Test Driven Development, but lots more needed" url: "https://osherove.com/blog/2004/3/27/very-good-intro-article-to-test-driven-development-but-lots.md" canonical: "https://osherove.com/blog/2004/3/27/very-good-intro-article-to-test-driven-development-but-lots.html" published: "2004-03-27T21:59:00" updated: "2004-03-27T21:59:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Just discovered this very good article that explains what Test Driven Development is all about and gives a good first glimpse and overview, including simple exercises to try yourself, on the whole matter. Very good read…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Very good intro article to Test Driven Development, but lots more needed By Roy Osherove March 27, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published March 27, 2004; technical details may be outdated. Just discovered this very good article that explains what Test Driven Development is all about and gives a good first glimpse and overview, including simple exercises to try yourself, on the whole matter. Very good read if you've heard the term “XP, Extreme programming,TDD and Test Driven Development” before but never really “got“ what the fuss is all about. [Test-Driven C#: Improve the Design and Flexibility of Your Project with Extreme Programming Techniques](http://msdn.microsoft.com/msdnmag/issues/04/04/ExtremeProgramming/) It's great to see this kind of stuff coming out of Microsoft for a change. No more will I be inclined to say “no you won't find out about XP on MSDN, it's sort of a bi-culture”. Good stuff. A few stuff I'd like to see coming out: - Doing TDD with databases - including all the crap you have to go through to get your test database ready and so on before all the tests run - Doing TDD with GIU - a-la MVC frameworks and so on - TDD and Mock Objects - TDD MOCs ("Microsoft Official Curriculum") and labs - guidelines on how to test stuff like Files,XML, and web - TDD and ASP.Net (NUnitASP?) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 28, 2004 ### [Low defect rates are not a myth](https://osherove.com/blog/2004/3/28/low-defect-rates-are-not-a-myth.html) - Mar 27, 2004 ### [VS-Styler :Toggle and save your VS.Net font and color settings instantly](https://osherove.com/blog/2004/3/27/vs-styler-toggle-and-save-your-vsnet-font-and-color-settings.html) - Mar 27, 2004 ### [SQL Server 2000 replication white paper](https://osherove.com/blog/2004/3/27/sql-server-2000-replication-white-paper.html) - Mar 21, 2004 ### [Article: Troubleshooting Stored Procedure Recompilation](https://osherove.com/blog/2004/3/21/article-troubleshooting-stored-procedure-recompilation.html) --- title: "The problem with Multi-Cast Delegates" url: "https://osherove.com/blog/2004/3/27/the-problem-with-multi-cast-delegates.md" canonical: "https://osherove.com/blog/2004/3/27/the-problem-with-multi-cast-delegates.html" published: "2004-03-27T20:01:00" updated: "2004-03-27T20:01:00" tags: [".Net Original"] author: "Roy Osherove" description: "Here’s a very interesting situation you can get yourself into when working with delegates: you have a delegate that returns a result. You use this delegate as part of your calculation. What happens when you have…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The problem with Multi-Cast Delegates By Roy Osherove March 27, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 27, 2004; technical details may be outdated. Here’s a very interesting situation you can get yourself into when working with delegates: you have a delegate that returns a result. You use this delegate as part of your calculation. What happens when you have multiple targets on the delegate, each returning a different result? _Here’s code that demonstrates this:_ **Class1** has a calculation delegate that receiv different result? Here’s  code that demonstrates this: Class1 has a calculation es 2 numbers and returns a result. It uses this delegate as part of some simple algorithm. The **MyClient** class attaches 2 different callbacks to the same delegate of **Class1**, each returning a different result. What will be the result when **MyClient** actually calls the **DoDelegateWork**() function on **Class1**? public delegate int CalculationDelegate(int num1,int num2); public class Class1 {       public CalculationDelegate DoCalculation;       public int DoDelegateWork()       {             if(DoCalculation!=null)             {                   int result\= DoCalculation(3,3);                   return result;             }             return 0;       } } public class MyClient { public void AttachToDelegate() { Class1 c = new Class1(); c.DoCalculation+=new CalculationDelegate(c\_DoCalculation); c.DoCalculation+=new CalculationDelegate(c\_DoCalculation2); } private int c\_DoCalculation(int num1, int num2) {       return num1\*num2; } private int c\_DoCalculation2(int num1, int num2) {       return num1+num2; } } The answer is that whatever target in the invocation list was invoked last will be used to return the actual result. All the other results are discarded. Pretty crazy. It’s pretty weird that we are actually able to do something like this in the framework, and that there is no simple way to avoid this predicament. (I stress, no **simple** way. We can just through a few hoops to make sure this does not happen, but there is no built in support construct that will deny this from happening. This effect is caused by the fact that all delegates are actually **Multicast** Delegates. (**PS**: this same code works just as well whether the delegate is declared as an event or not. Events were never meant to be used this way, but hey, it's good to know you can of you really need to in some twisted way!) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 28, 2004 ### [Troubled comments in XML documents](https://osherove.com/blog/2004/3/28/troubled-comments-in-xml-documents.html) - Mar 27, 2004 ### [Israel .Net Architects user group meeting today :Service Oriented Architecture](https://osherove.com/blog/2004/3/27/israel-net-architects-user-group-meeting-today-service-orien.html) - Mar 27, 2004 ### [Delegates & Events - A short Q&A](https://osherove.com/blog/2004/3/27/delegates-amp-events-a-short-qampa.html) - Mar 24, 2004 ### [The Regulator moves to SourceForge, slowly but surely](https://osherove.com/blog/2004/3/24/the-regulator-moves-to-sourceforge-slowly-but-surely.html) --- title: "Delegates & Events - A short Q&A" url: "https://osherove.com/blog/2004/3/27/delegates-amp-events-a-short-qampa.md" canonical: "https://osherove.com/blog/2004/3/27/delegates-amp-events-a-short-qampa.html" published: "2004-03-27T19:43:00" updated: "2004-03-27T19:43:00" tags: [".Net Original"] author: "Roy Osherove" description: "The other day I gave a presentation about Delegates & events to folks who were new to C#. I dawned on me that in fact, this subject is kind of confusing, and several questions arose from this presentation. Disclaimer :…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Delegates & Events - A short Q&A By Roy Osherove March 27, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 27, 2004; technical details may be outdated. The other day I gave a presentation about Delegates & events to folks who were new to C#. I dawned on me that in fact, this subject is kind of confusing, and several questions arose from this presentation. **Disclaimer**: this is intended to be read by people already familiar with the Delegates and Events syntax, and is mostly related to C# syntax, since VB.Net syntax is a little different (simpler) in some cases. **Q:  What’s the difference between a Delegate and a MultiCastDelegate?** A: There is no real difference. Every delegate is a MultiCastDelegate, but in order to be logically called a MultiCastDelegate, it has to have more than one target in its Invocation list (multiple targets==multiple cast). So, in essence, once you have created a delegate, you've created a MultiCastDelegate with an invocation list count of 1. **Q: What’s the difference between a delegate and an event?** A: I’ll divide the answer into 2 parts. **Syntax wise:** Here’s how one could define a delegate in a class: public class **Class1** { public delegate void DomSomethingDelegate(int num1,int num2); public DomSomethingDelegate MyDeleageteCallback; } And here’s how I would declare an event of this delegate: public class **Class2** { public delegate void DomSomethingDelegate(int num1,int num2); public **event** DomSomethingDelegate MyDeleageteCallback; } Notice that syntactically, the only difference is that I place an “event” keyword before the delegate variable declaration. That’s it. **So what’s the “event” keyword adding to this?** Well, to understand this, consider **Class1** in the code above. If I was using this class, as a client I could set it’s delegate variable like this: Class1 c = new Class1(); c.MyDeleageteCallback+=new Class1.DomSomethingDelegate(this.Calculate); This simple code **adds** a new target to the delegate’s invocation list, which is perfectly fine. In fact, this same code will word with **Class2**. no difference what so ever so far. But consider this code which, instead of **adding** a new target to the delegate’s Invocation list, simply **sets the delegate** to a new delegate: Class1 c = new Class1(); c.MyDeleageteCallback\=new Class1.DomSomethingDelegate(this.Calculate); This piece of code will work just fine with **class1**, but if we were to try to use it on **class2**, where there is the event keyword declared, we would get a compilation error. In essence, declaring the event keyword prevents any of the delegate’s users from setting it to null. Why is this important? Image that as a client I would add to the delegates invocation list a callback to one of my class’s functions. So would other clients. All is well and good. Now imagine that someone, instead of using the “+=”, is simply setting the delegate to a new callback by using simply “=”. They basically just threw the old delegate and its invocation list down the drain and created a whole new delegate with a single item in its invocation list. All the other clients will not receive their callbacks when the time comes. It is this kind of situation that having the  “event” keyword is aiming to solve. **In conclusion**: an _**event**_ declaration adds a layer of protection on the delegate instance. This protection prevents clients of the delegate from resetting the delegate and its invocation list, and only allows adding or removing targets from the invocation list. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 27, 2004 ### [Israel .Net Architects user group meeting today :Service Oriented Architecture](https://osherove.com/blog/2004/3/27/israel-net-architects-user-group-meeting-today-service-orien.html) - Mar 27, 2004 ### [The problem with Multi-Cast Delegates](https://osherove.com/blog/2004/3/27/the-problem-with-multi-cast-delegates.html) - Mar 24, 2004 ### [The Regulator moves to SourceForge, slowly but surely](https://osherove.com/blog/2004/3/24/the-regulator-moves-to-sourceforge-slowly-but-surely.html) - Mar 24, 2004 ### [How CodeRush pissed me off](https://osherove.com/blog/2004/3/24/how-coderush-pissed-me-off.html) --- title: "SQL Server 2000 replication white paper" url: "https://osherove.com/blog/2004/3/27/sql-server-2000-replication-white-paper.md" canonical: "https://osherove.com/blog/2004/3/27/sql-server-2000-replication-white-paper.html" published: "2004-03-27T19:03:00" updated: "2004-03-27T19:03:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "This white paper is especially helpful for users who are new to SQL Server 2000 replication. Instead of providing answers to the most common replication errors, this white paper: Introduces important replication…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SQL Server 2000 replication white paper By Roy Osherove March 27, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published March 27, 2004; technical details may be outdated. [This white paper](http://www.microsoft.com/downloads/details.aspx?FamilyID=bfb8baa9-60c1-490e-bd8f-c43c707720ac&DisplayLang=en) is especially helpful for users who are new to SQL Server 2000 replication. Instead of providing answers to the most common replication errors, this white paper: - Introduces important replication troubleshooting tools and troubleshooting methods. - Outlines the key facts about each replication agent, and lists the common areas that can cause problems. - Demonstrates how to apply those methods and logic in troubleshooting real replication problems. - Outlines the information that is stored in the major replication system tables. - Describes how to use stored procedures or Transact-SQL queries to obtain replication system information for troubleshooting. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 27, 2004 ### [VS-Styler :Toggle and save your VS.Net font and color settings instantly](https://osherove.com/blog/2004/3/27/vs-styler-toggle-and-save-your-vsnet-font-and-color-settings.html) - Mar 27, 2004 ### [Very good intro article to Test Driven Development, but lots more needed](https://osherove.com/blog/2004/3/27/very-good-intro-article-to-test-driven-development-but-lots.html) - Mar 21, 2004 ### [Article: Troubleshooting Stored Procedure Recompilation](https://osherove.com/blog/2004/3/21/article-troubleshooting-stored-procedure-recompilation.html) - Mar 19, 2004 ### [Searching Borland and MS newsgroups even if your firewall won't let you use a newsreader.](https://osherove.com/blog/2004/3/19/searching-borland-and-ms-newsgroups-even-if-your-firewall-wo.html) --- title: "Big Fish" url: "https://osherove.com/blog/2004/3/27/big-fish.md" canonical: "https://osherove.com/blog/2004/3/27/big-fish.html" published: "2004-03-27T18:33:00" updated: "2004-03-27T18:33:00" tags: ["Off Topic"] author: "Roy Osherove" description: "My wife and I went to see the movie “Big Fish” tonight. Boy, what a great movie. It seems that I'm always the one that ends up crying in the end, and my wife just sits there laughing at me for being such a sissy. Eh,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Big Fish By Roy Osherove March 27, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 27, 2004; technical details may be outdated. My wife and I went to see the movie “Big Fish” tonight. Boy, what a great movie. It seems that I'm always the one that ends up crying in the end, and my wife just sits there laughing at me for being such a sissy. Eh, who cares? Actually I do. It this sort of stuff that makes me not go with her to all those drama movies where everyone dies, or the foreighn movies where you see a women knitting all through the 90 minutes, only drop the needle at the end - which somehow is supposed to be the movies big finale. It's not that I don't care for these kinds of films, on the contrary. I care **too much**. I finish the movie like a cry baby and then spend all night thinking about it and dreaming about horrible stuff, while she sleeps like a baby. Well, count me in as one of those “action-fighiting-jackie chan kicking- matrix sniffins-X-men loving” freaks form now on. That way I can easily hide my quick-cry feature from those I care about. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 28, 2004 ### [Another day, another contest. Wanna help?](https://osherove.com/blog/2004/3/28/another-day-another-contest-wanna-help.html) - Mar 28, 2004 ### [Some engineer jokes](https://osherove.com/blog/2004/3/28/some-engineer-jokes.html) - Mar 22, 2004 ### [New look for Technorati](https://osherove.com/blog/2004/3/22/new-look-for-technorati.html) - Mar 20, 2004 ### [Stupid Query Analyzer tricks - a working analog clock](https://osherove.com/blog/2004/3/20/stupid-query-analyzer-tricks-a-working-analog-clock.html) --- title: "The Regulator moves to SourceForge, slowly but surely" url: "https://osherove.com/blog/2004/3/24/the-regulator-moves-to-sourceforge-slowly-but-surely.md" canonical: "https://osherove.com/blog/2004/3/24/the-regulator-moves-to-sourceforge-slowly-but-surely.html" published: "2004-03-24T21:17:00" updated: "2004-03-24T21:17:00" tags: [".Net Original"] author: "Roy Osherove" description: "Speaking of pissing me off , I uploaded The Regulator to SourceForge , and will, in the coming days be doing an effort to put up some kind of real page in there. Or maybe I should just point to my home machine again?…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator moves to SourceForge, slowly but surely By Roy Osherove March 24, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 24, 2004; technical details may be outdated. Speaking of [pissing me off](http://weblogs.asp.net/rosherove/archive/2004/03/25/95612.aspx), I uploaded [The Regulator](http://royo.is-a-geek.com/regulator) to [SourceForge](http://sourceforge.net/projects/regulator/), and will, in the coming days be doing an effort to put up some kind of real page in there. Or maybe I should just point to my home machine again? anyways, GotDotNet has been slow and unresponsive, and after they were down for hardware problems I decided I'd follow Dare obsanjo's quest for quality and move to SF. So far it looks very very good. You can already [download The Regulator with 1.1 support or 1.0 support](http://sourceforge.net/projects/regulator/) (simply a config file added in the latter that redirects to the 1.0 assemblies of the framework). ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 27, 2004 ### [The problem with Multi-Cast Delegates](https://osherove.com/blog/2004/3/27/the-problem-with-multi-cast-delegates.html) - Mar 27, 2004 ### [Delegates & Events - A short Q&A](https://osherove.com/blog/2004/3/27/delegates-amp-events-a-short-qampa.html) - Mar 24, 2004 ### [How CodeRush pissed me off](https://osherove.com/blog/2004/3/24/how-coderush-pissed-me-off.html) - Mar 22, 2004 ### [GotDotNet is friggin broken](https://osherove.com/blog/2004/3/22/gotdotnet-is-friggin-broken.html) --- title: "How CodeRush pissed me off" url: "https://osherove.com/blog/2004/3/24/how-coderush-pissed-me-off.md" canonical: "https://osherove.com/blog/2004/3/24/how-coderush-pissed-me-off.html" published: "2004-03-24T21:11:00" updated: "2004-03-24T21:11:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "CodeRush . What can I say? I may be a little less on the objective side, having used CodeSmart for the past several years, but any tool that claims they are the only tool to have a “code templates“ feature , either is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How CodeRush pissed me off By Roy Osherove March 24, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published March 24, 2004; technical details may be outdated. [CodeRush](http://www.devexpress.com/?section=/Products/NET/CodeRush). What can I say? I may be a little less on the objective side, having used [CodeSmart](http://www.axtools.com/products/cs2k3net_screenshots.htm) for the past several years, but any tool that claims [they are the only tool to have a “code templates“ feature](http://www.devexpress.com/?section=/products/net/coderush/Templates), either is lying or have no idea what is in the market. Hell, CodeSmart have had this functionality for at least 3 years that I know of, even back in the VB6 days. It actually offends me as a developer that CodeSmart isn't even on their list of [competitive features table](http://www.devexpress.com/?section=/products/net/coderush/FeatureComparision). Heck, you have [Resharper](http://www.jetbrains.com/resharper/) there, but that's not even out of Alpha version, and you have [Visual Assist](http://www.wholetomato.com/x/index.html), which , to my mind, has been (for other than C++ dev) almost non existent in features, but where the heck is [CodeSmart](http://www.axtools.com/products/cs2k3net_screenshots.htm)? It's almost as if they are avoiding it on purpose. _are you_? _**Disclaimer**: I do not work for [AXTools](https://osherove.com/blog/2004/3/24/www.axtools.com), maker of CodeSmart, I'm just a huge fan of their software and have been using it for a long time. As a happy customer, I always show it to people and they love it. Remarkably, its still not very well known._ Anyway, here's my list of “real world” comparison features with [CodeRush](http://www.devexpress.com/?section=/Products/NET/CodeRush) and [CodeSmart](http://www.axtools.com/products/cs2k3net_screenshots.htm). The 4 most important things I use with CodeSmart are: 1. **AutoText** - CodeRush has this and it's called “Templates“ CodeRush does a slightly better job of templates, because you have active field markers in the expanded text that you can change easily after the expansion actually occurs. I'd love to see this in CodeSmart, but it's not heartbreaking. 2\. **Consolidated project view + Class view** - CodeRush has nothing like this 3\. **Extended find & replace** \- CodeRush aint even close. 4. **Code builders** \- Same as above As for CodeRushe's features: Most of them are eye-candy, and are just as useful as they sound. Nice to have, nothing more.  - **Markers**,i.e. “better bookmarks”. OK. what else? \- **selection expansion** - I like it. would like to see it in CodeSmart. saves time. \- **Quick** **\- nav**: already have a quick solution for this, and it's free: [QuickJump](http://www.codeproject.com/dotnet/quickjump_net.asp) \- **Spell checking**: got it in CS \- **Flow evaluation**: don't have it, nice to have but not earth shattering \- **live error highlighting**: I'd like this a lot! \- **Smart cut/copy**: sorta have it already. I wonder just how many people use this. \- **Duplicate line**: erm.. macros? hear of those? \-**Add-in extensibility**: coolness. I wants it. Now, [take a frigging look at CodeSmart's features](http://www.axtools.com/products/cs2k3net_screenshots.htm) and tell me it does not have better features. Really. I can see why there was no comparison to CS in the chart. I can live with “_We provide other features, but not these right now_” but ignoring the competition as if they don't exist is an insult to my intelligence. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 27, 2004 ### [Delegates & Events - A short Q&A](https://osherove.com/blog/2004/3/27/delegates-amp-events-a-short-qampa.html) - Mar 24, 2004 ### [The Regulator moves to SourceForge, slowly but surely](https://osherove.com/blog/2004/3/24/the-regulator-moves-to-sourceforge-slowly-but-surely.html) - Mar 22, 2004 ### [GotDotNet is friggin broken](https://osherove.com/blog/2004/3/22/gotdotnet-is-friggin-broken.html) - Mar 22, 2004 ### [Download Slides & code from my Regex and Plugins presentation](https://osherove.com/blog/2004/3/22/download-slides-amp-code-from-my-regex-and-plugins-presentat.html) --- title: "New look for Technorati" url: "https://osherove.com/blog/2004/3/22/new-look-for-technorati.md" canonical: "https://osherove.com/blog/2004/3/22/new-look-for-technorati.html" published: "2004-03-22T16:31:00" updated: "2004-03-22T16:31:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Oooh. Technorati got a new slick look: www.technorati.com Very nice. Maybe now they'll also be a little more stable?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New look for Technorati By Roy Osherove March 22, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 22, 2004; technical details may be outdated. Oooh. Technorati got a new slick look: [www.technorati.com](http://www.technorati.com/) Very nice. Maybe now they'll also be a little more stable? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 28, 2004 ### [Some engineer jokes](https://osherove.com/blog/2004/3/28/some-engineer-jokes.html) - Mar 27, 2004 ### [Big Fish](https://osherove.com/blog/2004/3/27/big-fish.html) - Mar 20, 2004 ### [Stupid Query Analyzer tricks - a working analog clock](https://osherove.com/blog/2004/3/20/stupid-query-analyzer-tricks-a-working-analog-clock.html) - Mar 20, 2004 ### [Please rewind](https://osherove.com/blog/2004/3/20/please-rewind.html) --- title: "GotDotNet is friggin broken" url: "https://osherove.com/blog/2004/3/22/gotdotnet-is-friggin-broken.md" canonical: "https://osherove.com/blog/2004/3/22/gotdotnet-is-friggin-broken.html" published: "2004-03-22T15:20:00" updated: "2004-03-22T15:20:00" tags: [".Net Original"] author: "Roy Osherove" description: "What the hell is wrong with GotDotNet? My Regulator workspace is breaking for some reason! bleh :( Any got any data on this?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # GotDotNet is friggin broken By Roy Osherove March 22, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 22, 2004; technical details may be outdated. What the hell is wrong with GotDotNet? [My Regulator workspace](http://www.gotdotnet.com/Community/Workspaces/Workspace.aspx?id=24289454-7ec7-45b6-82ae-f6a636dc5fea) is breaking for some reason! bleh :( Any got any data on this? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 24, 2004 ### [The Regulator moves to SourceForge, slowly but surely](https://osherove.com/blog/2004/3/24/the-regulator-moves-to-sourceforge-slowly-but-surely.html) - Mar 24, 2004 ### [How CodeRush pissed me off](https://osherove.com/blog/2004/3/24/how-coderush-pissed-me-off.html) - Mar 22, 2004 ### [Download Slides & code from my Regex and Plugins presentation](https://osherove.com/blog/2004/3/22/download-slides-amp-code-from-my-regex-and-plugins-presentat.html) - Mar 19, 2004 ### [Test Driven Development enters mainstream following MSDN Magazine article](https://osherove.com/blog/2004/3/19/test-driven-development-enters-mainstream-following-msdn-mag.html) --- title: "Download Slides & code from my Regex and Plugins presentation" url: "https://osherove.com/blog/2004/3/22/download-slides-amp-code-from-my-regex-and-plugins-presentat.md" canonical: "https://osherove.com/blog/2004/3/22/download-slides-amp-code-from-my-regex-and-plugins-presentat.html" published: "2004-03-22T14:05:00" updated: "2004-03-22T14:05:00" tags: [".Net Original"] author: "Roy Osherove" description: "Download it all from this location . Note: 380k, but a pretty slow download (it's my home machine and my upload rate is.. less than good). As a basis for my Regex presentation, I used this presentation by Steve Heckler…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Download Slides & code from my Regex and Plugins presentation By Roy Osherove March 22, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 22, 2004; technical details may be outdated. Download it all from [this location](http://royo.is-a-geek.com/ISerializable/admin/Portal/LinkClick.aspx?tabid=1&table=Links&field=ItemID&id=52&link=RegexAndPluginsPPT.zip). Note: 380k, but a pretty slow download (it's my home machine and my upload rate is.. less than good). As a basis for my Regex presentation, I used this presentation by Steve Heckler from [Accelebrate](http://www.accelebrate.com/), and added to it some of my own musings. Accelebrate is a provider of on-site [ASP.NET training](http://www.accelebrate.com/asp.net/), [VB.NET training](http://www.accelebrate.com/vb.net/), and [C# training](http://www.accelebrate.com/csharp/). ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 24, 2004 ### [How CodeRush pissed me off](https://osherove.com/blog/2004/3/24/how-coderush-pissed-me-off.html) - Mar 22, 2004 ### [GotDotNet is friggin broken](https://osherove.com/blog/2004/3/22/gotdotnet-is-friggin-broken.html) - Mar 19, 2004 ### [Test Driven Development enters mainstream following MSDN Magazine article](https://osherove.com/blog/2004/3/19/test-driven-development-enters-mainstream-following-msdn-mag.html) - Mar 19, 2004 ### [Running The Regulator on .Net 1.0](https://osherove.com/blog/2004/3/19/running-the-regulator-on-net-10.html) --- title: "Article: Troubleshooting Stored Procedure Recompilation" url: "https://osherove.com/blog/2004/3/21/article-troubleshooting-stored-procedure-recompilation.md" canonical: "https://osherove.com/blog/2004/3/21/article-troubleshooting-stored-procedure-recompilation.html" published: "2004-03-21T14:03:00" updated: "2004-03-21T14:03:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Josh posted about recompilation problems he had when using #temp tables in his sprocs. He then got a great comment from Roman referring to this article : Troubleshooting Stored Procedure Recompilation One more little…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Article: Troubleshooting Stored Procedure Recompilation By Roy Osherove March 21, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published March 21, 2004; technical details may be outdated. [Josh posted about recompilation problems](http://sqljunkies.com/WebLog/JoshCrosby/archive/2004/03/19/1687.aspx) he had when using #temp tables in his sprocs. He then got a great comment from Roman referring to this article : [Troubleshooting Stored Procedure Recompilation](http://support.microsoft.com/default.aspx?scid=kb;en-us;243586) One more little tidbit: You don't have to DROP temp tables at the end of the sproc. They will be dropped automatically when the sproc finishes. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 27, 2004 ### [Very good intro article to Test Driven Development, but lots more needed](https://osherove.com/blog/2004/3/27/very-good-intro-article-to-test-driven-development-but-lots.html) - Mar 27, 2004 ### [SQL Server 2000 replication white paper](https://osherove.com/blog/2004/3/27/sql-server-2000-replication-white-paper.html) - Mar 19, 2004 ### [Searching Borland and MS newsgroups even if your firewall won't let you use a newsreader.](https://osherove.com/blog/2004/3/19/searching-borland-and-ms-newsgroups-even-if-your-firewall-wo.html) - Mar 18, 2004 ### [Good DPAPI helper and Matt Griffith's awesome .NET Utilities DLL and more](https://osherove.com/blog/2004/3/18/good-dpapi-helper-and-matt-griffiths-awesome-net-utilities-d.html) --- title: "Stupid Query Analyzer tricks - a working analog clock" url: "https://osherove.com/blog/2004/3/20/stupid-query-analyzer-tricks-a-working-analog-clock.md" canonical: "https://osherove.com/blog/2004/3/20/stupid-query-analyzer-tricks-a-working-analog-clock.html" published: "2004-03-20T14:11:00" updated: "2004-03-20T14:11:00" tags: ["Off Topic"] author: "Roy Osherove" description: "yep. Some people have too much time on their hands" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Stupid Query Analyzer tricks - a working analog clock By Roy Osherove March 20, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 20, 2004; technical details may be outdated. yep. [Some people have too much time on their hands](http://weblogs.sqlteam.com/tarad/archive/2004/03/15/1060.aspx) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 27, 2004 ### [Big Fish](https://osherove.com/blog/2004/3/27/big-fish.html) - Mar 22, 2004 ### [New look for Technorati](https://osherove.com/blog/2004/3/22/new-look-for-technorati.html) - Mar 20, 2004 ### [Please rewind](https://osherove.com/blog/2004/3/20/please-rewind.html) - Mar 19, 2004 ### [Falafel Bloggers?](https://osherove.com/blog/2004/3/19/falafel-bloggers.html) --- title: "Please rewind" url: "https://osherove.com/blog/2004/3/20/please-rewind.md" canonical: "https://osherove.com/blog/2004/3/20/please-rewind.html" published: "2004-03-20T00:04:00" updated: "2004-03-20T00:04:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Sure, this picture looks innocent enough, until you realize this was found on a DVD movie !" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Please rewind By Roy Osherove March 20, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 20, 2004; technical details may be outdated. ![](https://osherove.com/img/wb/479c026a_www.goodexperience.com_broken_i_04_03_thecube-t.jpg)  Sure, this picture looks innocent enough, until you realize this was found [on a DVD movie](http://broken.typepad.com/b/2004/03/rewind_dvd_labe.html)! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 22, 2004 ### [New look for Technorati](https://osherove.com/blog/2004/3/22/new-look-for-technorati.html) - Mar 20, 2004 ### [Stupid Query Analyzer tricks - a working analog clock](https://osherove.com/blog/2004/3/20/stupid-query-analyzer-tricks-a-working-analog-clock.html) - Mar 19, 2004 ### [Falafel Bloggers?](https://osherove.com/blog/2004/3/19/falafel-bloggers.html) - Mar 18, 2004 ### [Real Geeks](https://osherove.com/blog/2004/3/18/real-geeks.html) --- title: "Test Driven Development enters mainstream following MSDN Magazine article" url: "https://osherove.com/blog/2004/3/19/test-driven-development-enters-mainstream-following-msdn-mag.md" canonical: "https://osherove.com/blog/2004/3/19/test-driven-development-enters-mainstream-following-msdn-mag.html" published: "2004-03-19T23:55:00" updated: "2004-03-19T23:55:00" tags: [".Net Original"] author: "Roy Osherove" description: "Now, that MSDN Magazine itself has a full article proclaiming that Test-driven development (TDD) should be on every developer's radar screen , I can certainly say It's about friggin' time this became mainstream…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Test Driven Development enters mainstream following MSDN Magazine article By Roy Osherove March 19, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 19, 2004; technical details may be outdated. Now, that [MSDN Magazine itself has a full article proclaiming that Test-driven development (TDD) should be on every developer's radar screen](http://msdn.microsoft.com/msdnmag/issues/04/04/ExtremeProgramming/) , I can certainly say **It's about friggin' time this became mainstream knowledge**. The amount of people that have actually done Test Driven projects in Israel I would guess to be almost none. Hell, a wild guess would be maybe five or ten people. Seriously. The amount of people who are starting to hear about it is rising, but we're still far far away from TDD, or any of the XP ways having a hold strong enough to warrant something as far fetched as an **agile user group**. Maybe now people will start to get the message. I've also read somewhere that Kent Beck, of of the XP forefathers has joined the MS testing team. Great news. I hope to see more agile content coming out of Microsoft in the coming future. God knows we all need it, because it ain't really there until MS says it is. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 22, 2004 ### [GotDotNet is friggin broken](https://osherove.com/blog/2004/3/22/gotdotnet-is-friggin-broken.html) - Mar 22, 2004 ### [Download Slides & code from my Regex and Plugins presentation](https://osherove.com/blog/2004/3/22/download-slides-amp-code-from-my-regex-and-plugins-presentat.html) - Mar 19, 2004 ### [Running The Regulator on .Net 1.0](https://osherove.com/blog/2004/3/19/running-the-regulator-on-net-10.html) - Mar 18, 2004 ### [The amazing CLR runtime re-appearing trick](https://osherove.com/blog/2004/3/18/the-amazing-clr-runtime-re-appearing-trick.html) --- title: "Searching Borland and MS newsgroups even if your firewall won't let you use a newsreader." url: "https://osherove.com/blog/2004/3/19/searching-borland-and-ms-newsgroups-even-if-your-firewall-wo.md" canonical: "https://osherove.com/blog/2004/3/19/searching-borland-and-ms-newsgroups-even-if-your-firewall-wo.html" published: "2004-03-19T23:43:00" updated: "2004-03-19T23:43:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Huh. Already found something useful at Falafel Blogs: If you're like me and working at a client site that does not allow access to news readers from behind their firewall, you should take a look at:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Searching Borland and MS newsgroups even if your firewall won't let you use a newsreader. By Roy Osherove March 19, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published March 19, 2004; technical details may be outdated. Huh. Already found something useful at Falafel Blogs:

If you're like me and working at a client site that does not allow  access to news readers from behind their firewall, you should take a look at:

http://www.tamaracka.com

This a really cool site for searching through newsgroups. You limit your search to MS or Borland newsgroups and can filter to a specific newsgroup using the "^" character like s "^csharp localization" Be sure to look at the "Advanced search" links, my choice is to get the results organized by "Thread".

\[[Gary Campbell](http://falafelsoft.com/Flogs/gary/archive/2004/03/16/158.aspx)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 27, 2004 ### [SQL Server 2000 replication white paper](https://osherove.com/blog/2004/3/27/sql-server-2000-replication-white-paper.html) - Mar 21, 2004 ### [Article: Troubleshooting Stored Procedure Recompilation](https://osherove.com/blog/2004/3/21/article-troubleshooting-stored-procedure-recompilation.html) - Mar 18, 2004 ### [Good DPAPI helper and Matt Griffith's awesome .NET Utilities DLL and more](https://osherove.com/blog/2004/3/18/good-dpapi-helper-and-matt-griffiths-awesome-net-utilities-d.html) - Mar 18, 2004 ### [A New Paradigm: "Continuations"?](https://osherove.com/blog/2004/3/18/a-new-paradigm-quotcontinuationsquot.html) --- title: "Falafel Bloggers?" url: "https://osherove.com/blog/2004/3/19/falafel-bloggers.md" canonical: "https://osherove.com/blog/2004/3/19/falafel-bloggers.html" published: "2004-03-19T23:27:00" updated: "2004-03-19T23:27:00" tags: ["Off Topic"] author: "Roy Osherove" description: "As an Israeli, this appeals to me, although I have no idea what these guys have to do with this food product: Falafel Software and get this, they have Falafel Bloggers , only they call it “ Flogging ” instead of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Falafel Bloggers? By Roy Osherove March 19, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 19, 2004; technical details may be outdated. As an Israeli, this appeals to me, although I have no idea what these guys have to do with this food product: [Falafel Software](http://www.falafelsoft.com/) and get this, they have [Falafel Bloggers](http://www.falafelsoft.com/flogs/default.aspx), only they call it “[Flogging](http://www.falafelsoft.com/flogs/default.aspx)” instead of “Blogging. Go figure. One last funny bit: they have a “[Falafel at the movies](http://www.falafelsoft.com/Videos.aspx)” section.It just sounds so funny to me. ~But hey, they're not even about .Net, they're about Java, or so it looks.~ Oh they're blogs are waaay into .Net, and Java, and Delphi, and other stuff (link via [Allen](http://homepages.borland.com/abauer/archives/2004_03_14_archive.php#107954143918343754)) On more thought, you know, this is really cool. Hey, maybe we can create a “Magen Blogs” too? Hmmm..... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 20, 2004 ### [Stupid Query Analyzer tricks - a working analog clock](https://osherove.com/blog/2004/3/20/stupid-query-analyzer-tricks-a-working-analog-clock.html) - Mar 20, 2004 ### [Please rewind](https://osherove.com/blog/2004/3/20/please-rewind.html) - Mar 18, 2004 ### [Real Geeks](https://osherove.com/blog/2004/3/18/real-geeks.html) - Mar 18, 2004 ### [TP?](https://osherove.com/blog/2004/3/18/tp.html) --- title: "Is sharing information in a blog wrong for your company? An ethical dilemma" url: "https://osherove.com/blog/2004/3/19/is-sharing-information-in-a-blog-wrong-for-your-company-an-e.md" canonical: "https://osherove.com/blog/2004/3/19/is-sharing-information-in-a-blog-wrong-for-your-company-an-e.html" published: "2004-03-19T10:31:00" updated: "2004-03-19T10:31:00" tags: ["Blogging"] author: "Roy Osherove" description: "Guy is a new blogger, and he just posted a very deep and complex question : “I think most of us sign a confidential agreement before we start to work for our employer,in which we are obligated to keep any knowledge…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Is sharing information in a blog wrong for your company? An ethical dilemma By Roy Osherove March 19, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published March 19, 2004; technical details may be outdated. [Guy](http://weblogs.asp.net/guyS/) is a new blogger, and he just posted a [very deep and complex question](http://weblogs.asp.net/guyS/archive/2004/03/19/92520.aspx): _“I think most of us sign a confidential agreement before we start to work for our employer,in which we are obligated to keep any knowledge (sometimes it's called opinions) we get during our daily work private._ _For example - you find a great tip while working with one of the ASP.NET controls at your work office. Can u share it with other? Is it absolutely right to do so? After you find this amazing tip you have changed your opinion on this control - can you share it with other?_ _Another example - you found a great web site after 1.5 hours of searching in the net at your work office. Then you browse in the site content for another 1.5 hour and read its articles which you find helpful (again - in your work office). Can you share it with other?”_ This is indeed a deep and tough question. I can't say I have'nt thought about it myself. I guess it all comes down to some simple rules: - Is what you are about to write confidential or NDA? - Is the information you are about to publish about to hurt the company you are working for(financially, losing a customer) - Do you have pieces of actual code developed inside the company that are not already public property? If the answer is yes to one of these, you might have a problem. If not, share with others. But tell him about it first (not every time, just that you intend to blog about tech stuff) You boss benefits from your blog many times over when you post good technical content: - It's great publicity - you reflect on your company (if you affiliate with it) and if you look good your company looks great - You become a source of information - and the next time someone has a problem, your company will be a source of solution (or at least in the minds of people) - The networking aspect of blogging - this is social software at its best, is the greatest benefit of all. I can't tell you the amount of people that I've gotten to know from this blog, and just how safe I feel even if I encounter the toughest problems. Let's face it, the technical blogging scene is like a technical mafia - if you're part of it, you're never alone. If you have a problem, you can be sure someone out there can help you fix it, and you will do exactly the same for others when asked. - Now take that last point, and ask your boss what he would pay for an employee with enormous resources of information at his fingertips. - The thing is - the more you blog, the better you get, the better your company gets for hiring you, the more you share the more information you get back, the more credibility you get the bigger the network you are part of = it is all a big circle of information, and a company should be thankful they have employees as part of this network. - If your boss thinks they have enough information inside the company that the outside world does not count, he is wrong. Look at the information scene today. Do you know how many times in the past months I've search for information only to find most of it somewhere in blogs? Imagine if everyone felt the same way. There would be far less blogs, and far less information, and everyone would benefit less from it. Right now, everyone wins. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Apr 1, 2004 ### [Israel slowly discovers RSS](https://osherove.com/blog/2004/4/1/israel-slowly-discovers-rss.html) - Mar 29, 2004 ### [More Israeli bloggers!](https://osherove.com/blog/2004/3/29/more-israeli-bloggers.html) - Mar 13, 2004 ### [Why is RSS adoption so low? Here's why.](https://osherove.com/blog/2004/3/13/why-is-rss-adoption-so-low-heres-why.html) - Mar 11, 2004 ### [1001 posts](https://osherove.com/blog/2004/3/11/1001-posts.html) --- title: "Running The Regulator on .Net 1.0" url: "https://osherove.com/blog/2004/3/19/running-the-regulator-on-net-10.md" canonical: "https://osherove.com/blog/2004/3/19/running-the-regulator-on-net-10.html" published: "2004-03-19T09:07:00" updated: "2004-03-19T09:07:00" tags: [".Net Original"] author: "Roy Osherove" description: "Up until now, The Regulator could only run on .Net 1.1. Now you can run it against .Net 1.0 using this config file: http://royo.is-a-geek.com/regulator.exe.zip just put it in along with the regulator.exe file and run. I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Running The Regulator on .Net 1.0 By Roy Osherove March 19, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 19, 2004; technical details may be outdated. Up until now, The Regulator could only run on .Net 1.1. Now you can run it against .Net 1.0 using this config file: [http://royo.is-a-geek.com/regulator.exe.zip](http://royo.is-a-geek.com/regulator.exe.zip) just put it in along with the regulator.exe file and run. I took the config settings from [Jeff Key's Snippet Compiler config file](http://www.sliver.com/dotnet/SnippetCompiler/), since he was having the same problem with his users. So, thanks Jeff. The config file actually redirects all the main .Net assemblies in v1.1 to word on the v1.0 Assemblies. Pretty cool. If you want to learn more about how this works, you can check out this cool article from early & adopter about running the two frameworks side by side, and redirecting between them: [Early & Adopter on: Running Multiple Versions of the Framework Side-by-Side](http://www.3leaf.com/resources/articles/sbs.aspx) It's really quite a funny article, but lots of great info. Recommended. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 22, 2004 ### [Download Slides & code from my Regex and Plugins presentation](https://osherove.com/blog/2004/3/22/download-slides-amp-code-from-my-regex-and-plugins-presentat.html) - Mar 19, 2004 ### [Test Driven Development enters mainstream following MSDN Magazine article](https://osherove.com/blog/2004/3/19/test-driven-development-enters-mainstream-following-msdn-mag.html) - Mar 18, 2004 ### [The amazing CLR runtime re-appearing trick](https://osherove.com/blog/2004/3/18/the-amazing-clr-runtime-re-appearing-trick.html) - Mar 18, 2004 ### [DevDays grab-bag should be improved](https://osherove.com/blog/2004/3/18/devdays-grab-bag-should-be-improved.html) --- title: "The amazing CLR runtime re-appearing trick" url: "https://osherove.com/blog/2004/3/18/the-amazing-clr-runtime-re-appearing-trick.md" canonical: "https://osherove.com/blog/2004/3/18/the-amazing-clr-runtime-re-appearing-trick.html" published: "2004-03-18T21:16:00" updated: "2004-03-18T21:16:00" tags: [".Net Original"] author: "Roy Osherove" description: "[ Update : Joseph cooney alerted me to the fact that this is probably cause by Windows File Protection , and he was totally right. Coolness! Here's a very good article about this subject.] Here's a CLR party trick for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The amazing CLR runtime re-appearing trick By Roy Osherove March 18, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 18, 2004; technical details may be outdated. _\[**Update**: [Joseph cooney](http://www.dotnetjunkies.com/weblog/JosephCooney/) alerted me to the fact that this is probably cause by **Windows File Protection**, and he was totally right. Coolness!_ [_Here's a very good article_](http://www.techspot.com/tweaks/wfp/index.shtml) _about this subject.\]_ Here's a CLR party trick for you: - if you have .Net 1.1 installed on your machine - Go to the location of your mscorlib.dll file (usually c:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\mscorlib.dll) - **Rename or move** mscorlib.dll to some place where it will not be found - Try to run a program that uses .net 1.1 - **Your app will load and work just fine** - Look at the original location of the file you just renamed/moved - Automagically - mscorlib.dll will be there, as if you never touched it, restored by some unknown force in the matrix. Note: this only works for the .Net 1.1 runtime. Try the same stunt with mscorlib.dll version 1.0 and your app won't load. I do wonder what is the process behind this. Anyone have any clue? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 19, 2004 ### [Test Driven Development enters mainstream following MSDN Magazine article](https://osherove.com/blog/2004/3/19/test-driven-development-enters-mainstream-following-msdn-mag.html) - Mar 19, 2004 ### [Running The Regulator on .Net 1.0](https://osherove.com/blog/2004/3/19/running-the-regulator-on-net-10.html) - Mar 18, 2004 ### [DevDays grab-bag should be improved](https://osherove.com/blog/2004/3/18/devdays-grab-bag-should-be-improved.html) - Mar 18, 2004 ### [RegexLib's web service pays off big time.](https://osherove.com/blog/2004/3/18/regexlibs-web-service-pays-off-big-time.html) --- title: "Good DPAPI helper and Matt Griffith's awesome .NET Utilities DLL and more" url: "https://osherove.com/blog/2004/3/18/good-dpapi-helper-and-matt-griffiths-awesome-net-utilities-d.md" canonical: "https://osherove.com/blog/2004/3/18/good-dpapi-helper-and-matt-griffiths-awesome-net-utilities-d.html" published: "2004-03-18T16:10:00" updated: "2004-03-18T16:10:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Wow. Carl Franklin Finally posts about something other than .Net rocks , and starts with a bang. He extracted the DPAPI(Data protection API - for encryption) helper class that was given ant MS DevDays 2004 as part of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good DPAPI helper and Matt Griffith's awesome .NET Utilities DLL and more By Roy Osherove March 18, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published March 18, 2004; technical details may be outdated. Wow. [Carl Franklin Finally posts about something other than .Net rocks](http://weblogs.asp.net/CFranklin/archive/2004/03/18/91746.aspx), and starts with a bang. He extracted the DPAPI(Data protection API - for encryption) helper class that was given ant MS DevDays 2004 as part of the IssueVision sample (which apparently MS Israel has not heard of yet!) and put it into a helper DLL of encrypting and decrypting strings easily. very cool. He also linked to Matt's helper DLL for .Net, which includes many cool stuff that may come in real handy at lots of situations. Couple this with a great comment to that post which includes 2 more useful links, and you can start seeing the power of weblogs: - [DPAPI helper source code and test harness](http://www.franklins.net/dotnet/) - [Matt Griffith's awesome .NET Utilities DLL](http://mattgriffith.net/stories/2002/07/07/mattGriffithsnetUtilitiesClassLibrary.html) - [Crypto for everyone](http://weblogs.asp.net/hernandl/archive/2004/03/08/85884.aspx) \- a full cryptography suite - [SSL TCP library](http://www.mentalis.org/soft/projects/seclib/) \-  enables seamless SSL socket level transmission Coolness. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 21, 2004 ### [Article: Troubleshooting Stored Procedure Recompilation](https://osherove.com/blog/2004/3/21/article-troubleshooting-stored-procedure-recompilation.html) - Mar 19, 2004 ### [Searching Borland and MS newsgroups even if your firewall won't let you use a newsreader.](https://osherove.com/blog/2004/3/19/searching-borland-and-ms-newsgroups-even-if-your-firewall-wo.html) - Mar 18, 2004 ### [A New Paradigm: "Continuations"?](https://osherove.com/blog/2004/3/18/a-new-paradigm-quotcontinuationsquot.html) - Mar 18, 2004 ### [Important Developer Implications: Windows XP Service Pack 2](https://osherove.com/blog/2004/3/18/important-developer-implications-windows-xp-service-pack-2.html) --- title: "Real Geeks" url: "https://osherove.com/blog/2004/3/18/real-geeks.md" canonical: "https://osherove.com/blog/2004/3/18/real-geeks.html" published: "2004-03-18T15:45:00" updated: "2004-03-18T15:45:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I love how Matt Warren describes the hunger for code. I feel it too. But I could never write it out as good as he just did . Still, Here;s a very cool comment on that post that I had to post: Denise Reis Oh yes, I knew…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Real Geeks By Roy Osherove March 18, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 18, 2004; technical details may be outdated. I love how Matt Warren describes the hunger for code. I feel it too. But I could never write it out [as good as he just did](http://weblogs.asp.net/mattwar/archive/2004/03/18/91749.aspx). Still, Here;s a very cool comment on that post that I had to post: _Denise Reis_ _Oh yes, I knew this already! I pray for the day my husband comes up from the cold, dark, stinky basement and asks for a beer and plops down in front of the TV to watch the Packers play. Heck I'd settle for a white wine spritzer and figure skating at this point! I sit with a smile on my face nodding as I listen to him excitedly rant about .Net and how he got a (whatever you call it) down to .003 seconds from its previous 3.8! I hug him and tell him I'm proud of him and he can do anything because I know that one day, that idea that's clawing and chewing its way out of his brain will make it out! Yep, I love that coder of mine!_ Heh. The situation is very familiar :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 20, 2004 ### [Please rewind](https://osherove.com/blog/2004/3/20/please-rewind.html) - Mar 19, 2004 ### [Falafel Bloggers?](https://osherove.com/blog/2004/3/19/falafel-bloggers.html) - Mar 18, 2004 ### [TP?](https://osherove.com/blog/2004/3/18/tp.html) - Mar 17, 2004 ### [Me? rip to shreds?](https://osherove.com/blog/2004/3/17/me-rip-to-shreds.html) --- title: "A New Paradigm: \"Continuations\"?" url: "https://osherove.com/blog/2004/3/18/a-new-paradigm-quotcontinuationsquot.md" canonical: "https://osherove.com/blog/2004/3/18/a-new-paradigm-quotcontinuationsquot.html" published: "2004-03-18T15:04:00" updated: "2004-03-18T15:04:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "I wonder just how much anyone has heard about this idea: Continuation based web applications (link via Cincom ) As I understand it, continuations allow your web application to jump forward between states after each…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A New Paradigm: "Continuations"? By Roy Osherove March 18, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published March 18, 2004; technical details may be outdated. I wonder just how much anyone has heard about this idea: [Continuation based web applications](http://bitsko.slc.ut.us/blog/2004/03/04) (link via [Cincom](http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3257060855)) As I understand it, continuations allow your web application to jump forward between states after each button click or link click, when the previous states are always saved, so the “back” button **always** works. For example, you can fill a shopping cart, hit submit, and before you confirm just hit back and continue adding stuff to the cart (i.e your page is saved with all the values you entered, and it;s not up to you to prey to the browser gods that everything will still work when you hit back, this is **guaranteed**). Still, the code on the developer's side stays event driven just as it was before. If I gather correctly, I'm looking at a mix and match of: - ASP.Net event model (event driven paradigm), only with full client support of these events? - UIP application block process model Now, here's the catch: the mainstream languages, .Net and  Java do not support this. What I've listed here is found in languages such as Smalltalk and Scheme. I wonder if there's a chance we'll see this technology in our side of the fence anytime soon (soon being a very general term here)... ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 19, 2004 ### [Searching Borland and MS newsgroups even if your firewall won't let you use a newsreader.](https://osherove.com/blog/2004/3/19/searching-borland-and-ms-newsgroups-even-if-your-firewall-wo.html) - Mar 18, 2004 ### [Good DPAPI helper and Matt Griffith's awesome .NET Utilities DLL and more](https://osherove.com/blog/2004/3/18/good-dpapi-helper-and-matt-griffiths-awesome-net-utilities-d.html) - Mar 18, 2004 ### [Important Developer Implications: Windows XP Service Pack 2](https://osherove.com/blog/2004/3/18/important-developer-implications-windows-xp-service-pack-2.html) - Mar 18, 2004 ### [Comments in Regular Expressions](https://osherove.com/blog/2004/3/18/comments-in-regular-expressions.html) --- title: "Important Developer Implications: Windows XP Service Pack 2" url: "https://osherove.com/blog/2004/3/18/important-developer-implications-windows-xp-service-pack-2.md" canonical: "https://osherove.com/blog/2004/3/18/important-developer-implications-windows-xp-service-pack-2.html" published: "2004-03-18T14:38:00" updated: "2004-03-18T14:38:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "One important issue for developers is how the windows XP service pack 2 affects software we write today. You'd be surprised but there are some “breaking” changes inside it, stuff we should be aware of. Today this turned…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Important Developer Implications: Windows XP Service Pack 2 By Roy Osherove March 18, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published March 18, 2004; technical details may be outdated. One important issue for developers is how the windows XP service pack 2 affects software we write today. You'd be surprised but there are some “breaking” changes inside it, stuff we should be aware of. Today this turned up in the [MSFT Downloads RSS feed:](http://www.microsoft.com/downloads/results.aspx?sortCriteria=date&OSID=&productID=&CategoryID=&freetext=&DisplayLang=en&DisplayEnglishAlso=) [Changes to Functionality in Microsoft Windows XP Service Pack 2](http://www.microsoft.com/downloads/details.aspx?FamilyID=7bd948d7-b791-40b6-8364-685b84158c78&DisplayLang=en) _This document focuses on the changes in Windows XP Service Pack 2 and its implications for developers. Examples and details are provided for several of the technologies that are experiencing the biggest changes. Future versions of this document will cover all new and changed technologies._ from a quick browse I can tell you it's a good idea to have a browse through and make sure your code won't break with the new service pack. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 18, 2004 ### [Good DPAPI helper and Matt Griffith's awesome .NET Utilities DLL and more](https://osherove.com/blog/2004/3/18/good-dpapi-helper-and-matt-griffiths-awesome-net-utilities-d.html) - Mar 18, 2004 ### [A New Paradigm: "Continuations"?](https://osherove.com/blog/2004/3/18/a-new-paradigm-quotcontinuationsquot.html) - Mar 18, 2004 ### [Comments in Regular Expressions](https://osherove.com/blog/2004/3/18/comments-in-regular-expressions.html) - Mar 18, 2004 ### [Unit testing and test driven resources](https://osherove.com/blog/2004/3/18/unit-testing-and-test-driven-resources.html) --- title: "DevDays grab-bag should be improved" url: "https://osherove.com/blog/2004/3/18/devdays-grab-bag-should-be-improved.md" canonical: "https://osherove.com/blog/2004/3/18/devdays-grab-bag-should-be-improved.html" published: "2004-03-18T14:14:00" updated: "2004-03-18T14:14:00" tags: [".Net Original"] author: "Roy Osherove" description: "Ok. I've written about this before, but there is no reasonable explanation as to why other people who go to DevDays are getting some very cool stuff, especially a DVD with lots of goodies and all the lectures , and we…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # DevDays grab-bag should be improved By Roy Osherove March 18, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 18, 2004; technical details may be outdated. Ok. I've written about this before, but there is no reasonable explanation as to why other people who go to DevDays are getting some very cool stuff, especially [a DVD with lots of goodies and all the lectures](http://flimflan.com/blog/archive/2004/03/13/153.aspx), and we (In Israel)get practically nothing? Sure, there was no admission price, but what about giving us all the stuff from Vertigo Software, such as the **[IssueVision sample](http://weblogs.asp.net/CFranklin/archive/2004/03/18/91746.aspx).** ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 19, 2004 ### [Running The Regulator on .Net 1.0](https://osherove.com/blog/2004/3/19/running-the-regulator-on-net-10.html) - Mar 18, 2004 ### [The amazing CLR runtime re-appearing trick](https://osherove.com/blog/2004/3/18/the-amazing-clr-runtime-re-appearing-trick.html) - Mar 18, 2004 ### [RegexLib's web service pays off big time.](https://osherove.com/blog/2004/3/18/regexlibs-web-service-pays-off-big-time.html) - Mar 17, 2004 ### [My talk went very well. You missed out :)](https://osherove.com/blog/2004/3/17/my-talk-went-very-well-you-missed-out.html) --- title: "Comments in Regular Expressions" url: "https://osherove.com/blog/2004/3/18/comments-in-regular-expressions.md" canonical: "https://osherove.com/blog/2004/3/18/comments-in-regular-expressions.html" published: "2004-03-18T14:03:00" updated: "2004-03-18T14:03:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Continuing my talk about Regex, it's good to be able to point to Darren , who is making a good point about commenting regular expressions, did you know you can do that? Read: Commenting Regular Expressions with C# and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Comments in Regular Expressions By Roy Osherove March 18, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published March 18, 2004; technical details may be outdated. Continuing my talk about Regex, it's good to be able to point to [Darren](http://blogs.regexadvice.com/DNeimke/archive/2004/03/14/754.aspx) , who is making a good point about commenting regular expressions, did you know you can do that? Read: [Commenting Regular Expressions with C# and VB](http://weblogs.asp.net/dneimke/archive/2003/09/23/28740.aspx) [5 Habits for successful Regular Expressions](http://www.onlamp.com/pub/a/onlamp/2003/08/21/regexp.html) And, yes, there's a whole [RegexBlogs](http://blogs.regexadvice.com/DNeimke/archive/2004/03/14/754.aspx) site, and I'm part of it. Unfortunately, I have been pretty silent on there :( ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 18, 2004 ### [A New Paradigm: "Continuations"?](https://osherove.com/blog/2004/3/18/a-new-paradigm-quotcontinuationsquot.html) - Mar 18, 2004 ### [Important Developer Implications: Windows XP Service Pack 2](https://osherove.com/blog/2004/3/18/important-developer-implications-windows-xp-service-pack-2.html) - Mar 18, 2004 ### [Unit testing and test driven resources](https://osherove.com/blog/2004/3/18/unit-testing-and-test-driven-resources.html) - Mar 16, 2004 ### [Some links I need to remember](https://osherove.com/blog/2004/3/16/some-links-i-need-to-remember.html) --- title: "RegexLib's web service pays off big time." url: "https://osherove.com/blog/2004/3/18/regexlibs-web-service-pays-off-big-time.md" canonical: "https://osherove.com/blog/2004/3/18/regexlibs-web-service-pays-off-big-time.html" published: "2004-03-18T12:15:00" updated: "2004-03-18T12:15:00" tags: [".Net Original"] author: "Roy Osherove" description: "The Regulator ’s Web-Search pane finally became useful for me today. I was helping someone out with some tricky parsing code and we had no idea how to do something (parse an SQL query). A quick search for “SQL” inside…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # RegexLib's web service pays off big time. By Roy Osherove March 18, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 18, 2004; technical details may be outdated. [The Regulator](http://royo.is-a-geek.com/regulator)’s Web-Search pane finally became useful for me today. I was helping someone out with some tricky parsing code and we had no idea how to do something (parse an SQL query). A quick search for “SQL” inside the web search pane turned up an expression that matched what we needed entirely. How cool is that? Thanks for the web service, [Darren](http://weblogs.asp.net/dneimke) J ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 18, 2004 ### [The amazing CLR runtime re-appearing trick](https://osherove.com/blog/2004/3/18/the-amazing-clr-runtime-re-appearing-trick.html) - Mar 18, 2004 ### [DevDays grab-bag should be improved](https://osherove.com/blog/2004/3/18/devdays-grab-bag-should-be-improved.html) - Mar 17, 2004 ### [My talk went very well. You missed out :)](https://osherove.com/blog/2004/3/17/my-talk-went-very-well-you-missed-out.html) - Mar 16, 2004 ### [See me speak at IVCUG about Regex and .Net Plug-ins](https://osherove.com/blog/2004/3/16/see-me-speak-at-ivcug-about-regex-and-net-plug-ins.html) --- title: "CodeRush vs. CodeSmart" url: "https://osherove.com/blog/2004/3/18/coderush-vs-codesmart.md" canonical: "https://osherove.com/blog/2004/3/18/coderush-vs-codesmart.html" published: "2004-03-18T08:18:00" updated: "2004-03-18T08:18:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "CodeRush looks cool, but I still like CodeSmart better. The people at the user group liked it very much as well when I demonstrated it : )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CodeRush vs. CodeSmart By Roy Osherove March 18, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published March 18, 2004; technical details may be outdated. [CodeRush](http://www.adtmag.com/article.asp?id=9101) looks cool, but I still like [CodeSmart](http://www.axtools.com/) better. The people at the user group liked it very much as well when I demonstrated it : ) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Mar 27, 2004 ### [VS-Styler :Toggle and save your VS.Net font and color settings instantly](https://osherove.com/blog/2004/3/27/vs-styler-toggle-and-save-your-vsnet-font-and-color-settings.html) - Mar 24, 2004 ### [How CodeRush pissed me off](https://osherove.com/blog/2004/3/24/how-coderush-pissed-me-off.html) - Mar 11, 2004 ### [Tool: IPCheck - Monitor your web server online status](https://osherove.com/blog/2004/3/11/tool-ipcheck-monitor-your-web-server-online-status.html) - Mar 5, 2004 ### [Interesting stuff I missed this week](https://osherove.com/blog/2004/3/5/interesting-stuff-i-missed-this-week.html) --- title: "TP?" url: "https://osherove.com/blog/2004/3/18/tp.md" canonical: "https://osherove.com/blog/2004/3/18/tp.html" published: "2004-03-18T08:13:00" updated: "2004-03-18T08:13:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Well, I've never seen this before! (int he comments) Blame Rory ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TP? By Roy Osherove March 18, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 18, 2004; technical details may be outdated. Well, I've never seen [this](http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=1205) before! (int he comments) [Blame Rory](http://neopoleon.com/blog/posts/4471.aspx). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 19, 2004 ### [Falafel Bloggers?](https://osherove.com/blog/2004/3/19/falafel-bloggers.html) - Mar 18, 2004 ### [Real Geeks](https://osherove.com/blog/2004/3/18/real-geeks.html) - Mar 17, 2004 ### [Me? rip to shreds?](https://osherove.com/blog/2004/3/17/me-rip-to-shreds.html) - Mar 15, 2004 ### [\[Book\] Coder To Developer](https://osherove.com/blog/2004/3/15/book-coder-to-developer.html) --- title: "Unit testing and test driven resources" url: "https://osherove.com/blog/2004/3/18/unit-testing-and-test-driven-resources.md" canonical: "https://osherove.com/blog/2004/3/18/unit-testing-and-test-driven-resources.html" published: "2004-03-18T08:07:00" updated: "2004-03-18T08:07:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Someone asked me about resources for learning to do test driven development and unit testing. Darrell Norton has collected a nice set of resources on his blog . This is a great place to start. I was thinking of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit testing and test driven resources By Roy Osherove March 18, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published March 18, 2004; technical details may be outdated. Someone asked me about resources for learning to do test driven development and unit testing. [Darrell Norton has collected a nice set of resources on his blog](http://dotnetjunkies.com/weblog/darrell.norton/posts/3374.aspx). This is a great place to start. I was thinking of suggesting a user group talk about unit tests and test driven development. What do you think? From my experience if the audience does not actually **do** this **hands on** while learning, it's very hard to “get” the mindset needed for test driven development, but I could be wrong.. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 18, 2004 ### [Important Developer Implications: Windows XP Service Pack 2](https://osherove.com/blog/2004/3/18/important-developer-implications-windows-xp-service-pack-2.html) - Mar 18, 2004 ### [Comments in Regular Expressions](https://osherove.com/blog/2004/3/18/comments-in-regular-expressions.html) - Mar 16, 2004 ### [Some links I need to remember](https://osherove.com/blog/2004/3/16/some-links-i-need-to-remember.html) - Mar 11, 2004 ### [Crypto for everyone](https://osherove.com/blog/2004/3/11/crypto-for-everyone.html) --- title: "Me? rip to shreds?" url: "https://osherove.com/blog/2004/3/17/me-rip-to-shreds.md" canonical: "https://osherove.com/blog/2004/3/17/me-rip-to-shreds.html" published: "2004-03-17T16:51:00" updated: "2004-03-17T16:51:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Carl thinks I'm going to rip him to shreds for telling people to inherit a Customer object from a Person object :) ok, the link didn't stick for some reason. Let's try again!…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Me? rip to shreds? By Roy Osherove March 17, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 17, 2004; technical details may be outdated. [Carl thinks I'm going to rip him to shreds](http://www.franklins.net/video/objects/SoYouTHINKYouKnowWhatAnObjectIsB.html) for telling people to inherit a Customer object from a Person object :) ok, the link didn't stick for some reason. Let's try again! [http://www.franklins.net/video/objects/SoYouTHINKYouKnowWhatAnObjectIsB.html](http://www.franklins.net/video/objects/SoYouTHINKYouKnowWhatAnObjectIsB.html) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 18, 2004 ### [Real Geeks](https://osherove.com/blog/2004/3/18/real-geeks.html) - Mar 18, 2004 ### [TP?](https://osherove.com/blog/2004/3/18/tp.html) - Mar 15, 2004 ### [\[Book\] Coder To Developer](https://osherove.com/blog/2004/3/15/book-coder-to-developer.html) - Mar 13, 2004 ### [When you're new...](https://osherove.com/blog/2004/3/13/when-youre-new.html) --- title: "My talk went very well. You missed out :)" url: "https://osherove.com/blog/2004/3/17/my-talk-went-very-well-you-missed-out.md" canonical: "https://osherove.com/blog/2004/3/17/my-talk-went-very-well-you-missed-out.html" published: "2004-03-17T16:50:00" updated: "2004-03-17T16:50:00" tags: [".Net Original"] author: "Roy Osherove" description: "Wow. I'm all energized about the talk I just finished at the Visual C# user group. The talk was divided in two: First part was regular expressions. It went great! I was so nervious at first, but when I actually stepped…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My talk went very well. You missed out :) By Roy Osherove March 17, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 17, 2004; technical details may be outdated. Wow. I'm all energized about the talk I just finished at the Visual C# user group. The talk was divided in two: First part was regular expressions. It went great! I was so nervious at first, but when I actually stepped up and started talking, everything sort of “flowed”. When I demoed how I'm parsing a log file and turning it into XML and then search on it, There was even some clapping. Imagine that :) The second part was about plugins, and it went pretty well too. A bit less excitement because this is a harder subject, but over all people seemed to get the idea and responded well to the code examples. A few glitches: - The lecture started almost 20 late - There were some technical problems connecting my laptop to the projector Hopefully these were small enough not to cloud the overall lecture quality. I did get a few suggestions: - With the Regex lecture, start out with a demo of parsing the log file and then dive into the rest of the material, instead of doing the demo in the end. What do you think? - The plugin lecture went too deep. THe part about passing EditorContext to the plugin was a bit too much to handle.  What do you think? If you were in the lecture I'd be happy if you provided me with feedback so that I can learn from past mistakes. God I'm tired. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 18, 2004 ### [DevDays grab-bag should be improved](https://osherove.com/blog/2004/3/18/devdays-grab-bag-should-be-improved.html) - Mar 18, 2004 ### [RegexLib's web service pays off big time.](https://osherove.com/blog/2004/3/18/regexlibs-web-service-pays-off-big-time.html) - Mar 16, 2004 ### [See me speak at IVCUG about Regex and .Net Plug-ins](https://osherove.com/blog/2004/3/16/see-me-speak-at-ivcug-about-regex-and-net-plug-ins.html) - Mar 10, 2004 ### [Mortal Sin: Translating technical terms](https://osherove.com/blog/2004/3/10/mortal-sin-translating-technical-terms.html) --- title: "See me speak at IVCUG about Regex and .Net Plug-ins" url: "https://osherove.com/blog/2004/3/16/see-me-speak-at-ivcug-about-regex-and-net-plug-ins.md" canonical: "https://osherove.com/blog/2004/3/16/see-me-speak-at-ivcug-about-regex-and-net-plug-ins.html" published: "2004-03-16T18:00:00" updated: "2004-03-16T18:00:00" tags: [".Net Original"] author: "Roy Osherove" description: "I'll be speaking at the Visual C# user group this Wednesday (that's tomorrow while I'm writing this) about regex and plug ins." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # See me speak at IVCUG about Regex and .Net Plug-ins By Roy Osherove March 16, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 16, 2004; technical details may be outdated. [I'll be speaking at the Visual C# user group](http://www.comconix.com/ivcug/Invitation.htm) this Wednesday (that's tomorrow while I'm writing this) about regex and plug ins. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 18, 2004 ### [RegexLib's web service pays off big time.](https://osherove.com/blog/2004/3/18/regexlibs-web-service-pays-off-big-time.html) - Mar 17, 2004 ### [My talk went very well. You missed out :)](https://osherove.com/blog/2004/3/17/my-talk-went-very-well-you-missed-out.html) - Mar 10, 2004 ### [Mortal Sin: Translating technical terms](https://osherove.com/blog/2004/3/10/mortal-sin-translating-technical-terms.html) - Mar 10, 2004 ### [Logging block: RTFM](https://osherove.com/blog/2004/3/10/logging-block-rtfm.html) --- title: "Some links I need to remember" url: "https://osherove.com/blog/2004/3/16/some-links-i-need-to-remember.md" canonical: "https://osherove.com/blog/2004/3/16/some-links-i-need-to-remember.html" published: "2004-03-16T17:55:00" updated: "2004-03-16T17:55:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Some stuff that should not be missed: Fiddler is a HTTP Debugging Proxy which logs all HTTP traffic between your computer and the Internet (via Scott ) Port Reporter a logging service for Windows that logs TCP/IP port…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some links I need to remember By Roy Osherove March 16, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published March 16, 2004; technical details may be outdated. Some stuff that should not be missed: - _[Fiddler](http://www.bayden.com/fiddler/) is a HTTP Debugging Proxy which logs all HTTP traffic between your computer and the Internet (via [Scott](http://scottwater.com/blog/archive/2004/03/16/Fiddler.aspx))_ - [Port Reporter](http://www.microsoft.com/downloads/details.aspx?FamilyID=69ba779b-bae9-4243-b9d6-63e62b4bcd2e&DisplayLang=en) a logging service for Windows that logs TCP/IP port usage data. - [Resign Patterns](http://dotnetjunkies.com/WebLog/jcmag/archive/2004/03/15/9147.aspx)  - Who hasn't already used the Blinder, Simpleton or Commando pattern? (via [JC](http://dotnetjunkies.com/WebLog/jcmag/archive/2004/03/15/9147.aspx)) - [VS.NET tips](http://weblogs.asp.net/shaykatc/category/3661.aspx) ([Jim](http://dotnetjunkies.com/WebLog/jim.martin/archive/2004/03/14/9070.aspx)) That's basically it. I am **sooo** busy.. it actually hurts a bit to be “out of the blogsphere”. I'll try to get back as soon as I can. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 18, 2004 ### [Comments in Regular Expressions](https://osherove.com/blog/2004/3/18/comments-in-regular-expressions.html) - Mar 18, 2004 ### [Unit testing and test driven resources](https://osherove.com/blog/2004/3/18/unit-testing-and-test-driven-resources.html) - Mar 11, 2004 ### [Crypto for everyone](https://osherove.com/blog/2004/3/11/crypto-for-everyone.html) - Mar 10, 2004 ### [Calling managed functions from unmanaged code](https://osherove.com/blog/2004/3/10/calling-managed-functions-from-unmanaged-code.html) --- title: "[Book] Coder To Developer" url: "https://osherove.com/blog/2004/3/15/book-coder-to-developer.md" canonical: "https://osherove.com/blog/2004/3/15/book-coder-to-developer.html" published: "2004-03-15T20:09:00" updated: "2004-03-15T20:09:00" tags: ["Off Topic", "Recommended books"] author: "Roy Osherove" description: "I got the chance to review some of the chapters from Mike Gunderloy 's upcoming book , about to hit the stores anytime now: Coder To Developer . It looks to be a great book for those of us who want to take the leap from…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Book\] Coder To Developer By Roy Osherove March 15, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic), [Recommended books](https://osherove.com/blog/category/recommended-books) **Historical article** · Originally published March 15, 2004; technical details may be outdated. I got the chance to review some of the chapters from [Mike Gunderloy](http://www.larkware.com/)'s upcoming book , about to hit the stores anytime now:  [Coder To Developer](https://www.amazon.com/exec/obidos/ASIN/078214327X/iserializable-20) . It looks to be a great book for those of us who want to take the leap from being a regular coder on some team, and into the world of the “bigger view” people. It teaches some good techniques about various good stuff, including test driven development, using source control correctly, approaches to program design and implementation and lots of other good stuff. Recommended for developers with 0.5 - 2.5 years experience, especially in .Net. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 18, 2004 ### [TP?](https://osherove.com/blog/2004/3/18/tp.html) - Mar 17, 2004 ### [Me? rip to shreds?](https://osherove.com/blog/2004/3/17/me-rip-to-shreds.html) - Mar 13, 2004 ### [When you're new...](https://osherove.com/blog/2004/3/13/when-youre-new.html) - Mar 13, 2004 ### [IrfanVIew - simpler, faster, and FREE](https://osherove.com/blog/2004/3/13/irfanview-simpler-faster-and-free.html) --- title: "Why is RSS adoption so low? Here's why." url: "https://osherove.com/blog/2004/3/13/why-is-rss-adoption-so-low-heres-why.md" canonical: "https://osherove.com/blog/2004/3/13/why-is-rss-adoption-so-low-heres-why.html" published: "2004-03-13T21:09:00" updated: "2004-03-13T21:09:00" tags: ["Blogging"] author: "Roy Osherove" description: "Why is RSS adoption so low , asks Scoble ? and the answer lies, of course, in the obvious. It's still too hard to start with it. And yes, I mean even the geeks I hang out with. Hell, even I find it less than tolerable…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why is RSS adoption so low? Here's why. By Roy Osherove March 13, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published March 13, 2004; technical details may be outdated. Why is [RSS adoption so low](http://radio.weblogs.com/0001011/2004/03/13.html#a6997), asks [Scoble](http://scoble.weblogs.com/)? and the answer lies, of course, in the obvious. It's still too hard to start with it. And yes, I mean even the geeks I hang out with. Hell, even I find it less than tolerable sometimes. What do I mean? ### **You have to work hard to read RSS news** - Find out what RSS means - Someone actually has to convince you to read RSS news, or you need to proactively find out what it means. Although a lot of sites are now starting to let out some feeds, its still not mainstream enough and a lot of times the XML icons are nothing more small decorative icons without so much as an explanation as to what they mean. - Find a news reader - Again, you have to proactively search for it or get a recommendation from a friend. You dont get a news reader that is built-in with windows. For example, how many people do you think would read newsgroups if Outlook express was not installed by default? Or if it had no newsgroup ability? Just to clarify how much this built-in means to the end user, consider that outlook express is by far one of the most down grade news readers out there, and that there are a lot of worthy and easy to use news readers that are free! How many do you know? How long did it take you to find out about them? What made you move over and use them? Would you **ever** use them if you didnt have outlook express installed in the first place? - Download and install it - Sometimes installing means unzipping a file to a folder and running an EXE, and sometimes its a full fledged installation program, but nevertheless, its still not as  easy as it should be (some advanced readers are starting to look more on the professional side though). - Sometimes the download site itself is a hobbyist site. This whole RSS thing is so new, it still has that open source feel to it. The download pages usually have huge technical links and history lists, programming resources and generally they are not user friendly unless youre a programmer, and even then not so much unless youre familier with the territory. In short, the **download interface** is not inviting enough and can even deter some people by giving it all a this is complex/serious feeling. - Find sites that give out RSS feeds - Yep. After going through all that crap up there, you still have not gotten to what you actually want news sources. Now you actually need to go out and proactively find RSS sources. There are some RSS directory sources out there, but its still hard to find them. Compare this with the built-in news group searching features found in all newsreaders and youre starting to see how this is a not so easy task for a newcomer. In fact, you actually need to know some sites you want to read **prior** to downloading an installing your news reader, or you wont find much use for it. Now, all the steps Ive outlined here are not very hard to do individually, and may even be relatively easy in the technical sense, but this does not mean **squat** when we try to compare the **usability** of this whole shebag to what todays users are accustomed to. It is **light years** behind. Its much like comparing linux to windows as far as ease of use vs. power is concerned. Youll find plenty of similarities in that field. Now, until we dont get all these things fixed, dont expect it to get better. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Mar 29, 2004 ### [More Israeli bloggers!](https://osherove.com/blog/2004/3/29/more-israeli-bloggers.html) - Mar 19, 2004 ### [Is sharing information in a blog wrong for your company? An ethical dilemma](https://osherove.com/blog/2004/3/19/is-sharing-information-in-a-blog-wrong-for-your-company-an-e.html) - Mar 11, 2004 ### [1001 posts](https://osherove.com/blog/2004/3/11/1001-posts.html) - Feb 24, 2004 ### [.Net Rocks bullet points](https://osherove.com/blog/2004/2/24/net-rocks-bullet-points.html) --- title: "When you're new..." url: "https://osherove.com/blog/2004/3/13/when-youre-new.md" canonical: "https://osherove.com/blog/2004/3/13/when-youre-new.html" published: "2004-03-13T20:43:00" updated: "2004-03-13T20:43:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Rory talks about starting out when nobody knows you (or it's the other way around) at a new place. I know his feelings. Doing 2 months in Norway was much like that... only imagine that everyone at the party is as quiet…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # When you're new... By Roy Osherove March 13, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 13, 2004; technical details may be outdated. [Rory talks about starting out when nobody knows you](http://neopoleon.com/blog/posts/4292.aspx)(or it's the other way around) at a new place. I know his feelings. Doing 2 months in Norway was much like that... only imagine that **everyone** at the party is as quiet as you... and it's **dark**... and you have to eat a cheese sandwich for lunch everyday :) Of course, the people there were wonderful, but still, starting out there was a pretty hard thing for me. Good luck Rory. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 17, 2004 ### [Me? rip to shreds?](https://osherove.com/blog/2004/3/17/me-rip-to-shreds.html) - Mar 15, 2004 ### [\[Book\] Coder To Developer](https://osherove.com/blog/2004/3/15/book-coder-to-developer.html) - Mar 13, 2004 ### [IrfanVIew - simpler, faster, and FREE](https://osherove.com/blog/2004/3/13/irfanview-simpler-faster-and-free.html) - Mar 11, 2004 ### [1001 posts](https://osherove.com/blog/2004/3/11/1001-posts.html) --- title: "IrfanVIew - simpler, faster, and FREE" url: "https://osherove.com/blog/2004/3/13/irfanview-simpler-faster-and-free.md" canonical: "https://osherove.com/blog/2004/3/13/irfanview-simpler-faster-and-free.html" published: "2004-03-13T16:35:00" updated: "2004-03-13T16:35:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Scoble recommends ACDsee to view your digital pictures, and I partially agree. I used it for a long time, but then.. somehow, it got big, and clumsy and heavy and bloated. Guess what? I use IrfanView now. It's free, and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # IrfanVIew - simpler, faster, and FREE By Roy Osherove March 13, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 13, 2004; technical details may be outdated. [Scoble](http://scoble.weblogs.com/) [recommends](http://radio.weblogs.com/0001011/2004/03/13.html#a6987) [ACDsee](http://www.acdsystems.com/english/products/acdsee/index) to view your digital pictures, and I partially agree. I used it for a long time, but then.. somehow, it got big, and clumsy and heavy and bloated. Guess what? I use [IrfanView](http://www.irfanview.com/) now. It's free, and it shows you the picture **much faster** (like blinking fast) than ACDsee, and it's simpler and less bloated. Like Office, I'd only use like 2% of ACDSee's features anyway. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 15, 2004 ### [\[Book\] Coder To Developer](https://osherove.com/blog/2004/3/15/book-coder-to-developer.html) - Mar 13, 2004 ### [When you're new...](https://osherove.com/blog/2004/3/13/when-youre-new.html) - Mar 11, 2004 ### [1001 posts](https://osherove.com/blog/2004/3/11/1001-posts.html) - Mar 5, 2004 ### [MSDN Connected in Israel? hopefully.](https://osherove.com/blog/2004/3/5/msdn-connected-in-israel-hopefully.html) --- title: "1001 posts" url: "https://osherove.com/blog/2004/3/11/1001-posts.md" canonical: "https://osherove.com/blog/2004/3/11/1001-posts.html" published: "2004-03-11T19:13:00" updated: "2004-03-11T19:13:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Huh. Didn't even notice, but my last post was my 1000 post! Who knew? Thanks for the tip, Udi ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 1001 posts By Roy Osherove March 11, 2004 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 11, 2004; technical details may be outdated. Huh. Didn't even notice, but my last post was my 1000 post! Who knew? Thanks for the tip, [Udi](http://www.thesoftwaresimplist.com/). ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Mar 19, 2004 ### [Is sharing information in a blog wrong for your company? An ethical dilemma](https://osherove.com/blog/2004/3/19/is-sharing-information-in-a-blog-wrong-for-your-company-an-e.html) - Mar 13, 2004 ### [Why is RSS adoption so low? Here's why.](https://osherove.com/blog/2004/3/13/why-is-rss-adoption-so-low-heres-why.html) - Feb 24, 2004 ### [.Net Rocks bullet points](https://osherove.com/blog/2004/2/24/net-rocks-bullet-points.html) - Feb 18, 2004 ### [Israeli .Net Bloggers](https://osherove.com/blog/2004/2/18/israeli-net-bloggers.html) --- title: "Crypto for everyone" url: "https://osherove.com/blog/2004/3/11/crypto-for-everyone.md" canonical: "https://osherove.com/blog/2004/3/11/crypto-for-everyone.html" published: "2004-03-11T11:19:00" updated: "2004-03-11T11:19:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Although I've used the Crypto classes a bit before, it was a bit of a steep learning curve for me. This nice and simple article (+code!) seems to be just what I was looking for at that time: Crypto for everyone (via…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Crypto for everyone By Roy Osherove March 11, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published March 11, 2004; technical details may be outdated. Although I've used the Crypto classes a bit before, it was a bit of a steep learning curve for me. This nice and simple article (+code!) seems to be just what I was looking for at that time: [Crypto for everyone](http://weblogs.asp.net/hernandl/archive/2004/03/08/85884.aspx) (via [Daniel](http://weblogs.asp.net/cazzu/archive/2004/03/11/87737.aspx)) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 18, 2004 ### [Unit testing and test driven resources](https://osherove.com/blog/2004/3/18/unit-testing-and-test-driven-resources.html) - Mar 16, 2004 ### [Some links I need to remember](https://osherove.com/blog/2004/3/16/some-links-i-need-to-remember.html) - Mar 10, 2004 ### [Calling managed functions from unmanaged code](https://osherove.com/blog/2004/3/10/calling-managed-functions-from-unmanaged-code.html) - Mar 6, 2004 ### [Developers.org.il - The Israeli developers site](https://osherove.com/blog/2004/3/6/developersorgil-the-israeli-developers-site.html) --- title: "Tool: IPCheck - Monitor your web server online status" url: "https://osherove.com/blog/2004/3/11/tool-ipcheck-monitor-your-web-server-online-status.md" canonical: "https://osherove.com/blog/2004/3/11/tool-ipcheck-monitor-your-web-server-online-status.html" published: "2004-03-11T09:45:00" updated: "2004-03-11T09:45:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Q : I need a (hopefully)free way to monitor a web farm and know if one of the servers goes offline. A: IPCheck Server Monitor allows you to monitor your server(s) and be notified via email when they are down. The free…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tool: IPCheck - Monitor your web server online status By Roy Osherove March 11, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published March 11, 2004; technical details may be outdated. **Q**: I need a (hopefully)free way to monitor a web farm and know if one of the servers goes offline. **A:** IPCheck Server Monitor allows you to monitor your server(s) and be notified via email when they are down. The free version can be used with up to 3 sensors, which can be simple HTTP, PING or PORT requests. The interface is browser based and provides a detailed overview with statistics on each of the monitored devices. IPCheck Server Monitor offers additional features and monitoring options, however all of thenm are disabled in the freeware version and can only be evaluated upon request. The free version is good for basic monitoring of a personal server. [http://www.paessler.com/ipcheck](https://owa.magen.com/exchweb/bin/redir.asp?URL=http://www.paessler.com/ipcheck) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Mar 24, 2004 ### [How CodeRush pissed me off](https://osherove.com/blog/2004/3/24/how-coderush-pissed-me-off.html) - Mar 18, 2004 ### [CodeRush vs. CodeSmart](https://osherove.com/blog/2004/3/18/coderush-vs-codesmart.html) - Mar 5, 2004 ### [Interesting stuff I missed this week](https://osherove.com/blog/2004/3/5/interesting-stuff-i-missed-this-week.html) - Feb 22, 2004 ### [\[Cool Tool\] CodeSmith 2.5](https://osherove.com/blog/2004/2/22/cool-tool-codesmith-25.html) --- title: "Calling managed functions from unmanaged code" url: "https://osherove.com/blog/2004/3/10/calling-managed-functions-from-unmanaged-code.md" canonical: "https://osherove.com/blog/2004/3/10/calling-managed-functions-from-unmanaged-code.html" published: "2004-03-10T20:48:00" updated: "2004-03-10T20:48:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Our company has an internal mailing list of important and interesting things. Sometimes I'll grab some technical gems from there and post them for everyone's benefit. For example: Q :“ I have a static method in managed…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Calling managed functions from unmanaged code By Roy Osherove March 10, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published March 10, 2004; technical details may be outdated. Our company has an internal mailing list of important and interesting things. Sometimes I'll grab some technical gems from there and post them for everyone's benefit. For example: _**Q**:“I have a static method in managed code that I’d like to call from unmanaged code. Is there any recommended way of doing this?”_ **A**:“This is easily doable...just create a delegate in managed code and pass it to unmanaged code.  It will turn into a callable function pointer on the unmanaged side.  Couple of things to be aware of: 1) Make sure the function pointer definition on the unmanaged side uses \_\_stdcall.  Weird and bad things will happen if you try to use a different calling convention. 2) Make sure you keep the delegate alive on the managed side somehow (easiest way is to assign a static variable to it).  #1 mistake when doing this is letting the delegate go out of scope...the GC will collect it, and Bad Things(tm) will happen when the unmanaged side tries to invoke the function pointer.“  ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 16, 2004 ### [Some links I need to remember](https://osherove.com/blog/2004/3/16/some-links-i-need-to-remember.html) - Mar 11, 2004 ### [Crypto for everyone](https://osherove.com/blog/2004/3/11/crypto-for-everyone.html) - Mar 6, 2004 ### [Developers.org.il - The Israeli developers site](https://osherove.com/blog/2004/3/6/developersorgil-the-israeli-developers-site.html) - Mar 5, 2004 ### [Interesting stuff I missed this week](https://osherove.com/blog/2004/3/5/interesting-stuff-i-missed-this-week.html) --- title: "Mortal Sin: Translating technical terms" url: "https://osherove.com/blog/2004/3/10/mortal-sin-translating-technical-terms.md" canonical: "https://osherove.com/blog/2004/3/10/mortal-sin-translating-technical-terms.html" published: "2004-03-10T17:57:00" updated: "2004-03-10T17:57:00" tags: [".Net Original"] author: "Roy Osherove" description: "We've all seen this (if you work in a country where English is not your mother tongue). A new person joins your team, and starts talking to you about really deep, thought provoking, mind numbing technical stuff. The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mortal Sin: Translating technical terms By Roy Osherove March 10, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 10, 2004; technical details may be outdated. We've all seen this (if you work in a country where English is not your mother tongue). A new person joins your team, and starts talking to you about really deep, thought provoking, mind numbing technical stuff. The only problem is that you have **absolutely no idea** what they are talking about. Yes, they're speaking in your language, but they are not speaking **the language**. The technical language of computing, and programming in particular, is _English_. It's not Hebrew, Spanish, or French. Try to convert the technical terms to your mother tongue and you get into bizarre, and I mean _bizarre_ words that have no connection what so ever to the technical terms in question. In Hebrew it comes out horribly horribly bad. A small example I'll give here: “**Class**” - to Hebrew “Mahlaka” - to English back again would be... “**platoon**” or “**division**” “**string**” to Hebrew “mahrozet” - to English would be “**Necklace**” “**Member**” to Hebrew “eivar” - back to English would be “**Organ**” or “**limb**“ and so on.... That's why whenever I get to see someone fresh out of CS with no experience, I get into “translation mode” where I have to think about each word spoken twice; Think of it's meaning in Hebrew,  then **try (**not always works!**)** translate back to English to get the _real_ meaning. SO, this sin is exceptionally bad because: - You speak a different language than everyone else. _Too bad_. Communication is key in a development environment. - Everyone will laugh at your funny words. - **You will not understand anyone else!** **Solution:** - Insist on reading literature in English. You're gonna write in English anyway, might as well.. umm... learn it? - Whenever you hear a non English technical term, request the English meaning of it, and see if you can get the instructor to say the original term instead. If not, write it down and learn it on your own. - **Always** use the original terms when speaking with others. - “Infect” other people with this bug. - If you get annoyed with it, it means it's rubbing off on you. Good. _Notes:_ This sin automatically extends the “Technical literature in Non-English” sin. They are two symbiotic entities. If you see one of them, you are likely to see the other, to some extent. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 17, 2004 ### [My talk went very well. You missed out :)](https://osherove.com/blog/2004/3/17/my-talk-went-very-well-you-missed-out.html) - Mar 16, 2004 ### [See me speak at IVCUG about Regex and .Net Plug-ins](https://osherove.com/blog/2004/3/16/see-me-speak-at-ivcug-about-regex-and-net-plug-ins.html) - Mar 10, 2004 ### [Logging block: RTFM](https://osherove.com/blog/2004/3/10/logging-block-rtfm.html) - Feb 26, 2004 ### [ILdotNet - Israel's .Net User Group Information Center](https://osherove.com/blog/2004/2/26/ildotnet-israels-net-user-group-information-center.html) --- title: "Logging block: RTFM" url: "https://osherove.com/blog/2004/3/10/logging-block-rtfm.md" canonical: "https://osherove.com/blog/2004/3/10/logging-block-rtfm.html" published: "2004-03-10T06:52:00" updated: "2004-03-10T06:52:00" tags: [".Net Original"] author: "Roy Osherove" description: "Reminder to self: RTFM! We tried installing the logging application block today, it took a while for me to figure out why it would not build. It kept throwing errors such as “Could not find namespace…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Logging block: RTFM By Roy Osherove March 10, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published March 10, 2004; technical details may be outdated. Reminder to self: RTFM! We tried installing the logging application block today, it took a while for me to figure out why it would not build. It kept throwing errors such as “Could not find namespace Microsoft.web.services” and “Could not find SoapEnvelope class” and so on.. Stupid me. Had I read the manual I would have seen that WSE 2.0 is required. ugh. (And I even thought that this is some kind of error since there is no namespace “Microsoft.web.services” but there **is** a “System.Web.Services” so I tried renaming it to that namespace at first. ugh.) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 16, 2004 ### [See me speak at IVCUG about Regex and .Net Plug-ins](https://osherove.com/blog/2004/3/16/see-me-speak-at-ivcug-about-regex-and-net-plug-ins.html) - Mar 10, 2004 ### [Mortal Sin: Translating technical terms](https://osherove.com/blog/2004/3/10/mortal-sin-translating-technical-terms.html) - Feb 26, 2004 ### [ILdotNet - Israel's .Net User Group Information Center](https://osherove.com/blog/2004/2/26/ildotnet-israels-net-user-group-information-center.html) - Feb 23, 2004 ### [Asp.Net slider control?](https://osherove.com/blog/2004/2/23/aspnet-slider-control.html) --- title: "Developers.org.il - The Israeli developers site" url: "https://osherove.com/blog/2004/3/6/developersorgil-the-israeli-developers-site.md" canonical: "https://osherove.com/blog/2004/3/6/developersorgil-the-israeli-developers-site.html" published: "2004-03-06T10:34:00" updated: "2004-03-06T10:34:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "This site looks like it's off to a good start . It's one of those “How come there wasn't one earlier” kind of sites. A few pointers: The forums look like they could be something really good. All articles are in Hebrew.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Developers.org.il - The Israeli developers site By Roy Osherove March 6, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published March 6, 2004; technical details may be outdated. [This site looks like it's off to a good start](http://www.developers.org.il/). It's one of those “How come there wasn't one earlier” kind of sites. A few pointers: - [The forums](http://www.developers.org.il/cgi-bin/dcforum/main.cgi) look like they could be something really good. - All articles are in Hebrew. I've always hated learning programming through Hebrew books. The translation of technical terms into Hebrew is usually funny at best and cryptic at worst. Still, for someone who would rather read English this is a good place to go.I still think there should be room for English stuff too. - Not much content yet. But there should be real soon. - Already a contest on the way, and the prizes should be pretty cool. - No VB.Net section. Definitely a miss. - No RSS feed. Well, I guess there is still very little understanding of the power of this medium. The site is apparently operated by Liron Ratzaby.  He's still looking for people to help manage the forums. **Good work Liron :)** ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 11, 2004 ### [Crypto for everyone](https://osherove.com/blog/2004/3/11/crypto-for-everyone.html) - Mar 10, 2004 ### [Calling managed functions from unmanaged code](https://osherove.com/blog/2004/3/10/calling-managed-functions-from-unmanaged-code.html) - Mar 5, 2004 ### [Interesting stuff I missed this week](https://osherove.com/blog/2004/3/5/interesting-stuff-i-missed-this-week.html) - Mar 4, 2004 ### [Application Security through Active Directory and ADAM](https://osherove.com/blog/2004/3/4/application-security-through-active-directory-and-adam.html) --- title: "Book of the month" url: "https://osherove.com/blog/2004/3/5/book-of-the-month.md" canonical: "https://osherove.com/blog/2004/3/5/book-of-the-month.html" published: "2004-03-05T21:44:00" updated: "2004-03-05T21:44:00" tags: ["Free book chapters", "Recommended books"] author: "Roy Osherove" description: "My book of the month: Writing Secure Code, Second Edition After reading almost half of it I can safely say this book is a must for every developer. Getting into that security \"state of mind\", or even just awareness , is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Book of the month By Roy Osherove March 5, 2004 In [Free book chapters](https://osherove.com/blog/category/free-book-chapters), [Recommended books](https://osherove.com/blog/category/recommended-books) **Historical article** · Originally published March 5, 2004; technical details may be outdated. My book of the month: [![Book of the month: Writing Secure Code, Second Edition](https://osherove.com/img/wb/22b5cc47_images.amazon.com_images_P_0735617228.01._PE30_PIdp-schmooS_TopRight_7_-26_SCMZZZZZZZ_.jpg)](https://www.amazon.com/exec/obidos/ASIN/0735617228/iserializable-20) [Writing Secure Code, Second Edition](https://www.amazon.com/exec/obidos/ASIN/0735617228/iserializable-20) After reading almost half of it I can safely say this book is a must for every developer. Getting into that security "state of mind", or even just _awareness_, is something we owe our customers, and ourselves. ## More in Free book chapters [All posts in Free book chapters](https://osherove.com/blog/category/free-book-chapters) - Apr 5, 2004 ### [Sample chapter from "The Visual Basic .NET Programming Language" available](https://osherove.com/blog/2004/4/5/sample-chapter-from-quotthe-visual-basic-net-programming-lan.html) - Mar 31, 2004 ### [VS.Net Database Projects - learn to use them (Sample chapter included)](https://osherove.com/blog/2004/3/31/vsnet-database-projects-learn-to-use-them-sample-chapter-inc.html) - Jan 16, 2004 ### [Three free recipes from "ADO.NET Cookbook"](https://osherove.com/blog/2004/1/16/three-free-recipes-from-quotadonet-cookbookquot.html) - Jan 14, 2004 ### [Code Complete 2. Good, but not a silver bullet](https://osherove.com/blog/2004/1/14/code-complete-2-good-but-not-a-silver-bullet.html) --- title: "Interesting stuff I missed this week" url: "https://osherove.com/blog/2004/3/5/interesting-stuff-i-missed-this-week.md" canonical: "https://osherove.com/blog/2004/3/5/interesting-stuff-i-missed-this-week.html" published: "2004-03-05T21:26:00" updated: "2004-03-05T21:26:00" tags: [".Net Quotations", "Cool Articles", "Cool Tools"] author: "Roy Osherove" description: "I need to remind myself : I need to check out the outlook search plugin P/Invoke Interop Headers for C# - Every tried to write a P/Invoke signature by hand? It can be challenging for some parts of the Win32 API.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Interesting stuff I missed this week By Roy Osherove March 5, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published March 5, 2004; technical details may be outdated. I need to remind myself : - I need to check out the [outlook search plugin](http://blogs.officezealot.com/MT/mt-tb.cgi?__mode=view&entry_id=407) - [P/Invoke Interop Headers for C#](http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=f1dd70e4-c212-4a6f-bff7-c82e34c8836f) - Every tried to write a P/Invoke signature by hand? It can be challenging for some parts of the Win32 API. Although of course, it is so much better when you don't have to do this. \[via [Brad Abrams](http://blogs.msdn.com/brada/archive/2004/02/28/81586.aspx)\]  (via [Peter](http://www.peterprovost.org/weblog/PermaLink.aspx?guid=43df90f2-cc65-42b3-ae15-0b0390c0d552)) - [Testing ASP.NTE Applications with NUnitASP and NUnit](http://www.theserverside.net/articles/article.aspx?l=TestingASP) - A handy step-by-step guide from Justin Gehtland. (this and the next one via [LarkWare](http://www.larkware.com/)) - [Advanced Unit Test, Part V - Unit Test Patterns](http://www.codeproject.com/gen/design/autp5.asp) - Marc Clifton considers his excellent series formalizing unit testing. - Stuff I did not know about [inline **DevDoc** documentation](http://www.hanselman.com/blog/PermaLink.aspx?guid=e5aebe9b-2bec-493c-bab1-3cbf88f459c1) (sadly only for C#?) - [Some things **do** have a happy ending](http://hdconsultants.us/archive/2004/03/05/481.aspx). Frans's [reported Code Theft](http://weblogs.asp.net/fbouma/archive/2004/02/29/81692.aspx) was magically solved after a [quick ping](http://slashdot.org/article.pl?sid=04/03/03/230230) up to the SlashDot gods, by Shannon J. Hagger. Coolness. - Read the [latest MSDN magazine](http://msdn.microsoft.com/msdnmag/issues/04/04/default.aspx), especially the parts about using the [.Net Profiling API](http://www.furrygoat.com/archives/000522.html#000522)s (via [FurryGoat](http://www.furrygoat.com/archives/000924.html)) - [BIG VISIBLE CHARTS](http://www.xprogramming.com/xpmag/BigVisibleCharts.htm) is a good way to go on a project. I agree. - [Slate](http://www.slate.com/) launched [their RSS feed](http://slate.msn.com/rss/) today, and with it, published an excellent [**introduction to RSS article**](http://slate.msn.com/id/2096660/) by [Paul Boutin](http://paulboutin.weblogger.com/). (via [Luke](http://www.hutteman.com/weblog/2004/03/04-167.html)) - The [Offline Application Block](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/offline-ch03.asp) went live (via [The Technologist](http://blog.thetechnologist.net/PermaLink,guid,d3c4e8e9-1c3e-4732-9940-c23684f6ebfb.aspx)) (yeah I know I'm late on that one) - [The Technologist](http://blog.thetechnologist.net/) Also has a very detailed article : [The life of an HTTP Request](http://blog.thetechnologist.net/PermaLink,guid,2212a7d2-5a91-4d14-8365-e11698c19dee.aspx). Looks like everything I ever wanted to know, or didn't even know there was in the ASP.Net Request process. - The more I [hear](http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3255928243) and [read](http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3255203065) about _SmallTalk_, the more I feel like I'm missing something incredibly good. I just wish I had a working incentive to check it out more professionaly. - [](https://www.amazon.com/exec/obidos/subst/xs/syndicate.html/102-2669021-0554567)[Amazon](https://osherove.com/blog/2004/3/5/www.amazon.com) now has a ton of predefined search feeds. Wow. (via [Cincom](http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3255792672)) - If you use Borland Tools, [check out their feeds](http://news.borland.com/). Lots of good content for that developer community.... (again via [Cincom](http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3255678614)) - If I need to start learning about Indigo from the start, [this is where I would start](http://msdn.microsoft.com/theshow/episode040/default.asp). - Ooh! [FreeTextBox](http://www.freetextbox.com/) 2.0 has been released! (via [Scott](http://scottwater.com/blog/archive/2004/03/01/11470.aspx)) - [Useful .NET Performance Links](http://weblogs.asp.net/mdavey/archive/2004/03/05/84331.aspx) - [FindStr.exe](http://blogs.regexadvice.com/DNeimke/archive/2004/02/29/664.aspx) - an egrep-like tool (Find in files based on regex). And here's a good [how to use it](http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/findstr.mspx) article. (both via [Darren](http://blogs.regexadvice.com/DNeimke/archive/2004/02/29/664.aspx)) Enough for now. Maybe more later... ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 10, 2004 ### [Calling managed functions from unmanaged code](https://osherove.com/blog/2004/3/10/calling-managed-functions-from-unmanaged-code.html) - Mar 6, 2004 ### [Developers.org.il - The Israeli developers site](https://osherove.com/blog/2004/3/6/developersorgil-the-israeli-developers-site.html) - Mar 4, 2004 ### [Application Security through Active Directory and ADAM](https://osherove.com/blog/2004/3/4/application-security-through-active-directory-and-adam.html) - Feb 29, 2004 ### [Problem And Solution: "Login failes for some users on a DotNetNuke based portal"](https://osherove.com/blog/2004/2/29/problem-and-solution-quotlogin-failes-for-some-users-on-a-do.html) --- title: "MSDN Connected in Israel? hopefully." url: "https://osherove.com/blog/2004/3/5/msdn-connected-in-israel-hopefully.md" canonical: "https://osherove.com/blog/2004/3/5/msdn-connected-in-israel-hopefully.html" published: "2004-03-05T12:38:00" updated: "2004-03-05T12:38:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Hmm. this MSDN Connection program sounds good. I hear it might be coming to Israel real soon. Though I have to say, if someone does reach the “dedicated member” status, most of the things you get there, you probably…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSDN Connected in Israel? hopefully. By Roy Osherove March 5, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 5, 2004; technical details may be outdated. Hmm. this [MSDN Connection](http://www.microsoft.com/australia/msdn/connection/default.aspx) program sounds good. I hear it might be coming to Israel real soon. Though I have to say, if someone does reach the “dedicated member” status, most of the things you get there, you probably already have, or find them unneeded. I think you should get some really cool stuff if you're at that level. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 13, 2004 ### [IrfanVIew - simpler, faster, and FREE](https://osherove.com/blog/2004/3/13/irfanview-simpler-faster-and-free.html) - Mar 11, 2004 ### [1001 posts](https://osherove.com/blog/2004/3/11/1001-posts.html) - Mar 4, 2004 ### [New Job](https://osherove.com/blog/2004/3/4/new-job.html) - Feb 27, 2004 ### [Happy Birthday (or: throwing your wife from an airplane for good causes)](https://osherove.com/blog/2004/2/27/happy-birthday-or-throwing-your-wife-from-an-airplane-for-go.html) --- title: "Application Security through Active Directory and ADAM" url: "https://osherove.com/blog/2004/3/4/application-security-through-active-directory-and-adam.md" canonical: "https://osherove.com/blog/2004/3/4/application-security-through-active-directory-and-adam.html" published: "2004-03-04T15:54:00" updated: "2004-03-04T15:54:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "One of the things we're dealing with here is application security and authorization for users (authentication). Craig McMurtry has a great series on implementing application security using AD (Active Directory) and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Application Security through Active Directory and ADAM By Roy Osherove March 4, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published March 4, 2004; technical details may be outdated. One of the things we're dealing with here is application security and authorization for users (authentication). [Craig McMurtry](http://blogs.msdn.com/craigmcmurtry/) has a great series on implementing application security using AD (Active Directory) and ADAM(AD application mode) in which you use the organization's active directory to add user permissions to stuff. It's divided to parts, [here's part one](http://blogs.msdn.com/craigmcmurtry/archive/2004/02/20/76993.aspx) _(lots of parts in the middle...)_ [here's the latest part (14)](http://blogs.msdn.com/craigmcmurtry/archive/2004/02/20/76993.aspx) looks very promising. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 6, 2004 ### [Developers.org.il - The Israeli developers site](https://osherove.com/blog/2004/3/6/developersorgil-the-israeli-developers-site.html) - Mar 5, 2004 ### [Interesting stuff I missed this week](https://osherove.com/blog/2004/3/5/interesting-stuff-i-missed-this-week.html) - Feb 29, 2004 ### [Problem And Solution: "Login failes for some users on a DotNetNuke based portal"](https://osherove.com/blog/2004/2/29/problem-and-solution-quotlogin-failes-for-some-users-on-a-do.html) - Feb 24, 2004 ### [Getting a little closer to SOA](https://osherove.com/blog/2004/2/24/getting-a-little-closer-to-soa.html) --- title: "New Job" url: "https://osherove.com/blog/2004/3/4/new-job.md" canonical: "https://osherove.com/blog/2004/3/4/new-job.html" published: "2004-03-04T15:37:00" updated: "2004-03-04T15:37:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Yeah, I've been busy. Real busy. That is, I no longer can get up at 11:00 and go to sleep at 6 AM kinda busy. On Sunday I've signed up to start a full time job at Magen , a Microsoft Technology Center (not Microsoft,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Job By Roy Osherove March 4, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 4, 2004; technical details may be outdated. Yeah, I've been busy. **Real** busy. That is, I no longer can get up at 11:00 and go to sleep at 6 AM kinda busy. On Sunday I've signed up to start a full time job at [Magen](http://www.magen.com/), a Microsoft Technology Center (not Microsoft, but a private company) located in Israel as a dev lead. I started on Monday and ever since I've been heads down trying to get into the main stream and start swimming with the big sharks. Alas, I had no time to blog or even _read_ blogs for the past week :( However, that does not mean I will stop. **Nope**. One thing that I _insisted_ on was the that I would be able to continue my community efforts. So, you'll still see me on the [17th of this month at the C# user's group](http://www.ildotnet.com/), I'll keep grooming and nurturing my new [web-baby](http://www.ildotnet.com/), I'll be at Tech-Ed, and continue to have the fun I had when I was on my own. Only now, from this place, I'll be able to “jump” to new heights of understanding, resources and overall level of work. It feels like an amazing opportunity and I **really** don't wanna screw this up. So far it's been a rush of a zillion things to learn, a million people to meet and 100,000 directories to remember.  Need..sleep.. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 11, 2004 ### [1001 posts](https://osherove.com/blog/2004/3/11/1001-posts.html) - Mar 5, 2004 ### [MSDN Connected in Israel? hopefully.](https://osherove.com/blog/2004/3/5/msdn-connected-in-israel-hopefully.html) - Feb 27, 2004 ### [Happy Birthday (or: throwing your wife from an airplane for good causes)](https://osherove.com/blog/2004/2/27/happy-birthday-or-throwing-your-wife-from-an-airplane-for-go.html) - Feb 25, 2004 ### [Thanks for the System.Web.Mail FAQ, Dave](https://osherove.com/blog/2004/2/25/thanks-for-the-systemwebmail-faq-dave.html) --- title: "Problem And Solution: \"Login failes for some users on a DotNetNuke based portal\"" url: "https://osherove.com/blog/2004/2/29/problem-and-solution-quotlogin-failes-for-some-users-on-a-do.md" canonical: "https://osherove.com/blog/2004/2/29/problem-and-solution-quotlogin-failes-for-some-users-on-a-do.html" published: "2004-02-29T20:21:00" updated: "2004-02-29T20:21:00" tags: [".Net Quotations", "Tips & Tricks"] author: "Roy Osherove" description: "This was bothering me for a while now, but I've figured it out. If you're DotNetNuke based site suffers from the “Impossible Login Phantom” problem which is described as: “Some of my users can login to the site just…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Problem And Solution: "Login failes for some users on a DotNetNuke based portal" By Roy Osherove February 29, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published February 29, 2004; technical details may be outdated. This was bothering me for a while now, but I've figured it out. If you're DotNetNuke based site suffers from the “Impossible Login Phantom” problem which is described as: _“Some of my users can login to the site just fine, but some try to login and nothing happens, they just get back into the login dialog with no feedback of what the problem is. ”_ You're in good company. The solution to this is problem is pretty simple: this is a **cookie issue**. The users need to allow third party cookies. That means that - in IE, go to Tools->Internet options->Privacy tab. - Set the slider to “Low“ if it was higher than that. That's it. If the slider was already “Low” or lower, I can't help you, but it certainly solved the issue for me. Now, [www.ILDotNet.com](http://www.ildotnet.com/) can function again. Hope to see you there (If you're from Israel). Found the solution through this asp.net forum: [http://www.asp.net/Forums/ShowPost.aspx?tabindex=1&PostID=490595](http://www.asp.net/Forums/ShowPost.aspx?tabindex=1&PostID=490595) _Note: It's not that I **don't** want to see you there if you're **not** from Israel, it's just that it's a site for Israeli .Net User. groups. Deal with it :)_ **Update**: There are better, a little more secure ways to allow this. I outline them [in this page](http://royo.is-a-geek.com/ISerializable/DesktopDefault.aspx?tabid=69). ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 5, 2004 ### [Interesting stuff I missed this week](https://osherove.com/blog/2004/3/5/interesting-stuff-i-missed-this-week.html) - Mar 4, 2004 ### [Application Security through Active Directory and ADAM](https://osherove.com/blog/2004/3/4/application-security-through-active-directory-and-adam.html) - Feb 24, 2004 ### [Getting a little closer to SOA](https://osherove.com/blog/2004/2/24/getting-a-little-closer-to-soa.html) - Feb 24, 2004 ### [\[Book\] Extreme programming adventures in C#](https://osherove.com/blog/2004/2/24/book-extreme-programming-adventures-in-c.html) --- title: "Happy Birthday (or: throwing your wife from an airplane for good causes)" url: "https://osherove.com/blog/2004/2/27/happy-birthday-or-throwing-your-wife-from-an-airplane-for-go.md" canonical: "https://osherove.com/blog/2004/2/27/happy-birthday-or-throwing-your-wife-from-an-airplane-for-go.html" published: "2004-02-27T20:42:00" updated: "2004-02-27T20:42:00" tags: ["Off Topic"] author: "Roy Osherove" description: "'twas a good weekend start, and one day still left! Thursday night (official work week end, Friday we don't work, but Sunday we do) Tal and me went to a dance club (TLV if you know it) and partied like it was 1999.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Happy Birthday (or: throwing your wife from an airplane for good causes) By Roy Osherove February 27, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 27, 2004; technical details may be outdated. 'twas a good weekend start, and one day still left! Thursday night (official work week end, Friday we don't work, but Sunday we do) Tal and me went to a dance club (TLV if you know it) and partied like it was 1999. Really - I was wiggling my tush for 3.5 hours straight and could not get enough of the great music, great sound and amazing club arrangement. Today I gave Tal her birthday present. It was a surprise present and she didn't know up until 5 minutes before what it was going to be. Her birthday was last week but we I decided to give the “present” on a separate occasion due to time constraints. So, after partying all night at the club, we went to sleep at about 4.30am. I made us get up at 9am and told her to put on some comfortable clothes, hiking shoes and something to read. We drove about 40 minutes up north (near Zichron) and went up to a beach called “habonim” which is a beautiful stretch of sandy beach with lots of water sports stuff. I then let her know that today she was going to **skydive** from 12,000 feet, falling for **55** seconds at an air speed of about **200 km per hour**, followed by about 3-4 minutes of parachuting over an amazing view of our shoreline. All this was going to be photographed, videoed and packaged for us when we finish this, about 2 hours later. The look on her face when I told her was worth all the planning. We got to the small air strip where a small plane kept taking up skydivers, young and old, newbies and experienced, 14 at a time, and dropping them right above our heads. Man it was beautiful. When the skydive was done and I came to meet her in the landing zone the smile on her face could have lit up a thousand dark cubicles, and it lasted for the rest of the day. Probably will last for the rest of the week. Yep, I won some points today. Sad thing, like any good husband I know it's not going to last long. It never does ;) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Mar 5, 2004 ### [MSDN Connected in Israel? hopefully.](https://osherove.com/blog/2004/3/5/msdn-connected-in-israel-hopefully.html) - Mar 4, 2004 ### [New Job](https://osherove.com/blog/2004/3/4/new-job.html) - Feb 25, 2004 ### [Thanks for the System.Web.Mail FAQ, Dave](https://osherove.com/blog/2004/2/25/thanks-for-the-systemwebmail-faq-dave.html) - Feb 24, 2004 ### [.Net Rocks bullet points](https://osherove.com/blog/2004/2/24/net-rocks-bullet-points.html) --- title: "ILdotNet - Israel's .Net User Group Information Center" url: "https://osherove.com/blog/2004/2/26/ildotnet-israels-net-user-group-information-center.md" canonical: "https://osherove.com/blog/2004/2/26/ildotnet-israels-net-user-group-information-center.html" published: "2004-02-26T00:56:00" updated: "2004-02-26T00:56:00" tags: [".Net Original"] author: "Roy Osherove" description: "(this only applies to folks living in Israel) I got tired of always looking up some specific user group's site, and what's the next meeting and all that. So I made this site: www.ilDotNet.com Here are the current site…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ILdotNet - Israel's .Net User Group Information Center By Roy Osherove February 26, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published February 26, 2004; technical details may be outdated. _(this only applies to folks living in Israel)_ I got tired of always looking up some specific user group's site, and what's the next meeting and all that. So I made this site: [www.ilDotNet.com](http://www.ildotnet.com/) Here are the current site features: - A **calendar** showing the user group meetings and other .Net events for the next month. - **Downloads**: Links to download all the latest slides and code from all the user group meetings in the last month. - **Contact info** to all the user group leaders (you might want to suggest topics and such) - links to all the **user groups** - **Site news** \- you can subscribe via RSS. These will include news of important stuff in the .Net community and whatever else I can think of. - A few bugs and glitches here and there. I need good people to help me administrate this site and help me add content. Contact me through the “Share with us” link on the main page if you want to help. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 10, 2004 ### [Mortal Sin: Translating technical terms](https://osherove.com/blog/2004/3/10/mortal-sin-translating-technical-terms.html) - Mar 10, 2004 ### [Logging block: RTFM](https://osherove.com/blog/2004/3/10/logging-block-rtfm.html) - Feb 23, 2004 ### [Asp.Net slider control?](https://osherove.com/blog/2004/2/23/aspnet-slider-control.html) - Feb 22, 2004 ### [.Net user group review: BizTalk rules engine](https://osherove.com/blog/2004/2/22/net-user-group-review-biztalk-rules-engine.html) --- title: "Thanks for the System.Web.Mail FAQ, Dave" url: "https://osherove.com/blog/2004/2/25/thanks-for-the-systemwebmail-faq-dave.md" canonical: "https://osherove.com/blog/2004/2/25/thanks-for-the-systemwebmail-faq-dave.html" published: "2004-02-25T21:08:00" updated: "2004-02-25T21:08:00" tags: ["Cool sites", "Off Topic"] author: "Roy Osherove" description: "I just wanted to take the stage to thank Dave Wanta for putting up the site “ System.Web.Mail FAQ ”. It just saved me from some really obscure problem. Dave also has many other very helpful endeavors and is seriously…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Thanks for the System.Web.Mail FAQ, Dave By Roy Osherove February 25, 2004 In [Cool sites](https://osherove.com/blog/category/cool-sites), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 25, 2004; technical details may be outdated. I just wanted to take the stage to thank [Dave Wanta](http://weblogs.asp.net/dwanta) for putting up the site “[System.Web.Mail FAQ](http://www.systemwebmail.com/aboutme.aspx)”. It just saved me from some really obscure problem. Dave also has many [other very helpful endeavors](http://www.systemwebmail.com/aboutme.aspx) and is seriously one of the most helping and technology devoted guys around. Thanks Dave. ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Aug 10, 2004 ### [What works and what does not work on Virtual PC 2004](https://osherove.com/blog/2004/8/10/what-works-and-what-does-not-work-on-virtual-pc-2004.html) - Jun 21, 2004 ### [Microsoft Research introduces RSS Feeds, \*finally\*](https://osherove.com/blog/2004/6/21/microsoft-research-introduces-rss-feeds-finally.html) - Feb 6, 2004 ### [The Best Unit Test framework in town](https://osherove.com/blog/2004/2/6/the-best-unit-test-framework-in-town.html) - Jan 25, 2004 ### [Scheduling games](https://osherove.com/blog/2004/1/25/scheduling-games.html) --- title: "Getting a little closer to SOA" url: "https://osherove.com/blog/2004/2/24/getting-a-little-closer-to-soa.md" canonical: "https://osherove.com/blog/2004/2/24/getting-a-little-closer-to-soa.html" published: "2004-02-24T13:30:00" updated: "2004-02-24T13:30:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Fabrice has written a very good and informative article about what SOA (Service Oriented Architecture) is all about. Getting a little closer to SOA If you're not sure what SOA really means, but you keep hearing this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Getting a little closer to SOA By Roy Osherove February 24, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published February 24, 2004; technical details may be outdated. [Fabrice](http://weblogs.asp.net/fmarguerie/archive/2004/02/24/79116.aspx) has written a very good and informative article about what SOA (Service Oriented Architecture) is all about. [Getting a little closer to SOA](http://www.dotnetguru.org/us/modules.php?op=modload&name=News&file=article&sid=19&mode=thread&order=0&thold=0) If you're not sure what SOA really means, but you keep hearing this phrase buzzing over your head, this is a very good place to start. I particularly like that Fabrice does not go overboard with drinking the kool-aid and shows a real world implementation and considerations for when and if you should move into a more SOA like implementation. It's not all black and white and I for one don't like technologies and concepts such as this to be as changing as clothing  fashion. In fact, I bet we're going to see a title in the near future that says “SOA is the new black“. Ugh. Fabrice seems to have the right tone of things: not too fast, but just enough to get you going. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Mar 4, 2004 ### [Application Security through Active Directory and ADAM](https://osherove.com/blog/2004/3/4/application-security-through-active-directory-and-adam.html) - Feb 29, 2004 ### [Problem And Solution: "Login failes for some users on a DotNetNuke based portal"](https://osherove.com/blog/2004/2/29/problem-and-solution-quotlogin-failes-for-some-users-on-a-do.html) - Feb 24, 2004 ### [\[Book\] Extreme programming adventures in C#](https://osherove.com/blog/2004/2/24/book-extreme-programming-adventures-in-c.html) - Feb 22, 2004 ### [Pair Programming analysis - illuminating!](https://osherove.com/blog/2004/2/22/pair-programming-analysis-illuminating.html) --- title: ".Net Rocks bullet points" url: "https://osherove.com/blog/2004/2/24/net-rocks-bullet-points.md" canonical: "https://osherove.com/blog/2004/2/24/net-rocks-bullet-points.html" published: "2004-02-24T08:11:00" updated: "2004-02-24T08:11:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Just a few quick notes about .Net rocks . The show with Brian Noyes (3 shows ago) was one of the best rundowns on Smart Clients (auto deployed) applications I've heard. Highly recommended. Still have not listened to the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Rocks bullet points By Roy Osherove February 24, 2004 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 24, 2004; technical details may be outdated. Just a few quick notes about [.Net rocks](http://www.franklins.net/dotnetrocks). - [The show with Brian Noyes](http://www.franklins.net/fnetdotnetrocks/dotnetrocks.aspx?showid=48) (3 shows ago) was one of the best rundowns on Smart Clients (auto deployed) applications I've heard. Highly recommended. - Still have not listened to the last [live show with ScottH](http://www.franklins.net/fnetdotnetrocks/dotnetrocks.aspx?showid=52) but my car CD is primed and ready for it. - I'm never going to be able to take part in the live show because it takes place on a Friday evening for me, which is “dinner with family before Saturday“ time. :( I wish you guys would reconsider doing it on Thursday or Saturday, but hey, for a country as small as Israel I don't expect much. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Mar 13, 2004 ### [Why is RSS adoption so low? Here's why.](https://osherove.com/blog/2004/3/13/why-is-rss-adoption-so-low-heres-why.html) - Mar 11, 2004 ### [1001 posts](https://osherove.com/blog/2004/3/11/1001-posts.html) - Feb 18, 2004 ### [Israeli .Net Bloggers](https://osherove.com/blog/2004/2/18/israeli-net-bloggers.html) - Feb 15, 2004 ### ["How do I open a weblog here?"](https://osherove.com/blog/2004/2/15/quothow-do-i-open-a-weblog-herequot.html) --- title: "[Book] Extreme programming adventures in C#" url: "https://osherove.com/blog/2004/2/24/book-extreme-programming-adventures-in-c.md" canonical: "https://osherove.com/blog/2004/2/24/book-extreme-programming-adventures-in-c.html" published: "2004-02-24T06:54:00" updated: "2004-02-24T06:54:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Ron Jefferies has released his book: Extreme programming adventures in C# Although from the editorial chatter it looks like its mainly aimed at learning the basic skills (What is NUnit.. and so on) I'm probably going to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Book\] Extreme programming adventures in C\# By Roy Osherove February 24, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published February 24, 2004; technical details may be outdated. Ron Jefferies has released his book: [Extreme programming adventures in C#](https://www.amazon.com/exec/obidos/ASIN/0735619492/iserializable-20) Although from the editorial chatter it looks like its mainly aimed at learning the basic skills (What is NUnit.. and so on) I'm probably going to get it anyway, just to see if there are some hidden nuggets. Overall I'd recommend it if you havn't had any XP experience and want to see what all the fuss is about. (link via [Eric](http://blogs.msdn.com/ericgu/archive/2004/02/23/78701.aspx)) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Feb 29, 2004 ### [Problem And Solution: "Login failes for some users on a DotNetNuke based portal"](https://osherove.com/blog/2004/2/29/problem-and-solution-quotlogin-failes-for-some-users-on-a-do.html) - Feb 24, 2004 ### [Getting a little closer to SOA](https://osherove.com/blog/2004/2/24/getting-a-little-closer-to-soa.html) - Feb 22, 2004 ### [Pair Programming analysis - illuminating!](https://osherove.com/blog/2004/2/22/pair-programming-analysis-illuminating.html) - Feb 22, 2004 ### [\[Cool Tool\] CodeSmith 2.5](https://osherove.com/blog/2004/2/22/cool-tool-codesmith-25.html) --- title: "38% evil" url: "https://osherove.com/blog/2004/2/23/38-evil.md" canonical: "https://osherove.com/blog/2004/2/23/38-evil.html" published: "2004-02-23T19:46:00" updated: "2004-02-23T19:46:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Chris made me do it." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 38% evil By Roy Osherove February 23, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 23, 2004; technical details may be outdated. [Chris](http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=1143) made me do it. [![This site is certified 38% EVIL by the Gematriculator](https://osherove.com/img/wb/d7d0481a_homokaasu.org_pics_g_e38.jpg)](http://homokaasu.org/gematriculator/?referer) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 25, 2004 ### [Thanks for the System.Web.Mail FAQ, Dave](https://osherove.com/blog/2004/2/25/thanks-for-the-systemwebmail-faq-dave.html) - Feb 24, 2004 ### [.Net Rocks bullet points](https://osherove.com/blog/2004/2/24/net-rocks-bullet-points.html) - Feb 22, 2004 ### [A Power-Point mystery](https://osherove.com/blog/2004/2/22/a-power-point-mystery.html) - Feb 19, 2004 ### [Weekend off](https://osherove.com/blog/2004/2/19/weekend-off.html) --- title: "Asp.Net slider control?" url: "https://osherove.com/blog/2004/2/23/aspnet-slider-control.md" canonical: "https://osherove.com/blog/2004/2/23/aspnet-slider-control.html" published: "2004-02-23T08:42:00" updated: "2004-02-23T08:42:00" tags: [".Net Original"] author: "Roy Osherove" description: "A friend is trying to implement a slider control in an ASP.Net page. Know any good control for download to do this out of the box? should have server events as well. I can't find any, and maybe ActiveX is not the best…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Asp.Net slider control? By Roy Osherove February 23, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published February 23, 2004; technical details may be outdated. A friend is trying to implement a slider control in an ASP.Net page. Know any good control for download to do this out of the box? should have server events as well. I can't find any, and maybe ActiveX is not the best solution... The idea is trying to control an embedded media player (or other player) using the control and not depending on the inartistic controls that come with each player. BTW: this is a nice reference (and it says there is no slider for asp.net): [Controls and Programmable Objects Compared in Different Languages and Libraries](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vxgrfLanguageEquivalentsProgrammableObjects.asp) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 10, 2004 ### [Logging block: RTFM](https://osherove.com/blog/2004/3/10/logging-block-rtfm.html) - Feb 26, 2004 ### [ILdotNet - Israel's .Net User Group Information Center](https://osherove.com/blog/2004/2/26/ildotnet-israels-net-user-group-information-center.html) - Feb 22, 2004 ### [.Net user group review: BizTalk rules engine](https://osherove.com/blog/2004/2/22/net-user-group-review-biztalk-rules-engine.html) - Feb 22, 2004 ### [\[Book\] Writing Secure Code, 2nd Edition](https://osherove.com/blog/2004/2/22/book-writing-secure-code-2nd-edition.html) --- title: "Pair Programming analysis - illuminating!" url: "https://osherove.com/blog/2004/2/22/pair-programming-analysis-illuminating.md" canonical: "https://osherove.com/blog/2004/2/22/pair-programming-analysis-illuminating.html" published: "2004-02-22T20:11:00" updated: "2004-02-22T20:11:00" tags: [".Net Quotations", "Agile Related"] author: "Roy Osherove" description: "This is a must read if you have ever heard about pair programming and thought “never gonna work“. Be sure to download the PDF as well as it contains very good pictures that show how the developer space is laid out.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Pair Programming analysis - illuminating! By Roy Osherove February 22, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Agile Related](https://osherove.com/blog/category/agile-related) **Historical article** · Originally published February 22, 2004; technical details may be outdated. [This is a must read](http://www.menloinstitute.com/freestuff/whitepapers/pairedprogramming_qanda.htm) if you have ever heard about pair programming and thought “never gonna work“. Be sure to download the PDF as well as it contains very good pictures that show how the developer space is laid out. (don't mind the wall colors though. It's all about allowing people to sit together on the same machine. It could easily have been a big enough workspace in a good office) Yes, it's revolutionary, but it's been here for a while. Yes, it's weird, but it works. I was in Norway when I first paired up some devs and have seen the amazing productivity boosting it generates, not to mention less bugs and more communication. (link via [Steven Smith](http://blogs.aspadvice.com/ssmith/archive/2004/02/22/598.aspx)) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Feb 24, 2004 ### [Getting a little closer to SOA](https://osherove.com/blog/2004/2/24/getting-a-little-closer-to-soa.html) - Feb 24, 2004 ### [\[Book\] Extreme programming adventures in C#](https://osherove.com/blog/2004/2/24/book-extreme-programming-adventures-in-c.html) - Feb 22, 2004 ### [\[Cool Tool\] CodeSmith 2.5](https://osherove.com/blog/2004/2/22/cool-tool-codesmith-25.html) - Feb 21, 2004 ### [More Lookup table techniques](https://osherove.com/blog/2004/2/21/more-lookup-table-techniques.html) --- title: "A Power-Point mystery" url: "https://osherove.com/blog/2004/2/22/a-power-point-mystery.md" canonical: "https://osherove.com/blog/2004/2/22/a-power-point-mystery.html" published: "2004-02-22T19:58:00" updated: "2004-02-22T19:58:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Here's one for Raymond Chen , since he likes to dig into these things. Why the hell is the “continue from current slide” button in PowerPoint so darn small and unreachable? Many a times have I seen the poor presenter…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Power-Point mystery By Roy Osherove February 22, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 22, 2004; technical details may be outdated. Here's one for [Raymond Chen](http://blogs.msdn.com/oldnewthing/), since he likes to dig into these things. Why **the hell** is the “continue from current slide” button in PowerPoint so darn small and unreachable? Many a times have I seen the poor presenter struggling to put the cursor directly above the hellish icon to the lower left only to click a different icon by mistake, and repeatedly trying to use the darn laptop touchpad to navigate back to the icon. It looks bad, it _feels_ bad. it **is** bad. Sure, it has a shortcut key (Shift+F5) but some people just rather use the mouse. Why make it so damn hard? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 24, 2004 ### [.Net Rocks bullet points](https://osherove.com/blog/2004/2/24/net-rocks-bullet-points.html) - Feb 23, 2004 ### [38% evil](https://osherove.com/blog/2004/2/23/38-evil.html) - Feb 19, 2004 ### [Weekend off](https://osherove.com/blog/2004/2/19/weekend-off.html) - Feb 17, 2004 ### [We Are Morons: a quick look at the Win2k source](https://osherove.com/blog/2004/2/17/we-are-morons-a-quick-look-at-the-win2k-source.html) --- title: "[Cool Tool] CodeSmith 2.5" url: "https://osherove.com/blog/2004/2/22/cool-tool-codesmith-25.md" canonical: "https://osherove.com/blog/2004/2/22/cool-tool-codesmith-25.html" published: "2004-02-22T19:47:00" updated: "2004-02-22T19:47:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "Ah. CodeSmith 2.5 is out with some nifty new features . If you don't know what CodeSmith is, you're missing on a very good and productivity enhancing tool, which is freeware. It saves you lots of typing and allows…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool Tool\] CodeSmith 2.5 By Roy Osherove February 22, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published February 22, 2004; technical details may be outdated. Ah. [CodeSmith](http://www.ericjsmith.net/codesmith/) 2.5 [is out with some nifty new features](http://weblogs.asp.net/ericjsmith/archive/2004/02/22/78020.aspx). If you don't know what CodeSmith is, you're missing on a very good and productivity enhancing tool, which is freeware. It saves you lots of typing and allows creating templates for code generation (that look much like ASP.NET code). If you put your mind to this tool you can creating some pretty nifty stuff with it. [Download and try it](http://www.ericjsmith.net/codesmith/). Personally, I've tried and liked it a lot. However, I never had much use for it for dev purposes. Mainly because I use [CodeSmart.Net](http://www.axtools.com/products/cs2k3net.htm) (which is not free) to take care of my automatic typing chores(and many other chores), but for a price of 0$  CodeSmith is **highly** recommended. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Feb 24, 2004 ### [\[Book\] Extreme programming adventures in C#](https://osherove.com/blog/2004/2/24/book-extreme-programming-adventures-in-c.html) - Feb 22, 2004 ### [Pair Programming analysis - illuminating!](https://osherove.com/blog/2004/2/22/pair-programming-analysis-illuminating.html) - Feb 21, 2004 ### [More Lookup table techniques](https://osherove.com/blog/2004/2/21/more-lookup-table-techniques.html) - Feb 18, 2004 ### [The .Net debugging experience - you can help make a difference](https://osherove.com/blog/2004/2/18/the-net-debugging-experience-you-can-help-make-a-difference.html) --- title: "The Regulator featured on RegexLib.com" url: "https://osherove.com/blog/2004/2/22/the-regulator-featured-on-regexlibcom.md" canonical: "https://osherove.com/blog/2004/2/22/the-regulator-featured-on-regexlibcom.html" published: "2004-02-22T19:29:00" updated: "2004-02-22T19:29:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "The Regulator , my Regex testing tool, has been named by Regexlib.com as their “recommended tool for testing regular expressions” and has been put up there in the front page. They also put up a resource page for many…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator featured on RegexLib.com By Roy Osherove February 22, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published February 22, 2004; technical details may be outdated. [The Regulator](http://royo.is-a-geek.com/iserializable/regulator/), my Regex testing tool, has been named by [Regexlib.com](http://www.regexlib.com/) as their “recommended tool for testing regular expressions” and has been put up there in the front page. They also put up a [resource page](http://www.regexlib.com/Resources.aspx) for many other regex testing tools, books, articles and links.  I'm totally flattered. [Regexlib.com](http://www.regexlib.com/) is a website dedicated to collecting and sharing regular expressions to parse almost anything. Anyone can register and post their own regular expressions that they've found interesting and helpful. You can too. [The Regulator](http://royo.is-a-geek.com/iserializable/regulator/) has tight integration with [Regexlib.](http://www.regexlib.com/)com's web service, which allows the user to search for regular expressions in regexlib.com's database from within the tool, and with a click import them and test them inside the program. It also features a “publish“ wizard which lets you post regular expressions onto regexlib.com directly from within The Regulator.Did I mention it's totally free? ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Mar 5, 2004 ### [Interesting stuff I missed this week](https://osherove.com/blog/2004/3/5/interesting-stuff-i-missed-this-week.html) - Feb 22, 2004 ### [\[Cool Tool\] CodeSmith 2.5](https://osherove.com/blog/2004/2/22/cool-tool-codesmith-25.html) - Feb 14, 2004 ### [\[Tool\] Cool Font\\Colors add-in for VS.NET](https://osherove.com/blog/2004/2/14/tool-cool-fontcolors-add-in-for-vsnet.html) - Feb 11, 2004 ### [\[Tool\] QuickJump - very nice and simple VS.Net add-in](https://osherove.com/blog/2004/2/11/tool-quickjump-very-nice-and-simple-vsnet-add-in.html) --- title: ".Net user group review: BizTalk rules engine" url: "https://osherove.com/blog/2004/2/22/net-user-group-review-biztalk-rules-engine.md" canonical: "https://osherove.com/blog/2004/2/22/net-user-group-review-biztalk-rules-engine.html" published: "2004-02-22T17:45:00" updated: "2004-02-22T17:45:00" tags: [".Net Original"] author: "Roy Osherove" description: "I met Memi today at the .Net architects user group. I knew Udi from before but Memi was news to me and he's a very nice guy. I think we're getting to that point where having a blogger dinner would not be a sad and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net user group review: BizTalk rules engine By Roy Osherove February 22, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published February 22, 2004; technical details may be outdated. I met [Memi](http://weblogs.asp.net/memi/) today at the .Net architects user group. I knew Udi from before but Memi was news to me and he's a very nice guy. I think we're getting to that point where having a blogger dinner would not be a sad and pathetic affair :) As for the meeting, it went well. It was all about using the BizTalk rules engine as a standalone API engine for rule based applications (BizTalk does not even have to be part of this). In the future we might start seeing the Rule engine come bundled in other frameworks (Project? VS.Net?) or maybe even a standalone version, but right now it's part of BizTalk so you need to install it. The presenter showed using the Engine API to evaluate and execute some rules on XML files and object references. Some points: - The Engine API is not so great. It's pretty cumbersome to add "facts" to the engine via code and some of the naming guidelines are plain "could be better". For example, to add an XML file as a fact for a ruke, you create a TypedXMLDocument and sent it as a parameter to a Policy object (which takes an Object in the constructor). Why not have some global "IFact" interface or a "FactHolder object to send this in? it's less readable. - It's hard to create the rules. As a matter of fact, I'd see more usability and business value in actually using [scripting in your .Net app](http://weblogs.asp.net/rosherove/articles/dotnetscripting.aspx) rather than use this engine. Would be easier and maybe even more maintainable. Performance and scalability problems can probably be addressed as well if though about enough. It's also more expensive with BizTalk. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Feb 26, 2004 ### [ILdotNet - Israel's .Net User Group Information Center](https://osherove.com/blog/2004/2/26/ildotnet-israels-net-user-group-information-center.html) - Feb 23, 2004 ### [Asp.Net slider control?](https://osherove.com/blog/2004/2/23/aspnet-slider-control.html) - Feb 22, 2004 ### [\[Book\] Writing Secure Code, 2nd Edition](https://osherove.com/blog/2004/2/22/book-writing-secure-code-2nd-edition.html) - Feb 21, 2004 ### [Iterating over collections - As simple as possible, but no simpler.](https://osherove.com/blog/2004/2/21/iterating-over-collections-as-simple-as-possible-but-no-simp.html) --- title: "[Book] Writing Secure Code, 2nd Edition" url: "https://osherove.com/blog/2004/2/22/book-writing-secure-code-2nd-edition.md" canonical: "https://osherove.com/blog/2004/2/22/book-writing-secure-code-2nd-edition.html" published: "2004-02-22T17:34:00" updated: "2004-02-22T17:34:00" tags: [".Net Original"] author: "Roy Osherove" description: "Ever since we got the book Writing Secure Code 2nd edition at DevDays, I've been reading about a chapter a day. I have to say that a subject that I thought was dull,boring and basically “un-learnable” suddenly takes new…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Book\] Writing Secure Code, 2nd Edition By Roy Osherove February 22, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published February 22, 2004; technical details may be outdated. Ever since we got the book [Writing Secure Code](https://www.amazon.com/exec/obidos/ASIN/0735617228/iserializable-20) 2nd edition at DevDays, I've been reading about a chapter a day. I have to say that a subject that I thought was dull,boring and basically “un-learnable” suddenly takes new life in my brain and I am both intrigued and shocked at how non-security-minded I've been, and so are many people I know. All I can say is that you need to [**get this book now**](https://www.amazon.com/exec/obidos/ASIN/0735617228/iserializable-20), and start reading. It feels heavy but the first 5 chapters deal with nothing but the “why”s and “how”s of learning and training and instilling security minded development in the organization and it was a breeze to read. I was afraid that I'd be quickly putting it down for being too much .. anything, but I was wrong. You should know a little C++\\C to get some of the sample code, but the main ideas are security concepts and not coding concepts, and they are pretty language agnostic. Even if you think you don't want to read it, you do. You really really do. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Feb 23, 2004 ### [Asp.Net slider control?](https://osherove.com/blog/2004/2/23/aspnet-slider-control.html) - Feb 22, 2004 ### [.Net user group review: BizTalk rules engine](https://osherove.com/blog/2004/2/22/net-user-group-review-biztalk-rules-engine.html) - Feb 21, 2004 ### [Iterating over collections - As simple as possible, but no simpler.](https://osherove.com/blog/2004/2/21/iterating-over-collections-as-simple-as-possible-but-no-simp.html) - Feb 19, 2004 ### [Mortal sin: Just "Doit"](https://osherove.com/blog/2004/2/19/mortal-sin-just-quotdoitquot.html) --- title: "More Lookup table techniques" url: "https://osherove.com/blog/2004/2/21/more-lookup-table-techniques.md" canonical: "https://osherove.com/blog/2004/2/21/more-lookup-table-techniques.html" published: "2004-02-21T22:49:00" updated: "2004-02-21T22:49:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Richard posts about a few different ways (and some of them are news to me) to avoid using a simple lookup table and relation in your DB for silly stuff like Gender(Male,female,unknown) or daysOfWeek. Really interesting.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More Lookup table techniques By Roy Osherove February 21, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published February 21, 2004; technical details may be outdated. [Richard posts about a few different ways](http://www.tallent.us/PermaLink.aspx?guid=4aa1a488-fa83-4df5-83e8-a2b218e75d75) (and some of them are news to me) to avoid using a simple lookup table and relation in your DB for silly stuff like Gender(Male,female,unknown) or daysOfWeek. Really interesting. I must say that I've always used the lookup table+ relation approach, simply because I did not know better. Next time I do this,I'll keep these ways in mind. Now, here's a tough question: Have you ever seen these ways explained in a book about data access or database manipulation techniques? I have'nt. Have I been reading the wrong books? which books do **you** recommend to learn about “real world” stuff such as this? Especially SQL server. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Feb 22, 2004 ### [Pair Programming analysis - illuminating!](https://osherove.com/blog/2004/2/22/pair-programming-analysis-illuminating.html) - Feb 22, 2004 ### [\[Cool Tool\] CodeSmith 2.5](https://osherove.com/blog/2004/2/22/cool-tool-codesmith-25.html) - Feb 18, 2004 ### [The .Net debugging experience - you can help make a difference](https://osherove.com/blog/2004/2/18/the-net-debugging-experience-you-can-help-make-a-difference.html) - Feb 18, 2004 ### [VS.Net multi language bug - 2.5 years and still going strong?](https://osherove.com/blog/2004/2/18/vsnet-multi-language-bug-25-years-and-still-going-strong.html) --- title: "Iterating over collections - As simple as possible, but no simpler." url: "https://osherove.com/blog/2004/2/21/iterating-over-collections-as-simple-as-possible-but-no-simp.md" canonical: "https://osherove.com/blog/2004/2/21/iterating-over-collections-as-simple-as-possible-but-no-simp.html" published: "2004-02-21T22:24:00" updated: "2004-02-21T22:24:00" tags: [".Net Original"] author: "Roy Osherove" description: "Weekend was amazing. 'Nuff said. Now for something completely different. Julie asks why not allow VB.Net developers have an easier and shorter syntax to use when iterating over collections: For Each cust as Customer in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Iterating over collections - As simple as possible, but no simpler. By Roy Osherove February 21, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published February 21, 2004; technical details may be outdated. Weekend was amazing. 'Nuff said. Now for something completely different. [Julie asks](http://www.julialermaninc.com/blog/PermaLink.aspx?guid=a750c076-94e8-4798-aba6-de7ef4dc1e64) why not allow VB.Net developers have an easier and shorter syntax to use when iterating over collections: **For Each cust as Customer in Customers  ... Next** _Why stop there?_ _Why do I even have to (re-)define what the objects in Customers are?_ _Why can't I just write_ _**for each whateverthehecktheobjectsareinmycollection in Customers  ... next**_ _and have .net look at that and say “well d'uh, I know what **whateverthehecktheobjectsareinmycollection** is going to be because Customers is filled with Customer objects, so I will just implicitly cast the **whateverthehecktheobjectsareinmycollection** to a Customer._ _?_ Well, if you did that you would lose the ability to use _polymorphism_, or, it would be too hard for the compiler to do for you. For example, You have a collection of objects that all implement 2 interfaces: _IAnimal_ and _ICarnivore_. Say that your collection is of strongly types with "_IAnimal_" but what you _really_ want to do is loop on all _ICarnivor_s in the collection and operate on their methods. How do you tell the compiler to do that? A solution would be to say "OK, you can use the old syntax **or** the new syntax,. With the new syntax the object defaults to whatever the collection is of (_IAnimal_ in this case). But that leads to **less readable code** (Remember what happens in VB6 when you declare something without specifying a type? It's a **variant**. And find me a good developer that says its OK to declare a variable as variant simply by omitting the type at declaration. None. It's simply less readable.)  The code in question is less readable because now the developer reading the code needs to look **inside** the loop to find out exactly what is the type of the iterator variable and how its going to be used. So, you're back to square one. It's more readable (and developer friendly) to declare what type(or interface) you're iterating for. Better readability is simply a side effect. The real benefit is the ability to use polymorphism of many different types over the same collection. PS The same claim can be said about the C# iteration syntax, where you also define the type of the iterator. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Feb 22, 2004 ### [.Net user group review: BizTalk rules engine](https://osherove.com/blog/2004/2/22/net-user-group-review-biztalk-rules-engine.html) - Feb 22, 2004 ### [\[Book\] Writing Secure Code, 2nd Edition](https://osherove.com/blog/2004/2/22/book-writing-secure-code-2nd-edition.html) - Feb 19, 2004 ### [Mortal sin: Just "Doit"](https://osherove.com/blog/2004/2/19/mortal-sin-just-quotdoitquot.html) - Feb 19, 2004 ### [Mortal sin: A non-relational relational database.](https://osherove.com/blog/2004/2/19/mortal-sin-a-non-relational-relational-database.html) --- title: "Weekend off" url: "https://osherove.com/blog/2004/2/19/weekend-off.md" canonical: "https://osherove.com/blog/2004/2/19/weekend-off.html" published: "2004-02-19T14:08:00" updated: "2004-02-19T14:08:00" tags: ["Off Topic"] author: "Roy Osherove" description: "ok. I'll get back to blogging after this weekend. Tal's birthday is upon us and we are going for a weekend in the south of israel. Happy birthday honey. I love you." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Weekend off By Roy Osherove February 19, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 19, 2004; technical details may be outdated. ok. I'll get back to blogging after this weekend. Tal's birthday is upon us and we are going for a weekend in the south of israel. **Happy birthday honey.** I love you. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 23, 2004 ### [38% evil](https://osherove.com/blog/2004/2/23/38-evil.html) - Feb 22, 2004 ### [A Power-Point mystery](https://osherove.com/blog/2004/2/22/a-power-point-mystery.html) - Feb 17, 2004 ### [We Are Morons: a quick look at the Win2k source](https://osherove.com/blog/2004/2/17/we-are-morons-a-quick-look-at-the-win2k-source.html) - Feb 17, 2004 ### [Community application blocks revisited - with a twist](https://osherove.com/blog/2004/2/17/community-application-blocks-revisited-with-a-twist.html) --- title: "Mortal sin: Just \"Doit\"" url: "https://osherove.com/blog/2004/2/19/mortal-sin-just-quotdoitquot.md" canonical: "https://osherove.com/blog/2004/2/19/mortal-sin-just-quotdoitquot.html" published: "2004-02-19T14:05:00" updated: "2004-02-19T14:05:00" tags: [".Net Original"] author: "Roy Osherove" description: "You've been there before, right? a big ass method (200-600 lines ) with a mess of SQL, logic and “SELECT * from...” in it. And it's called... “ Doit ”. Yep. I swear. But then it got worse. A method just as big, looks…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mortal sin: Just "Doit" By Roy Osherove February 19, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published February 19, 2004; technical details may be outdated. You've been there before, right? a big ass method (200-600 lines ) with a mess of SQL, logic and “SELECT \* from...” in it. And it's called... “**Doit**”. Yep. I swear. But then it got worse. A method just as big, looks practically the same, named... aha. “**Doit1**”. I kid you not. Can you guess the problems arising from such code, kids? Can you guess how many serial killers got started the day they had to maintain such code? Solution: **Don't Doit**. - Give a **good name** to your method that describes what it's trying to do. - Make sure it only does one task and calls other methods to do other stuff. - Learn what [Refactoring](https://www.amazon.com/exec/obidos/ASIN/0201485672/iserializable-20) means. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Feb 22, 2004 ### [\[Book\] Writing Secure Code, 2nd Edition](https://osherove.com/blog/2004/2/22/book-writing-secure-code-2nd-edition.html) - Feb 21, 2004 ### [Iterating over collections - As simple as possible, but no simpler.](https://osherove.com/blog/2004/2/21/iterating-over-collections-as-simple-as-possible-but-no-simp.html) - Feb 19, 2004 ### [Mortal sin: A non-relational relational database.](https://osherove.com/blog/2004/2/19/mortal-sin-a-non-relational-relational-database.html) - Feb 19, 2004 ### [Get your resource kit (and disregard the kit name)](https://osherove.com/blog/2004/2/19/get-your-resource-kit-and-disregard-the-kit-name.html) --- title: "Mortal sin: A non-relational relational database." url: "https://osherove.com/blog/2004/2/19/mortal-sin-a-non-relational-relational-database.md" canonical: "https://osherove.com/blog/2004/2/19/mortal-sin-a-non-relational-relational-database.html" published: "2004-02-19T11:55:00" updated: "2004-02-19T11:55:00" tags: [".Net Original"] author: "Roy Osherove" description: "[Update: I removed the reference to COBOL. It was taken the wrong way and did not add anything to the conversation. Sorry if I've hurt anyone. ] This sin is probably one of the most prevalent of the sins I've listed…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mortal sin: A non-relational relational database. By Roy Osherove February 19, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published February 19, 2004; technical details may be outdated. \[Update: I removed the reference to COBOL. It was taken the wrong way and did not add anything to the conversation. Sorry if I've hurt anyone. \] This sin is probably one of the most prevalent of the sins I've listed thus far. I've seen it in a lot of places but it takes its worst form when there are no relations at all in the database. I'm not talking about a 4 table DB here, I'm talking a full blown tens and hundreds of tables, almost all of them without a relation to save their life. This is a maintenance nightmare. The main reasons for this happening are usually: - Lack of knowledge\\experience building and designing relational databases - Getting the wrong hands to do the DB(People with no experience\\knowldge in DB design) - Not refactoring the DB when its time to. For example, you get new requirements and one of them turns a 1 to 1 relationship into a 1 to many relationship, but no one bothers to change the DB to accommodate. It's “too much work“. So they just pile up more rows or whatever else structures into the existing table instead. - After enough time has passed, you can't even refactor the DB anymore. Theres too much junk on it and anything you do breaks something terribly big. the main downsides: - You don't let the database provide an extra layer of confidence, especially data integrity rules, in which relational databases excel and make life very easy. - No one will be able to understand what the hell goes on in your DB without the dedicated help of the person who built it. That's trouble waiting to happen. - You won't be able to create pretty diagrams of the database with logical connections in them, although **mentally** these relations are there. They are just transparent and as weak as the code you wrote to protect them. You also won't be able to use automated code generators, object model generators and the like. Your DB is not speaking the universal language of DB description. **It's all in your head**. - Everyone will laugh at you in the newsgroups. (I bet that's the most potent argument yet!). Then again, if you create such a database, you probably don't read any newsgroups relating to these issues, do you? **Solution:** Get a good DBA already! Or, train someone in the fine art of relational databases. It's not that hard and it will save you huge amounts of money in the long run. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Feb 21, 2004 ### [Iterating over collections - As simple as possible, but no simpler.](https://osherove.com/blog/2004/2/21/iterating-over-collections-as-simple-as-possible-but-no-simp.html) - Feb 19, 2004 ### [Mortal sin: Just "Doit"](https://osherove.com/blog/2004/2/19/mortal-sin-just-quotdoitquot.html) - Feb 19, 2004 ### [Get your resource kit (and disregard the kit name)](https://osherove.com/blog/2004/2/19/get-your-resource-kit-and-disregard-the-kit-name.html) - Feb 18, 2004 ### [Stuff to know about the Data Application Block](https://osherove.com/blog/2004/2/18/stuff-to-know-about-the-data-application-block.html) --- title: "Get your resource kit (and disregard the kit name)" url: "https://osherove.com/blog/2004/2/19/get-your-resource-kit-and-disregard-the-kit-name.md" canonical: "https://osherove.com/blog/2004/2/19/get-your-resource-kit-and-disregard-the-kit-name.html" published: "2004-02-19T09:43:00" updated: "2004-02-19T09:43:00" tags: [".Net Original"] author: "Roy Osherove" description: "The ASP.Net Resource kit is now available for download . Don't ask any questions, just download it. Oh, and if you haven't downloaded the VB.Net resource kit , you should. Really. Even if you only do C# . It contains…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Get your resource kit (and disregard the kit name) By Roy Osherove February 19, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published February 19, 2004; technical details may be outdated. The [ASP.Net Resource kit](https://osherove.com/blog/2004/2/19/The%20ASP.Net%20Resource%20kit%20is%20now%20available%20for%20download.%20Don't%20ask%20any%20questions,%20just%20download%20it.) is now [available for download](http://www.microsoft.com/downloads/details.aspx?FamilyID=aef6aa76-ab88-4264-87b4-8e946ef584d7&DisplayLang=en). Don't ask any questions, just download it. Oh, and if you haven't downloaded the [VB.Net resource kit](http://msdn.microsoft.com/vbasic/vbrkit/), you should. Really. **Even if you only do C#**. It contains free controls(that usually cost a lot of money) and other cool stuff. Did you let yourself be fooled by the names? you should have learned by now that .Net is not about names, it's about the framework. That's why even though there are about 5 different user groups in Israel that deal with .Net(C#,VB.Net,Web...and so on) you benefit from each and everyone of them no matter what you actually do with .Net. Because, you guessed it, it's all about the underlying framework. Know the classes and you have your ticket to success. Syntax is just icing on the cake. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Feb 19, 2004 ### [Mortal sin: Just "Doit"](https://osherove.com/blog/2004/2/19/mortal-sin-just-quotdoitquot.html) - Feb 19, 2004 ### [Mortal sin: A non-relational relational database.](https://osherove.com/blog/2004/2/19/mortal-sin-a-non-relational-relational-database.html) - Feb 18, 2004 ### [Stuff to know about the Data Application Block](https://osherove.com/blog/2004/2/18/stuff-to-know-about-the-data-application-block.html) - Feb 17, 2004 ### [SQL relations considered harmful?](https://osherove.com/blog/2004/2/17/sql-relations-considered-harmful.html) --- title: "The .Net debugging experience - you can help make a difference" url: "https://osherove.com/blog/2004/2/18/the-net-debugging-experience-you-can-help-make-a-difference.md" canonical: "https://osherove.com/blog/2004/2/18/the-net-debugging-experience-you-can-help-make-a-difference.html" published: "2004-02-18T22:40:00" updated: "2004-02-18T22:40:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Now is your chance to tell the dude in charge of the .Net debugger user interface(like how the watch window works) everything that bugs you or is missing about the process of debugging your programs. Think you should be…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The .Net debugging experience - you can help make a difference By Roy Osherove February 18, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published February 18, 2004; technical details may be outdated. [Now is your chance](http://blogs.msdn.com/jimgries/archive/2004/02/14/73023.aspx) to tell the dude in charge of the .Net debugger user interface(like how the watch window works) everything that bugs you or is missing about the process of debugging your programs. Think you should be able to convert a breakpoint into a bookmark? Feel like the watch window just isn't delivering what you need? Go ahead. Don't be shy. Arn't blogs great? ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Feb 22, 2004 ### [\[Cool Tool\] CodeSmith 2.5](https://osherove.com/blog/2004/2/22/cool-tool-codesmith-25.html) - Feb 21, 2004 ### [More Lookup table techniques](https://osherove.com/blog/2004/2/21/more-lookup-table-techniques.html) - Feb 18, 2004 ### [VS.Net multi language bug - 2.5 years and still going strong?](https://osherove.com/blog/2004/2/18/vsnet-multi-language-bug-25-years-and-still-going-strong.html) - Feb 14, 2004 ### [Accumulated links](https://osherove.com/blog/2004/2/14/accumulated-links.html) --- title: "Israeli .Net Bloggers" url: "https://osherove.com/blog/2004/2/18/israeli-net-bloggers.md" canonical: "https://osherove.com/blog/2004/2/18/israeli-net-bloggers.html" published: "2004-02-18T21:37:00" updated: "2004-02-18T21:37:00" tags: ["Blogging"] author: "Roy Osherove" description: "Wow. Wer'e starting to get some more Israeli bloggers in here. Here's my list so far (I've also put it up as part of my links in my blog page): Omri Gazitt (Out of country) Oleg Tkachenko Uri Gorobets Alex Hoffman (Out…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israeli .Net Bloggers By Roy Osherove February 18, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published February 18, 2004; technical details may be outdated. Wow. Wer'e starting to get some more Israeli bloggers in here. Here's my list so far (I've also put it up as part of my links in my blog page): - [Omri Gazitt](http://www.gazitt.com/ohmblog) (Out of country) - [Oleg Tkachenko](http://www.tkachenko.com/blog) - [Uri Gorobets](http://dotnetjunkies.com/WebLog/removable%20thoughts/) - [Alex Hoffman](http://weblogs.asp.net/ahoffman) (Out of country) - [Addy Santo](http://weblogs.asp.net/asanto) (Out of country) - [Lior Rozner](https://osherove.com/lrozner/ "weblog") - [Memi Lavi](https://osherove.com/memi/) - [Natty Gur](https://osherove.com/NGur/) - [Omer Van Kloeten](https://osherove.com/OKloeten/) - [Udi Dahan(The Software Simplist)](http://udidahan.weblogs.us/) - [Yosi Taguri](http://blogs.msdn.com/yosit) - [Ziv Caspi](http://radio.weblogs.com/0106548/) Did I miss anyone? If you're an israeli who wants to blog about .Net please [contact me](http://weblogs.asp.net/rosherove/contact.aspx). ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Mar 11, 2004 ### [1001 posts](https://osherove.com/blog/2004/3/11/1001-posts.html) - Feb 24, 2004 ### [.Net Rocks bullet points](https://osherove.com/blog/2004/2/24/net-rocks-bullet-points.html) - Feb 15, 2004 ### ["How do I open a weblog here?"](https://osherove.com/blog/2004/2/15/quothow-do-i-open-a-weblog-herequot.html) - Feb 5, 2004 ### [.Net Rocks live - review](https://osherove.com/blog/2004/2/5/net-rocks-live-review.html) --- title: "Stuff to know about the Data Application Block" url: "https://osherove.com/blog/2004/2/18/stuff-to-know-about-the-data-application-block.md" canonical: "https://osherove.com/blog/2004/2/18/stuff-to-know-about-the-data-application-block.html" published: "2004-02-18T05:55:00" updated: "2004-02-18T05:55:00" tags: [".Net Original"] author: "Roy Osherove" description: "Version 3.0 has been out for a while . Version 3 of this block is out there, kicking some serious butt. This version has unit tests to go along with it and it fixes a bug that was found in version 2. Get version 3 from…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Stuff to know about the Data Application Block By Roy Osherove February 18, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published February 18, 2004; technical details may be outdated. - **Version 3.0 has been out for a while**. Version 3 of this block is out there, kicking some serious butt. This version has unit tests to go along with it and it fixes a bug that was found in version 2. [Get version 3](http://www.gotdotnet.com/community/workspaces/newsitem.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431&newsId=1304) from here.  Find out [about the bug here](http://www.dotnetjunkies.com/weblog/markbrown/posts/454.aspx). - The new version adds support for some generic ADO.Net interfaces. This means you can use it with different DB providers while utilizing the same interface. - **It's almost always OK to discover stored procedure parameters automatically**. Underneath, the parameter discovery happens only once per stored procedure, and is then saved in a parameter cache object for future calls to that sproc. A single extra call for the added simplicity of coding against the block and saving many many lines of code filling parameter arrays. - **If you're using version 2.0,** [**it has a bug**](http://www.dotnetjunkies.com/weblog/markbrown/posts/454.aspx)**.** ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Feb 19, 2004 ### [Mortal sin: A non-relational relational database.](https://osherove.com/blog/2004/2/19/mortal-sin-a-non-relational-relational-database.html) - Feb 19, 2004 ### [Get your resource kit (and disregard the kit name)](https://osherove.com/blog/2004/2/19/get-your-resource-kit-and-disregard-the-kit-name.html) - Feb 17, 2004 ### [SQL relations considered harmful?](https://osherove.com/blog/2004/2/17/sql-relations-considered-harmful.html) - Feb 17, 2004 ### [\[Article\] Make your .Net application support scripting - the practical way](https://osherove.com/blog/2004/2/17/article-make-your-net-application-support-scripting-the-prac.html) --- title: "VS.Net multi language bug - 2.5 years and still going strong?" url: "https://osherove.com/blog/2004/2/18/vsnet-multi-language-bug-25-years-and-still-going-strong.md" canonical: "https://osherove.com/blog/2004/2/18/vsnet-multi-language-bug-25-years-and-still-going-strong.html" published: "2004-02-18T05:12:00" updated: "2004-02-18T05:12:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "This is indeed a very annoying bug , and arguably has high importance because being able to develop on multiple languages is one of VS.Net's most touted features. Annoyingly enough, this problem only happens when the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VS.Net multi language bug - 2.5 years and still going strong? By Roy Osherove February 18, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published February 18, 2004; technical details may be outdated. [This is indeed a very annoying bug](http://weblogs.asp.net/prieck/archive/2004/02/17/75266.aspx), and arguably has high importance because being able to develop on multiple languages is one of VS.Net's most touted features. Annoyingly enough, this problem only happens when the Unifying GUI app is a VB.Net app, not C# one. Does anyone from the VB.Net\\VS.net team care to comment on why this problem, that has existed ever since the Beta 2(or beta 1) days of VS.Net has not been fixed up until today, and **still** exists in Whidbey? \[via [Philip](http://philiprieck.com/blog/archive/2004/02/17/MultiLangageInVSNet.aspx)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Feb 21, 2004 ### [More Lookup table techniques](https://osherove.com/blog/2004/2/21/more-lookup-table-techniques.html) - Feb 18, 2004 ### [The .Net debugging experience - you can help make a difference](https://osherove.com/blog/2004/2/18/the-net-debugging-experience-you-can-help-make-a-difference.html) - Feb 14, 2004 ### [Accumulated links](https://osherove.com/blog/2004/2/14/accumulated-links.html) - Feb 11, 2004 ### [\[Tool\] QuickJump - very nice and simple VS.Net add-in](https://osherove.com/blog/2004/2/11/tool-quickjump-very-nice-and-simple-vsnet-add-in.html) --- title: "SQL relations considered harmful?" url: "https://osherove.com/blog/2004/2/17/sql-relations-considered-harmful.md" canonical: "https://osherove.com/blog/2004/2/17/sql-relations-considered-harmful.html" published: "2004-02-17T20:31:00" updated: "2004-02-17T20:31:00" tags: [".Net Original"] author: "Roy Osherove" description: "OK. So I'm no SQL server guru but I do consider myself to know *something* about it. Which is why it was really weird to read this post and realize that I have no idea what that guy was talking about. Domains? Not using…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SQL relations considered harmful? By Roy Osherove February 17, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published February 17, 2004; technical details may be outdated. OK. So I'm no SQL server guru but I do consider myself to know \*something\* about it. Which is why it was really weird to read [this post](http://weblogs.sqlteam.com/davidm/archive/2004/02/17/882.aspx) and realize that I have no idea what that guy was talking about. Domains? Not using a relation in favor of exporting domain views? using CHECK constraints instead of relations? I know CHECK constraints but funnily enough I was never in a position to actually use them for these kinds of things. Guess that comes with not knowing the territory.. How widespread are these methods? when should I use them? are there any specific guidelines that talk about this issue in particular somewhere where I can get more enlightenment? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Feb 19, 2004 ### [Get your resource kit (and disregard the kit name)](https://osherove.com/blog/2004/2/19/get-your-resource-kit-and-disregard-the-kit-name.html) - Feb 18, 2004 ### [Stuff to know about the Data Application Block](https://osherove.com/blog/2004/2/18/stuff-to-know-about-the-data-application-block.html) - Feb 17, 2004 ### [\[Article\] Make your .Net application support scripting - the practical way](https://osherove.com/blog/2004/2/17/article-make-your-net-application-support-scripting-the-prac.html) - Feb 11, 2004 ### [Watch me speak at IVCUG: Regex and Plugins](https://osherove.com/blog/2004/2/11/watch-me-speak-at-ivcug-regex-and-plugins.html) --- title: "We Are Morons: a quick look at the Win2k source" url: "https://osherove.com/blog/2004/2/17/we-are-morons-a-quick-look-at-the-win2k-source.md" canonical: "https://osherove.com/blog/2004/2/17/we-are-morons-a-quick-look-at-the-win2k-source.html" published: "2004-02-17T19:34:00" updated: "2004-02-17T19:34:00" tags: ["Off Topic"] author: "Roy Osherove" description: "While I didn't take the time to go and download the leaked MSFT source code, it's enlightening to read this review about the quality of the source here. They review the code in depth for various scales, including…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # We Are Morons: a quick look at the Win2k source By Roy Osherove February 17, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 17, 2004; technical details may be outdated. While I didn't take the time to go and download the leaked MSFT source code, it's enlightening to read [this review](http://www.kuro5hin.org/story/2004/2/15/71552/7795) about the quality of the source here. They review the code in depth for various scales, including profanity, design and various guidelines. Very interesting. \[via win\_tech\_off\_topic\] ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 22, 2004 ### [A Power-Point mystery](https://osherove.com/blog/2004/2/22/a-power-point-mystery.html) - Feb 19, 2004 ### [Weekend off](https://osherove.com/blog/2004/2/19/weekend-off.html) - Feb 17, 2004 ### [Community application blocks revisited - with a twist](https://osherove.com/blog/2004/2/17/community-application-blocks-revisited-with-a-twist.html) - Feb 17, 2004 ### [Book of the month](https://osherove.com/blog/2004/2/17/book-of-the-month.html) --- title: "Community application blocks revisited - with a twist" url: "https://osherove.com/blog/2004/2/17/community-application-blocks-revisited-with-a-twist.md" canonical: "https://osherove.com/blog/2004/2/17/community-application-blocks-revisited-with-a-twist.html" published: "2004-02-17T14:37:00" updated: "2004-02-17T14:37:00" tags: ["Off Topic"] author: "Roy Osherove" description: "A few days a go I had a very interesting chat with Ron “ build your own application blocks ” Jacobs (just kidding). The conversation was so interesting because Ron managed to explain to me something that was not obvious…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Community application blocks revisited - with a twist By Roy Osherove February 17, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 17, 2004; technical details may be outdated. A few days a go I had a very interesting chat with [Ron](http://blogs.msdn.com/rjacobs/) “[build your own application blocks](http://blogs.msdn.com/rjacobs/archive/2004/02/09/70355.aspx)” Jacobs (just kidding). The conversation was so interesting because Ron managed to explain to me something that was not obvious from his blog posts. Lemme explain. From his [posts](http://blogs.msdn.com/rjacobs/archive/2004/02/09/70355.aspx) you could understand that MS (wants to)is dropping blue bricks and letting the community maintain and build new ones from now on, with some MS reps acting as team leads. What became clear to me after chatting it up with Ron is that this is **not** the case. MSFT will **continue to create application blocks** but stuff that does not have time/budget allocations can be sent off and be built by the community, thereby speeding up the process of creating new blocks. Of course, there has to be some sort of organizing mechanism to take care of product quality, but this is one of manyare issues that can be addresses. So anyway, although Ron said he'll blog about it and explain his point of view, he didn't. Personally I thought you'd like to know this important tidbit. To me it makes all the difference in the world and I while I [didn't support](http://weblogs.asp.net/rosherove/archive/2004/02/10/70706.aspx) it at first I do support such a notion now that things are a bit clearer. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 19, 2004 ### [Weekend off](https://osherove.com/blog/2004/2/19/weekend-off.html) - Feb 17, 2004 ### [We Are Morons: a quick look at the Win2k source](https://osherove.com/blog/2004/2/17/we-are-morons-a-quick-look-at-the-win2k-source.html) - Feb 17, 2004 ### [Book of the month](https://osherove.com/blog/2004/2/17/book-of-the-month.html) - Feb 15, 2004 ### [Small Israeli DevDays rants](https://osherove.com/blog/2004/2/15/small-israeli-devdays-rants.html) --- title: "Book of the month" url: "https://osherove.com/blog/2004/2/17/book-of-the-month.md" canonical: "https://osherove.com/blog/2004/2/17/book-of-the-month.html" published: "2004-02-17T04:27:00" updated: "2004-02-17T04:27:00" tags: ["Off Topic", "Recommended books"] author: "Roy Osherove" description: "New book of the month for this blog: Patterns of Enterprise Application Architecture Get this book if you are an experienced developer and have been fighting with designing applications from the ground up, including…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Book of the month By Roy Osherove February 17, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic), [Recommended books](https://osherove.com/blog/category/recommended-books) **Historical article** · Originally published February 17, 2004; technical details may be outdated. New book of the month for this blog: **[Patterns of Enterprise Application Architecture](https://www.amazon.com/exec/obidos/ASIN/0321127420/iserializable-20)** [![Book of the month: Patterns of Enterprise Application Architecture](https://osherove.com/img/wb/2d2a4120_images.amazon.com_images_P_0321127420.01._PE22_PIdp-schmoo2_TopRight_7_-26_SCMZZZZZZZ_.jpg)](https://www.amazon.com/exec/obidos/ASIN/0321127420/iserializable-20) Get this book if you are an experienced developer and have been fighting with designing applications from the ground up, including data layer, business layer and UI layer. It will open your eye. Of course, if you did not read [Design Patterns](https://www.amazon.com/exec/obidos/ASIN/0201633612/iserializable-20) first, you **have** to get that one first. Trust me. [More recommendations](http://dotnetweblogs.com/rosherove/story/6802.aspx) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 17, 2004 ### [We Are Morons: a quick look at the Win2k source](https://osherove.com/blog/2004/2/17/we-are-morons-a-quick-look-at-the-win2k-source.html) - Feb 17, 2004 ### [Community application blocks revisited - with a twist](https://osherove.com/blog/2004/2/17/community-application-blocks-revisited-with-a-twist.html) - Feb 15, 2004 ### [Small Israeli DevDays rants](https://osherove.com/blog/2004/2/15/small-israeli-devdays-rants.html) - Feb 13, 2004 ### [MVP Recommendation: James Crowley](https://osherove.com/blog/2004/2/13/mvp-recommendation-james-crowley.html) --- title: "[Article] Make your .Net application support scripting - the practical way" url: "https://osherove.com/blog/2004/2/17/article-make-your-net-application-support-scripting-the-prac.md" canonical: "https://osherove.com/blog/2004/2/17/article-make-your-net-application-support-scripting-the-prac.html" published: "2004-02-17T03:51:00" updated: "2004-02-17T03:51:00" tags: [".Net Original"] author: "Roy Osherove" description: "It was one of those nights. I had a small idea I decided to test, and *BAM* a flood of ideas started. And the end of the night I had this article sitting in my lap and I thought I'd share it with you: Make your .Net…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Article\] Make your .Net application support scripting - the practical way By Roy Osherove February 17, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published February 17, 2004; technical details may be outdated. It was one of those nights. I had a small idea I decided to test, and \*BAM\* a flood of ideas started. And the end of the night I had this article sitting in my lap and I thought I'd share it with you: [Make your .Net application support scripting - the practical way](https://osherove.com/rosherove/articles/DotNetScripting.aspx) Summery: Adding scripting support to your application is one of the most valuable things you can do for your client, letting them add value to your software, and keep it current over time with little or no overhead from the developers. Your users will be able to modify behavior at runtime, change business rules as the market changes and fix subtle bugs as they appear until better fixes come along in the form of compiled code. It is one of the most powerful techniques today employed my many varied business applications. But guess what? Its not very easy to do in .Net. In this article Ill show you how you can use some of the techniques of the past mixed with the .Net framework to add that scripting ability to managed applications, with a touch on a subject that was never considered for scripting: WebServices , including asynchronous calls to them. As usual, feedback is appreciated. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Feb 18, 2004 ### [Stuff to know about the Data Application Block](https://osherove.com/blog/2004/2/18/stuff-to-know-about-the-data-application-block.html) - Feb 17, 2004 ### [SQL relations considered harmful?](https://osherove.com/blog/2004/2/17/sql-relations-considered-harmful.html) - Feb 11, 2004 ### [Watch me speak at IVCUG: Regex and Plugins](https://osherove.com/blog/2004/2/11/watch-me-speak-at-ivcug-regex-and-plugins.html) - Jan 23, 2004 ### [Winform Singleton pattern example](https://osherove.com/blog/2004/1/23/winform-singleton-pattern-example.html) --- title: "Make your .Net application support scripting - a practical approach" url: "https://osherove.com/blog/2004/2/17/make-your-net-application-support-scripting-a-practical-appr.md" canonical: "https://osherove.com/blog/2004/2/17/make-your-net-application-support-scripting-a-practical-appr.html" published: "2004-02-17T03:42:00" updated: "2004-02-17T03:42:00" tags: ["Other"] author: "Roy Osherove" description: "Summary Adding scripting support to your application is one of the most valuable things you can do for your client, letting them add value to your software, and keep it current over time with little or no overhead from…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Make your .Net application support scripting - a practical approach By Roy Osherove February 17, 2004 In [Other](https://osherove.com/blog/category/other) **Historical article** · Originally published February 17, 2004; technical details may be outdated. ## Summary Adding scripting support to your application is one of the most valuable things you can do for your client, letting them add value to your software, and keep it current over time with little or no overhead from the developers. Your users will be able to modify behavior at runtime, change business rules as the market changes and fix subtle bugs as they appear until better fixes come along in the form of compiled code. It is one of the most powerful techniques today employed my many varied business applications. But guess what? Its not very easy to do in .Net. In this article Ill show you how you can use some of the techniques of the past mixed with the .Net framework to add that scripting ability to managed applications, with a touch on a subject that was never considered for scripting: WebServices , including asynchronous calls to them. ### Scripting in the old days How was scripting performed in non managed applications? For Visual Basic 6.0 applications, this usually entailed referencing a Microsoft supplied control library the _Microsoft Script Control_, which provided the developer with a simple object model on which they could call some generic functions. For example _Eval(expression)_ evaluated an expression either in VBScript on in Jscript and returned a result, or _Run(ProcedureName,Params)_ to execute a specific procedure . The developer could also add pieces of script into the scripting memory at runtime, for example, reading whole script files containing procedures and modules which could then later be called at runtime. Methods such as _AddCode(text)_ took care of this task and were one of the main entry points to scripting applications. Finally, one of the most powerful features in the Microsoft Script library was the ability of the application developer to **expose whole object models** into the script runtime including all their properties and methods. These objects could later be referenced in the scripts at runtime and manipulated just as if they were declared in the script itself. This allowed amazing features for many applications. The client could literally program against an API exposed by the application runtime, an API that could be just as powerful as the application that was hosting it. This amazing feature was achieved using the _AddObject(name,object)_ method of the script control and will forever be remembered in my heart as one of my favorite development tasks over the years. ### Examples from nowadays Many applications today take advantage of this ability. For a simple example take a look at an automated build tool called [FinalBuilder](http://www.atozedsoftware.com/finalbuilder/), or another build tool called [VisualBuild Pro](http://www.kinook.com/VisBuildPro/). Both of these tools provide a programmable API which exposes events such as BeforeBuild and AfterBuild which can be handled in either VBScript of Jscript. These are perfect examples of when you would need to allow user customization of your application and scripting is a perfect way of doing this. ### Scripting options today Today in .Net there are basically two ways to go about adding scripting to your managed application: - You could use reflection and CodeCompiler objects at runtime, build .Net code on the fly, compile it and run it. This is a relatively well known method, yet rather costly to do and hard to maintain and debug. Its also too sophisticated to master in the short time spans developers are expected to churn out software these days. There have been some third party attempts (some successful) in providing a generic scripting environment for .Net. [Alintex Script](http://www.alintex.com/) is one of those third party products that Im guessing uses this technology. Its still hard to accomplish on your own. Harder than it should be. - You could use the _Microsoft.Vsa_ namespace object model to create in memory .Net scripts and compile them at runtime. This is the “preferred“ way to do this but it leaves a lot to be desired in terms of usability and object model design. In short, it's hard to understand and hard to learn and maintain. - You could look back and use the good old _Microsoft Script Control_ in your managed projects. This is the solution Ill be focusing on in this article. The main reasons to use this solution are: - Its very easy - It holds the 80/20 rule. 80% of the features you would look for in scripting your application can be provided using it. - Its been tried and tested over a long period of time - Easier to maintain, even if a developer with less experience comes along, its easier for them to understand and maintin, since its a pretty small and simple amount of code overall, compared to the first method. ### Using the MSScript control in .Net Its pretty easy to add basic scripting to your application. The first steps will usually be: - reference the Microsoft Script Control library - In your project (Ill assume its a Winforms project) open the _references_ dialog and select the COM tab. - Find the Microsoft Script Control reference and add it to your project - Create a script object to work with - Declare an object of type _MSScriptControl.ScriptControlClass_ and instantiate it - Initialize the scripting language to be used with the object (Either VBScript or Jscript. Ill assume VBScript for the rest of this article - Try the simplest scripting task - Add a multiline textbox to your main form - Add a button with Execute caption and use this code in the Click event of the button:     Private Sub cmdExecute\_Click(ByVal sender As System.Object, \_ ByVal e As System.EventArgs) \_ Handles cmdExecute.Click         txtResult.Text = script.Eval(txtResult.Text)     End Sub - script is the name of the script control object and txtResult is the name of the TextBox object. - Run your application.. When the window opens, write the following in the textbox:  2\*2. Then press Execute. See what happens. - Now try writing Msgbox Hello, Scripting world! and press execute Congratulations. Youve just added simple scripting abilities to your application. Sure, its not much, but hopefully youve seen just how powerful you client can get when using scripting.  You should really get a good grasp of VBScript and its abilities to see all the things you can do. But wait. Were not done yet. This is only the beginning. Now its going to get **really** interesting. ### Exporting your own .Net objects to the party One of the things most people dont realize is that eve though this is managed code, you can **still** expose your own object model through the script control. Yes, even manages classes. In this next lines Ill show you how to do just that. - In the Form\_load event, after initializing the script control, add the following line: script.AddObject("form", me, True) Youve just told the script \-         Expose an object from my application under the name of form. \-          This object is **me.** \-          Yes, please expose all its members for scripting as well. - Now, change the call to script.Eval into this code: script.ExecuteStatement(txtResult.Text) Instead of evaluating an expression, youre telling the script control to **execute** a statement. Now you can do some cool stuff. - Run the program and write the following in the text box: **Form.left+= 200** - Press the execute button  and see what happens. As you can see, .Net has no trouble exposing managed objects for scripting just as easy as it accommodates for COM objects in the program (underneath it wraps the calls to the COM objects in specialized wrapper objects that do all the COM calls in a low level manner, but we dont care about that since its done automagically for us) ### Some guidelines for adding code at runtime Theres a better way that to just execute a random procedure the user write everytime. A real application would have a bit more organized manner in which scripting would be implemented. Here are some guidelines: - Use the _script.AddCode(text)_ method to add chunks of VBScript code (usually from script files with a .vbs extension) when the application initializes. These chunks can contain helper methods or methods that were changed by the user of your application. - You can call specific methods that were loaded in your script from any other method in your script. For example, if you know you have a SayHello method written in the vbs file you load at startup, your user can go ahead and write code that calls this procedure (they just have to know its there documentat you APIs). - You can call preloaded methods from your managed code as well using the _script.Run(procedureName, paramArray params()as object)_ method. This allows you to call various user events on predefined application entry points. For example, if you want your users to customize what happens whenever your application shuts down, you can have an empty _OnShutDown_ method in a script file. You will call this method before your application shuts down using the _script.Run()_ method. If your client wants to customize what happens before shutdown, they can simply add VBScript code to the empty body of the method in the script file. - You can also send parameters to methods you call dynamically. These parameters can be full blown objects or simple strings and integers. You choose. Your user can accepts the objects in the method parameters and manipulate them just as regular objects. You dont have to expose them before you do this. - Since this is .Net and you have all the object oriented power in your hands, you should consider creating a custom class that _inherits_ from the _ScriptControlClass_ class and use that class as your scripting engine. Your custom class will use the constructor to initialize stuff such as the scripting language, loading various script files and adding support for various helper methods you might need in your application to do with scripting. ### Where are we? Weve seen so far that you can expose your own objects to script and you can evaluate various expressions. This is about as far as you can get with scripting in the unmanaged world. Now Ill take you a little further and see how .Net helps us add scripting to something which seems totally out of whack webservices. ### Calling a webservice from script As weird as it may sound, your user can call methods on a webservice that your application uses, just as easy as it would call a regular objects. How is this possible? Well, Ive already shown how to _ws.BeginHelloWorld_ expose a managed object to script by using the script.AddObject() method. Exposing a webservice is just as easy. You do it exactly the same way. This is possible because when you use a webservice in your own applications you are essentially using a **proxy** object, a mediator between your application and the **real** service. This proxy looks and acts just like the real service but it lives in your own application domain and forwards all calls to the webservice when needed. This means that the webservice instance just another object that can be exposed and used in script much like any other object. However, there is one caveat:  calling a webservice might take some time to accomplish; meanwhile your application will wait for the script to execute. The script in turn will wait for the webservice to execute and everyone will be looking at you asking why this is so darned slow.  To make this problem go away we can use the same technique we use in a real managed application: calling the service asynchronously. ### Asynchronous invocation from script How do we accomplish calling a webservice asynchronously today? Lets assume our simple webservice has but one method HelloWorld which returns a string. In managed code we would call it like this:     Public Sub CallWebService()         Dim callback As New AsyncCallback(AddressOf AsyncWsCallback)         wsObject.BeginHelloWorld(callback, Nothing)     End Sub     Public Sub AsyncWsCallback(ByVal ar As IAsyncResult)         txtResult.Text = wsObject.EndHelloWorld(ar)     End Sub So heres what we need to have in script for the async call to work: \-         A call to wsObject.BeginHelloWorld passing in a _callback_ object \-         An instance of an _AsyncCallback_ object \-         A call to wsObject.EndHelloWorld(ar) passing in an _IAsyncResult_ object Can you guess how we manage this? - When initializing the script we should also expose an _AsyncCallback_ object that will be used in our script when invoking the webservice. This _AsyncCallback_ object will actually be pointing at a _managed_ method. That managed method will invoke (using _script.Run()_ a script method which will be used to do work when the webservice call ends. - Heres how to initialize the AsyncCallBack object in the script:      Dim callback As New AsyncCallback(AddressOf AsyncWsCallback)      script.AddObject("ws", wsObject, True)      script.AddObject("callback", callback, True) - And heres the implementation that **does not work** of the managed callback     Public Sub AsyncWsCallback(ByVal ar As IAsyncResult)         script.Run("OnWsEndHelloWorld", ar)     End Sub It just invokes a script that does processing when the webservice finishes its work. I **wish** this implementation would work out of the box, but it does not. If you use this technique, you cant send the _IAsyncResult_ object as a parameter to your script method. Some very weird COM interop issues will happen so let me save you the trouble. The _IAsyncResult_ object can only be used in managed code in this case. Your only option is to call  _ws.EndHelloWorld(ar)_  in managed code and _then_ call a script method that processes the results. You **do** **not** want to do something like this in the script**:** _Sub OnWsEndHelloWorld(ar)_ _Msgbox ws.EndHelloWorld(ar)_ _End Sub_ This is wrong. Your script should process the _outcome_ of the EndHelloWorld as received from the managed code. Otherwise, as the say in SouthPark, _Youre gonna have a bad time_. - So, instead, well do this in our managed code     Public Sub AsyncWsCallback(ByVal ar As IAsyncResult) Dim result As String = wsObject.EndHelloWorld(ar)   script.Run("OnWsEndHelloWorld", result)     End Sub Which leaves us with this piece of script: _Sub OnWsEndHelloWorld(result)_ _Msgbox result_ _End Sub_ So, the final order of operations is this: - Somewhere in the script,  there is a call to _ws.BeginHelloWorld(callback,nothing)_ - The callback is triggered in Managed code which picks up the result by calling _ws.EndHelloWorld_ and calling another _script_ method with the results. ### Conclusion As you can see, its pretty easy to add scripting support to your managed application, exposing an object model to your users, responding to major events in the application lifetime and even invoking webservices asynchronously. Start thinking what you can do with all this power for your users today. ## More in Other [All posts in Other](https://osherove.com/blog/category/other) - Sep 3, 2004 ### [Review - JetBrains Resharper](https://osherove.com/blog/2004/9/3/review-jetbrains-resharper.html) - Jun 16, 2004 ### [BackgroundWorker implementation -in C#](https://osherove.com/blog/2004/6/16/backgroundworker-implementation-in-c.html) - Jan 17, 2004 ### [Learning from mistakes: the Don Quixote pattern](https://osherove.com/blog/2004/1/17/learning-from-mistakes-the-don-quixote-pattern.html) - Dec 25, 2003 ### [An optimizing experience](https://osherove.com/blog/2003/12/25/an-optimizing-experience.html) --- title: "Small Israeli DevDays rants" url: "https://osherove.com/blog/2004/2/15/small-israeli-devdays-rants.md" canonical: "https://osherove.com/blog/2004/2/15/small-israeli-devdays-rants.html" published: "2004-02-15T11:24:00" updated: "2004-02-15T11:24:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Here's a small rant: Why didn't we get all this cool stuff in the Israeli DevDays conference? Especially I don't get why we didn't get Whidbey preview edition (and I heard a rumor that we should have gotten it but it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Small Israeli DevDays rants By Roy Osherove February 15, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 15, 2004; technical details may be outdated. Here's a small rant: Why didn't we get [all this cool stuff](http://msdn.microsoft.com/events/devdays/) in the Israeli DevDays conference? Especially I don't get why we didn't get Whidbey preview edition (and I heard a rumor that we should have gotten it but it cost too much, like 1$ per person). So, why does Israel have to keep legging behind the rest of the world? On the other hand, we got the [Writing Secure Code 2nd edition](https://www.amazon.com/exec/obidos/ASIN/0735617228/iserializable-20), which is a very very very good book and yes, admission was free. More points: -  when you register at the MS site for the conference, you get a confirmation ID. You get it sent to your email. If by any chance you **lose that email** you have no chance of recovering it. Sure, the website shows you that you are registered for the event, but it does not show the reference ID for your registration. Since this is what happened to me, I actually called MS support on the phone and,how wonderful, the guy couldn't tell me my reference ID as well! He had to re-register me to get a new ID. Is this the 80's? - When are we going to get some world class celebs into our conferences? Are people afraid to come here or something? I mean, as long as you don't take the bus, you're safe ;) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 17, 2004 ### [Community application blocks revisited - with a twist](https://osherove.com/blog/2004/2/17/community-application-blocks-revisited-with-a-twist.html) - Feb 17, 2004 ### [Book of the month](https://osherove.com/blog/2004/2/17/book-of-the-month.html) - Feb 13, 2004 ### [MVP Recommendation: James Crowley](https://osherove.com/blog/2004/2/13/mvp-recommendation-james-crowley.html) - Feb 13, 2004 ### [New Israeli User Group: Agile Development. What do you think?](https://osherove.com/blog/2004/2/13/new-israeli-user-group-agile-development-what-do-you-think.html) --- title: "\"How do I open a weblog here?\"" url: "https://osherove.com/blog/2004/2/15/quothow-do-i-open-a-weblog-herequot.md" canonical: "https://osherove.com/blog/2004/2/15/quothow-do-i-open-a-weblog-herequot.html" published: "2004-02-15T10:06:00" updated: "2004-02-15T10:06:00" tags: ["Blogging"] author: "Roy Osherove" description: "I've had a couple of friends ask me how they can open a weblog here on .NetWeblogs. They both are .Net developers and one of them(on my suggestion) tried to contact ScottW directly to ask for a blog but no answer.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # "How do I open a weblog here?" By Roy Osherove February 15, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published February 15, 2004; technical details may be outdated. I've had a couple of friends ask me how they can open a weblog here on .NetWeblogs. They both are .Net developers and one of them(on my suggestion) tried to contact ScottW directly to ask for a blog but no answer. What's the current method of opening a weblog here? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Feb 24, 2004 ### [.Net Rocks bullet points](https://osherove.com/blog/2004/2/24/net-rocks-bullet-points.html) - Feb 18, 2004 ### [Israeli .Net Bloggers](https://osherove.com/blog/2004/2/18/israeli-net-bloggers.html) - Feb 5, 2004 ### [.Net Rocks live - review](https://osherove.com/blog/2004/2/5/net-rocks-live-review.html) - Feb 5, 2004 ### [Pasting nicely formatted code into your blog](https://osherove.com/blog/2004/2/5/pasting-nicely-formatted-code-into-your-blog.html) --- title: "[Tool] The long awaited Resharper - is VB.Net left behind again?" url: "https://osherove.com/blog/2004/2/14/tool-the-long-awaited-resharper-is-vbnet-left-behind-again.md" canonical: "https://osherove.com/blog/2004/2/14/tool-the-long-awaited-resharper-is-vbnet-left-behind-again.html" published: "2004-02-14T15:25:00" updated: "2004-02-14T15:25:00" tags: [] author: "Roy Osherove" description: "I've raved about IntelliJ IDEA before and I still hold that this is the best usability oriented editor I've seen anywhere. Now, the same folks who brought you this IDE have created an add-in for VS.Net that will…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Tool\] The long awaited Resharper - is VB.Net left behind again? By Roy Osherove February 14, 2004 **Historical article** · Originally published February 14, 2004; technical details may be outdated. I've raved about IntelliJ IDEA before and I still hold that this is the best usability oriented editor I've seen anywhere. Now, the same folks who brought you this IDE have created an add-in for VS.Net that will eventually give .Net developers what Java developers have had for a long time: good intelligent coding and editing usability with amazing refactoring support: [Resharper](http://www.jetbrains.net/resharper) (user and password are “eapuser“). The Add-in is still in Alpha state but can be freely downloaded using an early access program. I've already found it very very good (although a lot of features are still lacking).[Look here](http://www.hutteman.com/weblog/2004/02/14-163.html) for a review of what's currently there. One thing that bothers me is this: The add-in only works for C#. When I open a project in VB.Net I get only two features available to me and the others are disabled. I'm not sure if this is due to the alpha state of the add-in or due to the fact that VB.Net is not going to be part of this functionality. If it's not going to be part of it, it's not going to be the first refactoring add-in that does this. Xtreme Simplicity's [C# Refactory](http://www.xtreme-simplicity.net/CSharpRefactory.html)(you can guess by the name already) is specifically designed for C# as well. There are **no products** that add refactoring functionality to VB.Net, but there should be. Why is this the case? Well, here's an interesting tidbit any CEO can understand: the first company that adds refactoring support to VB.Net will make lots of money. Can you grok that? now please go and provide us “morts“ with this functionality. I've already contacted the company that I believe should be the most likely candidate: [](http://www.axtools.com/)[AXTools](https://osherove.com/blog/2004/2/14/www.axtools.com). Their CodeSmart add-in already provides lots of great productivity enhancements, and refactoring support would just be another great bit to add to that. --- title: "Accumulated links" url: "https://osherove.com/blog/2004/2/14/accumulated-links.md" canonical: "https://osherove.com/blog/2004/2/14/accumulated-links.html" published: "2004-02-14T14:52:00" updated: "2004-02-14T14:52:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "I've had some stuff accumulated on my aggregator so I thought I'd dump most of it together for a good reference later. First of all, I've switched to RSS Bandit . The new version rocks and is much more stable. It still…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Accumulated links By Roy Osherove February 14, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published February 14, 2004; technical details may be outdated. I've had some stuff accumulated on my aggregator so I thought I'd dump most of it together for a good reference later. - First of all, I've switched to [RSS Bandit](http://www.rssbandit.org/). The new version rocks and is much more stable. It still has an occasional hiccup with some channels that don't parse well, but when you click on the channel name it shows just fine. So I'm using it and all its nifty features. Great job, [Dare](http://www.25hoursaday.com/weblog/)! - [Results of the Annoying power point survey are in](http://www.hanselman.com/blog/PermaLink.aspx?guid=d017c9f3-aa3d-47bc-8d39-e6bfd8358d24) and this is very very interesting to read if you ever need to do a presentation in front of anyone else but your mother. - If there's one area a good developer **has** to be good at from the get go, it's finding information and answers. This post asks [How do you find information](http://scottonwriting.net/sowblog/posts/685.aspx) and gets some very good answers in the comments. Read and learn. - [GUnit, Generative Unit Test Framework](http://www.codeproject.com/useritems/gunit.asp) - A new take on unit testing that tries to automate some of the patterns observed in testing. (via [LarkWare](http://www.larkware.com/)) - [Natty Gur](http://weblogs.asp.net/NGur/) (which I hope to see next week in the IVCUG meeting) wrote an article on [using COM+ in .Net](http://weblogs.asp.net/NGur/archive/2004/02/12/71950.aspx). - [Scott Hanselman](http://www.hanselman.com/blog) points to some very [Valuable tips](http://www.hanselman.com/blog/PermaLink.aspx?guid=a40c0d4f-66d0-4704-94f6-0efda4a44465) on getting the best of both Debug and Release build configuration - at the same time. - [The Vault](http://software.ericsink.com/20040213.html#10151) comes out with version 2.0, but most importantly, their version if [absolutely free for a single user](http://software.ericsink.com/20040213.html#10151). I've personally switched to Vault at home now. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Feb 18, 2004 ### [The .Net debugging experience - you can help make a difference](https://osherove.com/blog/2004/2/18/the-net-debugging-experience-you-can-help-make-a-difference.html) - Feb 18, 2004 ### [VS.Net multi language bug - 2.5 years and still going strong?](https://osherove.com/blog/2004/2/18/vsnet-multi-language-bug-25-years-and-still-going-strong.html) - Feb 11, 2004 ### [\[Tool\] QuickJump - very nice and simple VS.Net add-in](https://osherove.com/blog/2004/2/11/tool-quickjump-very-nice-and-simple-vsnet-add-in.html) - Jan 25, 2004 ### [.Net Roars live](https://osherove.com/blog/2004/1/25/net-roars-live.html) --- title: "[Tool] Cool Font\\Colors add-in for VS.NET" url: "https://osherove.com/blog/2004/2/14/tool-cool-fontcolors-add-in-for-vsnet.md" canonical: "https://osherove.com/blog/2004/2/14/tool-cool-fontcolors-add-in-for-vsnet.html" published: "2004-02-14T12:02:00" updated: "2004-02-14T12:02:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Jason Olson took my font settings\\Colors settings add-in for visual studio idea, and ran with it. He came up with a pretty cool little add-in , much more “scalable” than mine. Sounds perfect for presentations. Coolness…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Tool\] Cool Font\\Colors add-in for VS.NET By Roy Osherove February 14, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published February 14, 2004; technical details may be outdated. [Jason Olson](http://geekswithblogs.net/jolson/) took my [font settings\\Colors settings](http://weblogs.asp.net/rosherove/archive/2003/07/05/9722.aspx) add-in for visual studio idea, and [ran with it.](http://geekswithblogs.net/jolson/archive/2004/02/14/2124.aspx) He came up with a pretty [cool little add-in](http://geekswithblogs.net/jolson/archive/2004/02/14/2124.aspx), much more “scalable” than mine. Sounds perfect for presentations. Coolness :) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Feb 22, 2004 ### [\[Cool Tool\] CodeSmith 2.5](https://osherove.com/blog/2004/2/22/cool-tool-codesmith-25.html) - Feb 22, 2004 ### [The Regulator featured on RegexLib.com](https://osherove.com/blog/2004/2/22/the-regulator-featured-on-regexlibcom.html) - Feb 11, 2004 ### [\[Tool\] QuickJump - very nice and simple VS.Net add-in](https://osherove.com/blog/2004/2/11/tool-quickjump-very-nice-and-simple-vsnet-add-in.html) - Jan 10, 2004 ### [\[Tool\] Easier log parsing with Log Parser](https://osherove.com/blog/2004/1/10/tool-easier-log-parsing-with-log-parser.html) --- title: "MVP Recommendation: James Crowley" url: "https://osherove.com/blog/2004/2/13/mvp-recommendation-james-crowley.md" canonical: "https://osherove.com/blog/2004/2/13/mvp-recommendation-james-crowley.html" published: "2004-02-13T13:35:00" updated: "2004-02-13T13:35:00" tags: ["Off Topic"] author: "Roy Osherove" description: "For what it's worth, I'd like to take this stage and recommend someone who I think is worthy of an MVP title. Have you ever been to DeveloperFusion.Com ? It's a site dedicated to tutorials and information about…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MVP Recommendation: James Crowley By Roy Osherove February 13, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 13, 2004; technical details may be outdated. For what it's worth, I'd like to take this stage and recommend someone who I think is worthy of an MVP title. Have you ever been to [DeveloperFusion.Com](http://www.developerfusion.com/)? It's a site dedicated to tutorials and information about programming, including .Net and other MS technologies (and non-MS as well). You'd be surprised to know that the site is run by a 19 year old student, [James Crowley](http://www.developerfusion.com/profile/1). [Developer fusion](http://www.developerfusion.com/) has been around for several years in one form or another (it used to be called vbWeb). The site is entirely built by James, on his free time and has over 17,000 registered users. It contains newsgroups, articles and anyone can submit an article and get it published (after a review by James). I found out about james a few days ago when he asked me for permission to republish some of my articles there. In my mind, James is truly one of those people who help the community in many ways and deserves the MVP title. Here's a short chat \\interview I had with him (published with permission):  **How long have you been doing DevFusion?**  the site's been around in some form for a few years.... but i haven't had time to write many articles in the last year  **But you've been the one to make it come to life?**  yup :) i'm basically spending most of my time editing them at the mo - hence coming back to the content management thing so i actually get time to do some writing again!  **Do you get paid for your work?**  it started off as a site called vb web .... which was basically when i was learning VB ... so i just wrote up stuff that i learned  well... my time is starting to pay off now, as we're getting money from advertising  **who's "we"?**  sorry. bad habit.  we, as in "Developer Fusion Ltd". which is just me :P **do you have a personal blog?**  at the moment, my personal web site amounts to http://www.developerfusion.com/profile/1 ... and i don't think my life is interesting enough to have a blog at the moment ;)  **where do you work?**  I don't - that's the thing. I’m still studying for my degree!  **You're 19?**  i'm afraid so...  **how many registered users do you have?**  registered... not as many as I’d like. I think its around 17,000  but that's dating back a while now, so they're not necessarily active  but according to the stats at the moment, we're getting around 60K page views a day.  **So you wrote the whole site engine from scratch (as with vb web)?**  Yeah. started out as static HTML - then moved to asp, then php (don't ask...), then asp.net  **Lovely.**  and now i need to redo it properly!  but it works pretty well from the front end..... only i see the sticky tape and glue holding it together!  **What's the thing in Developer fusion you're most proud of, community wise?** I don't know if there's anything in particular, but when I first started out with VB Web, I was amazed at the number of people who emailed me saying thanks for writing the article on xxx ... i've still got a print out of some of them on my wall. that's what encouraged me to keep going  now, its really cool, especially on the forums - there's so many ppl around willing to help  just one look at http://www.developerfusion.com/members/ranking.aspx shows that really  **How did you get advertisers?**  just started on various advertising networks  then, as the traffic increased, i've had emails from various ppl offering.... and we came to an agreement with maximum asp so that we get free hosting, in exchange for their ad  which was great, because that basically meant i didn't have to worry that i would actually be losing money on the site and as i was a student, i obviously couldn't really afford to do that!  **What language to you program in?**  if I get a choice, i'm generally choosing C# at the moment.  I obviously did an awful lot of VB programming b4 - http://www.developerspad.com/ was one of my pain conquests  but again, i haven't had enough time to get it past beta :S  **Do you help in the newsgroups as well?**  that's one thing i have to admit I haven't done yet, but not for any particular reason which is something I should probably do! Thanks for all your hard work, James. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 17, 2004 ### [Book of the month](https://osherove.com/blog/2004/2/17/book-of-the-month.html) - Feb 15, 2004 ### [Small Israeli DevDays rants](https://osherove.com/blog/2004/2/15/small-israeli-devdays-rants.html) - Feb 13, 2004 ### [New Israeli User Group: Agile Development. What do you think?](https://osherove.com/blog/2004/2/13/new-israeli-user-group-agile-development-what-do-you-think.html) - Feb 10, 2004 ### [Community Application Blocks? nah](https://osherove.com/blog/2004/2/10/community-application-blocks-nah.html) --- title: "New Israeli User Group: Agile Development. What do you think?" url: "https://osherove.com/blog/2004/2/13/new-israeli-user-group-agile-development-what-do-you-think.md" canonical: "https://osherove.com/blog/2004/2/13/new-israeli-user-group-agile-development-what-do-you-think.html" published: "2004-02-13T12:13:00" updated: "2004-02-13T12:13:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I was chatting with Udi Dahan the other day at the user group (as a side note, the user groups are a great place to get to know people, hear some ideas and a great way to find out all the stuff you've been missing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Israeli User Group: Agile Development. What do you think? By Roy Osherove February 13, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 13, 2004; technical details may be outdated. I was chatting with [Udi Dahan](http://udidahan.weblogs.us/) the other day at the user group (as a side note, the user groups are a great place to get to know people, hear some ideas and a great way to find out all the stuff you've been missing living in your own little bubble somewhere. You should really go to one of them when you get some time) and he mentioned two great ideas that I immediately wished I had thought of myself: - Do a talk on Refactoring techniques in the user group - Consider opening an "Agile Development" user group While idea #1 seems perfectly logical and it's amazing I did not think about it myself, idea #2 certainly blew my mind. This would be the perfect outlet for all those ramblings and ideas that are starting to show up here and there in the community. Here are some of the reasons we thought a group would be a good thing: - There is very little (if any) knowledge in Israel about agile methodologies, namely XP or Test Driven Development. This group could add a lot to the community in terms of educating on these very important subjects. - All our talk ideas don't really belong to any of the user groups out there today. The ideas are too broad reaching and general to be constrained to a specific web or, vb or c# group. - It's a great way to get known and respected in the community Here are some possible obstacles: - There are already  like 6 or 7 groups. Another one? - People can't go to so many groups at once. Someone has to pay them to leave early from work and usually once or twice a month is more than enough. - Some of the user group leaders might find its “stepping on their toes“ perhaps. If you're in Israel, tell me what you think. If there was such a user group, would you go? If not, why? Do you even see a place for such a user group in Israel? What issues would you like to see addressed in such a group? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 15, 2004 ### [Small Israeli DevDays rants](https://osherove.com/blog/2004/2/15/small-israeli-devdays-rants.html) - Feb 13, 2004 ### [MVP Recommendation: James Crowley](https://osherove.com/blog/2004/2/13/mvp-recommendation-james-crowley.html) - Feb 10, 2004 ### [Community Application Blocks? nah](https://osherove.com/blog/2004/2/10/community-application-blocks-nah.html) - Feb 9, 2004 ### [1 year of blogging](https://osherove.com/blog/2004/2/9/1-year-of-blogging.html) --- title: "[Tool] QuickJump - very nice and simple VS.Net add-in" url: "https://osherove.com/blog/2004/2/11/tool-quickjump-very-nice-and-simple-vsnet-add-in.md" canonical: "https://osherove.com/blog/2004/2/11/tool-quickjump-very-nice-and-simple-vsnet-add-in.html" published: "2004-02-11T22:30:00" updated: "2004-02-11T22:30:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "( http://www.codeproject.com/dotnet/quickjump_net.asp ). With this little tool involved, you can click Alt+G and get a window showing all of the members in the current class. Type a few letters to filter the list, and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Tool\] QuickJump - very nice and simple VS.Net add-in By Roy Osherove February 11, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published February 11, 2004; technical details may be outdated. ( [http://www.codeproject.com/dotnet/quickjump\_net.asp](http://www.codeproject.com/dotnet/quickjump_net.asp)). With this little tool involved, you can click Alt+G and get a window showing all of the members in the current class. Type a few letters to filter the list, and you can jump right to the applicable declaration. This is another freebie, so though it doesn’t do a whole lot, it won’t cost you a whole lot either. \[via [Mike Gunderloy](http://www.larkware.com/)'s [DevCentral](http://www.adtmag.com/) newsletter\] I just installed it and it rocks! Heartily recommended. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Feb 18, 2004 ### [VS.Net multi language bug - 2.5 years and still going strong?](https://osherove.com/blog/2004/2/18/vsnet-multi-language-bug-25-years-and-still-going-strong.html) - Feb 14, 2004 ### [Accumulated links](https://osherove.com/blog/2004/2/14/accumulated-links.html) - Jan 25, 2004 ### [.Net Roars live](https://osherove.com/blog/2004/1/25/net-roars-live.html) - Jan 23, 2004 ### [Authorization and Profile Application Block](https://osherove.com/blog/2004/1/23/authorization-and-profile-application-block.html) --- title: "Watch me speak at IVCUG: Regex and Plugins" url: "https://osherove.com/blog/2004/2/11/watch-me-speak-at-ivcug-regex-and-plugins.md" canonical: "https://osherove.com/blog/2004/2/11/watch-me-speak-at-ivcug-regex-and-plugins.html" published: "2004-02-11T10:57:00" updated: "2004-02-11T10:57:00" tags: [".Net Original"] author: "Roy Osherove" description: "If you're in Israel, mark your calendars. I'll be speaking at the Israel Visual C# user group on march 17th. Part I: Introduction to regular expressions with a practical example I'll introduce the power of the Regex ,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Watch me speak at IVCUG: Regex and Plugins By Roy Osherove February 11, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published February 11, 2004; technical details may be outdated. If you're in Israel, mark your calendars. I'll be speaking at the [Israel Visual C# user group](http://www.comconix.com/ivcug/) on march 17th. **Part I: Introduction to regular expressions with a practical example** I'll introduce the power of the **Regex**, use the .Net Regular Expressions namespaces and show how to parse a simple text log file using Regex and turn it into XML format for easier consumption. **Part II: Creating application plugins in .Net** I'll explain how it's possible to create applications that are extensible using plugins (focusing on Winforms). I'll show what it takes on the architecture side, the main Concepts of **Reflection** and using the **Activator** class. I'll also show a practical example of a plugin that uses regular expression parsing inside a simple text editor. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Feb 17, 2004 ### [SQL relations considered harmful?](https://osherove.com/blog/2004/2/17/sql-relations-considered-harmful.html) - Feb 17, 2004 ### [\[Article\] Make your .Net application support scripting - the practical way](https://osherove.com/blog/2004/2/17/article-make-your-net-application-support-scripting-the-prac.html) - Jan 23, 2004 ### [Winform Singleton pattern example](https://osherove.com/blog/2004/1/23/winform-singleton-pattern-example.html) - Jan 22, 2004 ### [Israel DevDays](https://osherove.com/blog/2004/1/22/israel-devdays.html) --- title: "There was an earthquake?" url: "https://osherove.com/blog/2004/2/11/there-was-an-earthquake.md" canonical: "https://osherove.com/blog/2004/2/11/there-was-an-earthquake.html" published: "2004-02-11T10:01:00" updated: "2004-02-11T10:01:00" tags: [] author: "Roy Osherove" description: "Apparently, while I was sleeping this morning, Israel experienced an earthquake (5 on the Richter scale). no casualties, but suddenly all the media and the government are all “We don't have any emergency plans! what…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # There was an earthquake? By Roy Osherove February 11, 2004 **Historical article** · Originally published February 11, 2004; technical details may be outdated. Apparently, while I was sleeping this morning, Israel experienced an earthquake (5 on the Richter scale). no casualties, but suddenly all the media and the government  are all “We don't have any emergency plans! what happens if this gets worse?” and all that crap. You know. Stuff that , in the usual Israeli manner, it takes casualties to consider. And I slept through all that very peacefully. Go figure. --- title: "2 new articles" url: "https://osherove.com/blog/2004/2/10/2-new-articles.md" canonical: "https://osherove.com/blog/2004/2/10/2-new-articles.html" published: "2004-02-10T20:07:00" updated: "2004-02-10T20:07:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "Steve Maine just got his first MSDNAA article published: Introduction to Anonymous Methods and Higher-Order Procedures in C# In other news, MSDNAA was cool enough to re-publish one of my old articles: Winforms Data…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 2 new articles By Roy Osherove February 10, 2004 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published February 10, 2004; technical details may be outdated. [Steve Maine](http://hyperthink.net/blog/) just got his first [](http://msdnaa.net/)[MSDNAA](http://www.msdnaa.net/) article published: [Introduction to Anonymous Methods and Higher-Order Procedures in C#](http://msdnaa.net/Resources/display.aspx?ResID=2488) In other news, [](http://msdnaa.net/)[MSDNAA](http://www.msdnaa.net/) was cool enough to re-publish one of my old articles: [Winforms Data Binding Lessons Learned](http://msdnaa.net/Resources/display.aspx?ResID=2487) ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Mar 5, 2004 ### [Interesting stuff I missed this week](https://osherove.com/blog/2004/3/5/interesting-stuff-i-missed-this-week.html) - Feb 24, 2004 ### [Getting a little closer to SOA](https://osherove.com/blog/2004/2/24/getting-a-little-closer-to-soa.html) - Jan 27, 2004 ### [My article on Microsoft.com!](https://osherove.com/blog/2004/1/27/my-article-on-microsoftcom.html) - Jan 25, 2004 ### [Scheduling games](https://osherove.com/blog/2004/1/25/scheduling-games.html) --- title: "Community Application Blocks? nah" url: "https://osherove.com/blog/2004/2/10/community-application-blocks-nah.md" canonical: "https://osherove.com/blog/2004/2/10/community-application-blocks-nah.html" published: "2004-02-10T15:13:00" updated: "2004-02-10T15:13:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Ron Jacobs , the guy in charge, among others, on the MS application blocks, proposes that the community will now be responsible for creating new application blocks, under the leadership of MS devs. While in theory this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Community Application Blocks? nah By Roy Osherove February 10, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 10, 2004; technical details may be outdated. [Ron Jacobs](http://blogs.msdn.com/rjacobs/), the guy in charge, among others, on the MS application blocks, [proposes that the community will now be responsible](http://blogs.msdn.com/rjacobs/archive/2004/02/09/70355.aspx) for creating new application blocks, under the leadership of MS devs. While in theory this sounds good and well, I hate to break up a good party. To be perfectly honest, I don't think this will work out too good. It's not that I don't have faith in the community, it's just that judging from past experiences people often can't find enough time to cooperate on this to make a reasonable outcome. The [Data Application block v.3](http://www.gotdotnet.com/Community/Workspaces/workspace.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431) is a good example. It's been "frozen" for a long time even though I find it totally usable as is. The fact is that if this is something MS is in charge of, it gets better credibility and better reliability. People don't want to again build their own stuff here. They want someone to show them how it's "supposed" to be done. An application block should be to a certain extent a "perfect" piece of reusable code. Mere community efforts won't make it so. Even of you gathered all those people together under a MS dev with a team leader hat, it will be hard to actually manage these efforts and coordinate such a project into a good state in reasonable time. Call me spoiled, but I'd rather MS keep doing their thing here and keep pushing out these blocks under a full MS hat. I want stuff that I can use easily that I know was developed and tested by the people who actually wrote the .Net framework. As for community, I do see a place in the community to create a specialized suggestions,features and bugs site that deals solely with application blocks. People should be able to hand in their own ideas and so on, but the ultimate decision of what makes it into an actual block (and thus tested and possibly re-written) will be up to the guys in Redmond. I know it sounds a bit weird, but this is one time I wish to see the community staying out of it(to a point). Just as I wouldn't want the community to release patches and upgrades to Visual Studio.Net, I wouldn't want code that is an official application block to be developed by non other than the mother ship. Another good example would be my own attempt at an application block. the [Extensibility application block](http://workspaces.gotdotnet.com/eap) comes to solve the problem of easily incorporating plugins into your Winforms application. It works, and it's cool, but I just don't have enough time to maintain it. All I can do is make it public and hope that MS will adopt it and make it(or use some of the ideas in there) into a real application block which is tested, supported and maintained. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 13, 2004 ### [MVP Recommendation: James Crowley](https://osherove.com/blog/2004/2/13/mvp-recommendation-james-crowley.html) - Feb 13, 2004 ### [New Israeli User Group: Agile Development. What do you think?](https://osherove.com/blog/2004/2/13/new-israeli-user-group-agile-development-what-do-you-think.html) - Feb 9, 2004 ### [1 year of blogging](https://osherove.com/blog/2004/2/9/1-year-of-blogging.html) - Feb 8, 2004 ### [Israel User Group news](https://osherove.com/blog/2004/2/8/israel-user-group-news.html) --- title: "1 year of blogging" url: "https://osherove.com/blog/2004/2/9/1-year-of-blogging.md" canonical: "https://osherove.com/blog/2004/2/9/1-year-of-blogging.html" published: "2004-02-09T15:45:00" updated: "2004-02-09T15:45:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Tomorrow will mark the 1 year anniversary of this weblog.Who knew.. A year ago I was hating my job, feeling misused and basically waiting for something to come along. It didn't come, so I had to bring it myself. This…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 1 year of blogging By Roy Osherove February 9, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 9, 2004; technical details may be outdated. Tomorrow will mark the 1 year anniversary of this weblog.Who knew.. A year ago I was hating my job, feeling misused and basically waiting for something to come along. It didn't come, so I had to bring it myself. This blog made all the difference in the world for me. Through this blog I was able to: - Learn more information than I ever could have learned in twice this time from this amazing community - Find new friends - Get several job offers - Work as a consultant all the way off in Norway - Write articles for MSDN and [MSDNAA](http://www.msdnaa.net/) - Invited to speak at user groups (more on this one later) I've tried to stay true to myself and to my feelings. Yeah, sometimes I speak and find out that I was wrong, but I always try to make amends later. I beg forgiveness from anyone who'm I offended. Sorry, it was not on purpose. Thanks for reading me. The statistics of the number of readers certainly help me to write and share more. Lately it's been a bit slow on the technical side but my promise to you is that I'll be back to more articles real soon. I might even have very exciting news in the coming weeks (No I am not taking the red pill). Royo. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 13, 2004 ### [New Israeli User Group: Agile Development. What do you think?](https://osherove.com/blog/2004/2/13/new-israeli-user-group-agile-development-what-do-you-think.html) - Feb 10, 2004 ### [Community Application Blocks? nah](https://osherove.com/blog/2004/2/10/community-application-blocks-nah.html) - Feb 8, 2004 ### [Israel User Group news](https://osherove.com/blog/2004/2/8/israel-user-group-news.html) - Feb 8, 2004 ### [Setting the record straight on MVP newsgroups](https://osherove.com/blog/2004/2/8/setting-the-record-straight-on-mvp-newsgroups.html) --- title: "Israel User Group news" url: "https://osherove.com/blog/2004/2/8/israel-user-group-news.md" canonical: "https://osherove.com/blog/2004/2/8/israel-user-group-news.html" published: "2004-02-08T14:54:00" updated: "2004-02-08T14:54:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Don't say I didn't tell you, Omer :) the .Net web user group will be meeting on the 11th of this month, just one day after DevDays. Here's the meeting details If you wanna see all the user groups in Israel: here's the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel User Group news By Roy Osherove February 8, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 8, 2004; technical details may be outdated. Don't say I didn't tell you, Omer :) the .Net web user group will be meeting on the 11th of this month, just one day after DevDays. [Here's the meeting details](http://www.microsoft.com/israel/events/default.aspx?pageType=1&idType=1&id=36) If you wanna see all the user groups in Israel: [here's the place to go](http://www.microsoft.com/israel/communities/usergroups.mspx). And here's a bit of news: there's a new user group in Israel for Windows Embedded development. Rats! They had a meeting today and I missed it :( ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 10, 2004 ### [Community Application Blocks? nah](https://osherove.com/blog/2004/2/10/community-application-blocks-nah.html) - Feb 9, 2004 ### [1 year of blogging](https://osherove.com/blog/2004/2/9/1-year-of-blogging.html) - Feb 8, 2004 ### [Setting the record straight on MVP newsgroups](https://osherove.com/blog/2004/2/8/setting-the-record-straight-on-mvp-newsgroups.html) - Feb 6, 2004 ### [Lessons learned from IVBUG](https://osherove.com/blog/2004/2/6/lessons-learned-from-ivbug.html) --- title: "Setting the record straight on MVP newsgroups" url: "https://osherove.com/blog/2004/2/8/setting-the-record-straight-on-mvp-newsgroups.md" canonical: "https://osherove.com/blog/2004/2/8/setting-the-record-straight-on-mvp-newsgroups.html" published: "2004-02-08T13:45:00" updated: "2004-02-08T13:45:00" tags: ["Off Topic"] author: "Roy Osherove" description: "OK. Just to set the record straight and to finish this latest circle concerning the private MVP newsgroups . On the following topics, here's my current stand: MVP private newsgroups This was apparently a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Setting the record straight on MVP newsgroups By Roy Osherove February 8, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 8, 2004; technical details may be outdated. OK. Just to set the record straight and to finish this latest circle concerning the [private MVP newsgroups](http://weblogs.asp.net/rosherove/archive/2004/02/06/68374.aspx). On the following topics, here's my current stand: MVP private newsgroups This was apparently a misunderstanding on my part. I can attribute it to a less than perfect lack of knowledge on what actually goes on in the newsgroups and to jumping too fast into conclusions. Fact is, reading [this post](http://weblogs.asp.net/jasonsalas/archive/2004/02/06/68322.aspx) from Jason Salas made me jump to the conclusion that there is real and live information flowing in there that other people do not have access to. Information which, in my view, should be shared. It turns out that most info there is NDAed and what ever is not is usually non related off topic material. All I can say is, Sorry. I did not mean to offend anyone of the MVPs or the people who run the newsgroups. I was wrong and a lot of people had very informative comments that set me straight on this issue. Paid developer support Still not happy about this subject. Shoot me but I can't help but feel that I'm being taken advantage on when I have to pay a company to help me with **their** product. Sure, a lot of people say it's not economically feasible, but still, I'm a purist at heart and this bugs me. I wish there was a better model. Other stuff [Frans Bouma](http://weblogs.asp.net/fbouma/) opened up a can of worms of his own with the whole subject of [lack of patches and updates](http://weblogs.asp.net/fbouma/archive/2004/02/06/68778.aspx) to existing software. He's totally right. I am glad that some of these issues were brought into the light of day. We're better off having these issues being discussed and debated than not being mentioned at all. Obviously this is an important subject. Alex from MS even wanted to get more feedback on these very issues. We might as well take the opportunity. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 9, 2004 ### [1 year of blogging](https://osherove.com/blog/2004/2/9/1-year-of-blogging.html) - Feb 8, 2004 ### [Israel User Group news](https://osherove.com/blog/2004/2/8/israel-user-group-news.html) - Feb 6, 2004 ### [Lessons learned from IVBUG](https://osherove.com/blog/2004/2/6/lessons-learned-from-ivbug.html) - Feb 6, 2004 ### [MyDoom (A,B) Worm Removal Tool for Windows XP and Windows 2000](https://osherove.com/blog/2004/2/6/mydoom-ab-worm-removal-tool-for-windows-xp-and-windows-2000.html) --- title: "Doing Test Driven Development with no DLLs" url: "https://osherove.com/blog/2004/2/6/doing-test-driven-development-with-no-dlls.md" canonical: "https://osherove.com/blog/2004/2/6/doing-test-driven-development-with-no-dlls.html" published: "2004-02-06T12:06:00" updated: "2004-02-06T12:06:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "Doing test driven development often(well, practically always) entails testing against a class library in your tests. It's just the easiest way to test functionality of objects (you need to reference those objects…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Doing Test Driven Development with no DLLs By Roy Osherove February 6, 2004 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published February 6, 2004; technical details may be outdated. Doing test driven development often(well, practically always) entails testing against a class library in your tests. It's just the easiest way to test functionality of objects (you need to reference those objects somehow, right?) so, most of the time you would create a test project and a tested library project before you ever create a GUI or a console application that uses that library. But what happens when you have a very small project? say, a very simple console application with a very small set of functionality? Well, in the TDD manner you would have the console app built along with a library project that contains the classes that do the functionality. But it may seem a bit like overkill to have 3 separate projects for a such a simple task. Or maybe the customer will not want to distribute the console app along with a dll for something so simple as say... renaming files in the directory based on some simple business logic. Maybet he requirement is that the user should only have to copy one exe file into the directory and run it with no hassles. So.After all this text, what do you do when you can't use a library project for a very simple functionality? You don't create a library project. Instead you create the necessary class(es) in your console app. Then you **link** to those class files from your test project: _“MyTestProject->Add existing files->select the class file-> open the small menu on the “open” button and choose “link”._ Now you have a physical reference to the classes but you actually have only one instance of the class files for you to work with. This is as good as it gets for very small projects with a harsh requirement of “no DLLs please”. Use it wisely, grasshopper. ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Mar 27, 2004 ### [A cool Selection Expansion macro](https://osherove.com/blog/2004/3/27/a-cool-selection-expansion-macro.html) - Feb 29, 2004 ### [Problem And Solution: "Login failes for some users on a DotNetNuke based portal"](https://osherove.com/blog/2004/2/29/problem-and-solution-quotlogin-failes-for-some-users-on-a-do.html) - Jan 2, 2004 ### [Query Analyzer Tricks](https://osherove.com/blog/2004/1/2/query-analyzer-tricks.html) - Dec 20, 2003 ### [Problem and solution: Renaming htm file to aspx may cause javascript trouble](https://osherove.com/blog/2003/12/20/problem-and-solution-renaming-htm-file-to-aspx-may-cause-jav.html) --- title: "Lessons learned from IVBUG" url: "https://osherove.com/blog/2004/2/6/lessons-learned-from-ivbug.md" canonical: "https://osherove.com/blog/2004/2/6/lessons-learned-from-ivbug.html" published: "2004-02-06T11:50:00" updated: "2004-02-06T11:50:00" tags: ["Off Topic"] author: "Roy Osherove" description: "The last IVBUG meeting was about the subject of caching and the Caching Application Block , and was hosted by non other than our very own Software Simplist, Udi Dahan . Here's the presentation. Udi is a very eloquent…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Lessons learned from IVBUG By Roy Osherove February 6, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 6, 2004; technical details may be outdated. The last [IVBUG](http://www.renaissance.co.il/ivbug) meeting was about the subject of caching and the [Caching Application Block](http://msdn.microsoft.com/library/en-us/dnpag/html/CachingBlock.asp), and was hosted by non other than our very own [Software Simplist, Udi Dahan](http://udidahan.weblogs.us/). Here's [the presentation.](http://udidahan.weblogs.us/Presentations/Practical_Caching.zip) Udi is a very eloquent speaker and you can tell he has some very large amounts of knowledge in his head. The presentation started out very nicely with Udi showing a simple implementation of a slow database layer and talking about the problems and solutions one would use in designing a data layer access object (facade) in a service oriented manner. Very interesting. The whole lecture was much more about ideas of good design and when to use and not to use the caching application block. There were some technical problems, however, that prevented the meeting from being perfect. All of these are things to watch out for and this listing is in no way meant to degrade the quality of the presentation, merely to serve as a reminder for myself not to repeat the same mistakes, but instead to come up with my own brand new mistakes in my lectures :) - Udi did the talk while coding in a language he was not fully acquainted with. This caused some Minor setbacks in initial coding but overall did not hurt the overall speed of the coding session. However it does “look badly“ a bit when a speaker does not come prepared. **Use the code you are most comfortable with.** - It would be better to actually code the whole exercise before the lecture in VB.Net (Udi is mainly a C# dude). In fact, some of the code would have been better prepared in advance with removing comments taking place while the session advances. Saves you the trouble of fighting with the code too much. **Have the tricky parts ready in advance**. - Udi was using a laptop that was not his own and consequently, was using a guest account on that system. This led to some pretty funky security exceptions during a small part of the presentation (trying to build the application block, trying to use the application block) since you needed administrator right and some read\\write rights on some folders. Definitely something to look out for. **Do the whole session at least once on the same machine that will be used for the presentation.** - Although there was a good coding session at the beginning, we only got to the main part of actually how to use the Caching application block about 15 mins. before the end. By that time most people were pretty tired and some were starting to go home. That's too bad because I thought that was one of the most important points of this presentation. **Make your point early enough in the presentation**. Hopefully I did not offend anyone and this would be a great learning experience. I am in no way an experienced presentation guy and would argue that being in the same situation I would probably have done very poorly compared to Udi, which is, again, one of the most knowledgeable people I know in some of these areas. OK. Now I expect to be grilled just as much in my own presentations, seeing as  I am so easily judging others. Feel free.Bring it on. I should take them as easily as I dish them out. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 8, 2004 ### [Israel User Group news](https://osherove.com/blog/2004/2/8/israel-user-group-news.html) - Feb 8, 2004 ### [Setting the record straight on MVP newsgroups](https://osherove.com/blog/2004/2/8/setting-the-record-straight-on-mvp-newsgroups.html) - Feb 6, 2004 ### [MyDoom (A,B) Worm Removal Tool for Windows XP and Windows 2000](https://osherove.com/blog/2004/2/6/mydoom-ab-worm-removal-tool-for-windows-xp-and-windows-2000.html) - Feb 6, 2004 ### [In local news...](https://osherove.com/blog/2004/2/6/in-local-news.html) --- title: "MyDoom (A,B) Worm Removal Tool for Windows XP and Windows 2000" url: "https://osherove.com/blog/2004/2/6/mydoom-ab-worm-removal-tool-for-windows-xp-and-windows-2000.md" canonical: "https://osherove.com/blog/2004/2/6/mydoom-ab-worm-removal-tool-for-windows-xp-and-windows-2000.html" published: "2004-02-06T11:22:00" updated: "2004-02-06T11:22:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Stay safe, but if you find yourself in deep sh*t already: MyDoom (A,B) Worm Removal Tool for Windows XP and Windows 2000" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MyDoom (A,B) Worm Removal Tool for Windows XP and Windows 2000 By Roy Osherove February 6, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 6, 2004; technical details may be outdated. Stay safe, but if you find yourself in deep sh\*t already: [MyDoom (A,B) Worm Removal Tool for Windows XP and Windows 2000](http://www.microsoft.com/downloads/details.aspx?FamilyID=c14bfbe4-3d50-464d-a26c-9c287f8a08c5&DisplayLang=en) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 8, 2004 ### [Setting the record straight on MVP newsgroups](https://osherove.com/blog/2004/2/8/setting-the-record-straight-on-mvp-newsgroups.html) - Feb 6, 2004 ### [Lessons learned from IVBUG](https://osherove.com/blog/2004/2/6/lessons-learned-from-ivbug.html) - Feb 6, 2004 ### [In local news...](https://osherove.com/blog/2004/2/6/in-local-news.html) - Feb 6, 2004 ### [Mortal sin #2: Information hoarding](https://osherove.com/blog/2004/2/6/mortal-sin-2-information-hoarding.html) --- title: "In local news..." url: "https://osherove.com/blog/2004/2/6/in-local-news.md" canonical: "https://osherove.com/blog/2004/2/6/in-local-news.html" published: "2004-02-06T02:03:00" updated: "2004-02-06T02:03:00" tags: ["Off Topic"] author: "Roy Osherove" description: "In local news, these misc items happened: Dino Esposito found my article helpful. Yes, it seems like a suck up, but you'll have to get over yourselves. I'm honored. Michal Blaha has built what looks to be a better and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # In local news... By Roy Osherove February 6, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 6, 2004; technical details may be outdated. In local news, these misc items happened: - [Dino Esposito](http://weblogs.asp.net/despos/archive/2004/01/30/65101.aspx) found [my article](http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/searchforplugins.asp) helpful. Yes, it seems like a suck up, but you'll have to get over yourselves. I'm honored. - [Michal Blaha](http://blog.vyvojar.cz/michal) has built what looks to be a better and more maintained Feedable, called [Web2RSS](http://web2rss.vyvojar.cz/), using parts of code [that I published](http://www.msdnaa.net/Resources/display.aspx?ResID=2324). Very cool. Again, I'm honored. - I'm almost sure if I'm gonna buy a laptop It's going to be an IBM ThinkPad T41,T41p or R50p. Any thoughts? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 6, 2004 ### [Lessons learned from IVBUG](https://osherove.com/blog/2004/2/6/lessons-learned-from-ivbug.html) - Feb 6, 2004 ### [MyDoom (A,B) Worm Removal Tool for Windows XP and Windows 2000](https://osherove.com/blog/2004/2/6/mydoom-ab-worm-removal-tool-for-windows-xp-and-windows-2000.html) - Feb 6, 2004 ### [Mortal sin #2: Information hoarding](https://osherove.com/blog/2004/2/6/mortal-sin-2-information-hoarding.html) - Feb 5, 2004 ### [Mortal coding sin: programming in your mother tongue](https://osherove.com/blog/2004/2/5/mortal-coding-sin-programming-in-your-mother-tongue.html) --- title: "The Best Unit Test framework in town" url: "https://osherove.com/blog/2004/2/6/the-best-unit-test-framework-in-town.md" canonical: "https://osherove.com/blog/2004/2/6/the-best-unit-test-framework-in-town.html" published: "2004-02-06T01:48:00" updated: "2004-02-06T01:48:00" tags: ["Agile Related", "Cool sites"] author: "Roy Osherove" description: "In the last IVBUG meeting I ran into the guy who created what he called “ The Best Unit Test framework in town ”. His name is Bnaya and he is one cool dude who is excited about technology in the way that I recognize in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Best Unit Test framework in town By Roy Osherove February 6, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published February 6, 2004; technical details may be outdated. In the last [IVBUG](http://www.renaissance.co.il/ivbug) meeting I ran into the guy who created what he called “[The Best Unit Test framework in town](http://www.codeproject.com/gen/design/Best_Unit_Test_Framework.asp)”. His name is [Bnaya](http://www.myblog.co.il/Blogs/View.asp?MBID=217) and he is one cool dude who is excited about technology in the way that I recognize in myself. He even volunteered to give a talk in the user group about it. It will probably happen in the near future. Looking at the framework he built, granted, it's not the best name for it, but still. If you've used NUnit or csUnit, you'd do well to stop by there and see all the cool test ideas he implemented. For example, security, multi threading and so on. Very nice, and very slick idea. It's pretty rough around the edges but it shows of some very good ideas for the future of test driven code. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Apr 25, 2004 ### [Test Driven Development Workshop is a go!](https://osherove.com/blog/2004/4/25/test-driven-development-workshop-is-a-go.html) - Feb 22, 2004 ### [Pair Programming analysis - illuminating!](https://osherove.com/blog/2004/2/22/pair-programming-analysis-illuminating.html) - Jan 21, 2004 ### [The humble programmer](https://osherove.com/blog/2004/1/21/the-humble-programmer.html) --- title: "Mortal sin #2: Information hoarding" url: "https://osherove.com/blog/2004/2/6/mortal-sin-2-information-hoarding.md" canonical: "https://osherove.com/blog/2004/2/6/mortal-sin-2-information-hoarding.html" published: "2004-02-06T00:26:00" updated: "2004-02-06T00:26:00" tags: ["Off Topic"] author: "Roy Osherove" description: "So this is something I don't really get. If you are an MVP, you get access to discussions that the common folks don't have access to. Is it just me or is this situation twisted? The whole point about these discussion…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mortal sin \#2: Information hoarding By Roy Osherove February 6, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 6, 2004; technical details may be outdated. So this is something I don't really get. If you are an MVP, [you get access to discussions](http://weblogs.asp.net/jasonsalas/archive/2004/02/06/68322.aspx) that the common folks don't have access to. Is it just me or is this situation twisted? The whole point about these discussion groups is that information is **shared**, not hoarded to be kept secret from the “regular people”. I mean, if anyone really needs some good discussions and expert answers its the people who are **not** MVPs, RDs or other blah blah. Here's another example. If you pay some fees per year, you get access to a selection  of private Microsoft newsgroups about various technologies. In these groups you are **promised an answer to your every question**. Hardly the case in the “regular“ newsgroups, right? Why is that? that's just another example of information hoarding, or in this case, “squeezing your customers for stuff you should give for free“ because all these problems are because the developers, which are the actual customers in this scenario,  are having problems with a product that MS is producing: the APIs. This creates a very ironic situation: Even though MS benefits most when a developer knows how to use its technologies and finds it easy to do, they still **charge** the developer to give them better access for resources to learn these abilities. In effect, MS is shooting itself in the foot with these devs. I can just picture how many developers tried to do some thing their boss told them to do, did not know how, looked in the newsgroups, articles and so on and finally gave up. SO their boss gave up on this route and so on and so on. In the end the technology is reflected as hard to use (which it sometimes really is). How many of these cases could have been avoided had these devs been given access to the “private” newsgroups? Can you even project how much revenue you lose in a year over this? The fact is this is **unfair** and every time I see this, be it some MS dev that says “seen this in an internal newsgroup today“ or somewhere else, it gets me riled up. What's that? “_It would be too much noise if we let them all in_“ you say? nonsense. There is so much noise because there is so much quest for knowledge. If you met this noise with the right amount of people to answer the questions eventually you would get a bigger benefit than you do now. I'm afraid there will always be some “elite” group of people out there that have access to all the information that you and I should have access to as well. It's not asking for much. We struggle with the same things everyone else does. Why should we have access to less solutions? Are non MVPs second class developers? Isn't the whole point of being an MVP is that one has been **helping** and **sharing** information with the community? A little counter intuitive for my taste. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 6, 2004 ### [MyDoom (A,B) Worm Removal Tool for Windows XP and Windows 2000](https://osherove.com/blog/2004/2/6/mydoom-ab-worm-removal-tool-for-windows-xp-and-windows-2000.html) - Feb 6, 2004 ### [In local news...](https://osherove.com/blog/2004/2/6/in-local-news.html) - Feb 5, 2004 ### [Mortal coding sin: programming in your mother tongue](https://osherove.com/blog/2004/2/5/mortal-coding-sin-programming-in-your-mother-tongue.html) - Feb 4, 2004 ### [Sign of life](https://osherove.com/blog/2004/2/4/sign-of-life.html) --- title: ".Net Rocks live - review" url: "https://osherove.com/blog/2004/2/5/net-rocks-live-review.md" canonical: "https://osherove.com/blog/2004/2/5/net-rocks-live-review.html" published: "2004-02-05T10:36:00" updated: "2004-02-05T10:36:00" tags: ["Blogging"] author: "Roy Osherove" description: "The first live .Net Rocks show was aired last week. And it was a hit. This is by far one of the most interesting and lively shows that have come out of the DNR hall of fame. Rory's debut Rory is an intelligent, funny…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Rocks live - review By Roy Osherove February 5, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published February 5, 2004; technical details may be outdated. The first [live .Net Rocks show](http://www.franklins.net/dotnetrocks.asp) was aired last week. And it was a hit. This is by far one of the most interesting and lively shows that have come out of the DNR hall of fame. **Rory's debut** Rory is an intelligent, funny guy. He adds to the show a lot of humor and has some very good questions. Since this was hist first show it's understandable that he was pretty quiet for the first hour or so, but it would only do good if he were to be more part of the goings ons in the show. **Interactive commercial** This was a brilliant move on Carl's side. Bringing on a guy from DataDymamics to actually talk and interact with the panel made all the difference in the world. It turned out to be a very informative and interesting discussion, and ultimately a much better commercial than a prerecorded one. good work. There was also a good back and forth with the discussion on reporting services for SQL server which brought up lots of very important points. Things which would probably never have come up had it not been for the DD guy on air with the panel. **Dan Appelman rocks** The discussion with Dan was lively, funny and interesting. May there be more like these. **Conslusion** If there were more shows like this I'd buy a car and get a job far far away just so I could listen to them while driving. (what, you thought I could only write bad stuff? geez) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Feb 18, 2004 ### [Israeli .Net Bloggers](https://osherove.com/blog/2004/2/18/israeli-net-bloggers.html) - Feb 15, 2004 ### ["How do I open a weblog here?"](https://osherove.com/blog/2004/2/15/quothow-do-i-open-a-weblog-herequot.html) - Feb 5, 2004 ### [Pasting nicely formatted code into your blog](https://osherove.com/blog/2004/2/5/pasting-nicely-formatted-code-into-your-blog.html) - Jan 26, 2004 ### [Some new blogs and a story of quantity vs. quality](https://osherove.com/blog/2004/1/26/some-new-blogs-and-a-story-of-quantity-vs-quality.html) --- title: "Pasting nicely formatted code into your blog" url: "https://osherove.com/blog/2004/2/5/pasting-nicely-formatted-code-into-your-blog.md" canonical: "https://osherove.com/blog/2004/2/5/pasting-nicely-formatted-code-into-your-blog.html" published: "2004-02-05T10:08:00" updated: "2004-02-05T10:08:00" tags: ["Blogging"] author: "Roy Osherove" description: "BTW, I was asked how I put the code so nicely formatted on my blog. Here are the steps: Write the code in vs.net Paste it into a new word document Save the document as an html(filtered) (or .Text will have trouble with…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Pasting nicely formatted code into your blog By Roy Osherove February 5, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published February 5, 2004; technical details may be outdated. BTW, I was asked how I put the code so nicely formatted on my blog. Here are the steps: - Write the code in vs.net - Paste it into a new word document - Save the document as an html(filtered) (or .Text will have trouble with it) - Close the doc , then re-open it without changing any text after that (this is an important step) - Copy the code from the doc into your blog post **Update**: ok. This was just too obvious. I've created a short word macro that does this for you. simply paste the following code in a new macro module in word that belongs to the Normal.dot template. Then assign it a keyboard shortcut using right click on toolbars-customize-keyboard-macros and you're done: Sub FormatCodeForBlog()     Selection.PasteAndFormat(wdPasteDefault)     ActiveDocument.SaveAs(FileName:="temp.htm", FileFormat:=wdFormatFilteredHTML, \_           LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword \_         :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, \_         SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= \_         False)     ActiveWindow.View.Type = wdWebView     ActiveWindow.Close()     RecentFiles(1).Open()     Selection.WholeStory()     Selection.Copy() End Sub ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Feb 15, 2004 ### ["How do I open a weblog here?"](https://osherove.com/blog/2004/2/15/quothow-do-i-open-a-weblog-herequot.html) - Feb 5, 2004 ### [.Net Rocks live - review](https://osherove.com/blog/2004/2/5/net-rocks-live-review.html) - Jan 26, 2004 ### [Some new blogs and a story of quantity vs. quality](https://osherove.com/blog/2004/1/26/some-new-blogs-and-a-story-of-quantity-vs-quality.html) - Jan 25, 2004 ### [School Blogging](https://osherove.com/blog/2004/1/25/school-blogging.html) --- title: "Mortal coding sin: programming in your mother tongue" url: "https://osherove.com/blog/2004/2/5/mortal-coding-sin-programming-in-your-mother-tongue.md" canonical: "https://osherove.com/blog/2004/2/5/mortal-coding-sin-programming-in-your-mother-tongue.html" published: "2004-02-05T10:01:00" updated: "2004-02-05T10:01:00" tags: ["Off Topic"] author: "Roy Osherove" description: "If there's one nasty coding habit that gets me riled up every time it has to be coding with non English words. This probably won't mean much to the English speaking crowd, but here in Israel, and in other non English…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mortal coding sin: programming in your mother tongue By Roy Osherove February 5, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 5, 2004; technical details may be outdated. If there's one nasty coding habit that gets me riled up every time it has to be coding with non English words. This probably won't mean much to the English speaking crowd, but here in Israel, and in other non English speaking countries, junior developers often choose to give their parameters, class names, database tables and sprocs names that, although written in English, are words in their mother tongue. For example, I've come across code that looks like this: Public Class MenahelLakoach     Public Sub HosafatLachoach(ByVal shem As String, ByVal TeudatZehut As String)         'Ugly code taken from original         Dim sql As String = "insert into LAKOACH (shem,TeudatZehut) VALUES ('" + shem + "','" + TeudatZehut + "')"         'more code here     End Sub End Class Obviously, this is totally unreadable to anyone who does not speak Hebrew. Actually, it's hard to read even if you know Hebrew since you're used to read English, not translating it in your head to Hebrew. Ugh. Here's an easier to read translation: Public Class CustomerManager     Public Sub AddCustomer(ByVal Name As String, ByVal ID As String)         'Ugly code taken from original         Dim sql As String = "insert into CUSTOMERS (Name,ID) VALUES ('" + Name + "','" + ID + "')"         'more code here     End Sub End Class Not too hard, is it? Please, for the sake of the developer after you, write in English. Look at it this way: - Now you can actually send the code over to someone and they'll understand it no matter what their mother tongue is - it's more reusable - hey, you had to learn English to program , right? might as well use it. - You won't have to think so much about how to spell a particular non english word in english, thank god. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 6, 2004 ### [In local news...](https://osherove.com/blog/2004/2/6/in-local-news.html) - Feb 6, 2004 ### [Mortal sin #2: Information hoarding](https://osherove.com/blog/2004/2/6/mortal-sin-2-information-hoarding.html) - Feb 4, 2004 ### [Sign of life](https://osherove.com/blog/2004/2/4/sign-of-life.html) - Jan 28, 2004 ### [Leaving Norway](https://osherove.com/blog/2004/1/28/leaving-norway.html) --- title: "Sign of life" url: "https://osherove.com/blog/2004/2/4/sign-of-life.md" canonical: "https://osherove.com/blog/2004/2/4/sign-of-life.html" published: "2004-02-04T23:53:00" updated: "2004-02-04T23:53:00" tags: ["Off Topic"] author: "Roy Osherove" description: "No. I'm not dead. I was just taking a few days off to spend some quality time with my wife. Expect to see some more posts in the very near future about: .Net Rocks live The IVBUG caching lecture The best Unit testing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Sign of life By Roy Osherove February 4, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published February 4, 2004; technical details may be outdated. No. I'm not dead. I was just taking a few days off to spend some quality time with my wife. Expect to see some more posts in the very near future about: - .Net Rocks live - The [IVBUG](http://www.renaissance.co.il/ivbug) caching lecture - The best Unit testing framework in town - Dino - Site2RSS - Homing in on a laptop _**Keyboard hint of the day:**_ _press \[Start\], let go and then \[tab\]. Where is your focus?_ _(Thanks to my wife for this one)_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 6, 2004 ### [Mortal sin #2: Information hoarding](https://osherove.com/blog/2004/2/6/mortal-sin-2-information-hoarding.html) - Feb 5, 2004 ### [Mortal coding sin: programming in your mother tongue](https://osherove.com/blog/2004/2/5/mortal-coding-sin-programming-in-your-mother-tongue.html) - Jan 28, 2004 ### [Leaving Norway](https://osherove.com/blog/2004/1/28/leaving-norway.html) - Jan 26, 2004 ### [Fried eye anyone?](https://osherove.com/blog/2004/1/26/fried-eye-anyone.html) --- title: "Leaving Norway" url: "https://osherove.com/blog/2004/1/28/leaving-norway.md" canonical: "https://osherove.com/blog/2004/1/28/leaving-norway.html" published: "2004-01-28T15:00:00" updated: "2004-01-28T15:00:00" tags: ["Off Topic"] author: "Roy Osherove" description: "That's it. In a few moments I'll be shutting down this machine that I've had for two months. A short while after that it will be wiped and reformatted for use by someone else. It's always kinda sad to close your machine…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Leaving Norway By Roy Osherove January 28, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 28, 2004; technical details may be outdated. That's it. In a few moments I'll be shutting down this machine that I've had for two months. A short while after that it will be wiped and reformatted for use by someone else. It's always kinda sad to close your machine for the last time. You check your email one last time, you check the blogs one last time, you make sure to put mail rules to forward everything into your home address and more stuff. everything to avoid that final shutdown. Once I even opened the machine again just to make sure I still have some sort of link to reality. Face it, a developer without a machine is like a turtle with nothing on its back. Totally exposed, you wander through the halls of the company, asking for favors ("Can I just send an email from here?") and feeling left out. your machine is so private that a lot of times you feel as if people looking at your desktop are looking into your private room, along with all the garbage you've accumulated over the time you've been there. It's funny how serious I take my machine at work. It's so customizable to fit **me** that sometimes other people find it impossible to use if they need to. It's so much customized  that it is an extension of my body and I can do some actions without even thinking (shortcuts for most used programs, status checking of memory and other stuff). And now I'm leaving my home again. This is not the first time yet it hard every time. Not only leaving it (how traumatic) you are also destroying everything that you've created inside it. All the thoughts, the searches, the wondering and the various files you accumulated that you thought were cool enough to try out. It's a reflection of your brain over time. Your likes and dislikes, your color preferences, the way you work, who you spoke to using emails, you chat logs, you whole developer life is there. And now you're wiping it clean. Starting fresh. There's something very nice about being able to start fresh too. You get a new machine, you make your promises about your new home ("this time I won't fill it with so much garbage so quickly") and you get to reconfigure your life. It always amazes me the amount of change required to make a clean machine into **my** machine. It could take a day or two (sometimes even a week until I feel really comfortable). I did a stand up "goodbye" meeting with all the developers. It was kinda touchy. The place was starting to grow on me I guess. It was fun going through these 2 months, seeing the effect you can make on people and learning lots of new stuff about yourself and the way you  work with other people. Overall this was an amazing experience and I feel that i've grown both as a developer and as a trainer because of it. I got lots more confidence in a lot of things that I felt I needed to improve on. I also met lots of new people, saw an amazing countryside and got to live as one of the locals for two months. Believe me, if you have never rode a buss at 7AM in the morning in Norway in the middle of December, you have not lived at all ;) Anyway, after I leave work today, I need to start packing. 6 AM tomorrow morning I get up, and get to the airport. The plane leaves at 7 AM (it's like a family airport, everything is laid back and easy going) and I'll get to Oslo about an hour and a half later. Next I have 2 hours wait in Oslo followed by 2 hours flight to Brussels. Next I have a 5 hour wait to catch a connection flight to Israel (another 5 hours). Landing at midnight in Tel Aviv will bring this into the 12 hour commute range (Israel is one hour before Norway). Hope I make it. I knew I'm gonna have lots of time to wait, so I printed about half of the [Art of Unix](https://www.amazon.com/exec/obidos/ASIN/0131429019/ref=nosim/iserializable-20) book([read online](http://www.faqs.org/docs/artu/)), and should also have a good time going through [COM+ and the Battle for the middle tier](https://www.amazon.com/exec/obidos/ASIN/0471317179/iserializable-20). Between he two of those either I'll be reading with interest or sleeping like a baby ;) See you all on the flip side! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 5, 2004 ### [Mortal coding sin: programming in your mother tongue](https://osherove.com/blog/2004/2/5/mortal-coding-sin-programming-in-your-mother-tongue.html) - Feb 4, 2004 ### [Sign of life](https://osherove.com/blog/2004/2/4/sign-of-life.html) - Jan 26, 2004 ### [Fried eye anyone?](https://osherove.com/blog/2004/1/26/fried-eye-anyone.html) - Jan 24, 2004 ### [I'm available again](https://osherove.com/blog/2004/1/24/im-available-again.html) --- title: "My article on Microsoft.com!" url: "https://osherove.com/blog/2004/1/27/my-article-on-microsoftcom.md" canonical: "https://osherove.com/blog/2004/1/27/my-article-on-microsoftcom.html" published: "2004-01-27T09:20:00" updated: "2004-01-27T09:20:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "Quick, before it disappears! My Log file to XML article is appearing on www.microsoft.com ! (Thanks for the tip, Darren )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My article on Microsoft.com! By Roy Osherove January 27, 2004 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published January 27, 2004; technical details may be outdated. Quick, before it disappears! My [Log file to XML article](http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/regexandxmlclasses.asp) is appearing on [www.microsoft.com](http://www.microsoft.com/)! (Thanks for the tip, [Darren](http://weblogs.asp.net/dneimke/)) ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Feb 24, 2004 ### [Getting a little closer to SOA](https://osherove.com/blog/2004/2/24/getting-a-little-closer-to-soa.html) - Feb 10, 2004 ### [2 new articles](https://osherove.com/blog/2004/2/10/2-new-articles.html) - Jan 25, 2004 ### [Scheduling games](https://osherove.com/blog/2004/1/25/scheduling-games.html) - Jan 21, 2004 ### [The humble programmer](https://osherove.com/blog/2004/1/21/the-humble-programmer.html) --- title: "Fried eye anyone?" url: "https://osherove.com/blog/2004/1/26/fried-eye-anyone.md" canonical: "https://osherove.com/blog/2004/1/26/fried-eye-anyone.html" published: "2004-01-26T20:25:00" updated: "2004-01-26T20:25:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Ouch! Sean Gerety talks about his eye operation and it reads like a Steven King novel. Very graphic. I was catching myself mumbling out loud \"holy crap\" at some point. Anyway, if you ever wondered what it feels like to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Fried eye anyone? By Roy Osherove January 26, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 26, 2004; technical details may be outdated. Ouch! Sean Gerety talks about his eye operation and it reads like a Steven King novel. Very graphic. I was catching myself mumbling out loud "holy crap" at some point. Anyway, if you ever wondered what it feels like to have your eyes laser-ed [here's your chance](http://dotnetjunkies.com/WebLog/metablog/posts/6104.aspx). Congrats Sean :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Feb 4, 2004 ### [Sign of life](https://osherove.com/blog/2004/2/4/sign-of-life.html) - Jan 28, 2004 ### [Leaving Norway](https://osherove.com/blog/2004/1/28/leaving-norway.html) - Jan 24, 2004 ### [I'm available again](https://osherove.com/blog/2004/1/24/im-available-again.html) - Jan 23, 2004 ### [Intellij IDEA version 4.0 release candidate 1](https://osherove.com/blog/2004/1/23/intellij-idea-version-40-release-candidate-1.html) --- title: "Some new blogs and a story of quantity vs. quality" url: "https://osherove.com/blog/2004/1/26/some-new-blogs-and-a-story-of-quantity-vs-quality.md" canonical: "https://osherove.com/blog/2004/1/26/some-new-blogs-and-a-story-of-quantity-vs-quality.html" published: "2004-01-26T19:29:00" updated: "2004-01-26T19:29:00" tags: ["Blogging"] author: "Roy Osherove" description: "I've been getting more and more into reading blogs that discuss management and design rather than pure tech stuff. There are some great gems out there. Here are a few blogs I found today: Joseph Pelrine's Blog…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some new blogs and a story of quantity vs. quality By Roy Osherove January 26, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published January 26, 2004; technical details may be outdated. I've been getting more and more into reading blogs that discuss management and design rather than pure tech stuff. There are some great gems out there. Here are a few blogs I found today: -  [Joseph Pelrine's Blog](http://www.metaprog.com/blogs/index.php) - [Incipient(thoughts)](http://bossavit.com/thoughts/) - [Software (Management) Process Improvement](http://www.estherderby.com/weblog/blogger.html) Here's a nice quote from [the last one on the list](http://www.estherderby.com/weblog/archive/2004_01_01_archive.html#107487651825857119): _"The ceramics teacher announced on opening day that he was dividing the class into two groups. All those on the left side of the studio, he said, would be graded solely on the quantity of work they produced, all those on the right solely on its quality. His procedure was simple: on the final day of class he would bring in his bathroom scales and weigh the work of the "quantity" group: fifty pound of pots rated an "A", forty pounds a "B", and so on. Those being graded on "quality," however, needed to produce only one pot -albeit a perfect one - to get an "A". Well, came grading time and a curious fact emerged: the works of highest quality were all produced by the group being graded for quantity. It seems that while the "quantity" group was busily churning out piles of work - and learning from their mistakes - the "quality" group had sat theorizing about perfection, and in the end had little more to show for their efforts than grandiose theories and a pile of dead clay." Hmmm. Sounds sort of like iterative development and waterfall, doesn't it._ Indeed. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Feb 5, 2004 ### [.Net Rocks live - review](https://osherove.com/blog/2004/2/5/net-rocks-live-review.html) - Feb 5, 2004 ### [Pasting nicely formatted code into your blog](https://osherove.com/blog/2004/2/5/pasting-nicely-formatted-code-into-your-blog.html) - Jan 25, 2004 ### [School Blogging](https://osherove.com/blog/2004/1/25/school-blogging.html) - Jan 22, 2004 ### [Reactions](https://osherove.com/blog/2004/1/22/reactions.html) --- title: "School Blogging" url: "https://osherove.com/blog/2004/1/25/school-blogging.md" canonical: "https://osherove.com/blog/2004/1/25/school-blogging.html" published: "2004-01-25T11:58:00" updated: "2004-01-25T11:58:00" tags: ["Blogging"] author: "Roy Osherove" description: "This is a nice idea: Jim is taking a Binary arithmetic class, and is blogging it. Why am I blogging this class? Well, I want to see if it will help me learn the material better. I'm thinking that by writing about the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # School Blogging By Roy Osherove January 25, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published January 25, 2004; technical details may be outdated. This is a nice idea: [Jim is taking a Binary arithmetic class, and is blogging it.](http://dotnetjunkies.com/WebLog/jim.martin/posts/6053.aspx) _Why am I blogging this class?  Well, I want to see if it will help me learn the material better.  I'm thinking that by writing about the class in my blog I might retain more of the information._  ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Feb 5, 2004 ### [Pasting nicely formatted code into your blog](https://osherove.com/blog/2004/2/5/pasting-nicely-formatted-code-into-your-blog.html) - Jan 26, 2004 ### [Some new blogs and a story of quantity vs. quality](https://osherove.com/blog/2004/1/26/some-new-blogs-and-a-story-of-quantity-vs-quality.html) - Jan 22, 2004 ### [Reactions](https://osherove.com/blog/2004/1/22/reactions.html) - Jan 22, 2004 ### [2 BlogJet issues](https://osherove.com/blog/2004/1/22/2-blogjet-issues.html) --- title: ".Net Roars live" url: "https://osherove.com/blog/2004/1/25/net-roars-live.md" canonical: "https://osherove.com/blog/2004/1/25/net-roars-live.html" published: "2004-01-25T11:29:00" updated: "2004-01-25T11:29:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "As critical as I can be, Rory is still one of the funniest people I've never met. He's now going to co-host the .Net rocks show on a regular basis. I think this is a great move and I think the show is going to get a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Roars live By Roy Osherove January 25, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published January 25, 2004; technical details may be outdated. As critical as I can be, Rory is still one of the funniest people I've never met. [He's now going to co-host the .Net rocks show](http://neopoleon.com/blog/posts/2639.aspx) on a regular basis. I think this is a **great** move and I think the show is going to get a great boost from Rory's personality. Another cool thing is that the upcoming show will be totally live and will be [taking calls](http://weblogs.asp.net/CFranklin/archive/2004/01/25/62670.aspx) (hmm, maybe I should give a call?).  I like this direction. Good luck Rory. BTW, listening to the [.Net rocks show feed](http://perseus.franklins.net/dnr.asx) gives some great surprises. I'm currently listening to a song by Carl, and he's really good. I should totally get my guitar someday, hop over the border (Visa? What Visa?) and do a little jam session (provided Carl doesn't want my head on a stick or something). ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Feb 14, 2004 ### [Accumulated links](https://osherove.com/blog/2004/2/14/accumulated-links.html) - Feb 11, 2004 ### [\[Tool\] QuickJump - very nice and simple VS.Net add-in](https://osherove.com/blog/2004/2/11/tool-quickjump-very-nice-and-simple-vsnet-add-in.html) - Jan 23, 2004 ### [Authorization and Profile Application Block](https://osherove.com/blog/2004/1/23/authorization-and-profile-application-block.html) - Jan 23, 2004 ### [Good stuff on DataReader->Dataset](https://osherove.com/blog/2004/1/23/good-stuff-on-datareader-gtdataset.html) --- title: "Seal clubbing - the game (almost)" url: "https://osherove.com/blog/2004/1/25/seal-clubbing-the-game-almost.md" canonical: "https://osherove.com/blog/2004/1/25/seal-clubbing-the-game-almost.html" published: "2004-01-25T11:18:00" updated: "2004-01-25T11:18:00" tags: [] author: "Roy Osherove" description: "Heh. This automatically reminded me of Rory's seal clubbing days.. Update: yeah, I missed the correct link there. Here's the game ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Seal clubbing - the game (almost) By Roy Osherove January 25, 2004 **Historical article** · Originally published January 25, 2004; technical details may be outdated. Heh. [This](http://alec.at.tut.by/penguin.swf) automatically reminded me of [Rory's seal clubbing](http://neopoleon.com/blog/posts/1487.aspx) days.. _Update: yeah, I missed the correct link there._ [_Here's the game_](http://alec.at.tut.by/penguin.swf)_._ --- title: "Scheduling games" url: "https://osherove.com/blog/2004/1/25/scheduling-games.md" canonical: "https://osherove.com/blog/2004/1/25/scheduling-games.html" published: "2004-01-25T00:55:00" updated: "2004-01-25T00:55:00" tags: ["Cool Articles", "Cool sites"] author: "Roy Osherove" description: "Found this one on my referrer list: Scheduled Games , people post about their experiences about scheduling games withing a project. Very familiar stuff in there, and my story was put there as one of the last points to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scheduling games By Roy Osherove January 25, 2004 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published January 25, 2004; technical details may be outdated. Found this one on my referrer list: [Scheduled Games](http://ayeconference.com/wiki/scribble.cgi?read=ScheduleGames), people post about their experiences about scheduling games withing a project. Very familiar stuff in there, and my story was put there as one of the last points to be made about scheduling games. ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Feb 10, 2004 ### [2 new articles](https://osherove.com/blog/2004/2/10/2-new-articles.html) - Jan 27, 2004 ### [My article on Microsoft.com!](https://osherove.com/blog/2004/1/27/my-article-on-microsoftcom.html) - Jan 21, 2004 ### [The humble programmer](https://osherove.com/blog/2004/1/21/the-humble-programmer.html) - Jan 17, 2004 ### [The RSA encryption algorithm - step by step](https://osherove.com/blog/2004/1/17/the-rsa-encryption-algorithm-step-by-step.html) --- title: "I'm available again" url: "https://osherove.com/blog/2004/1/24/im-available-again.md" canonical: "https://osherove.com/blog/2004/1/24/im-available-again.html" published: "2004-01-24T19:55:00" updated: "2004-01-24T19:55:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It's that time again. At the end of next week I will be finishing up my work in Norway and will be coming back to Israel. That means I'll be available for job offers . If you are in Israel or abroad and would like to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm available again By Roy Osherove January 24, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 24, 2004; technical details may be outdated. It's that time again. At the end of next week I will be finishing up my work in Norway and will be coming back to Israel. That means I'll be [available for job offers](http://weblogs.asp.net/rosherove/posts/6870.aspx). If you are in Israel or abroad and would like to talk about doing consulting/full time development work at your firm, [contact me](http://weblogs.asp.net/rosherove/posts/6870.aspx). My CV (Hebrew and English) and information on how to contact me is [available on this link](http://weblogs.asp.net/rosherove/posts/6870.aspx). _(my Hebrew CV is a bit dated and does not include the last 2 months in Norway yet, but the English one does)_ _**Update**: In a stroke of pure bad luck, my home server fell due to a power outage, so my personal homepage is not available. Hope it comes back tomorrow. Meanwhile my CV can still be downloaded from [other sources](http://weblogs.asp.net/rosherove/posts/6870.aspx)._ One thing that I did in Norway was to teach a group of developers how to do Test Driven Development, including unit testing, refactoring, pair programming and communication techniques. It was an amazing experience and if you'd like I can do the same for your company. I'll be posting a more elaborate article on the results and the way it was done, but I can tell you people are excited and are more productive and bug free than ever. OK. Enough with the shameless plug :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 28, 2004 ### [Leaving Norway](https://osherove.com/blog/2004/1/28/leaving-norway.html) - Jan 26, 2004 ### [Fried eye anyone?](https://osherove.com/blog/2004/1/26/fried-eye-anyone.html) - Jan 23, 2004 ### [Intellij IDEA version 4.0 release candidate 1](https://osherove.com/blog/2004/1/23/intellij-idea-version-40-release-candidate-1.html) - Jan 22, 2004 ### [Nice PDC logo](https://osherove.com/blog/2004/1/22/nice-pdc-logo.html) --- title: "Intellij IDEA version 4.0 release candidate 1" url: "https://osherove.com/blog/2004/1/23/intellij-idea-version-40-release-candidate-1.md" canonical: "https://osherove.com/blog/2004/1/23/intellij-idea-version-40-release-candidate-1.html" published: "2004-01-23T21:33:00" updated: "2004-01-23T21:33:00" tags: ["Off Topic"] author: "Roy Osherove" description: "oh oh, Intellij IDEA version 4.0 release candidate 1 is out and ready for download (free registration). I liked it so much I'm going to download and play with it even though I don't do anymore Java.. That's usability…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Intellij IDEA version 4.0 release candidate 1 By Roy Osherove January 23, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 23, 2004; technical details may be outdated. oh oh, [Intellij IDEA version 4.0 release candidate 1](http://www.intellij.net/eap/products/idea/download.jsp) is out and ready for download (free registration). I liked it so much I'm going to download and play with it even though I don't do anymore Java.. That's usability design for you. (via [Java,.Net and religion](http://www.talios.com/read/449747.htm)) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 26, 2004 ### [Fried eye anyone?](https://osherove.com/blog/2004/1/26/fried-eye-anyone.html) - Jan 24, 2004 ### [I'm available again](https://osherove.com/blog/2004/1/24/im-available-again.html) - Jan 22, 2004 ### [Nice PDC logo](https://osherove.com/blog/2004/1/22/nice-pdc-logo.html) - Jan 22, 2004 ### [Should I get a laptop or a tablet?](https://osherove.com/blog/2004/1/22/should-i-get-a-laptop-or-a-tablet.html) --- title: "Visible Progress" url: "https://osherove.com/blog/2004/1/23/visible-progress.md" canonical: "https://osherove.com/blog/2004/1/23/visible-progress.html" published: "2004-01-23T15:01:00" updated: "2004-01-23T15:01:00" tags: [] author: "Roy Osherove" description: "Johannah Rothman writes about visible progress in a project for the manager.You should really read the whole thing to see just how unhealthy mine and my manager's actions were on my Don Quixote story ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Visible Progress By Roy Osherove January 23, 2004 **Historical article** · Originally published January 23, 2004; technical details may be outdated. [Johannah Rothman](http://www.jrothman.com/weblog/) writes about [visible progress in a project](http://www.jrothman.com/weblog/archive/2004_01_01_mpdarchive.html#107487089377409088) for the manager.You should really read the whole thing to see just how unhealthy mine and my manager's actions were on my [Don Quixote story](http://weblogs.asp.net/rosherove/articles/DonKihote.aspx). --- title: "Winform Singleton pattern example" url: "https://osherove.com/blog/2004/1/23/winform-singleton-pattern-example.md" canonical: "https://osherove.com/blog/2004/1/23/winform-singleton-pattern-example.html" published: "2004-01-23T09:33:00" updated: "2004-01-23T09:33:00" tags: [".Net Original"] author: "Roy Osherove" description: "Stefano describes how he implements the Singleton design pattern for a form object in a winform application. I disagree. The main points of a Singleton: No new instances of the Singleton class can be created There…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Winform Singleton pattern example By Roy Osherove January 23, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published January 23, 2004; technical details may be outdated. [Stefano describes](http://dotnetjunkies.com/WebLog/demiliani/posts/5961.aspx) how he implements the [Singleton](http://www.c-sharpcorner.com/Code/2003/Jan/SingletonPattern.asp) design pattern for a form object in a winform application. I disagree. The main points of a Singleton: - No new instances of the Singleton class can be created - There should be one existing instance for use which cannot be destroyed To do this in a winform the steps should be: - Make the constructor private (so that no one create a new instance) - Add a private shared \_instance variable of type Form1 - Add a public shared and **readonly** property that exposes the variable, called "Instance" - Use this property to run the application Here's an example(VB.NET): Public Class Form1     Inherits System.Windows.Forms.Form     Private Shared \_instance As New Form1     Public Shared ReadOnly Property Instance() As Form1         Get             Return \_instance         End Get     End Property     Private Sub New()         MyBase.New()         'This call is required by the Windows Form Designer.         InitializeComponent()         'Add any initialization after the InitializeComponent() call     End Sub End Class    Module Module1     Public Sub Main()         Application.Run(Form1.Instance)     End Sub End Module **Update** [Stuart adds a very important comment](http://www.bistrotech.net/weblog/PermaLink.aspx?guid=db05f620-6dd4-4302-8e48-3fc70aafb0c7) which I did not think of (That's what happens when you talk about stuff you never actually had to implement before I guess): _Forms are a slightly more complex animal than other classes in that a form instance can be destroyed at will by the end user.  When a form is closed, its controls and its base class are disposed.  This is not desired behavior in a singleton class because once an object has been disposed, it can no longer be accessed (or, in the case of a form, displayed).  To see this undesired behavior in action, simply attempt to launch Roy's singleton form twice in succession and observe the System.ObjectDisposedException that gets thrown._ _Solving this problem is easy, though.  Simply override OnClosing(), cancel the close, and hide the form instead._    Protected Overrides Sub OnClosing(ByVal e As System.ComponentModel.CancelEventArgs)       e.Cancel = True       Me.Hide()    End Sub _Now when the user closes the form, the form merely hides instead of disposing and everything works as expected (until you start trying to use singleton forms as MDI children, but that's the subject of a_ [**_different post_**](http://www.bistrotech.net/weblog/PermaLink.aspx?guid=42b9962a-9016-4e8c-8ff4-5cca9eb5b2c7)_)._  ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Feb 17, 2004 ### [\[Article\] Make your .Net application support scripting - the practical way](https://osherove.com/blog/2004/2/17/article-make-your-net-application-support-scripting-the-prac.html) - Feb 11, 2004 ### [Watch me speak at IVCUG: Regex and Plugins](https://osherove.com/blog/2004/2/11/watch-me-speak-at-ivcug-regex-and-plugins.html) - Jan 22, 2004 ### [Israel DevDays](https://osherove.com/blog/2004/1/22/israel-devdays.html) - Jan 22, 2004 ### [Convert a DataReader into a DataSet](https://osherove.com/blog/2004/1/22/convert-a-datareader-into-a-dataset.html) --- title: "Authorization and Profile Application Block" url: "https://osherove.com/blog/2004/1/23/authorization-and-profile-application-block.md" canonical: "https://osherove.com/blog/2004/1/23/authorization-and-profile-application-block.html" published: "2004-01-23T08:55:00" updated: "2004-01-23T08:55:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "[ James Avery ]: Authorization and Profile Application Block - They slipped this one out on us, check it out. Indeed, check it out I will." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Authorization and Profile Application Block By Roy Osherove January 23, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published January 23, 2004; technical details may be outdated. \[[James Avery](http://dotavery.com/blog/archive/2004/01/22/338.aspx)\]: [_Authorization and Profile Application Block_](http://www.microsoft.com/downloads/details.aspx?FamilyID=ba983ad5-e74f-4be9-b146-9d2d2c6f8e81&DisplayLang=en) _- They slipped this one out on us, check it out._ Indeed, check it out I will. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Feb 11, 2004 ### [\[Tool\] QuickJump - very nice and simple VS.Net add-in](https://osherove.com/blog/2004/2/11/tool-quickjump-very-nice-and-simple-vsnet-add-in.html) - Jan 25, 2004 ### [.Net Roars live](https://osherove.com/blog/2004/1/25/net-roars-live.html) - Jan 23, 2004 ### [Good stuff on DataReader->Dataset](https://osherove.com/blog/2004/1/23/good-stuff-on-datareader-gtdataset.html) - Jan 22, 2004 ### [Free Web charting control: WebChart](https://osherove.com/blog/2004/1/22/free-web-charting-control-webchart.html) --- title: "Good stuff on DataReader->Dataset" url: "https://osherove.com/blog/2004/1/23/good-stuff-on-datareader-gtdataset.md" canonical: "https://osherove.com/blog/2004/1/23/good-stuff-on-datareader-gtdataset.html" published: "2004-01-23T08:09:00" updated: "2004-01-23T08:09:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Just in time to take me to task on my \" reactions \" post, the DataReader to Dataset post has generated some very good comments on alternative (and better) ways to do just that. And, if Steve keeps his promise we'll also…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good stuff on DataReader-\>Dataset By Roy Osherove January 23, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published January 23, 2004; technical details may be outdated. Just in time to take me to task on my "[reactions](http://weblogs.asp.net/rosherove/archive/2004/01/23/61879.aspx)" post, the [DataReader to Dataset](http://weblogs.asp.net/rosherove/archive/2004/01/22/61541.aspx) post has generated some very good comments on alternative (and better) ways to do just that. And, if [Steve keeps his promise](http://weblogs.asp.net/rosherove/archive/2004/01/22/61541.aspx#61950)  we'll also get some code that converts a dataset to a Datareader. How cool is that? ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 25, 2004 ### [.Net Roars live](https://osherove.com/blog/2004/1/25/net-roars-live.html) - Jan 23, 2004 ### [Authorization and Profile Application Block](https://osherove.com/blog/2004/1/23/authorization-and-profile-application-block.html) - Jan 22, 2004 ### [Free Web charting control: WebChart](https://osherove.com/blog/2004/1/22/free-web-charting-control-webchart.html) - Jan 22, 2004 ### [.NET Framework debug symbols](https://osherove.com/blog/2004/1/22/net-framework-debug-symbols.html) --- title: "Reactions" url: "https://osherove.com/blog/2004/1/22/reactions.md" canonical: "https://osherove.com/blog/2004/1/22/reactions.html" published: "2004-01-22T21:38:00" updated: "2004-01-22T21:38:00" tags: ["Blogging"] author: "Roy Osherove" description: "I keep being amazed every time. I post about agile programming, Datasets and data readers,SmallTalk as a real option and I get almost nothing in feedback. I post a little bit about the latest .Net Rocks, or about buying…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Reactions By Roy Osherove January 22, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published January 22, 2004; technical details may be outdated. I keep being amazed every time. I post about agile programming, Datasets and data readers,SmallTalk as a real option and I get almost nothing in feedback. I post a little bit about the latest .Net Rocks, or about buying a laptop and suddenly people are jumping off trees to put a comment. Crazy blogsphere ;) You'd think in a .Net focused blog the .Net subjects will get the most attention, heh. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jan 26, 2004 ### [Some new blogs and a story of quantity vs. quality](https://osherove.com/blog/2004/1/26/some-new-blogs-and-a-story-of-quantity-vs-quality.html) - Jan 25, 2004 ### [School Blogging](https://osherove.com/blog/2004/1/25/school-blogging.html) - Jan 22, 2004 ### [2 BlogJet issues](https://osherove.com/blog/2004/1/22/2-blogjet-issues.html) - Jan 22, 2004 ### [\[way OT\]College blogs](https://osherove.com/blog/2004/1/22/way-otcollege-blogs.html) --- title: "Nice PDC logo" url: "https://osherove.com/blog/2004/1/22/nice-pdc-logo.md" canonical: "https://osherove.com/blog/2004/1/22/nice-pdc-logo.html" published: "2004-01-22T21:24:00" updated: "2004-01-22T21:24:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Heh.A little late but still- I really liked this logo on Adam Kinney's blog :" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice PDC logo By Roy Osherove January 22, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 22, 2004; technical details may be outdated. Heh.A little late but still- I really liked this logo on [Adam Kinney's blog](http://weblogs.asp.net/akinney/): ![](https://osherove.com/img/wb/ee19477b_www.adamkinney.com_weblogs_wasworking.gif)  ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 24, 2004 ### [I'm available again](https://osherove.com/blog/2004/1/24/im-available-again.html) - Jan 23, 2004 ### [Intellij IDEA version 4.0 release candidate 1](https://osherove.com/blog/2004/1/23/intellij-idea-version-40-release-candidate-1.html) - Jan 22, 2004 ### [Should I get a laptop or a tablet?](https://osherove.com/blog/2004/1/22/should-i-get-a-laptop-or-a-tablet.html) - Jan 20, 2004 ### [.Net Rocks?](https://osherove.com/blog/2004/1/20/net-rocks.html) --- title: "Free Web charting control: WebChart" url: "https://osherove.com/blog/2004/1/22/free-web-charting-control-webchart.md" canonical: "https://osherove.com/blog/2004/1/22/free-web-charting-control-webchart.html" published: "2004-01-22T13:47:00" updated: "2004-01-22T13:47:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Jason sends word of the free WebChart control. Seems pretty cool and powerful. Me likes that." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free Web charting control: WebChart By Roy Osherove January 22, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published January 22, 2004; technical details may be outdated. [Jason sends word](http://weblogs.asp.net/jalexander/archive/2004/01/22/61661.aspx) of the free [WebChart](http://www.carlosag.net/Tools/WebChart/Default.aspx) control. Seems pretty cool and powerful. Me likes that. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 23, 2004 ### [Authorization and Profile Application Block](https://osherove.com/blog/2004/1/23/authorization-and-profile-application-block.html) - Jan 23, 2004 ### [Good stuff on DataReader->Dataset](https://osherove.com/blog/2004/1/23/good-stuff-on-datareader-gtdataset.html) - Jan 22, 2004 ### [.NET Framework debug symbols](https://osherove.com/blog/2004/1/22/net-framework-debug-symbols.html) - Jan 16, 2004 ### [Unit testing resources](https://osherove.com/blog/2004/1/16/unit-testing-resources.html) --- title: "Israel DevDays" url: "https://osherove.com/blog/2004/1/22/israel-devdays.md" canonical: "https://osherove.com/blog/2004/1/22/israel-devdays.html" published: "2004-01-22T10:49:00" updated: "2004-01-22T10:49:00" tags: [".Net Original"] author: "Roy Osherove" description: "If you're in Israel you should try and sign up for DevDays in Israel: Israel DevDays It's on Feb. 10th. I'll be back home by then so I'll see you all there! (Look me up in the ent. dev. track)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel DevDays By Roy Osherove January 22, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published January 22, 2004; technical details may be outdated. If you're in Israel you should try and sign up for DevDays in Israel: [Israel DevDays](http://www.microsoft.com/israel/events/devdays/) It's on Feb. 10th. I'll be back home by then so I'll see you all there! (Look me up in the ent. dev. track) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Feb 11, 2004 ### [Watch me speak at IVCUG: Regex and Plugins](https://osherove.com/blog/2004/2/11/watch-me-speak-at-ivcug-regex-and-plugins.html) - Jan 23, 2004 ### [Winform Singleton pattern example](https://osherove.com/blog/2004/1/23/winform-singleton-pattern-example.html) - Jan 22, 2004 ### [Convert a DataReader into a DataSet](https://osherove.com/blog/2004/1/22/convert-a-datareader-into-a-dataset.html) - Jan 20, 2004 ### [Is SmallTalk a real option?](https://osherove.com/blog/2004/1/20/is-smalltalk-a-real-option.html) --- title: "2 BlogJet issues" url: "https://osherove.com/blog/2004/1/22/2-blogjet-issues.md" canonical: "https://osherove.com/blog/2004/1/22/2-blogjet-issues.html" published: "2004-01-22T10:23:00" updated: "2004-01-22T10:23:00" tags: ["Blogging"] author: "Roy Osherove" description: "I really like BlogJet , but it has two main problems: No spell checking. Even the spell checking component I installed (the one used in .Text) does not work on text in it. This is bad news for me because I often spell…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 2 BlogJet issues By Roy Osherove January 22, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published January 22, 2004; technical details may be outdated. I really like [BlogJet](http://blogjet.com/), but it has two main problems: 1. No spell checking. Even the spell checking component I installed (the one used in .Text) does not work on text in it. This is bad news for me because I often spell wrong complex word (especially when using a Norwegian layout keyboard!) 2. No ability to set the "Aggregate to main feed" on or off for a specific post. I find myself using the online .Text still, even though BlogJet is installed. Pity. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jan 25, 2004 ### [School Blogging](https://osherove.com/blog/2004/1/25/school-blogging.html) - Jan 22, 2004 ### [Reactions](https://osherove.com/blog/2004/1/22/reactions.html) - Jan 22, 2004 ### [\[way OT\]College blogs](https://osherove.com/blog/2004/1/22/way-otcollege-blogs.html) - Jan 12, 2004 ### [Are you in Israel and reading this?](https://osherove.com/blog/2004/1/12/are-you-in-israel-and-reading-this.html) --- title: "[way OT]College blogs" url: "https://osherove.com/blog/2004/1/22/way-otcollege-blogs.md" canonical: "https://osherove.com/blog/2004/1/22/way-otcollege-blogs.html" published: "2004-01-22T09:53:00" updated: "2004-01-22T09:53:00" tags: ["Blogging"] author: "Roy Osherove" description: "Heh. Just found this shared aggregated blog : http://writingblog.org/ . (via Tariq )It's a collage students blog (over 200 there) but the coolest thing is the amount of different colors for each post. Try to scroll down…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[way OT\]College blogs By Roy Osherove January 22, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published January 22, 2004; technical details may be outdated. Heh. Just found this shared aggregated blog : [http://writingblog.org/](http://writingblog.org/) . (via [Tariq](http://geekswithblogs.net/Tariq/archive/2004/01/22/1450.aspx))It's a collage students blog (over 200 there) but the coolest thing is the amount of different colors for each post. Try to scroll down really fast and it looks like a rainbow :) Nothing technical in there, just found it interesting to see how people react to starting a blog. Especially I liked [this little blog post](http://writingblog.org/love/posts/559.aspx). ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jan 22, 2004 ### [Reactions](https://osherove.com/blog/2004/1/22/reactions.html) - Jan 22, 2004 ### [2 BlogJet issues](https://osherove.com/blog/2004/1/22/2-blogjet-issues.html) - Jan 12, 2004 ### [Are you in Israel and reading this?](https://osherove.com/blog/2004/1/12/are-you-in-israel-and-reading-this.html) - Jan 11, 2004 ### [Share your RSS subscriptions with the world](https://osherove.com/blog/2004/1/11/share-your-rss-subscriptions-with-the-world.html) --- title: ".NET Framework debug symbols" url: "https://osherove.com/blog/2004/1/22/net-framework-debug-symbols.md" canonical: "https://osherove.com/blog/2004/1/22/net-framework-debug-symbols.html" published: "2004-01-22T09:47:00" updated: "2004-01-22T09:47:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Wouldn't this be cool? Being able to debug-step into the .Net framework code inside the debugger without using reflector sounds like a killer feature to me. But, do I need longhorn for that?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .NET Framework debug symbols By Roy Osherove January 22, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published January 22, 2004; technical details may be outdated. Wouldn't this be cool? Being able to [debug-step into the .Net framework code](http://weblogs.asp.net/mreynolds/archive/2004/01/22/61546.aspx) inside the debugger without using reflector sounds like a killer feature to me. But, do I need longhorn for that? ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 23, 2004 ### [Good stuff on DataReader->Dataset](https://osherove.com/blog/2004/1/23/good-stuff-on-datareader-gtdataset.html) - Jan 22, 2004 ### [Free Web charting control: WebChart](https://osherove.com/blog/2004/1/22/free-web-charting-control-webchart.html) - Jan 16, 2004 ### [Unit testing resources](https://osherove.com/blog/2004/1/16/unit-testing-resources.html) - Jan 16, 2004 ### [Clover and unit test patterns](https://osherove.com/blog/2004/1/16/clover-and-unit-test-patterns.html) --- title: "Should I get a laptop or a tablet?" url: "https://osherove.com/blog/2004/1/22/should-i-get-a-laptop-or-a-tablet.md" canonical: "https://osherove.com/blog/2004/1/22/should-i-get-a-laptop-or-a-tablet.html" published: "2004-01-22T09:39:00" updated: "2004-01-22T09:39:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I've been considering purchasing a laptop for presentations and offshore development use. But lately, I've been considering purchasing a Tablet PC instead. But I don't know. Are tablets suitable enough for dev work? I'd…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Should I get a laptop or a tablet? By Roy Osherove January 22, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 22, 2004; technical details may be outdated. I've been considering purchasing a laptop for presentations and offshore development use. But lately, I've been considering purchasing a Tablet PC instead. But I don't know. Are tablets suitable enough for dev work? I'd like all the cool features a tablet offers but also the dev power of a laptop. Think that's possible? Scoble, you listening? What do you recommend? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 23, 2004 ### [Intellij IDEA version 4.0 release candidate 1](https://osherove.com/blog/2004/1/23/intellij-idea-version-40-release-candidate-1.html) - Jan 22, 2004 ### [Nice PDC logo](https://osherove.com/blog/2004/1/22/nice-pdc-logo.html) - Jan 20, 2004 ### [.Net Rocks?](https://osherove.com/blog/2004/1/20/net-rocks.html) - Jan 20, 2004 ### [\[OT\]Subscription honors](https://osherove.com/blog/2004/1/20/otsubscription-honors.html) --- title: "Convert a DataReader into a DataSet" url: "https://osherove.com/blog/2004/1/22/convert-a-datareader-into-a-dataset.md" canonical: "https://osherove.com/blog/2004/1/22/convert-a-datareader-into-a-dataset.html" published: "2004-01-22T07:55:00" updated: "2004-01-22T07:55:00" tags: [".Net Original"] author: "Roy Osherove" description: "Stefano describes a solution they use in a webservice, needing to convert a data reader to a dataset: Public Function ConvertDataReaderToDataSet(ByVal reader As SqlDataReader) As DataSet Dim dataSet As DataSet = New…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Convert a DataReader into a DataSet By Roy Osherove January 22, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published January 22, 2004; technical details may be outdated. [Stefano describes a solution](http://dotnetjunkies.com/WebLog/demiliani/posts/5923.aspx) they use in a webservice, needing to convert a data reader to a dataset: Public Function ConvertDataReaderToDataSet(ByVal reader As SqlDataReader) As DataSet Dim dataSet As DataSet = New DataSet() Dim schemaTable As DataTable = reader.GetSchemaTable() Dim dataTable As DataTable = New DataTable() Dim intCounter As Integer For intCounter = 0 To schemaTable.Rows.Count - 1 Dim dataRow As DataRow = schemaTable.Rows(intCounter) Dim columnName As String = CType(dataRow("ColumnName"), String) Dim column As DataColumn = New DataColumn(columnName, \_ CType(dataRow("DataType"), Type)) dataTable.Columns.Add(column) Next dataSet.Tables.Add(dataTable) While reader.Read() Dim dataRow As DataRow = dataTable.NewRow() For intCounter = 0 To reader.FieldCount - 1 dataRow(intCounter) = reader.GetValue(intCounter) Next dataTable.Rows.Add(dataRow) End While Return dataSet End Function While I can see the benefit in this, it seems as though this can create very high perf issues. GetSchemaTable is another round trip to the database and its a costly one. Create a DataTable on the file is also kinda costly. A better solution might be to incorporate a sort of caching mechanism. Remember SqlHelper from the data application block?  It uses a caching mechanism for sproc parameter arrays so that sproc params are "discovered" only once and saved for later use. Same thing could be done here. Caching an array of columns should be done using some sort of key, but, what key can be used here? the reader has no "commandText" property that can be used. What do you think? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 23, 2004 ### [Winform Singleton pattern example](https://osherove.com/blog/2004/1/23/winform-singleton-pattern-example.html) - Jan 22, 2004 ### [Israel DevDays](https://osherove.com/blog/2004/1/22/israel-devdays.html) - Jan 20, 2004 ### [Is SmallTalk a real option?](https://osherove.com/blog/2004/1/20/is-smalltalk-a-real-option.html) - Jan 17, 2004 ### [Learning from mistakes: the Don Quixote pattern](https://osherove.com/blog/2004/1/17/learning-from-mistakes-the-don-quixote-pattern-1.html) --- title: "The humble programmer" url: "https://osherove.com/blog/2004/1/21/the-humble-programmer.md" canonical: "https://osherove.com/blog/2004/1/21/the-humble-programmer.html" published: "2004-01-21T14:49:00" updated: "2004-01-21T14:49:00" tags: ["Agile Related", "Cool Articles"] author: "Roy Osherove" description: "Reading the ACM Turing award lectures really opened my jaw the other day. In his lecture, \" The Humble Programmer \", Edsger W Dijkstra is promoting the kind of ideas that even today a lot of developers that I know don't…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The humble programmer By Roy Osherove January 21, 2004 In [Agile Related](https://osherove.com/blog/category/agile-related), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published January 21, 2004; technical details may be outdated. Reading the [ACM Turing award lectures](https://www.amazon.com/exec/obidos/ASIN/0897911830/iserializable-20) really opened my jaw the other day. In his lecture, "[The Humble Programmer](http://www.cs.utexas.edu/users/EWD/ewd03xx/EWD340.PDF)", Edsger W Dijkstra is promoting the kind of ideas that even today a lot of developers that I know don't even try to implement. Mind you, **this lecture is from 1972**, 30 years back! _"Today a usual technique is to make a program and then to test it. But: program testing can be a very effective way to show the presence of bugs, but it is hopelessly inadequate for showing their absence. The only effective way to raise the confidence level of a program significantly is to give proof for its correctness. But one should not first make the program and then prove its correctness, because then the requirement of providing the proof would only increase the poor programmers burden. On the contrary: the programmer should let correctness proof and program to go hand in hand..._" Test driven development is all about creating a small test, see it fail, make it work, refactor and move on to the next test. Proof and program hand in hand. I am amazed that a person was able to realize such a great concept reaching so far into the future. Here are some more great quotes from this lecture: _"The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.."_ This is not a derogatory remark. It means that, especially these days, as the size of the systems we work on so hard is so big, we need to know our limits and act accordingly. Biting off more that you could chew mentally can lead to some disastrous results. Test driven development is all about taking very small bites and processing them as you go. This way, even the most complex task begins with one small test. "_...a specific phenomenon occurs that even has a well established name: it is called "the one-liners".It takes one of two different forms: One programmer places a one line program on the desk of another and either proudly he tells what it does and adds the question "Can you code this in less symbols?" -- as if this were of any conceptual relevance!-- or he just says, "Guess what it does!" from this observation we must conclude that this language as a tool is an open invitation for clever tricks; and while exactly this may be the explanation to some of its appeal, viz. to those who like to show how clever they are,I am sorry,but I must regard this as one of the most damning things that can be said about a programming language."_ Sounds [familiar](http://www.ioccc.org/)?  Here's the closing: _"...We shall do a much better programming job, provided that we approach the task with a full appreciation of its tremendous difficulty, provided that we stick to modest and elegant programming languages, provided that we respect the intrinsic limitations of the human mind and approach the task as Very Humble Programmers. "_ Simply amazing. I've read these words in many other books, but reading them in this lecture is like finding out the origins of our habits. I get context of where I am in the history of development, how "not new" all the ideas I consider to be breakthrough really are. Indeed, a mind and jaw opener. ## More in Agile Related [All posts in Agile Related](https://osherove.com/blog/category/agile-related) - Feb 22, 2004 ### [Pair Programming analysis - illuminating!](https://osherove.com/blog/2004/2/22/pair-programming-analysis-illuminating.html) - Feb 6, 2004 ### [The Best Unit Test framework in town](https://osherove.com/blog/2004/2/6/the-best-unit-test-framework-in-town.html) --- title: "Congrats to all new MVPs" url: "https://osherove.com/blog/2004/1/20/congrats-to-all-new-mvps.md" canonical: "https://osherove.com/blog/2004/1/20/congrats-to-all-new-mvps.html" published: "2004-01-20T19:32:00" updated: "2004-01-20T19:32:00" tags: [] author: "Roy Osherove" description: "It's like the flu. Everyone seems to have it ;) Hearty congratulations to all the new MVPs out there. May you continue to help the community and make our lives a little easier." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Congrats to all new MVPs By Roy Osherove January 20, 2004 **Historical article** · Originally published January 20, 2004; technical details may be outdated. It's like the flu. Everyone seems to have it ;) Hearty congratulations to all the new MVPs out there. May you continue to help the community and make our lives a little easier. --- title: ".Net Rocks?" url: "https://osherove.com/blog/2004/1/20/net-rocks.md" canonical: "https://osherove.com/blog/2004/1/20/net-rocks.html" published: "2004-01-20T15:40:00" updated: "2004-01-20T15:40:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It's not fair to critique a free show, but, I really have to. It's all out of love though. Hey, I love Microsoft technologies, but is it just me or was the show sounding like an orgy of ass kissing from both sides to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Rocks? By Roy Osherove January 20, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 20, 2004; technical details may be outdated. It's not fair to critique a free show, but, I really have to. It's all out of love though. - Hey, I love Microsoft technologies, but is it just me or was the [show](http://www.franklins.net/dotnetrocks.asp) sounding like an orgy of ass kissing from both sides to each other and to Microsoft? I have never heard people talk so much and say so little since I saw my prime minister give a speech about the peace agreements(what agreements?). - I want the shows where I got an extra .Net content (The last one with Sam was great) for my listening. Even the shows with the people who helped build the industry (the early ones) were amazing to listen to, but this show had almost no added value what so ever. The whole show was about the .Net rocks show, how Rory is cool, how cool Microsoft .Net is, how cool Carl and Mark are and how cool blogging is and how cool Rory's blog is and how cool .Net is and how cool the .Net Rocks show is... and.. - "_So, Rory.I thought your post about X was really funny....""I thought you post about Y was really funny...." "And let me read here your post...."_ - I do realize that Carl and Mark can and will interview the people they like but I guess this interviewing thing should be a little more than inviting your friends. It should have c-o-n-t-e-n-t. As funny as Rory is, the show had no real focus, and the amount of real content was about 5-10%.  Rory has some great .Net knowledge that wasn't exposed in the interview. Why? - Why do we need an announcer for the show? Some suggestions: - If you're going to interview people about non technical stuff, why don't you invite people that would not be preaching to the choir all the time? Sure, it's called .net rocks, but what happened if you invited once in a while people who use completely different technologies(SmallTalk?), or people like Mary Jo Foley or just get up some people from the Mono\\Rotor movement? Some new blood into the mix would be great. And on this note, let me say this : I have all the respect in the world for all the people mentioned here. I think the .Net Rocks show is one of the coolest things out there. I think you need to come up with tougher questions, more interesting questions. And Mark, I'll miss your voice, Man! Hope you keep being "excited" :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 22, 2004 ### [Nice PDC logo](https://osherove.com/blog/2004/1/22/nice-pdc-logo.html) - Jan 22, 2004 ### [Should I get a laptop or a tablet?](https://osherove.com/blog/2004/1/22/should-i-get-a-laptop-or-a-tablet.html) - Jan 20, 2004 ### [\[OT\]Subscription honors](https://osherove.com/blog/2004/1/20/otsubscription-honors.html) - Jan 17, 2004 ### [The RSA encryption algorithm - step by step](https://osherove.com/blog/2004/1/17/the-rsa-encryption-algorithm-step-by-step.html) --- title: "Group Policy Settings Reference Spreadsheet" url: "https://osherove.com/blog/2004/1/20/group-policy-settings-reference-spreadsheet.md" canonical: "https://osherove.com/blog/2004/1/20/group-policy-settings-reference-spreadsheet.html" published: "2004-01-20T07:13:00" updated: "2004-01-20T07:13:00" tags: [] author: "Roy Osherove" description: "Group Policy Settings Spreadsheet (Pre-Release) This spreadsheet lists the full set of Group Policy settings described in Administrative Template (.adm) files shipped with Windows Server 2003. This includes all policy…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Group Policy Settings Reference Spreadsheet By Roy Osherove January 20, 2004 **Historical article** · Originally published January 20, 2004; technical details may be outdated. [Group Policy Settings Spreadsheet (Pre-Release)](http://www.microsoft.com/downloads/details.aspx?FamilyID=ef3a35c0-19b9-4acc-b5be-9b7dab13108e&DisplayLang=en) This spreadsheet lists the full set of Group Policy settings described in Administrative Template (.adm) files shipped with Windows Server 2003. This includes all policy settings supported on Windows 2000, Windows XP Professional and Windows Server 2003. The spreadsheet includes separate worksheets for each of the .adm files shipped, as well as a consolidated worksheet for easy searching. Using column filters, the spreadsheet allows simple filtering by operating system, component and machine/user configuration, as well as regular text search of keywords through Excel. As a pre-release list, this spreadsheet includes new policy settings added in the Beta version of Windows XP Professional Service Pack 2. \[via the [MS recent downloads RSS feed](http://royo.is-a-geek.com/siteFeeder/GetFeed.aspx?FeedId=42)\] --- title: "[OT]Subscription honors" url: "https://osherove.com/blog/2004/1/20/otsubscription-honors.md" canonical: "https://osherove.com/blog/2004/1/20/otsubscription-honors.html" published: "2004-01-20T06:55:00" updated: "2004-01-20T06:55:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Isn't this cool? Ron Jefferies subscribes to my Blog . Hey Ron :) I'm honored. Of course, I'm honored that anyone even reads it at all..." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\]Subscription honors By Roy Osherove January 20, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 20, 2004; technical details may be outdated. Isn't this cool? [Ron Jefferies subscribes to my Blog](http://feeds.scripting.com/whoSubscribesTo?who=http://weblogs.asp.net/rosherove/rss.aspx). Hey Ron :) I'm honored. Of course, I'm honored that anyone even reads it at all... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 22, 2004 ### [Should I get a laptop or a tablet?](https://osherove.com/blog/2004/1/22/should-i-get-a-laptop-or-a-tablet.html) - Jan 20, 2004 ### [.Net Rocks?](https://osherove.com/blog/2004/1/20/net-rocks.html) - Jan 17, 2004 ### [The RSA encryption algorithm - step by step](https://osherove.com/blog/2004/1/17/the-rsa-encryption-algorithm-step-by-step.html) - Jan 16, 2004 ### [MS Word for OS-X: Nostalgia edition](https://osherove.com/blog/2004/1/16/ms-word-for-os-x-nostalgia-edition.html) --- title: "How low can you go?" url: "https://osherove.com/blog/2004/1/20/how-low-can-you-go.md" canonical: "https://osherove.com/blog/2004/1/20/how-low-can-you-go.html" published: "2004-01-20T06:37:00" updated: "2004-01-20T06:37:00" tags: [] author: "Roy Osherove" description: "MS has done it again . Any word from Scoble on this? (link via Matt )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How low can you go? By Roy Osherove January 20, 2004 **Historical article** · Originally published January 20, 2004; technical details may be outdated. [MS has done it again](http://www.theregister.com/content/6/34955.html). Any word from [Scoble](http://scoble.weblogs.com/) on this? (link  via [Matt](http://weblogs.asp.net/mhawley/archive/2004/01/19/60346.aspx)) --- title: "Testing BlogJet" url: "https://osherove.com/blog/2004/1/20/testing-blogjet.md" canonical: "https://osherove.com/blog/2004/1/20/testing-blogjet.html" published: "2004-01-20T06:26:00" updated: "2004-01-20T06:26:00" tags: [] author: "Roy Osherove" description: "I have downloaded and installed an interesting application - BlogJet . It's a Windows-client for my blog tool (as well as some for other tools). Actually, it was not me who wrote this text: when I launched BlogJet for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Testing BlogJet By Roy Osherove January 20, 2004 **Historical article** · Originally published January 20, 2004; technical details may be outdated. I have downloaded and installed an interesting application - [BlogJet](http://blogjet.com/). It's a Windows-client for my blog tool (as well as some for other tools). Actually, it was _not_ me who wrote this text: when I launched [BlogJet](http://blogjet.com/) for the first time, it's edit window already contained this text and the program asked me to click _Post and Publish_ button to post this text to my blog in order to test the connection (yes, and the text above is not mine too! :-)... So, I did. Now I'm gonna learn all that cool features of [BlogJet](http://blogjet.com/) (don't ask **me**, there are too much - go to [their website](http://blogjet.com/) and read). --- title: "Is SmallTalk a real option?" url: "https://osherove.com/blog/2004/1/20/is-smalltalk-a-real-option.md" canonical: "https://osherove.com/blog/2004/1/20/is-smalltalk-a-real-option.html" published: "2004-01-20T06:16:00" updated: "2004-01-20T06:16:00" tags: [".Net Original"] author: "Roy Osherove" description: "There's a nice little back and forth developing over at Cincom Smalltalk blog (Yes, it is a smalltalk'ish blog): Over on QLOD , a new Smalltalker asks: \"What makes me wonder though: Are Smalltalkers really that much…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Is SmallTalk a real option? By Roy Osherove January 20, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published January 20, 2004; technical details may be outdated. There's a nice little back and forth developing over at [Cincom Smalltalk blog](http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3251962523) (Yes, it is a smalltalk'ish blog):

Over on QLOD, a new Smalltalker asks:

"What makes me wonder though: Are Smalltalkers really that much more productive. In contrast to C or C with a bad IDE and without libraries maybe, but in contrast to a more modern language ? (Think about something like AS1 with additional runtime typechecking and a big library like java, probably a bad example :)) Can anyone provide some pointers ? "

A large part of the productivity comes from consistency. In Smalltalk, everything is an object. No primitive data types, no special rules on certain types of methods - which means you spend more time focused on the actual problem, instead of on how to fight the system to allow you to solve the problem. Another big thing is extensibility. We can extend any class in Smalltalk - need a new method in String? Go ahead and add it. No need to start wrapping all your string references with a new class, and wondering how to get third party libraries to play ball. Blocks add some capabilities that neither Java nor any CLR language have as well. Anyone else have answers?

(You'd do well to read some of the comments on that post and also [this post](http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3252012426) for more reasons) I've tried Smalltalk before and had problems with it. The main problem was that I didn't "get" it. As a developer, I'm always looking for ways to be productive. f someone says to me that SmallTalk is more productive that my current .Net infatuation, I'll believe it. Provided proof of course. There are many good reasons over there why SmallTalk is more productive, but what happens when you move it into the enterprise application space? How well does it cope with creating web services? using distributed solutions? talking to other applications? integration? Maintenance? How widespread is it? If I learn SmallTalk, will I be able to get a job in it? will I be able to leverage my current skills in .Net using SmallTalk, or just write some of my business logic in it while the other parts using a .Net language? (Isn't there a SmallTalk.Net out there?) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 22, 2004 ### [Israel DevDays](https://osherove.com/blog/2004/1/22/israel-devdays.html) - Jan 22, 2004 ### [Convert a DataReader into a DataSet](https://osherove.com/blog/2004/1/22/convert-a-datareader-into-a-dataset.html) - Jan 17, 2004 ### [Learning from mistakes: the Don Quixote pattern](https://osherove.com/blog/2004/1/17/learning-from-mistakes-the-don-quixote-pattern-1.html) - Jan 17, 2004 ### [Using SOA on existing N-tier applications](https://osherove.com/blog/2004/1/17/using-soa-on-existing-n-tier-applications.html) --- title: "Learning from mistakes: the Don Quixote pattern" url: "https://osherove.com/blog/2004/1/17/learning-from-mistakes-the-don-quixote-pattern-1.md" canonical: "https://osherove.com/blog/2004/1/17/learning-from-mistakes-the-don-quixote-pattern-1.html" published: "2004-01-17T23:16:00" updated: "2004-01-17T23:16:00" tags: [".Net Original"] author: "Roy Osherove" description: "Experience is built on mistakes. in the near future I'll try to describes some of the biggest mistakes I've made during my (short)career and the lessons that I learned from them. In this article I'll tell you about one…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Learning from mistakes: the Don Quixote pattern By Roy Osherove January 17, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published January 17, 2004; technical details may be outdated. Experience is built on mistakes. in the near future I'll try to describes some of the biggest mistakes I've made during my (short)career and the lessons that I learned from them. In this article I'll tell you about one of the most embarrassing moments in my career. A moment which holds a lot of frustration for me, even today, but one which I have learned a good lesson from for the future. [Don Quixote Vs. ADSI & WMI](http://weblogs.asp.net/rosherove/articles/DonKihote.aspx) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 22, 2004 ### [Convert a DataReader into a DataSet](https://osherove.com/blog/2004/1/22/convert-a-datareader-into-a-dataset.html) - Jan 20, 2004 ### [Is SmallTalk a real option?](https://osherove.com/blog/2004/1/20/is-smalltalk-a-real-option.html) - Jan 17, 2004 ### [Using SOA on existing N-tier applications](https://osherove.com/blog/2004/1/17/using-soa-on-existing-n-tier-applications.html) - Jan 16, 2004 ### [Three free recipes from "ADO.NET Cookbook"](https://osherove.com/blog/2004/1/16/three-free-recipes-from-quotadonet-cookbookquot.html) --- title: "Learning from mistakes: the Don Quixote pattern" url: "https://osherove.com/blog/2004/1/17/learning-from-mistakes-the-don-quixote-pattern.md" canonical: "https://osherove.com/blog/2004/1/17/learning-from-mistakes-the-don-quixote-pattern.html" published: "2004-01-17T23:14:00" updated: "2004-01-17T23:14:00" tags: ["Other"] author: "Roy Osherove" description: "Experience is built on mistakes. in the near future I'll try to describes some of the biggest mistakes I've made during my (short)career and the lessons that I learned from them. In this post I'll tell you about one of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Learning from mistakes: the Don Quixote pattern By Roy Osherove January 17, 2004 In [Other](https://osherove.com/blog/category/other) **Historical article** · Originally published January 17, 2004; technical details may be outdated. Experience is built on mistakes. in the near future I'll try to describes some of the biggest mistakes I've made during my (short)career and the lessons that I learned from them. In this post I'll tell you about one of the most embarrassing moments in my career. A moment which holds a lot of frustration for me, even today, but one which I have learned a good lesson from for the future. **Don Quixote Vs. ADSI & WMI** I had just started at my new job (this was quite some time ago and a few jobs back) as one of the .Net developers in a small team of developers at a medium sized company. I was enthusiastic and excited to start there and was just waiting for the moment in which I would be asked to perform my first "real" task, at which point I would "prove myself" to the others. My team leader was very nice and soon the time came for me to get a task. My task was to create a component that searches through specific machines on the network and enumerates all the physical files under all the virtual directories in IIS for a specific machine. They already had some .Net code that used the System.DirectoryServices namespace but they had not figured out how to enumerate all the directories, as it has been discovered that some directories, although physically available, are not discoverable using DirectoryServices under certain conditions. My mission was to come up with a way to find those directories that the initial "crawling" had not found. This was not an area I had any knowledge in. Very quickly I started to dive into the various articles that explained DirectoryServices and finding out the reasons why some directories were not showing up. It turned out there was no way to expose these directories using DirectoryServices. I had to find another way to accomplish this task. If I remember correctly no initial time estimation was expected of me. After the couple of days were over I went to my team leader and said that I am still investigating the various ways in which this would be possible to do, but that "_All in all, it seems to be a fairly complex solution_". I then went back and sank knee deep in a mountain of papers and articles on Active directory(ADSI). All the while my teammates were working on other stuff. When asked "what's up" by them I would usually put up a long face expressing "If you knew what I was going up against you would understand why I'm shutting up most of the time" but overall I got to know them and became friends with them. Initially I had a small thought in my head _"I wish you could use the DirectoryInfo class to search remote machines"_ but I had very quickly dropped this thought and never even bothered to check whether this was possible. It just didn't seem possible_._ I continued on to other areas. During my quest into ADSI I also discovered some articles on WMI- _windows management instrumentation_, and the capabilities of this technology. As the days went by it became clear to me that WMI was the way I was looking for. It had the ability to query a remote machine for a physical directory structure, and combining a search using DirectoryServices and WMI seemed to be the way out of this mess. During these days (about a week and a half) I went a couple of times to my team leader to update on the current situation. I was told "_not right now, I have other things but I'll get to it later_"  and I didn't really fight to make those meetings happen too much. I was secretly glad at the opportunity to be left alone with my thoughts with no one to bother me with various questions about how I'm doing. After all, I was not doing so good. I was actually stuck and I didn't feel so good about my WMI solution. It felt out of place and too awkward but i didn't see any other way and felt that I was stuck with it.  I was nearing the middle of my second week working on this problem when I let my team leader know of my proposed solution using WMI and ADSI. I got the go ahead to continue and went ahead and implemented my solution. It took another week or so for my solution to be ready. It worked slowly and made terrible hard drive noises when searching remote paths on network machines (Up to now I don't know how that noise was generated but the hard drives were going crazy). It was taking about 2 minutes to enumerate directories on a remote machine and it actually **sounded** painful. My teammates, who were aware of my efforts and were part of my "testing group" were there all along trying to keep out of my way as I plowed through various technology boundaries to create what was at the end,one of the most horrible sounding physical searches in application history. Remember those old pin head printers that would squeal with each line they printed on large papers with little holes on both sides of it? It sounded a lot like that. After showing this to my team leader and getting a fairly lukewarm response I headed home for the weekend. When the start of next week came I was seek and when I came back two days into the week my team leader asked to see me in her office.After I sat down she said: "_While you were away Me and another person from the team were talking about your work and we were wondering if there wasn't a better way to solve the problem than the way you solved it. So, when the week started we sat together and found a different way. It took us about 2 hours. It is simpler, it takes about one tenth of the time your solution takes and it's totally quiet_."  Needless to say I was shocked to hear this. There I was, slaving away at a solution for almost 3 weeks, and they go and find a much better solution in 2 hours without even telling me. When I asked for the details it was indeed a much more elegant solution than then one I had created. It used the System.IO.DirectoryInfo class (The one I disregarded at first) to iterate over the directories over the remote machine using a public $C share on each machine. It was so simple yet I had missed it and went on to battle windmills. Less than a month later I was fired from that job. The cause for the firing wasn't stated but it would be a good guess that I didn't "prove myself", but rather, I "proved them wrong" about my abilities. It was horrible. I was devastated. How terrible a blow can your ego suffer? I was brought there as a knowledgeable person in .Net, and I was able, in one fell swoop, to wipe off any good impression they had of me. It took me quite a while to get over this, but there is a very important lesson to be learned here: - Lack of communication can lead to a devastating failure. **I did not communicate with my team leader.** I did not share my problems and my continually bad estimations. Had I shared my problems from the beginning in a daily fashion ,together we would probably have come to the same solution that was achieved when i was not there. My fear of exposing my weaknesses had left me even more vulnerable. Had I just shared my problem I might have even come to the conclusion that using the DirectoryInfo class was something that should be tested before disregarded as impossible. **My team leader did not communicate with me** Over 2 and a half weeks, not once did my team leader come in and check in on the actual state of the task, asked questions, tried to help in any way, or shown any sign of monitoring and risk management. Had I been asked daily what problems was I facing in my task, it might have been obvious that I had simply "missed" a small turn on the way to the solution, which lead to a much longer way. Sometimes you just need a second perspective and another clear mind next to you to make sure you don't lose your way. Also, if my team leader was so convinced that my solution could be done better, why not approach **me** with this questions? why go to other team mates? It almost felt as if  was not being trusted and it hurt. A team leader should be open with her subordinates. Why did it take 3 weeks for this question to come up? **In summery** As developers, we all make mistakes. It's the natural and human thing you can always count on. As a developer, it is **your** responsibility to make sure that at any given time, your team lead knows what you are facing and if you're having **any** problems. If you don't communicate this well using scheduled short meetings or even hall small talk, you're not giving your team lead a chance to help you. You're also setting yourself up to be the scapegoat if anything goes wrong since you are the only person that could have known and fixed any problems you are encountering. As a team lead it is **your** responsibility to make sure that at any given time you know what every person on your team is working on ,if they are having any problems doing it and how long it is supposed to take. You should do **at least** a daily morning meeting with your team to review today's objective for each person, to leverage any problems anyone might have and to basically make sure that everyone is on the same page. Forget to do this basic thing and you're setting yourself up for big surprises down the line. Doing code reviews is also a great way to keep tabs on what's going and the quality of it. Harder to do, this should be done on weekly basis, or milestone basis (some even do it before any code check-in of any developer). forget to do this and you could wind up with code who's quality you are unsure of. ## More in Other [All posts in Other](https://osherove.com/blog/category/other) - Jun 16, 2004 ### [BackgroundWorker implementation -in C#](https://osherove.com/blog/2004/6/16/backgroundworker-implementation-in-c.html) - Feb 17, 2004 ### [Make your .Net application support scripting - a practical approach](https://osherove.com/blog/2004/2/17/make-your-net-application-support-scripting-a-practical-appr.html) - Dec 25, 2003 ### [An optimizing experience](https://osherove.com/blog/2003/12/25/an-optimizing-experience.html) - Oct 30, 2003 ### [Easy Proxy handling through the ProxyFactory and ProxyInfo classes](https://osherove.com/blog/2003/10/30/easy-proxy-handling-through-the-proxyfactory-and-proxyinfo-c.html) --- title: "Using SOA on existing N-tier applications" url: "https://osherove.com/blog/2004/1/17/using-soa-on-existing-n-tier-applications.md" canonical: "https://osherove.com/blog/2004/1/17/using-soa-on-existing-n-tier-applications.html" published: "2004-01-17T20:58:00" updated: "2004-01-17T20:58:00" tags: [".Net Original"] author: "Roy Osherove" description: "Udi Dahan writes very eloquently and shows a simple implementation example using Service Oriented Architecture. While I agree with the main theme, I can't help but wonder, What happens when you need to introduce the SOA…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Using SOA on existing N-tier applications By Roy Osherove January 17, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published January 17, 2004; technical details may be outdated. [Udi Dahan](http://udidahan.weblogs.us/) writes very eloquently and [shows a simple implementation example](http://udidahan.weblogs.us/archives/012683.html) using Service Oriented Architecture. While I agree with the main theme, I can't help but wonder, What happens when you need to introduce the SOA theme on an existing N-tier application?  Udi recommends: "_step 1 is to create a new layer, called Entities ( or something else if you prefer ) and copy all the classes of your BL that are part of the domain model to it. Next, remove all methods from those classes_" If I got this correctly this does not take into account a (probable) situation in which the application needs to **add** services to it's functionality while keeping the current behavior for existing clients. You can't just move half of your logic layer into a different one. Instead it seems to me that a services layer can be put **on top** of the existing logical layer as an _optional_ way to communicate from the client. This way existing client applications that used the N-tier model successfully can keep using the logic layer directly, while the services layer allows remote clients access the logical functionality using a fixed set of one-entry point classes, much like Udi's description. Am I missing something here? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 20, 2004 ### [Is SmallTalk a real option?](https://osherove.com/blog/2004/1/20/is-smalltalk-a-real-option.html) - Jan 17, 2004 ### [Learning from mistakes: the Don Quixote pattern](https://osherove.com/blog/2004/1/17/learning-from-mistakes-the-don-quixote-pattern-1.html) - Jan 16, 2004 ### [Three free recipes from "ADO.NET Cookbook"](https://osherove.com/blog/2004/1/16/three-free-recipes-from-quotadonet-cookbookquot.html) - Jan 10, 2004 ### [Service announcement: Source code for MSDN articles now available](https://osherove.com/blog/2004/1/10/service-announcement-source-code-for-msdn-articles-now-avail.html) --- title: "The RSA encryption algorithm - step by step" url: "https://osherove.com/blog/2004/1/17/the-rsa-encryption-algorithm-step-by-step.md" canonical: "https://osherove.com/blog/2004/1/17/the-rsa-encryption-algorithm-step-by-step.html" published: "2004-01-17T20:44:00" updated: "2004-01-17T20:44:00" tags: ["Cool Articles", "Off Topic"] author: "Roy Osherove" description: "This very cool site shows you, step by step, how the RSA encryption algorithm works. While I've read about the algorithm, it's great to see such a simple example that explains so much so easily. (link via Michael )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The RSA encryption algorithm - step by step By Roy Osherove January 17, 2004 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 17, 2004; technical details may be outdated. [This very cool site](http://www.profactor.at/~wstoec/rsa.html) shows you, step by step, how the RSA encryption algorithm works. While I've read about the algorithm, it's great to see such a simple example that explains so much so easily. (link via [Michael](http://www.silenceexilecunning.net/)) ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Jan 25, 2004 ### [Scheduling games](https://osherove.com/blog/2004/1/25/scheduling-games.html) - Jan 21, 2004 ### [The humble programmer](https://osherove.com/blog/2004/1/21/the-humble-programmer.html) - Jan 16, 2004 ### [Hall of Technical Documentation Weirdness](https://osherove.com/blog/2004/1/16/hall-of-technical-documentation-weirdness.html) - Jan 16, 2004 ### [From VB6 to VB.Net - important webcasts](https://osherove.com/blog/2004/1/16/from-vb6-to-vbnet-important-webcasts.html) --- title: "MS Word for OS-X: Nostalgia edition" url: "https://osherove.com/blog/2004/1/16/ms-word-for-os-x-nostalgia-edition.md" canonical: "https://osherove.com/blog/2004/1/16/ms-word-for-os-x-nostalgia-edition.html" published: "2004-01-16T23:00:00" updated: "2004-01-16T23:00:00" tags: ["Off Topic"] author: "Roy Osherove" description: "\"Well, we now know that MS engineers know that OS X is Unix. The trouble is, they seem to have used a really old Unix reference manual when they built Word for OS X - Arcterex noticed that Word on OS X enforces a 31…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MS Word for OS-X: Nostalgia edition By Roy Osherove January 16, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 16, 2004; technical details may be outdated. _"Well, we now know that MS engineers know that OS X is Unix. The trouble is, they seem to have used a **really old Unix reference manual** when they built Word for OS X -_ [_Arcterex_](http://arcterex.net/blog/archives/2004/01/15/file_name_limit_in_office_x.html) _noticed that Word on OS X enforces a 31 character limit on filenames - and I just got verification on that from another OS X user,_ [_Alan Knight_](http://www.cincomsmalltalk.com/userblogs/knight/blogView)_. Amazing, simply amazing.... "_ _\[[Cincom Smalltalk blog](http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3251631195)\]_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 20, 2004 ### [\[OT\]Subscription honors](https://osherove.com/blog/2004/1/20/otsubscription-honors.html) - Jan 17, 2004 ### [The RSA encryption algorithm - step by step](https://osherove.com/blog/2004/1/17/the-rsa-encryption-algorithm-step-by-step.html) - Jan 15, 2004 ### [X# video snagged my MS](https://osherove.com/blog/2004/1/15/x-video-snagged-my-ms.html) - Jan 12, 2004 ### [Are you in Israel and reading this?](https://osherove.com/blog/2004/1/12/are-you-in-israel-and-reading-this.html) --- title: "Three free recipes from \"ADO.NET Cookbook\"" url: "https://osherove.com/blog/2004/1/16/three-free-recipes-from-quotadonet-cookbookquot.md" canonical: "https://osherove.com/blog/2004/1/16/three-free-recipes-from-quotadonet-cookbookquot.html" published: "2004-01-16T22:51:00" updated: "2004-01-16T22:51:00" tags: [".Net Original", "Free book chapters"] author: "Roy Osherove" description: "[ .NetWire :] \" O'Reilly's recently released ADO.NET Cookbook contains over 150 solutions and best practices for everyday dilemmas. This week, we're excerpting three recipes from the book that show how to asynchronously…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Three free recipes from "ADO.NET Cookbook" By Roy Osherove January 16, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published January 16, 2004; technical details may be outdated. \[[.NetWire](http://www.dotnetwire.com/):\] "_O'Reilly's recently released ADO.NET Cookbook contains over 150 solutions and best practices for everyday dilemmas. This week, we're excerpting **three recipes from the book** that show how to [asynchronously update data in a database](http://www.ondotnet.com/pub/a/dotnet/excerpt/ado.netckbk_chap01/index.html), how to [protect login credentials during network transmissions](http://www.ondotnet.com/pub/a/dotnet/excerpt/ado.netckbk_chap01/index.html?page=2), and how to [enforce a business rule with column expressions](http://www.ondotnet.com/pub/a/dotnet/excerpt/ado.netckbk_chap01/index.html?page=3)"_ God I love free information. Ain't it just fun to look at a page\\book and think to yourself, "_After I read this block of text I will have gained another ounce of knowledge_"? The other day I came across the book "[Computer Organization and Architecture: Designing for Performance](https://www.amazon.com/exec/obidos/ASIN/013359985x/iserializable-20)" by William Stallings. How I came across it? it was lying there on my employer's shelf. I was never any kind of hardware guy. Sure, I can detach a CD ROM but I have no idea how a CPU works and although I tried mastering [Assembly language](http://webster.cs.ucr.edu/Page_AoAWin/HTML/AoATOC.html)  I never did get to a point I "got" it. Anyway, I was looking for something interesting to read when I came across this book. I opened it and started leafing through the pages. I could read the names of the chapter titles, I could see the complex diagrams, but, much like a little boy looking at a world atlas for the first time, all I could do was look with big eyes at all the information my brain just can't contain at this moment. It was one of those times, when I got that feeling; "_I'm holding a whole lot of knowledge in my hands right now. If I could just concentrate enough I could transfer it into my brain"_. But all I could do was continue leafing through the chapters, one by one, getting more and more amazed at the amount of complexity that lies in the machine I am using every day. It is truly an amazing piece of work. The complexity and the size of the indirection to which humans have come to in this machine in almost godly, yet we scream for more. Smaller, faster,sharper. We have no idea just how amazing all this already is. But I digress :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 17, 2004 ### [Learning from mistakes: the Don Quixote pattern](https://osherove.com/blog/2004/1/17/learning-from-mistakes-the-don-quixote-pattern-1.html) - Jan 17, 2004 ### [Using SOA on existing N-tier applications](https://osherove.com/blog/2004/1/17/using-soa-on-existing-n-tier-applications.html) - Jan 10, 2004 ### [Service announcement: Source code for MSDN articles now available](https://osherove.com/blog/2004/1/10/service-announcement-source-code-for-msdn-articles-now-avail.html) - Jan 10, 2004 ### [New MSDN article: Turn Your Log Files into Searchable Data Using Regex and the XML Classes](https://osherove.com/blog/2004/1/10/new-msdn-article-turn-your-log-files-into-searchable-data-us.html) --- title: "Hall of Technical Documentation Weirdness" url: "https://osherove.com/blog/2004/1/16/hall-of-technical-documentation-weirdness.md" canonical: "https://osherove.com/blog/2004/1/16/hall-of-technical-documentation-weirdness.html" published: "2004-01-16T22:11:00" updated: "2004-01-16T22:11:00" tags: ["Cool Articles", "Cool sites"] author: "Roy Osherove" description: "Speaking of bad designs (well, I'm sure somewhere in the world someone just mentioned it): Hall of Technical Documentation Weirdness [via This is broken ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hall of Technical Documentation Weirdness By Roy Osherove January 16, 2004 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published January 16, 2004; technical details may be outdated. Speaking of bad designs (well, I'm sure somewhere in the world someone just mentioned it):  [Hall of Technical Documentation Weirdness](http://www.darrenbarefoot.com/hall/) \[via [This is broken](http://broken.typepad.com/b/)\] ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Jan 21, 2004 ### [The humble programmer](https://osherove.com/blog/2004/1/21/the-humble-programmer.html) - Jan 17, 2004 ### [The RSA encryption algorithm - step by step](https://osherove.com/blog/2004/1/17/the-rsa-encryption-algorithm-step-by-step.html) - Jan 16, 2004 ### [From VB6 to VB.Net - important webcasts](https://osherove.com/blog/2004/1/16/from-vb6-to-vbnet-important-webcasts.html) - Jan 10, 2004 ### [\[Tool\] Easier log parsing with Log Parser](https://osherove.com/blog/2004/1/10/tool-easier-log-parsing-with-log-parser.html) --- title: "Unit testing resources" url: "https://osherove.com/blog/2004/1/16/unit-testing-resources.md" canonical: "https://osherove.com/blog/2004/1/16/unit-testing-resources.html" published: "2004-01-16T19:10:00" updated: "2004-01-16T19:10:00" tags: [".Net Quotations", "Cool sites"] author: "Roy Osherove" description: "AndrewSeven asks if I know any more links to unit testing stuff, especially NunitASP. While I don't have necessarily have links about NUnitASP, here are some more resources: Darrell's Test Driven Link'o rama The XP…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit testing resources By Roy Osherove January 16, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published January 16, 2004; technical details may be outdated. AndrewSeven asks if I know any more links to unit testing stuff, especially NunitASP. While I don't have necessarily have links about NUnitASP, here are some more resources: - Darrell's [Test Driven Link'o rama](http://dotnetjunkies.com/weblog/darrell.norton/posts/3374.aspx) - The [XP mailing list](http://groups.yahoo.com/group/extremeprogramming/) - The [Test First User interfaces list](http://groups.yahoo.com/group/TestFirstUserInterfaces/) - [XProgramming.com](http://www.xprogramming.com/) - [NunitASP best practices](http://dotnetjunkies.com/weblog/darrell.norton/posts/5950.aspx) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 22, 2004 ### [Free Web charting control: WebChart](https://osherove.com/blog/2004/1/22/free-web-charting-control-webchart.html) - Jan 22, 2004 ### [.NET Framework debug symbols](https://osherove.com/blog/2004/1/22/net-framework-debug-symbols.html) - Jan 16, 2004 ### [Clover and unit test patterns](https://osherove.com/blog/2004/1/16/clover-and-unit-test-patterns.html) - Jan 16, 2004 ### [From VB6 to VB.Net - important webcasts](https://osherove.com/blog/2004/1/16/from-vb6-to-vbnet-important-webcasts.html) --- title: "Clover and unit test patterns" url: "https://osherove.com/blog/2004/1/16/clover-and-unit-test-patterns.md" canonical: "https://osherove.com/blog/2004/1/16/clover-and-unit-test-patterns.html" published: "2004-01-16T18:29:00" updated: "2004-01-16T18:29:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "2 unit testing ilnks, both from James Avery : Clover for .NET (Alpha) - Clover is a tool that tests your unit tests, reporting on things like how well your code is covered by your unit tests. Advanced Unit Test, Part V…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Clover and unit test patterns By Roy Osherove January 16, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published January 16, 2004; technical details may be outdated. 2 unit testing ilnks, both from [James Avery](http://dotavery.com/blog/archive/2004/01/14/285.aspx): - [Clover for .NET (Alpha)](http://codefeed.com/blog/archives/000061.html) - Clover is a tool that tests your unit tests, reporting on things like how well your code is covered by your unit tests. - [Advanced Unit Test, Part V - Unit Test Patterns](http://www.codeproject.com/gen/design/autp5.asp) - Another awesome article on unit testing from Marc Clifton Both of these look mighty interesting. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 22, 2004 ### [.NET Framework debug symbols](https://osherove.com/blog/2004/1/22/net-framework-debug-symbols.html) - Jan 16, 2004 ### [Unit testing resources](https://osherove.com/blog/2004/1/16/unit-testing-resources.html) - Jan 16, 2004 ### [From VB6 to VB.Net - important webcasts](https://osherove.com/blog/2004/1/16/from-vb6-to-vbnet-important-webcasts.html) - Jan 12, 2004 ### [Sam Gentile on Test Driven Development](https://osherove.com/blog/2004/1/12/sam-gentile-on-test-driven-development.html) --- title: "From VB6 to VB.Net - important webcasts" url: "https://osherove.com/blog/2004/1/16/from-vb6-to-vbnet-important-webcasts.md" canonical: "https://osherove.com/blog/2004/1/16/from-vb6-to-vbnet-important-webcasts.html" published: "2004-01-16T18:18:00" updated: "2004-01-16T18:18:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Quoting Duncan MacKenzie A series of 15 webcasts & lab exercises for the VB6 programmer... (see the full list here) MSDN Webcast: Program Execution in the 21st Century - Level 200 2/3/2004 1:00 PM - 2/3/2004 2:30 PM…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # From VB6 to VB.Net - important webcasts By Roy Osherove January 16, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published January 16, 2004; technical details may be outdated. Quoting [Duncan MacKenzie](http://weblogs.asp.net/duncanma/archive/2004/01/15/59279.aspx) A series of 15 webcasts & lab exercises for the VB6 programmer... (see the full list here) [MSDN Webcast: Program Execution in the 21st Century - Level 200 ](http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032243061&Culture=en-US)2/3/2004 1:00 PM - 2/3/2004 2:30 PM Live Meeting Webcast This is the first webcast in the 15 part series “Modern Software Development in .NET Using Visual Basic”. Developers shouldn’t miss this opportunity to examine the following topics with renowned author Joe Hummel, PhD: Virtual machines, sandboxes, garbage collection; Class libraries; Execution in .NET: CLR, FCL, JIT compilation, GAC; Quick discussion of application designs: monolithic vs. component-based Presenter: Joe Hummel, PhD. [DevelopMentor](http://www.develop.com/) instructor and course author, DevelopMentor ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 16, 2004 ### [Unit testing resources](https://osherove.com/blog/2004/1/16/unit-testing-resources.html) - Jan 16, 2004 ### [Clover and unit test patterns](https://osherove.com/blog/2004/1/16/clover-and-unit-test-patterns.html) - Jan 12, 2004 ### [Sam Gentile on Test Driven Development](https://osherove.com/blog/2004/1/12/sam-gentile-on-test-driven-development.html) - Jan 8, 2004 ### [The FxCop Blog](https://osherove.com/blog/2004/1/8/the-fxcop-blog.html) --- title: "X# video snagged my MS" url: "https://osherove.com/blog/2004/1/15/x-video-snagged-my-ms.md" canonical: "https://osherove.com/blog/2004/1/15/x-video-snagged-my-ms.html" published: "2004-01-15T07:15:00" updated: "2004-01-15T07:15:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This guy somehow found a video demonstrating x# (from MS research). However, the video was supposed to be only internal but somehow got leaked. So MS (actually the speaker in the video, Chris Lovett) asked him politely…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # X\# video snagged my MS By Roy Osherove January 15, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 15, 2004; technical details may be outdated. [This guy somehow found a video demonstrating x#](http://zerotrilogy.gotdns.com/jaysonblog/archive/2004/01/13/205.aspx) (from MS research). However, the video was supposed to be only internal but somehow got leaked. So MS (actually the speaker in the video, Chris Lovett) asked him politely to remove it. I do wonder why is it so important people not see it? I mean, if it was already out there, why take it back? Competition? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 17, 2004 ### [The RSA encryption algorithm - step by step](https://osherove.com/blog/2004/1/17/the-rsa-encryption-algorithm-step-by-step.html) - Jan 16, 2004 ### [MS Word for OS-X: Nostalgia edition](https://osherove.com/blog/2004/1/16/ms-word-for-os-x-nostalgia-edition.html) - Jan 12, 2004 ### [Are you in Israel and reading this?](https://osherove.com/blog/2004/1/12/are-you-in-israel-and-reading-this.html) - Jan 12, 2004 ### [What hiatus?](https://osherove.com/blog/2004/1/12/what-hiatus.html) --- title: "Code Complete 2. Good, but not a silver bullet" url: "https://osherove.com/blog/2004/1/14/code-complete-2-good-but-not-a-silver-bullet.md" canonical: "https://osherove.com/blog/2004/1/14/code-complete-2-good-but-not-a-silver-bullet.html" published: "2004-01-14T18:45:00" updated: "2004-01-14T18:45:00" tags: ["Free book chapters"] author: "Roy Osherove" description: "Oh goodie!, Code Complete 2 is on the horizon(via Shawn ). While many consider this book to be the \"bible of coding\", I can't help but feel overwhelmed by such a response. I read it, it is definitely good and has great…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Code Complete 2. Good, but not a silver bullet By Roy Osherove January 14, 2004 In [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published January 14, 2004; technical details may be outdated. Oh goodie!, [Code Complete 2](http://www.stevemcconnell.com/cc2/cc.htm) is on the horizon(via [Shawn](http://blogs.msdn.com/shawnmor/archive/2004/01/14/58691.aspx)). While many consider this book to be the "bible of coding", I can't help but feel overwhelmed by such a response. I read it, it is definitely good and has great information and advice, but to some extent I found it rather dry. The fact that I only knew VB when I read it might have helped this situation but, forget that for now. Say a new coder comes to my company. I slap them with this thickie and then what? can I actually expect a dev to read all this (assuming most everything there is news to them) and : - Remember everything? - Change all their habits\`? - See the light? Hardly. Changing habits (even new ones) comes only in one way that I know of: working on it. Not only that, to change a dev's ways one would have to mentor that dev into "seeing the light" and it would still be a slow,hard process for everyone involved. Like it or not, The amount of skill that a senior developer has in writing clean code, the stuff they take for granted as standard writing style, readable code, unit testing, and all those things which we praise day in and day out, that is a friggin' lot to learn for any person. And it takes a **lot of time**. I don't see myself ,during my junior developer days, getting to a point where I need to stop and ask myself "_Wait, how would a loop be written using Code Complete way?_". Not because I wouldn't want to, but because I would need someone to remind me to do that. Someone more experienced than I am, because I will not be able to see my mistakes. Anyway, [Code Complete](https://www.amazon.com/exec/obidos/ASIN/1556154844/iserializable-20) is still a great book and , looking at the manuscript for the next version, there's a lot that looks very useful. I especially liked the parts about testing and developer testing(Test Driven Development) ## More in Free book chapters [All posts in Free book chapters](https://osherove.com/blog/category/free-book-chapters) - Mar 5, 2004 ### [Book of the month](https://osherove.com/blog/2004/3/5/book-of-the-month.html) - Jan 16, 2004 ### [Three free recipes from "ADO.NET Cookbook"](https://osherove.com/blog/2004/1/16/three-free-recipes-from-quotadonet-cookbookquot.html) - Nov 20, 2003 ### [\[online book\] A .NET Developer's Guide to Windows Security](https://osherove.com/blog/2003/11/20/online-book-a-net-developers-guide-to-windows-security.html) - Oct 6, 2003 ### [More than 500 sample chapters](https://osherove.com/blog/2003/10/6/more-than-500-sample-chapters.html) --- title: "Sam Gentile on Test Driven Development" url: "https://osherove.com/blog/2004/1/12/sam-gentile-on-test-driven-development.md" canonical: "https://osherove.com/blog/2004/1/12/sam-gentile-on-test-driven-development.html" published: "2004-01-12T13:42:00" updated: "2004-01-12T13:42:00" tags: [".Net Quotations", "Cool sites"] author: "Roy Osherove" description: "Just started listening to Sam Gentile on the .Net Rocks show , and he's talking about exactly what's the main thing in my .net life right now: doing test driven development. Very cool and very interesting. Although slow…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Sam Gentile on Test Driven Development By Roy Osherove January 12, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published January 12, 2004; technical details may be outdated. Just started listening to [Sam Gentile on the .Net Rocks show](http://www.franklins.net/dotnetrocks/), and he's talking about exactly what's the main thing in my .net life right now: doing test driven development. Very cool and very interesting. Although slow at times I encourage you to listen to this specific program. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 16, 2004 ### [Clover and unit test patterns](https://osherove.com/blog/2004/1/16/clover-and-unit-test-patterns.html) - Jan 16, 2004 ### [From VB6 to VB.Net - important webcasts](https://osherove.com/blog/2004/1/16/from-vb6-to-vbnet-important-webcasts.html) - Jan 8, 2004 ### [The FxCop Blog](https://osherove.com/blog/2004/1/8/the-fxcop-blog.html) - Jan 8, 2004 ### [SOA reading list](https://osherove.com/blog/2004/1/8/soa-reading-list.html) --- title: "Are you in Israel and reading this?" url: "https://osherove.com/blog/2004/1/12/are-you-in-israel-and-reading-this.md" canonical: "https://osherove.com/blog/2004/1/12/are-you-in-israel-and-reading-this.html" published: "2004-01-12T13:22:00" updated: "2004-01-12T13:22:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Yosi is conducting a small test . If you're in Israel and reading this, go post a comment on his post or on this post. Let's see how many we can gather , shall we?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Are you in Israel and reading this? By Roy Osherove January 12, 2004 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 12, 2004; technical details may be outdated. [Yosi is conducting a small test](http://blogs.msdn.com/yosit/archive/2004/01/12/57831.aspx). If you're in Israel and reading this, go [post a comment](http://blogs.msdn.com/yosit/archive/2004/01/12/57831.aspx) on his post or on this post. Let's see how many we can gather , shall we? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jan 22, 2004 ### [2 BlogJet issues](https://osherove.com/blog/2004/1/22/2-blogjet-issues.html) - Jan 22, 2004 ### [\[way OT\]College blogs](https://osherove.com/blog/2004/1/22/way-otcollege-blogs.html) - Jan 11, 2004 ### [Share your RSS subscriptions with the world](https://osherove.com/blog/2004/1/11/share-your-rss-subscriptions-with-the-world.html) - Jan 10, 2004 ### [Iranian Journalist Credits Blogs for Playing Key Role in His Release From Prison.](https://osherove.com/blog/2004/1/10/iranian-journalist-credits-blogs-for-playing-key-role-in-his.html) --- title: "What hiatus?" url: "https://osherove.com/blog/2004/1/12/what-hiatus.md" canonical: "https://osherove.com/blog/2004/1/12/what-hiatus.html" published: "2004-01-12T05:47:00" updated: "2004-01-12T05:47:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Funny, and a bit scary. Just so we're clear, Rory was not on hiatus ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What hiatus? By Roy Osherove January 12, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 12, 2004; technical details may be outdated. Funny, and a bit scary. Just so we're clear, [Rory was **not** on hiatus](http://neopoleon.com/blog/posts/2386.aspx). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 15, 2004 ### [X# video snagged my MS](https://osherove.com/blog/2004/1/15/x-video-snagged-my-ms.html) - Jan 12, 2004 ### [Are you in Israel and reading this?](https://osherove.com/blog/2004/1/12/are-you-in-israel-and-reading-this.html) - Jan 10, 2004 ### [Boosting productivity](https://osherove.com/blog/2004/1/10/boosting-productivity.html) - Jan 9, 2004 ### [Weekend thoughts and ramblings](https://osherove.com/blog/2004/1/9/weekend-thoughts-and-ramblings.html) --- title: "Share your RSS subscriptions with the world" url: "https://osherove.com/blog/2004/1/11/share-your-rss-subscriptions-with-the-world.md" canonical: "https://osherove.com/blog/2004/1/11/share-your-rss-subscriptions-with-the-world.html" published: "2004-01-11T00:20:00" updated: "2004-01-11T00:20:00" tags: ["Blogging"] author: "Roy Osherove" description: "If you haven't checked it out yet, you should really take a look at http://feeds.scripting.com/rankings Basically it's a site that allows you to upload your OPML file and share it with others. The link here shows the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Share your RSS subscriptions with the world By Roy Osherove January 11, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published January 11, 2004; technical details may be outdated. If you haven't checked it out yet, you should really take a look at [http://feeds.scripting.com/rankings](http://feeds.scripting.com/rankings) Basically it's a site that allows you to upload your OPML file and share it with others. The link here shows the top 100 feeds people subscribe to. You can also go to each person and see their OPML list. You can also see who subscribes to your feed. Sadly, it seems that only 5 people subscribe to me, which is even less than my imagined 10 readers :)   (but then, [Lutz Roeder's feed](http://aisto.com/roeder/frontier/rss.xml) only has 3 subscriptions so what do I know) Anyway, I just discovered some very cool feeds from there but I think it's still little known. So, [what do you subscribe to](http://feeds.scripting.com/member/signup)? (BTW: you need to [manually enable](http://feeds.scripting.com/sharingPrefs) sharing your subscriptions so that you will be counted as a subscriber to someone else's feeds)  (This is not aggregated on the main site so that I only bother the people who actually subscribe to my blog) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jan 22, 2004 ### [\[way OT\]College blogs](https://osherove.com/blog/2004/1/22/way-otcollege-blogs.html) - Jan 12, 2004 ### [Are you in Israel and reading this?](https://osherove.com/blog/2004/1/12/are-you-in-israel-and-reading-this.html) - Jan 10, 2004 ### [Iranian Journalist Credits Blogs for Playing Key Role in His Release From Prison.](https://osherove.com/blog/2004/1/10/iranian-journalist-credits-blogs-for-playing-key-role-in-his.html) - Jan 9, 2004 ### [Shame on me](https://osherove.com/blog/2004/1/9/shame-on-me.html) --- title: "What Good is the Bill of Rights?" url: "https://osherove.com/blog/2004/1/10/what-good-is-the-bill-of-rights.md" canonical: "https://osherove.com/blog/2004/1/10/what-good-is-the-bill-of-rights.html" published: "2004-01-10T18:40:00" updated: "2004-01-10T18:40:00" tags: [] author: "Roy Osherove" description: "This is scary . I'm sure almost every country in the world (including Israel) does this though. And there are things we will never know, or find out. [via Have Browser, will travel ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What Good is the Bill of Rights? By Roy Osherove January 10, 2004 **Historical article** · Originally published January 10, 2004; technical details may be outdated. [This is scary](http://www.kuro5hin.org/story/2004/1/7/231137/2285). I'm sure almost every country in the world (including Israel) does this though. And there are things we will never know, or find out. _\[via_ [_Have Browser, will travel_](http://jim.roepcke.com/6724)_\]_ --- title: "Service announcement: Source code for MSDN articles now available" url: "https://osherove.com/blog/2004/1/10/service-announcement-source-code-for-msdn-articles-now-avail.md" canonical: "https://osherove.com/blog/2004/1/10/service-announcement-source-code-for-msdn-articles-now-avail.html" published: "2004-01-10T18:14:00" updated: "2004-01-10T18:14:00" tags: [".Net Original"] author: "Roy Osherove" description: "The source code for my MSDN articles was missing on all of them. This has been fixed. So if you wanted to download the code, now you can :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Service announcement: Source code for MSDN articles now available By Roy Osherove January 10, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published January 10, 2004; technical details may be outdated. The source code for my MSDN articles was missing on all of them. This has been fixed. So if you wanted to download the code, now you can :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 17, 2004 ### [Using SOA on existing N-tier applications](https://osherove.com/blog/2004/1/17/using-soa-on-existing-n-tier-applications.html) - Jan 16, 2004 ### [Three free recipes from "ADO.NET Cookbook"](https://osherove.com/blog/2004/1/16/three-free-recipes-from-quotadonet-cookbookquot.html) - Jan 10, 2004 ### [New MSDN article: Turn Your Log Files into Searchable Data Using Regex and the XML Classes](https://osherove.com/blog/2004/1/10/new-msdn-article-turn-your-log-files-into-searchable-data-us.html) - Jan 9, 2004 ### [IntelliJ IDEA blows my mind again](https://osherove.com/blog/2004/1/9/intellij-idea-blows-my-mind-again.html) --- title: "Boosting productivity" url: "https://osherove.com/blog/2004/1/10/boosting-productivity.md" canonical: "https://osherove.com/blog/2004/1/10/boosting-productivity.html" published: "2004-01-10T18:05:00" updated: "2004-01-10T18:05:00" tags: ["Off Topic"] author: "Roy Osherove" description: "> largest discrepancy in productivity between the worst and > best developer in a single organization is 28 to 1 Only 28:1? Note to self: must slack off more, thereby boosting the relative productivity of my cow-orkers…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Boosting productivity By Roy Osherove January 10, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 10, 2004; technical details may be outdated. \> largest discrepancy in productivity between the worst and \> best developer in a single organization is 28 to 1 Only 28:1? Note to self: must slack off more, thereby boosting the relative productivity of my cow-orkers \[via the win tech off topic list\] ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 12, 2004 ### [Are you in Israel and reading this?](https://osherove.com/blog/2004/1/12/are-you-in-israel-and-reading-this.html) - Jan 12, 2004 ### [What hiatus?](https://osherove.com/blog/2004/1/12/what-hiatus.html) - Jan 9, 2004 ### [Weekend thoughts and ramblings](https://osherove.com/blog/2004/1/9/weekend-thoughts-and-ramblings.html) - Jan 9, 2004 ### [Shame on me](https://osherove.com/blog/2004/1/9/shame-on-me.html) --- title: "[Tool] Easier log parsing with Log Parser" url: "https://osherove.com/blog/2004/1/10/tool-easier-log-parsing-with-log-parser.md" canonical: "https://osherove.com/blog/2004/1/10/tool-easier-log-parsing-with-log-parser.html" published: "2004-01-10T14:50:00" updated: "2004-01-10T14:50:00" tags: ["Cool Articles", "Cool Tools", "Cool sites"] author: "Roy Osherove" description: "Speaking of parsing log files , There's a little known tool called LogParser , and it's from the Microsoft IIS team. This very powerful parser can easily parse various kinds of log files and you can actually query…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Tool\] Easier log parsing with Log Parser By Roy Osherove January 10, 2004 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published January 10, 2004; technical details may be outdated. Speaking of [parsing log files](http://weblogs.asp.net/rosherove/archive/2004/01/10/49414.aspx), There's a little known tool called [LogParser](http://www.microsoft.com/technet/treeview/default.asp?url=/technet/scriptcenter/logs/logparser/default.asp), and it's from the Microsoft IIS team. This very powerful parser can easily parse various kinds of log files and you can actually query against the data in a log file in an SQL-like syntax, or output the log into one of several formats, one of which is XML. You can read more about this little known tool over at [www.logparser.com](http://www.logparser.com/) (maintained by [Mike Gunderloy](http://www.larkware.com/)). I recommend you take a long hard look and add it to your developer tool belt. If you look at my [log parsing article](http://weblogs.asp.net/rosherove/archive/2004/01/10/49414.aspx) this tool covers all the functionality needed in that article out of the box. However, one thing this version does not do is parse log records that span multiple lines. For example: **RecordStart** **Start: 10.22.53** **User: Name** **Action: something** **RecordEnd** This kind of record in a log file cannot be parsed by LogParser, but using my technique you can parse this with relatively little effort. However, I'm told by Mike that the next version of [LogParser](http://www.microsoft.com/technet/treeview/default.asp?url=/technet/scriptcenter/logs/logparser/default.asp) will feature multiple line parsing, but you'd have to write your own plugin into the parser to achieve that (and it's plugin architecture will be based on COM, how's that for progress?) Still, this is something I wish I'd looked into earlier (I've known about the tool but never actually checked it out) ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Jan 16, 2004 ### [Hall of Technical Documentation Weirdness](https://osherove.com/blog/2004/1/16/hall-of-technical-documentation-weirdness.html) - Jan 16, 2004 ### [From VB6 to VB.Net - important webcasts](https://osherove.com/blog/2004/1/16/from-vb6-to-vbnet-important-webcasts.html) - Jan 10, 2004 ### [New MSDN article: Turn Your Log Files into Searchable Data Using Regex and the XML Classes](https://osherove.com/blog/2004/1/10/new-msdn-article-turn-your-log-files-into-searchable-data-us.html) - Jan 9, 2004 ### [Debugging Unit tests using the VS.net debugger](https://osherove.com/blog/2004/1/9/debugging-unit-tests-using-the-vsnet-debugger.html) --- title: "Iranian Journalist Credits Blogs for Playing Key Role in His Release From Prison." url: "https://osherove.com/blog/2004/1/10/iranian-journalist-credits-blogs-for-playing-key-role-in-his.md" canonical: "https://osherove.com/blog/2004/1/10/iranian-journalist-credits-blogs-for-playing-key-role-in-his.html" published: "2004-01-10T14:18:00" updated: "2004-01-10T14:18:00" tags: ["Blogging"] author: "Roy Osherove" description: "This is pretty darn cool. [via Dan Gillmor ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Iranian Journalist Credits Blogs for Playing Key Role in His Release From Prison. By Roy Osherove January 10, 2004 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published January 10, 2004; technical details may be outdated. [This is pretty darn cool.](http://www.ojr.org/ojr/glaser/1073610866.php) \[via [Dan Gillmor](http://weblog.siliconvalley.com/column/dangillmor/archives/001650.shtml)\] ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jan 12, 2004 ### [Are you in Israel and reading this?](https://osherove.com/blog/2004/1/12/are-you-in-israel-and-reading-this.html) - Jan 11, 2004 ### [Share your RSS subscriptions with the world](https://osherove.com/blog/2004/1/11/share-your-rss-subscriptions-with-the-world.html) - Jan 9, 2004 ### [Shame on me](https://osherove.com/blog/2004/1/9/shame-on-me.html) - Jan 8, 2004 ### [The FxCop Blog](https://osherove.com/blog/2004/1/8/the-fxcop-blog.html) --- title: "New MSDN article: Turn Your Log Files into Searchable Data Using Regex and the XML Classes" url: "https://osherove.com/blog/2004/1/10/new-msdn-article-turn-your-log-files-into-searchable-data-us.md" canonical: "https://osherove.com/blog/2004/1/10/new-msdn-article-turn-your-log-files-into-searchable-data-us.html" published: "2004-01-10T13:32:00" updated: "2004-01-10T13:32:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "Thanks to Kent , another article of mine has just been published on MSDN: Turn Your Log Files into Searchable Data Using Regex and the XML Classes This is one of my favorites, as it shows a real life example of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New MSDN article: Turn Your Log Files into Searchable Data Using Regex and the XML Classes By Roy Osherove January 10, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published January 10, 2004; technical details may be outdated. Thanks to [Kent](http://weblogs.asp.net/ksharkey/archive/2004/01/09/49316.aspx), another article of mine has just been published on MSDN: [Turn Your Log Files into Searchable Data Using Regex and the XML Classes](http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/regexandxmlclasses.asp) This is one of my favorites, as it shows a real life example of something I actually went through early in my .Net days. This article was the result of that experience, and it was pretty darn cool. Here's the introduction: "_What?! You want me to transform all this into something searchable?" I asked with dismay. It was an early morning meeting with the company's CTO. The topic was, "We've got a bunch of log files from our legacy application, and we need to provide a good way to collect and search data from those logs." The "logs" were a bunch of year-old text files in which our legacy application saved all its logs for a specific task it performed. Now the customer wanted to have some statistics about all the operations that were written in those files._ _CTO: "Yeah, and we need it right away. Can you do it?"_ _"Sure", I replied. I had to think about how to do this, though. Surely, this would be a challenge...."_ ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 16, 2004 ### [Three free recipes from "ADO.NET Cookbook"](https://osherove.com/blog/2004/1/16/three-free-recipes-from-quotadonet-cookbookquot.html) - Jan 10, 2004 ### [Service announcement: Source code for MSDN articles now available](https://osherove.com/blog/2004/1/10/service-announcement-source-code-for-msdn-articles-now-avail.html) - Jan 9, 2004 ### [IntelliJ IDEA blows my mind again](https://osherove.com/blog/2004/1/9/intellij-idea-blows-my-mind-again.html) - Jan 9, 2004 ### [Debugging Unit tests using the VS.net debugger](https://osherove.com/blog/2004/1/9/debugging-unit-tests-using-the-vsnet-debugger.html) --- title: "Weekend thoughts and ramblings" url: "https://osherove.com/blog/2004/1/9/weekend-thoughts-and-ramblings.md" canonical: "https://osherove.com/blog/2004/1/9/weekend-thoughts-and-ramblings.html" published: "2004-01-09T22:12:00" updated: "2004-01-09T22:12:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Ah, it's the weekend again. Let's see. What shall I do? Um, read blogs, write blogs, read code,write code, I'm also thinking of a new article, about DB unit testing. But mainly,I'm really going to miss my wife. I love…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Weekend thoughts and ramblings By Roy Osherove January 9, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 9, 2004; technical details may be outdated. Ah, it's the weekend again. Let's see. What shall I do? Um, read blogs, write blogs, read code,write code, I'm also thinking of a new article, about DB unit testing. But mainly,I'm really going to miss my wife. I love you honey. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 12, 2004 ### [What hiatus?](https://osherove.com/blog/2004/1/12/what-hiatus.html) - Jan 10, 2004 ### [Boosting productivity](https://osherove.com/blog/2004/1/10/boosting-productivity.html) - Jan 9, 2004 ### [Shame on me](https://osherove.com/blog/2004/1/9/shame-on-me.html) - Jan 9, 2004 ### [Weekend reading: Acm Turing Award Lectures : The First Twenty Years, 1966 to 1985](https://osherove.com/blog/2004/1/9/weekend-reading-acm-turing-award-lectures-the-first-twenty-y.html) --- title: "Shame on me" url: "https://osherove.com/blog/2004/1/9/shame-on-me.md" canonical: "https://osherove.com/blog/2004/1/9/shame-on-me.html" published: "2004-01-09T21:54:00" updated: "2004-01-09T21:54:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "A few months ago , I posted a short blurb about the a paragraph from [ Mystic Microsoft - chapter 11 ], a book by Kraig Brockschmidt, who is also known as the guy who wrote \" Inside OLE \". The blurb took a single remark…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Shame on me By Roy Osherove January 9, 2004 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 9, 2004; technical details may be outdated. A few months ago , I [posted a short blurb](http://weblogs.asp.net/rosherove/archive/2003/09/08/26679.aspx) about the a paragraph from \[[Mystic Microsoft - chapter 11](http://www.anandasangha.net/mysticmicrosoft/Chapter11.htm)\], a book by Kraig Brockschmidt, who is also known as the guy who wrote "[Inside OLE](https://www.amazon.com/exec/obidos/ASIN/1556158432/iserializable-20)". The blurb took a single remark by Kraig out of context and related it to what I had recently blogged about at the time: "[The Impostor syndrome](http://weblogs.asp.net/rosherove/posts/10573.aspx)". Today, I got a scathing comment on that post by Kraig himself, explaining the context of that sentence and adding "_shame on you for making blanket assumptions about people you've never met_". I'm sorry. Please accept my apologies. _(you can_ [_read the whole gushing reply_](http://weblogs.asp.net/rosherove/archive/2003/09/08/26679.aspx) _to Kraig as a comment to that post)_ ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jan 11, 2004 ### [Share your RSS subscriptions with the world](https://osherove.com/blog/2004/1/11/share-your-rss-subscriptions-with-the-world.html) - Jan 10, 2004 ### [Iranian Journalist Credits Blogs for Playing Key Role in His Release From Prison.](https://osherove.com/blog/2004/1/10/iranian-journalist-credits-blogs-for-playing-key-role-in-his.html) - Jan 8, 2004 ### [The FxCop Blog](https://osherove.com/blog/2004/1/8/the-fxcop-blog.html) - Dec 31, 2003 ### [Another one bites the bullet: Santo has left the building](https://osherove.com/blog/2003/12/31/another-one-bites-the-bullet-santo-has-left-the-building.html) --- title: "IntelliJ IDEA blows my mind again" url: "https://osherove.com/blog/2004/1/9/intellij-idea-blows-my-mind-again.md" canonical: "https://osherove.com/blog/2004/1/9/intellij-idea-blows-my-mind-again.html" published: "2004-01-09T21:39:00" updated: "2004-01-09T21:39:00" tags: [".Net Original"] author: "Roy Osherove" description: "Ah. Version 4 . And it even has Edit and Continue . How about that? Are you listening, Microsoft? this is the IDE I wish VS.Net could be one day. Please, learn as much as you can from the features of this amazing IDE…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # IntelliJ IDEA blows my mind again By Roy Osherove January 9, 2004 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published January 9, 2004; technical details may be outdated. Ah. [Version 4](http://www.intellij.com/idea/features4). And it even has [Edit and Continue](http://www.intellij.com/idea/features4). How about that? Are you listening, Microsoft? **this** is the IDE I wish VS.Net could be one day. Please, learn as much as you can from the features of this amazing IDE and make like internet explorer to blow away this new "Netscape". ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 10, 2004 ### [Service announcement: Source code for MSDN articles now available](https://osherove.com/blog/2004/1/10/service-announcement-source-code-for-msdn-articles-now-avail.html) - Jan 10, 2004 ### [New MSDN article: Turn Your Log Files into Searchable Data Using Regex and the XML Classes](https://osherove.com/blog/2004/1/10/new-msdn-article-turn-your-log-files-into-searchable-data-us.html) - Jan 9, 2004 ### [Debugging Unit tests using the VS.net debugger](https://osherove.com/blog/2004/1/9/debugging-unit-tests-using-the-vsnet-debugger.html) - Dec 29, 2003 ### [Another article of mine published on MSDN: Search Dynamically for Plug-Ins](https://osherove.com/blog/2003/12/29/another-article-of-mine-published-on-msdn-search-dynamically.html) --- title: "Weekend reading: Acm Turing Award Lectures : The First Twenty Years, 1966 to 1985" url: "https://osherove.com/blog/2004/1/9/weekend-reading-acm-turing-award-lectures-the-first-twenty-y.md" canonical: "https://osherove.com/blog/2004/1/9/weekend-reading-acm-turing-award-lectures-the-first-twenty-y.html" published: "2004-01-09T20:44:00" updated: "2004-01-09T20:44:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Ah. This is my idea of good literature: Acm Turing Award Lectures : The First Twenty Years , 1966 to 1985 I have a feeling that 50% of it will be waaay over my level, but I browsed through it and was able to spot some…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Weekend reading: Acm Turing Award Lectures : The First Twenty Years, 1966 to 1985 By Roy Osherove January 9, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 9, 2004; technical details may be outdated. Ah. This is my idea of good literature: [**Acm** **Turing** **Award** **Lectures** : The **First** **Twenty** **Years**, 1966 to 1985](https://www.amazon.com/exec/obidos/ASIN/0201548852/qid=1073687929/iserializable-20) I have a feeling that 50% of it will be waaay over my level, but I browsed through it and was able to spot some good gems :) Gonna have a read this weekend. Have a good one everyone. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 9, 2004 ### [Weekend thoughts and ramblings](https://osherove.com/blog/2004/1/9/weekend-thoughts-and-ramblings.html) - Jan 9, 2004 ### [Shame on me](https://osherove.com/blog/2004/1/9/shame-on-me.html) - Jan 9, 2004 ### [Common rants and misconceptions](https://osherove.com/blog/2004/1/9/common-rants-and-misconceptions.html) - Jan 7, 2004 ### [Small cool news](https://osherove.com/blog/2004/1/7/small-cool-news.html) --- title: "Debugging Unit tests using the VS.net debugger" url: "https://osherove.com/blog/2004/1/9/debugging-unit-tests-using-the-vsnet-debugger.md" canonical: "https://osherove.com/blog/2004/1/9/debugging-unit-tests-using-the-vsnet-debugger.html" published: "2004-01-09T15:12:00" updated: "2004-01-09T15:12:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "[ Update : Bah ! how silly am I? Turns out you can do the same thing I outline here only much much easier using the amazing NUnit-Addin. It has a \"Test with Debugger\" command that allows you to do just what I explain…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Debugging Unit tests using the VS.net debugger By Roy Osherove January 9, 2004 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published January 9, 2004; technical details may be outdated. \[**Update**:**Bah**! how silly am I? Turns out you can do the same thing I outline here only much much easier using the amazing [NUnit-Addin.](http://sourceforge.net/project/showfiles.php?group_id=64706)  It has a "Test with Debugger" command that allows you to do just what I explain here without needing to invoke the Nunit gui program from the debugging options. How very cool. Guess you learn something new every day...\] Here's a very easy way to debug your unit tests line by line using the vs.net debugger (you shouldn't need to do this too often if you're doing Test Driven Development correctly though): - Set the testing project as the startup project in the solution(so you can start debug with F5) - Open the project properties of the project with all the tests - In the Configuration Properties->Debugging , set the "start action" to "start external program" and select the Nunit-gui.exe or the Nunit-console.exe - If you selected the console program, put the name of your assembly in the parameters to send to this program That's it. Now, to start debugging: - Place a breakpoint anywhere in the code that will be tested (either a test or a code that is used by the test) - Hit F5. - If you chose to debug using the Nunit gui application, just hit "run" on the tests you want and let the debugger stop at the breakpoint you want.If you are debugging by starting the console application you will get to that breakpoint automatically eventually (all the tests in the assembly will be run). Find out more in [this article](http://www.xprogramming.com/xpmag/acsUsingNUnit.htm#N390) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 10, 2004 ### [New MSDN article: Turn Your Log Files into Searchable Data Using Regex and the XML Classes](https://osherove.com/blog/2004/1/10/new-msdn-article-turn-your-log-files-into-searchable-data-us.html) - Jan 9, 2004 ### [IntelliJ IDEA blows my mind again](https://osherove.com/blog/2004/1/9/intellij-idea-blows-my-mind-again.html) - Dec 29, 2003 ### [Another article of mine published on MSDN: Search Dynamically for Plug-Ins](https://osherove.com/blog/2003/12/29/another-article-of-mine-published-on-msdn-search-dynamically.html) - Dec 27, 2003 ### [Code: CRUD base classes for unit testing](https://osherove.com/blog/2003/12/27/code-crud-base-classes-for-unit-testing.html) --- title: "Common rants and misconceptions" url: "https://osherove.com/blog/2004/1/9/common-rants-and-misconceptions.md" canonical: "https://osherove.com/blog/2004/1/9/common-rants-and-misconceptions.html" published: "2004-01-09T14:34:00" updated: "2004-01-09T14:34:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Tell me if you've heard this before: \"The company I work for Is too cheap to buy me...\" a bigger computer screen a better mouse A better keyboard A better dev machine\\More RAM\\CPU A ticket to the PDC\\DevDays\\programming…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Common rants and misconceptions By Roy Osherove January 9, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 9, 2004; technical details may be outdated. Tell me if you've heard this before: **"The company I work for Is too cheap to buy me..."** 1. a bigger computer screen 2. a better mouse 3. A better keyboard 4. A better dev machine\\More RAM\\CPU 5. A ticket to the PDC\\DevDays\\programming courses 6. A faster interned connection 7. Computer books 8. Lunch 9. Pizza 10. Overtime 11. A recreation room 12. A decent air conditioner 13. a door for the room 14. A bigger office **"My direct boss..."** 1. does not recognize my abilities and keeps me as a code monkey 2. Has less technical knowledge than me and is not worthy of my explanations 3. Would like nothing more than see me fail 4. Has no idea why I read weblogs for 3 hours during the day and never will 5. Could not be any more of an insensitive jerk 6. Has no idea that most days I just surf the web half of the time 7. Never notices me picking my nose in the office **"My direct subordinate..."** 1. Does nothing with his\\her time but bitch about what I'm doing wrong 2. Wants my job and me out of here 3. Thinks I'm a worthless piece of code monkey poo 4. Has no grasp of the context in which we operate 5. did not notice that I took credit for myself on that last task 6. Did not notice that I put in a good word for him\\her with the boss 7. Does nothing all day but surf the web 8. Never reads any of the books I get him\\her 9. Does not want to learn anything new OK. Just so you know, the "misconceptions" part is in parts 2 and 3, while part 1 is usually a viable rant. I say **usually** because plenty of times being in one place for a long time can really make you lose perspective on things. I've been to one company which actually forced new programming books down the developers throats, paid for various workshops and all of kinds of other things, yet the devs  kept complaining about their 17 inch screens and that they have squeaky mice. **Here's a reality check**: Many folks would **dream** to work in such a place. (mind you, the paycheck was reasonable, although not high). Here's another anecdote: I've never seen a company that did not have employees rant about part 1 of this list (MS is the exception). So, get a grip and make sure you are looking reality in the face. Be happy that you have a job that you can enjoy. Start with that. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 9, 2004 ### [Shame on me](https://osherove.com/blog/2004/1/9/shame-on-me.html) - Jan 9, 2004 ### [Weekend reading: Acm Turing Award Lectures : The First Twenty Years, 1966 to 1985](https://osherove.com/blog/2004/1/9/weekend-reading-acm-turing-award-lectures-the-first-twenty-y.html) - Jan 7, 2004 ### [Small cool news](https://osherove.com/blog/2004/1/7/small-cool-news.html) - Jan 4, 2004 ### [Disappointed with RSS Bandit](https://osherove.com/blog/2004/1/4/disappointed-with-rss-bandit.html) --- title: "The FxCop Blog" url: "https://osherove.com/blog/2004/1/8/the-fxcop-blog.md" canonical: "https://osherove.com/blog/2004/1/8/the-fxcop-blog.html" published: "2004-01-08T18:29:00" updated: "2004-01-08T18:29:00" tags: [".Net Quotations", "Blogging"] author: "Roy Osherove" description: "Oh cool. The FxCop people now have a blog: The FxCop weblog here on .Net weblogs. \" Our goal is a single URL where we serve up tips and information about the FxCop tool and relay answers to some of the more common and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The FxCop Blog By Roy Osherove January 8, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published January 8, 2004; technical details may be outdated. Oh cool. The [FxCop](http://www.gotdotnet.com/team/fxcop) people now have a blog: [The FxCop weblog](http://weblogs.asp.net/fxcop) here on .Net weblogs. "_Our goal is a single URL where we serve up tips and information about the FxCop tool and relay answers to some of the more common and pressing questions._" and of course, they welcome comments on the blog. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 16, 2004 ### [From VB6 to VB.Net - important webcasts](https://osherove.com/blog/2004/1/16/from-vb6-to-vbnet-important-webcasts.html) - Jan 12, 2004 ### [Sam Gentile on Test Driven Development](https://osherove.com/blog/2004/1/12/sam-gentile-on-test-driven-development.html) - Jan 8, 2004 ### [SOA reading list](https://osherove.com/blog/2004/1/8/soa-reading-list.html) - Jan 3, 2004 ### [Some cool links](https://osherove.com/blog/2004/1/3/some-cool-links.html) --- title: "The Regulator Wiki" url: "https://osherove.com/blog/2004/1/8/the-regulator-wiki.md" canonical: "https://osherove.com/blog/2004/1/8/the-regulator-wiki.html" published: "2004-01-08T17:20:00" updated: "2004-01-08T17:20:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "I've decided to create a Wiki site for The Regulator . Since I can't find the time to create all the documentation myself, I thought if I make this a public thing then people who use this tool can put their knowledge on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator Wiki By Roy Osherove January 8, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published January 8, 2004; technical details may be outdated. I've decided to create a Wiki site for [The Regulator](http://royo.is-a-geek.com/iserializable/regulator). Since I can't find the time to create all the documentation myself, I thought if I make this a public thing then people who use this tool can put their knowledge on this Wiki for others to benefit from. Right now there's not much to see there (I just put it up a few days ago and have not really touched it) BTW I'm hoping with time we'll get it into a workable stage. [The Regulator Wiki](http://royo.is-a-geek.com/flexwiki/default.aspx/Regulator.HomePage) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Feb 11, 2004 ### [\[Tool\] QuickJump - very nice and simple VS.Net add-in](https://osherove.com/blog/2004/2/11/tool-quickjump-very-nice-and-simple-vsnet-add-in.html) - Jan 10, 2004 ### [\[Tool\] Easier log parsing with Log Parser](https://osherove.com/blog/2004/1/10/tool-easier-log-parsing-with-log-parser.html) - Jan 3, 2004 ### [Moving to RSS Bandit: A simple review](https://osherove.com/blog/2004/1/3/moving-to-rss-bandit-a-simple-review.html) - Dec 28, 2003 ### [MyRss.com is to Feedable as...](https://osherove.com/blog/2003/12/28/myrsscom-is-to-feedable-as.html) --- title: "SOA reading list" url: "https://osherove.com/blog/2004/1/8/soa-reading-list.md" canonical: "https://osherove.com/blog/2004/1/8/soa-reading-list.html" published: "2004-01-08T17:03:00" updated: "2004-01-08T17:03:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Great. Now I have a whole lot of reading to do on SOA , courtesy of Darrell ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SOA reading list By Roy Osherove January 8, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published January 8, 2004; technical details may be outdated. Great. Now I have a [whole lot of reading to do on SOA](http://dotnetjunkies.com/WebLog/darrell.norton/posts/5216.aspx), courtesy of [Darrell](http://dotnetjunkies.com/WebLog/darrell.norton). ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 12, 2004 ### [Sam Gentile on Test Driven Development](https://osherove.com/blog/2004/1/12/sam-gentile-on-test-driven-development.html) - Jan 8, 2004 ### [The FxCop Blog](https://osherove.com/blog/2004/1/8/the-fxcop-blog.html) - Jan 3, 2004 ### [Some cool links](https://osherove.com/blog/2004/1/3/some-cool-links.html) - Dec 31, 2003 ### [Jan does cool stuff: nice article and cool extension to the winform data grid](https://osherove.com/blog/2003/12/31/jan-does-cool-stuff-nice-article-and-cool-extension-to-the-w.html) --- title: "Small cool news" url: "https://osherove.com/blog/2004/1/7/small-cool-news.md" canonical: "https://osherove.com/blog/2004/1/7/small-cool-news.html" published: "2004-01-07T14:36:00" updated: "2004-01-07T14:36:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Ah. Some interesting days have just passed. I'll blog later about what I've been going through. But today I discovered two cool things: Thanks to Kent , My Author Page on MSDN is ready . Ain't that a classy picture (my…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Small cool news By Roy Osherove January 7, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 7, 2004; technical details may be outdated. Ah. Some interesting days have just passed. I'll blog later about what I've been going through. But today I discovered two cool things: 1. Thanks to [Kent](http://weblogs.asp.net/ksharkey/archive/2004/01/05/47730.aspx),  [My Author Page on MSDN is ready](http://msdn.microsoft.com/asp.net/community/authors/royosherove/default.aspx). Ain't that a classy picture (my wife says I make a funny face in it) 2.  [Raymond Chen](http://weblogs.asp.net/oldnewthing/) answered my question as to [why the Copy File dialog sometimes counts **up** instead of down](http://weblogs.asp.net/oldnewthing/archive/2004/01/06/47937.aspx). (lots of good comments on that one. Hey, I have dibs on that cool post idea! ;-) 3. Kevin gives a good overview on [how to make IIS 6 ready for team development](http://weblogs.asp.net/kevinha/archive/2004/01/06/48077.aspx) 4. [Sara Ford](http://weblogs.asp.net/saraford/), VS Software Design Engineer, blogs about her accessibility experiences with VS .NET.Of particular interest is her article on [keyboard, high contrast and Assistive Technology compatibility](http://weblogs.asp.net/saraford/archive/2004/01/06/48083.aspx)  5. A new spec is in town: [WS-Eventing](http://msdn.microsoft.com/webservices/default.aspx?pull=/library/en-us/dnglobspec/html/ws-eventing.asp) (publish\\subscribe model for web services) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 9, 2004 ### [Weekend reading: Acm Turing Award Lectures : The First Twenty Years, 1966 to 1985](https://osherove.com/blog/2004/1/9/weekend-reading-acm-turing-award-lectures-the-first-twenty-y.html) - Jan 9, 2004 ### [Common rants and misconceptions](https://osherove.com/blog/2004/1/9/common-rants-and-misconceptions.html) - Jan 4, 2004 ### [Disappointed with RSS Bandit](https://osherove.com/blog/2004/1/4/disappointed-with-rss-bandit.html) - Jan 3, 2004 ### [Good design is easily recognizable. Everywhere.](https://osherove.com/blog/2004/1/3/good-design-is-easily-recognizable-everywhere.html) --- title: "Disappointed with RSS Bandit" url: "https://osherove.com/blog/2004/1/4/disappointed-with-rss-bandit.md" canonical: "https://osherove.com/blog/2004/1/4/disappointed-with-rss-bandit.html" published: "2004-01-04T16:26:00" updated: "2004-01-04T16:26:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I didn't expect for this to happen. RSS Bandit just gave me a huge disappointment. I really thought this was it , that it works OK now, but I was wrong. Out of about 150 feeds, RSS Bandit can't parse 22 of them. And not…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Disappointed with RSS Bandit By Roy Osherove January 4, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 4, 2004; technical details may be outdated. I didn't expect for this to happen. [RSS Bandit](http://www.rssbandit.org/) just gave me a huge disappointment. I really thought [this was it](http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=f600bfaa-5643-42ae-82b8-8a2f4c0ca911), that it works OK now, but I was wrong. Out of about 150 feeds, RSS Bandit can't parse 22 of them. And not esoteric ones either: [Jermemy](http://www.eskimo.com/~jeremyk/index.rdf),[HackNot](http://www.hacknot.info/servlet/HS?cmd=rss),[Feedster](http://www.feedster.com/rss.php?q=ISerializable&sort=date&ie=UTF-8),[Dino](http://weblogs.asp.net/despos/Rss.aspx),[Brain.Save()](http://hyperthink.net/blog/SyndicationService.asmx/GetRss) and a good few more. These are all feeds that work very well in [sharpreader](http://sharpreader.net/). Now, the only thing I can think of is that these feeds do not conform to all the rules an RSS needs to conform to. That means that RSS bandit is somehow too '"strict" enforcing those rules (just a guess). If I can still get these feeds some other place you can be sure [that's](http://sharpreader.net/) the path I'll take. Sorry, [Dare](http://www.25hoursaday.com/weblog/). I really wanted to, but I can't give up some of my feeds, no matter how many cool features you have. Also, this post comes right after Dare has [patiently answered all of my pet peeves](http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=f600bfaa-5643-42ae-82b8-8a2f4c0ca911) about RSS Bandit. Unfortunately, at the time of writing the review, I did not notice the single biggest problem .Sorry again. I really hate to be a party pooper, but I'm sure Dare will take this criticism as it was given: in the hope of a better product. :( ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 9, 2004 ### [Common rants and misconceptions](https://osherove.com/blog/2004/1/9/common-rants-and-misconceptions.html) - Jan 7, 2004 ### [Small cool news](https://osherove.com/blog/2004/1/7/small-cool-news.html) - Jan 3, 2004 ### [Good design is easily recognizable. Everywhere.](https://osherove.com/blog/2004/1/3/good-design-is-easily-recognizable-everywhere.html) - Jan 3, 2004 ### [Moving to RSS Bandit: A simple review](https://osherove.com/blog/2004/1/3/moving-to-rss-bandit-a-simple-review.html) --- title: "Good design is easily recognizable. Everywhere." url: "https://osherove.com/blog/2004/1/3/good-design-is-easily-recognizable-everywhere.md" canonical: "https://osherove.com/blog/2004/1/3/good-design-is-easily-recognizable-everywhere.html" published: "2004-01-03T23:50:00" updated: "2004-01-03T23:50:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Good design does not have to come from software to be acknowledged. Here's a good example: [via Edward Tufte ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good design is easily recognizable. Everywhere. By Roy Osherove January 3, 2004 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 3, 2004; technical details may be outdated.

Good design does not have to come from software to be acknowledged. Here's a good example:

\[via [Edward Tufte](http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=00007Q&topic_id=1&topic=Ask%20E%2eT%2e)\] ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 7, 2004 ### [Small cool news](https://osherove.com/blog/2004/1/7/small-cool-news.html) - Jan 4, 2004 ### [Disappointed with RSS Bandit](https://osherove.com/blog/2004/1/4/disappointed-with-rss-bandit.html) - Jan 3, 2004 ### [Moving to RSS Bandit: A simple review](https://osherove.com/blog/2004/1/3/moving-to-rss-bandit-a-simple-review.html) - Dec 31, 2003 ### [Another one bites the bullet: Santo has left the building](https://osherove.com/blog/2003/12/31/another-one-bites-the-bullet-santo-has-left-the-building.html) --- title: "Some cool links" url: "https://osherove.com/blog/2004/1/3/some-cool-links.md" canonical: "https://osherove.com/blog/2004/1/3/some-cool-links.html" published: "2004-01-03T22:05:00" updated: "2004-01-03T22:05:00" tags: [".Net Quotations", "Cool Articles", "Cool sites"] author: "Roy Osherove" description: "While I promised myself I would not go down the linky road that Mike Gunderloy has managed to turn into an art form, here I go just the same. Jon Galloway points to useful classes and libraries posted by the C# team on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some cool links By Roy Osherove January 3, 2004 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published January 3, 2004; technical details may be outdated. While I promised myself I would not go down the linky road that [Mike Gunderloy](http://www.larkware.com/) has managed to turn into an art form, here I go just the same. - [Jon Galloway points](http://weblogs.asp.net/jgalloway/archive/2004/01/03/47380.aspx) to useful [classes](http://msdn.microsoft.com/vcsharp/team/code/libraries/default.aspx) and libraries posted by the C# team on MSDN. Cool. - [Steve Eichert shows](http://dotnetjunkies.com/weblog/seichert/posts/5145.aspx) us an elegant way to do some basic (and not so basic) rule validation on objects. A nice idea. You should also read the comments on that post. - [](http://radio.weblogs.com/0001011/2004/01/03.html#a6043)[Scoble](http://scoble.weblogs.com/) points to  [Andy King's Web Site Optimization site and book](http://www.websiteoptimization.com/). - [Jason Salas](http://weblogs.asp.net/jasonsalas/archive/2004/01/03/47259.aspx) points to [www.googleguide.com](http://www.googleguide.com/) to learn the more advanced features available via google - [Scott refers](http://scottwater.com/blog/archive/2004/01/03/IsDebug.aspx) to Jeff Key's small [IsDebug](http://www.sliver.com/dotnet/IsDebug/) utility, and recommends you check out [the rest of Jeff's babies](http://www.sliver.com/dotnet/). I agree. some neat stuff. - [Rachel discovered](http://weblogs.asp.net/rreese/archive/2004/01/02/47242.aspx) a nice article: [Interactive Mapping Using SVG & ASP.NET](http://www.15seconds.com/issue/030630.htm) - Ever since I read Joel's [Biculturalism](http://www.joelonsoftware.com/articles/Biculturalism.html) article (Unix Vs. Windows programmer mentality) I've been wanting to get this book that Joel highly recommends: [The Art Of UNIX Programming](https://www.amazon.com/exec/obidos/ASIN/0131429019/ref=nosim/iserializable-20) (or you can read the book [online](http://www.faqs.org/docs/artu/)) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 8, 2004 ### [The FxCop Blog](https://osherove.com/blog/2004/1/8/the-fxcop-blog.html) - Jan 8, 2004 ### [SOA reading list](https://osherove.com/blog/2004/1/8/soa-reading-list.html) - Dec 31, 2003 ### [Jan does cool stuff: nice article and cool extension to the winform data grid](https://osherove.com/blog/2003/12/31/jan-does-cool-stuff-nice-article-and-cool-extension-to-the-w.html) - Dec 29, 2003 ### [Risk Management](https://osherove.com/blog/2003/12/29/risk-management.html) --- title: "Moving to RSS Bandit: A simple review" url: "https://osherove.com/blog/2004/1/3/moving-to-rss-bandit-a-simple-review.md" canonical: "https://osherove.com/blog/2004/1/3/moving-to-rss-bandit-a-simple-review.html" published: "2004-01-03T21:47:00" updated: "2004-01-03T21:47:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "RSS Bandit is my new RSS aggregator.Yep. I just downloaded the latest build and decided that I'm gonna stick with it. I love sharpreader , but there's just too many features missing from it to me. What I like about RSS…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Moving to RSS Bandit: A simple review By Roy Osherove January 3, 2004 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published January 3, 2004; technical details may be outdated. [RSS Bandit](http://www.rssbandit.org/) is my new RSS aggregator.Yep. I just downloaded the latest build and decided that I'm gonna stick with it. I love [sharpreader](http://sharpreader.net/), but there's just too many features missing from it to me. What I like about RSS Bandit: - For starters, I can now start flagging away posts I find interesting so that I can blog about them at a later date(SR also has a "lock item" function, but it's just not the same). The nice thing is that there are several types of "flags" such as "read", "forward" and so on. Anyway, it's cool and I like it. - Second of all, the interface usability has been enhanced and the "feature" that used to halt the program when ever feed updates would be processed is now only a small glitch every now and again. Much better. - Third, I can post comments from within the program(to most blogs) - Fourth, it's gonna have [Search Folders](http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=d6fe352b-85e2-482e-a4af-7552eceb412b) - Fifth, You can customize the appearance of a post from some nice looking XSLT renderers - Sixth, it has Tabbed browsing and a hideaway feed tree These were the features I like. Here's what I'm missing: - The Feed tree can only be widened to a certain extent. Why is that? - Posting to my blog from it - a "blog about this item" feature which automatically asks you what parts of the item you'd like to be inserted into the new blog post (title,author name, quoted text...) - I can't wait for the [search folders](http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=d6fe352b-85e2-482e-a4af-7552eceb412b)! - Pressing space while reading a long blog post does not scroll the explorer pane of the post(unless it is focused), but automatically takes you to the next unread post. I wish that would behave like SR where it would scroll the post until it ends and only then take you to the next one - I wish there was an ability to choose whether you can order the feed tree alphabetically or by a distinct order the user wants (like SR) - For some reason, some of the posts are blue and some not. What does that mean? - I'd like to know how far down the feed list is the updating process when I press the "update all feeds" (a simple XX feeds left to update should do) - Why is there a whole panel just for search when all there is is just a small text box? Why not simply put that box on the main tool bar? - While we're at it, entering text in the search box  and pressing enter should automatically run search( i.e the Search Button should be the default button when the text box is active) - I'd like to be able to set the default update rate for a category(which will impact all feeds in it) and not just for the whole feeds globally using the main options dialog - NO RSS aggregator I've seen yet has been able to do this simple task: in the main .Net weblogs feed, show the name of the post author\\Blog name next to the post title. Is this information simply missing from the feed? If not, how hard would it be to implement this? - I'd like to be able to setup the viewer pane to the right, and the posts pane to the bottom left (like in outlook's 2003 default view or like [FeedDemon](http://www.bradsoft.com/feeddemon/index.asp)) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jan 10, 2004 ### [\[Tool\] Easier log parsing with Log Parser](https://osherove.com/blog/2004/1/10/tool-easier-log-parsing-with-log-parser.html) - Jan 8, 2004 ### [The Regulator Wiki](https://osherove.com/blog/2004/1/8/the-regulator-wiki.html) - Dec 28, 2003 ### [MyRss.com is to Feedable as...](https://osherove.com/blog/2003/12/28/myrsscom-is-to-feedable-as.html) - Dec 27, 2003 ### [Code: CRUD base classes for unit testing](https://osherove.com/blog/2003/12/27/code-crud-base-classes-for-unit-testing.html) --- title: "Query Analyzer Tricks" url: "https://osherove.com/blog/2004/1/2/query-analyzer-tricks.md" canonical: "https://osherove.com/blog/2004/1/2/query-analyzer-tricks.html" published: "2004-01-02T08:40:00" updated: "2004-01-02T08:40:00" tags: ["Cool Articles", "Tips & Tricks"] author: "Roy Osherove" description: "Here are some small cool tips from SQLServerCentral : Query Analyzer Tricks (note: you need to register on the site, but registration is free)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Query Analyzer Tricks By Roy Osherove January 2, 2004 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published January 2, 2004; technical details may be outdated. Here are some small cool tips from [SQLServerCentral](http://www.sqlservercentral.com/): [Query Analyzer Tricks](http://www.sqlservercentral.com/columnists/sjones/queryanalyzertricks.asp) (note: you need to register on the site, but registration is free) ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Jan 8, 2004 ### [SOA reading list](https://osherove.com/blog/2004/1/8/soa-reading-list.html) - Jan 3, 2004 ### [Some cool links](https://osherove.com/blog/2004/1/3/some-cool-links.html) - Dec 31, 2003 ### [Jan does cool stuff: nice article and cool extension to the winform data grid](https://osherove.com/blog/2003/12/31/jan-does-cool-stuff-nice-article-and-cool-extension-to-the-w.html) - Dec 29, 2003 ### [Another article of mine published on MSDN: Search Dynamically for Plug-Ins](https://osherove.com/blog/2003/12/29/another-article-of-mine-published-on-msdn-search-dynamically.html) --- title: "Another one bites the bullet: Santo has left the building" url: "https://osherove.com/blog/2003/12/31/another-one-bites-the-bullet-santo-has-left-the-building.md" canonical: "https://osherove.com/blog/2003/12/31/another-one-bites-the-bullet-santo-has-left-the-building.html" published: "2003-12-31T20:23:00" updated: "2003-12-31T20:23:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "My good friend Addy Santo just blogged about himself taking the red pill . \" Finally \" is all I can really say. This guy has \" Redmond \" tattooed on his butt, figuratively speaking, and It's about time MS faced up to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another one bites the bullet: Santo has left the building By Roy Osherove December 31, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 31, 2003; technical details may be outdated. My good friend [Addy Santo](http://weblogs.asp.net/ASanto/) just blogged about [himself taking the red pill](http://weblogs.asp.net/ASanto/archive/2003/12/31/46969.aspx). "**Finally**" is all I can really say. This guy has "_Redmond_" tattooed on his butt, figuratively speaking, and It's about time MS faced up to the fact that, hey, they could really use someone as resourceful and creative as Addy. I'm left with a sinking sensation, however, that Addy will more or less disappear from the blogsphere as he will learn a million new things, and won't have the time to tell us about it. As I write this, fireworks are exploding about 200 meters from me out in the main street of Flore Norway. Congratulations Addy. You could not have picked better timing :) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jan 9, 2004 ### [Shame on me](https://osherove.com/blog/2004/1/9/shame-on-me.html) - Jan 8, 2004 ### [The FxCop Blog](https://osherove.com/blog/2004/1/8/the-fxcop-blog.html) - Dec 24, 2003 ### [New year's resolution: lowering the noise on the main feed (excluding this post :) )](https://osherove.com/blog/2003/12/24/new-years-resolution-lowering-the-noise-on-the-main-feed-exc.html) - Dec 24, 2003 ### [Visualizing blogs](https://osherove.com/blog/2003/12/24/visualizing-blogs.html) --- title: "Jan does cool stuff: nice article and cool extension to the winform data grid" url: "https://osherove.com/blog/2003/12/31/jan-does-cool-stuff-nice-article-and-cool-extension-to-the-w.md" canonical: "https://osherove.com/blog/2003/12/31/jan-does-cool-stuff-nice-article-and-cool-extension-to-the-w.html" published: "2003-12-31T17:15:00" updated: "2003-12-31T17:15:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Jan is on a role. First, his Object Spaces article got published on MSDN, then he releases the Extended Winforms DataGrid . Great work." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Jan does cool stuff: nice article and cool extension to the winform data grid By Roy Osherove December 31, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published December 31, 2003; technical details may be outdated. [Jan](http://weblogs.asp.net/jan/) is on a role. First, his [Object Spaces article](http://weblogs.asp.net/jan/archive/2003/12/31/46851.aspx) got published on MSDN, then he releases the [Extended Winforms DataGrid](http://weblogs.asp.net/jan/archive/2003/12/31/46872.aspx) . Great work. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 8, 2004 ### [SOA reading list](https://osherove.com/blog/2004/1/8/soa-reading-list.html) - Jan 3, 2004 ### [Some cool links](https://osherove.com/blog/2004/1/3/some-cool-links.html) - Dec 29, 2003 ### [Risk Management](https://osherove.com/blog/2003/12/29/risk-management.html) - Dec 28, 2003 ### [more SQL optimization resources and a bonus tip](https://osherove.com/blog/2003/12/28/more-sql-optimization-resources-and-a-bonus-tip.html) --- title: "[OT] This year in pictures" url: "https://osherove.com/blog/2003/12/31/ot-this-year-in-pictures.md" canonical: "https://osherove.com/blog/2003/12/31/ot-this-year-in-pictures.html" published: "2003-12-31T16:25:00" updated: "2003-12-31T16:25:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Wow. This is the most beautiful set of pictures I've seen in quite a while: The Year in pictures (via my darling wife who I miss so much it hurts as the year comes to a close here in Norway)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] This year in pictures By Roy Osherove December 31, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 31, 2003; technical details may be outdated. Wow. This is the most beautiful set of pictures I've seen in quite a while: [The Year in pictures](http://www.msnbc.com/modules/yip03/slideshow.asp?speed=lo) (via my darling wife who I miss so much it hurts as the year comes to a close here in Norway) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jan 3, 2004 ### [Moving to RSS Bandit: A simple review](https://osherove.com/blog/2004/1/3/moving-to-rss-bandit-a-simple-review.html) - Dec 31, 2003 ### [Another one bites the bullet: Santo has left the building](https://osherove.com/blog/2003/12/31/another-one-bites-the-bullet-santo-has-left-the-building.html) - Dec 30, 2003 ### [\[OT\] cool ad](https://osherove.com/blog/2003/12/30/ot-cool-ad.html) - Dec 30, 2003 ### [Losing a customer](https://osherove.com/blog/2003/12/30/losing-a-customer.html) --- title: "[OT] cool ad" url: "https://osherove.com/blog/2003/12/30/ot-cool-ad.md" canonical: "https://osherove.com/blog/2003/12/30/ot-cool-ad.html" published: "2003-12-30T15:45:00" updated: "2003-12-30T15:45:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Now this is a cool funny and true ad for a men's magazine: (and here are 9 more ads you won't see in the USA ) (via eclecticism )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] cool ad By Roy Osherove December 30, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 30, 2003; technical details may be outdated. Now this is a cool funny and true ad for a men's magazine: ![](https://osherove.com/img/wb/261127f2_www.adage.com_images_random_fhm1222_vid.jpg) (and here are [9 more ads you won't see in the USA](http://www.adage.com/news.cms?newsId=39422)) (via [eclecticism](http://www.michaelhanscom.com/eclecticism/2003/12/truth_in_advert.html)) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 31, 2003 ### [Another one bites the bullet: Santo has left the building](https://osherove.com/blog/2003/12/31/another-one-bites-the-bullet-santo-has-left-the-building.html) - Dec 31, 2003 ### [\[OT\] This year in pictures](https://osherove.com/blog/2003/12/31/ot-this-year-in-pictures.html) - Dec 30, 2003 ### [Losing a customer](https://osherove.com/blog/2003/12/30/losing-a-customer.html) - Dec 29, 2003 ### [How low can you go? Iran rejects Israel's help with earthquake](https://osherove.com/blog/2003/12/29/how-low-can-you-go-iran-rejects-israels-help-with-earthquake.html) --- title: "Losing a customer" url: "https://osherove.com/blog/2003/12/30/losing-a-customer.md" canonical: "https://osherove.com/blog/2003/12/30/losing-a-customer.html" published: "2003-12-30T12:09:00" updated: "2003-12-30T12:09:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It's always interesting (as in watching a car crash) to see how a company easily loses a customer. This time it's Numega." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Losing a customer By Roy Osherove December 30, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 30, 2003; technical details may be outdated. It's always interesting (as in watching a car crash) to see how a company easily loses a customer. [This time it's Numega.](http://www.eskimo.com/~jeremyk/archives/000137.html) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 31, 2003 ### [\[OT\] This year in pictures](https://osherove.com/blog/2003/12/31/ot-this-year-in-pictures.html) - Dec 30, 2003 ### [\[OT\] cool ad](https://osherove.com/blog/2003/12/30/ot-cool-ad.html) - Dec 29, 2003 ### [How low can you go? Iran rejects Israel's help with earthquake](https://osherove.com/blog/2003/12/29/how-low-can-you-go-iran-rejects-israels-help-with-earthquake.html) - Dec 28, 2003 ### [The Internet explorer security bug everyone should know about](https://osherove.com/blog/2003/12/28/the-internet-explorer-security-bug-everyone-should-know-abou.html) --- title: "Another article of mine published on MSDN: Search Dynamically for Plug-Ins" url: "https://osherove.com/blog/2003/12/29/another-article-of-mine-published-on-msdn-search-dynamically.md" canonical: "https://osherove.com/blog/2003/12/29/another-article-of-mine-published-on-msdn-search-dynamically.html" published: "2003-12-29T16:52:00" updated: "2003-12-29T16:52:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "Search Dynamically for Plug-Ins Summery: \"This article is an extension to my previous article about plug-ins . I encourage you to take a look at that before diving into this article. That said, my main goal in this…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another article of mine published on MSDN: Search Dynamically for Plug-Ins By Roy Osherove December 29, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published December 29, 2003; technical details may be outdated. [Search Dynamically for Plug-Ins](http://msdn.microsoft.com/asp.net/using/building/components/default.aspx?pull=/library/en-us/dnaspp/html/searchforplugins.asp) **Summery:** "This article is an extension to [my previous article about plug-ins](http://msdn.microsoft.com/asp.net/using/building/components/default.aspx?pull=/library/en-us/dnaspp/html/pluginframework.asp). I encourage you to take a look at that before diving into this article. That said, my main goal in this article is to rid the user of config files. The idea is to make sure that when your application loads, it can look through the .DLL files in its directory, find the ones that contain types supporting the **IPlugin** interface, and instantiate those plug-ins. No user intervention should be required, other than copying the .DLL file into the application's directory." I'm proud and flattered. Again, I'd like to thank [Kent Sharkey](http://weblogs.asp.net/ksharkey/) for helping me publish this. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 9, 2004 ### [IntelliJ IDEA blows my mind again](https://osherove.com/blog/2004/1/9/intellij-idea-blows-my-mind-again.html) - Jan 9, 2004 ### [Debugging Unit tests using the VS.net debugger](https://osherove.com/blog/2004/1/9/debugging-unit-tests-using-the-vsnet-debugger.html) - Dec 27, 2003 ### [Code: CRUD base classes for unit testing](https://osherove.com/blog/2003/12/27/code-crud-base-classes-for-unit-testing.html) - Dec 25, 2003 ### [My First \*real\* SQL optimization (and some good resources)](https://osherove.com/blog/2003/12/25/my-first-real-sql-optimization-and-some-good-resources.html) --- title: "How low can you go? Iran rejects Israel's help with earthquake" url: "https://osherove.com/blog/2003/12/29/how-low-can-you-go-iran-rejects-israels-help-with-earthquake.md" canonical: "https://osherove.com/blog/2003/12/29/how-low-can-you-go-iran-rejects-israels-help-with-earthquake.html" published: "2003-12-29T15:12:00" updated: "2003-12-29T15:12:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Gotta love the Iranian goverment: \"Jahanbakhsh Khanjani, a spokesman for Iran's Interior Ministry, said Saturday that Iran would accept aid from all countries of the world, aside from Israel . The announcement followed…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How low can you go? Iran rejects Israel's help with earthquake By Roy Osherove December 29, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 29, 2003; technical details may be outdated. Gotta love the Iranian goverment: _"Jahanbakhsh Khanjani, a spokesman for Iran's Interior Ministry, said Saturday that **Iran would accept aid from all countries of the world, aside from Israel**. The announcement followed statements by foreign correspondents in Jerusalem, who reported that the Foreign Ministry had said that unofficial Israeli sources were considering sending aid to Iran. "The Islamic Republic of Iran accepts all kinds of humanitarian aid from all countries and international organizations with the exception of the Zionist regime \[Israel\]," Khanjani said."_ \[[Haaretz online](http://www.haaretzdaily.com/hasen/spages/376370.html)\] [Listen to your people](http://aliparvaresh.com/posts/980.aspx) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 30, 2003 ### [\[OT\] cool ad](https://osherove.com/blog/2003/12/30/ot-cool-ad.html) - Dec 30, 2003 ### [Losing a customer](https://osherove.com/blog/2003/12/30/losing-a-customer.html) - Dec 28, 2003 ### [The Internet explorer security bug everyone should know about](https://osherove.com/blog/2003/12/28/the-internet-explorer-security-bug-everyone-should-know-abou.html) - Dec 28, 2003 ### [Help the Iran Quake victims](https://osherove.com/blog/2003/12/28/help-the-iran-quake-victims.html) --- title: "Risk Management" url: "https://osherove.com/blog/2003/12/29/risk-management.md" canonical: "https://osherove.com/blog/2003/12/29/risk-management.html" published: "2003-12-29T14:56:00" updated: "2003-12-29T14:56:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Darrel points to the MSF Risk Management Discipline . Indeed, this is something I believe to be very important, however, I did not put my money where my mouth is, and although I've read about it , I never got the chance…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Risk Management By Roy Osherove December 29, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published December 29, 2003; technical details may be outdated. [Darrel](http://dotnetjunkies.com/WebLog/darrell.norton) [points](http://dotnetjunkies.com/WebLog/darrell.norton/posts/4984.aspx) to the [MSF Risk Management Discipline](http://www.microsoft.com/technet/treeview/default.asp?url=/technet/itsolutions/tandp/innsol/msfrl/msrmd11.asp). Indeed, this is something I believe to be very important, however, I did not put my money where my mouth is, and although I've [read about it](https://www.amazon.com/exec/obidos/ASIN/1556159005/iserializable-20), I never got the chance to actually practice it. Ah, live and learn. I'll be reading this in the next couple of days, but I've already learned to trust that what [Darrel](http://dotnetjunkies.com/WebLog/darrell.norton) recommends is probably, well... recommended. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jan 3, 2004 ### [Some cool links](https://osherove.com/blog/2004/1/3/some-cool-links.html) - Dec 31, 2003 ### [Jan does cool stuff: nice article and cool extension to the winform data grid](https://osherove.com/blog/2003/12/31/jan-does-cool-stuff-nice-article-and-cool-extension-to-the-w.html) - Dec 28, 2003 ### [more SQL optimization resources and a bonus tip](https://osherove.com/blog/2003/12/28/more-sql-optimization-resources-and-a-bonus-tip.html) - Dec 27, 2003 ### [New year's Nant, pathetic geek style](https://osherove.com/blog/2003/12/27/new-years-nant-pathetic-geek-style.html) --- title: "more SQL optimization resources and a bonus tip" url: "https://osherove.com/blog/2003/12/28/more-sql-optimization-resources-and-a-bonus-tip.md" canonical: "https://osherove.com/blog/2003/12/28/more-sql-optimization-resources-and-a-bonus-tip.html" published: "2003-12-28T23:25:00" updated: "2003-12-28T23:25:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Michal suggests a few more SQL optimization links in return for my optimization experience : sql-server-performance.com SQL Server 2000 Performance Tuning Tools Performance Category on SQLTeam.com Performance Tuning…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # more SQL optimization resources and a bonus tip By Roy Osherove December 28, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published December 28, 2003; technical details may be outdated. [Michal suggests a few more](http://blog.vyvojar.cz/michal/posts/383.aspx) SQL optimization links in return for my [optimization experience](http://weblogs.asp.net/rosherove/articles/OptimizingExperience.aspx): - [sql-server-performance.com](http://www.sql-server-performance.com/) - [SQL Server 2000 Performance Tuning Tools](http://www.sqlteam.com/item.asp?ItemID=761) - [Performance Category on SQLTeam.com](http://www.sqlteam.com/FilterTopics.asp?TopicID=103) - [Performance Tuning articles on SSWUG.ORG](http://www.sswug.org/searchresults.asp?keywordstofind2=performance%20tuning) - [SQL Server Center](http://www.sswug.org/centersql), [Oracle Center](http://www.sswug.org/centeroracle), [DB2 Center](http://www.sswug.org/centerdb2) - SSWUG.ORG (SQL Server Worldwide User's Group), [SSWUG RSS](http://web2rss.vyvojar.cz/rss/283.xml) via [WEB2RSS](http://web2rss.vyvojar.cz/) Also, [Kyls](http://kylecordes.com/) writes: _"I wish there was an option to tell SQL Server "No matter what, never table scan a table with more than a million rows; if you come up with a plan that does that, punt and throw an error message instead, so a DBA can fix it, rather than pound on a production database for 10 minutes straight"_ to which [Darrel](http://dotnetjunkies.com/weblog/darrell.norton/) Responds: _"Kyle, there is something similar to what you are asking for. Check out the Query Governor Cost Limit Option for SQL Server configuration: (_[_http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adminsql/ad\_config\_73u6.asp_](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adminsql/ad_config_73u6.asp)_)._ " ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Dec 31, 2003 ### [Jan does cool stuff: nice article and cool extension to the winform data grid](https://osherove.com/blog/2003/12/31/jan-does-cool-stuff-nice-article-and-cool-extension-to-the-w.html) - Dec 29, 2003 ### [Risk Management](https://osherove.com/blog/2003/12/29/risk-management.html) - Dec 27, 2003 ### [New year's Nant, pathetic geek style](https://osherove.com/blog/2003/12/27/new-years-nant-pathetic-geek-style.html) - Dec 24, 2003 ### [Good stuff: New book, Remoting for imbeciles,CodeSmith 2.5 RC1, and OMG 0.2](https://osherove.com/blog/2003/12/24/good-stuff-new-book-remoting-for-imbecilescodesmith-25-rc1-a.html) --- title: "The Internet explorer security bug everyone should know about" url: "https://osherove.com/blog/2003/12/28/the-internet-explorer-security-bug-everyone-should-know-abou.md" canonical: "https://osherove.com/blog/2003/12/28/the-internet-explorer-security-bug-everyone-should-know-abou.html" published: "2003-12-28T16:16:00" updated: "2003-12-28T16:16:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Luke Hutterman shows just how easy and evil it is to exploit this bug in Internet Explorer and take details from unsuspecting users with a click of a mouse. This scam makes you \"update your paypal account details\" but…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Internet explorer security bug everyone should know about By Roy Osherove December 28, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 28, 2003; technical details may be outdated. [Luke Hutterman](http://www.hutteman.com/weblog/) shows just [how easy and evil it is](http://www.hutteman.com/weblog/2003/12/28-151.html) to exploit [this bug in Internet Explorer](http://www.zapthedingbat.com/security/ex01/vun1.htm) and take details from unsuspecting users with a click of a mouse. This scam makes you "update your paypal account details" but could easily be any other number of things. scary. Please, [Learn about this bug](http://www.zapthedingbat.com/security/ex01/vun1.htm) and be careful what you click on! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 30, 2003 ### [Losing a customer](https://osherove.com/blog/2003/12/30/losing-a-customer.html) - Dec 29, 2003 ### [How low can you go? Iran rejects Israel's help with earthquake](https://osherove.com/blog/2003/12/29/how-low-can-you-go-iran-rejects-israels-help-with-earthquake.html) - Dec 28, 2003 ### [Help the Iran Quake victims](https://osherove.com/blog/2003/12/28/help-the-iran-quake-victims.html) - Dec 28, 2003 ### [This coffin has performed an illegal action and will be terminated](https://osherove.com/blog/2003/12/28/this-coffin-has-performed-an-illegal-action-and-will-be-term.html) --- title: "MyRss.com is to Feedable as..." url: "https://osherove.com/blog/2003/12/28/myrsscom-is-to-feedable-as.md" canonical: "https://osherove.com/blog/2003/12/28/myrsscom-is-to-feedable-as.html" published: "2003-12-28T15:47:00" updated: "2003-12-28T15:47:00" tags: ["Cool Tools", "Cool sites"] author: "Roy Osherove" description: "Well, I'm totally impressed. MyRSS.com (link via Cameron ) are offering the same service as Feedable , only they have an advantage: They automatically create the RSS feed on the fly from the site you give them, whereas…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MyRss.com is to Feedable as... By Roy Osherove December 28, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published December 28, 2003; technical details may be outdated. Well, I'm totally impressed. [MyRSS.com](http://www.myrss.com/) (link via [Cameron](http://weblogs.asp.net/cameronreilly/archive/2003/12/28/46190.aspx)) are offering the same service as [Feedable](http://royo.is-a-geek.com/SiteFeeder/), only they have an advantage: They **automatically** create the RSS feed on the fly from the site you give them, whereas Feedable is actually manual labor. I'm impressed. I tried throwing them [iserializable.com](http://www.iserializable.com/) and it worked beautifully recognizing the RSS headers. One con: the RSS feed contains commercials that appear for like 10 -15 seconds before the actual RSS content appears. If you wanna remove that you have to "sponsor" the channel. Still the idea is very cool and I do wonder how they recognize the headers. It's not perfect tho. Throwing them a [Hebrew news site](http://www.maariv.co.il/) gave me an empty RSS feed, but I did not expect for it to work either. The nice this is that someone has been able to come up with some sort of economical model for this idea which is fine. [Feedable](http://royo.is-a-geek.com/SiteFeeder/) is merely a proof of concept of an [article I've written](http://msdnaa.net/Resources/display.aspx?ResID=2324) and was never intended to be an all encompassing solution (well, at least not at first). ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jan 8, 2004 ### [The Regulator Wiki](https://osherove.com/blog/2004/1/8/the-regulator-wiki.html) - Jan 3, 2004 ### [Moving to RSS Bandit: A simple review](https://osherove.com/blog/2004/1/3/moving-to-rss-bandit-a-simple-review.html) - Dec 27, 2003 ### [Code: CRUD base classes for unit testing](https://osherove.com/blog/2003/12/27/code-crud-base-classes-for-unit-testing.html) - Dec 27, 2003 ### [New year's Nant, pathetic geek style](https://osherove.com/blog/2003/12/27/new-years-nant-pathetic-geek-style.html) --- title: "Help the Iran Quake victims" url: "https://osherove.com/blog/2003/12/28/help-the-iran-quake-victims.md" canonical: "https://osherove.com/blog/2003/12/28/help-the-iran-quake-victims.html" published: "2003-12-28T01:22:00" updated: "2003-12-28T01:22:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I can't explain why I have not blogged about this before, but if you can help in any way to the Iran quake victims, please do . In the link you will find ways to send donations." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Help the Iran Quake victims By Roy Osherove December 28, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 28, 2003; technical details may be outdated. I can't explain why I have not blogged about this before, but if you can help in any way to the Iran quake victims, [please do](http://www.eyeranian.net/2003/12/26,627.shtml). In the link you will find ways to send donations. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 29, 2003 ### [How low can you go? Iran rejects Israel's help with earthquake](https://osherove.com/blog/2003/12/29/how-low-can-you-go-iran-rejects-israels-help-with-earthquake.html) - Dec 28, 2003 ### [The Internet explorer security bug everyone should know about](https://osherove.com/blog/2003/12/28/the-internet-explorer-security-bug-everyone-should-know-abou.html) - Dec 28, 2003 ### [This coffin has performed an illegal action and will be terminated](https://osherove.com/blog/2003/12/28/this-coffin-has-performed-an-illegal-action-and-will-be-term.html) - Dec 24, 2003 ### [New year's resolution: lowering the noise on the main feed (excluding this post :) )](https://osherove.com/blog/2003/12/24/new-years-resolution-lowering-the-noise-on-the-main-feed-exc.html) --- title: "This coffin has performed an illegal action and will be terminated" url: "https://osherove.com/blog/2003/12/28/this-coffin-has-performed-an-illegal-action-and-will-be-term.md" canonical: "https://osherove.com/blog/2003/12/28/this-coffin-has-performed-an-illegal-action-and-will-be-term.html" published: "2003-12-28T01:05:00" updated: "2003-12-28T01:05:00" tags: ["Off Topic"] author: "Roy Osherove" description: "That's just what I need: a coffin powered by a PC to change the epitaph dynamically. Can there be more jokes running in my head at the same time?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # This coffin has performed an illegal action and will be terminated By Roy Osherove December 28, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 28, 2003; technical details may be outdated. That's just what I need: [a coffin powered by a PC](http://www.michaelhanscom.com/eclecticism/2003/12/talk_about_geek.html) to change the epitaph dynamically. Can there be more jokes running in my head at the same time? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 28, 2003 ### [The Internet explorer security bug everyone should know about](https://osherove.com/blog/2003/12/28/the-internet-explorer-security-bug-everyone-should-know-abou.html) - Dec 28, 2003 ### [Help the Iran Quake victims](https://osherove.com/blog/2003/12/28/help-the-iran-quake-victims.html) - Dec 24, 2003 ### [New year's resolution: lowering the noise on the main feed (excluding this post :) )](https://osherove.com/blog/2003/12/24/new-years-resolution-lowering-the-noise-on-the-main-feed-exc.html) - Dec 24, 2003 ### [Visualizing blogs](https://osherove.com/blog/2003/12/24/visualizing-blogs.html) --- title: "Code: CRUD base classes for unit testing" url: "https://osherove.com/blog/2003/12/27/code-crud-base-classes-for-unit-testing.md" canonical: "https://osherove.com/blog/2003/12/27/code-crud-base-classes-for-unit-testing.html" published: "2003-12-27T23:13:00" updated: "2003-12-27T23:13:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "I never felt comfortable with doing unit tests against live database, alas, I feel it is a necessary evil to contend with, because the feedback you get is much more helpful than using Mock objects for such a task, I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Code: CRUD base classes for unit testing By Roy Osherove December 27, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published December 27, 2003; technical details may be outdated. I never felt comfortable with doing unit tests against live database, alas, I feel it is a necessary evil to contend with, because the feedback you get is much more helpful than using Mock objects for such a task, I mean, c'mon, you need to test that you actually got something into the database, right? anyway, if there's one thing I noticed is that you get a lot of repetitive code in the unit tests. Usually, I'll  have a class in the data layer that acts as the table manager, allowing basic CRUD work (Create,Retrieve,Update,Delete), and my tests against that class will usually look very much the same: - Insert a record and make sure you get an id - make sure the ID is in the DB - make sure all the inserted values are in the DB - Update - make sure all updated values are in the db - delete - make sure record is not in database - and so on... If there's one thing _Test driven development_ tells you to do it's to refactor the tests after they pass, and so much repetition just seems like a lovely thing to to refactor. so much that  I could not help myself. So, I created  this: [CRUD base classes for unit testing](http://royo.is-a-geek.com/ISerializable/admin/Portal/LinkClick.aspx?tabid=1&table=Links&field=ItemID&id=38&link=CRUDTesting.zip) The crud base classes are contrived of four base classes: - **DataManager**: a class to derive from to implement a simple table data manager class that has CRUD ability through simple Update(dataset) method - **SimpleCRUDTestFixture**: allows you to do simple CRUD tests on a given DataManager class automatically (will test and assert CRUD using the dataset) - **CRUDTestFixture**: derived from SimpleCRUDTestFixture and forces the derived classes to implement manual Insert,Update and delete methods against any tested object(like a recipe that tells you what to test next), yet it does all the grunt work of testing if the methods you implement really succeed. For example, It will force you to implement an InsertDefaultRecord method, which should return the ID of the newly created record in the database, after that , tests will automatically assert that the record is indeed in the database. The same goes for Updates and deletes. So basically, what it does, it is makes you create methods in your test class that test a data manager class and return the outcome for processing in the base class, where all the tests are performed. See the samples for how to do this, very simple and easy. - **TableRelationDataTest**: Derive from this class to automatically test foreign key relationships between two tables. This is perfect if you have a table that has a foreign key to a lookup table of values. The base class will automatically test that all the lookup values can actually be inserted into the primary table, and that non lookup values cannot be inserted. The beauty is, there is not one line of code needed for this to be tested. only a few simple properties need to be set in the derived class. In the zip file you will find the base classes (in VB.NET) that I use in my development, with samples that derive from them.  hope this helps you in your development, and I would love to hear ideas how to enhance this. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jan 9, 2004 ### [Debugging Unit tests using the VS.net debugger](https://osherove.com/blog/2004/1/9/debugging-unit-tests-using-the-vsnet-debugger.html) - Dec 29, 2003 ### [Another article of mine published on MSDN: Search Dynamically for Plug-Ins](https://osherove.com/blog/2003/12/29/another-article-of-mine-published-on-msdn-search-dynamically.html) - Dec 25, 2003 ### [My First \*real\* SQL optimization (and some good resources)](https://osherove.com/blog/2003/12/25/my-first-real-sql-optimization-and-some-good-resources.html) - Dec 20, 2003 ### [Problem and solution: Renaming htm file to aspx may cause javascript trouble](https://osherove.com/blog/2003/12/20/problem-and-solution-renaming-htm-file-to-aspx-may-cause-jav.html) --- title: "New year's Nant, pathetic geek style" url: "https://osherove.com/blog/2003/12/27/new-years-nant-pathetic-geek-style.md" canonical: "https://osherove.com/blog/2003/12/27/new-years-nant-pathetic-geek-style.html" published: "2003-12-27T21:57:00" updated: "2003-12-27T21:57:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "It's no wonder that I'm sitting here right now, in front of the computer, about to write about the new release of Nant( 0.84 final ), while on the outside, the \"party of parties\" is going on a block from the office, to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New year's Nant, pathetic geek style By Roy Osherove December 27, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published December 27, 2003; technical details may be outdated. It's no wonder that I'm sitting here right now, in front of the computer, about to write about the new release of Nant([0.84 final](http://sourceforge.net/project/showfiles.php?group_id=31650)), while on the outside, the "party of parties" is going on a block from the office, to celebrate the new year in Flore, Norway, my hometown until the end of January. Once a year, Flore has the "party of parties" to celebrate the Xmas and the new year. This year was no exception. However, the logistics of the thing are pretty weird. First, there is basically just one party. Sure, lots of small places are open, but this is the one party that will probably hold 90% of all partiers in the region. The thing is, it looks more like a high school graduation. You have to buy the tickets a few days in advance (at outrageous prices). At around 19:00 the door opens at a dance pub called "windjammer". **it's boys night out**. no girls. but there are strippers(yes my wife knows). At the same time the girls have their own party **in a different place** where they get male strippers as well. at around 23.00 both parties , boys and girls, leave the pubs (as they are closing) and go to the city cinema, where a joined party is held. yes, that's right. The boys and girls get drunk and horny on their own, and then they go and meet each other on the cinema dance floor. Lots of music, and boy can Norwegians get drunk! Anyway, I return to the fact that it's no wonder that I'm here writing this while the party at the cinema is going on. It's no wonder because, like a true geek, I don't feel like myself at that party. I don't know anyone(except two folks who I work with, but they work too drunk to be hospitable ;)  ), don't know the language and the DJ kept screaming loudly in Norwegian which, apparently, was a pretty good joke because everyone answered back with a different Norwegian proverb which only Scandinavian folks would know. I went back to the only place that feels safe and familiar. know the feeling? So. Here I am, checking the weblogs, announcing [Nant](http://sourceforge.net/project/showfiles.php?group_id=31650) (link via [Sam](http://samgentile.com/blog/archive/2003/12/27/11003.aspx)) attempting not  to sound too pathetic. But I guess it's too late for that , isn't it? ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Dec 29, 2003 ### [Risk Management](https://osherove.com/blog/2003/12/29/risk-management.html) - Dec 28, 2003 ### [more SQL optimization resources and a bonus tip](https://osherove.com/blog/2003/12/28/more-sql-optimization-resources-and-a-bonus-tip.html) - Dec 24, 2003 ### [Good stuff: New book, Remoting for imbeciles,CodeSmith 2.5 RC1, and OMG 0.2](https://osherove.com/blog/2003/12/24/good-stuff-new-book-remoting-for-imbecilescodesmith-25-rc1-a.html) - Dec 24, 2003 ### [Good Article: Strong Names and Security in the .NET Framework](https://osherove.com/blog/2003/12/24/good-article-strong-names-and-security-in-the-net-framework.html) --- title: "Cool handy site: DropLoad" url: "https://osherove.com/blog/2003/12/27/cool-handy-site-dropload.md" canonical: "https://osherove.com/blog/2003/12/27/cool-handy-site-dropload.html" published: "2003-12-27T14:54:00" updated: "2003-12-27T14:54:00" tags: ["Cool Tools", "Cool sites"] author: "Roy Osherove" description: "This is another very handy site. Not everyone has an FTP site to upload files for their friends and sometimes hotmail's 1MB size limit just doesn't cut it. The site below will hold the file for 48 hours (and 48 hours…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool handy site: DropLoad By Roy Osherove December 27, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published December 27, 2003; technical details may be outdated.

This is another very handy site.  Not everyone has an FTP site to upload files for their friends and sometimes hotmail's 1MB size limit just doesn't cut it.  The site below will hold the file for 48 hours (and 48 hours only) and you can email the link out to everyone you want to send it to.

Go to Dropload and drop a load of bites with an email address, and it sends an email to the recipient to come pick up the load. Free and free of the limitations of email servers.

[via Lessig Blog]
\[via [Sirsha](http://hdconsultants.us/posts/347.aspx)\] Need I say more? I can't even count the number of times I needed something like this. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Dec 27, 2003 ### [Code: CRUD base classes for unit testing](https://osherove.com/blog/2003/12/27/code-crud-base-classes-for-unit-testing.html) - Dec 27, 2003 ### [New year's Nant, pathetic geek style](https://osherove.com/blog/2003/12/27/new-years-nant-pathetic-geek-style.html) - Dec 24, 2003 ### [Good stuff: New book, Remoting for imbeciles,CodeSmith 2.5 RC1, and OMG 0.2](https://osherove.com/blog/2003/12/24/good-stuff-new-book-remoting-for-imbecilescodesmith-25-rc1-a.html) - Dec 23, 2003 ### [Tool: The complete idiot's add-in for signing your assemblies with a strong name](https://osherove.com/blog/2003/12/23/tool-the-complete-idiots-add-in-for-signing-your-assemblies.html) --- title: "My First *real* SQL optimization (and some good resources)" url: "https://osherove.com/blog/2003/12/25/my-first-real-sql-optimization-and-some-good-resources.md" canonical: "https://osherove.com/blog/2003/12/25/my-first-real-sql-optimization-and-some-good-resources.html" published: "2003-12-25T21:23:00" updated: "2003-12-25T21:23:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "Yeah, I know how to design a database and normalize tables, but this is some optimization stuff I never had to do. It was fun! We recently encountered the task of optimizing a stored procedure that was taking very long…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My First \*real\* SQL optimization (and some good resources) By Roy Osherove December 25, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published December 25, 2003; technical details may be outdated. Yeah, I know how to design a database and normalize tables, but this is some optimization stuff I never had to do. It was fun! We recently encountered the task of optimizing a stored procedure that was taking very long to perform its business. It wasn’t that complicated but it was operating on a large table (350,000 records). The table has indexes on the columns in the select clauses but the procedure still took about 19 seconds to do its work.  (Thanks for the help, [Santo](http://weblogs.asp.net/asanto)!) [Some interesting lessons (and resources) came up from this experience](http://weblogs.asp.net/rosherove/articles/OptimizingExperience.aspx)(article) And here are some very good resources on optimization in SQL server: 1.   [SQL Server execution plan analysis](http://www.sql-server-performance.com/query_execution_plan_analysis.asp) 2. [Tips for Using SQL Server Query Analyzer](http://www.sql-server-performance.com/query_analyzer_tips.asp) 3. [The Best SQL server performance tuning tips from SQLTeam](http://www.sql-server-performance.com/best_sql_server_performance_tips.asp) (some amazing stuff here!) 4. [Identifying performance issues using SQL Server Profiler](http://vyaskn.tripod.com/analyzing_profiler_output.htm) 5. [SQL Server Performance - Common Symptoms and Tools (Part I)](http://www.sqljunkies.com/Tutorial/7F8518F9-FDAA-4FF3-8FC5-25E8946C8D0C.scuk) 6. [Inside SQL Server: Parse, Compile, and Optimize (intro to the query processor)](http://www.sqlmag.com/Articles/Index.cfm?ArticleID=7446) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 29, 2003 ### [Another article of mine published on MSDN: Search Dynamically for Plug-Ins](https://osherove.com/blog/2003/12/29/another-article-of-mine-published-on-msdn-search-dynamically.html) - Dec 27, 2003 ### [Code: CRUD base classes for unit testing](https://osherove.com/blog/2003/12/27/code-crud-base-classes-for-unit-testing.html) - Dec 20, 2003 ### [Problem and solution: Renaming htm file to aspx may cause javascript trouble](https://osherove.com/blog/2003/12/20/problem-and-solution-renaming-htm-file-to-aspx-may-cause-jav.html) - Dec 19, 2003 ### [Service announcement: Feedable and Regulator live again, and Norway tips](https://osherove.com/blog/2003/12/19/service-announcement-feedable-and-regulator-live-again-and-n.html) --- title: "An optimizing experience" url: "https://osherove.com/blog/2003/12/25/an-optimizing-experience.md" canonical: "https://osherove.com/blog/2003/12/25/an-optimizing-experience.html" published: "2003-12-25T21:19:00" updated: "2003-12-25T21:19:00" tags: ["Other"] author: "Roy Osherove" description: "We recently encountered the task of optimizing a stored procedure that was taking very long to perform its business. It wasn’t that complicated but it was operating on a large table (350,000 records). The table has…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # An optimizing experience By Roy Osherove December 25, 2003 In [Other](https://osherove.com/blog/category/other) **Historical article** · Originally published December 25, 2003; technical details may be outdated. We recently encountered the task of optimizing a stored procedure that was taking very long to perform its business. It wasn’t that complicated but it was operating on a large table (350,000 records). The table has indexes on the columns in the select clauses but the procedure still took about 19 seconds to do its work. The first thing I did was open the procedure up in the query analyzer and show it’s execution plan(CTRL-K) (see more about how to use this tool on the bottom). It was clear that there were two tables on which doing the selection on was taking about 89€ of the total work, so that’s where I went to work. Although I’m **not** and SQL guru, I do _know people_ who know their stuff when it comes to these things. Optimizing proceduresis something I almost never had the pleasure of doing and so I contacted [Addy Santo](http://weblogs.asp.net/asanto) along with all the gory details. Thanks Santo, you saved the day. Anyway, Addy was able to point out where to start looking for performance problems: In short, he found two major problems in the procedure: 1. using the **Coalesce** function was the most problematic feature Use of  this function in the procedure prevented the query optimizer in SQL server from doing its job. In general, we need to stay clear of doing function on column names inside SELECTs because then the query cannot use an index to do the searching, and it will be much slower. The function was used because one could choose to send or not send any parameters to the procedure (which was a report based on countries and so on). If no parameter was sent, the report would bring back data from all the countries in the database. **Fix:** Changing this coalesce call into a simple IF statement made all the difference. Here’s an example: WHERE       fwu.budgetno = 1 AND fwu.country = coalesce(@country, fwu.country) **Turns into** WHERE       fwu.budgetno = 1 AND **(@country IS NULL OR fwu.country = @country)** **Changing all the coalesce functions in the procedure into this syntax reduced the execution time from 17 seconds to about 5 seconds.** 2. The procedure was using a lot of right() and left() functions inside the SELECT clause. Using the _right_ and _left_ functions to calculate values out of columns at query time is also a performance hit and can prevent the query optimizer from using the clustered indexes on the table if they exist. There are a few places in which the left part or the right part of the period column is checked against a different column’s left or right evaluations. This is an expansive procedure and should be minimized. Addy came up with a good way to avoid this: Use a calculated column which is also indexed in the table. **Fix:** ·        Add a calculated column to the _table_ o       Make the formula of the column int (left(\[_ColumnName_\],4)) o       Add this column into the clustered index ·        After you have added the columns, replace each reference to the left or right functions on these columns into a simple check using the new column names. ·        Verify that the cluster statistics for the new columns are generated (this adds speed to the query) o       Open query analyzer and point to the database on which the query is located o       Make sure the “Show Execution plan” option is selected (Query->show execution plan) o       Run the procedure in the query analyzer and open the execution plan tab on the bottom o       Look for text in the plan that is written in RED LETTERS o       If you do not see such text, that means all is well. o       If you do find such text, hover your mouse over the icon. You will see a message telling you to update the missing statistics for the table o       Right click and select “add missing statistics” o       Selected the new columns you have just created and click update ·        After all these steps you should gain another 2 seconds or so. ### Resouerces Here are some resources to learn how to use the execution plan feature of SQL server: 1.   [SQL Server execution plan analysis](http://www.sql-server-performance.com/query_execution_plan_analysis.asp) 2. [Tips for Using SQL Server Query Analyzer](http://www.sql-server-performance.com/query_analyzer_tips.asp) 3. [The Best SQL server performance tuning tips from SQLTeam](http://www.sql-server-performance.com/best_sql_server_performance_tips.asp) (some amazing stuff here!) 4. [Identifying performance issues using SQL Server Profiler](http://vyaskn.tripod.com/analyzing_profiler_output.htm) 5. [SQL Server Performance - Common Symptoms and Tools (Part I)](http://www.sqljunkies.com/Tutorial/7F8518F9-FDAA-4FF3-8FC5-25E8946C8D0C.scuk) 6. [Inside SQL Server: Parse, Compile, and Optimize (intro to the query processor)](http://www.sqlmag.com/Articles/Index.cfm?ArticleID=7446) ## More in Other [All posts in Other](https://osherove.com/blog/category/other) - Feb 17, 2004 ### [Make your .Net application support scripting - a practical approach](https://osherove.com/blog/2004/2/17/make-your-net-application-support-scripting-a-practical-appr.html) - Jan 17, 2004 ### [Learning from mistakes: the Don Quixote pattern](https://osherove.com/blog/2004/1/17/learning-from-mistakes-the-don-quixote-pattern.html) - Oct 30, 2003 ### [Easy Proxy handling through the ProxyFactory and ProxyInfo classes](https://osherove.com/blog/2003/10/30/easy-proxy-handling-through-the-proxyfactory-and-proxyinfo-c.html) - Sep 9, 2003 ### [My favorites in OPML](https://osherove.com/blog/2003/9/9/my-favorites-in-opml.html) --- title: "Good stuff: New book, Remoting for imbeciles,CodeSmith 2.5 RC1, and OMG 0.2" url: "https://osherove.com/blog/2003/12/24/good-stuff-new-book-remoting-for-imbecilescodesmith-25-rc1-a.md" canonical: "https://osherove.com/blog/2003/12/24/good-stuff-new-book-remoting-for-imbecilescodesmith-25-rc1-a.html" published: "2003-12-24T14:46:00" updated: "2003-12-24T14:46:00" tags: [".Net Quotations", "Cool Articles", "Cool Tools"] author: "Roy Osherove" description: "Julia Lerman points to a hearty recommendation for this book: Code Generation in .Net and I agree. It seems pretty cool. I'll add it to my \"really wish we celebrated Xmas\" list :) Leon Bambrick writes the Quick and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good stuff: New book, Remoting for imbeciles,CodeSmith 2.5 RC1, and OMG 0.2 By Roy Osherove December 24, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published December 24, 2003; technical details may be outdated. - [Julia Lerman](http://www.julialermaninc.com/blog/PermaLink.aspx?guid=b0e45ee9-5b41-4110-9b60-5cb2c9401e78) points to a hearty recommendation for this book: [Code Generation in .Net](https://www.amazon.com/exec/obidos/ASIN/1590591372/iserializable-20) and I agree. It seems pretty cool. I'll add it to my "really wish we celebrated Xmas" list :) - [Leon Bambrick](http://www16.brinkster.com/messydesk/db/index.asp) writes the [Quick and Dirty Guide to .Net Remoting](http://www16.brinkster.com/messydesk/db/QAD_Remoting.asp) - [Omer Van Kloeten](http://weblogs.asp.net/OKloeten/archive/2003/12/24/45751.aspx) released [Object Model Generator 0.2](http://spaz.ice.org/code/ObjectModelGenerator/) - [Eric J. Smith](http://weblogs.asp.net/ericjsmith/archive/2003/12/24/45748.aspx)  released [CodeSmith 2.5 RC1](http://www.ericjsmith.net/codesmith/getfile.aspx?id=11) and he's [asking for your assistance](http://weblogs.asp.net/ericjsmith/archive/2003/12/24/45748.aspx) in helping find bugs. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Dec 28, 2003 ### [more SQL optimization resources and a bonus tip](https://osherove.com/blog/2003/12/28/more-sql-optimization-resources-and-a-bonus-tip.html) - Dec 27, 2003 ### [New year's Nant, pathetic geek style](https://osherove.com/blog/2003/12/27/new-years-nant-pathetic-geek-style.html) - Dec 24, 2003 ### [Good Article: Strong Names and Security in the .NET Framework](https://osherove.com/blog/2003/12/24/good-article-strong-names-and-security-in-the-net-framework.html) - Dec 23, 2003 ### [Tool: The complete idiot's add-in for signing your assemblies with a strong name](https://osherove.com/blog/2003/12/23/tool-the-complete-idiots-add-in-for-signing-your-assemblies.html) --- title: "New year's resolution: lowering the noise on the main feed (excluding this post :) )" url: "https://osherove.com/blog/2003/12/24/new-years-resolution-lowering-the-noise-on-the-main-feed-exc.md" canonical: "https://osherove.com/blog/2003/12/24/new-years-resolution-lowering-the-noise-on-the-main-feed-exc.html" published: "2003-12-24T14:25:00" updated: "2003-12-24T14:25:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Now that Scott has implemented a feature in .Text that allows one to decide whether a particular post will be aggregated to the main feed or not, I'll be trying to take advantage of this and \"filter\" my off topic…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New year's resolution: lowering the noise on the main feed (excluding this post :) ) By Roy Osherove December 24, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 24, 2003; technical details may be outdated. Now that Scott has implemented a feature in .Text that allows one to decide whether a particular post will be aggregated to the main feed or not, I'll be trying to take advantage of this and "filter" my off topic postings from the main weblogs feed. Hopefully, I won't be the only one and together we can make the main feed contain less noise and more signal. Ironically, I'm posting **this post** on the main feed in order to bring all the blogger's attention to this feature. But, it's the last really off topic post that I'll be letting into the main feed from now on. I hope others will do the same. Thanks. God bless, and, as [Mike](http://www.larkware.com/Articles/TheDailyGrind256.html) says : "_Happy whatever to those of you who celebrate something**.**_**"** PS _If you don't know how to make a post appear only on your blog, here's how: when writing the post, open the "advanced options" bar on the bottom of the page and uncheck the last checkbox ("Include in aggregated site"). If you don't want to forget this when you need to, go to the Options->preferences tab and set "show ad vaned options" to "yes"_ ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jan 8, 2004 ### [The FxCop Blog](https://osherove.com/blog/2004/1/8/the-fxcop-blog.html) - Dec 31, 2003 ### [Another one bites the bullet: Santo has left the building](https://osherove.com/blog/2003/12/31/another-one-bites-the-bullet-santo-has-left-the-building.html) - Dec 24, 2003 ### [Visualizing blogs](https://osherove.com/blog/2003/12/24/visualizing-blogs.html) - Dec 23, 2003 ### [About the new .Netweblogs features](https://osherove.com/blog/2003/12/23/about-the-new-netweblogs-features.html) --- title: "Visualizing blogs" url: "https://osherove.com/blog/2003/12/24/visualizing-blogs.md" canonical: "https://osherove.com/blog/2003/12/24/visualizing-blogs.html" published: "2003-12-24T14:13:00" updated: "2003-12-24T14:13:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Question: What on earth is this ?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Visualizing blogs By Roy Osherove December 24, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 24, 2003; technical details may be outdated.

Question: What on earth is this?

## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Dec 31, 2003 ### [Another one bites the bullet: Santo has left the building](https://osherove.com/blog/2003/12/31/another-one-bites-the-bullet-santo-has-left-the-building.html) - Dec 24, 2003 ### [New year's resolution: lowering the noise on the main feed (excluding this post :) )](https://osherove.com/blog/2003/12/24/new-years-resolution-lowering-the-noise-on-the-main-feed-exc.html) - Dec 23, 2003 ### [About the new .Netweblogs features](https://osherove.com/blog/2003/12/23/about-the-new-netweblogs-features.html) - Nov 28, 2003 ### [Welcome Dino, and a word about MSDN articles](https://osherove.com/blog/2003/11/28/welcome-dino-and-a-word-about-msdn-articles.html) --- title: "Holiday greetings, Gunderloy style" url: "https://osherove.com/blog/2003/12/24/holiday-greetings-gunderloy-style.md" canonical: "https://osherove.com/blog/2003/12/24/holiday-greetings-gunderloy-style.html" published: "2003-12-24T14:08:00" updated: "2003-12-24T14:08:00" tags: ["Off Topic"] author: "Roy Osherove" description: "In light of the coming holidays, I'd like to grit you all with my favorite holiday greeting yet, courtesy of Mike Gunderloy : \" Happy whatever to those of you who celebrate something . \" and in that cheerful holiday…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Holiday greetings, Gunderloy style By Roy Osherove December 24, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 24, 2003; technical details may be outdated. In light of the coming holidays, I'd like to grit you all with my favorite holiday greeting yet, courtesy of [Mike Gunderloy](http://www.larkware.com/Articles/TheDailyGrind256.html): "_Happy whatever to those of you who celebrate something**.**_**"** and in that cheerful holiday spirit, I leave you all (only to come back in an hour or so for my year in review roundup..) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 24, 2003 ### [New year's resolution: lowering the noise on the main feed (excluding this post :) )](https://osherove.com/blog/2003/12/24/new-years-resolution-lowering-the-noise-on-the-main-feed-exc.html) - Dec 24, 2003 ### [Visualizing blogs](https://osherove.com/blog/2003/12/24/visualizing-blogs.html) - Dec 23, 2003 ### [About the new .Netweblogs features](https://osherove.com/blog/2003/12/23/about-the-new-netweblogs-features.html) - Dec 22, 2003 ### [A developer's nightmare](https://osherove.com/blog/2003/12/22/a-developers-nightmare.html) --- title: "Good Article: Strong Names and Security in the .NET Framework" url: "https://osherove.com/blog/2003/12/24/good-article-strong-names-and-security-in-the-net-framework.md" canonical: "https://osherove.com/blog/2003/12/24/good-article-strong-names-and-security-in-the-net-framework.html" published: "2003-12-24T11:39:00" updated: "2003-12-24T11:39:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Sam gentile has recommended all those who feel a bit \"lacking\" when it comes to assembly security and strong names (me included) to read this fine article on the subject: Security Briefs: Strong Names and Security in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good Article: Strong Names and Security in the .NET Framework By Roy Osherove December 24, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published December 24, 2003; technical details may be outdated. [Sam gentile has recommended](http://samgentile.com/blog/archive/2003/12/12/10883.aspx) all those who feel a bit "lacking" when it comes to assembly security and strong names (me included) to read this fine article on the subject: [Security Briefs: Strong Names and Security in the .NET Framework](http://msdn.microsoft.com/netframework/?pull=/library/en-us/dnnetsec/html/strongNames.asp) I guess I'll have something to read during Xmas :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Dec 27, 2003 ### [New year's Nant, pathetic geek style](https://osherove.com/blog/2003/12/27/new-years-nant-pathetic-geek-style.html) - Dec 24, 2003 ### [Good stuff: New book, Remoting for imbeciles,CodeSmith 2.5 RC1, and OMG 0.2](https://osherove.com/blog/2003/12/24/good-stuff-new-book-remoting-for-imbecilescodesmith-25-rc1-a.html) - Dec 23, 2003 ### [Tool: The complete idiot's add-in for signing your assemblies with a strong name](https://osherove.com/blog/2003/12/23/tool-the-complete-idiots-add-in-for-signing-your-assemblies.html) - Dec 20, 2003 ### [The idiot's guide to O/R mappers](https://osherove.com/blog/2003/12/20/the-idiots-guide-to-or-mappers.html) --- title: "Tool: The complete idiot's add-in for signing your assemblies with a strong name" url: "https://osherove.com/blog/2003/12/23/tool-the-complete-idiots-add-in-for-signing-your-assemblies.md" canonical: "https://osherove.com/blog/2003/12/23/tool-the-complete-idiots-add-in-for-signing-your-assemblies.html" published: "2003-12-23T11:19:00" updated: "2003-12-23T11:19:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "It is a shame that this ability has not been created sooner (shame on me, that is) but better late than never. Robert Mclaws has just introduced an add-in that allows you to easily manage the fuss that using a strong…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tool: The complete idiot's add-in for signing your assemblies with a strong name By Roy Osherove December 23, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published December 23, 2003; technical details may be outdated. It is a shame that this ability has not been created sooner (shame on me, that is) but better late than never. [Robert Mclaws](http://weblogs.asp.net/rmclaws/) has just introduced an [add-in that allows you to easily manage the fuss](http://weblogs.asp.net/rmclaws/archive/2003/12/23/45373.aspx) that using a strong named assembly entails. For now, it is completely free ~(but you need to register on his site)~. How very cool. To me, Strong names are one of those features that I sort of [fear](http://neopoleon.com/blog/posts/2122.aspx), along with other stuff such as GDI+ and WSE . I guess I'll be needing it someday, but that day has not yet arrived. **Update**: [Frans posted a complete idiot's list of the manual things you have to do](http://weblogs.asp.net/fbouma/archive/2003/12/23/45396.aspx). It is pretty easy to do, but I still like a plugin that does stuff automatically. Life.MakeEasier()== Developer.IsHappy. (disclaimer:  Having a plugin does **not** give you the right to not understand what it is doing behind the scenes. do it manually until you understand it, **then** use the plugin to appreciate what (and if) it is worth to you. ) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Dec 24, 2003 ### [Good stuff: New book, Remoting for imbeciles,CodeSmith 2.5 RC1, and OMG 0.2](https://osherove.com/blog/2003/12/24/good-stuff-new-book-remoting-for-imbecilescodesmith-25-rc1-a.html) - Dec 24, 2003 ### [Good Article: Strong Names and Security in the .NET Framework](https://osherove.com/blog/2003/12/24/good-article-strong-names-and-security-in-the-net-framework.html) - Dec 20, 2003 ### [The idiot's guide to O/R mappers](https://osherove.com/blog/2003/12/20/the-idiots-guide-to-or-mappers.html) - Dec 20, 2003 ### [A New Source Control system](https://osherove.com/blog/2003/12/20/a-new-source-control-system.html) --- title: "Resources: how to move data between application tiers" url: "https://osherove.com/blog/2003/12/23/resources-how-to-move-data-between-application-tiers.md" canonical: "https://osherove.com/blog/2003/12/23/resources-how-to-move-data-between-application-tiers.html" published: "2003-12-23T08:25:00" updated: "2003-12-23T08:25:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "I'm faced with this question, and was also asked about it. Here are three articles from Ms that show different sides of the same story: Recommendations for Data Access Strategies This one explains in detail how to store…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Resources: how to move data between application tiers By Roy Osherove December 23, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published December 23, 2003; technical details may be outdated. I'm faced with this question, and was also asked about it. Here are three articles from Ms that show different sides of the same story: [Recommendations for Data Access Strategies](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconusingdatacommandversususingdatasets.asp) This one explains in detail how to **store** the data before moving it somewhere. [Designing Data Tier Components and Passing Data Through Tiers](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/BOAGag.asp?frame=true) Learn how to best expose your data to Microsoft .NET applications and how to implement an effective strategy for passing data between the tiers in a distributed application. (65 printed pages). [Design and Implementation Guidelines for Web Clients](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/DIforWC-CH04.asp) Just like it reads, a good place to start for asp.net apps design ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Dec 24, 2003 ### [Good stuff: New book, Remoting for imbeciles,CodeSmith 2.5 RC1, and OMG 0.2](https://osherove.com/blog/2003/12/24/good-stuff-new-book-remoting-for-imbecilescodesmith-25-rc1-a.html) - Dec 24, 2003 ### [Good Article: Strong Names and Security in the .NET Framework](https://osherove.com/blog/2003/12/24/good-article-strong-names-and-security-in-the-net-framework.html) - Dec 18, 2003 ### [Homesick, EIF and a session state FAQ](https://osherove.com/blog/2003/12/18/homesick-eif-and-a-session-state-faq.html) - Dec 18, 2003 ### [My first MSDN article is out: Creating a plugin framework](https://osherove.com/blog/2003/12/18/my-first-msdn-article-is-out-creating-a-plugin-framework.html) --- title: "About the new .Netweblogs features" url: "https://osherove.com/blog/2003/12/23/about-the-new-netweblogs-features.md" canonical: "https://osherove.com/blog/2003/12/23/about-the-new-netweblogs-features.html" published: "2003-12-23T08:15:00" updated: "2003-12-23T08:15:00" tags: [".NetWeblogs Site", "Blogging", "Off Topic"] author: "Roy Osherove" description: "I'd like to thank Scott for the new features in .Text, some very cool things in there. Thanks. I can understand the grouping thing of MS/Non-Ms employees, but I don't necessarily agree with it. This feature allows…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About the new .Netweblogs features By Roy Osherove December 23, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site), [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 23, 2003; technical details may be outdated. I'd like to thank Scott for the [new features](http://weblogs.asp.net/sitenews/archive/2003/12/22/MicrosoftFeeds.aspx) in .Text, some very cool things in there. Thanks. I can understand the grouping thing of MS/Non-Ms employees, but I don't necessarily agree with it. This feature allows people to read only the MS feeds, thus missing lots of independent feeds(unless they subscribe to them exclusively). In short, it does to RSS what cable TV did to public broadcast; narrower views for a more focused target audience.  On the bright side this will provide a sort of "competition" mechanism. I'm guessing that by now, as a non ms blogger I've enjoyed a huge visibility scale without really **needing** to post anything **good** to be viewed. The main feed allowed me to "stand on the shoulders of others" and project my views onto the world and hey, if you didn't like it, it was your problem, right? But now it's different. Now I'll have to work harder to get the readability that I'm "used to". Meaning I'll be thinking more in terms of content that I provide because I'll know that there is an alternative that is probably very good. In a matter of speaking, the non- ms bloggers here will become the "under dog" and will have to fight to get the "recognition" (read "agg views") they think they deserve. so yeah, it's good. In a way. It's also bad in a way. Narrower views also mean less information and more "zipping around". It's also bad because .netWeblogs is not what it started out as: a true independent community blog site. It is now in the shadow of big brother(that does not mean evil brother!) and everything is read in a different context than is was before. And for that I feel sad. The main feed has been growing slowly into a bit of a monster and the noise levels are getting very high. The main thing I fear is that people who still want a "main feed" they can subscribe to with less noise will simply subscribe to the ms bloggers feed and leave the rest out, which would in fact turn this blog site into something completely different. It will be turned into MsDotNetWeblogs.com. So, these are my views on the subject, but that's probably the last I'll say on this. I'm happy to blog here and will continue to do so until I feel differently. ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - Sep 2, 2003 ### [.NetWeblogs chosen for site of the week on ASPExperts](https://osherove.com/blog/2003/9/2/netweblogs-chosen-for-site-of-the-week-on-aspexperts.html) - Jul 29, 2003 ### [.NetWeblogs coolness achieved](https://osherove.com/blog/2003/7/29/netweblogs-coolness-achieved.html) --- title: "A developer's nightmare" url: "https://osherove.com/blog/2003/12/22/a-developers-nightmare.md" canonical: "https://osherove.com/blog/2003/12/22/a-developers-nightmare.html" published: "2003-12-22T15:44:00" updated: "2003-12-22T15:44:00" tags: ["Off Topic"] author: "Roy Osherove" description: "If you think you are screwed over with the job you are currently doing, think again. Now thank the sweet lord that you don't have to reverse engineer 300 pages of bad C++ code into... COBOL ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A developer's nightmare By Roy Osherove December 22, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 22, 2003; technical details may be outdated. If you think you are screwed over with the job you are currently doing, think again. Now thank the sweet lord that you don't have to [reverse engineer 300 pages of bad C++ code into... COBOL](http://dotnetjunkies.com/WebLog/sriram/posts/4838.aspx). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 24, 2003 ### [Holiday greetings, Gunderloy style](https://osherove.com/blog/2003/12/24/holiday-greetings-gunderloy-style.html) - Dec 23, 2003 ### [About the new .Netweblogs features](https://osherove.com/blog/2003/12/23/about-the-new-netweblogs-features.html) - Dec 20, 2003 ### [Promising Outlook](https://osherove.com/blog/2003/12/20/promising-outlook.html) - Dec 19, 2003 ### [Service announcement: Feedable and Regulator live again, and Norway tips](https://osherove.com/blog/2003/12/19/service-announcement-feedable-and-regulator-live-again-and-n.html) --- title: "Promising Outlook" url: "https://osherove.com/blog/2003/12/20/promising-outlook.md" canonical: "https://osherove.com/blog/2003/12/20/promising-outlook.html" published: "2003-12-20T18:47:00" updated: "2003-12-20T18:47:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Scott Hanselman sends word of a cool new research into email conversations" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Promising Outlook By Roy Osherove December 20, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 20, 2003; technical details may be outdated. [Scott Hanselman](http://www.hanselman.com/blog/) sends word of a cool new research into [email conversations](http://www.hanselman.com/blog/PermaLink.aspx?guid=de3f5c09-7fa6-4ec6-817f-25901af7db32) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 23, 2003 ### [About the new .Netweblogs features](https://osherove.com/blog/2003/12/23/about-the-new-netweblogs-features.html) - Dec 22, 2003 ### [A developer's nightmare](https://osherove.com/blog/2003/12/22/a-developers-nightmare.html) - Dec 19, 2003 ### [Service announcement: Feedable and Regulator live again, and Norway tips](https://osherove.com/blog/2003/12/19/service-announcement-feedable-and-regulator-live-again-and-n.html) - Dec 16, 2003 ### [Service announcement:Still alive, but server is down](https://osherove.com/blog/2003/12/16/service-announcementstill-alive-but-server-is-down.html) --- title: "The idiot's guide to O/R mappers" url: "https://osherove.com/blog/2003/12/20/the-idiots-guide-to-or-mappers.md" canonical: "https://osherove.com/blog/2003/12/20/the-idiots-guide-to-or-mappers.html" published: "2003-12-20T16:28:00" updated: "2003-12-20T16:28:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Steve Eichert has been doing me a big favor. He has been explaining the whole deal with O/R mappers from the ground up and is doing a great job at it. Why is it a big favor for me? because I can now pretend like I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The idiot's guide to O/R mappers By Roy Osherove December 20, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published December 20, 2003; technical details may be outdated. [Steve Eichert](http://dotnetjunkies.com/weblog/seichert/) has been doing me a big favor. He has been explaining the whole deal with O/R mappers from the ground up and is doing a great job at it. Why is it a big favor for me? because I can now pretend like I always knew what everyone else was talking about ;) Anyway, here's some bullet lists for you to devour: - [What is an O/R Mapper anyway?](http://dotnetjunkies.com/weblog/seichert/posts/4677.aspx) - [What's the difference between an O/R Mapper and a code generator?](http://dotnetjunkies.com/weblog/seichert/posts/4699.aspx) - [What advantages does dynamic sql provide an O/R Mapper that procs don't?](http://dotnetjunkies.com/weblog/seichert/posts/4725.aspx) - [.NET O/R Mappers](http://dotnetjunkies.com/WebLog/seichert/posts/4771.aspx) Oh and I have to re-iterate the impact that [Frans Bouma's](http://weblogs.asp.net/fbouma/) discussion on the subject has had on me: - [The dynamic SQL discussion is a must read](https://osherove.com/rosherove/posts/38411.aspx) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Dec 24, 2003 ### [Good Article: Strong Names and Security in the .NET Framework](https://osherove.com/blog/2003/12/24/good-article-strong-names-and-security-in-the-net-framework.html) - Dec 23, 2003 ### [Tool: The complete idiot's add-in for signing your assemblies with a strong name](https://osherove.com/blog/2003/12/23/tool-the-complete-idiots-add-in-for-signing-your-assemblies.html) - Dec 20, 2003 ### [A New Source Control system](https://osherove.com/blog/2003/12/20/a-new-source-control-system.html) - Nov 28, 2003 ### [Cool Site: divil.co.uk](https://osherove.com/blog/2003/11/28/cool-site-divilcouk.html) --- title: "Problem and solution: Renaming htm file to aspx may cause javascript trouble" url: "https://osherove.com/blog/2003/12/20/problem-and-solution-renaming-htm-file-to-aspx-may-cause-jav.md" canonical: "https://osherove.com/blog/2003/12/20/problem-and-solution-renaming-htm-file-to-aspx-may-cause-jav.html" published: "2003-12-20T16:07:00" updated: "2003-12-20T16:07:00" tags: [".Net Original", "Tips & Tricks"] author: "Roy Osherove" description: "We ran across this when moving some old files to a new project. One of the tasks was to turn a very simple htm file into the same file with an aspx extension. The original htm file had a reference to a javascript file.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Problem and solution: Renaming htm file to aspx may cause javascript trouble By Roy Osherove December 20, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published December 20, 2003; technical details may be outdated. We ran across this when moving some old files to a new project. One of the tasks was to turn a very simple htm file into the same file with an aspx extension. The original htm file had a reference to a javascript file. The trouble was that the new aspx file would not respond to the javascript events that the original htm file referenced (and worked perfectly with). The javascript in question was a calender widget that would appear on a button click on the page. We narrowed it down to reproduce the problem with a simple 5 line htm file which worked. and a renamed version of the htm file as an aspx file which did not work. After some clues from [Mike Gunderloy](http://www.larkware.com/) I enabled script debugging on my machine and saw that we were getting an error from a specific line in the js file. The error was: Line: 63 Error: Unterminated string constant Looking at that line in the script reveals something strange (looking inside the debugger): 63:  es : 'Presione para seleccionar un a?? 64: de : 'Klicken um Jahr auszuwählen', so the string in line 63 was not closed because it was corrupt. There should have been a **',** there like this:   es : 'Presione para seleccionar un año', Looking at the direct source I could see that the text was **not** corrupt so this was coming from the browser! even more, this worked in the original htm version of the file. After some more clues from Mike it appears that the character set in the js source was not recognized using the aspx file. T**ranslation**: the aspx file was using a code page that did not include the letters at the end of the sentence in the js source file, so it thought it was corrupt and everything got screwed up. The solution to this is pretty simple. Make the code page for the aspx file into code page 1252 by adding it in the page declaration tag: <%@ Page Language="vb" AutoEventWireup="false" Codebehind="calTest.aspx.vb" Inherits="calTest.WebForm1" codepage="1252"%> <%@ Page Language="vb" AutoEventWireup="false" Codebehind="calTest.aspx.vb" Inherits="calTest.WebForm1" %><%@ Page Language="vb" AutoEventWireup="false" Codebehind="calTest.aspx.vb" Inherits="calTest.WebForm1"  **codepage="1252"** %> Now the page can recognize the characters and all is right again in the world. <%@ Page Language="vb" AutoEventWireup="false" Codebehind="calTest.aspx.vb" Inherits="calTest.WebForm1" %> ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 27, 2003 ### [Code: CRUD base classes for unit testing](https://osherove.com/blog/2003/12/27/code-crud-base-classes-for-unit-testing.html) - Dec 25, 2003 ### [My First \*real\* SQL optimization (and some good resources)](https://osherove.com/blog/2003/12/25/my-first-real-sql-optimization-and-some-good-resources.html) - Dec 19, 2003 ### [Service announcement: Feedable and Regulator live again, and Norway tips](https://osherove.com/blog/2003/12/19/service-announcement-feedable-and-regulator-live-again-and-n.html) - Dec 18, 2003 ### [Homesick, EIF and a session state FAQ](https://osherove.com/blog/2003/12/18/homesick-eif-and-a-session-state-faq.html) --- title: "A New Source Control system" url: "https://osherove.com/blog/2003/12/20/a-new-source-control-system.md" canonical: "https://osherove.com/blog/2003/12/20/a-new-source-control-system.html" published: "2003-12-20T14:16:00" updated: "2003-12-20T14:16:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "Mike Gunderloy sends word of the Accurev Source control system . Looks pretty spiffy , and I must say they seem very innovative. A couple of points: No VS.Net integration. This is more like the CVS model…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A New Source Control system By Roy Osherove December 20, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published December 20, 2003; technical details may be outdated. [Mike Gunderloy](http://www.larkware.com/) sends word of [the Accurev Source control system](http://www.adtmag.com/article.asp?id=8682). Looks pretty spiffy , and I must say they seem very innovative. A couple of points: - No VS.Net integration. This is more like the CVS model (edit-merge-continue) - All TCP-ip based means probably good perf over VPNs as well - Some pretty cool features that I did not see anywhere else (look at the [screen shots](http://www.accurev.com/product/screenshots.html)) - Priced for big projects - Should give SourceGear a run for its money I presume Is it time for SCC innovation? I think it is. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Dec 23, 2003 ### [Tool: The complete idiot's add-in for signing your assemblies with a strong name](https://osherove.com/blog/2003/12/23/tool-the-complete-idiots-add-in-for-signing-your-assemblies.html) - Dec 20, 2003 ### [The idiot's guide to O/R mappers](https://osherove.com/blog/2003/12/20/the-idiots-guide-to-or-mappers.html) - Nov 28, 2003 ### [Cool Site: divil.co.uk](https://osherove.com/blog/2003/11/28/cool-site-divilcouk.html) - Nov 27, 2003 ### [New .Net Rocks show - Pat Hynds](https://osherove.com/blog/2003/11/27/new-net-rocks-show-pat-hynds.html) --- title: "Service announcement: Feedable and Regulator live again, and Norway tips" url: "https://osherove.com/blog/2003/12/19/service-announcement-feedable-and-regulator-live-again-and-n.md" canonical: "https://osherove.com/blog/2003/12/19/service-announcement-feedable-and-regulator-live-again-and-n.html" published: "2003-12-19T10:06:00" updated: "2003-12-19T10:06:00" tags: [".Net Original", "Cool Tools", "Cool sites", "Off Topic"] author: "Roy Osherove" description: "Ah. My home machine is back up meaning Feedable is live again and so is The Regulator site. For some odd reason, the only person in the world who can not access these sites is little ol' me from Norway. Ah well, as long…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Service announcement: Feedable and Regulator live again, and Norway tips By Roy Osherove December 19, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Cool sites](https://osherove.com/blog/category/cool-sites), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 19, 2003; technical details may be outdated. Ah. My home machine is back up meaning [Feedable](http://royo.is-a-geek.com/SiteFeeder/) is live again and so is The [Regulator](http://royo.is-a-geek.com/regulator) site. For some odd reason, the only person in the world who can **not** access these sites is little ol' me from Norway. Ah well, as long as you all have you fun.. Also, here are some tips for your first week in Norway : - Disregard the first day entirely.  Everything will look better int he morning (although the sun only rises at about 9.45 am at winter here) - Norwegian Keyboard layouts suck. I haven't had this many typos since my cåt jumped on my keyboarf ;) - If you don't eat meat, don't come here, or use the BYOF principle(Bring your own food). (I'm not a veggie, but my wife is and it was not easy) - Norwegians are quiet people. So quiet that it took me a week to actually fully hear and remember the names of the people here. - Get ready for some amazing landscapes - get ready to spend LOTS of money. This is the most expensive place I have ever seen. Some examples: McDonald's meal costs about 35-40$, white boards for your office (the ones you can write and that erase), simple freaking white boards costs around 500$ each (yes, five hundred dollars each). And going to the supermarket here is..well.. an economic "experience". ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 25, 2003 ### [My First \*real\* SQL optimization (and some good resources)](https://osherove.com/blog/2003/12/25/my-first-real-sql-optimization-and-some-good-resources.html) - Dec 20, 2003 ### [Problem and solution: Renaming htm file to aspx may cause javascript trouble](https://osherove.com/blog/2003/12/20/problem-and-solution-renaming-htm-file-to-aspx-may-cause-jav.html) - Dec 18, 2003 ### [Homesick, EIF and a session state FAQ](https://osherove.com/blog/2003/12/18/homesick-eif-and-a-session-state-faq.html) - Dec 18, 2003 ### [My first MSDN article is out: Creating a plugin framework](https://osherove.com/blog/2003/12/18/my-first-msdn-article-is-out-creating-a-plugin-framework.html) --- title: "Homesick, EIF and a session state FAQ" url: "https://osherove.com/blog/2003/12/18/homesick-eif-and-a-session-state-faq.md" canonical: "https://osherove.com/blog/2003/12/18/homesick-eif-and-a-session-state-faq.html" published: "2003-12-18T13:47:00" updated: "2003-12-18T13:47:00" tags: [".Net Original", "Cool Articles", "Cool sites"] author: "Roy Osherove" description: "I dropped of the Mrs. this morning at the airport going back home to Israel. Will see her in a month and a half. Boy was that hard. Luckily it was a pretty swift goodbye since we were almost late for the plane. While…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Homesick, EIF and a session state FAQ By Roy Osherove December 18, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published December 18, 2003; technical details may be outdated. I dropped of the Mrs. this morning at the airport going back home to Israel. Will see her in a month and a half. Boy was that hard. Luckily it was a pretty swift goodbye since we were almost late for the plane. While I'm writing this she is still waiting for her second connection flight that will land her into her parents arms to celebrate the Hanuka holliday and to start a new job on sunday. Honey, I love you and miss you very much. Now, to business. Part of my job here at Norway is to basically be a "goto guy" about any problem a developer encounters that they cannot find a solution too. Funnily enough, I always know only a fraction of what people ask me since the issues range from WMI issues to session state support. The fraction usually entails basic knowledge on the target area and broad knowledge of the .Net "knowledge map" (that is, I know where to look for the answers, or so I'm told). This is going to be fun. I'm encountering stuff here that I never had to do before(you know how it is, you never "encounter" stuff that you don't have to) and finding the answers is almost as fun as coding them. My guess is that in the coming weeks my links will entail a more "exotic" flavor of stuff I never blogged about before. For example: - **EIF newsgroup** :We're currently having a serious problem installing EIF on a machine that has both 1.0 and 1.1 installed. the EIF installer insists that we need to have 1.0 SP2 of the framework of 1.1 of it installed on the machine. It is blind to our pathetic pleas saying "but we do!" and answers back "huh, you know not what you do!". after a long search it looks like it just might be a WMI corruption problem (we're still trying but that might also be a dead end.. Also opened a call on the MS support center). However, I found a great resource for EIF Q & A: it is this news group from microsoft: **microsoft.public.vsnet.enterprise.tools** on the msnews.microsoft.com server. Lots of EIF Q and A there so you are encouraged to ask. - A nice Session and session state FAQ [can be found here](http://www.eggheadcafe.com/articles/20021016.asp) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 20, 2003 ### [Problem and solution: Renaming htm file to aspx may cause javascript trouble](https://osherove.com/blog/2003/12/20/problem-and-solution-renaming-htm-file-to-aspx-may-cause-jav.html) - Dec 19, 2003 ### [Service announcement: Feedable and Regulator live again, and Norway tips](https://osherove.com/blog/2003/12/19/service-announcement-feedable-and-regulator-live-again-and-n.html) - Dec 18, 2003 ### [My first MSDN article is out: Creating a plugin framework](https://osherove.com/blog/2003/12/18/my-first-msdn-article-is-out-creating-a-plugin-framework.html) - Nov 28, 2003 ### [Welcome Dino, and a word about MSDN articles](https://osherove.com/blog/2003/11/28/welcome-dino-and-a-word-about-msdn-articles.html) --- title: "My first MSDN article is out: Creating a plugin framework" url: "https://osherove.com/blog/2003/12/18/my-first-msdn-article-is-out-creating-a-plugin-framework.md" canonical: "https://osherove.com/blog/2003/12/18/my-first-msdn-article-is-out-creating-a-plugin-framework.html" published: "2003-12-18T05:22:00" updated: "2003-12-18T05:22:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "Update : If you can't find the source code in the article to download, you can also get it from here . It took a looong time and some pretty heavy paperwork, but my first ever MSDN article is up and about on the ASP.Net…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My first MSDN article is out: Creating a plugin framework By Roy Osherove December 18, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published December 18, 2003; technical details may be outdated. **Update**: If you can't find the source code in the article to download, you can also get it [**from here**](http://msdnaa.net/Resources/Display.aspx?ResID=2197). It took a looong time and some pretty heavy paperwork, but my first ever MSDN article is up and about on the [ASP.Net dev center](http://msdn.microsoft.com/asp.net/): [Creating a plug-in framework](http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/pluginframework.asp) (the link on the asp.net site) And this is the direct link into the article on the MSDN library: [http://msdn.microsoft.com/library/en-us/dnaspp/html/pluginframework.asp](http://msdn.microsoft.com/library/en-us/dnaspp/html/pluginframework.asp) Thanks, [Kent](http://weblogs.asp.net/ksharkey/posts/44247.aspx) :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 19, 2003 ### [Service announcement: Feedable and Regulator live again, and Norway tips](https://osherove.com/blog/2003/12/19/service-announcement-feedable-and-regulator-live-again-and-n.html) - Dec 18, 2003 ### [Homesick, EIF and a session state FAQ](https://osherove.com/blog/2003/12/18/homesick-eif-and-a-session-state-faq.html) - Nov 28, 2003 ### [Welcome Dino, and a word about MSDN articles](https://osherove.com/blog/2003/11/28/welcome-dino-and-a-word-about-msdn-articles.html) - Nov 27, 2003 ### [\[Tool\] Scripter allows you to configure a linked Javascript or VBScript file.](https://osherove.com/blog/2003/11/27/tool-scripter-allows-you-to-configure-a-linked-javascript-or.html) --- title: "Service announcement:Still alive, but server is down" url: "https://osherove.com/blog/2003/12/16/service-announcementstill-alive-but-server-is-down.md" canonical: "https://osherove.com/blog/2003/12/16/service-announcementstill-alive-but-server-is-down.html" published: "2003-12-16T06:39:00" updated: "2003-12-16T06:39:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Sorry I've been \"weak\" on the updating. I'm in Norway for the past two weeks or so and it's an amazing experience. However, I am left with little time to blog. Hopefully that will change soon. ttyl, Roy. P.S: My Home…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Service announcement:Still alive, but server is down By Roy Osherove December 16, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published December 16, 2003; technical details may be outdated. Sorry I've been "weak" on the updating. I'm in Norway for the past two weeks or so and it's an amazing experience. However, I am left with little time to blog. Hopefully that will change soon. ttyl, Roy. P.S: My Home server is down, meaning my sites, Feedable,The Regulator and my personal homepage are down as well. By The end of the week my wife should be home so she'll bring it back online again. I guess that's what you get whan you're too cheap to rent hosting, huh? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Dec 20, 2003 ### [Promising Outlook](https://osherove.com/blog/2003/12/20/promising-outlook.html) - Dec 19, 2003 ### [Service announcement: Feedable and Regulator live again, and Norway tips](https://osherove.com/blog/2003/12/19/service-announcement-feedable-and-regulator-live-again-and-n.html) - Nov 27, 2003 ### [\[Tool\] Object Model Generator](https://osherove.com/blog/2003/11/27/tool-object-model-generator.html) - Nov 27, 2003 ### [Good advice for presentations, scholarly and otherwise](https://osherove.com/blog/2003/11/27/good-advice-for-presentations-scholarly-and-otherwise.html) --- title: "Welcome Dino, and a word about MSDN articles" url: "https://osherove.com/blog/2003/11/28/welcome-dino-and-a-word-about-msdn-articles.md" canonical: "https://osherove.com/blog/2003/11/28/welcome-dino-and-a-word-about-msdn-articles.html" published: "2003-11-28T23:42:00" updated: "2003-11-28T23:42:00" tags: [".Net Original", "Blogging"] author: "Roy Osherove" description: "Dino Esposito Has started a blog here on .Net weblogs ( rss ). If you don't know who he is, I suggest you get acquainted with his work real soon as he is one of the finest authors I've ever read with cool solutions and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Welcome Dino, and a word about MSDN articles By Roy Osherove November 28, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published November 28, 2003; technical details may be outdated. [Dino Esposito](http://weblogs.asp.net/despos/) Has started a blog here on .Net weblogs ([rss](http://weblogs.asp.net/despos/Rss.aspx)). If you don't know who he is, I suggest you get acquainted with his work **real soon** as he is one of the finest authors I've ever read with cool solutions and examples. It's funny. Having him blog here automatically makes me feel like I'm physically **closer** to him. Perhaps it's that feeling that he is much more accessible now through his blog that I can actually interact with him about stuff he just wrote a minute or two ago. That is truly the power of blogging. You automatically make yourself **much much** closer to your target audience and very interesting conversations can begin. You won't find that kind of added value in MSDN articles, I can assure you. (I've heard that you can now leave comments on MSDN articles, or was it just ratings? in any case, The day MSDN articles become “interactive” - both readers and the author can write comments on the article in the same web space - I think we'll see a surge in knowledge gathering and communication like we havne't seen in a long long time) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 18, 2003 ### [Homesick, EIF and a session state FAQ](https://osherove.com/blog/2003/12/18/homesick-eif-and-a-session-state-faq.html) - Dec 18, 2003 ### [My first MSDN article is out: Creating a plugin framework](https://osherove.com/blog/2003/12/18/my-first-msdn-article-is-out-creating-a-plugin-framework.html) - Nov 27, 2003 ### [\[Tool\] Scripter allows you to configure a linked Javascript or VBScript file.](https://osherove.com/blog/2003/11/27/tool-scripter-allows-you-to-configure-a-linked-javascript-or.html) - Nov 26, 2003 ### [\[Review\] CodeSmart.Net](https://osherove.com/blog/2003/11/26/review-codesmartnet.html) --- title: "Cool Site: divil.co.uk" url: "https://osherove.com/blog/2003/11/28/cool-site-divilcouk.md" canonical: "https://osherove.com/blog/2003/11/28/cool-site-divilcouk.html" published: "2003-11-28T23:18:00" updated: "2003-11-28T23:18:00" tags: [".Net Quotations", "Cool sites"] author: "Roy Osherove" description: "This site has a wealth of cool winforms controls, cool articles and generally is one of the *coolest* personal .Net sites I've seen in a while. I can totally get why he's a Code Hero . Recommended. (link via Joseph…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool Site: divil.co.uk By Roy Osherove November 28, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published November 28, 2003; technical details may be outdated. [This site](http://www.divil.co.uk/net/) has a wealth of cool winforms controls, cool articles and generally is one of the \*coolest\* personal .Net sites I've seen in a while. I can totally get why he's a [Code Hero](http://www.windowsforms.com/default.aspx?tabindex=5&tabid=47&ItemID=13&mid=142). Recommended. _(link via_ [_Joseph Cooney_](http://dotnetjunkies.com/WebLog/JosephCooney/posts/4084.aspx)_)_ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Dec 20, 2003 ### [The idiot's guide to O/R mappers](https://osherove.com/blog/2003/12/20/the-idiots-guide-to-or-mappers.html) - Dec 20, 2003 ### [A New Source Control system](https://osherove.com/blog/2003/12/20/a-new-source-control-system.html) - Nov 27, 2003 ### [New .Net Rocks show - Pat Hynds](https://osherove.com/blog/2003/11/27/new-net-rocks-show-pat-hynds.html) - Nov 27, 2003 ### [Step by step:an asynchronous sockets terminal client Vb.Net](https://osherove.com/blog/2003/11/27/step-by-stepan-asynchronous-sockets-terminal-client-vbnet.html) --- title: "[Tool] Object Model Generator" url: "https://osherove.com/blog/2003/11/27/tool-object-model-generator.md" canonical: "https://osherove.com/blog/2003/11/27/tool-object-model-generator.html" published: "2003-11-27T20:55:00" updated: "2003-11-27T20:55:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "Omer has released a preview version of a tool called “ Object Model Generator ”. His words: “The tool is currently in Preview Version (which is sort of a beta version), and features the following: Typed Elements (incl.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Tool\] Object Model Generator By Roy Osherove November 27, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 27, 2003; technical details may be outdated. [Omer](http://weblogs.asp.net/OKloeten/) has released a preview version of a tool called “[Object Model Generator](http://weblogs.asp.net/OKloeten/posts/40148.aspx)”. His words: _“The tool is currently in Preview Version (which is sort of a beta version), and features the following:_ - _Typed Elements (incl. simple elements)._ - _Typed Attributes._ - _Attribute Nullability (incl. Value Type Nullability)._ - _Typed Complex Elements (Sequence, Choice)._ - _Attribute Change Events._ - _Typed Sub Element Search By Attribute._ - _Load From / Save To XML (incl. verification against original schema). “_ I really like watching people in this community showing some initiative and doing cool stuff for the benefit of everyone else. Plus, it's a great learning experience! way to go Omer. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Dec 20, 2003 ### [A New Source Control system](https://osherove.com/blog/2003/12/20/a-new-source-control-system.html) - Dec 19, 2003 ### [Service announcement: Feedable and Regulator live again, and Norway tips](https://osherove.com/blog/2003/12/19/service-announcement-feedable-and-regulator-live-again-and-n.html) - Nov 27, 2003 ### [\[Tool\] Scripter allows you to configure a linked Javascript or VBScript file.](https://osherove.com/blog/2003/11/27/tool-scripter-allows-you-to-configure-a-linked-javascript-or.html) - Nov 26, 2003 ### [\[Review\] CodeSmart.Net](https://osherove.com/blog/2003/11/26/review-codesmartnet.html) --- title: "Good advice for presentations, scholarly and otherwise" url: "https://osherove.com/blog/2003/11/27/good-advice-for-presentations-scholarly-and-otherwise.md" canonical: "https://osherove.com/blog/2003/11/27/good-advice-for-presentations-scholarly-and-otherwise.html" published: "2003-11-27T17:26:00" updated: "2003-11-27T17:26:00" tags: ["Cool Articles", "Off Topic"] author: "Roy Osherove" description: "A helpful essay by William Germano, \"The Scholarly Lecture: How to Stand and Deliver,\" from The Chronicle of Higher Education http://chronicle.com/free/v50/i14/14b01501.htm -- Edward Tufte , November 27, 2003" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good advice for presentations, scholarly and otherwise By Roy Osherove November 27, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 27, 2003; technical details may be outdated. A helpful essay by William Germano, "The Scholarly Lecture: How to Stand and Deliver," from The Chronicle of Higher Education [http://chronicle.com/free/v50/i14/14b01501.htm](http://chronicle.com/free/v50/i14/14b01501.htm) \-- [Edward Tufte](http://www.edwardtufte.com/bboard/asket.xml), November 27, 2003 ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Dec 18, 2003 ### [Homesick, EIF and a session state FAQ](https://osherove.com/blog/2003/12/18/homesick-eif-and-a-session-state-faq.html) - Dec 18, 2003 ### [My first MSDN article is out: Creating a plugin framework](https://osherove.com/blog/2003/12/18/my-first-msdn-article-is-out-creating-a-plugin-framework.html) - Nov 27, 2003 ### [Step by step:an asynchronous sockets terminal client Vb.Net](https://osherove.com/blog/2003/11/27/step-by-stepan-asynchronous-sockets-terminal-client-vbnet.html) - Nov 12, 2003 ### [Technical writing - The complete idiot's guide](https://osherove.com/blog/2003/11/12/technical-writing-the-complete-idiots-guide.html) --- title: "Another one bites the pill" url: "https://osherove.com/blog/2003/11/27/another-one-bites-the-pill.md" canonical: "https://osherove.com/blog/2003/11/27/another-one-bites-the-pill.html" published: "2003-11-27T08:11:00" updated: "2003-11-27T08:11:00" tags: ["Off Topic"] author: "Roy Osherove" description: "My friend and .Net guru Yosi Taguri decided it has been long enough and took the red pill . No, he's not going to Redmond (yet) but he's going to be a .Net evangelist/expert here in Microsoft Israel. How cool is that?…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another one bites the pill By Roy Osherove November 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 27, 2003; technical details may be outdated. My friend and .Net guru [Yosi Taguri](http://weblogs.asp.net/yosit/posts/40052.aspx) decided it has been long enough and [took the red pill](http://weblogs.asp.net/yosit/posts/40052.aspx). No, he's not going to Redmond (yet) but he's going to be a .Net evangelist/expert here in Microsoft Israel. How cool is that? Congratulations Yosi. It was only a matter of time. I know you'll do great things. Hey, maybe now you'll have a little more time to blog about all the cool stuff you've been doing? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 27, 2003 ### [\[Tool\] Object Model Generator](https://osherove.com/blog/2003/11/27/tool-object-model-generator.html) - Nov 27, 2003 ### [Good advice for presentations, scholarly and otherwise](https://osherove.com/blog/2003/11/27/good-advice-for-presentations-scholarly-and-otherwise.html) - Nov 27, 2003 ### [I need to learn how to write a review](https://osherove.com/blog/2003/11/27/i-need-to-learn-how-to-write-a-review.html) - Nov 26, 2003 ### [\[OT\] make them sing it!](https://osherove.com/blog/2003/11/26/ot-make-them-sing-it.html) --- title: "New .Net Rocks show - Pat Hynds" url: "https://osherove.com/blog/2003/11/27/new-net-rocks-show-pat-hynds.md" canonical: "https://osherove.com/blog/2003/11/27/new-net-rocks-show-pat-hynds.html" published: "2003-11-27T07:58:00" updated: "2003-11-27T07:58:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "OK. I'm gonna go listen to the new .Net Rocks show : “ Carl talks with pat about Security, from the general concepts to the practical tips and in between. Pat draws on his millitary background to render a keen…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New .Net Rocks show - Pat Hynds By Roy Osherove November 27, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published November 27, 2003; technical details may be outdated. OK. I'm gonna go listen to the [new .Net Rocks show](http://www.franklins.net/dotnetrocks.asp): _“__Carl talks with pat about Security, from the general concepts to the practical tips and in between. Pat draws on his millitary background to render a keen understanding of how to secure today's complex systems. You will pick up some great tips, and hopefully start thinking of security issues in your everyday development efforts after listening to this show. Pat Rocks! “_ 71 Minutes ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Dec 20, 2003 ### [A New Source Control system](https://osherove.com/blog/2003/12/20/a-new-source-control-system.html) - Nov 28, 2003 ### [Cool Site: divil.co.uk](https://osherove.com/blog/2003/11/28/cool-site-divilcouk.html) - Nov 27, 2003 ### [Step by step:an asynchronous sockets terminal client Vb.Net](https://osherove.com/blog/2003/11/27/step-by-stepan-asynchronous-sockets-terminal-client-vbnet.html) - Nov 20, 2003 ### [\[online book\] A .NET Developer's Guide to Windows Security](https://osherove.com/blog/2003/11/20/online-book-a-net-developers-guide-to-windows-security.html) --- title: "I need to learn how to write a review" url: "https://osherove.com/blog/2003/11/27/i-need-to-learn-how-to-write-a-review.md" canonical: "https://osherove.com/blog/2003/11/27/i-need-to-learn-how-to-write-a-review.html" published: "2003-11-27T07:42:00" updated: "2003-11-27T07:42:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is the funniest game review I have ever read . Rory should really be doing something else with his life instead of wasting his writing on on us geeks, although I'm not sure how I would react to his disappearing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I need to learn how to write a review By Roy Osherove November 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 27, 2003; technical details may be outdated. [This is the funniest game review I have ever read](http://neopoleon.com/blog/posts/1595.aspx). [Rory](http://neopoleon.com/blog/) should really be doing something else with his life instead of wasting his writing on on us geeks, although I'm not sure how I would react to his disappearing from the blogsphere. perhaps cries of “what am I gonna read now?” once in a while will do for a couple of months. But then what? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 27, 2003 ### [Good advice for presentations, scholarly and otherwise](https://osherove.com/blog/2003/11/27/good-advice-for-presentations-scholarly-and-otherwise.html) - Nov 27, 2003 ### [Another one bites the pill](https://osherove.com/blog/2003/11/27/another-one-bites-the-pill.html) - Nov 26, 2003 ### [\[OT\] make them sing it!](https://osherove.com/blog/2003/11/26/ot-make-them-sing-it.html) - Nov 25, 2003 ### [What is Proximity inter-communication](https://osherove.com/blog/2003/11/25/what-is-proximity-inter-communication.html) --- title: "Step by step:an asynchronous sockets terminal client Vb.Net" url: "https://osherove.com/blog/2003/11/27/step-by-stepan-asynchronous-sockets-terminal-client-vbnet.md" canonical: "https://osherove.com/blog/2003/11/27/step-by-stepan-asynchronous-sockets-terminal-client-vbnet.html" published: "2003-11-27T07:23:00" updated: "2003-11-27T07:23:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Carl Franklin (of .Net Rocks fame) has made available a Sockets with .Net training video. “ This is a step-by-step how-to video that shows you how to create an asynchronous sockets terminal client program in VB.NET 2003…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Step by step:an asynchronous sockets terminal client Vb.Net By Roy Osherove November 27, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published November 27, 2003; technical details may be outdated. [Carl Franklin](http://weblogs.asp.net/cfranklin/) (of [.Net Rocks](http://www.franklins.net/dotnetrocks.asp) fame) has made available a [Sockets with .Net](http://weblogs.asp.net/cfranklin/posts/39220.aspx) training video. “_This is a step-by-step how-to video that shows you how to create an asynchronous sockets terminal client program in VB.NET 2003_” Coolness. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 28, 2003 ### [Cool Site: divil.co.uk](https://osherove.com/blog/2003/11/28/cool-site-divilcouk.html) - Nov 27, 2003 ### [New .Net Rocks show - Pat Hynds](https://osherove.com/blog/2003/11/27/new-net-rocks-show-pat-hynds.html) - Nov 20, 2003 ### [\[online book\] A .NET Developer's Guide to Windows Security](https://osherove.com/blog/2003/11/20/online-book-a-net-developers-guide-to-windows-security.html) - Nov 19, 2003 ### [Get ready for obsolete stuff in Whidbey today](https://osherove.com/blog/2003/11/19/get-ready-for-obsolete-stuff-in-whidbey-today.html) --- title: "[Tool] Scripter allows you to configure a linked Javascript or VBScript file." url: "https://osherove.com/blog/2003/11/27/tool-scripter-allows-you-to-configure-a-linked-javascript-or.md" canonical: "https://osherove.com/blog/2003/11/27/tool-scripter-allows-you-to-configure-a-linked-javascript-or.html" published: "2003-11-27T07:16:00" updated: "2003-11-27T07:16:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "Scripter allows you to configure a linked Javascript or VBScript file. Select a script file and Scripter will tell you which files in your Web are currently linking to that script. You can then add and remove files very…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Tool\] Scripter allows you to configure a linked Javascript or VBScript file. By Roy Osherove November 27, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 27, 2003; technical details may be outdated.
Scripter allows you to configure a linked Javascript or VBScript file. Select a script file and Scripter will tell you which files in your Web are currently linking to that script. You can then add and remove files very easily.
\[via [Downloads\[at\]Microsoft](http://royo.is-a-geek.com/siteFeeder/GetFeed.aspx?FeedId=42) feed\] ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Dec 18, 2003 ### [My first MSDN article is out: Creating a plugin framework](https://osherove.com/blog/2003/12/18/my-first-msdn-article-is-out-creating-a-plugin-framework.html) - Nov 28, 2003 ### [Welcome Dino, and a word about MSDN articles](https://osherove.com/blog/2003/11/28/welcome-dino-and-a-word-about-msdn-articles.html) - Nov 26, 2003 ### [\[Review\] CodeSmart.Net](https://osherove.com/blog/2003/11/26/review-codesmartnet.html) - Nov 25, 2003 ### [Plugin frameworks in .Net links](https://osherove.com/blog/2003/11/25/plugin-frameworks-in-net-links.html) --- title: "[OT] make them sing it!" url: "https://osherove.com/blog/2003/11/26/ot-make-them-sing-it.md" canonical: "https://osherove.com/blog/2003/11/26/ot-make-them-sing-it.html" published: "2003-11-26T14:30:00" updated: "2003-11-26T14:30:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Oh this is very very cool. http://www.sr.se/cgi-bin/p1/src/sing/default.asp" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[OT\] make them sing it! By Roy Osherove November 26, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 26, 2003; technical details may be outdated. Oh this is very very cool. [http://www.sr.se/cgi-bin/p1/src/sing/default.asp](http://www.sr.se/cgi-bin/p1/src/sing/default.asp) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 27, 2003 ### [Another one bites the pill](https://osherove.com/blog/2003/11/27/another-one-bites-the-pill.html) - Nov 27, 2003 ### [I need to learn how to write a review](https://osherove.com/blog/2003/11/27/i-need-to-learn-how-to-write-a-review.html) - Nov 25, 2003 ### [What is Proximity inter-communication](https://osherove.com/blog/2003/11/25/what-is-proximity-inter-communication.html) - Nov 25, 2003 ### [GDN Release download stats](https://osherove.com/blog/2003/11/25/gdn-release-download-stats.html) --- title: "[Review] CodeSmart.Net" url: "https://osherove.com/blog/2003/11/26/review-codesmartnet.md" canonical: "https://osherove.com/blog/2003/11/26/review-codesmartnet.html" published: "2003-11-26T11:09:00" updated: "2003-11-26T11:09:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "AXTools has been on my “favorite tool makers” list for a couple of years now, if not more (disclaimer: I got a free copy of this product so that I can review it). When I did VB6 development, they came out with one of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Review\] CodeSmart.Net By Roy Osherove November 26, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 26, 2003; technical details may be outdated. [](http://www.axtools.com/)[AXTools](https://osherove.com/blog/2003/11/26/www.axtools.com) has been on my “favorite tool makers” list for a couple of years now, if not more _(disclaimer: I got a free copy of this product so that I can review it)._ When I did VB6 development, they came out with one of the best add-ins for VB that I've ever used (and I'm a tool freak) - [CodeSmart](http://www.axtools.com/products/codesmart.htm). To say the least, the tool was awesome and saved hours every day in productivity enhancements.I still use it today whenever I open up vb6. Some of the most incredible features were : -  [a code explorer](http://www.axtools.com/products/cs2k3vb_screenshots.htm#T21) \- allowing you to see the methods and the files in the same tree - a [code workbench](http://www.axtools.com/products/cs2k3vb_screenshots.htm#T22) \- allowing you to group shortcuts to the most frequently visited code items in your project - [Auto-text](http://www.axtools.com/products/cs2k3vb_screenshots.htm#T41) (what Whidbey calls code expansion nowadays) - a slew of other ,mind boggling then, features that vb developers had to live without. **When Vs.Net came out** I was not sure how well they would survive with all the new features that Vs.Net had implemented. some of them were highlighted as important features in vb6 but now you had them built in such as multi item clipboards and so on. A little while later, [AXTools](https://osherove.com/blog/2003/11/26/www.axtools.com) came out with CodeSmart.Net. I'm glad to say that although it has less features, the most important features that I loved in Vb6 are now implemented in CodeSmart.Net for both Vb.Net and C#! -  [a code explorer](http://www.axtools.com/products/cs2k3net_screenshots.htm#T21) \- allowing you to see the methods and the files in the same tree. this is cool because this way I  have to switch between File view and Class view in the vs.Net IDE. I can just use my physical file view to find what I need. ![](https://osherove.com/img/wb/8ea72ad0_www.axtools.com_products_showcs2k3net_CodeExplorer2.gif)  - a [code workbench](http://www.axtools.com/products/cs2k3net_screenshots.htm#T22) \- allowing you to group shortcuts to the most frequently visited code items in your project this is a lifesaver. You have no idea how much. - [Auto-text](http://www.axtools.com/products/cs2k3net_screenshots.htm#T34) (what Whidbey calls code expansion nowadays) since the auto-text is fully configurable, it makes all the code expansion stuff I've read about in Whidbey look totally ridiculous. Why oh why should I implement such a complex XML file when I can do the same thing in less than 30 seconds by creating a new auto-text entry in CodeSmart? ![](https://osherove.com/img/wb/02456ce5_www.axtools.com_products_showcs2k3net_AutoText.gif)  there are some other nice features like code builders,advanced find and replace and so on but these are the three that I really can't live without. They alone are worth the price of admission. **What's missing?** [AXTools](https://osherove.com/blog/2003/11/26/www.axtools.com) could have done a lot more with CodeSmart.Net. If there's one thing that's missing it's refactoring support. That would be **so easy to implement** in such a good add-in and right now, it will be their biggest advantage over the competition (C# refactory only works on C#). [AXTools](https://osherove.com/blog/2003/11/26/www.axtools.com) should grow into a new market because the old one seems to be disappearing quickly. They can't rely on their old bag of tricks to save them forever. Invent yourself. **Final thoughts:** Get this add-in and save yourself lots of time using the three features I mentioned above. The rest is just added bonus. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 28, 2003 ### [Welcome Dino, and a word about MSDN articles](https://osherove.com/blog/2003/11/28/welcome-dino-and-a-word-about-msdn-articles.html) - Nov 27, 2003 ### [\[Tool\] Scripter allows you to configure a linked Javascript or VBScript file.](https://osherove.com/blog/2003/11/27/tool-scripter-allows-you-to-configure-a-linked-javascript-or.html) - Nov 25, 2003 ### [Plugin frameworks in .Net links](https://osherove.com/blog/2003/11/25/plugin-frameworks-in-net-links.html) - Nov 24, 2003 ### [Introducing: Extensibility Application Block](https://osherove.com/blog/2003/11/24/introducing-extensibility-application-block.html) --- title: "Plugin frameworks in .Net links" url: "https://osherove.com/blog/2003/11/25/plugin-frameworks-in-net-links.md" canonical: "https://osherove.com/blog/2003/11/25/plugin-frameworks-in-net-links.html" published: "2003-11-25T22:44:00" updated: "2003-11-25T22:44:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "It looks like making applications that can have plugins starting to catch on. But I really didn't get much feedback on my Extensibility Application Block - which enables exactly this . Perhaps I should have renamed it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Plugin frameworks in .Net links By Roy Osherove November 25, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 25, 2003; technical details may be outdated. It looks like making applications that can have plugins starting to catch on. But I really didn't get much feedback on my [Extensibility Application Block](http://workspaces.gotdotnet.com/eap) \- **which enables exactly this**. Perhaps I should have renamed it to **Plugins Application Block**? Anyway, Both [Julie](http://weblogs.asp.net/jlerman/posts/39784.aspx) and [Brady](http://weblogs.asp.net/tatochip/posts/39782.aspx) have written about using a pluggable framework do do various useful stuff. I do see this area as mostly untouched in the .Net world so here are a few links that talk about this(first 3 are mine): - [Extensibility Application Block](http://workspaces.gotdotnet.com/eap) - [Add run-time functionality to your application by providing a plug-in mechanism](http://www.codeproject.com/csharp/Plugins.asp) - [Add run-time functionality to your application part II: Dynamic search and load DLLS](http://msdnaa.net/Resources/Display.aspx?ResID=2200) - [AppDomains and Dynamic Loading](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp05162002.asp)(MSDN) - [Create a Flexible Dynamic plugin framework](http://www.codeproject.com/dotnet/PluginManagerClassBrk.asp?df=100&forumid=26061&select=675789&msg=675789#xx663934xx) - [Let Users Add Functionality to Your .NET Applications with Macros and Plug-Ins](http://msdn.microsoft.com/msdnmag/issues/03/10/Plug-Ins/default.aspx)(MSDN)[](http://workspaces.gotdotnet.com/eap) - [Creating an Extensible User Interface with .NET, Part 1](http://www.codeproject.net/csharp/extensibleui.asp) - [Creating an Extensible User Interface with .NET, Part 2](http://www.codeproject.net/csharp/extensibleui2.asp) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 27, 2003 ### [\[Tool\] Scripter allows you to configure a linked Javascript or VBScript file.](https://osherove.com/blog/2003/11/27/tool-scripter-allows-you-to-configure-a-linked-javascript-or.html) - Nov 26, 2003 ### [\[Review\] CodeSmart.Net](https://osherove.com/blog/2003/11/26/review-codesmartnet.html) - Nov 24, 2003 ### [Introducing: Extensibility Application Block](https://osherove.com/blog/2003/11/24/introducing-extensibility-application-block.html) - Nov 20, 2003 ### [DotNetNuke Rocks!](https://osherove.com/blog/2003/11/20/dotnetnuke-rocks.html) --- title: "What is Proximity inter-communication" url: "https://osherove.com/blog/2003/11/25/what-is-proximity-inter-communication.md" canonical: "https://osherove.com/blog/2003/11/25/what-is-proximity-inter-communication.html" published: "2003-11-25T17:11:00" updated: "2003-11-25T17:11:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I find “ Paper prototyping “ a good technique. For some odd reason, it also bugs me that people sell a book that talks about how to draw dialogs on paper and move them around. Therefore, I've created an introduction to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What is Proximity inter-communication By Roy Osherove November 25, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 25, 2003; technical details may be outdated. I find “[Paper prototyping](http://www.paperprototyping.com/)“ a good technique. For some odd reason, it also bugs me that people sell a book that talks about how to draw dialogs on paper and move them around. Therefore, I've created an introduction to the next “ground-breaking“ software design philosophy: The following is based on the [Paper Prototyping “what is it“ homepage](http://www.paperprototyping.com/what.html)  **What is Proximity inter-communication** Definition: _“__Proximity inter-communication is a variation of human interaction where participants perform day to day tasks by interacting with other participants that are standing near by, using voice and various gestures to express what they want to do”_

The "participant" stands or sits in front of the other “participant” and performs hand gestures and smiles or utters words in order to do Proximity inter communication with the other person. Other “participants” may or may not be sitting or standing close by or far away from the second participant. They may listen or they may not. Notice that you must breathe in and out before speaking long sentences or you will run out of air and communication will fail

**What kinds of software can you communicate about?** Proximity communication can be used for virtually any type of software design – Web site, hand-held device, or even hardware. Its purpose is to get quick feedback from other people while the thought in your mind is still "fresh." Some communications take place near the kitchen, while others use a crowded street or a restaurant. **How is Proximity communication related to software design?** The above definition of Proximity communication does not overlap with programming. The two concepts are not quite the same. It’s possible to do software design without needing to proximity-communicate with anyone. And Proximity communication can be used for purposes other than software design– some product teams find it helpful in ordering pizza and telling various technology related jokes.. **What skills do you need?** You do not need to be a graphic artist or software engineer to do proximity communication, though those skills might come in handy when you’re ready to actually start programming. If you have ideas that you can express by uttering them in words and sentences – then you can do proximity communication.. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 27, 2003 ### [I need to learn how to write a review](https://osherove.com/blog/2003/11/27/i-need-to-learn-how-to-write-a-review.html) - Nov 26, 2003 ### [\[OT\] make them sing it!](https://osherove.com/blog/2003/11/26/ot-make-them-sing-it.html) - Nov 25, 2003 ### [GDN Release download stats](https://osherove.com/blog/2003/11/25/gdn-release-download-stats.html) - Nov 25, 2003 ### [Nevertheless](https://osherove.com/blog/2003/11/25/nevertheless.html) --- title: "GDN Release download stats" url: "https://osherove.com/blog/2003/11/25/gdn-release-download-stats.md" canonical: "https://osherove.com/blog/2003/11/25/gdn-release-download-stats.html" published: "2003-11-25T10:44:00" updated: "2003-11-25T10:44:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I do wish it would be possible to see how many downloads a gotdotnet workspace release has gotten. Any chance of that? hm? Microsoft?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # GDN Release download stats By Roy Osherove November 25, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 25, 2003; technical details may be outdated. I do wish it would be possible to see how many downloads a gotdotnet workspace release has gotten. Any chance of that? hm? Microsoft? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 26, 2003 ### [\[OT\] make them sing it!](https://osherove.com/blog/2003/11/26/ot-make-them-sing-it.html) - Nov 25, 2003 ### [What is Proximity inter-communication](https://osherove.com/blog/2003/11/25/what-is-proximity-inter-communication.html) - Nov 25, 2003 ### [Nevertheless](https://osherove.com/blog/2003/11/25/nevertheless.html) - Nov 24, 2003 ### [I'm going on a two month gig to Norway](https://osherove.com/blog/2003/11/24/im-going-on-a-two-month-gig-to-norway.html) --- title: "Nevertheless" url: "https://osherove.com/blog/2003/11/25/nevertheless.md" canonical: "https://osherove.com/blog/2003/11/25/nevertheless.html" published: "2003-11-25T08:43:00" updated: "2003-11-25T08:43:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I applied for this open position at Microsoft. You might want to try yourself. [via Wine Thirty ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nevertheless By Roy Osherove November 25, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 25, 2003; technical details may be outdated. I applied for [this open position](http://www.microsoft.com/careers/search/details.aspx?JobID=d5806360-549a-477b-aac5-6165eced5ce1) at Microsoft. You might want to try yourself. \[via [Wine Thirty](http://www.winethirty.com/default.aspx?document=132)\] ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 25, 2003 ### [What is Proximity inter-communication](https://osherove.com/blog/2003/11/25/what-is-proximity-inter-communication.html) - Nov 25, 2003 ### [GDN Release download stats](https://osherove.com/blog/2003/11/25/gdn-release-download-stats.html) - Nov 24, 2003 ### [I'm going on a two month gig to Norway](https://osherove.com/blog/2003/11/24/im-going-on-a-two-month-gig-to-norway.html) - Nov 21, 2003 ### [The Letter I should have written back](https://osherove.com/blog/2003/11/21/the-letter-i-should-have-written-back.html) --- title: "Introducing: Extensibility Application Block" url: "https://osherove.com/blog/2003/11/24/introducing-extensibility-application-block.md" canonical: "https://osherove.com/blog/2003/11/24/introducing-extensibility-application-block.html" published: "2003-11-24T15:05:00" updated: "2003-11-24T15:05:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "This has been burning inside me for quite a while. Now y'all get to see what I was up to. Download EAP 1.0 Extensibility Application Block overview: One of the demands from a successful application is the abilityto…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing: Extensibility Application Block By Roy Osherove November 24, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 24, 2003; technical details may be outdated. This has been burning inside me for quite a while. Now y'all get to see what I was up to. [Download EAP 1.0](http://workspaces.gotdotnet.com/eap) **Extensibility Application Block** **overview:** One of the demands from a successful application is the abilityto easily adept to the needs of its users if and when they change (and they do). Many times, the required changed, or extra features that need to be added require not only pure development work, but also re-compilation of some or all of the application binaries (this discussion does not include web applications, only winform applications). To avoid having to go through this sometimes painful process just to add a simple feature, or fix a simple bug, a new need has grown - to allow extending an existing application without the need to recompile it or even without the help of the original developer. This is how what we know today as Add-ins and plugins were born. When we moved into the world of .Net, we still have the ability to write applications that can be extended by others. However, there is no clear path, a common way, to design and implement such abilities into .Net applications. If you were to go today and try to build an extensible application, you'll be faced with a myriad of articles and HOW-TOs, each explaining the story a little bit differently than it's predecessor. This Application block was created so that we can start and retain a common ground for how such abilities should be built. So that it can be both easy to understand and powerful enough as to be used by the most demanding applications. The solution I present here is based on my experience writing extensible applications in .Net and on all the things I learned while trying to figure out the best way to achieve specific abilities while trying to maintain a generic approach. **How does it work?** **There are 3 basic principles that need to be implemented in order for an application to have plugins:**
1.The application needs a way to recognize and communicate with the plugins  
2.The Plugins need a way to talk (or sometimes control) the application in which they are hosted  
3.The plugins need to be recognized and loaded at runtime into the host application  
 
 
**1.   The application needs a way to recognize and communicate with the plugins** This application block solves this problem by providing a common interface that all plugins must implement:IPlugin. The principle is actually very simple: Let's say I have a text editing application to which I would like people to be able to add plugins. These plugins should be able to talk to the application in which they reside, AND the application should be able to talk to them. However, since the application does not know in advance what plugins may be available (some of them may only be created in the future!) the application cannot have a direct reference on any specific DLL or class. It needs to support ANY CLASS but it needs to be able to talk to it on pre-known terms. This paradox is solved by the using a COMMON INTERFACE that both the plug in and the application know. This interface is declared in a separate assembly and both the plug in and the application have a reference to that assembly. This interface is what our application will use to communicate with the plug in. Any plug in that will want to attach itself to the app will have to implement this interface or otherwise we won't even try to load it. This interface is called (in this application block) _IPlugin_.
2.The Plugins need a way to talk (or sometimes control) the application in which they are hosted  
This application block solves this problem by providing a base class called AppContext. To the Plugins, AppContext is their one and only link to the outside world. Anything they need to do, anything they need to know, they do it through this class. The host application will hold a class derived from AppContext which has specific methods and properties which should be shared with the plugins. the IPlugin interface contains an Init Method which passes an AppContext instance into the plug in, allowing it to hold a reference to it and using it for what it needs. For example, For an Editor application, We can have an EditorContext class which exposes events such as TextChanged and properties such as SelectedText and so on. The plugins can use these properties to manipulate their outside environment . It all depends on how much the developer decides to expose to the plugins using the AppContext class. The AppContext class is also the class that will load and unload the plugins when the application starts and finishes, but for that it uses yet another class from the application block - the PluginProvider classes which I'll now discuss in the next paragraph.
3.The plugins need to be recognized and loaded at runtime into the host application  
There are many ways in which one can organize and recognize the plugins that their application needs to load. Some prefer to dynamically search all the DLLs in the app directory and find classes that implement the IPlugin Interface. Some prefer to list the required plugins and their type inside the application config file. Some might have a whole different way of doing this which no one has ever thought of before. This application block is built to support whatever method you choose to load your plugins, and it also provides a couple of implementations right off the bat so you can get up and running in no time with your new application. In the extensibility block there are special objects for which the only purpose in life if to find and load plugins. These are called _Plugin Providers_. Each plug in provider must implement the _IPluginProvider_ interface. There are several providers already build for you. These include the _XmlFilePluginProvider_, _SectionHandlerPluginProvider_ and _DynamicFindPluginProvider_. Each of these implements searching for plugins in a totally different way, but because they all support the same interface, they all return a collection of IPlugin object when they are done allowing you to simply choose the method in which to search. Don't find anything you like in there? Feel like you need an extra feature? Simple implement the IPluginProvider interface in your own class and you're free to go. [Download EAP 1.0](http://workspaces.gotdotnet.com/eap) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 26, 2003 ### [\[Review\] CodeSmart.Net](https://osherove.com/blog/2003/11/26/review-codesmartnet.html) - Nov 25, 2003 ### [Plugin frameworks in .Net links](https://osherove.com/blog/2003/11/25/plugin-frameworks-in-net-links.html) - Nov 20, 2003 ### [DotNetNuke Rocks!](https://osherove.com/blog/2003/11/20/dotnetnuke-rocks.html) - Nov 17, 2003 ### [VS.Net refactoring Lessons from IntelliJ IDEA (redux)](https://osherove.com/blog/2003/11/17/vsnet-refactoring-lessons-from-intellij-idea-redux.html) --- title: "I'm going on a two month gig to Norway" url: "https://osherove.com/blog/2003/11/24/im-going-on-a-two-month-gig-to-norway.md" canonical: "https://osherove.com/blog/2003/11/24/im-going-on-a-two-month-gig-to-norway.html" published: "2003-11-24T09:39:00" updated: "2003-11-24T09:39:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I finally have some good news to show for all the crap I've been through: In about a week I'll be taking off from Israel and landing in this beautiful place in Norway where I'll be doing a 1-2 months consulting gig on a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm going on a two month gig to Norway By Roy Osherove November 24, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 24, 2003; technical details may be outdated. I finally have some good news to show for all the crap I've been through: In about a week I'll be taking off from Israel and landing in [this beautiful place](http://www.florbu.com/engelsk/galleri.html) in Norway where I'll be doing a 1-2 months consulting gig on a .Net project. If anything, I'm pretty excited (and I haven't been sleeping much either) and thrilled to do this (and yes, a little afraid as well since it's my first real gig as a consultant). If all goes well I might even get to stay a while longer, but that's too far in the future to see right now. My wife will be coming to visit me there about two weeks after I leave home. We'll spend there about a week together at which time she'll go back home and I'll be Wifeless up until the end of January. Oh, I can just taste the adventure now. BTW, they are still looking for good experienced people to get over there for short/long term. If you're interested, contact Michael and tell him I sent you. And to finish this off - here's are some thumbnails from over there: ![Against Furuholmen and Florø Rorbu](https://osherove.com/img/wb/e4a05361_www.florbu.com_grx_furuholmen_flyfotol_small.jpg) ![The island Batalden, west of Florø](https://osherove.com/img/wb/bfeb51d4_www.florbu.com_grx_motvest1_large_small.jpg) ![view from the balcony](https://osherove.com/img/wb/a0daa4a6_www.florbu.com_grx_utsikt7_small_small.jpg)  (The one with the man at the table is taken where I'll probably be staying. Isn't that just totally crazy?) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 25, 2003 ### [GDN Release download stats](https://osherove.com/blog/2003/11/25/gdn-release-download-stats.html) - Nov 25, 2003 ### [Nevertheless](https://osherove.com/blog/2003/11/25/nevertheless.html) - Nov 21, 2003 ### [The Letter I should have written back](https://osherove.com/blog/2003/11/21/the-letter-i-should-have-written-back.html) - Nov 21, 2003 ### [The Regulator gets its first "real" review](https://osherove.com/blog/2003/11/21/the-regulator-gets-its-first-quotrealquot-review.html) --- title: "The Letter I should have written back" url: "https://osherove.com/blog/2003/11/21/the-letter-i-should-have-written-back.md" canonical: "https://osherove.com/blog/2003/11/21/the-letter-i-should-have-written-back.html" published: "2003-11-21T00:46:00" updated: "2003-11-21T00:46:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Now, why didn't I ever write such a letter in my quest for a new job? (link via Hhiring Technical People )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Letter I should have written back By Roy Osherove November 21, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 21, 2003; technical details may be outdated. Now, why didn't I ever write [such a letter](http://www.jkador.com/letter.htm) in my quest for a new job? (link via [Hhiring Technical People](http://www.jrothman.com/weblog/archive/2003_11_01_htparchive.html#106934285814105760)) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 25, 2003 ### [Nevertheless](https://osherove.com/blog/2003/11/25/nevertheless.html) - Nov 24, 2003 ### [I'm going on a two month gig to Norway](https://osherove.com/blog/2003/11/24/im-going-on-a-two-month-gig-to-norway.html) - Nov 21, 2003 ### [The Regulator gets its first "real" review](https://osherove.com/blog/2003/11/21/the-regulator-gets-its-first-quotrealquot-review.html) - Nov 17, 2003 ### [Thanks for your help](https://osherove.com/blog/2003/11/17/thanks-for-your-help.html) --- title: "The Regulator gets its first \"real\" review" url: "https://osherove.com/blog/2003/11/21/the-regulator-gets-its-first-quotrealquot-review.md" canonical: "https://osherove.com/blog/2003/11/21/the-regulator-gets-its-first-quotrealquot-review.html" published: "2003-11-21T00:39:00" updated: "2003-11-21T00:39:00" tags: ["Off Topic"] author: "Roy Osherove" description: "The Regulator just got a great review over at ADTMag.com by Mike Gunderloy . How cool is this? I'm totally flattered." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator gets its first "real" review By Roy Osherove November 21, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 21, 2003; technical details may be outdated. [The Regulator](http://royo.is-a-geek.com/iserializable/regulator/) just got [a great review](http://www.adtmag.com/article.asp?id=8554) over at [ADTMag.com](http://www.adtmag.com/article.asp?id=8445) by [Mike Gunderloy](http://www.larkware.com/). How cool is this? I'm totally flattered. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 24, 2003 ### [I'm going on a two month gig to Norway](https://osherove.com/blog/2003/11/24/im-going-on-a-two-month-gig-to-norway.html) - Nov 21, 2003 ### [The Letter I should have written back](https://osherove.com/blog/2003/11/21/the-letter-i-should-have-written-back.html) - Nov 17, 2003 ### [Thanks for your help](https://osherove.com/blog/2003/11/17/thanks-for-your-help.html) - Nov 15, 2003 ### [Help me rename The Regulator](https://osherove.com/blog/2003/11/15/help-me-rename-the-regulator.html) --- title: "DotNetNuke Rocks!" url: "https://osherove.com/blog/2003/11/20/dotnetnuke-rocks.md" canonical: "https://osherove.com/blog/2003/11/20/dotnetnuke-rocks.html" published: "2003-11-20T19:51:00" updated: "2003-11-20T19:51:00" tags: [".Net Original"] author: "Roy Osherove" description: "I've been wanting to make my Regulator site into a “real” site, so I checked out doing in using .Text. it was nice but it wasn't the “feel” i was looking for. Then I stumbled upon DotNetNuke and boy am I impressed! I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # DotNetNuke Rocks! By Roy Osherove November 20, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published November 20, 2003; technical details may be outdated. I've been wanting to make my [Regulator site](http://royo.is-a-geek.com/regulator) into a “real” site, so I checked out doing in using .Text. it was nice but it wasn't the “feel” i was looking for. Then I stumbled upon [DotNetNuke](http://www.dotnetnuke.com/) and boy am I impressed! I used it to create my [personal homepage](http://royo.is-a-geek.com/) and also the new  [Regulator homepage](http://royo.is-a-geek.com/regulator) and I quite like the result. I recommend it with all my heart. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 25, 2003 ### [Plugin frameworks in .Net links](https://osherove.com/blog/2003/11/25/plugin-frameworks-in-net-links.html) - Nov 24, 2003 ### [Introducing: Extensibility Application Block](https://osherove.com/blog/2003/11/24/introducing-extensibility-application-block.html) - Nov 17, 2003 ### [VS.Net refactoring Lessons from IntelliJ IDEA (redux)](https://osherove.com/blog/2003/11/17/vsnet-refactoring-lessons-from-intellij-idea-redux.html) - Nov 17, 2003 ### [Why are typed data tables columns declared "internal"?](https://osherove.com/blog/2003/11/17/why-are-typed-data-tables-columns-declared-quotinternalquot.html) --- title: "[online book] A .NET Developer's Guide to Windows Security" url: "https://osherove.com/blog/2003/11/20/online-book-a-net-developers-guide-to-windows-security.md" canonical: "https://osherove.com/blog/2003/11/20/online-book-a-net-developers-guide-to-windows-security.html" published: "2003-11-20T19:35:00" updated: "2003-11-20T19:35:00" tags: [".Net Quotations", "Free book chapters"] author: "Roy Osherove" description: "Peter Provost sends word of a new book that's being written: A .NET Developer's Guide to Windows Security , by Keith Brown The great thing is the author is making what he's written available to read. Not only that, you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[online book\] A .NET Developer's Guide to Windows Security By Roy Osherove November 20, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published November 20, 2003; technical details may be outdated. [Peter Provost sends word](http://www.peterprovost.org/weblog/permalink.aspx?guid=f470b84b-6dce-4bd3-8c13-5fe092b994ff) of a new book that's being written: [A .NET Developer's Guide to Windows Security](http://www.develop.com/kbrown/book), by [Keith Brown](http://www.develop.com/kbrown) The great thing is the author is making what he's written available to read. Not only that, you can subscribe to the [book's RSS feed](http://www.develop.com/kbrown/book/rss.xml) and know when new chapters have been added. Now this is the kind of attitude I like! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 27, 2003 ### [New .Net Rocks show - Pat Hynds](https://osherove.com/blog/2003/11/27/new-net-rocks-show-pat-hynds.html) - Nov 27, 2003 ### [Step by step:an asynchronous sockets terminal client Vb.Net](https://osherove.com/blog/2003/11/27/step-by-stepan-asynchronous-sockets-terminal-client-vbnet.html) - Nov 19, 2003 ### [Get ready for obsolete stuff in Whidbey today](https://osherove.com/blog/2003/11/19/get-ready-for-obsolete-stuff-in-whidbey-today.html) - Nov 19, 2003 ### [SQLTeam rules: Cool tip + cool RSS feed= goodness in the blogsphere](https://osherove.com/blog/2003/11/19/sqlteam-rules-cool-tip-cool-rss-feed-goodness-in-the-blogsph.html) --- title: "Get ready for obsolete stuff in Whidbey today" url: "https://osherove.com/blog/2003/11/19/get-ready-for-obsolete-stuff-in-whidbey-today.md" canonical: "https://osherove.com/blog/2003/11/19/get-ready-for-obsolete-stuff-in-whidbey-today.html" published: "2003-11-19T06:33:00" updated: "2003-11-19T06:33:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Brad Adams gives us a non-official preview of what classes/members will be obsolete when Whidbey comes along. It's good to know these things as soon as possible so you can start moving your code away from them now…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Get ready for obsolete stuff in Whidbey today By Roy Osherove November 19, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published November 19, 2003; technical details may be outdated. [Brad Adams](http://blogs.gotdotnet.com/BradA/permalink.aspx/4b6b11db-ff4c-451c-8588-627c7dad085d) gives us a [non-official preview](http://www.gotdotnet.com/team/brada/ObsoletedInWhidbey.htm) of what classes/members will be obsolete when Whidbey comes along. It's good to know these things as soon as possible so you can start moving your code away from them now instead of doing more work in the future. One thing he notes is that “_Just to be clear, these members are still in Whidbey, applications built against them will continue to work, but when you recompile you will be asked to move to the updated version.”_ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 27, 2003 ### [Step by step:an asynchronous sockets terminal client Vb.Net](https://osherove.com/blog/2003/11/27/step-by-stepan-asynchronous-sockets-terminal-client-vbnet.html) - Nov 20, 2003 ### [\[online book\] A .NET Developer's Guide to Windows Security](https://osherove.com/blog/2003/11/20/online-book-a-net-developers-guide-to-windows-security.html) - Nov 19, 2003 ### [SQLTeam rules: Cool tip + cool RSS feed= goodness in the blogsphere](https://osherove.com/blog/2003/11/19/sqlteam-rules-cool-tip-cool-rss-feed-goodness-in-the-blogsph.html) - Nov 18, 2003 ### [The dynamic SQL discussion is a must read](https://osherove.com/blog/2003/11/18/the-dynamic-sql-discussion-is-a-must-read.html) --- title: "SQLTeam rules: Cool tip + cool RSS feed= goodness in the blogsphere" url: "https://osherove.com/blog/2003/11/19/sqlteam-rules-cool-tip-cool-rss-feed-goodness-in-the-blogsph.md" canonical: "https://osherove.com/blog/2003/11/19/sqlteam-rules-cool-tip-cool-rss-feed-goodness-in-the-blogsph.html" published: "2003-11-19T05:57:00" updated: "2003-11-19T05:57:00" tags: [".Net Quotations", "Cool sites"] author: "Roy Osherove" description: "SQLTeam is getting more and more credit from me for being so helpful: Cool tip on using ConnectionString settings in your web.config file so that you don't have to remember when to switch to your dev/liv webserver…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SQLTeam rules: Cool tip + cool RSS feed= goodness in the blogsphere By Roy Osherove November 19, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published November 19, 2003; technical details may be outdated. SQLTeam is getting more and more credit from me for being so helpful: - [Cool tip](http://weblogs.sqlteam.com/travisl/posts/550.aspx) on using ConnectionString settings in your web.config file so that you don't have to remember when to switch to your dev/liv webserver connection, it's don'e automatically. - The SQLTeam [article RSS feed](http://www.sqlteam.com/rss.asp) is up. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 20, 2003 ### [\[online book\] A .NET Developer's Guide to Windows Security](https://osherove.com/blog/2003/11/20/online-book-a-net-developers-guide-to-windows-security.html) - Nov 19, 2003 ### [Get ready for obsolete stuff in Whidbey today](https://osherove.com/blog/2003/11/19/get-ready-for-obsolete-stuff-in-whidbey-today.html) - Nov 18, 2003 ### [The dynamic SQL discussion is a must read](https://osherove.com/blog/2003/11/18/the-dynamic-sql-discussion-is-a-must-read.html) - Nov 12, 2003 ### [Using NAnt? Download NAntPad - for visual NAnt build configuration](https://osherove.com/blog/2003/11/12/using-nant-download-nantpad-for-visual-nant-build-configurat.html) --- title: "[tool] Total Commander 6.0 is out" url: "https://osherove.com/blog/2003/11/19/tool-total-commander-60-is-out.md" canonical: "https://osherove.com/blog/2003/11/19/tool-total-commander-60-is-out.html" published: "2003-11-19T04:58:00" updated: "2003-11-19T04:58:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "My favorite tool on the planet just got an upgrade: Total Commander 6.0 is out . Biggest changes: Directory tabs (more than 2 directories active at the same time - thank god) Config window is now list based and not tab…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[tool\] Total Commander 6.0 is out By Roy Osherove November 19, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 19, 2003; technical details may be outdated. My favorite tool on the planet just got an upgrade: [Total Commander 6.0 is out](http://www.ghisler.com/index.htm). Biggest changes: - Directory tabs (more than 2 directories active at the same time - thank god) - Config window is now list based and not tab based (thank god!) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Nov 25, 2003 ### [Plugin frameworks in .Net links](https://osherove.com/blog/2003/11/25/plugin-frameworks-in-net-links.html) - Nov 24, 2003 ### [Introducing: Extensibility Application Block](https://osherove.com/blog/2003/11/24/introducing-extensibility-application-block.html) - Nov 18, 2003 ### [New Regulator version (last one on this blog)](https://osherove.com/blog/2003/11/18/new-regulator-version-last-one-on-this-blog.html) - Nov 18, 2003 ### [2 possible gems in MS downloads](https://osherove.com/blog/2003/11/18/2-possible-gems-in-ms-downloads.html) --- title: "The dynamic SQL discussion is a must read" url: "https://osherove.com/blog/2003/11/18/the-dynamic-sql-discussion-is-a-must-read.md" canonical: "https://osherove.com/blog/2003/11/18/the-dynamic-sql-discussion-is-a-must-read.html" published: "2003-11-18T21:13:00" updated: "2003-11-18T21:13:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "There's one of those “holy wars” going on in the blogsphere. This time it is about the using Dynamic SQL vs. Stored procedures. But this holy war is an important one. It's one that I have learned a lot from, and I'll…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The dynamic SQL discussion is a must read By Roy Osherove November 18, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published November 18, 2003; technical details may be outdated. There's one of those “holy wars” going on in the blogsphere. This time it is about the using Dynamic SQL vs. Stored procedures. But this holy war is an important one. It's one that I have learned a lot from, and I'll admit it shamelessly. I didn't know all those good things about Dynamic SQL. I really didn't I guess it's that kid of experience that you can learn form others who have done a great deal more than you in that area, and I am not a database guru by all means. I did have the misconception that dynamic SQL is bad and that stored procedures are the cure(albeit painful at times) to the ills of SQL injection and program maintenance. [Rob howard started it](http://weblogs.asp.net/rhoward/posts/38095.aspx) (oh god that sounds awful) and got lots of very insightful comments (read them). Then [Frans Bouma followed](http://weblogs.asp.net/fbouma/posts/38178.aspx) with a scathing and to the point response and these have been other responses in the blogsphere. Then [Rob answerd back to Frans](http://weblogs.asp.net/RHoward/posts/38298.aspx) . I urge you to read the whole discussion, as it is enlightening. I always thought of dynamic SQL as a plague because I only knew the “bad”way of doing it: concatenating strings into WHERE clauses. I admit that I was **not aware** of the possibility to use  **sp\_executesql** and actually creating parameters in the strings passed. That makes the whole situations different when I think of it. You should read the discussion mainly because if there's one thing to “get” from all this is that there is no silver bullet. There are pros and cons for each way of doing things, but you need to have both of these tools on your belt. I really regret not having exposed myself to this earlier. A very nice article that explains the dynamic SQL approach is [found here](http://www.algonet.se/~sommar/dyn-search.html) and here is [the blog that points to it](http://radio.weblogs.com/0101986/stories/2003/11/12/whenDidDynamicSqlGetSuchABadName.html) which contains some time comparisons of these approaches(via [Rob howard](http://weblogs.asp.net/RHoward/)). Ah.. I fulfilled my mantra for today: “Finish the day with at least one thing you did not know before it started” ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 19, 2003 ### [Get ready for obsolete stuff in Whidbey today](https://osherove.com/blog/2003/11/19/get-ready-for-obsolete-stuff-in-whidbey-today.html) - Nov 19, 2003 ### [SQLTeam rules: Cool tip + cool RSS feed= goodness in the blogsphere](https://osherove.com/blog/2003/11/19/sqlteam-rules-cool-tip-cool-rss-feed-goodness-in-the-blogsph.html) - Nov 12, 2003 ### [Using NAnt? Download NAntPad - for visual NAnt build configuration](https://osherove.com/blog/2003/11/12/using-nant-download-nantpad-for-visual-nant-build-configurat.html) - Nov 12, 2003 ### [Great SQL tip: @@IDENTITY==bad, scope\_identity()==good](https://osherove.com/blog/2003/11/12/great-sql-tip-identitybad-scope_identitygood.html) --- title: "New Regulator version (last one on this blog)" url: "https://osherove.com/blog/2003/11/18/new-regulator-version-last-one-on-this-blog.md" canonical: "https://osherove.com/blog/2003/11/18/new-regulator-version-last-one-on-this-blog.html" published: "2003-11-18T15:20:00" updated: "2003-11-18T15:20:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "From now on I'll be announcing anything that has to do with The Regulator over on my Regex Blog . So, you'll have to go here to read my announcement and what's new in the newly released version 1.02 beta 2. Also, If…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Regulator version (last one on this blog) By Roy Osherove November 18, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 18, 2003; technical details may be outdated. From now on I'll be announcing anything that has to do with [The Regulator](http://royo.is-a-geek.com/regulator) over on my [Regex Blog](http://regexblogs.com/royo/). So, you'll have to [go here to read my announcement](http://regexblogs.com/royo/posts/174.aspx) and what's new in the newly released version 1.02 beta 2. Also, If anyone is interested in opening a **regex related** blog there, you know that all you have to do is ask, right? Just contact [Darren Neimke](http://regexblogs.com/DNeimke/) and he'll set you up. Cheers. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Nov 24, 2003 ### [Introducing: Extensibility Application Block](https://osherove.com/blog/2003/11/24/introducing-extensibility-application-block.html) - Nov 19, 2003 ### [\[tool\] Total Commander 6.0 is out](https://osherove.com/blog/2003/11/19/tool-total-commander-60-is-out.html) - Nov 18, 2003 ### [2 possible gems in MS downloads](https://osherove.com/blog/2003/11/18/2-possible-gems-in-ms-downloads.html) - Nov 14, 2003 ### [Making the F-lock key on your MS keyboard ON by default](https://osherove.com/blog/2003/11/14/making-the-f-lock-key-on-your-ms-keyboard-on-by-default.html) --- title: "2 possible gems in MS downloads" url: "https://osherove.com/blog/2003/11/18/2-possible-gems-in-ms-downloads.md" canonical: "https://osherove.com/blog/2003/11/18/2-possible-gems-in-ms-downloads.html" published: "2003-11-18T09:57:00" updated: "2003-11-18T09:57:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "1. Application Signature Builder 1.0 “The Application Signature Builder (ASB) tool is used by software vendors and IT professionals to generate a Signature File containing file attribute information that allows…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 2 possible gems in MS downloads By Roy Osherove November 18, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 18, 2003; technical details may be outdated. 1\. [Application Signature Builder 1.0](http://www.microsoft.com/downloads/details.aspx?FamilyID=7ce6130e-13f8-49f7-ab82-7ffafed0c04f&DisplayLang=en) _“The Application Signature Builder (ASB) tool is used by software vendors and IT professionals to generate a Signature File containing file attribute information that allows Microsoft to discretely identify the program (executable) files added to a Microsoft® Windows® -based system when a particular version of a software application is installed. This information provides Microsoft the ability to programmatically identify discrete variations of an application across multiple versions, which in turn enables Microsoft to deliver dynamic information to Independent Software Vendors (ISVs) regarding issues encountered on Microsoft Windows platforms and to provide dynamic resolutions to Windows users, for known application issues on Microsoft Windows.“_ Sounds to me like a possible auto-updating and error reporting service in our future for ISV's [2.CryptoAPI Monitor (CAPIMON)](http://www.microsoft.com/downloads/details.aspx?FamilyID=0bfe87a8-4e79-4441-9d4c-0cab35d49a01&DisplayLang=en) _“...In addition, not all applications can report accurate and detailed errors when CryptoAPI returns anything other than a successful completion result. As a result, applications that use CryptoAPI are often difficult to troubleshoot. CryptoAPI Monitor (CAPIMON) is designed specifically to address this issue by allowing the administrator to monitor an application’s CryptoAPI calls and the results. CAPIMON can be used to troubleshoot errors in X.509 version 3 certificate chain building and revocation. It cannot be used to troubleshoot cryptographic service providers (CSP), cryptographic routines, and digital signature operations which are also part of CryptoAPI. “_ Nothing to say about this one. Sounds like if you're going to be doing anything with crypto that could crash (meaning anything really) you might want this. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Nov 19, 2003 ### [\[tool\] Total Commander 6.0 is out](https://osherove.com/blog/2003/11/19/tool-total-commander-60-is-out.html) - Nov 18, 2003 ### [New Regulator version (last one on this blog)](https://osherove.com/blog/2003/11/18/new-regulator-version-last-one-on-this-blog.html) - Nov 14, 2003 ### [Making the F-lock key on your MS keyboard ON by default](https://osherove.com/blog/2003/11/14/making-the-f-lock-key-on-your-ms-keyboard-on-by-default.html) - Nov 14, 2003 ### [The Regulator 1.02b is out](https://osherove.com/blog/2003/11/14/the-regulator-102b-is-out.html) --- title: "VS.Net refactoring Lessons from IntelliJ IDEA (redux)" url: "https://osherove.com/blog/2003/11/17/vsnet-refactoring-lessons-from-intellij-idea-redux.md" canonical: "https://osherove.com/blog/2003/11/17/vsnet-refactoring-lessons-from-intellij-idea-redux.html" published: "2003-11-17T13:57:00" updated: "2003-11-17T13:57:00" tags: [".Net Original"] author: "Roy Osherove" description: "I've posted about this here and here before but now Mike Gunderloy writes about refactoring support (or lack thereof) in Whidbey. Some hard hitting points such as the fact that only C# has “refactoring” and not very…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VS.Net refactoring Lessons from IntelliJ IDEA (redux) By Roy Osherove November 17, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published November 17, 2003; technical details may be outdated. I've posted about this [here](http://weblogs.asp.net/rosherove/posts/33538.aspx) and [here](http://weblogs.asp.net/rosherove/posts/33541.aspx) before but now [Mike Gunderloy writes](http://www.adtmag.com/article.asp?id=8527) about refactoring support (or lack thereof) in Whidbey. Some hard hitting points such as the fact that only C# has “refactoring” and not very  good refactoring in that some of it does not even answer to the **definition** of “refactoring“. Also a good discussion about [Paul Vick's comment](http://www.panopticoncentral.net/) regarding use of the word “refactoring” for vb.net programmers. In short - Mike thinks it's lame, and I think so too. Put refactoring on the map for vb.net developers as is.  Heck, if nothing else, we'll be like that kid in school that everybody beats up on because his mom takes care of him too much in front of all the other kids. Have a little trust in us! we have brains. We'll figure out what that long word is. Another thing in there that I could not agree more with is what Mike says about [IntelliJ IDEA](http://www.intellij.com/idea/features/7) and it's refactoring support: “_Microsoft could do worse than to copy that implementation._“ Why do I agree so much with this statement? here's the deal: For the past 3 days I've had to do some real world coding in Java. I used IDEA to do it, and I could not have been more impressed. The first impression I cam out of this experience with: “wow“ and this is from the mouth of a Microsoft geek who loved VS.NET. Until now. Coming back to the “grayness“ that is VS.NET now is like coming home to an empty house with a cold breeze: you just feel like you're on your own. With IDEA it was more like A warm cozy fire and a nice “uncle“ that helps you with whatever you forgot to do. **It actually felt like I was not coding alone**. Every variable I didn't use, every return statement I forgot to add, every constructor or get/set  I had to add - I wasn't alone. The amount of support you get **before you even do your first build operation** is staggering to say the least. The IDE is almost self aware in that everything you do (or don't do) has an immediate effect on the state of things in front of your eyes. you can see some of what it can do in [this page](http://www.intellij.com/idea/features/3) and [this page](http://www.intellij.com/idea/features/5). here's an great example from their page: If _you decide you should have a new method to be called at a particular place, you just type the new method name and provide its parameters if necessary. IDEA will prompt you with an unobtrusive popup with a suggestion to create a new method, and if accepted, the method will be created in the corresponding class/interface, with the proper method signature (including correct parameters), so that you can implement it later._ The IDE was so helpful to me that even though prior to this week I had no real Java experience , I was able to get to build stages and build/compile without a hitch! The IDE actually saved my sorry but a lot of grief while I was writing the code. I had no “new writer's fear“ from starting new classes or unfamiliar syntax because I knew I had something to lean on. Now that's as close to pair programming as possible without having to add an extra chair , IMHO. So Why all this raving about IDEA? Because I want to see Microsoft do it even better. I know they can when they put their minds to it (we've all seen it a million times before) and I wish this would be one of those things. Can we have that? please? **Update:** About Vb.Net refactoring: [This hits the mark](http://www16.brinkster.com/messydesk/db/refactvb.asp) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 24, 2003 ### [Introducing: Extensibility Application Block](https://osherove.com/blog/2003/11/24/introducing-extensibility-application-block.html) - Nov 20, 2003 ### [DotNetNuke Rocks!](https://osherove.com/blog/2003/11/20/dotnetnuke-rocks.html) - Nov 17, 2003 ### [Why are typed data tables columns declared "internal"?](https://osherove.com/blog/2003/11/17/why-are-typed-data-tables-columns-declared-quotinternalquot.html) - Nov 14, 2003 ### [The Regulator 1.02b is out](https://osherove.com/blog/2003/11/14/the-regulator-102b-is-out.html) --- title: "Thanks for your help" url: "https://osherove.com/blog/2003/11/17/thanks-for-your-help.md" canonical: "https://osherove.com/blog/2003/11/17/thanks-for-your-help.html" published: "2003-11-17T12:16:00" updated: "2003-11-17T12:16:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Thanks for all the great feedback on my “Renaming The Regulator” dilemma. It seems that most of you actually like the current name, so who am I to argue with success? Thanks. And please post comments suggestions of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Thanks for your help By Roy Osherove November 17, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 17, 2003; technical details may be outdated. Thanks for all the great feedback on my “Renaming The Regulator” dilemma. It seems that most of you actually like the current name, so who am I to argue with success? Thanks. And please post comments suggestions of things and you'd like to see in the next versions. Heh. Should I start giving them out code names like “Francisco”, “Junebug”, “Salmon”.... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 21, 2003 ### [The Letter I should have written back](https://osherove.com/blog/2003/11/21/the-letter-i-should-have-written-back.html) - Nov 21, 2003 ### [The Regulator gets its first "real" review](https://osherove.com/blog/2003/11/21/the-regulator-gets-its-first-quotrealquot-review.html) - Nov 15, 2003 ### [Help me rename The Regulator](https://osherove.com/blog/2003/11/15/help-me-rename-the-regulator.html) - Nov 12, 2003 ### [Technical writing - The complete idiot's guide](https://osherove.com/blog/2003/11/12/technical-writing-the-complete-idiots-guide.html) --- title: "Why are typed data tables columns declared \"internal\"?" url: "https://osherove.com/blog/2003/11/17/why-are-typed-data-tables-columns-declared-quotinternalquot.md" canonical: "https://osherove.com/blog/2003/11/17/why-are-typed-data-tables-columns-declared-quotinternalquot.html" published: "2003-11-17T11:36:00" updated: "2003-11-17T11:36:00" tags: [".Net Original"] author: "Roy Osherove" description: "Here's a question that Oskar Austegard left in response to what I wrote ,oh such a long time ago(6 months?), about typed datasets being scalable : How exactly does one go about using a TDS effectively in a different…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why are typed data tables columns declared "internal"? By Roy Osherove November 17, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published November 17, 2003; technical details may be outdated. Here's a question that Oskar Austegard left in response to what I wrote ,oh such a long time ago(6 months?), about [typed datasets being scalable](http://weblogs.asp.net/rosherove/posts/6489.aspx): _How exactly does one go about using a TDS effectively in a different project, given that the DataColumns are marked as internal? Say I have the folowing solution with three projects: MySol \* DAL \* Entities \* Web If I create all my TDS in the Entities project, how will I be able to reference the DataColumn properties from within the DAL or Web project? This appears to me to be a major drawback of using TDS - at least as VS.NET generates them. Thanks, Oskar_ **My response:** Hi Oskar. These are declared internal because what you **really** want to use from external components are the "public" properties that each typed row exposes which are essentially the columns that you are looking for. For example, you should get a CustomersDatatable\[rowindex\].CustomerName if you want the value for the customer name column for a specific row. you can also get a “regular“ row by doing CustomersDatatable.Rows\[rowindex\] and casting it to a “CustomersDataRow“ object which will again provide you with all the properties you are looking for. So why hide the columns themselves? I asked [Mike Gunderloy](http://www.larkware.com/) and he came up with a reasonable explanation: To keep all that column access logic in one place (such as null return values and so on). Sounds reasonable to me.. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 20, 2003 ### [DotNetNuke Rocks!](https://osherove.com/blog/2003/11/20/dotnetnuke-rocks.html) - Nov 17, 2003 ### [VS.Net refactoring Lessons from IntelliJ IDEA (redux)](https://osherove.com/blog/2003/11/17/vsnet-refactoring-lessons-from-intellij-idea-redux.html) - Nov 14, 2003 ### [The Regulator 1.02b is out](https://osherove.com/blog/2003/11/14/the-regulator-102b-is-out.html) - Nov 5, 2003 ### [\[Tool\] The Regulator 1.02a is out](https://osherove.com/blog/2003/11/5/tool-the-regulator-102a-is-out.html) --- title: "Help me rename The Regulator" url: "https://osherove.com/blog/2003/11/15/help-me-rename-the-regulator.md" canonical: "https://osherove.com/blog/2003/11/15/help-me-rename-the-regulator.html" published: "2003-11-15T22:49:00" updated: "2003-11-15T22:49:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm thinking that “ The regulator ” is not catchy enough. I'm looking to rename it. Got any suggestions? I really like: Regexor Regex Commander but so far these are the best I could come up with. Care to help me and win…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Help me rename The Regulator By Roy Osherove November 15, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 15, 2003; technical details may be outdated. I'm thinking that “[The regulator](http://royo.is-a-geek.com/regulator)” is not catchy enough. I'm looking to rename it. Got any suggestions? I really like: - **Regexor** - **Regex Commander** but so far these are the best I could come up with. Care to help me and win  a credit for the name in the “About” page?  It would also be cool if there was a domain name that could easily be registered with that name (not surprisingly, anything with”regulator” inside is already registered). If you have a suggestion, comment it on this post. I'll be happy to hear anything. Thanks. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 21, 2003 ### [The Regulator gets its first "real" review](https://osherove.com/blog/2003/11/21/the-regulator-gets-its-first-quotrealquot-review.html) - Nov 17, 2003 ### [Thanks for your help](https://osherove.com/blog/2003/11/17/thanks-for-your-help.html) - Nov 12, 2003 ### [Technical writing - The complete idiot's guide](https://osherove.com/blog/2003/11/12/technical-writing-the-complete-idiots-guide.html) - Nov 12, 2003 ### [The predictable history of a programmer (reloaded)](https://osherove.com/blog/2003/11/12/the-predictable-history-of-a-programmer-reloaded.html) --- title: "MSDN chats RSS feed? you got it." url: "https://osherove.com/blog/2003/11/14/msdn-chats-rss-feed-you-got-it.md" canonical: "https://osherove.com/blog/2003/11/14/msdn-chats-rss-feed-you-got-it.html" published: "2003-11-14T23:55:00" updated: "2003-11-14T23:55:00" tags: ["Cool sites"] author: "Roy Osherove" description: "Duncan posted about the MSDN chats homepage and how badly it needs an RSS feed so... MSDN chats RSS feed courtesy of Feedable Also of interest might be the new RSS feed I created for Usability News Update : Oh, and Andy…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSDN chats RSS feed? you got it. By Roy Osherove November 14, 2003 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published November 14, 2003; technical details may be outdated. [Duncan posted about the MSDN chats homepage](http://weblogs.asp.net/duncanma/posts/37666.aspx) and how badly it needs an RSS feed so... [MSDN chats RSS feed](http://royo.is-a-geek.com/siteFeeder/GetFeed.aspx?FeedId=47) courtesy of [Feedable](http://royo.is-a-geek.com/siteFeeder) Also of interest might be the new [RSS feed](http://royo.is-a-geek.com/siteFeeder/GetFeed.aspx?FeedId=51) I created for [Usability News](http://www.usabilitynews.com/) **Update**: Oh, and [Andy Oakly](http://blogs.gotdotnet.com/aoakley/), a program manager on MSDN, gives us an [important tidbit](http://blogs.gotdotnet.com/aoakley/PermaLink.aspx/e17fcdf1-6f12-4d87-b3b5-cd58c2c48045) from the [GotDotNet workspaces late-breaking issues page](http://www.gotdotnet.com/community/workspaces/docs/readme.aspx) - about problems downloading release files on certain situations. That page also looks like I'm never going to remember to visit it, so... [The GotDotNet workspaces late-breaking issues RSS feed](http://royo.is-a-geek.com/siteFeeder/GetFeed.aspx?FeedId=53) is here ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Nov 28, 2003 ### [Cool Site: divil.co.uk](https://osherove.com/blog/2003/11/28/cool-site-divilcouk.html) - Nov 19, 2003 ### [SQLTeam rules: Cool tip + cool RSS feed= goodness in the blogsphere](https://osherove.com/blog/2003/11/19/sqlteam-rules-cool-tip-cool-rss-feed-goodness-in-the-blogsph.html) - Nov 6, 2003 ### [Feedable is Scriptable](https://osherove.com/blog/2003/11/6/feedable-is-scriptable.html) - Oct 8, 2003 ### [Introducing SiteFeeder](https://osherove.com/blog/2003/10/8/introducing-sitefeeder.html) --- title: "Making the F-lock key on your MS keyboard ON by default" url: "https://osherove.com/blog/2003/11/14/making-the-f-lock-key-on-your-ms-keyboard-on-by-default.md" canonical: "https://osherove.com/blog/2003/11/14/making-the-f-lock-key-on-your-ms-keyboard-on-by-default.html" published: "2003-11-14T19:50:00" updated: "2003-11-14T19:50:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "The Furrygoat points to a reg file that allows to to change you F-Lock key (found on the new MS keyboards) to be set to “normal” by default (right now when you boot you have to manually remember and flip it to “on” , if…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Making the F-lock key on your MS keyboard ON by default By Roy Osherove November 14, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 14, 2003; technical details may be outdated. [The Furrygoat points to a reg file](http://www.furrygoat.com/archives/000756.html) that allows to to change you F-Lock key (found on the new MS keyboards) to be set to “normal” by default (right now when you boot you have to manually remember and flip it to “on” , if you even remember to realize why you F keys aren't working like they should). Since I just got the MS natural multimedia keyboard recently, this “feature” certainly got me several times already. Now it's gone. Thank god. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Nov 18, 2003 ### [New Regulator version (last one on this blog)](https://osherove.com/blog/2003/11/18/new-regulator-version-last-one-on-this-blog.html) - Nov 18, 2003 ### [2 possible gems in MS downloads](https://osherove.com/blog/2003/11/18/2-possible-gems-in-ms-downloads.html) - Nov 14, 2003 ### [The Regulator 1.02b is out](https://osherove.com/blog/2003/11/14/the-regulator-102b-is-out.html) - Nov 11, 2003 ### [\[Document\] Port Requirements for Microsoft Windows Server System](https://osherove.com/blog/2003/11/11/document-port-requirements-for-microsoft-windows-server-syst.html) --- title: "The Regulator 1.02b is out" url: "https://osherove.com/blog/2003/11/14/the-regulator-102b-is-out.md" canonical: "https://osherove.com/blog/2003/11/14/the-regulator-102b-is-out.html" published: "2003-11-14T13:36:00" updated: "2003-11-14T13:36:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "Download from GDN workspace, or get there from the Regulator Homepage I'd like to thank Mike Gunderloy and SBC for giving me lots of feedback on needed features and broken things. I'd appreciate more feedback from…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator 1.02b is out By Roy Osherove November 14, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 14, 2003; technical details may be outdated. [Download](http://workspaces.gotdotnet.com/reg) from GDN workspace, or get there from the [Regulator Homepage](http://royo.is-a-geek.com/regulator)  I'd like to thank [Mike Gunderloy](http://www.larkware.com/) and [SBC](http://weblogs.asp.net/sbchatterjee) for giving me lots of feedback on needed features and broken things. I'd appreciate more feedback from everyone on this (see the “help->comments/suggestions“ menu for easy access from the program itself).  The more feedback I get, the better features we all get. **Your help needed**:  I'm looking for anyone who would like to contribute articles/references they have written about regex to be included in the Help/reference file that I want to add to the regulator. I ultimately want this to be a central place to look for help and references on regex subjects (with the web service integration this should be pretty powerful). If you'd like to contribute anything of yours, please contact me or leave a comment on this post. Together we can make this a cool community project that everyone benefits from :) **What's new:** **IMPORTANT:** _on the first use with this new version - "settings.config" file will be OVERWRITTEN . this means losing your recent documents list and proxy settings and all other user settings such as regexlib identity. This will only occur once._  This version is less about new features and more about “finishing touches” and filling in the blanks.       \-added:   Settings file is now encrypted \-added: each document will now show its file name(if saved) in the tab header \-added: open/save dialogs now have "all files" option as well. \-added: the ability to put tabbed documents into "groups".     Just drag a document tab to the right or bottom of the screen and wait a second for the menu to show up. \-added: most editor settings such as font, fore color and others    are now saved between sessions       (right click on active text editor and select "options") \-added: docking windows state is now saved between sessions \-fixed:   bad Form size settings were saved when form was minimized which caused it to load invisible \-fixed: visible but collapsed panes were not activated on shortcut keys \-fixed: perf chart would sometimes show matches and replaces without context \-fixed: Perf chart now shows better formatted numbers \-fixed: initial tree node selection after running a match would sometimes not be at the root node \-modified: Docking panes are now using Syncfusion controls instead of Magic controls \-modified: "Toolbox" is now called "snippets" both on menu and on pane \-modified: Minimize to tray is now turned off by default \-modified: Context menu on web search form reformatted for better description of actions ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 17, 2003 ### [VS.Net refactoring Lessons from IntelliJ IDEA (redux)](https://osherove.com/blog/2003/11/17/vsnet-refactoring-lessons-from-intellij-idea-redux.html) - Nov 17, 2003 ### [Why are typed data tables columns declared "internal"?](https://osherove.com/blog/2003/11/17/why-are-typed-data-tables-columns-declared-quotinternalquot.html) - Nov 5, 2003 ### [\[Tool\] The Regulator 1.02a is out](https://osherove.com/blog/2003/11/5/tool-the-regulator-102a-is-out.html) - Nov 4, 2003 ### [\[Article X 2\] 2 more of mine published on MSDNAA](https://osherove.com/blog/2003/11/4/article-x-2-2-more-of-mine-published-on-msdnaa.html) --- title: "Using NAnt? Download NAntPad - for visual NAnt build configuration" url: "https://osherove.com/blog/2003/11/12/using-nant-download-nantpad-for-visual-nant-build-configurat.md" canonical: "https://osherove.com/blog/2003/11/12/using-nant-download-nantpad-for-visual-nant-build-configurat.html" published: "2003-11-12T23:31:00" updated: "2003-11-12T23:31:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "If you're using NAnt and editing your NAnt files by hand, stop right there. Go and download NAntPad - a GUI app that lets you visually configure your build and then spits out the XML file. Simple and easy. [via James…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Using NAnt? Download NAntPad - for visual NAnt build configuration By Roy Osherove November 12, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published November 12, 2003; technical details may be outdated. If you're using [NAnt](http://nant.sourceforge.net/) and editing your NAnt files by hand, stop right there. Go and download [NAntPad](http://www.nantpad.com/default.aspx) - a GUI app that lets you visually configure your build and then spits out the XML file. Simple and easy. \[via [James Avery](http://weblogs.asp.net/javery/posts/37230.aspx) via [Patrick Cauldwell](http://www.cauldwell.net/patrick/blog/PermaLink.aspx?guid=b7d28a15-669f-41dc-b2d0-fc7ff9b4209f)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 19, 2003 ### [SQLTeam rules: Cool tip + cool RSS feed= goodness in the blogsphere](https://osherove.com/blog/2003/11/19/sqlteam-rules-cool-tip-cool-rss-feed-goodness-in-the-blogsph.html) - Nov 18, 2003 ### [The dynamic SQL discussion is a must read](https://osherove.com/blog/2003/11/18/the-dynamic-sql-discussion-is-a-must-read.html) - Nov 12, 2003 ### [Great SQL tip: @@IDENTITY==bad, scope\_identity()==good](https://osherove.com/blog/2003/11/12/great-sql-tip-identitybad-scope_identitygood.html) - Nov 12, 2003 ### [Longhorn PDC bits download available for MSDN subscribers](https://osherove.com/blog/2003/11/12/longhorn-pdc-bits-download-available-for-msdn-subscribers.html) --- title: "Technical writing - The complete idiot's guide" url: "https://osherove.com/blog/2003/11/12/technical-writing-the-complete-idiots-guide.md" canonical: "https://osherove.com/blog/2003/11/12/technical-writing-the-complete-idiots-guide.html" published: "2003-11-12T23:22:00" updated: "2003-11-12T23:22:00" tags: ["Cool Articles", "Off Topic"] author: "Roy Osherove" description: "Leon Bambrick was probably in a really good mood, because he read my previous rant about how hard it is to write technical help docs and decided he would write a short guide in the comments to that post. It turned out…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Technical writing - The complete idiot's guide By Roy Osherove November 12, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 12, 2003; technical details may be outdated. [Leon Bambrick](https://osherove.com/blog/2003/11/12/www16.brinkster.com/messydesk/db/index.asp) was probably in a really good mood, because he read my [previous rant](http://weblogs.asp.net/rosherove/posts/37085.aspx) about how hard it is to write technical help docs and decided he would write a short guide in the comments to that post. It turned out to be a master piece of simplicity and elegance. Thanks leon. :) Here's what he wrote: **Technical Writing: breadth first with iteration.** writing, whether technical or creative, always has defects. it never has the elegance of code, it can never be evaluated completely. there are always more ways you can look at it. so accept that it's going to be bland and imperfect and boring. accept that very few people are going to read it or refer to it. all you have to know is that when people do, they'll be able to get nice simple instructions that will lead them to the answer they are looking for. use lots of sub headings. sub headings are easy to write. (if you can't even write the subheadings then you're really in trouble) write enough sub headings the thing is practically done. That's your first draft. Print it out. Give yourself a pat on the back. write very quick notes under each sub heading. print it out and re-read it, judging it only for its truthfulness and its completeness. Do not parse it for grammar, style, sophistication, sexiness or anything else. Where it isn't complete, add More notes. Where it isn't truthful, make it truthful. Ugly is fine. Stupid is okay. Boring is expected. Just make it truthful and complete. Now print that out. that's your second draft. You've earned another pat on the back. now track down your sub-editor. This is probably your wife/secretary/mother - someone who is not your boss, who loves you unconditionally, who is not as technical as you (they're NOT concerned with the facts or the completeness of what you've written.) Please with them until they agree to read through it with you. They love you unconditionally, so they will agree. They won't hate what you've written, but they'll know which problems of style are the important ones. And once you've read it through with them, you will too. The third draft's the charm. once that's done, send it out into the world. You've wasted enough time already. cheers Leon bambrick [www16.brinkster.com/messydesk/db/index.asp](https://osherove.com/blog/2003/11/12/www16.brinkster.com/messydesk/db/index.asp) ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Nov 27, 2003 ### [Good advice for presentations, scholarly and otherwise](https://osherove.com/blog/2003/11/27/good-advice-for-presentations-scholarly-and-otherwise.html) - Nov 27, 2003 ### [Step by step:an asynchronous sockets terminal client Vb.Net](https://osherove.com/blog/2003/11/27/step-by-stepan-asynchronous-sockets-terminal-client-vbnet.html) - Nov 4, 2003 ### [\[Article X 2\] 2 more of mine published on MSDNAA](https://osherove.com/blog/2003/11/4/article-x-2-2-more-of-mine-published-on-msdnaa.html) - Nov 4, 2003 ### [\[Article/Code\]: Easy Proxy handling through the ProxyFactory and ProxyInfo classes](https://osherove.com/blog/2003/11/4/articlecode-easy-proxy-handling-through-the-proxyfactory-and.html) --- title: "The predictable history of a programmer (reloaded)" url: "https://osherove.com/blog/2003/11/12/the-predictable-history-of-a-programmer-reloaded.md" canonical: "https://osherove.com/blog/2003/11/12/the-predictable-history-of-a-programmer-reloaded.html" published: "2003-11-12T22:24:00" updated: "2003-11-12T22:24:00" tags: ["Off Topic"] author: "Roy Osherove" description: "How many of us can say these things on their own \"about\" page? Probably most , with minor modification. I suggest a global \"About me\" page, something like the following: The history of : _________________ _______…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The predictable history of a programmer (reloaded) By Roy Osherove November 12, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 12, 2003; technical details may be outdated. How many of us can say these things on their own "about" page? Probably most , with minor modification. I suggest a global "About me" page, something like the following: The history of : \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ \_\_\_\_\_\_\_   started his/her obsession with programming when at around the age of \_\_\_\_\_ he/she started learning BASIC on his/her computer of type  \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_(\_.\_kb of raw power!). The addiction has never been kicked and since \_\_\_\_\_\_ has concentrated on \_\_\_\_\_\_\_\_\_\_\_. When the technology of \_\_\_\_\_\_\_\_ by \_\_\_\_\_\_\_ first came out, he/she decided that that is the direction they want to follow, and have learned for their \_\_\_\_\_ title and are now \_\_\_\_\_\_ at \_\_\_\_\_\_\_ for the past \_\_\_ years. _\[this has been taken from_ [_my own post_](http://weblogs.asp.net/rosherove/posts/2948.aspx) _from the first month of this blog. Yes. I'm officially out of material, thanks for asking\]_ perhaps we can make an InfoPath form out of this? Anyway. I thought I'd jump in to the fray with my own little history tidbit. This being history, I thought I'd, again, point to an old post of mine, which tells the story of [Telix,BBS, and world domination](http://weblogs.asp.net/rosherove/posts/4893.aspx). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 15, 2003 ### [Help me rename The Regulator](https://osherove.com/blog/2003/11/15/help-me-rename-the-regulator.html) - Nov 12, 2003 ### [Technical writing - The complete idiot's guide](https://osherove.com/blog/2003/11/12/technical-writing-the-complete-idiots-guide.html) - Nov 12, 2003 ### [Web Designer/Graphic Artist/Receptionist](https://osherove.com/blog/2003/11/12/web-designergraphic-artistreceptionist.html) - Nov 12, 2003 ### [Writing help is... challenging](https://osherove.com/blog/2003/11/12/writing-help-is-challenging.html) --- title: "Great SQL tip: @@IDENTITY==bad, scope_identity()==good" url: "https://osherove.com/blog/2003/11/12/great-sql-tip-identitybad-scope_identitygood.md" canonical: "https://osherove.com/blog/2003/11/12/great-sql-tip-identitybad-scope_identitygood.html" published: "2003-11-12T21:27:00" updated: "2003-11-12T21:27:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "And another tip discovered by Sirsha . This time it's from SQLTeam . A very good SQL Server tip that I really must cling to! The gist: Use scope_identity() rather than @@IDENTITY or you might not get what you're looking…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Great SQL tip: @@IDENTITY==bad, scope\_identity()==good By Roy Osherove November 12, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published November 12, 2003; technical details may be outdated. And [another tip](http://hdconsultants.us/posts/239.aspx) discovered by [Sirsha](http://hdconsultants.us/). This time it's from [SQLTeam](http://www.sqlteam.com/). A very good SQL Server tip that I really must cling to! **The gist: Use scope\_identity() rather than @@IDENTITY or you might not get what you're looking for.** _“ManyTSQL books show you how to use @@Identity to get the identity of the most recently added row. Many articles online, or in magazines show the same. What you might not know is that it is potentially a source for some very hard to trace bugs in your application._ _@@Identity is potentially a very, very bad thing! In almost every case, you should use scope\_identity() instead._ _Why? @@Identity returns the most recently created identity for your current connection. When you first use it, it might be fine. Until someone adds a trigger. If the trigger causes another identity to be created, guess which identity you'll get in your call to @@Identity? Not nice._ _scope\_identity() is much nicer. It gives you what you're expecting.”_ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 18, 2003 ### [The dynamic SQL discussion is a must read](https://osherove.com/blog/2003/11/18/the-dynamic-sql-discussion-is-a-must-read.html) - Nov 12, 2003 ### [Using NAnt? Download NAntPad - for visual NAnt build configuration](https://osherove.com/blog/2003/11/12/using-nant-download-nantpad-for-visual-nant-build-configurat.html) - Nov 12, 2003 ### [Longhorn PDC bits download available for MSDN subscribers](https://osherove.com/blog/2003/11/12/longhorn-pdc-bits-download-available-for-msdn-subscribers.html) - Nov 12, 2003 ### [BitVector32 has a bug. Here's a good replacement](https://osherove.com/blog/2003/11/12/bitvector32-has-a-bug-heres-a-good-replacement.html) --- title: "Web Designer/Graphic Artist/Receptionist" url: "https://osherove.com/blog/2003/11/12/web-designergraphic-artistreceptionist.md" canonical: "https://osherove.com/blog/2003/11/12/web-designergraphic-artistreceptionist.html" published: "2003-11-12T21:17:00" updated: "2003-11-12T21:17:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It really hurts when you're reading the paper and find a job listing such as this: Web Designer/Graphic Artist/Receptionist [Name removed to protect the idiotic] has an exciting opportunity in the south Charlotte, NC…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Web Designer/Graphic Artist/Receptionist By Roy Osherove November 12, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 12, 2003; technical details may be outdated. It really hurts when you're reading the paper and find a job listing such as this: _**Web Designer/Graphic Artist/Receptionist ** \[Name removed to protect the idiotic\] has an exciting opportunity in the south Charlotte, NC area for an individual that loves to wear many hats! This unique position requires someone that has a great personality and a creative flare! ..._ \[via [Sirsha](http://hdconsultants.us/posts/255.aspx)\] I'm reminded of one of the places I worked in. It was a startup. Some of the C++ devs actually had to fill in for the secretary if she was sick, taking the day of, or creating presentations on the boss's laptop. If I remember correctly, one of the C++ devs was also forced into designing the company “site” using Frontpage (he had no web experience). Ah. Good times. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 12, 2003 ### [Technical writing - The complete idiot's guide](https://osherove.com/blog/2003/11/12/technical-writing-the-complete-idiots-guide.html) - Nov 12, 2003 ### [The predictable history of a programmer (reloaded)](https://osherove.com/blog/2003/11/12/the-predictable-history-of-a-programmer-reloaded.html) - Nov 12, 2003 ### [Writing help is... challenging](https://osherove.com/blog/2003/11/12/writing-help-is-challenging.html) - Nov 12, 2003 ### [Israel .Net user group meeting today - Advanced debugging techniques](https://osherove.com/blog/2003/11/12/israel-net-user-group-meeting-today-advanced-debugging-techn.html) --- title: "Longhorn PDC bits download available for MSDN subscribers" url: "https://osherove.com/blog/2003/11/12/longhorn-pdc-bits-download-available-for-msdn-subscribers.md" canonical: "https://osherove.com/blog/2003/11/12/longhorn-pdc-bits-download-available-for-msdn-subscribers.html" published: "2003-11-12T20:40:00" updated: "2003-11-12T20:40:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "That's right - the same bits of Longhorn preview available at the PDC are now available to download (MSDN subscribers only). I guessing slowly, as everyone in the world hits the servers at the same time. [via Philip…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Longhorn PDC bits download available for MSDN subscribers By Roy Osherove November 12, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published November 12, 2003; technical details may be outdated. _That's right - the same bits of Longhorn preview available at the PDC are now_ [_available to download_](http://msdn.microsoft.com/subscriptions/downloads/default.asp) _(MSDN subscribers only).  I guessing slowly, as everyone in the world hits the servers at the same time._ \[via [Philip Rieck](https://osherove.com/prieck/)\] **Alright**! (Now I just need a new machine to install these on... VMWare will make it run oh so slowly!) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 12, 2003 ### [Using NAnt? Download NAntPad - for visual NAnt build configuration](https://osherove.com/blog/2003/11/12/using-nant-download-nantpad-for-visual-nant-build-configurat.html) - Nov 12, 2003 ### [Great SQL tip: @@IDENTITY==bad, scope\_identity()==good](https://osherove.com/blog/2003/11/12/great-sql-tip-identitybad-scope_identitygood.html) - Nov 12, 2003 ### [BitVector32 has a bug. Here's a good replacement](https://osherove.com/blog/2003/11/12/bitvector32-has-a-bug-heres-a-good-replacement.html) - Nov 11, 2003 ### [Brumme is alive again, and a small question](https://osherove.com/blog/2003/11/11/brumme-is-alive-again-and-a-small-question.html) --- title: "BitVector32 has a bug. Here's a good replacement" url: "https://osherove.com/blog/2003/11/12/bitvector32-has-a-bug-heres-a-good-replacement.md" canonical: "https://osherove.com/blog/2003/11/12/bitvector32-has-a-bug-heres-a-good-replacement.html" published: "2003-11-12T17:10:00" updated: "2003-11-12T17:10:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Sebastian Lambla has created a replacement for the BitVector32 class in the framework. The original has a nasty bug in it : the indexer always returns false for bit #31 . Sebastian decided he needed more flexibility…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BitVector32 has a bug. Here's a good replacement By Roy Osherove November 12, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published November 12, 2003; technical details may be outdated. [Sebastian Lambla](http://thetechnologist.is-a-geek.com/blog/) has created a [replacement for the BitVector32 class](http://thetechnologist.is-a-geek.com/blog/PermaLink.aspx?guid=fa184c52-b602-4838-95e1-00c7fca09d8d) in the framework. The original has a nasty bug in it : [the indexer always returns false for bit #31](http://weblogs.asp.net/rosherove/posts/10270.aspx). Sebastian decided he needed more flexibility from it anyway so he recreated it from scratch. Very cool. Great work. You can download the class in a [zip file from his post](http://thetechnologist.is-a-geek.com/blog/PermaLink.aspx?guid=fa184c52-b602-4838-95e1-00c7fca09d8d). ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 12, 2003 ### [Great SQL tip: @@IDENTITY==bad, scope\_identity()==good](https://osherove.com/blog/2003/11/12/great-sql-tip-identitybad-scope_identitygood.html) - Nov 12, 2003 ### [Longhorn PDC bits download available for MSDN subscribers](https://osherove.com/blog/2003/11/12/longhorn-pdc-bits-download-available-for-msdn-subscribers.html) - Nov 11, 2003 ### [Brumme is alive again, and a small question](https://osherove.com/blog/2003/11/11/brumme-is-alive-again-and-a-small-question.html) - Nov 8, 2003 ### [Hijacking .NET Volume 2: Protecting your Code](https://osherove.com/blog/2003/11/8/hijacking-net-volume-2-protecting-your-code.html) --- title: "Writing help is... challenging" url: "https://osherove.com/blog/2003/11/12/writing-help-is-challenging.md" canonical: "https://osherove.com/blog/2003/11/12/writing-help-is-challenging.html" published: "2003-11-12T10:10:00" updated: "2003-11-12T10:10:00" tags: ["Off Topic"] author: "Roy Osherove" description: "God I hate writing help files. I'll never be able to be a technical writer. How do those people do it? There are actually technical writing sites that are devoted to the love of the profession. I seriously admire these…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Writing help is... challenging By Roy Osherove November 12, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 12, 2003; technical details may be outdated. God I hate writing help files. I'll never be able to be a technical writer. How do those people do it? There are actually technical writing sites that are devoted to the love of the profession. I seriously admire these people. It takes nothing but love and hard work to be good at this (much like C++..?). And all I'm trying to do is make a simple help file on The Regulator. Geez. You'd think I'd have done it by now, 4 days after starting, but no. I only have like one page and a basket full of chocolate wrappings(kidding... we're trying to have the least amount of chocolate available in the house, specifically for situations such as this). So. any suggestions? anyone **else** wants to help me write this thing? I promise a serious credit in the about :) To be honest, I've never had to do this before. Sure, I've written many technical documents, but documents that say “click this then you'lll see this so click that to get this” are simply ....ugh! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 12, 2003 ### [The predictable history of a programmer (reloaded)](https://osherove.com/blog/2003/11/12/the-predictable-history-of-a-programmer-reloaded.html) - Nov 12, 2003 ### [Web Designer/Graphic Artist/Receptionist](https://osherove.com/blog/2003/11/12/web-designergraphic-artistreceptionist.html) - Nov 12, 2003 ### [Israel .Net user group meeting today - Advanced debugging techniques](https://osherove.com/blog/2003/11/12/israel-net-user-group-meeting-today-advanced-debugging-techn.html) - Nov 12, 2003 ### [Creative writing technique](https://osherove.com/blog/2003/11/12/creative-writing-technique.html) --- title: "Israel .Net user group meeting today - Advanced debugging techniques" url: "https://osherove.com/blog/2003/11/12/israel-net-user-group-meeting-today-advanced-debugging-techn.md" canonical: "https://osherove.com/blog/2003/11/12/israel-net-user-group-meeting-today-advanced-debugging-techn.html" published: "2003-11-12T09:54:00" updated: "2003-11-12T09:54:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Where: Microsoft offices, ra'anana (near amdocs) Gathering at 17:00 Starting at 17:45 Topic: Advanced debugging techniques Debug symbols Production Debugging Opening up Microsoft’s source code Known Problems Tips and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel .Net user group meeting today - Advanced debugging techniques By Roy Osherove November 12, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 12, 2003; technical details may be outdated. **Where: Microsoft offices, ra'anana (near amdocs)** **Gathering at 17:00** **Starting at 17:45** **Topic: Advanced debugging techniques** -  Debug symbols -  Production Debugging -  Opening up Microsoft’s source code -  Known Problems -  Tips and tips -  Longhorn Applications - Preview. -  Impressions from PDC 2003 Lecturer: [Yosi Taguri](http://weblogs.asp.net/yosit) Having seen this lecture on a a different occasion I can heartily recommend it as “cool and informational“ :) **[Full details](http://www.microsoft.com/israel/events/default.aspx?pageType=1&idType=1&id=36)** ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 12, 2003 ### [Web Designer/Graphic Artist/Receptionist](https://osherove.com/blog/2003/11/12/web-designergraphic-artistreceptionist.html) - Nov 12, 2003 ### [Writing help is... challenging](https://osherove.com/blog/2003/11/12/writing-help-is-challenging.html) - Nov 12, 2003 ### [Creative writing technique](https://osherove.com/blog/2003/11/12/creative-writing-technique.html) - Nov 11, 2003 ### [Multiple==Good](https://osherove.com/blog/2003/11/11/multiplegood.html) --- title: "Creative writing technique" url: "https://osherove.com/blog/2003/11/12/creative-writing-technique.md" canonical: "https://osherove.com/blog/2003/11/12/creative-writing-technique.html" published: "2003-11-12T09:16:00" updated: "2003-11-12T09:16:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Johanna Rothman keeps two blogs that I know of: Managing Product Development and Hiring Technical People . Both are excellent blogs that talk about totally different facets of our technology world. Today I read a post…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Creative writing technique By Roy Osherove November 12, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 12, 2003; technical details may be outdated. [Johanna Rothman](http://www.jrothman.com/) keeps two blogs that I know of: [Managing Product Development](http://www.jrothman.com/weblog/blogger.html) and [Hiring Technical People](http://www.jrothman.com/weblog/htpblogger.html) . Both are excellent blogs that talk about totally different facets of our technology world. Today I read a post that talks about '[Timed writing](http://www.jrothman.com/weblog/archive/2003_11_01_mpdarchive.html#10685115485560526)”. Looks like an excellent way to drive your **real** article idea out there and then refining it. It's all about setting the mind with limits so that you can think “in a time box” that lets you extract merely the essence of what you want to express. Then you write it in a bigger time box and the results seem to be very creative indeed. I'm not sure how to start, but I'm going to try it myself. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 12, 2003 ### [Writing help is... challenging](https://osherove.com/blog/2003/11/12/writing-help-is-challenging.html) - Nov 12, 2003 ### [Israel .Net user group meeting today - Advanced debugging techniques](https://osherove.com/blog/2003/11/12/israel-net-user-group-meeting-today-advanced-debugging-techn.html) - Nov 11, 2003 ### [Multiple==Good](https://osherove.com/blog/2003/11/11/multiplegood.html) - Nov 10, 2003 ### [You can subscribe to this weblog - here's how](https://osherove.com/blog/2003/11/10/you-can-subscribe-to-this-weblog-heres-how.html) --- title: "[Document] Port Requirements for Microsoft Windows Server System" url: "https://osherove.com/blog/2003/11/11/document-port-requirements-for-microsoft-windows-server-syst.md" canonical: "https://osherove.com/blog/2003/11/11/document-port-requirements-for-microsoft-windows-server-syst.html" published: "2003-11-11T13:49:00" updated: "2003-11-11T13:49:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "This looks like it could come in real handy come time to configure your firewalls for repaved servers. Microsoft released an Excel sheet that lists all the ports that MS products use with this data: port,protocol,System…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Document\] Port Requirements for Microsoft Windows Server System By Roy Osherove November 11, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 11, 2003; technical details may be outdated. This looks like it could come in real handy come time to configure your firewalls for repaved servers. Microsoft released an Excel sheet that lists all the ports that MS products use with this data: port,protocol,System Service and service logical name. [Port Requirements for Microsoft Windows Server System](http://www.microsoft.com/downloads/details.aspx?FamilyID=e114b7e5-400f-45b6-9e1c-50968a0cc729&DisplayLang=en)  Email your sysadmin. \[via [Microsoft recent downloads RSS feed](http://royo.is-a-geek.com/siteFeeder/GetFeed.aspx?FeedId=42)\] ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Nov 14, 2003 ### [Making the F-lock key on your MS keyboard ON by default](https://osherove.com/blog/2003/11/14/making-the-f-lock-key-on-your-ms-keyboard-on-by-default.html) - Nov 14, 2003 ### [The Regulator 1.02b is out](https://osherove.com/blog/2003/11/14/the-regulator-102b-is-out.html) - Nov 9, 2003 ### [\[Tool\] - cool (free) news reader](https://osherove.com/blog/2003/11/9/tool-cool-free-news-reader.html) - Nov 6, 2003 ### [C# Programmable Calculator](https://osherove.com/blog/2003/11/6/c-programmable-calculator.html) --- title: "Multiple==Good" url: "https://osherove.com/blog/2003/11/11/multiplegood.md" canonical: "https://osherove.com/blog/2003/11/11/multiplegood.html" published: "2003-11-11T12:28:00" updated: "2003-11-11T12:28:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Darrel Norton decided he wants to test for himself (and his team) whether doing multiple monitor setups was better for productivity. He came out with a whopping “yes”. God I wish I could be in a position to do the same…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Multiple==Good By Roy Osherove November 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 11, 2003; technical details may be outdated. [Darrel Norton decided](http://dotnetjunkies.com/WebLog/darrell.norton/posts/3432.aspx) he wants to test for himself (and his team) whether doing multiple monitor setups was better for productivity. He came out with a whopping “yes”. God I wish I could be in a position to do the same thing. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 12, 2003 ### [Israel .Net user group meeting today - Advanced debugging techniques](https://osherove.com/blog/2003/11/12/israel-net-user-group-meeting-today-advanced-debugging-techn.html) - Nov 12, 2003 ### [Creative writing technique](https://osherove.com/blog/2003/11/12/creative-writing-technique.html) - Nov 10, 2003 ### [You can subscribe to this weblog - here's how](https://osherove.com/blog/2003/11/10/you-can-subscribe-to-this-weblog-heres-how.html) - Nov 9, 2003 ### [Jumping into newsgroups](https://osherove.com/blog/2003/11/9/jumping-into-newsgroups.html) --- title: "My new RegexBlog" url: "https://osherove.com/blog/2003/11/11/my-new-regexblog.md" canonical: "https://osherove.com/blog/2003/11/11/my-new-regexblog.html" published: "2003-11-11T09:35:00" updated: "2003-11-11T09:35:00" tags: ["Blogging"] author: "Roy Osherove" description: "I just twisted Darren's arm into making me a part of the new RegexBlogs community he's building. How cool is that? Here's his post about it, and here's my new Regex Blog . I call it “IRegex” .Fitting, don't you think?…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My new RegexBlog By Roy Osherove November 11, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published November 11, 2003; technical details may be outdated. I just twisted [Darren's](http://regexblogs.com/DNeimke/) arm into making me a part of the new [RegexBlogs](http://www.regexblogs.com/) community he's building. How cool is that? Here's [his](http://weblogs.asp.net/dneimke/posts/36882.aspx) post about it, and here's [my new Regex Blog](http://regexblogs.com/royo/). I call it “IRegex” .Fitting, don't you think? Perhaps it should be “ISerializableRegex”? Any other suggestions? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Dec 23, 2003 ### [About the new .Netweblogs features](https://osherove.com/blog/2003/12/23/about-the-new-netweblogs-features.html) - Nov 28, 2003 ### [Welcome Dino, and a word about MSDN articles](https://osherove.com/blog/2003/11/28/welcome-dino-and-a-word-about-msdn-articles.html) - Nov 10, 2003 ### [You can subscribe to this weblog - here's how](https://osherove.com/blog/2003/11/10/you-can-subscribe-to-this-weblog-heres-how.html) - Nov 8, 2003 ### [Blog: The Software Simplist](https://osherove.com/blog/2003/11/8/blog-the-software-simplist.html) --- title: "Brumme is alive again, and a small question" url: "https://osherove.com/blog/2003/11/11/brumme-is-alive-again-and-a-small-question.md" canonical: "https://osherove.com/blog/2003/11/11/brumme-is-alive-again-and-a-small-question.html" published: "2003-11-11T09:24:00" updated: "2003-11-11T09:24:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Chris Brumme , one of my favorite hardcore tech bloggers is writing again. I can't believe I have 2 actual posts from him in sharpreader on the same day. How weird! On a different note - how the heck do I turn off the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Brumme is alive again, and a small question By Roy Osherove November 11, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published November 11, 2003; technical details may be outdated. [Chris Brumme](http://blogs.gotdotnet.com/cbrumme/), one of my favorite hardcore tech bloggers is writing again. I can't believe I have 2 actual posts from him in sharpreader on the same day. How weird! On a different note - how the heck do I turn off the “toast” sliding notifications windows in SharpReader? ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 12, 2003 ### [Longhorn PDC bits download available for MSDN subscribers](https://osherove.com/blog/2003/11/12/longhorn-pdc-bits-download-available-for-msdn-subscribers.html) - Nov 12, 2003 ### [BitVector32 has a bug. Here's a good replacement](https://osherove.com/blog/2003/11/12/bitvector32-has-a-bug-heres-a-good-replacement.html) - Nov 8, 2003 ### [Hijacking .NET Volume 2: Protecting your Code](https://osherove.com/blog/2003/11/8/hijacking-net-volume-2-protecting-your-code.html) - Nov 2, 2003 ### [New CLR Profiler version available](https://osherove.com/blog/2003/11/2/new-clr-profiler-version-available.html) --- title: "You can subscribe to this weblog - here's how" url: "https://osherove.com/blog/2003/11/10/you-can-subscribe-to-this-weblog-heres-how.md" canonical: "https://osherove.com/blog/2003/11/10/you-can-subscribe-to-this-weblog-heres-how.html" published: "2003-11-10T11:00:00" updated: "2003-11-10T11:00:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "It occurred to me that some of the folks who read this weblog have no idea that they don't have to remember to open a browser in order to check if I've added new content. You can actually subscribe to this weblog by…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # You can subscribe to this weblog - here's how By Roy Osherove November 10, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 10, 2003; technical details may be outdated. It occurred to me that some of the folks who read this weblog have no idea that they don't have to remember to open a browser in order to check if I've added new content. You can actually **subscribe** to this weblog by clicking on the small “XML” icon on the top of the page. [Here is a good explanation of what RSS is and how to subscribe to websites who support RSS:](http://www.sellsbrothers.com/spout/#What_Is_An_RSS_Feed) Please read it, and subscribe. You'll always know when I've published a new article or anything else that I write here. Ain't that cool? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Nov 28, 2003 ### [Welcome Dino, and a word about MSDN articles](https://osherove.com/blog/2003/11/28/welcome-dino-and-a-word-about-msdn-articles.html) - Nov 11, 2003 ### [My new RegexBlog](https://osherove.com/blog/2003/11/11/my-new-regexblog.html) - Nov 8, 2003 ### [Blog: The Software Simplist](https://osherove.com/blog/2003/11/8/blog-the-software-simplist.html) - Nov 4, 2003 ### [RSS feeds for your pleasure](https://osherove.com/blog/2003/11/4/rss-feeds-for-your-pleasure.html) --- title: "Jumping into newsgroups" url: "https://osherove.com/blog/2003/11/9/jumping-into-newsgroups.md" canonical: "https://osherove.com/blog/2003/11/9/jumping-into-newsgroups.html" published: "2003-11-09T20:38:00" updated: "2003-11-09T20:38:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I've decided to try and get in on the newsgroup bandwagon. Mostly, I'll be lurking and throwing my 0.02$ around these groups: (all start with “Microsoft.Public.Dotnet“) Framework Framework.adonet Framework.windowsforms…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Jumping into newsgroups By Roy Osherove November 9, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 9, 2003; technical details may be outdated. I've decided to try and get in on the newsgroup bandwagon. Mostly, I'll be lurking and  throwing my 0.02$ around these groups: (all start with “Microsoft.Public.Dotnet“) - Framework - Framework.adonet - Framework.windowsforms - Framework.windowsforms.databinding - Languages.csharp - Languages.vb Got any more suggestions? I'll be using the newsreader I mentioned in my previous post. We'll see how it goes. I've never been a big fan of newsgroups. I don't really know why. Perhaps it's because, 99% of the time, I was able to find an answer for my problems quicker using other sources, mainly Google. But, I'll give it a try. If nothing else, at least I get to try a cool new tool (which is usually my motive for doing anything really). Also, I hear it's the only way in the world to get an MVP (which I think is a stupid measure). Yes folks. Be surprised, but I do have an agenda behind this “selfless” act. I wanna be an MVP and get all those goodies I keep hearing about. Well, that and I generally like to help people. But swag is a great way to thank me for it, don't you think? :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 11, 2003 ### [Multiple==Good](https://osherove.com/blog/2003/11/11/multiplegood.html) - Nov 10, 2003 ### [You can subscribe to this weblog - here's how](https://osherove.com/blog/2003/11/10/you-can-subscribe-to-this-weblog-heres-how.html) - Nov 6, 2003 ### [Feedable is Scriptable](https://osherove.com/blog/2003/11/6/feedable-is-scriptable.html) - Nov 6, 2003 ### [Please, NO SPOILERS](https://osherove.com/blog/2003/11/6/please-no-spoilers.html) --- title: "[Tool] - cool (free) news reader" url: "https://osherove.com/blog/2003/11/9/tool-cool-free-news-reader.md" canonical: "https://osherove.com/blog/2003/11/9/tool-cool-free-news-reader.html" published: "2003-11-09T01:39:00" updated: "2003-11-09T01:39:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "I think I just found my dream news reader: 40tude Dialog It's everything I've wanted in a reader, and the Price is right too! (Free for non commercial use). If you've been using that old reader of yours that looks like…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Tool\] - cool (free) news reader By Roy Osherove November 9, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 9, 2003; technical details may be outdated. I think I just found my dream news reader: [40tude Dialog](http://www.40tude.com/dialog/features.htm) It's everything I've wanted in a reader, and the Price is right too! (Free for non commercial use). If you've been using that old reader of yours that looks like it came out of the dungeon, fear not. All the old keyboard shortcuts are still there (and they are also configurable!) and the interface is lovely (even if not perfect, it is loads better than anything that look like Forte Agent). ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Nov 14, 2003 ### [The Regulator 1.02b is out](https://osherove.com/blog/2003/11/14/the-regulator-102b-is-out.html) - Nov 11, 2003 ### [\[Document\] Port Requirements for Microsoft Windows Server System](https://osherove.com/blog/2003/11/11/document-port-requirements-for-microsoft-windows-server-syst.html) - Nov 6, 2003 ### [C# Programmable Calculator](https://osherove.com/blog/2003/11/6/c-programmable-calculator.html) - Nov 5, 2003 ### [\[Tool\] The Regulator 1.02a is out](https://osherove.com/blog/2003/11/5/tool-the-regulator-102a-is-out.html) --- title: "Hijacking .NET Volume 2: Protecting your Code" url: "https://osherove.com/blog/2003/11/8/hijacking-net-volume-2-protecting-your-code.md" canonical: "https://osherove.com/blog/2003/11/8/hijacking-net-volume-2-protecting-your-code.html" published: "2003-11-08T20:29:00" updated: "2003-11-08T20:29:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Hijacking .NET Volume 2 “ Dan Appleman's latest eBook covers the security implications of using reflection to access private members in an assembly, and about the design patterns and specific methods you can use to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hijacking .NET Volume 2: Protecting your Code By Roy Osherove November 8, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published November 8, 2003; technical details may be outdated. [**Hijacking .NET Volume 2**](https://www.amazon.com/exec/obidos/ASIN/B0000CDS9Z/iserializable-20) “_Dan Appleman's [latest eBook](https://www.amazon.com/exec/obidos/ASIN/B0000CDS9Z/iserializable-20) covers the security implications of using reflection to access private members in an assembly, and about the design patterns and specific methods you can use to prevent others from using these techniques on your assemblies”_ \[.[NetWire](http://www.dotnetwire.com/)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 12, 2003 ### [BitVector32 has a bug. Here's a good replacement](https://osherove.com/blog/2003/11/12/bitvector32-has-a-bug-heres-a-good-replacement.html) - Nov 11, 2003 ### [Brumme is alive again, and a small question](https://osherove.com/blog/2003/11/11/brumme-is-alive-again-and-a-small-question.html) - Nov 2, 2003 ### [New CLR Profiler version available](https://osherove.com/blog/2003/11/2/new-clr-profiler-version-available.html) - Nov 2, 2003 ### [PDC eye for the cynical guy](https://osherove.com/blog/2003/11/2/pdc-eye-for-the-cynical-guy.html) --- title: "Blog: The Software Simplist" url: "https://osherove.com/blog/2003/11/8/blog-the-software-simplist.md" canonical: "https://osherove.com/blog/2003/11/8/blog-the-software-simplist.html" published: "2003-11-08T20:04:00" updated: "2003-11-08T20:04:00" tags: ["Blogging"] author: "Roy Osherove" description: "My friend, Udi Dahan, whom I've met at one of the user group meetings, just started his own blog: The Software Simplist ( RSS ) From what I already know about Udi, this should prove to be pretty interesting. Udi has…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blog: The Software Simplist By Roy Osherove November 8, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published November 8, 2003; technical details may be outdated. My friend, Udi Dahan, whom I've met at one of the user group meetings, just started his own blog: [The Software Simplist](http://udidahan.weblogs.us/)  ([RSS](http://udidahan.weblogs.us/index.rdf)) From what I already know about Udi, this should prove to be pretty interesting. Udi has plenty of great and interesting ideas about software design and if he keeps up with blogging we should all benefit. **Welcome aboard**! Oh, and I like his first quote: _“Here's a quote that speaks volumes to me:_ _"People misinterpret complexity as sophistication." - Niklaus Wirth, the father of Pascal. ...“_ I like it. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Nov 11, 2003 ### [My new RegexBlog](https://osherove.com/blog/2003/11/11/my-new-regexblog.html) - Nov 10, 2003 ### [You can subscribe to this weblog - here's how](https://osherove.com/blog/2003/11/10/you-can-subscribe-to-this-weblog-heres-how.html) - Nov 4, 2003 ### [RSS feeds for your pleasure](https://osherove.com/blog/2003/11/4/rss-feeds-for-your-pleasure.html) - Oct 29, 2003 ### [RSS Bandit revamped - your comments appreciated](https://osherove.com/blog/2003/10/29/rss-bandit-revamped-your-comments-appreciated.html) --- title: "C# Programmable Calculator" url: "https://osherove.com/blog/2003/11/6/c-programmable-calculator.md" canonical: "https://osherove.com/blog/2003/11/6/c-programmable-calculator.html" published: "2003-11-06T14:51:00" updated: "2003-11-06T14:51:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "How cool is a calculator that you can actually program what each button does using C#? Look for yourself: “ C# Programmable Calculator is a Reverse Polish Notation (RPN) calculator with custom buttons programmable in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # C\# Programmable Calculator By Roy Osherove November 6, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 6, 2003; technical details may be outdated. How cool is a calculator that you can actually program what each button does using C#? Look for yourself: “[C# Programmable Calculator](http://www.personalmicrocosms.com/html/cspcalc.html) is a Reverse Polish Notation (RPN) calculator with custom buttons programmable in C#.“ Its shareware, but the unregistered version still gives you 20 programmable buttons. I'll never need more than that :) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Nov 11, 2003 ### [\[Document\] Port Requirements for Microsoft Windows Server System](https://osherove.com/blog/2003/11/11/document-port-requirements-for-microsoft-windows-server-syst.html) - Nov 9, 2003 ### [\[Tool\] - cool (free) news reader](https://osherove.com/blog/2003/11/9/tool-cool-free-news-reader.html) - Nov 5, 2003 ### [\[Tool\] The Regulator 1.02a is out](https://osherove.com/blog/2003/11/5/tool-the-regulator-102a-is-out.html) - Oct 27, 2003 ### [Regulator Coming along nicely](https://osherove.com/blog/2003/10/27/regulator-coming-along-nicely.html) --- title: "Feedable is Scriptable" url: "https://osherove.com/blog/2003/11/6/feedable-is-scriptable.md" canonical: "https://osherove.com/blog/2003/11/6/feedable-is-scriptable.html" published: "2003-11-06T14:47:00" updated: "2003-11-06T14:47:00" tags: ["Cool sites", "Off Topic"] author: "Roy Osherove" description: "Did Feedable just make ScriptingNews ? Coolness :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Feedable is Scriptable By Roy Osherove November 6, 2003 In [Cool sites](https://osherove.com/blog/category/cool-sites), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 6, 2003; technical details may be outdated. Did [Feedable](http://royo.is-a-geek.com/siteFeeder/) just make [ScriptingNews](http://www.scripting.com/)? Coolness :) ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Nov 19, 2003 ### [SQLTeam rules: Cool tip + cool RSS feed= goodness in the blogsphere](https://osherove.com/blog/2003/11/19/sqlteam-rules-cool-tip-cool-rss-feed-goodness-in-the-blogsph.html) - Nov 14, 2003 ### [MSDN chats RSS feed? you got it.](https://osherove.com/blog/2003/11/14/msdn-chats-rss-feed-you-got-it.html) - Oct 8, 2003 ### [Introducing SiteFeeder](https://osherove.com/blog/2003/10/8/introducing-sitefeeder.html) - Oct 6, 2003 ### [Getting a focus on performance - some new pages](https://osherove.com/blog/2003/10/6/getting-a-focus-on-performance-some-new-pages.html) --- title: "Please, NO SPOILERS" url: "https://osherove.com/blog/2003/11/6/please-no-spoilers.md" canonical: "https://osherove.com/blog/2003/11/6/please-no-spoilers.html" published: "2003-11-06T05:58:00" updated: "2003-11-06T05:58:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Um.. can everyone PLEASE not post Matrix revolutions spoilers on the main .net weblogs feed? Thanks." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Please, NO SPOILERS By Roy Osherove November 6, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 6, 2003; technical details may be outdated. Um.. can everyone PLEASE not post Matrix revolutions spoilers on the main .net weblogs feed? Thanks. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 9, 2003 ### [Jumping into newsgroups](https://osherove.com/blog/2003/11/9/jumping-into-newsgroups.html) - Nov 6, 2003 ### [Feedable is Scriptable](https://osherove.com/blog/2003/11/6/feedable-is-scriptable.html) - Nov 5, 2003 ### [See you at the Israel VB user group today](https://osherove.com/blog/2003/11/5/see-you-at-the-israel-vb-user-group-today.html) - Nov 5, 2003 ### [12 hours or so to go](https://osherove.com/blog/2003/11/5/12-hours-or-so-to-go.html) --- title: "[Tool] The Regulator 1.02a is out" url: "https://osherove.com/blog/2003/11/5/tool-the-regulator-102a-is-out.md" canonical: "https://osherove.com/blog/2003/11/5/tool-the-regulator-102a-is-out.html" published: "2003-11-05T11:24:00" updated: "2003-11-05T11:24:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "Version 1.02a released! Features: Regexlib.com integration Search and import expressions and examples from RegexLib.com ’s database Post your own regular expressions into regexlib's database, direct from The regulator…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Tool\] The Regulator 1.02a is out By Roy Osherove November 5, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published November 5, 2003; technical details may be outdated. [**Version 1.02a released!**](http://royo.is-a-geek.com/regulator/) **Features:** **Regexlib.com integration** - Search and import expressions and examples from [RegexLib.com](http://www.regexlib.com/)’s database - Post your own regular expressions into regexlib's database, direct from The regulator using a graphical wizard - Full Proxy support for secure connections **Text Editing** - Syntax highlighting - Multiple document tabbed interface - Quick menus allow you to easily select syntax operations to insert - Quick Menus are fully customisable simply by changing a simple xml file in the program directory - Brace matching support - Make selected text "escaped" to match a specific string exactly without needing to manually write those \\s,\\n and other escape sequences - Collapse/expand selection: you can create collapsible regions in your regex code for easy reading - Select only a portion of the expression in the editor and only that selection will be executed as a match\\replace **Performance analysis** - A graphical chart of the latest matches/replaces timings shows you if your optimization efforts are working - an exact number (in milliseconds) of last match/replace operation **Expert Snippets** - An easy and simple toolbar of frequently used text snippets is always handy for hard to type expressions - The snippets toolbar is fully customizable and any snippet can be edited/deleted or you can just add your own - Inserted snippets that contain the "<>" signs will automatically make the text editor set the selection between those signs, allowing you to make generic snippets that save you typing time **General usability features** - **Multi threaded operations** : ability to cancel long running expression matches and replaces - Minimize to tray option - Recent files menu - Other small features ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 17, 2003 ### [Why are typed data tables columns declared "internal"?](https://osherove.com/blog/2003/11/17/why-are-typed-data-tables-columns-declared-quotinternalquot.html) - Nov 14, 2003 ### [The Regulator 1.02b is out](https://osherove.com/blog/2003/11/14/the-regulator-102b-is-out.html) - Nov 4, 2003 ### [\[Article X 2\] 2 more of mine published on MSDNAA](https://osherove.com/blog/2003/11/4/article-x-2-2-more-of-mine-published-on-msdnaa.html) - Nov 4, 2003 ### [\[Article/Code\]: Easy Proxy handling through the ProxyFactory and ProxyInfo classes](https://osherove.com/blog/2003/11/4/articlecode-easy-proxy-handling-through-the-proxyfactory-and.html) --- title: "See you at the Israel VB user group today" url: "https://osherove.com/blog/2003/11/5/see-you-at-the-israel-vb-user-group-today.md" canonical: "https://osherove.com/blog/2003/11/5/see-you-at-the-israel-vb-user-group-today.html" published: "2003-11-05T10:34:00" updated: "2003-11-05T10:34:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Microsoft Israel 2 Hapnina St, Raanana (09) 7625-100 Floor 0 , Dekel Room It is the new building across from Amdocs. After the first traffic circle, there is an area for parking on the right. 17:30 - 18:00 Assembly…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # See you at the Israel VB user group today By Roy Osherove November 5, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 5, 2003; technical details may be outdated. Microsoft Israel 2 Hapnina St, Raanana (09) 7625-100 Floor 0 , Dekel Room It is the new building across from Amdocs. After the first traffic circle, there is an area for parking on the right. 17:30 - 18:00   Assembly 18:00 - 18:05   Introduction and miscellaneous 18:05 - 19:10    **“Meet the Managers”**                         Doron Zohar and Michal Geva, Microsoft Israel 19:10 - 19:45    Break 19:45 – 20:00   "Hatzilu !"                         Open session, with questions and answers/ideas from everyone 20:00 - 20:45   **“Impressions and Directions from PDC 2003”**                         Jackie Goldstein, Renaissance Computer Systems Ltd. Yes, another year of monthly meetings has gone by and our [IVBUG](http://www.renaissance.co.il/ivbug) has completed 6 full years of life.  It is great to see how many of the same people have been showing month after month over the years, in addition to all of the many new faces that have joined us at various points along the way.  Let's keep it up ! For the first part of our meeting, we will have the chance to hear directly from two Microsoft Israel managers who are particularly close to our activities:  Doron Zohar, the .NET Platform Group Manager and Michal Geva, the Audiences Marketing Manager.  They will each say a few words about their vision and plans for the coming year and then we will open it up for an interactive discussion.  This is a great opportunity for us to ask the questions that have been bothering us and to offer ideas and suggestions directly to Microsoft. Like with every birthday celebration, I have managed to arrange for some special treats… For the second half of the evening, I will share some of my thoughts, impressions, and inside information that I had at last week’s Microsoft PDC (Professional Developers Conference). The PDC is where Microsoft unveils its future vision and plans.  I want to help you recognize the different code names for the future versions of Windows, Visual Studio, and the sub-technologies, as well as their general plan and directions.  In future meetings, I will go into detail and actually demo some of this future software.  As always, we'll have our special "Hatzilu" session at our meeting. So please come prepared to discuss your most frustrating problems (or at least some of them !) and to share some of your own techniques and solutions that you have found useful in your applications. Jackie. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 6, 2003 ### [Feedable is Scriptable](https://osherove.com/blog/2003/11/6/feedable-is-scriptable.html) - Nov 6, 2003 ### [Please, NO SPOILERS](https://osherove.com/blog/2003/11/6/please-no-spoilers.html) - Nov 5, 2003 ### [12 hours or so to go](https://osherove.com/blog/2003/11/5/12-hours-or-so-to-go.html) - Nov 4, 2003 ### [Single user source code control - a must!](https://osherove.com/blog/2003/11/4/single-user-source-code-control-a-must.html) --- title: "12 hours or so to go" url: "https://osherove.com/blog/2003/11/5/12-hours-or-so-to-go.md" canonical: "https://osherove.com/blog/2003/11/5/12-hours-or-so-to-go.html" published: "2003-11-05T00:39:00" updated: "2003-11-05T00:39:00" tags: ["Off Topic"] author: "Roy Osherove" description: "and you'll get to see the wonder that is the new version of The Regulator ! BUAHahaha...(evil genius is just not right for me, is it?)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 12 hours or so to go By Roy Osherove November 5, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 5, 2003; technical details may be outdated. and you'll get to see the wonder that is the new version of  [The Regulator](http://royo.is-a-geek.com/regulator)! BUAHahaha...(evil genius is just not right for me, is it?) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 6, 2003 ### [Please, NO SPOILERS](https://osherove.com/blog/2003/11/6/please-no-spoilers.html) - Nov 5, 2003 ### [See you at the Israel VB user group today](https://osherove.com/blog/2003/11/5/see-you-at-the-israel-vb-user-group-today.html) - Nov 4, 2003 ### [Single user source code control - a must!](https://osherove.com/blog/2003/11/4/single-user-source-code-control-a-must.html) - Nov 4, 2003 ### [A horrible discovery](https://osherove.com/blog/2003/11/4/a-horrible-discovery.html) --- title: "Single user source code control - a must!" url: "https://osherove.com/blog/2003/11/4/single-user-source-code-control-a-must.md" canonical: "https://osherove.com/blog/2003/11/4/single-user-source-code-control-a-must.html" published: "2003-11-04T22:30:00" updated: "2003-11-04T22:30:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Eric explains why it's a good idea to use source control even when working all alone on a project. I completely agree. If you are NOT using any kind of source control (and you should at least be using SourceSafe on a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Single user source code control - a must! By Roy Osherove November 4, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 4, 2003; technical details may be outdated. [Eric explains](http://software.ericsink.com/20031103.html#10134) why it's a good idea to use source control even when working all alone on a project. I completely agree. If you are NOT using any kind of source control (and you should at least be using SourceSafe on a windows machine) then read his words and mark mine: **You'll regret not having done it.** ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 5, 2003 ### [See you at the Israel VB user group today](https://osherove.com/blog/2003/11/5/see-you-at-the-israel-vb-user-group-today.html) - Nov 5, 2003 ### [12 hours or so to go](https://osherove.com/blog/2003/11/5/12-hours-or-so-to-go.html) - Nov 4, 2003 ### [A horrible discovery](https://osherove.com/blog/2003/11/4/a-horrible-discovery.html) - Oct 31, 2003 ### [Nice Blog.](https://osherove.com/blog/2003/10/31/nice-blog.html) --- title: "RSS feeds for your pleasure" url: "https://osherove.com/blog/2003/11/4/rss-feeds-for-your-pleasure.md" canonical: "https://osherove.com/blog/2003/11/4/rss-feeds-for-your-pleasure.html" published: "2003-11-04T21:53:00" updated: "2003-11-04T21:53:00" tags: ["Blogging"] author: "Roy Osherove" description: "Just in case you are NOT subscribed to the Feedable RSS feed , I've added some cool feeds the past weeks: The .Net rocks show is now hosted on MSDN , alas, there's no RSS feed to tell me when a new download is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # RSS feeds for your pleasure By Roy Osherove November 4, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published November 4, 2003; technical details may be outdated. Just in case you are NOT subscribed to the [Feedable RSS feed](http://royo.is-a-geek.com/SiteFeeder/GetFeed.aspx?FeedId=27), I've added some cool feeds the past weeks: - The [.Net rocks](http://www.franklins.net/dotnetrocks.asp) show is now [hosted on MSDN](http://msdn.microsoft.com/dotnetrocks/), alas, there's no RSS feed to tell me when a new download is available, [or is there](http://royo.is-a-geek.com/sitefeeder/GetFeed.aspx?FeedId=40)? - [Bob Powell](http://bobpowelldotnet.blogspot.com/), Author of the GDI+ FAQ has a blog, but no RSS feed, [or does he](http://royo.is-a-geek.com/sitefeeder/GetFeed.aspx?FeedId=41)? - [Hillel Cooperman](http://themicrosoftexperience.com/default.htm), (_He's the guy who heads the team that's building the new user experience (translation: the user interface) for Longhorn)_  has a sort of blog, but, no RSS feed?? [wrong](http://royo.is-a-geek.com/sitefeeder/GetFeed.aspx?FeedId=43). - Woudn't you just love an RSS feed that told you of the most recent downloads on the [Microsoft download center](http://www.microsoft.com/downloads/results.aspx?sortCriteria=date&OSID=&productID=&CategoryID=&freetext=&DisplayLang=en&DisplayEnglishAlso=)? I [knew you would](http://royo.is-a-geek.com/sitefeeder/GetFeed.aspx?FeedId=42). There's some more cool stuff in there, but I'll let you be the judge of that. One possible problem: some of the site have “content blockers” that stop my RSS engine from getting to them. The [WinSuperSite](http://royo.is-a-geek.com/sitefeeder/GetFeed.aspx?FeedId=38) feed experienced this for a while but now it's OK. However, the problem returned in case of the [Wininformat](http://www.winnetmag.com/windowspaulthurrott/Index.cfm?Ad=1) sites... just letting you know that these feeds could be tricky.. One more thing. I know many of you sent feed requests via the [Feedable](http://royo.is-a-geek.com/sitefeeder/) site. I got them, but some of them might not make air. The big problems with the technology I'm using is that the content that is “scraped” should be consistently written, and some of these sites are not. Other sites are merely hosts for other, private URLs, which my engine can't seem to get to (or is it just my slow brain?).. anyway -It also takes time (depending on the site) to prepare a feed for public consumption and I have many other things on my mind, so.. be patient, and keep suggesting! **PS:** Did I mention the [Sysnternals RSS feed](http://royo.is-a-geek.com/sitefeeder/GetFeed.aspx?FeedId=30)? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Nov 10, 2003 ### [You can subscribe to this weblog - here's how](https://osherove.com/blog/2003/11/10/you-can-subscribe-to-this-weblog-heres-how.html) - Nov 8, 2003 ### [Blog: The Software Simplist](https://osherove.com/blog/2003/11/8/blog-the-software-simplist.html) - Oct 29, 2003 ### [RSS Bandit revamped - your comments appreciated](https://osherove.com/blog/2003/10/29/rss-bandit-revamped-your-comments-appreciated.html) - Oct 27, 2003 ### [WinSupersite RSS feed](https://osherove.com/blog/2003/10/27/winsupersite-rss-feed.html) --- title: "A horrible discovery" url: "https://osherove.com/blog/2003/11/4/a-horrible-discovery.md" canonical: "https://osherove.com/blog/2003/11/4/a-horrible-discovery.html" published: "2003-11-04T21:27:00" updated: "2003-11-04T21:27:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I made a horrible discovery today. SharpReader takes nearly 100MB of RAM when it's open (i have 250-300 feeds). No wonder my machine crawls when I try to friggin' compile something in VS.Net! So, I made a tough…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A horrible discovery By Roy Osherove November 4, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published November 4, 2003; technical details may be outdated. I made a horrible discovery today. SharpReader takes nearly 100MB of RAM when it's open (i have 250-300 feeds). No wonder my machine crawls when I try to friggin' compile something in VS.Net! So, I made a tough decision. **I closed it.** That's right. I'm am feedless. And you know what? I havn't been this productive in months. Sure, I'll open it in a minute, but then I'll close it right back. See, I use a little program called [MemTurbo](http://www.memturbo.com/). It's not much to look at, but it does two great things: - It constantly lets me know how much free RAM I have left because it's in the system tray showing me an exact number - It lets me **free up** RAM (that my OS most stupidly thinks it still needs to keep for itself) with a mouse click. I didn't start using it today, I'm using stuff like this for a long time, but only now have I figured out what's been haunting my RAM these past months.. my bloody aggregator. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 5, 2003 ### [12 hours or so to go](https://osherove.com/blog/2003/11/5/12-hours-or-so-to-go.html) - Nov 4, 2003 ### [Single user source code control - a must!](https://osherove.com/blog/2003/11/4/single-user-source-code-control-a-must.html) - Oct 31, 2003 ### [Nice Blog.](https://osherove.com/blog/2003/10/31/nice-blog.html) - Oct 31, 2003 ### [A dream come true.. almost](https://osherove.com/blog/2003/10/31/a-dream-come-true-almost.html) --- title: "[Article X 2] 2 more of mine published on MSDNAA" url: "https://osherove.com/blog/2003/11/4/article-x-2-2-more-of-mine-published-on-msdnaa.md" canonical: "https://osherove.com/blog/2003/11/4/article-x-2-2-more-of-mine-published-on-msdnaa.html" published: "2003-11-04T21:10:00" updated: "2003-11-04T21:10:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "Two more articles posted on MSDNAA : Introduction to Test-driven Development with NUnit and the NUnit Add-in This article explores Test-Driven development (TDD) techniques. Fun with Unit Tests–Testing Abstract Classes…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Article X 2\] 2 more of mine published on MSDNAA By Roy Osherove November 4, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published November 4, 2003; technical details may be outdated. Two more articles posted on [MSDNAA](http://www.msdnaa.net/): [**Introduction to Test-driven Development with NUnit and the NUnit Add-in**](http://msdnaa.net/Resources/display.aspx?ResID=2365) This article explores Test-Driven development (TDD) techniques. [**Fun with Unit Tests–Testing Abstract Classes**](http://msdnaa.net/Resources/display.aspx?ResID=2364) In this article I’ll be looking into a trickier part of unit testing; testing the functionality of classes that cannot be instantiated on their own, abstract classes. I’ll show how to overcome this obstacle using “Mock Objects,” a technique that has a whole methodology behind it all on its own. We’ll see how mock objects provide us with abilities that let us query what’s happening inside our derived class. Boy, my [article list](http://msdnaa.net/search.aspx?SearchText=osherove&ResourceTypes=all&Mode=Search&Archives=False) on there beginning to look like something. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 14, 2003 ### [The Regulator 1.02b is out](https://osherove.com/blog/2003/11/14/the-regulator-102b-is-out.html) - Nov 5, 2003 ### [\[Tool\] The Regulator 1.02a is out](https://osherove.com/blog/2003/11/5/tool-the-regulator-102a-is-out.html) - Nov 4, 2003 ### [\[Article/Code\]: Easy Proxy handling through the ProxyFactory and ProxyInfo classes](https://osherove.com/blog/2003/11/4/articlecode-easy-proxy-handling-through-the-proxyfactory-and.html) - Oct 29, 2003 ### [Israel .Net web user group meets today - Design time programming in Vs.Net](https://osherove.com/blog/2003/10/29/israel-net-web-user-group-meets-today-design-time-programmin.html) --- title: "[Article/Code]: Easy Proxy handling through the ProxyFactory and ProxyInfo classes" url: "https://osherove.com/blog/2003/11/4/articlecode-easy-proxy-handling-through-the-proxyfactory-and.md" canonical: "https://osherove.com/blog/2003/11/4/articlecode-easy-proxy-handling-through-the-proxyfactory-and.html" published: "2003-11-04T20:57:00" updated: "2003-11-04T20:57:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "I had to make The Regulator support Proxy servers, so I dug in to how the WebProxy class works, and with a little help from Darren , I managed to get it up and running. In the process, I wrote a little helper class that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Article/Code\]: Easy Proxy handling through the ProxyFactory and ProxyInfo classes By Roy Osherove November 4, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published November 4, 2003; technical details may be outdated. I had to make [The Regulator](http://royo.is-a-geek.com/regulator) support Proxy servers, so I dug in to how the WebProxy class works, and with a little help from [Darren](http://weblogs.asp.net/dneimke/), I managed to get it up and running. In the process, I wrote a little helper class that eases the configuration syntax against this API. Here it is: [Easy Proxy handling through the ProxyFactory and ProxyInfo classes](http://weblogs.asp.net/rosherove/posts/34670.aspx) It can handle all the situations, starting from getting the default proxy settings up to providing the user/password login information setup. Hope it helps. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 5, 2003 ### [\[Tool\] The Regulator 1.02a is out](https://osherove.com/blog/2003/11/5/tool-the-regulator-102a-is-out.html) - Nov 4, 2003 ### [\[Article X 2\] 2 more of mine published on MSDNAA](https://osherove.com/blog/2003/11/4/article-x-2-2-more-of-mine-published-on-msdnaa.html) - Oct 29, 2003 ### [Israel .Net web user group meets today - Design time programming in Vs.Net](https://osherove.com/blog/2003/10/29/israel-net-web-user-group-meets-today-design-time-programmin.html) - Oct 27, 2003 ### [Refactoring, FINALLY!](https://osherove.com/blog/2003/10/27/refactoring-finally.html) --- title: "New CLR Profiler version available" url: "https://osherove.com/blog/2003/11/2/new-clr-profiler-version-available.md" canonical: "https://osherove.com/blog/2003/11/2/new-clr-profiler-version-available.html" published: "2003-11-02T15:17:00" updated: "2003-11-02T15:17:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "I forgot to mention the other day that a new version of the CLR Profiler is available for download . Here's a link to an earlier entry where I wrote about using it to dissect SharpReader 's memory usage. [ Furrygoat ]…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New CLR Profiler version available By Roy Osherove November 2, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published November 2, 2003; technical details may be outdated. _I forgot to mention the other day that a new version of the_ [_CLR Profiler is available for download_](http://www.microsoft.com/downloads/details.aspx?FamilyID=86ce6052-d7f4-4aeb-9b7a-94635beebdda&DisplayLang=en)_. Here's a_ [_link to an earlier entry_](http://www.furrygoat.com/archives/000563.html#000563) _where I wrote about using it to dissect_ [_SharpReader_](http://www.sharpreader.net/)_'s memory usage._ \[[Furrygoat](http://www.furrygoat.com/)\] 'nuff said. Oh, and Don, [that](http://weblogs.asp.net/jlerman/posts/35314.aspx) was pretty low of you, even if you didn't mean it...I do hope that I completely misunderstood because you're one one my code heroes. How about dropping by and explaining? From that post by Julie it seems I'm not the only one bothered by it. Update: Ok. I was a little quick to respond there. Her'es a by John C.J on this matter: _” think you are misinterpreting his comment. I'm a VB developer (and have been for several years) with a strong interest in security. The older Windows security APIs are (seemingly) deliberately VB-unfriendly. They simply can't be used from VB pre-.net and are unreasonably difficult from VB.Net. I took that comment to mean that the security guys realized that we VB developers need to be able to use the new security APIs. That is, I saw the comment as an acknowledgement of failure on Microsoft's part, not a slam against VB developers. “_ Ok. My bad. Accept my apologies. Peace is back in the land of the self righteous:) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 11, 2003 ### [Brumme is alive again, and a small question](https://osherove.com/blog/2003/11/11/brumme-is-alive-again-and-a-small-question.html) - Nov 8, 2003 ### [Hijacking .NET Volume 2: Protecting your Code](https://osherove.com/blog/2003/11/8/hijacking-net-volume-2-protecting-your-code.html) - Nov 2, 2003 ### [PDC eye for the cynical guy](https://osherove.com/blog/2003/11/2/pdc-eye-for-the-cynical-guy.html) - Oct 30, 2003 ### [Funny and informative "Lap Around Longhorn" video from MSDN TV](https://osherove.com/blog/2003/10/30/funny-and-informative-quotlap-around-longhornquot-video-from.html) --- title: "PDC eye for the cynical guy" url: "https://osherove.com/blog/2003/11/2/pdc-eye-for-the-cynical-guy.md" canonical: "https://osherove.com/blog/2003/11/2/pdc-eye-for-the-cynical-guy.html" published: "2003-11-02T05:43:00" updated: "2003-11-02T05:43:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Mike Gunderloy sets off on a no-thrill ride through PDC land, letting us know just what he thinks about each and every “big statement” made there. It's not always pretty, but the truth hurts sometimes I guess." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # PDC eye for the cynical guy By Roy Osherove November 2, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published November 2, 2003; technical details may be outdated. [Mike Gunderloy sets off](http://www.larkware.com/Articles/Post-PDCThoughts.html) on a no-thrill ride through PDC land, letting us know just what he thinks about each and every “big statement” made there. It's not always pretty, but the truth hurts sometimes I guess. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 8, 2003 ### [Hijacking .NET Volume 2: Protecting your Code](https://osherove.com/blog/2003/11/8/hijacking-net-volume-2-protecting-your-code.html) - Nov 2, 2003 ### [New CLR Profiler version available](https://osherove.com/blog/2003/11/2/new-clr-profiler-version-available.html) - Oct 30, 2003 ### [Funny and informative "Lap Around Longhorn" video from MSDN TV](https://osherove.com/blog/2003/10/30/funny-and-informative-quotlap-around-longhornquot-video-from.html) - Oct 30, 2003 ### [Avalon automated UI Testing framework](https://osherove.com/blog/2003/10/30/avalon-automated-ui-testing-framework.html) --- title: "Nice Blog." url: "https://osherove.com/blog/2003/10/31/nice-blog.md" canonical: "https://osherove.com/blog/2003/10/31/nice-blog.html" published: "2003-10-31T21:17:00" updated: "2003-10-31T21:17:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Yes, I agree . Rory runs a great Blog ! Wish I could write like that. It makes me feel like I haven't written anything really personal in a while. I think I was: Too consumed by projects and other stuff I was afraid…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice Blog. By Roy Osherove October 31, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 31, 2003; technical details may be outdated. Yes, [I agree](http://weblogs.asp.net/jlerman/posts/35074.aspx). Rory runs a [great Blog](http://neopoleon.com/blog/)! Wish I could write like that. It makes me feel like I haven't written anything really personal in a while. I think I was: - Too consumed by projects and [other stuff](http://royo.is-a-geek.com/regulator) - I was afraid that posting something personal would bring on the wrath of those whom I've said about that their off topic posts about the PDC make it hard to learn anything new (and I can understand that) - I was afraid you wouldn't like me anymore since you're here to read the technical stuff and who cares what I had for lunch or where I played Pool (and got an amazing victory!) or how my car jammed (again!) - Felt I had nothing good to say - Felt that the PDC is really the thing to be concerend about right now and that people wouldn't even notice my posts here anyway with all the  ~noise~information about LongHorn - Was too busy reading other blogs So, maybe I'll try harder.  Actually, this post is a good start. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 4, 2003 ### [Single user source code control - a must!](https://osherove.com/blog/2003/11/4/single-user-source-code-control-a-must.html) - Nov 4, 2003 ### [A horrible discovery](https://osherove.com/blog/2003/11/4/a-horrible-discovery.html) - Oct 31, 2003 ### [A dream come true.. almost](https://osherove.com/blog/2003/10/31/a-dream-come-true-almost.html) - Oct 28, 2003 ### [Waiting for the Next RSS Bandit](https://osherove.com/blog/2003/10/28/waiting-for-the-next-rss-bandit.html) --- title: "A dream come true.. almost" url: "https://osherove.com/blog/2003/10/31/a-dream-come-true-almost.md" canonical: "https://osherove.com/blog/2003/10/31/a-dream-come-true-almost.html" published: "2003-10-31T18:09:00" updated: "2003-10-31T18:09:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I always knew my blog will get to places. Now it's gotten me into the USA. Well, sort of. People have been dreaming about me , you see. I'm so flattered that I think I'll start to dream about them back. My only wish is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A dream come true.. almost By Roy Osherove October 31, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 31, 2003; technical details may be outdated. I always knew my blog will get to places. Now it's gotten me into the USA. Well, sort of. [People have been dreaming about me](http://weblogs.blogpie.com/marcshiker/posts/172.aspx), you see. I'm so flattered that I think I'll start to dream about them back. My only wish is that in the dream I was a thin as I appear in \*my\* dreams, and of course, that I was dressed like Neo and able to fly. Another funny thing that happened, that can be related into the community culture: I was mistakenly “pulled' into a chat with about 10 other folks. I can't remember who invited me, but suddenly there I was, in an MSN chat with 10 strangers. All of them looked just as surprised as I was. Looking at the email aliases I could recognize at least two bloggers that I know of - [Colt](http://weblogs.asp.net/coltk/) and [James Avery](http://weblogs.asp.net/javery/). While Colt went off the chat in a breeze, I exchanged a couple of words with James (although less than a minute) and it felt a little like running into him on the street, like an old friend. How crazy is that? The sense of community here is pretty awesome IMHO. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Nov 4, 2003 ### [A horrible discovery](https://osherove.com/blog/2003/11/4/a-horrible-discovery.html) - Oct 31, 2003 ### [Nice Blog.](https://osherove.com/blog/2003/10/31/nice-blog.html) - Oct 28, 2003 ### [Waiting for the Next RSS Bandit](https://osherove.com/blog/2003/10/28/waiting-for-the-next-rss-bandit.html) - Oct 27, 2003 ### [Regulator Coming along nicely](https://osherove.com/blog/2003/10/27/regulator-coming-along-nicely.html) --- title: "Easy Proxy handling through the ProxyFactory and ProxyInfo classes" url: "https://osherove.com/blog/2003/10/30/easy-proxy-handling-through-the-proxyfactory-and-proxyinfo-c.md" canonical: "https://osherove.com/blog/2003/10/30/easy-proxy-handling-through-the-proxyfactory-and-proxyinfo-c.html" published: "2003-10-30T13:38:00" updated: "2003-10-30T13:38:00" tags: ["Other"] author: "Roy Osherove" description: "Here’s a simple and easy class that will ease the pain of configuring a Proxy Connection in your applications. The way you’d use it is like so: ProxyInfo pi = new ProxyInfo(); pi . OverrideDefaultProxy =…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Easy Proxy handling through the ProxyFactory and ProxyInfo classes By Roy Osherove October 30, 2003 In [Other](https://osherove.com/blog/category/other) **Historical article** · Originally published October 30, 2003; technical details may be outdated. Here’s a simple and easy class that will ease the pain of configuring a Proxy Connection in your applications. The way you’d use it is like so: ProxyInfo pi = new ProxyInfo(); pi.OverrideDefaultProxy\=chkOverrideDefaultProxy.Checked; pi.RequiresLogin\= chkLogin.Checked; pi.BypassLocal\=chkBypassLocal.Checked; pi.ProxyName\= txtServerName.Text; pi.ProxyPort\= int.Parse( txtPort.Text); pi.Domain = txtDomain.Text; pi.UserId = txtUserName.Text; pi.Password\= txtPassword.Text; System.Net.WebProxy myProxy = ProxyFactory.Create(pi,WebServiceUrl); com.regexlib.www.Webservices searcher = new com.regexlib.www.Webservices(); searcher.Proxy\= myProxy; searcher.DoWork(); ---       ///       ///     Creates a custom initialized Proxy object       ///     based on requested settings       ///       public class ProxyFactory       {             private ProxyFactory()             {             }             private static  void SetCredentials(WebProxy proxy,string user,string password,string domain,string uri)             {                   CredentialCache myCache = new CredentialCache();                   NetworkCredential myCred =null;                   if(domain\==null || domain.Length\==0)                   { myCred = new NetworkCredential(user,password);}                   else                   {myCred = new NetworkCredential(user,password,domain);}                   myCache.Add(new Uri(uri), "Negotiate", myCred);                   proxy.Credentials = myCred;             }             public static WebProxy GetDefaultProxy()             {                   return WebProxy.GetDefaultProxy();             }             public static WebProxy Create(string proxyName,int proxyPort,bool bypassLocal)             {                   WebProxy proxy = new System.Net.WebProxy(proxyName,proxyPort);                   proxy.BypassProxyOnLocal\=bypassLocal;                   return proxy;             }             public static WebProxy Create(string domain,                                                             string userId,                                                             string password,                                                             string proxyName,                                                             int proxyPort,                                                             bool bypassLocal,                                                             string uri)             {                   WebProxy proxy = Create(proxyName,proxyPort,bypassLocal);                   SetCredentials(proxy,userId,password,domain,uri);                   return proxy;             }             public static WebProxy Create(ProxyInfo settings,string uri)             {                   if(!settings.OverrideDefaultProxy)                   {                         return GetDefaultProxy();                   }                   if(!settings.RequiresLogin)                   {                         return Create(settings.ProxyName,settings.ProxyPort,settings.BypassLocal);                   }                   if(settings.Domain.Trim().Length\==0)                   {                         //return using all the settings without domain                         return Create("",                               settings.UserId,                               settings.Password,                               settings.ProxyName,                               settings.ProxyPort,                               settings.BypassLocal,                               uri);                   }                   //return using all the settings                   return Create(settings.Domain,                         settings.UserId,                         settings.Password,                         settings.ProxyName,                         settings.ProxyPort,                         settings.BypassLocal,                         uri);             }       } --- ///       ///     Information holder class       ///     To be used by ProxyFactory /// public class ProxyInfo       {             private bool m\_booBypassLocal;             private bool m\_booRequiresLogin\=false;             private bool m\_booOverrideDefaultProxy\=false;             private int  m\_strProxyPort\=80;             private string m\_strProxyName\="";             private string m\_strPassword\="";             private string m\_strDomain\="";             private string m\_strUserId\="";             public ProxyInfo()             {             }             public string UserId             {                   get                   {return m\_strUserId;}                   set                   {m\_strUserId = value;}             }             public string Domain             {                   get                   {return m\_strDomain;}                   set                   {m\_strDomain = value;}             }             public string Password             {                   get                   {return m\_strPassword;}                   set                   {m\_strPassword = value;}             }             public string ProxyName             {                   get                   {return m\_strProxyName;}                   set                   {m\_strProxyName = value;}             }             public int ProxyPort             {                   get                   {return m\_strProxyPort;}                   set                   {m\_strProxyPort = value;}             }             public bool OverrideDefaultProxy             {                   get                   {return m\_booOverrideDefaultProxy;}                   set                   {m\_booOverrideDefaultProxy = value;}             }             public bool RequiresLogin             {                   get                   {return m\_booRequiresLogin;}                   set                   {m\_booRequiresLogin = value;}             }             public bool BypassLocal             {                   get                   {return m\_booBypassLocal;}                   set                   {m\_booBypassLocal = value;}             }       } ## More in Other [All posts in Other](https://osherove.com/blog/category/other) - Jan 17, 2004 ### [Learning from mistakes: the Don Quixote pattern](https://osherove.com/blog/2004/1/17/learning-from-mistakes-the-don-quixote-pattern.html) - Dec 25, 2003 ### [An optimizing experience](https://osherove.com/blog/2003/12/25/an-optimizing-experience.html) - Sep 9, 2003 ### [My favorites in OPML](https://osherove.com/blog/2003/9/9/my-favorites-in-opml.html) - Jun 11, 2003 ### [Announcing: .Net Desktops Contest](https://osherove.com/blog/2003/6/11/announcing-net-desktops-contest.html) --- title: "Funny and informative \"Lap Around Longhorn\" video from MSDN TV" url: "https://osherove.com/blog/2003/10/30/funny-and-informative-quotlap-around-longhornquot-video-from.md" canonical: "https://osherove.com/blog/2003/10/30/funny-and-informative-quotlap-around-longhornquot-video-from.html" published: "2003-10-30T11:02:00" updated: "2003-10-30T11:02:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Yeah, I'm trying not to be too excited about something that we'll see in only a couple of years, but you really have to take a look at Don and Chris's MSDN TV show, where they recreate the presentation they made at the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Funny and informative "Lap Around Longhorn" video from MSDN TV By Roy Osherove October 30, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published October 30, 2003; technical details may be outdated. Yeah, I'm trying not to be too excited about something that we'll see in only a couple of years, but you really have to take a look at Don and Chris's MSDN TV show, where they recreate the presentation they made at the PDC (actually the PDC is a recreation of this show): [A Lap Around Longhorn](http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20031028LHORNDB/manifest.xml) ![](https://osherove.com/img/wb/5df275fb_msdn.microsoft.com_msdntv_episodes_en_20031028LHORNDB_ChrisDon.jpg) Some **really freaky** stuff in there (not to mention some hilarious moments). It's so cool I had to stop midway and let y'all know about it. In fact, I think I'm going to continue watching this with a big bowl of popcorn :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 2, 2003 ### [New CLR Profiler version available](https://osherove.com/blog/2003/11/2/new-clr-profiler-version-available.html) - Nov 2, 2003 ### [PDC eye for the cynical guy](https://osherove.com/blog/2003/11/2/pdc-eye-for-the-cynical-guy.html) - Oct 30, 2003 ### [Avalon automated UI Testing framework](https://osherove.com/blog/2003/10/30/avalon-automated-ui-testing-framework.html) - Oct 29, 2003 ### [New VB.Net features from the trenches, and the PDCBloggers feed is your friend](https://osherove.com/blog/2003/10/29/new-vbnet-features-from-the-trenches-and-the-pdcbloggers-fee.html) --- title: "Avalon automated UI Testing framework" url: "https://osherove.com/blog/2003/10/30/avalon-automated-ui-testing-framework.md" canonical: "https://osherove.com/blog/2003/10/30/avalon-automated-ui-testing-framework.html" published: "2003-10-30T07:14:00" updated: "2003-10-30T07:14:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "This is great news! The Avalon UI Testing Framework appears to expose the UI components as an Object Model, that they are calling “Control Patterns” that expose the behavior of the controls. He's brought a Command…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Avalon automated UI Testing framework By Roy Osherove October 30, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published October 30, 2003; technical details may be outdated. [This](http://www.hanselman.com/blog/PermaLink.aspx?guid=00a3f364-41d8-43ea-aae7-0bb56b89d6f3) is great news! _The Avalon UI Testing Framework appears to expose the UI components as an Object Model, that they are calling “Control Patterns” that expose the behavior of the controls._ _He's brought a Command Prompt up.  He brought up the Windows Device Manager and clicked on it._ _The Command Prompt then displays:_ _\[Tree View\] \[Has Children\] Patterns = I:Selection_ _then he types “children” and the Device Manager tree expands._ _The Command Prompt says:_ _Patterns - I:Invoke, IHierarchyItem. I:ExpandCollapse. I:SelectionItem_ _he also checks out a Combo Box and it says_ _Patterns - I:ExpandCollapse._ _This means that rather than exposing the controls directly to the UI Testing code, it exposes the BEHAVIOR.  So, in OOP terms, a ComboBox and a Tree Control both implement “ExpandCollapse.”  But it's not that simplistic.  It's really about behavior._ _Think about this:  If you were using a 3rd party control, you'd have to use that library's proprietary APIs to manipulate it.  With the Windows UI Automation framework the publisher of that control will expose behaviors.  If it's a funky Outlook Bar, perhaps it exposes ExpandCollapse also._  ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Nov 2, 2003 ### [PDC eye for the cynical guy](https://osherove.com/blog/2003/11/2/pdc-eye-for-the-cynical-guy.html) - Oct 30, 2003 ### [Funny and informative "Lap Around Longhorn" video from MSDN TV](https://osherove.com/blog/2003/10/30/funny-and-informative-quotlap-around-longhornquot-video-from.html) - Oct 29, 2003 ### [New VB.Net features from the trenches, and the PDCBloggers feed is your friend](https://osherove.com/blog/2003/10/29/new-vbnet-features-from-the-trenches-and-the-pdcbloggers-fee.html) - Oct 27, 2003 ### [Nice GC tip](https://osherove.com/blog/2003/10/27/nice-gc-tip.html) --- title: "RSS Bandit revamped - your comments appreciated" url: "https://osherove.com/blog/2003/10/29/rss-bandit-revamped-your-comments-appreciated.md" canonical: "https://osherove.com/blog/2003/10/29/rss-bandit-revamped-your-comments-appreciated.html" published: "2003-10-29T11:46:00" updated: "2003-10-29T11:46:00" tags: ["Blogging"] author: "Roy Osherove" description: "Dare has updated RSS Bandit again . I really appreciate how he's handling the comments on this software. This time RSS Bandit runs out much more responsive, but still not enough IMHO. although this time it is usable , I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # RSS Bandit revamped - your comments appreciated By Roy Osherove October 29, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 29, 2003; technical details may be outdated. [Dare has updated RSS Bandit again](http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=7985551c-c713-4dd4-9e86-3b6a6af75849). I really appreciate how he's handling the comments on this software. This time RSS Bandit runs out much more responsive, but still not enough IMHO. although this time it is **usable**, I can't help but continually compare between it and [SharpReader](http://www.sharpreader.net/). Anyway, It seems a lot of the comments to my last post about RSS Bandit have been very helpful to him, so I encourage you to post a comment on this post or on [his post](http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=7985551c-c713-4dd4-9e86-3b6a6af75849), telling Dare everything you think is wrong or is missing in RSS Bandit. Essentially, it would be best if you could envision him asking you “Why Arn't you using RSS Bandit?” One thing I've found that bothers me most, other than the threading thing, is that there's no "Search" functionality. Hell, the "Filter: thing is SharpReader is powerful enough for me. Put that in Dare, and I'm sold even more (provided a responsive GUI). ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Nov 8, 2003 ### [Blog: The Software Simplist](https://osherove.com/blog/2003/11/8/blog-the-software-simplist.html) - Nov 4, 2003 ### [RSS feeds for your pleasure](https://osherove.com/blog/2003/11/4/rss-feeds-for-your-pleasure.html) - Oct 27, 2003 ### [WinSupersite RSS feed](https://osherove.com/blog/2003/10/27/winsupersite-rss-feed.html) - Oct 27, 2003 ### [KeyNote feed - live from the PDC (RSS feed, that is)](https://osherove.com/blog/2003/10/27/keynote-feed-live-from-the-pdc-rss-feed-that-is.html) --- title: "Israel .Net web user group meets today - Design time programming in Vs.Net" url: "https://osherove.com/blog/2003/10/29/israel-net-web-user-group-meets-today-design-time-programmin.md" canonical: "https://osherove.com/blog/2003/10/29/israel-net-web-user-group-meets-today-design-time-programmin.html" published: "2003-10-29T09:44:00" updated: "2003-10-29T09:44:00" tags: [".Net Original"] author: "Roy Osherove" description: "The user group meets today, 29.10.03 registration starts at 17:00, groups starts at 17:45 at the MS HQ near ra'anana (Amdocs building) topics: What is it Design Time programming and what is it good for? Various…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel .Net web user group meets today - Design time programming in Vs.Net By Roy Osherove October 29, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published October 29, 2003; technical details may be outdated. [The user group meets today, 29.10.03](http://www.microsoft.com/israel/events/default.aspx?pageType=1&idType=1&id=36) registration starts at 17:00, groups starts at 17:45 at the MS HQ near ra'anana (Amdocs building) topics: - What is it Design Time programming and what is it good for? - Various techniques of Design Time programming. - Design Time attributes. - Type Converters. - Debugging Design Time code. - UI Type Editors. - Designers. - If time permits – comparison between design time support in Microsoft VS.NET and Borland C# Builder. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 4, 2003 ### [\[Article X 2\] 2 more of mine published on MSDNAA](https://osherove.com/blog/2003/11/4/article-x-2-2-more-of-mine-published-on-msdnaa.html) - Nov 4, 2003 ### [\[Article/Code\]: Easy Proxy handling through the ProxyFactory and ProxyInfo classes](https://osherove.com/blog/2003/11/4/articlecode-easy-proxy-handling-through-the-proxyfactory-and.html) - Oct 27, 2003 ### [Refactoring, FINALLY!](https://osherove.com/blog/2003/10/27/refactoring-finally.html) - Oct 27, 2003 ### [Winforms menu shortcuts not working sometimes? Use ProcessDialogKey()](https://osherove.com/blog/2003/10/27/winforms-menu-shortcuts-not-working-sometimes-use-processdia.html) --- title: "New VB.Net features from the trenches, and the PDCBloggers feed is your friend" url: "https://osherove.com/blog/2003/10/29/new-vbnet-features-from-the-trenches-and-the-pdcbloggers-fee.md" canonical: "https://osherove.com/blog/2003/10/29/new-vbnet-features-from-the-trenches-and-the-pdcbloggers-fee.html" published: "2003-10-29T07:26:00" updated: "2003-10-29T07:26:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Tom Mertens writes about some of the cool new features in VB.Net in the next version of Visual Studio .Net (”Whidbey”). Lots of cool stuff in there. If you're interested in hearing all the latest cool news from the PDC…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New VB.Net features from the trenches, and the PDCBloggers feed is your friend By Roy Osherove October 29, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published October 29, 2003; technical details may be outdated. [Tom Mertens](http://pdcbloggers.net/Tracks/Tools/710.item) writes about some of the cool new features in VB.Net in the next version of Visual Studio .Net (”Whidbey”). Lots of cool stuff in there. If you're interested in hearing all the latest cool news from the PDC about Whidbey and longhorn , the [PDCBloggers RSS feed](http://pdcbloggers.net/) is ,at the time of writing this, the best resource I can find . It's actually regulated, so the posts themselves are not posted up there until they've been scanned for the “coolness” and “to the point” factors. Good job! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 30, 2003 ### [Funny and informative "Lap Around Longhorn" video from MSDN TV](https://osherove.com/blog/2003/10/30/funny-and-informative-quotlap-around-longhornquot-video-from.html) - Oct 30, 2003 ### [Avalon automated UI Testing framework](https://osherove.com/blog/2003/10/30/avalon-automated-ui-testing-framework.html) - Oct 27, 2003 ### [Nice GC tip](https://osherove.com/blog/2003/10/27/nice-gc-tip.html) - Oct 14, 2003 ### [Cool trick of the day - VSS keyword expansion](https://osherove.com/blog/2003/10/14/cool-trick-of-the-day-vss-keyword-expansion.html) --- title: "Waiting for the Next RSS Bandit" url: "https://osherove.com/blog/2003/10/28/waiting-for-the-next-rss-bandit.md" canonical: "https://osherove.com/blog/2003/10/28/waiting-for-the-next-rss-bandit.html" published: "2003-10-28T09:29:00" updated: "2003-10-28T09:29:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Dare Says that all the features people want from SharpReader are already present in RSS Bandit . I agree. RSS Bandit , feature wise, is a much richer application. It's pretty weird to say this, but I really want to use…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Waiting for the Next RSS Bandit By Roy Osherove October 28, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 28, 2003; technical details may be outdated. [Dare Says](http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=c7140c45-0f71-43c1-8d76-873b0aa49c95) that all the features people want from [SharpReader](http://www.sharpreader.net/) are already present in [RSS Bandit](http://www.rssbandit.org/). I agree. RSS [Bandit](http://www.rssbandit.org/), feature wise, is a much richer application. It's pretty weird to say this, but I really **want** to use RSS Bandit, but I just can't. Every time I try to use it, and import my 250-300 feed opml into it, it starts choking and the GUI hangs. Now, this was understood in the last version, which was not multi threaded, but Dare took time and listened to my comments, and actually made multi threading a new feature for this version of RB. I can only say that , yeah, it works, but the GUI still hangs and is very very slow when trying to update all those feeds. I keep going back to SharpReader, not because I think its better, or has more features, but because it **just works** and I can actually use it without waiting for my main window to repaint itself every time I refresh my feeds. Sorry Dare. I really **want** to use a feature as cool as seeing the comments for a post inside the aggregator tree (and being able to post a comment from the client too, how cool is that??), but I just can't stand by as my client wrecks every piece of human dignity I have left, trying to shout at my computer “Move you lazy beast!”. I have a dream, where RSS Bandit is as responsive as SharpReader when updating its feeds. Once that dream is a reality, I can safely say that RSS bandit will be my aggregator of choice. It \*is\* very cool. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 31, 2003 ### [Nice Blog.](https://osherove.com/blog/2003/10/31/nice-blog.html) - Oct 31, 2003 ### [A dream come true.. almost](https://osherove.com/blog/2003/10/31/a-dream-come-true-almost.html) - Oct 27, 2003 ### [Regulator Coming along nicely](https://osherove.com/blog/2003/10/27/regulator-coming-along-nicely.html) - Oct 27, 2003 ### [Got Proxy? Help me test The Regulator](https://osherove.com/blog/2003/10/27/got-proxy-help-me-test-the-regulator.html) --- title: "Regulator Coming along nicely" url: "https://osherove.com/blog/2003/10/27/regulator-coming-along-nicely.md" canonical: "https://osherove.com/blog/2003/10/27/regulator-coming-along-nicely.html" published: "2003-10-27T19:50:00" updated: "2003-10-27T19:50:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "Regulator is about to pass the 1,200 downloads mark (in 5 days). How cool is that? I've got an update coming. It will now support web searching through a Proxy, which , as I understand, was a small headache for some…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Regulator Coming along nicely By Roy Osherove October 27, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 27, 2003; technical details may be outdated. [Regulator](http://royo.is-a-geek.com/regulator) is about to pass the **1,200 downloads** mark (in 5 days). How cool is that? I've got an update coming. It will now support web searching through a Proxy, which , as I understand, was a small headache for some people. I'd like to Thank **Eddie Garmon** and [Darren](http://weblogs.asp.net/dneimke/).  Eddie pinged me early on and let me know about the Proxy thing. Honestly, that issue didn't even occur to me before that. Since I knew nothing about the subject, Eddie gave me some good tips along the way, and I started digging in and finding out how it's done. Near the end I kinda lost myself a bit somewhere in the bits, but Darren swept in at the last second and solved my problems in about 2 sentences. Also Thanks to **Ron Green**, who gave some of his time to test The Regulator bits. Thanks you guys! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Nov 6, 2003 ### [C# Programmable Calculator](https://osherove.com/blog/2003/11/6/c-programmable-calculator.html) - Nov 5, 2003 ### [\[Tool\] The Regulator 1.02a is out](https://osherove.com/blog/2003/11/5/tool-the-regulator-102a-is-out.html) - Oct 26, 2003 ### [.NET development - Extra tools?](https://osherove.com/blog/2003/10/26/net-development-extra-tools.html) - Oct 25, 2003 ### [The Regulator is BACK!](https://osherove.com/blog/2003/10/25/the-regulator-is-back.html) --- title: "Refactoring, FINALLY!" url: "https://osherove.com/blog/2003/10/27/refactoring-finally.md" canonical: "https://osherove.com/blog/2003/10/27/refactoring-finally.html" published: "2003-10-27T19:38:00" updated: "2003-10-27T19:38:00" tags: [".Net Original"] author: "Roy Osherove" description: "If there's one thing that stood out for me from the Whidbey screenshots, it's this: FINALLY, some refactoring support! Hopefully, this is just the beginning. The Whidbey team should take notice of the amount of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Refactoring, FINALLY! By Roy Osherove October 27, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published October 27, 2003; technical details may be outdated. If there's one thing that stood out for me from the Whidbey screenshots, it's this: [![Powerful new code refactoring](https://osherove.com/img/wb/e5e843fa_asp.net_whidbey_images_Refactoring_sm.gif)](http://asp.net/whidbey/images/ShowImage.aspx?id=40) FINALLY, some refactoring support! Hopefully, this is just the beginning. The Whidbey team should take notice of the amount of refactorings available in products such as IntelliJ IDEA, which I've just [written](http://weblogs.asp.net/rosherove/posts/33538.aspx) [about](http://weblogs.asp.net/rosherove/posts/33541.aspx) a few posts ago, but I like the way this is going! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Nov 4, 2003 ### [\[Article/Code\]: Easy Proxy handling through the ProxyFactory and ProxyInfo classes](https://osherove.com/blog/2003/11/4/articlecode-easy-proxy-handling-through-the-proxyfactory-and.html) - Oct 29, 2003 ### [Israel .Net web user group meets today - Design time programming in Vs.Net](https://osherove.com/blog/2003/10/29/israel-net-web-user-group-meets-today-design-time-programmin.html) - Oct 27, 2003 ### [Winforms menu shortcuts not working sometimes? Use ProcessDialogKey()](https://osherove.com/blog/2003/10/27/winforms-menu-shortcuts-not-working-sometimes-use-processdia.html) - Oct 26, 2003 ### [Calling webservices asynchronously - 2 possible ways](https://osherove.com/blog/2003/10/26/calling-webservices-asynchronously-2-possible-ways.html) --- title: "WinSupersite RSS feed" url: "https://osherove.com/blog/2003/10/27/winsupersite-rss-feed.md" canonical: "https://osherove.com/blog/2003/10/27/winsupersite-rss-feed.html" published: "2003-10-27T15:53:00" updated: "2003-10-27T15:53:00" tags: ["Blogging"] author: "Roy Osherove" description: "I bet This will come in real handy during PDC week :) Consider WinSuperSite officially Feedable ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # WinSupersite RSS feed By Roy Osherove October 27, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 27, 2003; technical details may be outdated. I bet **This** will come in real handy during PDC week :) [Consider WinSuperSite officially](http://royo.is-a-geek.com/siteFeeder/GetFeed.aspx?FeedId=38) **[Feedable](http://royo.is-a-geek.com/siteFeeder/GetFeed.aspx?FeedId=38).** ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Nov 4, 2003 ### [RSS feeds for your pleasure](https://osherove.com/blog/2003/11/4/rss-feeds-for-your-pleasure.html) - Oct 29, 2003 ### [RSS Bandit revamped - your comments appreciated](https://osherove.com/blog/2003/10/29/rss-bandit-revamped-your-comments-appreciated.html) - Oct 27, 2003 ### [KeyNote feed - live from the PDC (RSS feed, that is)](https://osherove.com/blog/2003/10/27/keynote-feed-live-from-the-pdc-rss-feed-that-is.html) - Oct 26, 2003 ### [Peter and Douglas do it right (PDC Blogging the way I like it) and the list grows](https://osherove.com/blog/2003/10/26/peter-and-douglas-do-it-right-pdc-blogging-the-way-i-like-it.html) --- title: "KeyNote feed - live from the PDC (RSS feed, that is)" url: "https://osherove.com/blog/2003/10/27/keynote-feed-live-from-the-pdc-rss-feed-that-is.md" canonical: "https://osherove.com/blog/2003/10/27/keynote-feed-live-from-the-pdc-rss-feed-that-is.html" published: "2003-10-27T15:28:00" updated: "2003-10-27T15:28:00" tags: ["Blogging"] author: "Roy Osherove" description: "Scott Hanselman has been moblogging the whole PDC keynote ,and still going:" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # KeyNote feed - live from the PDC (RSS feed, that is) By Roy Osherove October 27, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 27, 2003; technical details may be outdated. [Scott Hanselman has been moblogging](http://www.hanselman.com/blog/) the whole PDC keynote ,and still going: ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 29, 2003 ### [RSS Bandit revamped - your comments appreciated](https://osherove.com/blog/2003/10/29/rss-bandit-revamped-your-comments-appreciated.html) - Oct 27, 2003 ### [WinSupersite RSS feed](https://osherove.com/blog/2003/10/27/winsupersite-rss-feed.html) - Oct 26, 2003 ### [Peter and Douglas do it right (PDC Blogging the way I like it) and the list grows](https://osherove.com/blog/2003/10/26/peter-and-douglas-do-it-right-pdc-blogging-the-way-i-like-it.html) - Oct 26, 2003 ### [Leaving for PDC post hailstorm](https://osherove.com/blog/2003/10/26/leaving-for-pdc-post-hailstorm.html) --- title: "Got Proxy? Help me test The Regulator" url: "https://osherove.com/blog/2003/10/27/got-proxy-help-me-test-the-regulator.md" canonical: "https://osherove.com/blog/2003/10/27/got-proxy-help-me-test-the-regulator.html" published: "2003-10-27T14:23:00" updated: "2003-10-27T14:23:00" tags: ["Off Topic"] author: "Roy Osherove" description: "One of the requests for The Regulator was that the web search will be able to use Proxy settings. While I've added the feature, I have no way to test it. So.. if you're not in the PDC and are behind a proxy and would…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Got Proxy? Help me test The Regulator By Roy Osherove October 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 27, 2003; technical details may be outdated. One of the requests for [The Regulator](http://royo.is-a-geek.com/regulator) was that the web search will be able to use Proxy settings. While I've added the feature, I have no way to test it. So.. if you're **not** in the PDC and **are** behind a proxy and **would** like to donate 5 minutes of your time, post a comment with your email and I'll contact you with details of where to get the bits. Thanks. **P.S.** I'm thinking about making a “beta testing” group for this tool. If you're interested in being a part of this, write it in your comment. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 28, 2003 ### [Waiting for the Next RSS Bandit](https://osherove.com/blog/2003/10/28/waiting-for-the-next-rss-bandit.html) - Oct 27, 2003 ### [Regulator Coming along nicely](https://osherove.com/blog/2003/10/27/regulator-coming-along-nicely.html) - Oct 27, 2003 ### [New skin and new book recommendation](https://osherove.com/blog/2003/10/27/new-skin-and-new-book-recommendation.html) - Oct 26, 2003 ### [Leaving for PDC post hailstorm](https://osherove.com/blog/2003/10/26/leaving-for-pdc-post-hailstorm.html) --- title: "New skin and new book recommendation" url: "https://osherove.com/blog/2003/10/27/new-skin-and-new-book-recommendation.md" canonical: "https://osherove.com/blog/2003/10/27/new-skin-and-new-book-recommendation.html" published: "2003-10-27T08:30:00" updated: "2003-10-27T08:30:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Just thought I'd see how my blog looks with a different skin. I like it. I'll keep it. Also thought it's about time I update my favorite/most wanted book recommendation. So, I put the new link up on the blog. This time…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New skin and new book recommendation By Roy Osherove October 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 27, 2003; technical details may be outdated. Just thought I'd see how my blog looks with a different skin. I like it. I'll keep it. Also thought it's about time I update my favorite/most wanted book recommendation. So, I put the new link up on the blog. This time its [Windows Forms Programming in C#](https://www.amazon.com/exec/obidos/ASIN/0321116208/iserializable-20)  , by Chris [Chris Sells](http://www.sellsbrothers.com/). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 27, 2003 ### [Regulator Coming along nicely](https://osherove.com/blog/2003/10/27/regulator-coming-along-nicely.html) - Oct 27, 2003 ### [Got Proxy? Help me test The Regulator](https://osherove.com/blog/2003/10/27/got-proxy-help-me-test-the-regulator.html) - Oct 26, 2003 ### [Leaving for PDC post hailstorm](https://osherove.com/blog/2003/10/26/leaving-for-pdc-post-hailstorm.html) - Oct 26, 2003 ### [And a few lessons from JBuilder](https://osherove.com/blog/2003/10/26/and-a-few-lessons-from-jbuilder.html) --- title: "Winforms menu shortcuts not working sometimes? Use ProcessDialogKey()" url: "https://osherove.com/blog/2003/10/27/winforms-menu-shortcuts-not-working-sometimes-use-processdia.md" canonical: "https://osherove.com/blog/2003/10/27/winforms-menu-shortcuts-not-working-sometimes-use-processdia.html" published: "2003-10-27T07:40:00" updated: "2003-10-27T07:40:00" tags: [".Net Original"] author: "Roy Osherove" description: "One of the one of the usability standards I always try to live up to in my win forms apps is letting the user choose how to perform any specific action, Mouse or keyboard. What I mean is that for every action that the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Winforms menu shortcuts not working sometimes? Use ProcessDialogKey() By Roy Osherove October 27, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published October 27, 2003; technical details may be outdated. One of the one of the usability standards I always try to live up to in my win forms apps is letting the user choose how to perform any specific action, Mouse or keyboard. What I mean is that for every action that the user will be able to click on something to perform it, I always try to make sure there’s a keyboard shortcut or at least **some** way to do it using the keyboard. In [Regulator](http://royo.is-a-geek.com/regulator), I came into somewhat of a problem, something which I’m used to encountering in VB6 apps. I have multiple forms hosted within a single form (not MDI). I also have various toolbar controls from ComponentOne and the Magic Library controls (the free version). I discovered that, in some situations, even though I have setup the correct shortcut keys to the main toolbar in the hosting form, pressing these keys when some control in the hosted form is focused might not always trigger the shortcut action I wanted. So how do I still grab it? How do I “snatch” the pressed key combination without having to catch the KeyDown event for each of my sub-form’s constituent controls? The answer lies within the **Control** class. The **Control** Class has an overridable method called **ProcessDialogKey**. My form will  process the dialog key that was pressed no matter what control inside it was focused during that time. It will actually process this key **before** any child controls process it. Here’s how I override the method and check for specific key combinations: protected override bool ProcessDialogKey(Keys keyData) try { switch (keyData) {       case Keys.F5:             StartMatchThread();             break;       case Keys.F6:             StartReplaceThread();             break;       case Keys.Control | Keys.S:             Save();             break;       ... } return base.ProcessDialogKey (keyData); } catch(Exception ) {       return false;         } What’s important here is to, in the end, return the result from the base class, so that regular processing can continue as usual. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 29, 2003 ### [Israel .Net web user group meets today - Design time programming in Vs.Net](https://osherove.com/blog/2003/10/29/israel-net-web-user-group-meets-today-design-time-programmin.html) - Oct 27, 2003 ### [Refactoring, FINALLY!](https://osherove.com/blog/2003/10/27/refactoring-finally.html) - Oct 26, 2003 ### [Calling webservices asynchronously - 2 possible ways](https://osherove.com/blog/2003/10/26/calling-webservices-asynchronously-2-possible-ways.html) - Oct 24, 2003 ### [The Regulator won't be available while I sort this GPL thing out.](https://osherove.com/blog/2003/10/24/the-regulator-wont-be-available-while-i-sort-this-gpl-thing.html) --- title: "Nice GC tip" url: "https://osherove.com/blog/2003/10/27/nice-gc-tip.md" canonical: "https://osherove.com/blog/2003/10/27/nice-gc-tip.html" published: "2003-10-27T06:13:00" updated: "2003-10-27T06:13:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Doug Reilly posts about the big difference that happens in the GC between debug and release modes. I did not know that! Good one." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice GC tip By Roy Osherove October 27, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published October 27, 2003; technical details may be outdated. Doug Reilly [posts about](http://weblogs.asp.net/dreilly/posts/33701.aspx) the big difference that happens in the GC between debug and release modes. I did not know that! Good one. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 30, 2003 ### [Avalon automated UI Testing framework](https://osherove.com/blog/2003/10/30/avalon-automated-ui-testing-framework.html) - Oct 29, 2003 ### [New VB.Net features from the trenches, and the PDCBloggers feed is your friend](https://osherove.com/blog/2003/10/29/new-vbnet-features-from-the-trenches-and-the-pdcbloggers-fee.html) - Oct 14, 2003 ### [Cool trick of the day - VSS keyword expansion](https://osherove.com/blog/2003/10/14/cool-trick-of-the-day-vss-keyword-expansion.html) - Oct 6, 2003 ### [More than 500 sample chapters](https://osherove.com/blog/2003/10/6/more-than-500-sample-chapters.html) --- title: "Peter and Douglas do it right (PDC Blogging the way I like it) and the list grows" url: "https://osherove.com/blog/2003/10/26/peter-and-douglas-do-it-right-pdc-blogging-the-way-i-like-it.md" canonical: "https://osherove.com/blog/2003/10/26/peter-and-douglas-do-it-right-pdc-blogging-the-way-i-like-it.html" published: "2003-10-26T20:57:00" updated: "2003-10-26T20:57:00" tags: ["Blogging"] author: "Roy Osherove" description: "Somehow, of all the “PDC Bloggers” out there in the wild, I heard almost nothing but fires, planes, wireless connections and “This is how I look” posts... except for Peter and Douglas (I'm talking only about PDC content…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Peter and Douglas do it right (PDC Blogging the way I like it) and the list grows By Roy Osherove October 26, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 26, 2003; technical details may be outdated. Somehow, of all the “PDC Bloggers” out there in the wild, I heard almost nothing but fires, planes, wireless connections and “This is how I look” posts... except for Peter and Douglas (I'm talking only about PDC content here, there are other great blogs, but not from the PDC itself). In  [1](http://www.peterprovost.org/weblog/permalink.aspx?guid=214cb24c-acd5-44a0-a151-e8d51191d635)\-[2](http://weblogs.asp.net/dreilly/posts/33617.aspx) posts they've managed to squeeze in more information than the 250+ blogs I have in SharpReader (leaving aside minutia such as the PDC community application which was blogged about somewhere ) . I recommend dropping the main feed for a while, at least until it stops being a dating message board,and concentrate on finding the feeds that actually **say something meaningful**. So, for now, Start with [Peter](http://www.peterprovost.org/weblog/) and [Douglas](http://weblogs.asp.net/dreilly). Hopefully, others will join soon. **Update:** [Benjamin](http://benjaminm.net/PermaLink.aspx?guid=7973e924-241d-4b7f-8720-1326b5275c2a) is added to the list too. [Drew](http://weblogs.asp.net/dmarsh/posts/33593.aspx) is also added. **Update 2:** I've removed what I wrote about LonghornBlogs because it will only start to be relevant tomorrow. Please Accept my apologies for that. I guess I want content a bit \*too much\*. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 27, 2003 ### [WinSupersite RSS feed](https://osherove.com/blog/2003/10/27/winsupersite-rss-feed.html) - Oct 27, 2003 ### [KeyNote feed - live from the PDC (RSS feed, that is)](https://osherove.com/blog/2003/10/27/keynote-feed-live-from-the-pdc-rss-feed-that-is.html) - Oct 26, 2003 ### [Leaving for PDC post hailstorm](https://osherove.com/blog/2003/10/26/leaving-for-pdc-post-hailstorm.html) - Oct 15, 2003 ### [FDML? Here's a different direction](https://osherove.com/blog/2003/10/15/fdml-heres-a-different-direction.html) --- title: "Calling webservices asynchronously - 2 possible ways" url: "https://osherove.com/blog/2003/10/26/calling-webservices-asynchronously-2-possible-ways.md" canonical: "https://osherove.com/blog/2003/10/26/calling-webservices-asynchronously-2-possible-ways.html" published: "2003-10-26T11:01:00" updated: "2003-10-26T11:01:00" tags: [".Net Original"] author: "Roy Osherove" description: "Calling a web service inside your win forms application is almost trivial. Making the user happy while you do it, is just a little less trivial, but very doable. Say I have this webservice call (and suppose I have an…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Calling webservices asynchronously - 2 possible ways By Roy Osherove October 26, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published October 26, 2003; technical details may be outdated. Calling a web service inside your win forms application is almost trivial. Making the user happy while you do it, is just a little less trivial, but very doable. Say I have this webservice call (and suppose I have an application that called a webservice on RegexLib.com for that matter..): If that service contained a webmethod named “ListRegexp(parameters..)”, creating a web reference to that service would create a wrapper class in my project that allowed me to call this webmethod directly, in which case I could write something like this: private void SearchWeb() { try {       ShowSearchStatus("Querying service...");       com.regexlib.www.Webservices searcher = new com.regexlib.www.Webservices();       DataSet ds\= searcher.listRegExp(GetQueryString());       ShowSearchStatus("Filling results...");       BindGrid(ds);                       ShowSearchStatus(""); } catch(Exception e) {       ShowSearchStatus(e.Message); } } This method is called, data is retrieved, statuses are shown, and everything is dandy. Or is it? What if the method takes 1 minute to complete? Remember, this is a web service, and we are helplessly waiting for it to finish its job with no control what so ever over when it finishes. Meanwhile, the user is waiting there. Not only are they **waiting** there, the GUI is **also waiting** there, not doing anything, not even **repainting** itself, or responding to mouse clicks. This is user hell, and your user just joined the party in progress. So how to we call the web service asynchronously?  two basic ways about it. **#1 Web Service Asynchronous invocation** If we look carefully at the class that was generated for us when we added the web reference, we can see that for every web method in the webservice, the wrapper class that was generated contains: - A method with the same name - Begin\[Method Name\] - End\[Method Name\] So, for our ListRegexp() method, we also have **BeginListRegexp** and **EndListRegexp** . these two methods are used if you want to call the webservice asynchronously, without hanging the GUI. In the back, a separate thread is created and a Delegate.BeginInvoke() and EndInvoke() is called. Standard async stuff. Her’es how to implement async calls using these methods: private void SearchWebAsync() {       //Start the invokation and pass in a callback delegate       //to be called in finish       ShowSearchStatus("Querying service...");       com.regexlib.www.Webservices searcher = new com.regexlib.www.Webservices();       IAsyncResult result = searcher.BeginlistRegExp(GetQuryString(), new AsyncCallback(OnSearchFinish), searcher); } private void OnSearchFinish(IAsyncResult result) {             //recieve the searcher that we passed in as state             //in SearchWebAsync       com.regexlib.www.Webservices searcher = (com.regexlib.www.Webservices )result.AsyncState;             //retrieve the result of the invocation       DataSet ds\= searcher.EndlistRegExp(result);       BindGrid(ds);       ShowSearchStatus(""); } Notice that now I need to implement two methods: one that calls the webservice and invokes the method on it, and one that is called when that webservice method has finished its processing (or on timeout). The first method returns immediately, and our GUI can stay up to date and responsive. The second one is actually passed as a callback to the “Begin\[method name\]” method of the webservice. In fact, the Begin\[method name} has added two new parameters to the standard web method that was published. The first is a delegate that will be called on method work finish, and second one is state that will be passed into the callback method. This state can be anything you want, or it can be null. I use it to pass the webservice object itself, so that I can Call “End\[Method name\]” and get the results I need back. This is only needed if you plan to get results back. If not, you can pass in a null. As I said, in the callback method I use “End\[Method name\]” to get back the results that the method returns. Very simple. You also notice that in the calling method, I receive an IAsyncResult object. I can use this object to control the invocation from the calling end, but this is not needed in this situation. **#2: Synchronous invocation, on a separate thread** The other way around this: simply use a separate thread to call the intial version of our webSearch method: private void StartSearchThread() {       if(\_searchThread!=null &&             \_searchThread.ThreadState\==ThreadState.Running)                   {             \_searchThread.Abort();       }       \_searchThread = new Thread(new ThreadStart(SearchWeb));       \_searchThread.Start(); } What I’m doing here is having a Thread variable in the class that is separately running the synchronous version of my web search method. I can control the thread and stop it when needed, and the code is less complicated to begin with. One thing to note here that, just like any other multi threaded GUI, you can’t interact with GUI items from a thread that is not the GUI thread. Your application may suffer and hang because of it. So, Here’s how my ShowStatus(string) method is written, to be thread safe: private delegate void StdDelegateString(string text); private void  ShowSearchStatus(string status) {       if(this.InvokeRequired)       {             Invoke(new StdDelegateString(ShowSearchStatus),new object\[\]{status});             return ;       }       lblStatus.Text\= status; } **InvokeRequired** is a property derived from the Control class. It is one of the few that **are** thread safe. It returns through if the thread that is asking it is not the GUI thread. **Control.Invoke** is the other Thread Safe method we need here. It allows us to call any method using the GUI thread. Here, our method is calling itself with the same parameters if it finds out it is not being called from the GUI thread. Notice the clumsiness of this approach. I have to define my own delegate so that I can call a method that receives a string as a parameter. Currently, this is the most straight forward way of doing Thread safe GUI operations. Hopefully, this is fixed in .Net 2.0 ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 27, 2003 ### [Refactoring, FINALLY!](https://osherove.com/blog/2003/10/27/refactoring-finally.html) - Oct 27, 2003 ### [Winforms menu shortcuts not working sometimes? Use ProcessDialogKey()](https://osherove.com/blog/2003/10/27/winforms-menu-shortcuts-not-working-sometimes-use-processdia.html) - Oct 24, 2003 ### [The Regulator won't be available while I sort this GPL thing out.](https://osherove.com/blog/2003/10/24/the-regulator-wont-be-available-while-i-sort-this-gpl-thing.html) - Oct 23, 2003 ### [\[Tool\] Introducing The Regulator - advanced regex tool](https://osherove.com/blog/2003/10/23/tool-introducing-the-regulator-advanced-regex-tool.html) --- title: "Leaving for PDC post hailstorm" url: "https://osherove.com/blog/2003/10/26/leaving-for-pdc-post-hailstorm.md" canonical: "https://osherove.com/blog/2003/10/26/leaving-for-pdc-post-hailstorm.html" published: "2003-10-26T10:39:00" updated: "2003-10-26T10:39:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Looks like we're in the midst of a “Leaving for PDC” posts hailstorm. I suspect this will get worse as time goes by, as we'll start getting a “Just saw X, and it's cool”, and “Meet me by building 101B at 12:00” posts.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Leaving for PDC post hailstorm By Roy Osherove October 26, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 26, 2003; technical details may be outdated. Looks like we're in the midst of a “Leaving for PDC” posts hailstorm. I suspect this will get worse as time goes by, as we'll start getting a “Just saw X, and it's cool”, and “Meet me by building 101B at 12:00” posts. yay! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 27, 2003 ### [KeyNote feed - live from the PDC (RSS feed, that is)](https://osherove.com/blog/2003/10/27/keynote-feed-live-from-the-pdc-rss-feed-that-is.html) - Oct 26, 2003 ### [Peter and Douglas do it right (PDC Blogging the way I like it) and the list grows](https://osherove.com/blog/2003/10/26/peter-and-douglas-do-it-right-pdc-blogging-the-way-i-like-it.html) - Oct 15, 2003 ### [FDML? Here's a different direction](https://osherove.com/blog/2003/10/15/fdml-heres-a-different-direction.html) - Oct 13, 2003 ### [Better times ahead?](https://osherove.com/blog/2003/10/13/better-times-ahead.html) --- title: ".NET development - Extra tools?" url: "https://osherove.com/blog/2003/10/26/net-development-extra-tools.md" canonical: "https://osherove.com/blog/2003/10/26/net-development-extra-tools.html" published: "2003-10-26T09:42:00" updated: "2003-10-26T09:42:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Arthur Warren asked a simple question on the win_tech_off_topic mailing list: “ While I'm annoying people with questions / polls, I'd be curious to know what extra tools people tend to use. We're not fully buying into…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .NET development - Extra tools? By Roy Osherove October 26, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 26, 2003; technical details may be outdated. Arthur Warren asked a simple question on the win\_tech\_off\_topic mailing list: “_While I'm annoying people with questions / polls, I'd be curious to know what extra tools people tend to use. We're not fully buying into the extreme programming model here, but are at least going to be doing TDD for the next few projects to see how it goes. With that in mind, I'm playing with NUnit; anything else that people use that'd be helpful? NDoc? Log4Net?_ “ What he got back was a big monster list of replies, each of which contained a small gem inside it. [Chris Burrows](http://www.madtechnology.net/blog/) thought the list was too good to forget, so he [put up the list on his web page](http://madtechnology.net/blog/posts/261.aspx). I agree with 90% of them (10% I never got to use..).  I **especially** agree with the fact that the [The Regulator](http://royo.is-a-geek.com/regulator) is in there :) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Nov 5, 2003 ### [\[Tool\] The Regulator 1.02a is out](https://osherove.com/blog/2003/11/5/tool-the-regulator-102a-is-out.html) - Oct 27, 2003 ### [Regulator Coming along nicely](https://osherove.com/blog/2003/10/27/regulator-coming-along-nicely.html) - Oct 25, 2003 ### [The Regulator is BACK!](https://osherove.com/blog/2003/10/25/the-regulator-is-back.html) - Oct 23, 2003 ### [\[Tool\] Introducing The Regulator - advanced regex tool](https://osherove.com/blog/2003/10/23/tool-introducing-the-regulator-advanced-regex-tool.html) --- title: "And a few lessons from JBuilder" url: "https://osherove.com/blog/2003/10/26/and-a-few-lessons-from-jbuilder.md" canonical: "https://osherove.com/blog/2003/10/26/and-a-few-lessons-from-jbuilder.html" published: "2003-10-26T09:32:00" updated: "2003-10-26T09:32:00" tags: ["Off Topic"] author: "Roy Osherove" description: "A few more features besides these come to mind when I think of other IDE’s I’ve used in the past that gave me the “ooh” factor. One of the more prominent ones is JBuilder 7.0 (That’s the version I played with). Several…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # And a few lessons from JBuilder By Roy Osherove October 26, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 26, 2003; technical details may be outdated. A few more features [besides these](http://weblogs.asp.net/rosherove/posts/33538.aspx) come to mind when I think of other IDE’s I’ve used in the past that gave me the “ooh” factor. One of the more prominent ones is JBuilder 7.0 (That’s the version I played with). Several cool features exist in the IDE, that do no exist in VS.Net or IntelliJ IDEA: ·        **Auto Generated UML diagram of the object model for the current project** o       This is a very nice window to show to the boss when they come around asking “SO, where are you?”. It very easily and quickly tells you what your object model looks like, and how each class is connected to others. Although this feature is simple to do (VS.Net has Rational intergration, right?), it’s still not there. ·        **Full integration with JUnit** o       Unit testing has been around for quite a while now. It’s practically one of the corner stones of agile development and is one of the key concepts every developer should at least be aware of. The easier you make creating and running unit tests, the more you provide a better platform for safer, less buggier code. It’s all in the education. No wonder JBuilder have built in integration  with JUnit. In a real agile project creating a unit test is about a 50% time consuming task when generating new code, so adding a unit test should be an easy natural thing. While Borland have already come to this realization, and IntelliJ have announced this feature for their upcoming version of IDEA, VS.NET still has to rely on outside sources to do its bidding. Shame on you Microsoft! Either select one framework of unit testing and rely on it for unit tests, or create your own framework (“MSUnit”?) that all vs.Net development will be able to take advantage of. Doing this will signal the world of developers out there that unit testing is a mainstream thing, and that MS is committed to quality code generated by its IDE. ·        **“Code History” panel** o       What’s cooler than this? You have a list of  versions of your source file, and just double clicking on the list takes you back before the big changes you just made. It’s easier than “Undo X times” and simpler than doing multiple checkins and “Get versions” from you source code repository. It’s not a replacement, though,. Just an aid to version management on a smaller, more local scope. Can we please have that? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 27, 2003 ### [New skin and new book recommendation](https://osherove.com/blog/2003/10/27/new-skin-and-new-book-recommendation.html) - Oct 26, 2003 ### [Leaving for PDC post hailstorm](https://osherove.com/blog/2003/10/26/leaving-for-pdc-post-hailstorm.html) - Oct 26, 2003 ### [A few lessons from IntelliJ IDEA](https://osherove.com/blog/2003/10/26/a-few-lessons-from-intellij-idea.html) - Oct 16, 2003 ### [\[Rant\] Horrible two weeks](https://osherove.com/blog/2003/10/16/rant-horrible-two-weeks.html) --- title: "A few lessons from IntelliJ IDEA" url: "https://osherove.com/blog/2003/10/26/a-few-lessons-from-intellij-idea.md" canonical: "https://osherove.com/blog/2003/10/26/a-few-lessons-from-intellij-idea.html" published: "2003-10-26T08:27:00" updated: "2003-10-26T08:27:00" tags: ["Off Topic"] author: "Roy Osherove" description: "My wife is currently taking Java classes as part of her curriculum at the university. I've played with Java a couple of times in the past, but because I never got a real chance of “working” with it, it never really grew…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A few lessons from IntelliJ IDEA By Roy Osherove October 26, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 26, 2003; technical details may be outdated. My wife is currently taking Java classes as part of her curriculum at the university. I've played with Java a couple of times in the past, but because I never got a real chance of “working” with it, it never really grew into anything more than fiddling with it a little bit and then forgetting everything. Fast forward a couple of years, and now I've been “playing” with C# for quite a while, and loving every minute of it. Now my wife has to play with Java, and I'm thinking, “What the hey, I might help her out with homework a little, just to get my feet wet again in this java thing”, besides, I really wanted to get a good look at the new [IntelliJ IDEA java IDE](http://www.intellij.com/), which some of my friends have been raving about like mad. Sure, I promised to help out with homework, but that doesn’t mean I can’t take a couple of hours and just play with the world of snazzy features that just fell into my lap, right?  Oh man. The refactoring features in the IDE are **dreamy**. Take every piece of code you ever wrote, and make changes to it with the ease of a few mouse clicks. One of my favorites is the ability to write private/public fields and then hit ALT+INSERT and select “Implement getters/setters” from the menu that pops up. Then I just check off the fields I want and they automatically get Getters and setters (and are turned private). Do the same routine again, but select “Create constructors”, and again, you get the ability to just check off the  fields that will be initialized automatically inside the constructors. You also get tips that act like smart tags: Here you can see what happens when I write a variable name in my method that is not declared. How cool is that? You get these tags when you do all sorts of things like not implement an interface correctly and so on.  Another favorite of mine: “Refactoring->Rename” allows you to change a field’s name and automatically make all the other code conform to the new name. You can do the same with class names, method signatures and so on. You can also extract code into a separate method, extract interfaces, extract superclasses, move members between class hierarchies… **very** nifty. Now, what I’ve outlined here is just the tip of the iceberg. There are literally hundreds of useful refactorings available in the IDE, and I love the amount of thought that went into creating this usability heaven. I don’t know just how good Whidbey will be at refactorings, but if it offers just half of this, it will be very cool (still, you have to wonder, why just half? How hard is it to implement all those features? Not very hard. It’s all pure nitty gritty work of search and replace mostly, that’s all). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 26, 2003 ### [Leaving for PDC post hailstorm](https://osherove.com/blog/2003/10/26/leaving-for-pdc-post-hailstorm.html) - Oct 26, 2003 ### [And a few lessons from JBuilder](https://osherove.com/blog/2003/10/26/and-a-few-lessons-from-jbuilder.html) - Oct 16, 2003 ### [\[Rant\] Horrible two weeks](https://osherove.com/blog/2003/10/16/rant-horrible-two-weeks.html) - Oct 14, 2003 ### [Microsoft PDC 2003 Sessions RSS feed? Oh yeah!](https://osherove.com/blog/2003/10/14/microsoft-pdc-2003-sessions-rss-feed-oh-yeah.html) --- title: "The Regulator is BACK!" url: "https://osherove.com/blog/2003/10/25/the-regulator-is-back.md" canonical: "https://osherove.com/blog/2003/10/25/the-regulator-is-back.html" published: "2003-10-25T04:40:00" updated: "2003-10-25T04:40:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Thanks to a donation by SyncFusion , we've got ourselves a brand new, non GPL edit control, thus allowing me to re-distribute The Regulator without worries. Thanks, Syncfusion . You made my day :) This is how it looks,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator is BACK! By Roy Osherove October 25, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 25, 2003; technical details may be outdated. Thanks to a donation by [SyncFusion](http://www.syncfusion.com/), we've got ourselves a brand new, non GPL edit control, thus allowing me to re-distribute [The Regulator](http://royo.is-a-geek.com/regulator/) without worries. Thanks, [Syncfusion](http://www.syncfusion.com/). You made my day :) [This](http://royo.is-a-geek.com/regulator/) is how it looks, and [this](http://workspaces.gotdotnet.com/reg) is where you can download it. Have fun, be productive, and [tell me the features you'd like to see most](http://www.gotdotnet.com/Community/MessageBoard/Thread.aspx?id=157606)! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Oct 27, 2003 ### [Regulator Coming along nicely](https://osherove.com/blog/2003/10/27/regulator-coming-along-nicely.html) - Oct 26, 2003 ### [.NET development - Extra tools?](https://osherove.com/blog/2003/10/26/net-development-extra-tools.html) - Oct 23, 2003 ### [\[Tool\] Introducing The Regulator - advanced regex tool](https://osherove.com/blog/2003/10/23/tool-introducing-the-regulator-advanced-regex-tool.html) - Oct 8, 2003 ### [Why I like SharpReader better](https://osherove.com/blog/2003/10/8/why-i-like-sharpreader-better.html) --- title: "The Regulator won't be available while I sort this GPL thing out." url: "https://osherove.com/blog/2003/10/24/the-regulator-wont-be-available-while-i-sort-this-gpl-thing.md" canonical: "https://osherove.com/blog/2003/10/24/the-regulator-wont-be-available-while-i-sort-this-gpl-thing.html" published: "2003-10-24T19:21:00" updated: "2003-10-24T19:21:00" tags: [".Net Original"] author: "Roy Osherove" description: "Following the recent discussions about the legal status of The Regulator in terms of the GPL, I've decided to take down the public release of the program from GDN until: I can make it fully GPL compatible (i.e,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Regulator won't be available while I sort this GPL thing out. By Roy Osherove October 24, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published October 24, 2003; technical details may be outdated. Following the [recent discussions](http://weblogs.asp.net/kguner/posts/33317.aspx) about the legal status of [The Regulator](http://weblogs.asp.net/rosherove/posts/33126.aspx) in terms of the GPL, I've decided to take down the public release of the program from [GDN](http://workspaces.gotdotnet.com/reg) until: - I can make it fully GPL compatible (i.e, releasing the source and resolving having non GPL components in there at the same time) - Or use a different component for text editing (I've contacted SyncFusion for perhaps donating their [Essential Edit](http://www.syncfusion.com/products/edit.asp) control for this purpose, since it looked very professional in [Snippet Compiler](http://www.sliver.com/dotnet/SnippetCompiler/). Having said that, I can say this: This totally sucks. I might be in a bad mood anyway, but this totally sucks. What happened to the days when people just wanted to make “free stuff”? If it's free, why the hell does it have “terms”? Yeah, it's childish and stupid to say that, but isn't this situation bizarre? **Update:** All is ok now, we got ourselves a brand new edit control. Look [here](http://weblogs.asp.net/rosherove/posts/33441.aspx) for more details ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 27, 2003 ### [Winforms menu shortcuts not working sometimes? Use ProcessDialogKey()](https://osherove.com/blog/2003/10/27/winforms-menu-shortcuts-not-working-sometimes-use-processdia.html) - Oct 26, 2003 ### [Calling webservices asynchronously - 2 possible ways](https://osherove.com/blog/2003/10/26/calling-webservices-asynchronously-2-possible-ways.html) - Oct 23, 2003 ### [\[Tool\] Introducing The Regulator - advanced regex tool](https://osherove.com/blog/2003/10/23/tool-introducing-the-regulator-advanced-regex-tool.html) - Oct 15, 2003 ### [\[Article\] on MSDNAA: Creating a Generic Site-To-Rss Tool](https://osherove.com/blog/2003/10/15/article-on-msdnaa-creating-a-generic-site-to-rss-tool.html) --- title: "[Tool] Introducing The Regulator - advanced regex tool" url: "https://osherove.com/blog/2003/10/23/tool-introducing-the-regulator-advanced-regex-tool.md" canonical: "https://osherove.com/blog/2003/10/23/tool-introducing-the-regulator-advanced-regex-tool.html" published: "2003-10-23T13:16:00" updated: "2003-10-23T13:16:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "Yeah, I've been away too long, but here's how I'm making up for it: Introducing The Regulator : An advanced regular expression tool with expert features such as: Syntax highlighting and folding Multi threaded operations…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Tool\] Introducing The Regulator - advanced regex tool By Roy Osherove October 23, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 23, 2003; technical details may be outdated. Yeah, I've been away too long, but here's how I'm making up for it: Introducing **The Regulator**: An advanced regular expression tool with expert features such as: - Syntax highlighting ~and folding~ - Multi threaded operations : ability to cancel long running expression matches and replaces - Search and import expressions and examples from RegexLib.com’s database, all this from within regulator - Regex snippets: an easy and simple toolbar of frequently used text snippets - Minimize to tray - Ability to select part of the regex text, and only that part will be used to run the match or replace (kind of like SQL query analyzer) Click the pic to download. **The Regulator uses nothing but free/organic components:** - ComponentOne Toolbars ,menus and FlexGrid (from the VB resource kit) - Magic library (the early free version) - The [SharpDevelop](http://www.icsharpcode.net/OpenSource/SD/) Text control for syntax highlighting - Standard Winforms controls ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 26, 2003 ### [Calling webservices asynchronously - 2 possible ways](https://osherove.com/blog/2003/10/26/calling-webservices-asynchronously-2-possible-ways.html) - Oct 24, 2003 ### [The Regulator won't be available while I sort this GPL thing out.](https://osherove.com/blog/2003/10/24/the-regulator-wont-be-available-while-i-sort-this-gpl-thing.html) - Oct 15, 2003 ### [\[Article\] on MSDNAA: Creating a Generic Site-To-Rss Tool](https://osherove.com/blog/2003/10/15/article-on-msdnaa-creating-a-generic-site-to-rss-tool.html) - Oct 8, 2003 ### [Introducing SiteFeeder](https://osherove.com/blog/2003/10/8/introducing-sitefeeder.html) --- title: "[Rant] Horrible two weeks" url: "https://osherove.com/blog/2003/10/16/rant-horrible-two-weeks.md" canonical: "https://osherove.com/blog/2003/10/16/rant-horrible-two-weeks.html" published: "2003-10-16T09:22:00" updated: "2003-10-16T09:22:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Well, I can safely say that these past 2 weeks sucked BIG time. Our only car broke down, requiring about 1,500$ worth of repairs and 3 days in the shop - leaving me no option but to cancel two important job interviews.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Rant\] Horrible two weeks By Roy Osherove October 16, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 16, 2003; technical details may be outdated. Well, I can safely say that these past 2 weeks sucked BIG time. Our only car broke down, requiring about 1,500$ worth of repairs and 3 days in the shop - leaving me no option but to cancel two important job interviews. not only that, but the day the car came back from the shop - it wouldn't start that evening - leaving us car-less for a whole weekend. That was up to Sunday this week. THIS week episodes: the car broke down YET AGAIN making me miss the same important job interview for the 2nd time! Not to mention I was seek for about two days, and no, **I still havn't found a job.**  So, I'm in the market for some good news. Anyone care to give me some? Is Microsoft hiring from Israel finally? I thought so. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 26, 2003 ### [And a few lessons from JBuilder](https://osherove.com/blog/2003/10/26/and-a-few-lessons-from-jbuilder.html) - Oct 26, 2003 ### [A few lessons from IntelliJ IDEA](https://osherove.com/blog/2003/10/26/a-few-lessons-from-intellij-idea.html) - Oct 14, 2003 ### [Microsoft PDC 2003 Sessions RSS feed? Oh yeah!](https://osherove.com/blog/2003/10/14/microsoft-pdc-2003-sessions-rss-feed-oh-yeah.html) - Oct 13, 2003 ### [Feedable will be offline a bit](https://osherove.com/blog/2003/10/13/feedable-will-be-offline-a-bit.html) --- title: "[Article] on MSDNAA: Creating a Generic Site-To-Rss Tool" url: "https://osherove.com/blog/2003/10/15/article-on-msdnaa-creating-a-generic-site-to-rss-tool.md" canonical: "https://osherove.com/blog/2003/10/15/article-on-msdnaa-creating-a-generic-site-to-rss-tool.html" published: "2003-10-15T17:58:00" updated: "2003-10-15T17:58:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "My Site-To-Rss article was just published on MSDNAA : Creating a Generic Site-To-Rss Tool" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Article\] on MSDNAA: Creating a Generic Site-To-Rss Tool By Roy Osherove October 15, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published October 15, 2003; technical details may be outdated. My Site-To-Rss article was just published on [](http://msdnaa.net/)[MSDNAA](http://www.msdnaa.net/): [Creating a Generic Site-To-Rss Tool](http://msdnaa.net/Resources/Display.aspx?ResID=2324) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 24, 2003 ### [The Regulator won't be available while I sort this GPL thing out.](https://osherove.com/blog/2003/10/24/the-regulator-wont-be-available-while-i-sort-this-gpl-thing.html) - Oct 23, 2003 ### [\[Tool\] Introducing The Regulator - advanced regex tool](https://osherove.com/blog/2003/10/23/tool-introducing-the-regulator-advanced-regex-tool.html) - Oct 8, 2003 ### [Introducing SiteFeeder](https://osherove.com/blog/2003/10/8/introducing-sitefeeder.html) - Oct 7, 2003 ### [\[Tip\]:MemoryStream.GetBuffer() vs. MemoryStream.ToArray()](https://osherove.com/blog/2003/10/7/tipmemorystreamgetbuffer-vs-memorystreamtoarray.html) --- title: "FDML? Here's a different direction" url: "https://osherove.com/blog/2003/10/15/fdml-heres-a-different-direction.md" canonical: "https://osherove.com/blog/2003/10/15/fdml-heres-a-different-direction.html" published: "2003-10-15T00:16:00" updated: "2003-10-15T00:16:00" tags: ["Blogging"] author: "Roy Osherove" description: "I’m not much in the way of thinking about various RSS standards, XML schemas and so on, so usually all the stuff that Sam Ruby writes about those matters gets blurred to me real fast. Maybe it’s because I’ve been so…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # FDML? Here's a different direction By Roy Osherove October 15, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 15, 2003; technical details may be outdated. I’m not much in the way of thinking about various RSS standards, XML schemas and so on, so usually all the stuff that [Sam Ruby](http://www.intertwingly.net/blog/) writes about those matters gets blurred to me real fast. Maybe it’s because I’ve been so caught up with [Feedable](http://royo.is-a-geek.com/sitefeeder/) and trying to find new and exciting ways to scrape a site’s contents, but [one of his latest posts](http://www.intertwingly.net/blog/1611.html) struck a chord with me. A chord which says “Hey, I have an idea and it’s time someone laughed at it!”. So here I am, preparing to write this down. So basically, what Sam talks about in there is how he and some of the guys were thinking about providing some sort of a “**F**eed **D**iscovery **M**arkup **L**anguage” (FDML? Ugh –sounds awful but what do I know?) for sites that wish to be able to describe their various syndication channels (RSS feeds for now..). I wanted to take a look at it from a different angle. **Let’s turn this whole thing around**. Looking at the subject matter from afar, we can see that we basically have several basic “entities” in this space: ·         **Data Provider**: The site/ organization that would like to expose data to the outside world. ·         **Data**: This is the data that the site wants to expose. Currently it is represented as HTML. ·         **View**: This is a view of the data. A browser provides a view of the provider’s data. An RSS aggregator is yet another view of that same data. Now, you could say that HTML is a sort of a “view” on the data, and that RSS is a different view on that data. What Sam is saying is “Let’s create a method for describing the RSS view that the provider exposes”. Looking at [how Feedable works](http://weblogs.asp.net/rosherove/posts/29509.aspx): \-         [Feedable](http://royo.is-a-geek.com/sitefeeder/) treats the site’s HTML – one of the view, as actual data. \-         It looks at the “data” with one simple variable in place – a regular expression that describes how to extract a different “view” from that ‘data’. \-         It then creates that new view using that description, and what we get at the end is: \-         HTML is a “data” with two unique “views” on it: the HTML itself, and the RSS feed that was generated from it.. Notice that in no time, is there a need for the site to generate yet another “view” of it’s underlying data. No RSS feed is created. In fact, the task of creating an RSS feed is left solely to the **client**\- [Feedable](http://royo.is-a-geek.com/sitefeeder/) site. So, what **would** happen if we decided the following? ·         Instead of generating an RSS feed, each site would actually generate a small, static description file o        The file will hold the necessary regular expression that is required to parse it’s “**contents page**” §         The file (regular expression) will expose a know set of “fields” and how to “scrape” them from that page. Possible fields: “_Date, data, title_..” and so on. Mainly based on what an RSS feed will show now. Consider that comments can also be described – but I think it might get a little complicated at this stage, and I’ll admit I hadn’t thought much past the first stage. §         The file will also expose the address of the page which is needed for scraping §         The file will be the only source that a reader will need in order to start getting that information o        The contents page will be the page on the site that holds the relevant material that the site wants to expose both as HTML and as **any other protocol** o        **Each aggregator will be responsible for generating the RSS feed given the site’s data description file** o        In fact – if we know how to get the raw data – RSS is only one option. We can easily transform this raw data into anything else. **pros:** \-         A site will only have to create a small description file(low expenses and investment), and rely on clients to be able to parse its data correctly according to the rules specified in that file. \-         Protocol independent; We don’t need to know RSS, XML or what not to get the information we need. We get it raw using regular expressions on simple downloaded text. The [KISS](http://whatis.techtarget.com/definition/0,,sid9_gci521694,00.html) principle at work. \-         That description file can grow to include whatever information we need – such as multiple data sources and so on. **Cons** \-         Describing comments, or anything that is “not right there” might be difficult. But there may be some elegant solution to this that I just can’t think of at 4.06AM. \-         You are limited to what’s in your HTML. \-         If your HTML “patterns” change – so must the regular expression. Considering various CSS styles and dynamic html, this might be a problem, but like everything else with standards, it relies on things being done “a certain way” to work. \-         You are coupled to one view of your data. This is a bit of a rehash of the previous point, but I think it shows just how “breakage” of object oriented rules this is. RSS can be made as just another “view” on data, and a “view” should not depend on other views. That is exactly the case here. I’m not sure just how viable this whole idea is, but it certainly works for [Feedable](http://royo.is-a-geek.com/sitefeeder/). As such, I’d like to throw it “out there”, so that it can at least stimulate some sort of discussion. Consider it a “brain stormer” idea; Not necessarily viable, but it gets your mind going in different directions. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 26, 2003 ### [Peter and Douglas do it right (PDC Blogging the way I like it) and the list grows](https://osherove.com/blog/2003/10/26/peter-and-douglas-do-it-right-pdc-blogging-the-way-i-like-it.html) - Oct 26, 2003 ### [Leaving for PDC post hailstorm](https://osherove.com/blog/2003/10/26/leaving-for-pdc-post-hailstorm.html) - Oct 13, 2003 ### [Better times ahead?](https://osherove.com/blog/2003/10/13/better-times-ahead.html) - Oct 13, 2003 ### [More Feedable updates](https://osherove.com/blog/2003/10/13/more-feedable-updates.html) --- title: "Microsoft PDC 2003 Sessions RSS feed? Oh yeah!" url: "https://osherove.com/blog/2003/10/14/microsoft-pdc-2003-sessions-rss-feed-oh-yeah.md" canonical: "https://osherove.com/blog/2003/10/14/microsoft-pdc-2003-sessions-rss-feed-oh-yeah.html" published: "2003-10-14T13:44:00" updated: "2003-10-14T13:44:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm gonna be really really subscribed to this feed . Hopefully, they'll have the sense to put in ppt links inside the posts as well." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft PDC 2003 Sessions RSS feed? Oh yeah! By Roy Osherove October 14, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 14, 2003; technical details may be outdated. I'm gonna be really really subscribed to [this feed](http://www.microsoftpdc.com/2003/feeds/SessionRss.xml). Hopefully, they'll have the sense to put in ppt links inside the posts as well. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 26, 2003 ### [A few lessons from IntelliJ IDEA](https://osherove.com/blog/2003/10/26/a-few-lessons-from-intellij-idea.html) - Oct 16, 2003 ### [\[Rant\] Horrible two weeks](https://osherove.com/blog/2003/10/16/rant-horrible-two-weeks.html) - Oct 13, 2003 ### [Feedable will be offline a bit](https://osherove.com/blog/2003/10/13/feedable-will-be-offline-a-bit.html) - Oct 8, 2003 ### [Describing and evaluating API usability at Microsoft](https://osherove.com/blog/2003/10/8/describing-and-evaluating-api-usability-at-microsoft.html) --- title: "Cool trick of the day - VSS keyword expansion" url: "https://osherove.com/blog/2003/10/14/cool-trick-of-the-day-vss-keyword-expansion.md" canonical: "https://osherove.com/blog/2003/10/14/cool-trick-of-the-day-vss-keyword-expansion.html" published: "2003-10-14T12:35:00" updated: "2003-10-14T12:35:00" tags: [".Net Quotations", "Tips & Tricks"] author: "Roy Osherove" description: "Well, I certainly didn't know about this cool VSS feature! turn this: '$History: Form1.vb $ ' into this: '***************** Version 24 ***************** 'User: Guest Date: 10/13/03 Time: 12:49p 'Updated in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool trick of the day - VSS keyword expansion By Roy Osherove October 14, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published October 14, 2003; technical details may be outdated. Well, I certainly didn't know about [this cool](http://blogs.gotdotnet.com/korbyp/permalink.aspx/1ce61a2c-a88b-484e-b9d8-c16f163337a3) VSS feature! **turn this:** _'$History: Form1.vb $ ' _ **into this:** _'\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  Version 24  \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* 'User: Guest        Date: 10/13/03   Time: 12:49p 'Updated in '$/WindowsApplication8.root/WindowsApplication8_ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 29, 2003 ### [New VB.Net features from the trenches, and the PDCBloggers feed is your friend](https://osherove.com/blog/2003/10/29/new-vbnet-features-from-the-trenches-and-the-pdcbloggers-fee.html) - Oct 27, 2003 ### [Nice GC tip](https://osherove.com/blog/2003/10/27/nice-gc-tip.html) - Oct 6, 2003 ### [More than 500 sample chapters](https://osherove.com/blog/2003/10/6/more-than-500-sample-chapters.html) - Oct 6, 2003 ### [Getting a focus on performance - some new pages](https://osherove.com/blog/2003/10/6/getting-a-focus-on-performance-some-new-pages.html) --- title: "Better times ahead?" url: "https://osherove.com/blog/2003/10/13/better-times-ahead.md" canonical: "https://osherove.com/blog/2003/10/13/better-times-ahead.html" published: "2003-10-13T23:07:00" updated: "2003-10-13T23:07:00" tags: ["Blogging"] author: "Roy Osherove" description: "One of the first feeds that I generated using Feedable, was Ali's Blog(Tech Guru). . He's a math student in Tehran. We never really got to talk until I made that RSS feed for him yet Somehow we got to chatting on MSN.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Better times ahead? By Roy Osherove October 13, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 13, 2003; technical details may be outdated. One of the first feeds that I generated using Feedable, was [Ali's Blog(Tech Guru).](http://www.aliparvaresh.com/blog) . He's a math student in Tehran. We never really got to talk until I made that RSS feed for him yet Somehow we got to chatting on MSN. Ali is Iranian, I'm an Israeli. Our countries are enemies. We don't necessarily agree with everything the other one believes in. Yet we talked. I won't repeat the chat because I didn't tell him I'd post about it. But the fact is we **talked** even through our political issues with each other. Yet another way technology brings us closer together. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 26, 2003 ### [Leaving for PDC post hailstorm](https://osherove.com/blog/2003/10/26/leaving-for-pdc-post-hailstorm.html) - Oct 15, 2003 ### [FDML? Here's a different direction](https://osherove.com/blog/2003/10/15/fdml-heres-a-different-direction.html) - Oct 13, 2003 ### [More Feedable updates](https://osherove.com/blog/2003/10/13/more-feedable-updates.html) - Oct 10, 2003 ### [RSS feed for SysInternals](https://osherove.com/blog/2003/10/10/rss-feed-for-sysinternals.html) --- title: "More Feedable updates" url: "https://osherove.com/blog/2003/10/13/more-feedable-updates.md" canonical: "https://osherove.com/blog/2003/10/13/more-feedable-updates.html" published: "2003-10-13T21:45:00" updated: "2003-10-13T21:45:00" tags: ["Blogging"] author: "Roy Osherove" description: "Yeah I know. It's starting to look like the Feedable blog here, but I promise i'll stop soon. This site has been a great learning experience for me. I couldn't have asked for a better way to start learning web…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More Feedable updates By Roy Osherove October 13, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 13, 2003; technical details may be outdated. Yeah I know. It's starting to look like the [Feedable](http://royo.is-a-geek.com/siteFeeder/) blog here, but I promise i'll stop soon. [This site](http://royo.is-a-geek.com/siteFeeder/) has been a great learning experience for me. I couldn't have asked for a better way to start learning web development with ASP.Net. Because it's live, I feel compelled to add more stuff and make it into a real site. So, meanwhile I: - Made sure feed list is sorted by name - Added a few more blogs (namely , [Allen Bauer's blog](http://royo.is-a-geek.com/siteFeeder/GetFeed.aspx?FeedId=32) and Dave Barry's Blog ) - Created an online store for Feedable swag, following the footsteps of the mighty [Robert](http://weblogs.asp.net/rmclaws/) which you can get to by clicking a link on the [Feedable](http://royo.is-a-geek.com/siteFeeder/) main page. Some pretty nice swag in there with the Feedable logo, maybe you'll even wear some of this stuff for the PDC, huh? - Added an admin web console for feed management. Yep. Up until now the feeds were inserted manually into the DB tables. Now I can have Darren create and update new feeds from the web. You have no idea how much of a learning curve the web datagrid is to a winform-geek. What's more important, I wanted people to learn and understand the technology that drives this site. So, if you go there and click the “About“ link, you'll see a link that point to an article [about how to do basically what my engine does](http://weblogs.asp.net/rosherove/posts/29509.aspx). More to come: - Feed searching - better site layout - What more do you think I should add? Tell me. **Update:** Oh, did I forget to mention this? I purchased the domain [www.Feedable.net](http://www.feedable.net/), but my hosting server won't be ready for some time. Still, all the swag points to that link,  so for now I'm trying to set a redirect to my home server. It will take some time though.. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 15, 2003 ### [FDML? Here's a different direction](https://osherove.com/blog/2003/10/15/fdml-heres-a-different-direction.html) - Oct 13, 2003 ### [Better times ahead?](https://osherove.com/blog/2003/10/13/better-times-ahead.html) - Oct 10, 2003 ### [RSS feed for SysInternals](https://osherove.com/blog/2003/10/10/rss-feed-for-sysinternals.html) - Oct 10, 2003 ### [Phew.. art coming your way](https://osherove.com/blog/2003/10/10/phew-art-coming-your-way.html) --- title: "Feedable will be offline a bit" url: "https://osherove.com/blog/2003/10/13/feedable-will-be-offline-a-bit.md" canonical: "https://osherove.com/blog/2003/10/13/feedable-will-be-offline-a-bit.html" published: "2003-10-13T05:55:00" updated: "2003-10-13T05:55:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Making some updates..." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Feedable will be offline a bit By Roy Osherove October 13, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 13, 2003; technical details may be outdated. Making some updates... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 16, 2003 ### [\[Rant\] Horrible two weeks](https://osherove.com/blog/2003/10/16/rant-horrible-two-weeks.html) - Oct 14, 2003 ### [Microsoft PDC 2003 Sessions RSS feed? Oh yeah!](https://osherove.com/blog/2003/10/14/microsoft-pdc-2003-sessions-rss-feed-oh-yeah.html) - Oct 8, 2003 ### [Describing and evaluating API usability at Microsoft](https://osherove.com/blog/2003/10/8/describing-and-evaluating-api-usability-at-microsoft.html) - Oct 7, 2003 ### [A big bug in Google](https://osherove.com/blog/2003/10/7/a-big-bug-in-google.html) --- title: "RSS feed for SysInternals" url: "https://osherove.com/blog/2003/10/10/rss-feed-for-sysinternals.md" canonical: "https://osherove.com/blog/2003/10/10/rss-feed-for-sysinternals.html" published: "2003-10-10T22:22:00" updated: "2003-10-10T22:22:00" tags: ["Blogging"] author: "Roy Osherove" description: "If you'd have registered for the Feedable RSS feed , you would have known by now that, among others, I've added an RSS feed for SysInternals . Yep. Now we'll know in real time when new or updated tools come to life.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # RSS feed for SysInternals By Roy Osherove October 10, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 10, 2003; technical details may be outdated. If you'd have registered for the [Feedable](http://royo.is-a-geek.com/sitefeeder/) [RSS feed](http://royo.is-a-geek.com/SiteFeeder/GetFeed.aspx?FeedId=27), you would have known by now that, among others, I've added an [RSS feed for SysInternals](http://royo.is-a-geek.com/sitefeeder/GetFeed.aspx?FeedId=30). Yep. Now we'll know in real time when new or updated tools come to life. Sorry I havn't been posting too much the past few days. Been busy with the new site and all. Hopefully, things will go back to “normal“ soon :) I encourage you all to go to [Feedable](http://royo.is-a-geek.com/sitefeeder) and suggest a site you'd like an RSS feed for. It's all about “sharing the love“ and already there's lots of cool feeds I hadn't thought about until someone suggested them. SysInternals was one of them! so get creative! Oh and by the way, no need to suggest a feed for WinSuperSite. Since the site is sporting a “less that cool“ ad before you actually get to the content, I can't make the engine parse it. It always gets the commercial. The minute it works, though, that feed will be in there so fast you won't have time to say “Woah! it's _[Feedable](http://royo.is-a-geek.com/sitefeeder/)_!“ :) **Update:** the main feed currently has no publish date. I'll change that when I have some more time. Meanwhile, you should count on the amount of unread items in the feed to know about new stuff. Sorry. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 13, 2003 ### [Better times ahead?](https://osherove.com/blog/2003/10/13/better-times-ahead.html) - Oct 13, 2003 ### [More Feedable updates](https://osherove.com/blog/2003/10/13/more-feedable-updates.html) - Oct 10, 2003 ### [Phew.. art coming your way](https://osherove.com/blog/2003/10/10/phew-art-coming-your-way.html) - Oct 9, 2003 ### [.Net Rocks be bloggin'!](https://osherove.com/blog/2003/10/9/net-rocks-be-bloggin.html) --- title: "Phew.. art coming your way" url: "https://osherove.com/blog/2003/10/10/phew-art-coming-your-way.md" canonical: "https://osherove.com/blog/2003/10/10/phew-art-coming-your-way.html" published: "2003-10-10T01:03:00" updated: "2003-10-10T01:03:00" tags: ["Blogging"] author: "Roy Osherove" description: "For the heck of it I added some “art” to the new site , and a small banner to it on the blog. If you have an RSS feed from Feedable , It would be great if you put this small banner to the site with a link to it: Also,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Phew.. art coming your way By Roy Osherove October 10, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 10, 2003; technical details may be outdated. For the heck of it I added [some “art” to the new site](http://royo.is-a-geek.com/sitefeeder/), and a small banner to it on the blog. If you have an RSS feed from [Feedable](http://royo.is-a-geek.com/sitefeeder/), It would be great if you put this small banner to the site with a link to it: [![](https://osherove.com/img/wb/cfccab52_royo.is-a-geek.com_SiteFeeder_images_Feedable_tiny.gif)](http://royo.is-a-geek.com/sitefeeder/) Also, [Darren Neimke](http://weblogs.asp.net/dneimke/) will help me with maintaining the site for a bit. Thanks Darren! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 13, 2003 ### [More Feedable updates](https://osherove.com/blog/2003/10/13/more-feedable-updates.html) - Oct 10, 2003 ### [RSS feed for SysInternals](https://osherove.com/blog/2003/10/10/rss-feed-for-sysinternals.html) - Oct 9, 2003 ### [.Net Rocks be bloggin'!](https://osherove.com/blog/2003/10/9/net-rocks-be-bloggin.html) - Oct 9, 2003 ### [The feed of all feeds (literally!)](https://osherove.com/blog/2003/10/9/the-feed-of-all-feeds-literally.html) --- title: ".Net Rocks be bloggin'!" url: "https://osherove.com/blog/2003/10/9/net-rocks-be-bloggin.md" canonical: "https://osherove.com/blog/2003/10/9/net-rocks-be-bloggin.html" published: "2003-10-09T19:33:00" updated: "2003-10-09T19:33:00" tags: ["Blogging"] author: "Roy Osherove" description: "Oh cool! Carl Franklin, of . Net Rocks , just opened a blog here ! subscribed! Welcome aboard Carl :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Rocks be bloggin'! By Roy Osherove October 9, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 9, 2003; technical details may be outdated. Oh cool! Carl Franklin, of .[Net Rocks](http://www.franklins.net/dotnetrocks.asp), just [opened a blog here](http://weblogs.asp.net/CFranklin/posts/31311.aspx)! subscribed! Welcome aboard Carl :) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 10, 2003 ### [RSS feed for SysInternals](https://osherove.com/blog/2003/10/10/rss-feed-for-sysinternals.html) - Oct 10, 2003 ### [Phew.. art coming your way](https://osherove.com/blog/2003/10/10/phew-art-coming-your-way.html) - Oct 9, 2003 ### [The feed of all feeds (literally!)](https://osherove.com/blog/2003/10/9/the-feed-of-all-feeds-literally.html) - Oct 9, 2003 ### [New feed for Tech Guru](https://osherove.com/blog/2003/10/9/new-feed-for-tech-guru.html) --- title: "The feed of all feeds (literally!)" url: "https://osherove.com/blog/2003/10/9/the-feed-of-all-feeds-literally.md" canonical: "https://osherove.com/blog/2003/10/9/the-feed-of-all-feeds-literally.html" published: "2003-10-09T13:59:00" updated: "2003-10-09T13:59:00" tags: ["Blogging"] author: "Roy Osherove" description: "Feedable - latest new feeds 'nuff said." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The feed of all feeds (literally!) By Roy Osherove October 9, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 9, 2003; technical details may be outdated. [Feedable - latest new feeds](http://royo.is-a-geek.com/sitefeeder/GetFeed.aspx?FeedId=27) 'nuff said. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 10, 2003 ### [Phew.. art coming your way](https://osherove.com/blog/2003/10/10/phew-art-coming-your-way.html) - Oct 9, 2003 ### [.Net Rocks be bloggin'!](https://osherove.com/blog/2003/10/9/net-rocks-be-bloggin.html) - Oct 9, 2003 ### [New feed for Tech Guru](https://osherove.com/blog/2003/10/9/new-feed-for-tech-guru.html) - Oct 9, 2003 ### [Another one bites the dust (XP magazine RSS feed anyone?)](https://osherove.com/blog/2003/10/9/another-one-bites-the-dust-xp-magazine-rss-feed-anyone.html) --- title: "New feed for Tech Guru" url: "https://osherove.com/blog/2003/10/9/new-feed-for-tech-guru.md" canonical: "https://osherove.com/blog/2003/10/9/new-feed-for-tech-guru.html" published: "2003-10-09T03:49:00" updated: "2003-10-09T03:49:00" tags: ["Blogging"] author: "Roy Osherove" description: "Ali (“Tech Guru”) , the Iranian Blogger, just got his brand new RSS feed . I'm liking this!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New feed for Tech Guru By Roy Osherove October 9, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 9, 2003; technical details may be outdated. [Ali (“Tech Guru”)](http://www.aliparvaresh.com/blog/), the Iranian Blogger, just got his brand [new RSS feed](http://royo.is-a-geek.com/sitefeeder/GetFeed.aspx?FeedId=23).  I'm liking this! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 9, 2003 ### [.Net Rocks be bloggin'!](https://osherove.com/blog/2003/10/9/net-rocks-be-bloggin.html) - Oct 9, 2003 ### [The feed of all feeds (literally!)](https://osherove.com/blog/2003/10/9/the-feed-of-all-feeds-literally.html) - Oct 9, 2003 ### [Another one bites the dust (XP magazine RSS feed anyone?)](https://osherove.com/blog/2003/10/9/another-one-bites-the-dust-xp-magazine-rss-feed-anyone.html) - Oct 8, 2003 ### [Why I like SharpReader better](https://osherove.com/blog/2003/10/8/why-i-like-sharpreader-better.html) --- title: "Another one bites the dust (XP magazine RSS feed anyone?)" url: "https://osherove.com/blog/2003/10/9/another-one-bites-the-dust-xp-magazine-rss-feed-anyone.md" canonical: "https://osherove.com/blog/2003/10/9/another-one-bites-the-dust-xp-magazine-rss-feed-anyone.html" published: "2003-10-09T01:41:00" updated: "2003-10-09T01:41:00" tags: ["Blogging"] author: "Roy Osherove" description: "Just added another RSS feed to SiteFeeder : XP Magazine - list of articles RSS feed How cool is this?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another one bites the dust (XP magazine RSS feed anyone?) By Roy Osherove October 9, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published October 9, 2003; technical details may be outdated. Just added another RSS feed to [SiteFeeder](http://royo.is-a-geek.com/sitefeeder/): [XP Magazine - list of articles](http://royo.is-a-geek.com/sitefeeder/GetFeed.aspx?FeedId=21) RSS feed How cool is this? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 9, 2003 ### [The feed of all feeds (literally!)](https://osherove.com/blog/2003/10/9/the-feed-of-all-feeds-literally.html) - Oct 9, 2003 ### [New feed for Tech Guru](https://osherove.com/blog/2003/10/9/new-feed-for-tech-guru.html) - Oct 8, 2003 ### [Why I like SharpReader better](https://osherove.com/blog/2003/10/8/why-i-like-sharpreader-better.html) - Oct 6, 2003 ### [.Net Rocks closure, suggestion, and discovering Salamander. Oh my!](https://osherove.com/blog/2003/10/6/net-rocks-closure-suggestion-and-discovering-salamander-oh-m.html) --- title: "Introducing SiteFeeder" url: "https://osherove.com/blog/2003/10/8/introducing-sitefeeder.md" canonical: "https://osherove.com/blog/2003/10/8/introducing-sitefeeder.html" published: "2003-10-08T23:32:00" updated: "2003-10-08T23:32:00" tags: [".Net Original", "Cool sites"] author: "Roy Osherove" description: "Now you can have an RSS feed for almost any site you want. Introducing SiteFeeder . 'nuff said." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introducing SiteFeeder By Roy Osherove October 8, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published October 8, 2003; technical details may be outdated. **Now you can have an RSS feed for almost any site you want.** Introducing  [**SiteFeeder**](http://royo.is-a-geek.com/sitefeeder/). 'nuff said. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 23, 2003 ### [\[Tool\] Introducing The Regulator - advanced regex tool](https://osherove.com/blog/2003/10/23/tool-introducing-the-regulator-advanced-regex-tool.html) - Oct 15, 2003 ### [\[Article\] on MSDNAA: Creating a Generic Site-To-Rss Tool](https://osherove.com/blog/2003/10/15/article-on-msdnaa-creating-a-generic-site-to-rss-tool.html) - Oct 7, 2003 ### [\[Tip\]:MemoryStream.GetBuffer() vs. MemoryStream.ToArray()](https://osherove.com/blog/2003/10/7/tipmemorystreamgetbuffer-vs-memorystreamtoarray.html) - Oct 6, 2003 ### [When running 'aspnet\_regiis -c' still doesn't fix it...](https://osherove.com/blog/2003/10/6/when-running-aspnet_regiis-c-still-doesnt-fix-it.html) --- title: "Describing and evaluating API usability at Microsoft" url: "https://osherove.com/blog/2003/10/8/describing-and-evaluating-api-usability-at-microsoft.md" canonical: "https://osherove.com/blog/2003/10/8/describing-and-evaluating-api-usability-at-microsoft.html" published: "2003-10-08T06:58:00" updated: "2003-10-08T06:58:00" tags: ["Cool Articles", "Off Topic"] author: "Roy Osherove" description: "BradA (wouldn't it be cool to just write “Brabrams“?:) posts about Describing and evaluating API usability at Microsoft . It's a power point presentation that describes just what you should be thinking about when…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Describing and evaluating API usability at Microsoft By Roy Osherove October 8, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 8, 2003; technical details may be outdated. [BradA](http://blogs.gotdotnet.com/BradA/permalink.aspx/754c3e0c-ee8f-49b6-8fef-992ee303cefa) (wouldn't it be cool to just write “Brabrams“?:) posts about [Describing and evaluating API usability at Microsoft](http://www.gotdotnet.com/team/brada/describingandevaluatingapiusabilityatmicrosoft.ppt) . It's a power point presentation that describes just what you should be thinking about when designing a programing API. I'm still a little unclear about some of the terms in there, but overall it's an enlightening experience. I like the idea of using “personas” to describe the 3 general types of programmers out there. I was wondering whether I'm considered a “systematic” or a “pragmatic” programmer. Having read “The Pragmatic Programmer” I'd assume to be the latter, but I'm not sure according to the descriptions in the ppt. One thing I liked is how each programmer type likes to use their APIs. I can definitely see these in real-life. An “Opportunistic” programmer will usually grab what they can from an API to just “get this task done” and not try to learn anything new in the process, how this API affects other system code, or just this Application's code. Although I'm sure I used to do stuff like this, for the life of me I think it would be down right impossible to do now. For better or worse, I can't help learning new APIs and getting "deep" inside them to understand their full impact on lots of other stuff. I \*have\* seen a lot of other developers(or should I say "programmers") do this. It usually leads to code that sometimes looks ridiculous; something like some of the visual basic examples you find on MSDN , that show you how to do simple tasks using cut-n-paste from VB Script examples(late binding ,variants and all that). It's also usually hard to maintain such code. ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Nov 4, 2003 ### [\[Article/Code\]: Easy Proxy handling through the ProxyFactory and ProxyInfo classes](https://osherove.com/blog/2003/11/4/articlecode-easy-proxy-handling-through-the-proxyfactory-and.html) - Oct 15, 2003 ### [\[Article\] on MSDNAA: Creating a Generic Site-To-Rss Tool](https://osherove.com/blog/2003/10/15/article-on-msdnaa-creating-a-generic-site-to-rss-tool.html) - Oct 6, 2003 ### [Excellent TDD articles, and a Code Kata](https://osherove.com/blog/2003/10/6/excellent-tdd-articles-and-a-code-kata.html) - Oct 6, 2003 ### [Getting a focus on performance - some new pages](https://osherove.com/blog/2003/10/6/getting-a-focus-on-performance-some-new-pages.html) --- title: "Why I like SharpReader better" url: "https://osherove.com/blog/2003/10/8/why-i-like-sharpreader-better.md" canonical: "https://osherove.com/blog/2003/10/8/why-i-like-sharpreader-better.html" published: "2003-10-08T06:39:00" updated: "2003-10-08T06:39:00" tags: ["Blogging", "Cool Tools"] author: "Roy Osherove" description: "if there are only two things that are missing from SharpReader , they would be: an “author“ column a “Flag for later“ column That's it. Really. Today, SharpReader is , to me, much more useful that, say, NewsGator or…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why I like SharpReader better By Roy Osherove October 8, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 8, 2003; technical details may be outdated. if there are only two things that are missing from [SharpReader](http://www.sharpreader.com/) , they would be: - an “author“ column - a “Flag for later“ column That's it. Really. Today, SharpReader is , to me, much more useful that, say, [NewsGator](http://www.newsgator.com/) or [FeedDemon](http://www.feeddemon.com/). Why? - It's a power tool. Everything works fast, and you get almost instant feedback for all your actions - With outlook based browsing, you're dependant on outlook to “show you the money“, and sometimes that may take a while to load a post into the outlook window. - Outlook doesn't show you the amount of unread posts in folders down the hierarchy.With SharpReader, I can have all the “important“ folders closed up and still know that I have some new stuff in my “important news“ folder somewhere (I have 3 sub folders in there) - Filtering is _bleeding_ fast in SharpReader - No fancy-shmancy nice GUI stuff. Just pure information (sort of like [Total Commander](http://www.ghisler.com/)) - I can view a large amount of information at the same time, in a hierarchical manner. -  In outlook, I have much less screen space (feature request for outlook - “Full screen“ mode!) to view all the folders/feeds. - the awesome “aggregate links“ for each post feature (which I'm not sure how it works) - It's **simple** to use! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 9, 2003 ### [New feed for Tech Guru](https://osherove.com/blog/2003/10/9/new-feed-for-tech-guru.html) - Oct 9, 2003 ### [Another one bites the dust (XP magazine RSS feed anyone?)](https://osherove.com/blog/2003/10/9/another-one-bites-the-dust-xp-magazine-rss-feed-anyone.html) - Oct 6, 2003 ### [.Net Rocks closure, suggestion, and discovering Salamander. Oh my!](https://osherove.com/blog/2003/10/6/net-rocks-closure-suggestion-and-discovering-salamander-oh-m.html) - Oct 5, 2003 ### [Scoble on .Net Rocks? Give me a break..](https://osherove.com/blog/2003/10/5/scoble-on-net-rocks-give-me-a-break.html) --- title: "A big bug in Google" url: "https://osherove.com/blog/2003/10/7/a-big-bug-in-google.md" canonical: "https://osherove.com/blog/2003/10/7/a-big-bug-in-google.html" published: "2003-10-07T20:33:00" updated: "2003-10-07T20:33:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Seth Finkelstein has made a startling discovery, backed with lots of evidence : when a spam result comes up in a search, Google not only blocks the spam, but every result after it. This means that for searches where…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A big bug in Google By Roy Osherove October 7, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 7, 2003; technical details may be outdated.

Seth Finkelstein has made a startling discovery, backed with lots of evidence: when a spam result comes up in a search, Google not only blocks the spam, but every result after it. This means that for searches where spam results manage to rise to the top, very few -- sometimes zero -- results will be returned.

Examples: motorcycle candle, keyboard bracelet. These are common words for which you'd expect to see results (in fact, the latter even says there are thousands of results) but the bug prevents them from being seen. Eliminating the spam pages (by blocking a word, antenna, that appears on them) allows full results to be displayed.

It's pretty amazing that such a serious bug made it past Google's tests. It will be interesting to see how quickly it's fixed.

\[[Google weblog](http://google.blogspace.com/archives/001051)\] Amazing. **Update:** **Even more freaky**, Pieter Visser found out that [searching for “vb.net” on Google](http://www.google.com/search?hl=en&lr=&ie=UTF-8&oe=UTF-8&q=vb.net) returns only one result! but see what happens when doing the [same search excluding .com sites](http://www.google.com/search?hl=en&lr=&ie=UTF-8&oe=UTF-8&q=vb.net+-site%3Acom).. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 13, 2003 ### [Feedable will be offline a bit](https://osherove.com/blog/2003/10/13/feedable-will-be-offline-a-bit.html) - Oct 8, 2003 ### [Describing and evaluating API usability at Microsoft](https://osherove.com/blog/2003/10/8/describing-and-evaluating-api-usability-at-microsoft.html) - Oct 6, 2003 ### [.Net Blogging MVP - a myth?](https://osherove.com/blog/2003/10/6/net-blogging-mvp-a-myth.html) - Oct 5, 2003 ### [Geek marriage - Episode I](https://osherove.com/blog/2003/10/5/geek-marriage-episode-i.html) --- title: "[Tip]:MemoryStream.GetBuffer() vs. MemoryStream.ToArray()" url: "https://osherove.com/blog/2003/10/7/tipmemorystreamgetbuffer-vs-memorystreamtoarray.md" canonical: "https://osherove.com/blog/2003/10/7/tipmemorystreamgetbuffer-vs-memorystreamtoarray.html" published: "2003-10-07T01:07:00" updated: "2003-10-07T01:07:00" tags: [".Net Original"] author: "Roy Osherove" description: "One of my readers posted a comment on my Site-To-RSS article that just solved me a bunch of trouble! In the article, I was using a memory stream to write the XML into memory. I was using the MemoryStream.GetBuffer()…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Tip\]:MemoryStream.GetBuffer() vs. MemoryStream.ToArray() By Roy Osherove October 7, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published October 7, 2003; technical details may be outdated. One of my readers posted a comment on my [Site-To-RSS article](http://weblogs.asp.net/rosherove/posts/29509.aspx) that just solved me a bunch of trouble! In the article, I was using a memory stream to write the XML into memory. I was using the _MemoryStream.GetBuffer()_ method to retrieve the text inside the stream. This caused some ugly code because to get the buffer correctly, I had to know the length of the actual string in the stream, meaning the stream had to be open for me to know that. Even so, it didn't work very well and sometimes retrieved corrupted data. So, TheCShark (huh?) solved all my problems in one fell swoop by posting one simple line: _Tip: use **ToArray** instead of **GetBuffer**, **ToArray** works when the MemoryStream is closed._ **Amazing**. All my problems are now solved: - No longer need to keep stream open - Calling code is much simpler: - Dim retval As String = Encoding.UTF8.GetString(ms.ToArray()) - It works without a hitch! So, we learned that we should **always use ToArray() to get the value**. Always. Phew. How silly of me not to notice that! Thanks, CShark! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 15, 2003 ### [\[Article\] on MSDNAA: Creating a Generic Site-To-Rss Tool](https://osherove.com/blog/2003/10/15/article-on-msdnaa-creating-a-generic-site-to-rss-tool.html) - Oct 8, 2003 ### [Introducing SiteFeeder](https://osherove.com/blog/2003/10/8/introducing-sitefeeder.html) - Oct 6, 2003 ### [When running 'aspnet\_regiis -c' still doesn't fix it...](https://osherove.com/blog/2003/10/6/when-running-aspnet_regiis-c-still-doesnt-fix-it.html) - Oct 5, 2003 ### [Fun with NUnit - clarification](https://osherove.com/blog/2003/10/5/fun-with-nunit-clarification.html) --- title: "Excellent TDD articles, and a Code Kata" url: "https://osherove.com/blog/2003/10/6/excellent-tdd-articles-and-a-code-kata.md" canonical: "https://osherove.com/blog/2003/10/6/excellent-tdd-articles-and-a-code-kata.html" published: "2003-10-06T22:59:00" updated: "2003-10-06T22:59:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "\"TANSTAAFL! - There Ain't No Such Thing As A Free Lunch.\" I liked this acronym so much I had to post it. I ran across it in one of a group of amazing articles that depict working in test driven development: Test Driven…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Excellent TDD articles, and a Code Kata By Roy Osherove October 6, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published October 6, 2003; technical details may be outdated. "TANSTAAFL!  - There Ain't No Such Thing As A Free Lunch." I liked this acronym so much I had to post it. I ran across it in one of a group of amazing articles that depict working in test driven development: [Test Driven Development - Craftsman series](http://www.objectmentor.com/resources/listArticles?key=topic&topic=Test%20Driven%20Development).These are actually all the same long article divided into smaller pieces. Be sure to read it from the start (bottom of the page) to get the full picture. Along the way they deal with the notions of test-first,test as documentations, testing multi threaded, mock objects and lots more. Another nice (even though weird at times) idea is “Code Kata“s - \[[From the site](http://www.pragprog.com/pragdave/Practices/Kata)\-\] _A kata is an exercise in karate where you repeat a form many, many times, making little improvements in each. The intent behind code kata is similar. Each is a short exercise (perhaps 30 minutes to an hour long). Some involve programming, and can be coded in many different ways. Some are open ended, and involve thinking about the issues behind programming. These are unlikely to have a single correct answer. I add a new kata every week or so. Invest some time in your craft and try them._ I found it interesting, although I'm not sure how much practice I'll actually do of these, but it's really cool to find stuff you never even thought about - [Code Kata](http://www.pragprog.com/pragdave/Practices/Kata) Both of these links were picked up in the win-tech\_off\_topic mailing list during a discussion of how to survive ever changing project feature requests. ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Oct 15, 2003 ### [\[Article\] on MSDNAA: Creating a Generic Site-To-Rss Tool](https://osherove.com/blog/2003/10/15/article-on-msdnaa-creating-a-generic-site-to-rss-tool.html) - Oct 8, 2003 ### [Describing and evaluating API usability at Microsoft](https://osherove.com/blog/2003/10/8/describing-and-evaluating-api-usability-at-microsoft.html) - Oct 6, 2003 ### [Getting a focus on performance - some new pages](https://osherove.com/blog/2003/10/6/getting-a-focus-on-performance-some-new-pages.html) - Oct 6, 2003 ### [The "Don box" of windows installer?](https://osherove.com/blog/2003/10/6/the-quotdon-boxquot-of-windows-installer.html) --- title: ".Net Rocks closure, suggestion, and discovering Salamander. Oh my!" url: "https://osherove.com/blog/2003/10/6/net-rocks-closure-suggestion-and-discovering-salamander-oh-m.md" canonical: "https://osherove.com/blog/2003/10/6/net-rocks-closure-suggestion-and-discovering-salamander-oh-m.html" published: "2003-10-06T20:18:00" updated: "2003-10-06T20:18:00" tags: ["Blogging", "Cool Tools"] author: "Roy Osherove" description: "Carl Franklin stopped by for another comment on my pseudo-flaming post about Scoble . What he wrote made me very happy. I'll cite this here because I think those guys deserve a big round of respect from the community…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Rocks closure, suggestion, and discovering Salamander. Oh my! By Roy Osherove October 6, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 6, 2003; technical details may be outdated. [Carl Franklin](http://www.franklins.net/staff.asp) stopped by for another comment on my pseudo-flaming post about [Scoble](http://scoble.weblogs.com/). What he wrote made me very happy. I'll cite this here because I think those guys deserve a big round of respect from the community for donating their time and efforts into something that is pretty cool. I'm not going to say they do it for free, because the publicity they get from this show is, I bet, very good for their business. However, I find it totally legitimate. I mean, I'm also benefiting a lot from this blog. Heh, it actually got me my last job, and at least one possible contract job. But I digress. Here's what Carl wrote: _\-------------------------------------_ _Tomorrow, we're going to air an interview with Scott Guthrie. After that we're doing an Interview with Don Box at the PDC, where he will invariably talk about the next SOAP, longhorn, and other things they are going to launch there. Unlike the PDC, our show is free :-) We're going to ask Chris [Chris Sells](http://www.sellsbrothers.com/) to come back after the PDC as well (Chris, you listening?? heh) and Keith Pleas on architecture and design._  _We've got Huihong Luo, the genius behind the_ [_Salamander_](http://www.remotesoft.com/linker) _coming up, and some other surprises as well. That said, we're also going to have a 100% fun and funny episode live onstage from the PDC, and we'll probably do some other less technical stuff. That's what we do. We mix it up. Everyone's happy. BTW: Thanks for giving us a little controversy!! It all helps our ratings! :-) \-------------------------------------_ I took a look at what [Salamander](http://www.remotesoft.com/linker) really is, and it looks very very cool! I'll have to try it out. Basically it lets you deploy .Net applications on machines with no .Net installed, without requiring a full framework installation (it does this by linking the referenced assemblies together into one big assembly, it seems). Definitely worth a look. Other than that, based on Carl's comment, sounds like a guest killer line up for me! Does it sound like I'm kissing up? I'm not. I still stand behind every word I've written(until proven wrong), but I can write when someone does a fantastic job. Hey Carl, here's another suggestion - **put me up on one of your shows**. I might have a thing or two to contribute, or is it all about celebs? I'm thinking not, because you \*did\* have a couple of episodes with “regular“ devs from around the world, am I right? In fact, maybe you should do a show of **several .Net bloggers together**, that could be fun.. The controversy wasn't pre-planned, it just happened I guess. But , I bet it helped the ratings, and I have no problem with that. Overall, I totally like the show's principal, and although some of them were not something to write home about, its all good. Some of it is even wonderful. Keep up the great work _(Note: it's funny. every time I write one of these posts that's not on the “shy” side, I get really nervous before hitting “post”. I guess I'm still pretty afraid of the comments I'm going to get. Don't let that bother you , though.. I'll just be here in the corner, cringing...)_ _(Another note: I think my writing style has changed, a lot thanks to [Scoble](http://scoble.weblogs.com/). If you'll notice, it contains, occasionally, a question followed by an answer to that question. Didn't notice it yet? Take a look at [Scoble](http://scoble.weblogs.com/)'s writing and see that imitation is the sincerest form of flattery... :)_ ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 9, 2003 ### [Another one bites the dust (XP magazine RSS feed anyone?)](https://osherove.com/blog/2003/10/9/another-one-bites-the-dust-xp-magazine-rss-feed-anyone.html) - Oct 8, 2003 ### [Why I like SharpReader better](https://osherove.com/blog/2003/10/8/why-i-like-sharpreader-better.html) - Oct 5, 2003 ### [Scoble on .Net Rocks? Give me a break..](https://osherove.com/blog/2003/10/5/scoble-on-net-rocks-give-me-a-break.html) - Oct 2, 2003 ### [Two good blogs: Hiring Technical People, Managing Product Development](https://osherove.com/blog/2003/10/2/two-good-blogs-hiring-technical-people-managing-product-deve.html) --- title: "[Cool tool] : Visustin - Visually graph your code" url: "https://osherove.com/blog/2003/10/6/cool-tool-visustin-visually-graph-your-code.md" canonical: "https://osherove.com/blog/2003/10/6/cool-tool-visustin-visually-graph-your-code.html" published: "2003-10-06T19:31:00" updated: "2003-10-06T19:31:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "I'm currently in the process of reviewing and understanding a bunch of legacy VB 6.0 code. One of the trickiest parts of reviewing such things is getting the “gist” of what's going on on a specific method, or…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool tool\] : Visustin - Visually graph your code By Roy Osherove October 6, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 6, 2003; technical details may be outdated. I'm currently in the process of reviewing and understanding a bunch of legacy VB 6.0 code. One of the trickiest parts of reviewing such things is getting the “gist” of what's going on on a specific method, or understanding the time-line of method calls in a specific business process. I discovered a small tool (not free) called [Visustin](http://www.aivosto.com/visustin.html) that allows you to paste in code from VB,C#,VB.Net,Java,C++,COBOL,Pascal and Delphi, and it will display a visual call graph of what's going on. It's very cool and it really helps in understating some of those long-running, hard to decipher methods... The tool is not free, and the installer is that good ol' vb installer program from vb 6.0, but the demo version hold enough functionality to let me use it as is. It just doesn't allow you to print or save the graph once it's created, which is cool for me, as I use it mainly as a quick ad-hoc “How does this method work” kind of queries. Coolness achieved. I wonder if there are more tools like this. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Oct 8, 2003 ### [Why I like SharpReader better](https://osherove.com/blog/2003/10/8/why-i-like-sharpreader-better.html) - Oct 6, 2003 ### [.Net Rocks closure, suggestion, and discovering Salamander. Oh my!](https://osherove.com/blog/2003/10/6/net-rocks-closure-suggestion-and-discovering-salamander-oh-m.html) - Oct 4, 2003 ### [AmazReplacer- revamped](https://osherove.com/blog/2003/10/4/amazreplacer-revamped.html) - Oct 1, 2003 ### [Visual Basic Resource Kit (C# developers are not banned!)](https://osherove.com/blog/2003/10/1/visual-basic-resource-kit-c-developers-are-not-banned.html) --- title: "More than 500 sample chapters" url: "https://osherove.com/blog/2003/10/6/more-than-500-sample-chapters.md" canonical: "https://osherove.com/blog/2003/10/6/more-than-500-sample-chapters.html" published: "2003-10-06T10:46:00" updated: "2003-10-06T10:46:00" tags: [".Net Quotations", "Free book chapters"] author: "Roy Osherove" description: "Srinivasa Sivakumar has listed more than 500 sample chapters (in HTML/PDF format) on his resource site , from various books related to .NET. A great resource! [ Ashutosh Nilkanth's .NET Blog ] Awsome! Some serious gold…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More than 500 sample chapters By Roy Osherove October 6, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published October 6, 2003; technical details may be outdated. [_Srinivasa Sivakumar_](http://weblogs.asp.net/ssivakumar/) _has listed more than 500 sample chapters (in HTML/PDF format) on his_ [_resource site_](http://www3.brinkster.com/webguru/Sample.Asp)_, from various books related to .NET. A great resource!_ \[[Ashutosh Nilkanth's .NET Blog](http://weblogs.asp.net/ashben/posts/30696.aspx) \] Awsome! Some serious gold in here! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 27, 2003 ### [Nice GC tip](https://osherove.com/blog/2003/10/27/nice-gc-tip.html) - Oct 14, 2003 ### [Cool trick of the day - VSS keyword expansion](https://osherove.com/blog/2003/10/14/cool-trick-of-the-day-vss-keyword-expansion.html) - Oct 6, 2003 ### [Getting a focus on performance - some new pages](https://osherove.com/blog/2003/10/6/getting-a-focus-on-performance-some-new-pages.html) - Oct 6, 2003 ### [The "Don box" of windows installer?](https://osherove.com/blog/2003/10/6/the-quotdon-boxquot-of-windows-installer.html) --- title: "Getting a focus on performance - some new pages" url: "https://osherove.com/blog/2003/10/6/getting-a-focus-on-performance-some-new-pages.md" canonical: "https://osherove.com/blog/2003/10/6/getting-a-focus-on-performance-some-new-pages.html" published: "2003-10-06T03:28:00" updated: "2003-10-06T03:28:00" tags: [".Net Quotations", "Cool Articles", "Cool sites"] author: "Roy Osherove" description: "Brad Adams's performance team just posted their own page on GotDotNet . Very cool. That page also points to the MSDN performance center , which currently has lots more information. It's great to see performance focused…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Getting a focus on performance - some new pages By Roy Osherove October 6, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published October 6, 2003; technical details may be outdated. [Brad Adams's](https://osherove.com/blog/2003/10/6/Brad%20Abrams) performance team just posted [their own page on GotDotNet](http://www.gotdotnet.com/team/clr/about_clr_performance.aspx). Very cool. That page also points to the [MSDN performance center](http://msdn.microsoft.com/netframework/using/understanding/perf/default.aspx), which currently has lots more information. It's great to see performance focused corners like these. I'm not using most of these advices right now, but it's good to know it's all there when I need it. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 14, 2003 ### [Cool trick of the day - VSS keyword expansion](https://osherove.com/blog/2003/10/14/cool-trick-of-the-day-vss-keyword-expansion.html) - Oct 6, 2003 ### [More than 500 sample chapters](https://osherove.com/blog/2003/10/6/more-than-500-sample-chapters.html) - Oct 6, 2003 ### [The "Don box" of windows installer?](https://osherove.com/blog/2003/10/6/the-quotdon-boxquot-of-windows-installer.html) - Oct 2, 2003 ### [Web GUI unit testing techniques](https://osherove.com/blog/2003/10/2/web-gui-unit-testing-techniques.html) --- title: ".Net Blogging MVP - a myth?" url: "https://osherove.com/blog/2003/10/6/net-blogging-mvp-a-myth.md" canonical: "https://osherove.com/blog/2003/10/6/net-blogging-mvp-a-myth.html" published: "2003-10-06T02:38:00" updated: "2003-10-06T02:38:00" tags: ["Off Topic"] author: "Roy Osherove" description: "So here's a tough question. despite the fear of sounding too full of myself (which I notably am), is it remotely possible to receive an MVP award on blogging? Is there any chance that if I do this long enough and hard…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Blogging MVP - a myth? By Roy Osherove October 6, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 6, 2003; technical details may be outdated. So here's a tough question. despite the fear of sounding too full of myself (which I notably am), is it remotely possible to receive an MVP award on blogging? Is there any chance that if I do this long enough and hard enough, I can be considered for something like this? I know I'm asking for it, but I urge you - no flaming (as much as humanly possible)... :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 8, 2003 ### [Describing and evaluating API usability at Microsoft](https://osherove.com/blog/2003/10/8/describing-and-evaluating-api-usability-at-microsoft.html) - Oct 7, 2003 ### [A big bug in Google](https://osherove.com/blog/2003/10/7/a-big-bug-in-google.html) - Oct 5, 2003 ### [Geek marriage - Episode I](https://osherove.com/blog/2003/10/5/geek-marriage-episode-i.html) - Oct 5, 2003 ### [More on .Net Rocks](https://osherove.com/blog/2003/10/5/more-on-net-rocks.html) --- title: "The \"Don box\" of windows installer?" url: "https://osherove.com/blog/2003/10/6/the-quotdon-boxquot-of-windows-installer.md" canonical: "https://osherove.com/blog/2003/10/6/the-quotdon-boxquot-of-windows-installer.html" published: "2003-10-06T00:40:00" updated: "2003-10-06T00:40:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Rob Mensching has been working at MS, primarily on the Office Setup/Deployment team, for the past 4 years or so; It figures that when he has something to say about Installer Merge Modules , it's wise to sit down and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The "Don box" of windows installer? By Roy Osherove October 6, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published October 6, 2003; technical details may be outdated. [Rob Mensching](http://blogs.gotdotnet.com/robmen)  has been working at MS, primarily on the Office Setup/Deployment team, for the past 4 years or so; It figures that when he has [something to say about Installer Merge Modules](http://blogs.gotdotnet.com/robmen/permalink.aspx/9857e0c7-2b64-4997-ad2b-a00257a65f19), it's wise to sit down and listen. I mean, he **is** the guy who actually wrote the spec for merge modules. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 6, 2003 ### [More than 500 sample chapters](https://osherove.com/blog/2003/10/6/more-than-500-sample-chapters.html) - Oct 6, 2003 ### [Getting a focus on performance - some new pages](https://osherove.com/blog/2003/10/6/getting-a-focus-on-performance-some-new-pages.html) - Oct 2, 2003 ### [Web GUI unit testing techniques](https://osherove.com/blog/2003/10/2/web-gui-unit-testing-techniques.html) - Oct 2, 2003 ### [Real Progress Bars in Web Application](https://osherove.com/blog/2003/10/2/real-progress-bars-in-web-application.html) --- title: "When running 'aspnet_regiis -c' still doesn't fix it..." url: "https://osherove.com/blog/2003/10/6/when-running-aspnet_regiis-c-still-doesnt-fix-it.md" canonical: "https://osherove.com/blog/2003/10/6/when-running-aspnet_regiis-c-still-doesnt-fix-it.html" published: "2003-10-06T00:14:00" updated: "2003-10-06T00:14:00" tags: [".Net Original"] author: "Roy Osherove" description: "If you ever find yourself with this error: “ Unable to find script library '/aspnet_client/system_web/1_1_4322/WebUIValidation.js'. Try placing this file manually, or reinstall by running 'aspnet_regiis -c'.” and you've…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # When running 'aspnet\_regiis -c' still doesn't fix it... By Roy Osherove October 6, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published October 6, 2003; technical details may be outdated. If you ever find yourself with this error: “_Unable to find script library '/aspnet\_client/system\_web/1\_1\_4322/WebUIValidation.js'. Try placing this file manually, or reinstall by running 'aspnet\_regiis -c'.”_ and you've already ran _aspnet\_regiis_ but it still shows the error, try this: _“This problem most often occurs when you are also running virtual directory and the site you are hitting has a virtual directory redirect set for it. To fix this, copy the aspnet\_client folder structure from the root of your account into the [website](http://itxt.vibrantmedia.com/al.asp?ipid=112&cc=us&di=64485&ts=2465938&redir=http://www5.overture.com/d/sr/?xargs=02u3hs9yoaj1UPPzCCxBSKv0dTbXy0oQdDNKVzYSdwagXCQoUf8oKt7cTF8vi7tv3c%2BW5bD7dNp9iCrQ7L2m5YjgiARMlACJOV1RgQkmgClJXaoIALZi6DcuSdVtrVvrb1TWnq%2BXK7P5nY31mb9zplQ1MKM6XhRusUnPis7HA4DmOkCfcptbHGGSHh1ueD2QqnlNs5JrmhJOKZSdlI0D4fq7fX2uFW9jhCQc2aY0zwVyGp3MasQ2ZxcxiROKIREm9jop%2BtUA%3D%3D)'s subfolder (as listed in the Vitrual Director mappings).“_ \[taken from [here](http://forums.aspfree.com/archive/11/2003/08/3/17772).\] It certainly saved the day for me! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 8, 2003 ### [Introducing SiteFeeder](https://osherove.com/blog/2003/10/8/introducing-sitefeeder.html) - Oct 7, 2003 ### [\[Tip\]:MemoryStream.GetBuffer() vs. MemoryStream.ToArray()](https://osherove.com/blog/2003/10/7/tipmemorystreamgetbuffer-vs-memorystreamtoarray.html) - Oct 5, 2003 ### [Fun with NUnit - clarification](https://osherove.com/blog/2003/10/5/fun-with-nunit-clarification.html) - Sep 30, 2003 ### [See you at the Israel .Net user group tomorrow!](https://osherove.com/blog/2003/9/30/see-you-at-the-israel-net-user-group-tomorrow.html) --- title: "Geek marriage - Episode I" url: "https://osherove.com/blog/2003/10/5/geek-marriage-episode-i.md" canonical: "https://osherove.com/blog/2003/10/5/geek-marriage-episode-i.html" published: "2003-10-05T22:36:00" updated: "2003-10-05T22:36:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Oh yeah. My wife and I are real geeks(even though she won't admit it for a loong time). The other day we had a discussion about washing the dishes. I found out that she had a totally different way of washing the dishes…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Geek marriage - Episode I By Roy Osherove October 5, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 5, 2003; technical details may be outdated. Oh yeah. My wife and I are **real** geeks(even though she won't admit it for a loong time). The other day we had a discussion about washing the dishes. I found out that she had a totally different way of washing the dishes than mine: **Her way:** - Initial fast wash all the dishes and put them aside - Close the faucet - Go through each dish and scrub it with soap, then put it in the sink - Open faucet - Wash the soap from each dish - Put each dish in its place - Close faucet **My way:** - Put all the dirty dishes in the sink - Open faucet - For each dish, wash and scrub with soap under the running water, than put in place - Close faucet How is this geeky? Well, I went up to her and asked her: “H_oney, you seem to have a totally different algorithm than me to wash the dishes. Your algo flow is much less efficient and takes more time than mine._“ to which she replied “_Well, my algorithm saves much more water than yours, so it is less wasteful over time and energy spent in that perspective_“. I couldn't argue with that. I mean, we both had totally different algorithm “directives“ for each run. Not to mention that my dishes seem to remain a bit dirty when I'm done with them :) I guess that's what happens when two programmers marry each other. Huh. And it didn't even _feel_ weird at the time! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 7, 2003 ### [A big bug in Google](https://osherove.com/blog/2003/10/7/a-big-bug-in-google.html) - Oct 6, 2003 ### [.Net Blogging MVP - a myth?](https://osherove.com/blog/2003/10/6/net-blogging-mvp-a-myth.html) - Oct 5, 2003 ### [More on .Net Rocks](https://osherove.com/blog/2003/10/5/more-on-net-rocks.html) - Oct 5, 2003 ### [Scoble on .Net Rocks? Give me a break..](https://osherove.com/blog/2003/10/5/scoble-on-net-rocks-give-me-a-break.html) --- title: "Good JavaScript reference and help" url: "https://osherove.com/blog/2003/10/5/good-javascript-reference-and-help.md" canonical: "https://osherove.com/blog/2003/10/5/good-javascript-reference-and-help.html" published: "2003-10-05T22:23:00" updated: "2003-10-05T22:23:00" tags: ["Cool sites"] author: "Roy Osherove" description: "This site looks like a very promising resource for learning the basics (and no so basics) of JavaScript. It's something I'm just getting the hang of, and already I've found it very useful with a discussion about the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good JavaScript reference and help By Roy Osherove October 5, 2003 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published October 5, 2003; technical details may be outdated. This site looks like a very promising resource for learning the basics (and no so basics) of JavaScript. It's something I'm just getting the hang of, and already I've found it very useful with a discussion about the various ways of using an IFRAME. [ppk's JavaScript Section](http://www.xs4all.nl/~ppk/js/) This site is by no means “complete” but it serves as a good “A real-world developer's JavaScript toolkit”. ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Oct 8, 2003 ### [Introducing SiteFeeder](https://osherove.com/blog/2003/10/8/introducing-sitefeeder.html) - Oct 6, 2003 ### [Getting a focus on performance - some new pages](https://osherove.com/blog/2003/10/6/getting-a-focus-on-performance-some-new-pages.html) - Sep 25, 2003 ### [AmazReplacer - Convert Amazon's URL into your referrer URL automatically](https://osherove.com/blog/2003/9/25/amazreplacer-convert-amazons-url-into-your-referrer-url-auto.html) - Sep 19, 2003 ### [Cool site: Software Reality](https://osherove.com/blog/2003/9/19/cool-site-software-reality.html) --- title: "More on .Net Rocks" url: "https://osherove.com/blog/2003/10/5/more-on-net-rocks.md" canonical: "https://osherove.com/blog/2003/10/5/more-on-net-rocks.html" published: "2003-10-05T19:55:00" updated: "2003-10-05T19:55:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Speaking of .Net Rocks , Mark Dunn, one of the anchors, commented on the last show they made (in the tavern): Hi Roy, We've had several folks comment on the sound quality. In response, Carl has reworked that file.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More on .Net Rocks By Roy Osherove October 5, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 5, 2003; technical details may be outdated. Speaking of [.Net Rocks](http://www.franklins.net/), Mark Dunn, one of the anchors, commented on the last show they made (in the tavern): _Hi Roy,_ _We've had several folks comment on the sound quality. In response, Carl has reworked that file. Please give it another listen._ _Cheers, -Mark_ I've listened to the show again, and it does sound a lot better. Another thing I'd like to add is this: I may have sounded a bit harsh on the last post. I didn't mean to and I apologize if anyone was hurt. Nothing is personal. All is in “constructive criticism” mode. Again, Sorry. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 6, 2003 ### [.Net Blogging MVP - a myth?](https://osherove.com/blog/2003/10/6/net-blogging-mvp-a-myth.html) - Oct 5, 2003 ### [Geek marriage - Episode I](https://osherove.com/blog/2003/10/5/geek-marriage-episode-i.html) - Oct 5, 2003 ### [Scoble on .Net Rocks? Give me a break..](https://osherove.com/blog/2003/10/5/scoble-on-net-rocks-give-me-a-break.html) - Oct 5, 2003 ### [Funny \[ot\] post](https://osherove.com/blog/2003/10/5/funny-ot-post.html) --- title: "Scoble on .Net Rocks? Give me a break.." url: "https://osherove.com/blog/2003/10/5/scoble-on-net-rocks-give-me-a-break.md" canonical: "https://osherove.com/blog/2003/10/5/scoble-on-net-rocks-give-me-a-break.html" published: "2003-10-05T17:41:00" updated: "2003-10-05T17:41:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "OK. Is it just me or does it sound really ridiculous that Scoble is being interviewed for the NET Rocks show ? I mean, How is Scoble related to .Net development, other that the fact that he knows people who do it? Oh,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scoble on .Net Rocks? Give me a break.. By Roy Osherove October 5, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 5, 2003; technical details may be outdated. OK. Is it just me or does it sound really ridiculous that [Scoble](http://scoble.weblogs.com/) is being [interviewed](http://radio.weblogs.com/0001011/2003/10/05.html#a4916) for the [NET Rocks show](http://www.franklins.net/dotnetrocks.asp)? I mean, How is [Scoble](http://scoble.weblogs.com/) related to .Net development, other that the fact that he **knows** people who do it? Oh, and he's helping to arrange the PDC. That's cool, but I can still conclude the following: -  Scoble is not a .net developer, so the conversation will **have** to be about other stuff. Let's see, what will it be about? What does [Scoble](http://scoble.weblogs.com/) really like to talk about these days? Um, maybe about the upcoming PDC? maybe Longhorn? - A lot of stuff (most of it) that's going to appear in the PDC is still confidential, so obviously, the conversation couldn't go that way. So, the conversation,again, will **have** to be about something else. Um, maybe, how “cool“ Longhorn and the PDC are going to be? - [Scoble](http://scoble.weblogs.com/) throws names around like they were darts in a [dart contest](http://www.roseandcrown.it/UK_tdc_ph2.html). I bet  we'll get to hear how “cool“ all the stuff he's heard about is, oh but sorry, he can't tell us anything about it, right? We'll have to wait until the PDC to find out. What are the main reasons a show like  [NET Rocks show](http://www.franklins.net/dotnetrocks.asp) wants to interview [Scoble](http://scoble.weblogs.com/)? Um, could it be all the endless hype? I fear it's going to be a whole show about nothing really. Will I learn anything new from it? I'm guessing not. Reading [Scoble](http://scoble.weblogs.com/) in the past month has been excruciating. I might as well sign up for some tech news site, because there's nothing in there I couldn't get anywhere else. He seems to be more involved in linking to other stuff than generating actual content.  When his latest blog just started (after moving to MS) I would read him judiciously. He would write some very insightful posts. But now, it's all about hype hype hype. I'm tired of it. I'd like to say “unsubscribed“, but I'm not gonna lie to you. I'm gonna keep reading him, just because every once in a **long** while, he manages to still come up with something I haven't heard before that would interest me. Mind you, that hasn't happened in more than a week. This may sound like a big flame, but it's not. It's more of a request. [Scoble](http://scoble.weblogs.com/), please go back to the way you used to be. I miss your “real“ writing. Interviewing for the .Net Rocks shows seems silly and artificial. Return to the real you. Don't make the hype be all that you are. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 8, 2003 ### [Why I like SharpReader better](https://osherove.com/blog/2003/10/8/why-i-like-sharpreader-better.html) - Oct 6, 2003 ### [.Net Rocks closure, suggestion, and discovering Salamander. Oh my!](https://osherove.com/blog/2003/10/6/net-rocks-closure-suggestion-and-discovering-salamander-oh-m.html) - Oct 2, 2003 ### [Two good blogs: Hiring Technical People, Managing Product Development](https://osherove.com/blog/2003/10/2/two-good-blogs-hiring-technical-people-managing-product-deve.html) - Oct 1, 2003 ### [Congratulations Robert!](https://osherove.com/blog/2003/10/1/congratulations-robert.html) --- title: "Funny [ot] post" url: "https://osherove.com/blog/2003/10/5/funny-ot-post.md" canonical: "https://osherove.com/blog/2003/10/5/funny-ot-post.html" published: "2003-10-05T09:37:00" updated: "2003-10-05T09:37:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Although waaay of topic, this is truly one of the funniest posts I've ever read. :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Funny \[ot\] post By Roy Osherove October 5, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 5, 2003; technical details may be outdated. Although waaay of topic, [this](http://blogs.gotdotnet.com/tysond/permalink.aspx/0ca03c2b-ac46-48a8-8dc4-fa20cfe45aaf) is truly one of the funniest posts I've ever read. :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 5, 2003 ### [More on .Net Rocks](https://osherove.com/blog/2003/10/5/more-on-net-rocks.html) - Oct 5, 2003 ### [Scoble on .Net Rocks? Give me a break..](https://osherove.com/blog/2003/10/5/scoble-on-net-rocks-give-me-a-break.html) - Oct 4, 2003 ### [Another day, another bombing](https://osherove.com/blog/2003/10/4/another-day-another-bombing.html) - Oct 3, 2003 ### [Skype Rocks!](https://osherove.com/blog/2003/10/3/skype-rocks.html) --- title: "Fun with NUnit - clarification" url: "https://osherove.com/blog/2003/10/5/fun-with-nunit-clarification.md" canonical: "https://osherove.com/blog/2003/10/5/fun-with-nunit-clarification.html" published: "2003-10-05T08:30:00" updated: "2003-10-05T08:30:00" tags: [".Net Original"] author: "Roy Osherove" description: "I just got a comment on my Unit Testing article. The comment was by Manfred Land - the Project Manager for csUnit, and it clarifies some errors and some things I didn't write(or know) about csUnit when I wrote the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Fun with NUnit - clarification By Roy Osherove October 5, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published October 5, 2003; technical details may be outdated. I just got a comment on my Unit Testing article. The comment was by Manfred Land - the Project Manager for csUnit, and it clarifies some errors and some things I didn't write(or know) about csUnit when I wrote the article: \----------------------------- _While in general I liked the article, there are a few things I believe need clarification: you listed csUnit as a commercial tool. This is not correct. csUnit (_[_http://www.csunit.org_](http://www.csunit.org/)_) is an open-source unit testing framework for the .NET framework. It is available for free under the terms of the GPL. Also, csUnit does not provide a different mean of expressing tests, but instead supports the identical set of attributes for writing tests. Furthermore, csUnit introduced the TestFixtureSetup/TestFixtureTearDown methods back in May 2003 while other frameworks supported them not before end of September. In csUnit, using assertions requires less typing compared to other frameworks, especially if you editor supports autocompletion of code. Just have a look at the csUnit.Assert class. Support for loading multiple assemblies was introduced in May 2003, too, while other open source testing framework released similar functionality in September 2003. Best regards, Manfred. \--- Manfred Lange, Project Manager csUnit_ \---------------------------------- Thanks for the clarifications, Manfred. Sorry for the errors. I'll be looking into csUnit more thoroughly now, but I'm not sure if I'll use it. I still view NUnit as the DE-facto framework for unit testing in .net. However, I may be totally off base here. How many of you use csUnit and not NUnit? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 7, 2003 ### [\[Tip\]:MemoryStream.GetBuffer() vs. MemoryStream.ToArray()](https://osherove.com/blog/2003/10/7/tipmemorystreamgetbuffer-vs-memorystreamtoarray.html) - Oct 6, 2003 ### [When running 'aspnet\_regiis -c' still doesn't fix it...](https://osherove.com/blog/2003/10/6/when-running-aspnet_regiis-c-still-doesnt-fix-it.html) - Sep 30, 2003 ### [See you at the Israel .Net user group tomorrow!](https://osherove.com/blog/2003/9/30/see-you-at-the-israel-net-user-group-tomorrow.html) - Sep 30, 2003 ### [Unit Test Your .NET Data Access Layer: Where are the Mocks?](https://osherove.com/blog/2003/9/30/unit-test-your-net-data-access-layer-where-are-the-mocks.html) --- title: "AmazReplacer- revamped" url: "https://osherove.com/blog/2003/10/4/amazreplacer-revamped.md" canonical: "https://osherove.com/blog/2003/10/4/amazreplacer-revamped.html" published: "2003-10-04T13:44:00" updated: "2003-10-04T13:44:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Got this email from ScottW regarding my AmazReplacer tool: Hi Roy, If you are interested, I made a couple of quick tweaks to your Amazon replacer. 1. Allowed AssociateID to be configurable (sorry :) 2. Added handling…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # AmazReplacer- revamped By Roy Osherove October 4, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 4, 2003; technical details may be outdated. Got this email from [ScottW](http://scottwater.com/blog) regarding my [AmazReplacer](http://weblogs.asp.net/rosherove/posts/29085.aspx) tool: _Hi Roy,_ _If you are interested, I made a couple of quick tweaks to your [Amazon](https://osherove.com/blog/2003/10/4/www.amazon.com) replacer._ _1\. Allowed AssociateID to be configurable (sorry :)_ _2\. Added handling for just ISBN numbers._ _\-Scott_ Indeed I am interested! Thanks for the update scott :) Feel free to download the revamped source [here](http://royo.is-a-geek.com/files/amazreplacer.zip). ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Oct 6, 2003 ### [.Net Rocks closure, suggestion, and discovering Salamander. Oh my!](https://osherove.com/blog/2003/10/6/net-rocks-closure-suggestion-and-discovering-salamander-oh-m.html) - Oct 6, 2003 ### [\[Cool tool\] : Visustin - Visually graph your code](https://osherove.com/blog/2003/10/6/cool-tool-visustin-visually-graph-your-code.html) - Oct 1, 2003 ### [Visual Basic Resource Kit (C# developers are not banned!)](https://osherove.com/blog/2003/10/1/visual-basic-resource-kit-c-developers-are-not-banned.html) - Sep 30, 2003 ### [\[Cool Tool\]: Code Library for .Net](https://osherove.com/blog/2003/9/30/cool-tool-code-library-for-net.html) --- title: "Another day, another bombing" url: "https://osherove.com/blog/2003/10/4/another-day-another-bombing.md" canonical: "https://osherove.com/blog/2003/10/4/another-day-another-bombing.html" published: "2003-10-04T13:10:00" updated: "2003-10-04T13:10:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Nothing like waking up from a Saturday noon nap and finding out there's been another terrorist bombing. But don't worry ,this is Israel. We're used to it. The suicide bomber went into a restaurant in Haifa city - one of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another day, another bombing By Roy Osherove October 4, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 4, 2003; technical details may be outdated. Nothing like waking up from a Saturday noon nap and finding out there's been another terrorist bombing. But don't worry ,this is Israel. We're **used** to it. The suicide bomber went into a restaurant in Haifa city - one of the major cities in Israel. He blew himself up and took the lives of 19 people. 1 of them was a baby. 2 of them were children. The restaurant has been running for 40 years and is owned jointly by Arabs and Israelis. Both Arabs and Israelis were killed and injured in this bombing. “Jihad“ spokesperson said that this bombing was in retaliation to the fence Israel is building **to defend itself from suicide bombers**. This weekend has had **45** terrorist Warnings/threats/information. One got through. But don't worry ,this is Israel. We're freakin' **used** to it. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 5, 2003 ### [Scoble on .Net Rocks? Give me a break..](https://osherove.com/blog/2003/10/5/scoble-on-net-rocks-give-me-a-break.html) - Oct 5, 2003 ### [Funny \[ot\] post](https://osherove.com/blog/2003/10/5/funny-ot-post.html) - Oct 3, 2003 ### [Skype Rocks!](https://osherove.com/blog/2003/10/3/skype-rocks.html) - Oct 2, 2003 ### [Two good blogs: Hiring Technical People, Managing Product Development](https://osherove.com/blog/2003/10/2/two-good-blogs-hiring-technical-people-managing-product-deve.html) --- title: "Skype Rocks!" url: "https://osherove.com/blog/2003/10/3/skype-rocks.md" canonical: "https://osherove.com/blog/2003/10/3/skype-rocks.html" published: "2003-10-03T15:20:00" updated: "2003-10-03T15:20:00" tags: ["Cool Articles", "Off Topic"] author: "Roy Osherove" description: "I just realized something - Skype totally and utterly rocks! It would be really cool to get to talk with some of the people I've been IM'ing with for the past few months. So if you'd like to voice me, feel free. My User…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Skype Rocks! By Roy Osherove October 3, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 3, 2003; technical details may be outdated. I just realized something - [Skype](http://www.skype.com/) totally and utterly rocks! It would be really cool to get to talk with some of the people I've been IM'ing with for the past few months. So if you'd like to voice me, feel free. My User name is “RoyOsherove”. (I might be offline because it's the week Why does it rovk over other clients? The sound quality is awsome! It's still in beta and some things are missing, but it's still the collest tool I've used in a while. ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Oct 6, 2003 ### [Getting a focus on performance - some new pages](https://osherove.com/blog/2003/10/6/getting-a-focus-on-performance-some-new-pages.html) - Oct 6, 2003 ### [The "Don box" of windows installer?](https://osherove.com/blog/2003/10/6/the-quotdon-boxquot-of-windows-installer.html) - Oct 2, 2003 ### [Real Progress Bars in Web Application](https://osherove.com/blog/2003/10/2/real-progress-bars-in-web-application.html) - Oct 1, 2003 ### [The Exception Model](https://osherove.com/blog/2003/10/1/the-exception-model.html) --- title: "Web GUI unit testing techniques" url: "https://osherove.com/blog/2003/10/2/web-gui-unit-testing-techniques.md" canonical: "https://osherove.com/blog/2003/10/2/web-gui-unit-testing-techniques.html" published: "2003-10-02T22:59:00" updated: "2003-10-02T22:59:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Continuing my Unit testing theme in recent weeks, I've found a very interesting post in reply to a question posted on the XP mailing list . What was so interesting is that the question, and thus the answer, deal with a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Web GUI unit testing techniques By Roy Osherove October 2, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published October 2, 2003; technical details may be outdated. Continuing my Unit testing theme in recent weeks, I've found a very interesting post in reply to a question posted on the [XP mailing list](http://groups.yahoo.com/group/extremeprogramming/). What was so interesting is that the question, and thus the answer, deal with a side of testing that I never though had clear and obvious testing techniques that enabled true unit testing - testing web GUI. I was wrong. The answer also introduces a couple of unit testing framework tools and techniques I never heard of .How fun it is to discover something new everyday! **Question:** \> How does one automate test scripts for GUI's ? Like \> logging in to a web application, choosing from a menu, \> keying in data, and retrieving to check if the data is \> valid, and so forth ? **Answer:** Try the [TestFirstUserInterfaces](http://groups.yahoo.com/group/TestFirstUserInterfaces/) mailing list. One automates tests for those features at three levels: Test your HTML, before the server sends it. Write XML-compliant HTML, and use XPath to query out the HTML commands that support your menus and forms. Use [HttpUnit](http://httpunit.sourceforge.net/) as a "mock browser". It will drive the HTTP protocol, and make the server think a normal user hits your page. Then write tests that ensure your page has the controls it says it does. The third way: Use a scripting language, such as Perl or Ruby, and open Internet Explorer as a COM server. Drive it to navigate to your page and download it. Then exploit the same Document Object Model as JavaScript bunnies use, to inspect the controls as objects, and to click on them. As usual for much of XP, you can get very far testing as close as possible to the tested code. Most of the time, prefer the first way. But only the third way "proves" your Web page does the right thing when clicked. GUI testing exposes a raft of weird situations. XPath is the best way (I have found) to test HTML. But most HTML is not XML compliant, under the naive assumption that permitting programmers to write sloppy HTML will speed them up. Much attitude readjustments are needed here. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 6, 2003 ### [Getting a focus on performance - some new pages](https://osherove.com/blog/2003/10/6/getting-a-focus-on-performance-some-new-pages.html) - Oct 6, 2003 ### [The "Don box" of windows installer?](https://osherove.com/blog/2003/10/6/the-quotdon-boxquot-of-windows-installer.html) - Oct 2, 2003 ### [Real Progress Bars in Web Application](https://osherove.com/blog/2003/10/2/real-progress-bars-in-web-application.html) - Oct 1, 2003 ### [Visual Basic Resource Kit (C# developers are not banned!)](https://osherove.com/blog/2003/10/1/visual-basic-resource-kit-c-developers-are-not-banned.html) --- title: "Real Progress Bars in Web Application" url: "https://osherove.com/blog/2003/10/2/real-progress-bars-in-web-application.md" canonical: "https://osherove.com/blog/2003/10/2/real-progress-bars-in-web-application.html" published: "2003-10-02T10:09:00" updated: "2003-10-02T10:09:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "I was fighting with this a while ago and I think I found at article right to the point on the subject: Real Progress Bars in Web Application “The key thing for creating Progress Bar in a web application, is the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Real Progress Bars in Web Application By Roy Osherove October 2, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published October 2, 2003; technical details may be outdated. I was fighting with this a while ago and I think I found at article right to the point on the subject: [Real Progress Bars in Web Application](http://www.myblogroll.com/Articles/progressbar) _“The key thing for creating Progress Bar in a web application, is the browser's ability to display a page before it's totally loaded. We'll use this feature to progressively build and send the page to the client. First, we'll send the HTML code to display a nice and beautiful progress bar. Then, here is the trick, we'll dynamically send some Javascript code blocks that will updates its progression. All these, of course, before closing the HTTP request. In C#, **Response.Write()** lets us add some HTML to the buffer while **Response.Flush()** sends all buffered data to the client.”_ \[[Julien Cheyssial's Blog](http://dotnetjunkies.com/WebLog/jcheyssial/posts/1995.aspx) \] Excellent! Thanks Julian :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 6, 2003 ### [The "Don box" of windows installer?](https://osherove.com/blog/2003/10/6/the-quotdon-boxquot-of-windows-installer.html) - Oct 2, 2003 ### [Web GUI unit testing techniques](https://osherove.com/blog/2003/10/2/web-gui-unit-testing-techniques.html) - Oct 1, 2003 ### [Visual Basic Resource Kit (C# developers are not banned!)](https://osherove.com/blog/2003/10/1/visual-basic-resource-kit-c-developers-are-not-banned.html) - Oct 1, 2003 ### [The Exception Model](https://osherove.com/blog/2003/10/1/the-exception-model.html) --- title: "Two good blogs: Hiring Technical People, Managing Product Development" url: "https://osherove.com/blog/2003/10/2/two-good-blogs-hiring-technical-people-managing-product-deve.md" canonical: "https://osherove.com/blog/2003/10/2/two-good-blogs-hiring-technical-people-managing-product-deve.html" published: "2003-10-02T03:21:00" updated: "2003-10-02T03:21:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "I just found out about these two magnificent blogs, and I highly recommend both of them to everyone. Both are from the same source: Managing Product Development Blog Hiring Technical People Blog (recommended for job…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Two good blogs: Hiring Technical People, Managing Product Development By Roy Osherove October 2, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 2, 2003; technical details may be outdated. I just found out about these two magnificent blogs, and I highly recommend both of them to everyone. Both are from the same source: [Managing Product Development Blog](http://www.jrothman.com/weblog/blogger.html)    [Hiring Technical People Blog](http://www.jrothman.com/weblog/htpblogger.html)  (recommended for job seekers as well as employers) **Subscribed!** ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 6, 2003 ### [.Net Rocks closure, suggestion, and discovering Salamander. Oh my!](https://osherove.com/blog/2003/10/6/net-rocks-closure-suggestion-and-discovering-salamander-oh-m.html) - Oct 5, 2003 ### [Scoble on .Net Rocks? Give me a break..](https://osherove.com/blog/2003/10/5/scoble-on-net-rocks-give-me-a-break.html) - Oct 1, 2003 ### [Congratulations Robert!](https://osherove.com/blog/2003/10/1/congratulations-robert.html) - Sep 26, 2003 ### [Pay for my PDC?](https://osherove.com/blog/2003/9/26/pay-for-my-pdc.html) --- title: "Visual Studio .NET Shortcut Key Guide" url: "https://osherove.com/blog/2003/10/2/visual-studio-net-shortcut-key-guide.md" canonical: "https://osherove.com/blog/2003/10/2/visual-studio-net-shortcut-key-guide.html" published: "2003-10-02T02:22:00" updated: "2003-10-02T02:22:00" tags: ["Free book chapters", "Tips & Tricks"] author: "Roy Osherove" description: "Keyboard shortcuts can save hours of programming time. Appendix A of Mastering Visual Studio .NET lists the command, shortcut, and description of each in a convenient table format. [via safari.oreilly.com ] Heaven. I'm…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Visual Studio .NET Shortcut Key Guide By Roy Osherove October 2, 2003 In [Free book chapters](https://osherove.com/blog/category/free-book-chapters), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published October 2, 2003; technical details may be outdated. _Keyboard shortcuts can save hours of programming time._ [_Appendix A of Mastering Visual Studio .NET_](http://safari.oreilly.com/?XmlId=0-596-00360-9/mastvsnet-APP-C) _lists the command, shortcut, and description of each in a convenient table format._ \[via [safari.oreilly.com](http://safari.oreilly.com/)\] Heaven. I'm in heaven. **Note**: This is not a full chapter, but the data that you \*can\* read is quite valuable! ## More in Free book chapters [All posts in Free book chapters](https://osherove.com/blog/category/free-book-chapters) - Nov 20, 2003 ### [\[online book\] A .NET Developer's Guide to Windows Security](https://osherove.com/blog/2003/11/20/online-book-a-net-developers-guide-to-windows-security.html) - Oct 6, 2003 ### [More than 500 sample chapters](https://osherove.com/blog/2003/10/6/more-than-500-sample-chapters.html) - Sep 22, 2003 ### [Free chapter from "Essential .Net" by Don Box](https://osherove.com/blog/2003/9/22/free-chapter-from-quotessential-netquot-by-don-box.html) - Sep 8, 2003 ### [The OLE syndrom](https://osherove.com/blog/2003/9/8/the-ole-syndrom.html) --- title: "Visual Basic Resource Kit (C# developers are not banned!)" url: "https://osherove.com/blog/2003/10/1/visual-basic-resource-kit-c-developers-are-not-banned.md" canonical: "https://osherove.com/blog/2003/10/1/visual-basic-resource-kit-c-developers-are-not-banned.html" published: "2003-10-01T23:16:00" updated: "2003-10-01T23:16:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "The download isn't up yet, it takes some time to sign and virus scan an entire CD packaged up as a zip, but the site that details what is included is there! Check out http://msdn.microsoft.com/vbasic/vbrkit for all the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Visual Basic Resource Kit (C\# developers are not banned!) By Roy Osherove October 1, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published October 1, 2003; technical details may be outdated.
The download isn't up yet, it takes some time to sign and virus scan an entire CD packaged up as a zip, but the site that details what is included is there!

Check out
http://msdn.microsoft.com/vbasic/vbrkit for all the details, and you can even order yourself a copy of the CD if you want to avoid the downloading hassles...

Quick highlights; a ton of free controls (not just trial editions) from Component One, Dundas, Infragistics, and Sax (Sax is provided a serial communication control!!!!), a pile of sample code, whitepapers and multi-media content as well.

Oh, and just a small point... all of the controls should work fine in C# as far as I know :)
\[[Duncan Mackenzie](http://weblogs.asp.net/duncanma/posts/30062.aspx) \] **Update: The download is available online now!** Um.. need I say more? ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 2, 2003 ### [Web GUI unit testing techniques](https://osherove.com/blog/2003/10/2/web-gui-unit-testing-techniques.html) - Oct 2, 2003 ### [Real Progress Bars in Web Application](https://osherove.com/blog/2003/10/2/real-progress-bars-in-web-application.html) - Oct 1, 2003 ### [The Exception Model](https://osherove.com/blog/2003/10/1/the-exception-model.html) - Sep 30, 2003 ### [\[Cool Tool\]: Code Library for .Net](https://osherove.com/blog/2003/9/30/cool-tool-code-library-for-net.html) --- title: "Congratulations Robert!" url: "https://osherove.com/blog/2003/10/1/congratulations-robert.md" canonical: "https://osherove.com/blog/2003/10/1/congratulations-robert.html" published: "2003-10-01T23:05:00" updated: "2003-10-01T23:05:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Every once in while we all get to have our “Special Day” where everything is just handy dandy, and all our hard work comes back to haunt us in a good way. Such is today for Robert McLaws . He's full of announcements:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Congratulations Robert! By Roy Osherove October 1, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 1, 2003; technical details may be outdated. Every once in while we all get to have our “Special Day” where everything is just handy dandy, and all our hard work comes back to haunt us in a good way. Such is today for [Robert McLaws](http://weblogs.asp.net/rmclaws/). He's full of announcements: [Big News #1: He's an MVP!](http://weblogs.asp.net/rmclaws/posts/30094.aspx) [Big News #2: New Community Site](https://osherove.com/rmclaws/posts/30098.aspx) [Big News #3: New Home for Patch Day Review!](https://osherove.com/rmclaws/posts/30101.aspx) And of course, today he's launched his new product: [GenX.Net](http://www.interscapeusa.com/) Congratulations Robert, from all my heart. You deserve all that's coming to you. Take this day and enjoy it to the fullest, because tomorrow its back to knuckle breaking work again. You're doing a great job, and you're an asset to this community (and all others you're involved in). Congratu-freakin'-lations dude! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 5, 2003 ### [Scoble on .Net Rocks? Give me a break..](https://osherove.com/blog/2003/10/5/scoble-on-net-rocks-give-me-a-break.html) - Oct 2, 2003 ### [Two good blogs: Hiring Technical People, Managing Product Development](https://osherove.com/blog/2003/10/2/two-good-blogs-hiring-technical-people-managing-product-deve.html) - Sep 26, 2003 ### [Pay for my PDC?](https://osherove.com/blog/2003/9/26/pay-for-my-pdc.html) - Sep 22, 2003 ### [Nice blog](https://osherove.com/blog/2003/9/22/nice-blog.html) --- title: "The Exception Model" url: "https://osherove.com/blog/2003/10/1/the-exception-model.md" canonical: "https://osherove.com/blog/2003/10/1/the-exception-model.html" published: "2003-10-01T17:59:00" updated: "2003-10-01T17:59:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Without even skimming through it first I'm letting you know that Chris brumme posted another “post”: The Exception Model Just a little something to read in bed. Oh, I forgot to mention. It's 11,200 words, by the way.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Exception Model By Roy Osherove October 1, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published October 1, 2003; technical details may be outdated. Without even skimming through it first I'm letting you know that [Chris brumme](http://blogs.gotdotnet.com/cbrumme/) posted another “post”: [The Exception Model](http://blogs.gotdotnet.com/cbrumme/permalink.aspx/d5fbb311-0c95-46ac-9c46-8f8c0e6ae561) Just a little something to read in bed. Oh, I forgot to mention. It's 11,200 words, by the way. Better get to bed early :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 2, 2003 ### [Real Progress Bars in Web Application](https://osherove.com/blog/2003/10/2/real-progress-bars-in-web-application.html) - Oct 1, 2003 ### [Visual Basic Resource Kit (C# developers are not banned!)](https://osherove.com/blog/2003/10/1/visual-basic-resource-kit-c-developers-are-not-banned.html) - Sep 30, 2003 ### [\[Cool Tool\]: Code Library for .Net](https://osherove.com/blog/2003/9/30/cool-tool-code-library-for-net.html) - Sep 30, 2003 ### [Responses to agile concerns](https://osherove.com/blog/2003/9/30/responses-to-agile-concerns.html) --- title: "Win A Free pass to the PDC!" url: "https://osherove.com/blog/2003/10/1/win-a-free-pass-to-the-pdc.md" canonical: "https://osherove.com/blog/2003/10/1/win-a-free-pass-to-the-pdc.html" published: "2003-10-01T17:49:00" updated: "2003-10-01T17:49:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Yup - Wintellect is giving away a free pass. You'll have to pay all other associated costs of the trip. But this is huge! You guys rock. (hooray Sara!!!!!) http://www.wintellect.com/special/pdc.aspx [ Julie Lerman ] Oh…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Win A Free pass to the PDC! By Roy Osherove October 1, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published October 1, 2003; technical details may be outdated. Yup - Wintellect is giving away a free pass. You'll have to pay all other associated costs of the trip. But this is huge! You guys rock. (hooray Sara!!!!!) [_http://www.wintellect.com/special/pdc.aspx_](http://www.wintellect.com/special/pdc.aspx) \[[Julie Lerman](http://weblogs.asp.net/jlerman/posts/30030.aspx)\] Oh this is definitely exciting! I might actually have a shot at going (although a looong one!). One thing I noticed on the form is that they expect a US phone number. But they don't mention anything about what countries are eligible for this. So I entered. One “thing” in the for though: The phone number should be entered like this: xxx-xxx-xxxx  or like this  (xxx)xxx-xxxx Mind you - all the hyphens matter!. I had to view-source on the page to find out what the required field validator needed as a regex - maybe it's like a puzzle you have to solve to prove your worthiness? ;) Anyway - good luck , to me and all other participants. May the luckiest soul win :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 2, 2003 ### [Two good blogs: Hiring Technical People, Managing Product Development](https://osherove.com/blog/2003/10/2/two-good-blogs-hiring-technical-people-managing-product-deve.html) - Oct 1, 2003 ### [Congratulations Robert!](https://osherove.com/blog/2003/10/1/congratulations-robert.html) - Sep 30, 2003 ### [Google Frequent Searchers tool](https://osherove.com/blog/2003/9/30/google-frequent-searchers-tool.html) - Sep 29, 2003 ### [PDC hype is really really really annoying!](https://osherove.com/blog/2003/9/29/pdc-hype-is-really-really-really-annoying.html) --- title: "[Cool Tool]: Code Library for .Net" url: "https://osherove.com/blog/2003/9/30/cool-tool-code-library-for-net.md" canonical: "https://osherove.com/blog/2003/9/30/cool-tool-code-library-for-net.html" published: "2003-09-30T12:36:00" updated: "2003-09-30T12:36:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "If you are looking for a way to manage your sample code, snippets, articles, etc. get Code Library . It is available in SQL Server and access versions. Very high quality software and FREE. You can even drag links right…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Cool Tool\]: Code Library for .Net By Roy Osherove September 30, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 30, 2003; technical details may be outdated. _If you are looking for a way to manage your sample code, snippets, articles, etc. get_ [_Code Library_](http://dotnet.4all.cc/)_.  It is available in SQL Server and access versions. Very high quality software and FREE.  You can even drag links right into the files box and it will download it and store it in the database.  Very cool!_ \[[Kartal Guner](http://weblogs.asp.net/KGuner/posts/29785.aspx)\] How very cool! downloading the SQL version while writing this post... The server seems to be dead though... **Update** - it works now :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 1, 2003 ### [Visual Basic Resource Kit (C# developers are not banned!)](https://osherove.com/blog/2003/10/1/visual-basic-resource-kit-c-developers-are-not-banned.html) - Oct 1, 2003 ### [The Exception Model](https://osherove.com/blog/2003/10/1/the-exception-model.html) - Sep 30, 2003 ### [Responses to agile concerns](https://osherove.com/blog/2003/9/30/responses-to-agile-concerns.html) - Sep 29, 2003 ### [Creating Doc-Centric Apps in WinForms, part 1 of 3](https://osherove.com/blog/2003/9/29/creating-doc-centric-apps-in-winforms-part-1-of-3.html) --- title: "Google Frequent Searchers tool" url: "https://osherove.com/blog/2003/9/30/google-frequent-searchers-tool.md" canonical: "https://osherove.com/blog/2003/9/30/google-frequent-searchers-tool.html" published: "2003-09-30T12:29:00" updated: "2003-09-30T12:29:00" tags: ["Off Topic"] author: "Roy Osherove" description: "“ Do you search with Google a hundred times a day? Do you reach for Google before the phonebook, the dictionary or the newspaper? Do you think, just maybe, you're a Google frequent searcher? Now you can know for sure.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Google Frequent Searchers tool By Roy Osherove September 30, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 30, 2003; technical details may be outdated. “_Do you search with Google a hundred times a day? Do you reach for Google before the phonebook, the dictionary or the newspaper? Do you think, just maybe, you're a Google frequent searcher?_ _Now you can know for sure. The Google search counter is accurate, easy to administer and precisely calibrated for your computing environment. It provides clear and instantaneous results showing exactly how often you use Google. For information on how the search counter works, read on. “_ \[[Google Search counter](http://www.google.com/help/about_spectrum.html)\]\] I like this FAQ: **_4\. How do I win?_** _There is no winning. There is only self-awareness. The search is endless._ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 1, 2003 ### [Congratulations Robert!](https://osherove.com/blog/2003/10/1/congratulations-robert.html) - Oct 1, 2003 ### [Win A Free pass to the PDC!](https://osherove.com/blog/2003/10/1/win-a-free-pass-to-the-pdc.html) - Sep 29, 2003 ### [PDC hype is really really really annoying!](https://osherove.com/blog/2003/9/29/pdc-hype-is-really-really-really-annoying.html) - Sep 26, 2003 ### [Google Code Jam 2003](https://osherove.com/blog/2003/9/26/google-code-jam-2003.html) --- title: "See you at the Israel .Net user group tomorrow!" url: "https://osherove.com/blog/2003/9/30/see-you-at-the-israel-net-user-group-tomorrow.md" canonical: "https://osherove.com/blog/2003/9/30/see-you-at-the-israel-net-user-group-tomorrow.html" published: "2003-09-30T12:22:00" updated: "2003-09-30T12:22:00" tags: [".Net Original"] author: "Roy Osherove" description: "Next Meeting: October 1, 2003 (Wednesday) 17:30 - 18:00 Assembly 18:00 - 18:05 Introduction and miscellaneous 18:05 - 19:15 “Life Without Enterprise Services” Yosi Taguri and Lior Rozner , SPL Software 19:15 - 19:30…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # See you at the Israel .Net user group tomorrow! By Roy Osherove September 30, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 30, 2003; technical details may be outdated. **Next Meeting:  October 1, 2003 (Wednesday)** 17:30 - 18:00   Assembly 18:00 - 18:05   Introduction and miscellaneous 18:05 - 19:15    **“Life Without Enterprise Services”**                        [Yosi Taguri](http://weblogs.asp.net/yosit/) and [](http://weblogs.asp.net/lrozner/)[Lior Rozner](http://weblogs.asp.net/lrozner/ "weblog"), SPL Software19:15 - 19:30    Break 19:30 – 19:45   "Hatzilu !"                         Open session, with questions and answers/ideas from everyone 19:45 - 21:00   **“Use and Benefits of .NET Enterprise Services”**                         [Yosi Taguri](http://weblogs.asp.net/yosit/) and [](http://weblogs.asp.net/lrozner/)[Lior Rozner](http://weblogs.asp.net/lrozner/ "weblog"), SPL Software This month we will cover .NET Enterprise Services – or COM+ in the .NET world. Our speaker duo – Yosi Taguri and [Lior Rozner](http://weblogs.asp.net/lrozner/ "weblog") are .NET consultants with SPL Software.  They will introduce the need and benefits of Enterprise Services by first building and explaining the architecture and problems of an application  without Enterprise Services.  The second part of the evening will outline the solutions to the problems discussed earlier and how Enterprise Services makes our lives easier. In the course of sessions they will discuss about the context and the key features of enterprise services.  As always, we'll have our special "Hatzilu" session at our meeting. So please come prepared to discuss your most frustrating problems (or at least some of them !) and to share some of your own techniques and solutions that you have found useful in your applications. **Please be sure to email your confirmation to participate:  [IVBUG](http://www.renaissance.co.il/ivbug)@renaissance.co.il** ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 6, 2003 ### [When running 'aspnet\_regiis -c' still doesn't fix it...](https://osherove.com/blog/2003/10/6/when-running-aspnet_regiis-c-still-doesnt-fix-it.html) - Oct 5, 2003 ### [Fun with NUnit - clarification](https://osherove.com/blog/2003/10/5/fun-with-nunit-clarification.html) - Sep 30, 2003 ### [Unit Test Your .NET Data Access Layer: Where are the Mocks?](https://osherove.com/blog/2003/9/30/unit-test-your-net-data-access-layer-where-are-the-mocks.html) - Sep 28, 2003 ### [\[New article\]: Creating a generic Site-To-RSS tool (site scraping)](https://osherove.com/blog/2003/9/28/new-article-creating-a-generic-site-to-rss-tool-site-scrapin.html) --- title: "Responses to agile concerns" url: "https://osherove.com/blog/2003/9/30/responses-to-agile-concerns.md" canonical: "https://osherove.com/blog/2003/9/30/responses-to-agile-concerns.html" published: "2003-09-30T11:42:00" updated: "2003-09-30T11:42:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Our very own Steve Eichert recently posted on the skeptics' view of agile . It has taken a while, but I have compiled responses to each of the original concerns, in order. [ Darrell Norton ] Darrell approaches most of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Responses to agile concerns By Roy Osherove September 30, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 30, 2003; technical details may be outdated.

Our very own Steve Eichert recently posted on the skeptics' view of agile.  It has taken a while, but I have compiled responses to each of the original concerns, in order.

\[[Darrell Norton](http://dotnetjunkies.com/WebLog/darrell.norton/posts/1947.aspx)\] Darrell approaches most of the issues here very eloquently. I like the way he thinks. Still, even though I'm “sold” on agile dev methodologies, I'm still not sure how well they are transferable to the customer. I guess I'll have to read more about [Scrum](http://www.controlchaos.com/), not just [XP](http://www.xprogramming.com/). ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Oct 1, 2003 ### [The Exception Model](https://osherove.com/blog/2003/10/1/the-exception-model.html) - Sep 30, 2003 ### [\[Cool Tool\]: Code Library for .Net](https://osherove.com/blog/2003/9/30/cool-tool-code-library-for-net.html) - Sep 29, 2003 ### [Creating Doc-Centric Apps in WinForms, part 1 of 3](https://osherove.com/blog/2003/9/29/creating-doc-centric-apps-in-winforms-part-1-of-3.html) - Sep 29, 2003 ### [Appsettings can Reference an External Config File](https://osherove.com/blog/2003/9/29/appsettings-can-reference-an-external-config-file.html) --- title: "Unit Test Your .NET Data Access Layer: Where are the Mocks?" url: "https://osherove.com/blog/2003/9/30/unit-test-your-net-data-access-layer-where-are-the-mocks.md" canonical: "https://osherove.com/blog/2003/9/30/unit-test-your-net-data-access-layer-where-are-the-mocks.html" published: "2003-09-30T06:47:00" updated: "2003-09-30T06:47:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "I was real excited to see an article up on MSDN that discusses Test Driven development (via Ashutosh Nilkanth ). Not only that, it discusses the issue of testing database related code inside your unit tests - a messy…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit Test Your .NET Data Access Layer: Where are the Mocks? By Roy Osherove September 30, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 30, 2003; technical details may be outdated. I was real excited to see an [article up on MSDN](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/aspnet-testwithnunit.asp) that discusses Test Driven development (via [Ashutosh Nilkanth](http://weblogs.asp.net/ashben/posts/29728.aspx)). Not only that, it discusses the issue of testing database related code inside your unit tests \- a messy subject at best, a horrid nightmare at worst. I was really looking forward into some real insights into this task, but the article came up short IMHO. The author deals with doing database tests in a very simplistic way - simply write code that does things with the database and make sure that is works. Great! But this violates one of the most important principals in TDD- **unit tests should not alter the data**! . They should be completely transparent. In the article, the author has a “real world” problem - since the unit tests always insert and delete code from the database, the IDENTITY columns in the database need to be reset after the tests have finished. Not only that, some mock data needs to be put in there, as well as some mock roles, and then when the tests are over you need to truncate the tables yadda yadda yadda... The overall solution to testing such a thing is inherently flawed. We should **not** test against a live database. Not just because of our “pure” TDD principals, but simply because it really sucks in many other ways - You have many many variables you need to account for for the tests to be accomplished (Don't tell me this is going to run against a production DB??) All the setup and tear down tasks are simply too much work. All the extra configuration, separate settings for test code and production code and all that stuff - it simply isn't worth doing when you have a much more elegant solution - **Mock Objects**. _“A mock object is a "double agent" used to test the behaviour of other objects. First, a mock object acts as a faux implementation of an interface or class that mimics the external behaviour of a true implementation. Second, a mock object observes how other objects interact with its methods and compares actual behaviour with preset expectations. When a discrepancy occurs, a mock object can interrupt the test and report the anomaly. If the discrepancy cannot be noted during the test, a verification method called by the tester ensures that all expectations have been met or failures reported...“_ _“...Mock objects can also simulate states that may be difficult or time-consuming to realise in a runtime environment. A mock object can throw any exception or produce any error condition on demand. For example, using a real database, to see how an object will react to an offline database you would have to actually down the database. Using a mock JDBC connection, you can simulate a dead database in one test and a live database in the next, all in a fraction of a second._ _As products mature, and test suites grow larger, tracing the cause of a failed test can become difficult. A mock implementation can test assertions each time it interacts with production (or "domain") code. The test is then more likely to fail at the right time and generate a useful message._ _We can also build base assertions about how domain objects are suppose to work into our mock objects. These assertions can be applied automatically whenever the mock object is used. This ensures that our base assertions remain true as the application matures._ _We use mock objects because they allow us to quickly create inexpensive, effective tests that are easy to maintain._ “ \[via [MockObjects.Com FAQ](http://www.mockobjects.com/wiki/Faq#head-00dc03e1b43c55cd212e94434039aa63458a2a2e)\] I couldn't have said it better myself. We can either write Mock Objects ourselves into out unit tests, or we can use some of the libraries out there, that ,like NUnit, provide us with a framework that makes building our tests easier. **These** frameworks make building Mock objects easier. There are several frameworks for .Net mock objects. [See the list here](http://www.mockobjects.com/wiki/). BTW, personally, I always used to test a database using mostly the techniques listed in that MSDN article, but lately I've discovered Mock objects and am really looking into changing my ways on this problem. I find it difficult to find real world articles dealing with this issue in .Net (there are some for Java though), but [this article](http://www.codeproject.com/dotnet/tdd_in_dotnet.asp), by [Peter Provost](https://osherove.com/blog/2003/9/30/www.peterprovost.org) seems to be a great start. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Oct 5, 2003 ### [Fun with NUnit - clarification](https://osherove.com/blog/2003/10/5/fun-with-nunit-clarification.html) - Sep 30, 2003 ### [See you at the Israel .Net user group tomorrow!](https://osherove.com/blog/2003/9/30/see-you-at-the-israel-net-user-group-tomorrow.html) - Sep 28, 2003 ### [\[New article\]: Creating a generic Site-To-RSS tool (site scraping)](https://osherove.com/blog/2003/9/28/new-article-creating-a-generic-site-to-rss-tool-site-scrapin.html) - Sep 25, 2003 ### [AmazReplacer - Convert Amazon's URL into your referrer URL automatically](https://osherove.com/blog/2003/9/25/amazreplacer-convert-amazons-url-into-your-referrer-url-auto.html) --- title: "PDC hype is really really really annoying!" url: "https://osherove.com/blog/2003/9/29/pdc-hype-is-really-really-really-annoying.md" canonical: "https://osherove.com/blog/2003/9/29/pdc-hype-is-really-really-really-annoying.html" published: "2003-09-29T22:01:00" updated: "2003-09-29T22:01:00" tags: ["Off Topic"] author: "Roy Osherove" description: "“I am very excited about the upcoming PDC, but I can't reveal to you a lot that I already know until PDC actually starts. “ [ .NET Undocumented ] Well, G-wiz, Thanks for sharing that! You know, I'm getting sick and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # PDC hype is really really really annoying! By Roy Osherove September 29, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 29, 2003; technical details may be outdated. _“I am very excited about the upcoming PDC, but I can't reveal to you a lot that I already know until PDC actually starts. “_ \[[.NET Undocumented](http://wesnerm.blogs.com/net_undocumented/2003/09/excited_about_p.html)\] Well, G-wiz, Thanks for sharing that! You know, I'm getting sick and tired of reading these kinds of posts. Folks, if you don't have anything to share, **don't share it**! Maybe it's because I'm bitter about not going to the PDC myself but the PDC hype is beginning to be a bit annoying (and I'm being mild here). Until the PDC actually starts, Nothing really important will be coming out of the any of the speakers mouths, and as such, I am totally going to disregard any post about the PDC's upcoming sessions, hype or otherwise un-important material until we get to actually hear some useful stuff. Please folks, stop the insanity! It's not enough that I can't go, you keep rubbing it in our faces? Maybe if you contributed something to the discussion I'd understand, but “_I'm going and you're not/ I know and you don't/ I can't tell you but it's cool/the X session is going to be so cool_” posts are just garbage IMHO. So make the noise stop. Please. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Oct 1, 2003 ### [Win A Free pass to the PDC!](https://osherove.com/blog/2003/10/1/win-a-free-pass-to-the-pdc.html) - Sep 30, 2003 ### [Google Frequent Searchers tool](https://osherove.com/blog/2003/9/30/google-frequent-searchers-tool.html) - Sep 26, 2003 ### [Google Code Jam 2003](https://osherove.com/blog/2003/9/26/google-code-jam-2003.html) - Sep 26, 2003 ### [Pay for my PDC?](https://osherove.com/blog/2003/9/26/pay-for-my-pdc.html) --- title: "Creating Doc-Centric Apps in WinForms, part 1 of 3" url: "https://osherove.com/blog/2003/9/29/creating-doc-centric-apps-in-winforms-part-1-of-3.md" canonical: "https://osherove.com/blog/2003/9/29/creating-doc-centric-apps-in-winforms-part-1-of-3.html" published: "2003-09-29T20:16:00" updated: "2003-09-29T20:16:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Chris Chris Sells wrote a 3 -part series titled “ Creating Doc-Centric Apps in WinForms “: This 3-part series really belonged as a chapter in my WinForms book, but after doubling the estimated size of the book (not to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Creating Doc-Centric Apps in WinForms, part 1 of 3 By Roy Osherove September 29, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 29, 2003; technical details may be outdated.

Chris Chris Sells wrote a 3 -part series titled “Creating Doc-Centric Apps in WinForms“:

This 3-part series really belonged as a chapter in my WinForms book, but after doubling the estimated size of the book (not to mention the amount of time it was supposed to take to write it), my publisher was anxious for me to stop writing.

For those folks accustomed to the document management support in MFC or for anyone that needs to build document-centric WinForms application, I think you'll like this series.

Part 1 discusses the basics of document management in SDI WinForms apps.

Part 2 discusses MDI apps and deeper shell integration.

Part 3 wraps most everything up into a reusable component, turning the construction of document management features in .NET largely into some drag-n-drop and some property browser settings. The resultant FileDocument component is available in the latest Genghis sources (although not yet in the release zip) @ http://www.genghisgroup.com

This is something I'm gonna look carefully into. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 30, 2003 ### [\[Cool Tool\]: Code Library for .Net](https://osherove.com/blog/2003/9/30/cool-tool-code-library-for-net.html) - Sep 30, 2003 ### [Responses to agile concerns](https://osherove.com/blog/2003/9/30/responses-to-agile-concerns.html) - Sep 29, 2003 ### [Appsettings can Reference an External Config File](https://osherove.com/blog/2003/9/29/appsettings-can-reference-an-external-config-file.html) - Sep 27, 2003 ### [nsh - A tool to run .NET source files like script files.](https://osherove.com/blog/2003/9/27/nsh-a-tool-to-run-net-source-files-like-script-files.html) --- title: "Appsettings can Reference an External Config File" url: "https://osherove.com/blog/2003/9/29/appsettings-can-reference-an-external-config-file.md" canonical: "https://osherove.com/blog/2003/9/29/appsettings-can-reference-an-external-config-file.html" published: "2003-09-29T15:21:00" updated: "2003-09-29T15:21:00" tags: [".Net Quotations", "Tips & Tricks"] author: "Roy Osherove" description: "I did not know this! “I recently discovered that the app/web.config file can reference an external config file to get some or all of its appsettings. .. “ [ Paul Wilson ] (follow the link to learn how) Excellent tip!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Appsettings can Reference an External Config File By Roy Osherove September 29, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published September 29, 2003; technical details may be outdated. I did not know this! _“I recently discovered that the app/web.config file can reference an external config file to get some or all of its appsettings. .. “_ \[[Paul Wilson](http://weblogs.asp.net/pwilson/posts/5261.aspx)\] (follow the link to learn how) Excellent tip! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 30, 2003 ### [Responses to agile concerns](https://osherove.com/blog/2003/9/30/responses-to-agile-concerns.html) - Sep 29, 2003 ### [Creating Doc-Centric Apps in WinForms, part 1 of 3](https://osherove.com/blog/2003/9/29/creating-doc-centric-apps-in-winforms-part-1-of-3.html) - Sep 27, 2003 ### [nsh - A tool to run .NET source files like script files.](https://osherove.com/blog/2003/9/27/nsh-a-tool-to-run-net-source-files-like-script-files.html) - Sep 26, 2003 ### [Excellent ASP.NET Identity Matrix reference](https://osherove.com/blog/2003/9/26/excellent-aspnet-identity-matrix-reference.html) --- title: "Engineering Notebook: An Extreme Programming Episode" url: "https://osherove.com/blog/2003/9/29/engineering-notebook-an-extreme-programming-episode.md" canonical: "https://osherove.com/blog/2003/9/29/engineering-notebook-an-extreme-programming-episode.html" published: "2003-09-29T06:42:00" updated: "2003-09-29T06:42:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "In order to demonstrate XP (eXtreme Programming) practices, Bob Koss (RSK) and Bob Martin (RCM) will pair program a simple application while you watch like a fly on the wall. We will use test first design and a lot of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Engineering Notebook: An Extreme Programming Episode By Roy Osherove September 29, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 29, 2003; technical details may be outdated. _In order to demonstrate XP (eXtreme Programming) practices, Bob Koss (RSK) and Bob Martin (RCM) will pair program a simple application while you watch like a fly on the wall. We will use test first design and a lot of refactoring to create our application. What follows is a faithful re-enactment of a programming episode that the two Bob's actually did._ \[[Engineering Notebook: An Extreme Programming Episode](http://www.cuj.com/documents/s=7998/cujcexp1902martin/)\] [Read the full story](http://www.cuj.com/documents/s=7998/cujcexp1902martin/) This is very interesting. Nothing like looking at other people to learn new things. ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Sep 30, 2003 ### [Unit Test Your .NET Data Access Layer: Where are the Mocks?](https://osherove.com/blog/2003/9/30/unit-test-your-net-data-access-layer-where-are-the-mocks.html) - Sep 29, 2003 ### [Creating Doc-Centric Apps in WinForms, part 1 of 3](https://osherove.com/blog/2003/9/29/creating-doc-centric-apps-in-winforms-part-1-of-3.html) - Sep 28, 2003 ### [\[New article\]: Creating a generic Site-To-RSS tool (site scraping)](https://osherove.com/blog/2003/9/28/new-article-creating-a-generic-site-to-rss-tool-site-scrapin.html) - Sep 22, 2003 ### [Checklist: Securing ASP.NET](https://osherove.com/blog/2003/9/22/checklist-securing-aspnet.html) --- title: "[New article]: Creating a generic Site-To-RSS tool (site scraping)" url: "https://osherove.com/blog/2003/9/28/new-article-creating-a-generic-site-to-rss-tool-site-scrapin.md" canonical: "https://osherove.com/blog/2003/9/28/new-article-creating-a-generic-site-to-rss-tool-site-scrapin.html" published: "2003-09-28T20:48:00" updated: "2003-09-28T20:48:00" tags: [".Net Original", "Cool Articles", "Cool Tools"] author: "Roy Osherove" description: "It's been a long and very interesting week for me. I know it's weird hearing that the week I start looking for a new job, but it's true. I've been getting lots of interesting offers from people, especially from the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[New article\]: Creating a generic Site-To-RSS tool (site scraping) By Roy Osherove September 28, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 28, 2003; technical details may be outdated. It's been a long and very interesting week for me. I know it's weird hearing that the week I start looking for a new job, but it's true. I've been getting lots of interesting offers from people, especially from the weblog scene. I'm still looking, though, so keep'em coming. If you want me - [tell me](http://weblogs.asp.net/rosherove/posts/6870.aspx)! (hint, Microsoft!) The past week has given me some time to relax and start doing the things I really love - late night coding and discoveries. That's exactly the case with the article I'm presenting here. I was sitting at my machine, browsing [.NetWire](http://www.dotnetwire.com/) when I suddenly thought, “gee I **wish** they had an RSS feed!”. Then I started playing around with some regular expressions using [eXpresso](http://www12.brinkster.com/ultrapico/Expresso.htm), and it dawned on me that it would be real easy to engineer a generic solution for such a problem. So I did. And here's the product of this work; The longest and most detailed article I've ever done (about 5,000 words - personal record). Yeah, length doesn't matter, content does, but there's a lot of content in there. This really is something I plan to pursue further. Thanks to [Mike Gunderloy](http://www.larkware.com/) for helping me out on a nasty bug I couldn't figure out. You saved me, buddy! Anyway, I'll stop rambling and give you the juice: [Creating a generic Site-To-RSS tool](http://weblogs.asp.net/rosherove/posts/29509.aspx) **Summary:** _I’ll show how to use regular expressions to parse a web page’s HTML text into manageable chunks of data. That data will be converted and written as an RSS feed for the whole world to consume. Finally, I’ll show how to create a generic tool that allows you to automatically generate an RSS feed from any given website, given a small group of parameters. At the end of the day we will have a working RSS feed for_ [_www.DotNetWire.com_](http://www.dotnetwire.com/) _._ [Read it](http://weblogs.asp.net/rosherove/posts/29509.aspx). Have fun. Be productive. **Disclaimer:** Site scraping personal use only! They already have an [RSS feed here](http://dotnetwire.com/newsfeed/rss/) (which was mentioned to me only after the article was finished) **P.S** Just realized this is the 200th article on .NetWeblogs! Is there a prize? :) **Update:** Well, ScottW posted that: 1\. They already have a feed (so joke is on me!) 2\. Scraping a site is stealing page views! so do it for personal pleasure only! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 30, 2003 ### [See you at the Israel .Net user group tomorrow!](https://osherove.com/blog/2003/9/30/see-you-at-the-israel-net-user-group-tomorrow.html) - Sep 30, 2003 ### [Unit Test Your .NET Data Access Layer: Where are the Mocks?](https://osherove.com/blog/2003/9/30/unit-test-your-net-data-access-layer-where-are-the-mocks.html) - Sep 25, 2003 ### [AmazReplacer - Convert Amazon's URL into your referrer URL automatically](https://osherove.com/blog/2003/9/25/amazreplacer-convert-amazons-url-into-your-referrer-url-auto.html) - Sep 24, 2003 ### [\[Article\] Fun with Unit Tests – Testing abstract classes](https://osherove.com/blog/2003/9/24/article-fun-with-unit-tests-testing-abstract-classes.html) --- title: "Creating a generic Site-To-RSS tool" url: "https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.md" canonical: "https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html" published: "2003-09-28T20:09:00" updated: "2003-09-28T20:09:00" tags: ["Regular Expressions"] author: "Roy Osherove" description: "Download the source files . Index: Creating a generic Site-To-RSS tool 1 What you’ll need . 1 Summary . 1 Introduction . 2 Planning a site scrape . 2 Regex – a powerful scraping tool 2 Creating our scraping regular…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Creating a generic Site-To-RSS tool By Roy Osherove September 28, 2003 In [Regular Expressions](https://osherove.com/blog/category/regular-expressions) **Historical article** · Originally published September 28, 2003; technical details may be outdated. [Download the source files](http://royo.is-a-geek.com/files/articles/SiteToRss.zip). ##### _Index:_ [Creating a generic Site-To-RSS tool 1](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561831) [What you’ll need. 1](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561832) [Summary. 1](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561833) [Introduction. 2](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561834) [Planning a site scrape. 2](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561835) [Regex – a powerful scraping tool 2](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561836) [Creating our scraping regular expression. 3](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561837) [Getting our link. 4](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561838) [Getting our Title. 4](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561839) [Getting our description. 5](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561840) [Getting our category. 5](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561841) [Getting our publishing date. 5](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561842) [Our final regex. 5](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561843) [Making an RSS feed out of it 5](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561844) [Validating our feed. 7](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561845) [Subscribing to our feed. 8](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561846) [Approaches for a generic tool 8](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561847) [Building the generic SiteToRSS Class. 8](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561848) [Verifying the existence of capture groups in a pattern. 11](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561849) [Retrieving the site using the WebClient class. 12](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561850) [Writing the RSS feed to either a file or an in-memory stream.. 13](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561851) [Working with a _MemoryStream_ and the case for Xml encoding. 14](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561852) [Link prefix. 16](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561853) [Using the generic class with .NetWire. 16](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561854) [What’s in the download?. 17](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html#_Toc52561855) ### What you’ll need ·         regular expression knowledge .consider reading the following articles: o        [Introduction to Regular Expressions](http://weblogs.asp.net/rosherove/story/6863.aspx) o        [Practical Parsing Using Groups](http://weblogs.asp.net/rosherove/story/6946.aspx) ·         [Expresso](http://www.codeproject.com/dotnet/Expresso.asp) – a tool for working with regular expressions ### Summary I’ll show how to use regular expressions to parse a web page’s HTML text into manageable chunks of data. That data will be converted and written as an RSS feed for the whole world to consume. Finally, I’ll show how to create a generic tool that allows you to automatically generate an RSS feed from any given website, given a small group of parameters. At the end of the day we will have a working RSS feed for [www.DotNetWire.com](http://www.dotnetwire.com/) . ### Introduction Ah, the joys of RSS. You can get the data you need, as soon as it’s available, and no nagging browsers or popups along the way. If only all sites had RSS feeds, huh? If there’s one thing that would be really nice it would be the ability to generate an RSS feed from any site I want. For example, [.NetWire](http://www.dotnetwire.com/) is a very interesting site with lots of useful information. However, the folks maintaining this site hadn’t thought about providing it with an RSS feed, which it so sorely needs. So I got to thinking “_Hmm, all the data on the site that’s important to me seems to be arranged in an orderly and predictable manner. I should be able to parse it in a fairly easy manner and make it into an RSS feed_” so I started trying. It worked out pretty well. So well, that I’ve come up with a way to let you do your own site scraping using a generic tool, providing it with only simple rules expressed as a single regular expression. ### Planning a site scrape “_Site scraping_” depicts going over a site’s HTML and “mining” it for any relevant data. All other text is discarded. This is what I intend to show here. For this article, I’ve chosen [.NetWire](http://www.dotnetwire.com/) as the site I’ll be scraping, as the outcome of this will be useful to a great many people. In planning the scraping I’ll ignore the specifics of how I actually get the text to parse and leave that topic for the end of the article. The first thing I did was to open my web browser on the [.NetWire](http://www.dotnetwire.com/) site , right click and select “view source”. Notepad shows me the site as my future parser will see it. This raw text is the juice I’ll need to parse in order to get the data I need. To be honest, it looked quite scary. How on earth am I going to come up with an easy way to parse such an enormous amount of information without losing my head? Scrolling through the text, however, I could start to see patterns in which “important” text, text that was relevant to me, showed up in. There were links inside paragraphs, followed by SPANs and many more attributes. It was a nightmare to parse. Just writing all the rules in searching for a specific link or title for the RSS feed that I wanted to create was a hard enough, but I also had lots more to contend with. I had to find text **inside** found text **inside** found text. It was hardly a job for a few hours on the weekend. So the next thing I decided to check was whether I could do the job with regular expressions. **Note**: If you don’t care to find out how we build the regular expression for scraping the site and would rather just move to where we actually use it to create the RSS feed, feel free to jump directly to “_Making an RSS feed out of it_” section. ### Regex – a powerful scraping tool If you don’t know what regular expressions are, there are loads of articles on the subject. I’ve written a couple myself. They are referenced at the bottom of this article. You’ll need to understand regular expressions before reading how to use them for scraping a site. Regular expressions enable us to easily extract necessary information from text. Easily. It allows us, though complex expressions provided as plain text, to recover strings that match lots and lots of rules provided by us. The data we receive back after running our expressions on a string can be as complex and as detailed as we’d like. We can even divide it into groups of text that was matched, along with group names attached to them, allowing us to easily program against the regular expression(Regex) interface (see .”[Practical Parsing Using Groups](http://weblogs.asp.net/rosherove/story/6946.aspx)” for more info) Since a site is ultimately represented as plain text (be it HTML, JaveScript, or anything else), we can apply regular expressions to **that** text as well, allowing us to search and filter any irrelevant information quickly and easily. ### Creating our scraping regular expression For our RSS feed, we only need several pieces of data retrieved from the HTML for every “post” we indent to create in our RSS feed: ·         **Link**: A link the post reader could click to go to the specific information the In .NetWire it’s the link of the news items ·         **Title**: The title that will appear in the RSS reader the user reading the posts will use. In .NetWire it’s the title of the news item ·         **Description**: The actual text of an individual post. In .NetWire it’s the text of the news item ·         **Publishing date**: The date of the Post. In .NetWire it’s the publish date of the news item. These various items are buried deep inside the HTML of our website. It is now our job to find an regular expression that retrieves those items, and allows us to easily reference them by code. Using out knowledge of “groups” in Regex, we want to have a group in the resulting regex for every item we want to retrieve. We’ll name them “_link_”,”_title_”,”_description_” and ”_pubDate_” respectively. In developing our regex, I decided to use [Expresso](http://www.codeproject.com/dotnet/Expresso.asp), a tool designed to help with regular expression testing. In developing our regex, I’ll rely on this piece of HTML, taken from the HTML of .NetWire: ```

Globalizing and Localizing Windows Applications, Part 1
With the explosive growth of the Internet and rapid globalization of the world's economies, the earth is getting smaller and smaller. The applications that you develop for a local market may soon be used in another country. If the world used a common language, that would make the life of developers much easier. However, reality is far from perfect. The author shows you how to make your applications ready for the global marketplace.
Article. Sep 16, 2003.

```  This HTML represents one news item on .NetWire, and this is the one we’ll need to focus on. Out first item of business today is getting the link of the news item. Why the link first? Because it’s the first item in order of appearance, which makes it the least complicated to find. **Getting our link** Looking at this piece of that that we want to extract the link from : ```

Globalizing and Localizing Windows Applications, Part 1
``` `With the explosive…` We can easily see that each link (and title) is encapsulated between two items: `

  ``` Simply enough, the following regular expression catches all instances of such a link within our HTML file, and presents us with a group name “link” that gives us the actual redirection string of the link: .\*)?("\\s\*target="newwindow") I’ve put “\\s” to prevent from declaring exactly how many spaces or tabs reside between the tag definitions and the actual tag attributes. Also notice that I’ve added the “?” before the “"\\s\*target="newwindow"“ section . This is done so the expression will catch the first instance of this occurrence, and not the last one (or it will match everything up to the last link in the end of the file instead of closing the match on the first match). **Getting our Title** Now that we have the link, we need to get the title for the link. This one is also relatively easy. The title resides between the **Href**’s closing tag (“>”) and the link’s closing tag (“”). More things we need to consider along the way are new lines or spaces, so we take these into our regular expression as well. Here’s the full expression so far. I’ve highlighted the new part: `.*)?("\s*target="newwindow")**(.|\n)*?>(?.*\n?.*)?(</a><br>\s*\n*)**` And we have a group in there as well, called “title” so we can refer to it later in code. Notice that the title is made up of any number of characters, followed by zero or more new lines and more characters. **Getting our description** The description is a block of text that can contain new lines, and is terminated by  a “<br>”: `<p\s*class="clsNormalText"><a\shref="(?<link>.*)?("\s*target="newwindow")(.|\n)*?>(?<title>.*\n?.*)?(</a><br>\s*\n*)``**(?<description>(.|\n)*?)(<br>(.|\n)*?>)**` The end of the expression contains the beginning of the next expression we want to find. **Getting our category** The category of the current news item is usually “Article” or “Product Release”. It always start with the “>” sign and ends with a period (“.”): `<p\s*class="clsNormalText"><a\shref="(?<link>.*)?("\s*target="newwindow")(.|\n)*?>(?<title>.*\n?.*)?(</a><br>\s*\n*)(?<description>(.|\n)*?)(<br>(.|\n**)*?>)(?<category>.*)?\.**` **Getting our publishing date** The news date follows right after the category’s ending period (with zero or more spaces between them ) and finishes with another period, ending with the closing SPAN tag and P tag. `<p\s*class="clsNormalText"><a\shref="(?<link>.*)?("\s*target="newwindow")(.|\n)*?>(?<title>.*\n?.*)?(</a><br>\s*\n*)(?<description>(.|\n)*?)(<br>(.|\n)*?>)(?<category>.*)?\.**\s*(?<pubDate>.*)?(\.</span></p>)**` **Our final regex** So. We end up with a piece of text that we can you to scan .NetWire’s HTML, and retrieve a list of Matches, each of which contains groups named “link”,”title” etc. that we can use in our code. Our next step is to transform this pile of data into useful readable information ### Making an RSS feed out of it The first step in creating a valid RSS feed is to know how the RSS schema looks. There are several RSS standars out there today. I’ve chosen to implement this using the [RSS 2.0](http://backend.userland.com/rss) standard. I won’t bore you with the entire schema definition here, but a standard RSS feed using the RSS 2.0 schema should look l something like this:   <?xml version="1.0" encoding="utf-8" ?> <rss version\="**2.0**" xmlns:blogChannel\="**http://backend.userland.com/blogChannelModule**"> <channel\> </title\> </link\> </description\> </copyright\> </generator\>              <item\>                       </title\>                       </link\> </description\> </category\> </pubDate\>              </item\> </channel\> </rss> The easiest way to write XML with the .Net framework is using the _XMLTextWriter_ class. This class abstracts away the need to explicitly write strings that represent XML, and supports writing directly to a file or an IO.Stream object. That stream can represent either a file stream, a memory stream, a response stream or anything else that derives from System.IO.Stream. Pretty powerful. Here’s a small method that gets all the matches from a site’s HTML, loops through them, and uses an XMLTextWriter to write the XML representing the RSS feed: Public Sub WriteRSSToStream(ByVal txWriter As TextWriter) 'our pattern to parse the page Const REGEX\_PATTERN as string = "<p\\s\*class=""clsNormalText""><a\\shref=""(?<link>.\*)?(""\\s\*target=""newwindow"")(.|\\n)\*?>(?<title>.\*\\n?.\*)?(</a><br>\\s\*\\n\*)(?<description>(.|\\n)\*?)(<br>(.|\\n)\*?>)(?<category>.\*)?\\.\\s\*(?<pubDate>.\*)?(\\.</span>)" 'Get the HTML to parse Dim DownloadedHtml As String = GetHtml() 'Get the matches using our regular expression Dim found As MatchCollection = Regex.Matches(DownloadedHtml, REGEX\_PATTERN) Dim writer As New XmlTextWriter(txWriter) With writer     'make the resulting xml human readable     .Formatting = Formatting.Indented     'write the document header declaring rss version     'and channel info     .WriteStartDocument()     .WriteComment("RSS generated by SiteToRSS generator at " \_ \+ DateTime.Now.ToString("r"))     .WriteStartElement("rss")     .WriteAttributeString("version", "2.0")     .WriteAttributeString("xmlns:blogChannel", \_ "http://backend.userland.com/blogChannelModule")     .WriteStartElement("channel", "")     .WriteElementString("title", RSSFeedName)     .WriteElementString("link", RssFeedLink)     .WriteElementString("description", RssFeedDescription)     .WriteElementString("copyright", RssFeedCopyright)     .WriteElementString("generator", "SiteParser RSS engine 1.0 by Roy Osherove")     'write out the individual posts     For Each aMatch As Match In found         Dim link As String = aMatch.Groups("link").Value         Dim title As String = aMatch.Groups("title").Value         Dim description As String = aMatch.Groups("description").Value       'format the date as RFC1123 date string (“Tue, 10 Dec 2002 22:11:29 GMT”)         Dim pubDate As String = \_ DateTime.Parse(aMatch.Groups("pubDate").Value).ToString("r")         Dim subject As String = aMatch.Groups("category").Value         .WriteStartElement("item")         .WriteElementString("title", title)         .WriteElementString("link", link)       'The description may contain illegal chars       ‘so write it our as CDATA         .WriteStartElement("description")         .WriteCData(description)         .WriteEndElement()         .WriteElementString("category", subject)         .WriteElementString("pubDate", pubDate)         .WriteEndElement()      Next      'close all open tags and finish up      WriteEndDocument()      Flush()      Close() End With End Sub The code to generate an RSS feed is surprisingly simple. After you create this XML file notice that the method accepts a _TextWriter_, which can potentially be a stream writing to a file, a string or lots of other things. We are not bound to any particular target in this implementation. I still haven’t shown how to get the actual HTML from the web, but I’ll explain shortly. **Validating our feed** To validate the feed as valid XML RSS, you can use one of the various free RSS validating sites out there ([www.FeedValidator.org](http://www.feedvalidator.org/)  pops to mind). The site will make sure your feed lived up to the standard it claims to support, and will tell you if you missed anything important. It’s very helpful to test against such a site to make sure you don’t screw up people’s aggregators that will subscribe to your new feed. **Subscribing to our feed** Now that we have a ready made XML file, we can test it using a real aggregator. I used [SharpReader](http://www.sharpreader.com/) and simply registered for a feed located at the path leading to the XML file. In SharpReader, I made sure that there are just the same number of posts as there are news items on the site, and that the titles are correct. Also I made sure that the “subject” column will correctly represent the “category” of each news item. ### Approaches for a generic tool Now that we have the basic mechanics of the thing working, we need to understand the power that comes from such a simple technique. What we’ve seen here demonstrates that given a simple regular expression and text to parse, we are  basically able to parse any site we wanted. It comes to mind that we can build a simple class that receives these parameters which outputs RSS feeds appropriately. Such a class can later be used to build a much more generic web site or web service, to which sites and expressions can be added dynamically, and that returns valid RSS feeds given a site ID. But let’s start small. ### Building the generic _SiteToRSS_ Class Our class should have several public properties representing the various RSS feed properties (description, generator and so on). It should also be able to download a site from the web, and write an RSS feed into a file or just return it as a string. I’ll spare you the entire code of the class, but I’ll refer here to the less trivial methods inside it. Here’s the basic layout: Public Class RSSCreator     Public Sub New(ByVal Url As String, ByVal FileName As String)     End Sub     Public Sub New(ByVal Url As String)     End Sub     Public Property UrlToParse() As String     End Property     ''' <summary>     '''     the file to which the RSS feed will be written to     ''' </summary>     Public Property FileName() As String     End Property     ''' <summary>     '''     returns a string containing the RSS feed xml     ''' </summary>     Public Overloads Function GetRss() As String         Dim ms As New MemoryStream         Dim sr As New StreamWriter(ms, Encoding.UTF8)         'We send "false" to signal the method to not close the stream automatically in the end         'we need to close the stream manually so we can get its length         WriteRSS(sr, False)         Try             ''we need to explicitly state the length             'of the buffer we want             'otherwise we'll get a string as long as ms.capacity             'instead of the actual length of the string inside             Dim iLen As Long = ms.Length             Dim retval As String = \_                 Encoding.UTF8.GetString(ms.GetBuffer(), 0, iLen)             sr.Close()             Return retval         Catch ex As Exception             Return ex.ToString()         End Try     End Function     ''' <summary>     '''     writes the resolved RSS feed to a file     ''' </summary>     Public Overloads Function WriteRSS() As String         Dim writer As New StreamWriter(FileName, False, Encoding.UTF8)         Return WriteRSS(writer, True)     End Function     ''' <summary>     '''     Writes the resolved RSS feed to a text writer     '''     and returns the text that was written (if it was written to a file)     ''' </summary>     Public Overloads Function WriteRSS(ByVal txWriter As TextWriter, ByVal closeAfterFinish As Boolean) As String     End Function     ''' <summary>     '''     writes the beggining of the XML document     ''' </summary>     Private Sub WritePrologue(ByVal writer As XmlTextWriter)         With writer             .WriteStartDocument()             .WriteComment("RSS generated by SiteToRSS generator at " + DateTime.Now.ToString("r"))             .WriteStartElement("rss")             .WriteAttributeString("version", "2.0")             .WriteAttributeString("xmlns:blogChannel", "http://backend.userland.com/blogChannelModule")             .WriteStartElement("channel", "")             .WriteElementString("title", RSSFeedName)             .WriteElementString("link", RssFeedLink)             .WriteElementString("description", RssFeedDescription)             .WriteElementString("copyright", RssFeedCopyright)             .WriteElementString("generator", "SiteParser RSS engine 1.0 by Roy Osherove")         End With     End Sub     ''adds a post to the RSS feed     Private Sub AddRssItem(ByVal writer As XmlTextWriter, ByVal title As String, ByVal link As String, ByVal description As String, ByVal pubDate As String, ByVal subject As String)         writer.WriteStartElement("item")         writer.WriteElementString("title", title)         writer.WriteElementString("link", link)         'write the description as CDATA because         'it might contain invalid chars         writer.WriteStartElement("description")         writer.WriteCData(description)         writer.WriteEndElement()         writer.WriteElementString("category", subject)         writer.WriteElementString("pubDate", pubDate)         writer.WriteEndElement()     End Sub     ''' <summary>     '''     generates a new regular expression     '''     and retrives the GTML from thw web     ''' </summary>     Private Sub ParseHtml()         m\_FoundRegex = New Regex(RegexPattern)         GetHtml()     End Sub     ''' <summary>     '''     retrieves the web page form the web     ''' </summary>     Private Sub GetHtml()     End Sub     Public Property DownloadedHtml() As String     End Property     ''' <summary>     '''     this prefix will be prepended to every news item link     ''' </summary>     Public Property LinksPrefix() As String     End Property     Public Property RegexPattern() As String         Get             Return m\_strRegexPattern         End Get         Set(ByVal Value As String)             'important!             'We need to verify this or we won't have a viable feed             VerifyPatternIsGood(Value)             m\_strRegexPattern = Value         End Set     End Property     ''' <summary>     '''     verify that the required group names appear     '''     in the regular expression passed to the parsing engine     ''' </summary>     Private Sub VerifyPatternIsGood(ByVal pattern As String)     End Sub     ''' <summary>     '''     usees a reges to determine if a certain named group     '''     exists within another regex string.     '''     If not, an exception is thrown.     ''' </summary>     Private Sub VerifyPatternIsGood(ByVal pattern As String, ByVal NeededGroupName As String)     End Sub     Public Property RssFeedDescription() As String     End Property     Public Property RssFeedLink() As String     End Property     Public Property RSSFeedName() As String     End Property     Public Property RssFeedCopyright() As String     End Property End Class The class itself is very simple to use. You instantiate it with a URL and possibly a file name, and then set its properties which will reflect the feed properties. Several actions need special attention: **Verifying the existence of capture groups in a pattern** When **set**ting the “_RegexPattern_” property, the class runs an internal check to verify that the entered regex contains all the group names that are expected in order to successfully write the RSS feed, To this end, it calls the “VerifyPatternIsGood()” method, which internally calls an overload of itself with each required group name. This overload actually runs a match on the expression using its own regular expression, to check that the passed group name is indeed inside the pattern text. Kinda like performing brain surgery on yourself… Here is the code for these two methods.     ''' <summary>     '''     verify that the required group names appear     '''     in the regular expression passed to the parsing engine     ''' </summary>     Private Sub VerifyPatternIsGood(ByVal pattern As String)         Try             VerifyPatternIsGood(pattern, "description")             VerifyPatternIsGood(pattern, "title")             VerifyPatternIsGood(pattern, "link")             VerifyPatternIsGood(pattern, "category")             VerifyPatternIsGood(pattern, "pubDate")         Catch ex As Exception             Throw ex         End Try     End Sub     ''' <summary>     '''     usees a reges to determine if a certain named group     '''     exists within another regex string.     '''     If not, an exception is thrown.     ''' </summary>     Private Sub VerifyPatternIsGood(ByVal pattern As String, ByVal NeededGroupName As String)         Dim VerifyRegex As String = "\\?<" & NeededGroupName & ">"         If Not Regex.Match(pattern, VerifyRegex).Success Then             Throw New ArgumentException(NeededGroupName & " group missing form pattern")         End If     End Sub **Retrieving the site using the WebClient class** The class is responsible of retrieving the site’s HTML content from the web. To that end, it uses the _WebClient_ class, which allows us to, oh so easily, download web pages, download or upload files, post requests and lots of other cool stuff. The method that does this work is the GetHtml() method:     ''' <summary>     '''     retrieves the web page form the web     ''' </summary>     Private Sub GetHtml()         Try             Dim req As New WebClient             Dim reader As New StreamReader(req.OpenRead(UrlToParse))             Me.DownloadedHtml = reader.ReadToEnd()             reader.Close()             req.Dispose()         Catch oE As System.Exception         End Try     End Sub **Writing the RSS feed to either a file or an in-memory stream** We want our class to have the ability to either write the xml it creates to a file or to a string which will be returned back. Why would we want to build an In memory string rather than a file? If we were to create an _.aspx_ page that returns that XML, it is much easier to build a string in memory than to write that xml to a file.  That’s because writing to a file from ASP.NET not only requires more security permissions, but you also have to deal with situations where the file might be accessed concurrently from multiple sessions, A task which is more of a hassle than a blessing for our needs. So a web client will want to call the GetRss() method, which would return a string, and a win forms client might want to write to a file, to which end it could call the  WriteRss() method. Internally though, both methods refer to the same internal implementation, an overloaded WriteRss() method which accepts a TextWriter object to which it will write out the XML. The difference is that the GetRss() method will call this method with a textWriter that sits on top of a _MemoryStream_ object, while the GetRss() method will call it with a TextWriter that sits on top of a StreamWriter to a direct file. Here’s the code for the generic WriteRssMethod:     ''' <summary>     '''     Writes the resolved RSS feed to a text writer     '''     and returns the text that was written (if it was written to a file)     ''' </summary>     Public Overloads Function WriteRSS(ByVal txWriter As TextWriter, ByVal closeAfterFinish As Boolean) As String         ParseHtml()         Dim found As MatchCollection = m\_FoundRegex.Matches(DownloadedHtml)         Dim tr As New StringWriter         Dim writer As New XmlTextWriter(txWriter)         writer.Formatting = Formatting.Indented         WritePrologue(writer)         'write the individual news items         For Each aMatch As Match In found             Dim link As String = LinksPrefix & aMatch.Groups("link").Value             Dim title As String = aMatch.Groups("title").Value             Dim description As String = aMatch.Groups("description").Value             Dim pubDate As String = DateTime.Parse(aMatch.Groups("pubDate").Value).ToString("r")             Dim subject As String = aMatch.Groups("category").Value             AddRssItem(writer, title.Trim(), link, description, pubDate, subject)         Next         ''finish all tags         writer.WriteEndDocument()         writer.Flush()         Dim strResult As String = String.Empty         If closeAfterFinish Then             writer.Close()             'return the result that was written             'if this was written to a file             Try                 Dim sr As StreamReader = File.OpenText(FileName)                 strResult = sr.ReadToEnd()                 sr.Close()             Catch ex As Exception             End Try         End If         Return strResult     End Function One thing of note in this method is that it has a flag that tells it whether it should close the text writer after finishing writing to it. This implementation details is important because when writing to a memory stream, the Calling method will want to keep the stream open after the call, so that it can then retrieve the text inside that stream and return it as the result. For the other function, which writes to a file, this is of no importance, so the flag is passed as **true**. The WriteRss() method reads the xml file that was written and returns that result string. **Working with a MemoryStream and the case for Xml encoding** Writing the XML directly to a string in-memory proved to be rather tricky. The XmlTextWriter has 3 contructors: ·         XmlTextWriter(fileName as String,encoding as System.Text.Encoding) ·         XmlTextWriter(w as System.IO.Stream, encoding as System.Text.Encoding) ·         XmlTextWriter(w as System.IO.TextWriter) In our case, it is very important that we are able to specify the encoding manually. I’ll explain why. When I first approached writing to an in-memory string using the XmlTextWriter, my initial instinct guided me towards creating a StringWriter object, to send to the ctor #3 on our list. So , a call would look something like this: Dim sb as new StringBuilder() Dim writer as XmlTextWriter  = new XmlTextWriter(new StringWriter(sb)) ‘write the xml using the writer .. Writer.Close() Return sb.ToString() There’s a major problem with this code, although it seems to work perfectly. The problem is that internally, all strings are represents as UTF-16 encoded strings. As a result, the StringBuilder object, and the StringWriter object output XML that contains an encoding tag with an encoding of type UTF-16. This is a problem, because if we want our xml string to be parse-able  using our RSS readers, this XML needs to be encoded as a UTF-8 string. Using the constructor as shown above does not give us the option, not even after the declaration, to change the encoding with which the XML will be encoded as. So, to solve this we are left with the other two constructors, that **do** allow us to specify the encoding of the output. The first ctor, that accepts a file name needs no explanation, but the second one is the one we use to write to an in-memory string, and is the one that caused the most problems. Here’s the “GetRss()” method again: Public Overloads Function GetRss() As String         Dim ms As New MemoryStream         Dim sr As New StreamWriter(ms, Encoding.UTF8)         'We send "false" to signal the method to not close the stream automatically in the end         'we need to close the stream manually so we can get its length         WriteRSS(sr, False)         Try             ''we need to explicitly state the length             'of the buffer we want             'otherwise we'll get a string as long as ms.capacity             'instead of the actual length of the string inside             Dim iLen As Long = ms.Length             Dim retval As String = \_                 Encoding.UTF8.GetString(ms.GetBuffer(), 0, iLen)             sr.Close()             Return retval         Catch ex As Exception             Return ex.ToString()         End Try     End Function Because we can’t use a StringWriter object to send to WriteRss(), we’re left with the option of sending in a StreamWriter. We need to initialize it with a stream that is written in memory – _MemoryStream_. The first part of the method is rather easy – we initialize the StreamWriter and send it over to WritreRss. The trouble begins after that. How do you retrieve the text inside a MemoryStream? Well, conveniently enough, it has a GetBuffer() method, which returns the byte array of the stream’s contents. Easy enough, we now just need to transform this byte array into a string encoded as UTF-8. To that end I used the _System.Text.Encoding.UTF8.GetEncoding(byte())_ method which does exactly that. _System.Text.Encoding.UTF8.GetEncoding()_ has two overloads: ·         _System.Text.Encoding.UTF8.GetEncoding(array as byte())_ ·         _System.Text.Encoding.UTF8.GetEncoding(array as byte(),index as Integer, count as Integer)_ Why am I using the more complex version then? It seems perfectly reasonable to call the first one, right? Wrong. When I used the first version of the method, my resulting XML string contained garbage at the end of it. It contained mostly of garbaled and mangles spaced which wreaked havoc in IE trying to view it, but it seems to work fine using my aggregator. However, the feed failed to validate using [www.FeedValidator.org](http://www.feedvalidator.org/) . It said something about a “Missing token” and pointed at the last line of the XML. I could not figure it and was literally stuck. In fact, I didn’t even think about trying to use the other overload of this method, until I got a little help from [Mike Gunderloy](http://www.larkware.com/). The problem was that the GetBuffer() method of the stream returns the contents of the stream in full (up to the length of the _Stream.Capacity_ property). Since streams in the CLR use a paging mechanism, the capacity of a stream is almost always larger than the current contents of the stream, so the resulting output is contents + garbage. Using the overloaded method, I could get the exact contents of the stream by specifying the length of the stream as the length of the output I want to extract from it. The length property contains the actual length of the data. This is also why I had to signal my _WriteRss()_ implementation to not close the stream after finishing the writing. Had I closed the stream, I could not have gotten the length of the current stream, which I needed to retrieve the results. **Link prefix** One property in the class needs to be explained. LinksPrefix will contain the prefix prepended to each news item link that will be discovered. Notice when harvesting the HTML, that all links in the site are not “full” links, but usually “partial” links, pointing to some place in the same site. In cases such as these (and .netWire is) we want to specify the LinksPrefix as [Http://www.DotNetWire.com](http://www.dotnetwire.com/) , to make the links of the news items “full” again. **RFC date formats** [RSS 2.0](http://backend.userland.com/rss) requires a publish date formatted as an [RFC822](http://www.faqs.org/rfcs/rfc822.html) date. We are using the [RFC1123](http://www.faqs.org/rfcs/rfc1123.html) format which seems to return essentially the same result. ### Using the generic class with .NetWire Ah, it’s ready. Let’s use it! Here’s a simple code that can now use the class to parse .NetWire and return an XML RSS feed from it:   Dim rss As RSSCreator.RSSCreator = \_ New RSSCreator.RSSCreator("http://www.dotnetwire.com")             With rss                 .LinksPrefix = rss.UrlToParse                 .RegexPattern = "<p\\s\*class=""clsNormalText""><a\\shref=""(?<link>.\*)?(""\\s\*target=""newwindow"")(.|\\n)\*?>(?<title>.\*\\n?.\*)?(</a><br>\\s\*\\n\*)(?<description>(.|\\n)\*?)(<br>(.|\\n)\*?>)(?<category>.\*)?\\.\\s\*(?<pubDate>.\*)?(\\.</span>)"                 .RSSFeedName = "The unofficial .NetWire RSS feed"                 .RssFeedLink = "http://www.DotNetWire.com"                 .RssFeedDescription = "A basic feed that parses the .NetWire site"                 .RssFeedCopyright = "Copyright 2003 Roy Osherove"                 return .GetRss()             End With ### What’s in the download? The download contains several projects: ·         **RssCreator** : A library with the source for the RSSCreator class ·         **MakeRss**: A simple ASP.Net project that retrieves a feed for the .NetWire site ·         **SiteToRss**: a simple winform application that represents a simple utility to test various sites with regular expressions [Download the source files](http://royo.is-a-geek.com/files/articles/SiteToRss.zip). ## More in Regular Expressions [All posts in Regular Expressions](https://osherove.com/blog/category/regular-expressions) - Oct 9, 2006 ### [Regulazy 1.0.3 Released](https://osherove.com/blog/2006/10/9/regulazy-103-released.html) - Sep 10, 2006 ### [Regulazy 1.02 is out and about](https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.html) - May 12, 2003 ### [Practical Parsing Using Groups in Regular Expressions](https://osherove.com/blog/2003/5/12/practical-parsing-using-groups-in-regular-expressions.html) - May 11, 2003 ### [Introduction To Regular Expressions](https://osherove.com/blog/2003/5/11/introduction-to-regular-expressions.html) --- title: "nsh - A tool to run .NET source files like script files." url: "https://osherove.com/blog/2003/9/27/nsh-a-tool-to-run-net-source-files-like-script-files.md" canonical: "https://osherove.com/blog/2003/9/27/nsh-a-tool-to-run-net-source-files-like-script-files.html" published: "2003-09-27T21:42:00" updated: "2003-09-27T21:42:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "nsh - A tool to run .NET source files like script files. [ Larkware ] From the site: .NET currently lacks a freely-available scripting language (like WSH VBScript / JScript). nsh allows you to compile and run a .NET…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # nsh - A tool to run .NET source files like script files. By Roy Osherove September 27, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 27, 2003; technical details may be outdated. [nsh](http://www.codeproject.com/useritems/nscript.asp) - A tool to run .NET source files like script files. \[[Larkware](http://www.larkware.com/)\] From the site: _.NET currently lacks a freely-available scripting language (like WSH VBScript / JScript). nsh allows you to compile and run a .NET sourcefile with nearly the same convenience as running a WSH script, and better enables using .NET for scripting tasks. It's especially useful for running .NET scripts on servers that may not have VS.NET installed. An alternative to the NAnt build tool for simple ad-hoc needs._ _There are other similar tools (see Related Articles below)--this one primarily differs in being implemented in vbscript / wsh, since one primary goal was to have an any-server-friendly "xcopy deploy" (no setup or registrations). It supports optional .config and .configscc files (the latter allows specifying that the latest be pulled from sourcesafe each time before compiled and run). The standard debug .pdb file is always generated, so any .NET debugger may be used if desired with the generated .exe._ I like it. I can see some very powerful things done with this, and it's pretty darn simple to use. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 29, 2003 ### [Creating Doc-Centric Apps in WinForms, part 1 of 3](https://osherove.com/blog/2003/9/29/creating-doc-centric-apps-in-winforms-part-1-of-3.html) - Sep 29, 2003 ### [Appsettings can Reference an External Config File](https://osherove.com/blog/2003/9/29/appsettings-can-reference-an-external-config-file.html) - Sep 26, 2003 ### [Excellent ASP.NET Identity Matrix reference](https://osherove.com/blog/2003/9/26/excellent-aspnet-identity-matrix-reference.html) - Sep 26, 2003 ### [Testing nirvana](https://osherove.com/blog/2003/9/26/testing-nirvana.html) --- title: "Excellent ASP.NET Identity Matrix reference" url: "https://osherove.com/blog/2003/9/26/excellent-aspnet-identity-matrix-reference.md" canonical: "https://osherove.com/blog/2003/9/26/excellent-aspnet-identity-matrix-reference.html" published: "2003-09-26T21:28:00" updated: "2003-09-26T21:28:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "I remember reading about this somewhere, and came across this great reference! Hurray for the MS patterns and practices team! Summary: This document provides tables that illustrate, for a range of IIS authentication…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Excellent ASP.NET Identity Matrix reference By Roy Osherove September 26, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 26, 2003; technical details may be outdated. I remember reading about this somewhere, and came across this great reference! Hurray for the MS patterns and practices team! **Summary:** [This document](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetAP05.asp) provides tables that illustrate, for a range of IIS authentication settings, the resultant identity that is obtained from each of the variables that maintain an IPrincipal and/or IIdentity object. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 29, 2003 ### [Appsettings can Reference an External Config File](https://osherove.com/blog/2003/9/29/appsettings-can-reference-an-external-config-file.html) - Sep 27, 2003 ### [nsh - A tool to run .NET source files like script files.](https://osherove.com/blog/2003/9/27/nsh-a-tool-to-run-net-source-files-like-script-files.html) - Sep 26, 2003 ### [Testing nirvana](https://osherove.com/blog/2003/9/26/testing-nirvana.html) - Sep 23, 2003 ### [Getting the list of installed programs on the local machine](https://osherove.com/blog/2003/9/23/getting-the-list-of-installed-programs-on-the-local-machine.html) --- title: "Google Code Jam 2003" url: "https://osherove.com/blog/2003/9/26/google-code-jam-2003.md" canonical: "https://osherove.com/blog/2003/9/26/google-code-jam-2003.html" published: "2003-09-26T20:21:00" updated: "2003-09-26T20:21:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Google, which previously sponsored the 2002 Google Programming Contest , 2003 Google US Puzzle Championship , CodeCon 2003 is now sponsoring something new: Google Code Jam 2003 Do you have exceptional programming…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Google Code Jam 2003 By Roy Osherove September 26, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 26, 2003; technical details may be outdated. _Google, which previously sponsored the_ [_2002 Google Programming Contest_](http://www.google.com/programming-contest/)_,_ [_2003 Google US Puzzle Championship_](http://www.google.com/puzzles/)_,_ [_CodeCon 2003_](http://codecon.info/2003/sponsors.html) _is now sponsoring something new:_ [_Google Code Jam 2003_](http://www.topcoder.com/pl/?&module=Static&d1=google&d2=google_overview) _Do you have exceptional programming skills? Can you make computers perform like silicon puppets with just a few well-expressed commands? Are you at ease when faced with a hard stop and a group of peers evaluating every line of your code? Here’s your opportunity to display the grace of the true professional in a reward-rich environment._ _The basic idea seems to be that you're given a bunch of programming puzzles, and asked to solve them quickly and completely, and then you can try to throw edge cases to crash your opponent's code. (Sounds like the_ [_ICFP Programming Contest_](http://www.dtek.chalmers.se/groups/icfpcontest/)_.)_ _Code can be in Java, C++, C# or VB.NET. Winners get T-Shirts, cash, and a trip to Google. Registration opens October 1._ \[[Google weblog](http://google.blogspace.com/archives/001039)\] ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 30, 2003 ### [Google Frequent Searchers tool](https://osherove.com/blog/2003/9/30/google-frequent-searchers-tool.html) - Sep 29, 2003 ### [PDC hype is really really really annoying!](https://osherove.com/blog/2003/9/29/pdc-hype-is-really-really-really-annoying.html) - Sep 26, 2003 ### [Pay for my PDC?](https://osherove.com/blog/2003/9/26/pay-for-my-pdc.html) - Sep 25, 2003 ### [Nothing like the smell of new books!](https://osherove.com/blog/2003/9/25/nothing-like-the-smell-of-new-books.html) --- title: "Pay for my PDC?" url: "https://osherove.com/blog/2003/9/26/pay-for-my-pdc.md" canonical: "https://osherove.com/blog/2003/9/26/pay-for-my-pdc.html" published: "2003-09-26T18:42:00" updated: "2003-09-26T18:42:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "“ D ave Bettin , one of the best developers I've ever worked with really wants to go to the PDC - he's asking for some help ...” “...If you can, please donate a few bucks to his PDC fund [via paypal]...” [ Philip Rieck…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Pay for my PDC? By Roy Osherove September 26, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 26, 2003; technical details may be outdated. [“_D__ave Bettin_](http://www.davebettin.com/me)_, one of the best developers I've ever worked with really wants to go to the PDC -_ [_he's asking for some help_](http://davebettin.com/me/posts/159.aspx)_...” “...If you can,_ [_please donate a few bucks to his PDC fund_](https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=[email removed]&item_name=Dave%27s%20PDC%20Fund&no_note=1%C2%A4cy_code=USD&tax=0&lc=US)_\[via paypal\]...”_ \[[Philip Rieck](http://weblogs.asp.net/prieck/posts/29317.aspx)\] OK. It's not like I hadn't thought about this idea before, but asking for PDC donations just sounded to “out there” for me. Hell, I \*really\* want go to the PDC too. Should we start a [www.PDCBeggers.com](http://www.pdcbeggers.com/) ? I admire the spirit of that guy, and I really “get” him. But I think it's practically impossible, unless some rich guy decided he wants to pay for someone's trip just out of the blue, which would inevitably start a “Begging for shows” phenomena, wouldn't you think? It's so catchy, I really gave asking for money a second thought just now. Hmm.. **Just out of curiosity**, If I asked for PayPal donations, How much would you have contributed? Keep in mind the total sum should be up there around the 4000$-5000$. Is that likely? I thought so. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 2, 2003 ### [Two good blogs: Hiring Technical People, Managing Product Development](https://osherove.com/blog/2003/10/2/two-good-blogs-hiring-technical-people-managing-product-deve.html) - Oct 1, 2003 ### [Congratulations Robert!](https://osherove.com/blog/2003/10/1/congratulations-robert.html) - Sep 22, 2003 ### [Nice blog](https://osherove.com/blog/2003/9/22/nice-blog.html) - Sep 18, 2003 ### [RegexLib RSS now even cooler](https://osherove.com/blog/2003/9/18/regexlib-rss-now-even-cooler.html) --- title: "Testing nirvana" url: "https://osherove.com/blog/2003/9/26/testing-nirvana.md" canonical: "https://osherove.com/blog/2003/9/26/testing-nirvana.html" published: "2003-09-26T06:13:00" updated: "2003-09-26T06:13:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Josh Ledgard Has been writing some very interesting posts. He's a testing team at MS and as such, writes posts about testing with an understating and knowledge that only someone who did testing on products such as…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Testing nirvana By Roy Osherove September 26, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 26, 2003; technical details may be outdated. [Josh Ledgard](http://blogs.gotdotnet.com/jledgard/) Has been writing some very interesting posts. He's a testing team at MS and as such, writes posts about testing with an understating and knowledge that only someone who did testing on products such as Office and Windows can have. [His latest post](http://blogs.gotdotnet.com/jledgard/permalink.aspx/9bdff4bb-ae75-430f-8c46-a3b62458b930) talks about a [cool book he read about testing,](https://www.amazon.com/exec/obidos/ASIN/0684852861/iserializable-20) and some of the basic stuff you need to have in order to be a successful tester. Subscribed! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 27, 2003 ### [nsh - A tool to run .NET source files like script files.](https://osherove.com/blog/2003/9/27/nsh-a-tool-to-run-net-source-files-like-script-files.html) - Sep 26, 2003 ### [Excellent ASP.NET Identity Matrix reference](https://osherove.com/blog/2003/9/26/excellent-aspnet-identity-matrix-reference.html) - Sep 23, 2003 ### [Getting the list of installed programs on the local machine](https://osherove.com/blog/2003/9/23/getting-the-list-of-installed-programs-on-the-local-machine.html) - Sep 23, 2003 ### [New Server Controls Provided by the ASP.NET Web Matrix](https://osherove.com/blog/2003/9/23/new-server-controls-provided-by-the-aspnet-web-matrix.html) --- title: "Expresso up to version 1.2 already" url: "https://osherove.com/blog/2003/9/25/expresso-up-to-version-12-already.md" canonical: "https://osherove.com/blog/2003/9/25/expresso-up-to-version-12-already.html" published: "2003-09-25T11:07:00" updated: "2003-09-25T11:07:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Looks like Expresso , my tool of choice for working with regular expressions, is already on version 1.2 and I missed it! Hurry up and download it . From what I can see they added : Saving your own library of regular…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Expresso up to version 1.2 already By Roy Osherove September 25, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 25, 2003; technical details may be outdated. Looks like [Expresso](http://www12.brinkster.com/ultrapico/Expresso.htm), my tool of choice for working with regular expressions, is already on [version 1.2](http://www12.brinkster.com/ultrapico/Expresso.htm) and I missed it! Hurry up and [download it](http://www12.brinkster.com/ultrapico/ExpressoDownload.htm). From what I can see they added : - Saving your own library of regular expressions divided into categories (add as much as you want) - Tools - > Show C#/Vb.Net code displays the code segment required to run this regex using C# or VB.Net - “Compile to assembly” option giving you the ability to compile this regex into a .net assembly (you decide the name of the class to hold the functionality inside the assembly - “Save code to a file“ lets you do just that. Excellent! The thing I love most about this tool is that it has a “regex builder” inside it, from which I've learned 90% of what I know in this language. How cool is that? It's the simplest things that seem to carry the most impact. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Sep 28, 2003 ### [\[New article\]: Creating a generic Site-To-RSS tool (site scraping)](https://osherove.com/blog/2003/9/28/new-article-creating-a-generic-site-to-rss-tool-site-scrapin.html) - Sep 27, 2003 ### [nsh - A tool to run .NET source files like script files.](https://osherove.com/blog/2003/9/27/nsh-a-tool-to-run-net-source-files-like-script-files.html) - Sep 22, 2003 ### [NAnt-addin: another coolness in the making?](https://osherove.com/blog/2003/9/22/nant-addin-another-coolness-in-the-making.html) - Sep 18, 2003 ### [XmlUnit](https://osherove.com/blog/2003/9/18/xmlunit.html) --- title: "AmazReplacer - Convert Amazon's URL into your referrer URL automatically" url: "https://osherove.com/blog/2003/9/25/amazreplacer-convert-amazons-url-into-your-referrer-url-auto.md" canonical: "https://osherove.com/blog/2003/9/25/amazreplacer-convert-amazons-url-into-your-referrer-url-auto.html" published: "2003-09-25T07:59:00" updated: "2003-09-25T07:59:00" tags: [".Net Original", "Cool sites"] author: "Roy Osherove" description: "I've created a small utility app that does that automatically takes whatever URL is in the clipboard , reformats it to be an Amazon referral URL and puts the result in the clipboard. Very easy and fast. You can download…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # AmazReplacer - Convert Amazon's URL into your referrer URL automatically By Roy Osherove September 25, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published September 25, 2003; technical details may be outdated. I've created a small utility app that does that automatically takes whatever URL is in the clipboard , reformats it to be an [Amazon](https://osherove.com/blog/2003/9/25/www.amazon.com) referral URL and puts the result in the clipboard. Very easy and fast. You can [download the utility(with source) here](http://royo.is-a-geek.com/files/amazreplacer.zip), but code is pretty simple to do and provides a simple example of using regular expressions and the clipboard object. Here's the gist of it: //happens on startup //so all is automatic. You just open the utility and BAM //you have the good URL in your clipboard. //Just press ESC and you're done private void TryToAutoReplace() {       string current;       try       {             //get the current URL from the clipboard             //and put it in a text bo             current = (String)Clipboard.GetDataObject().GetData(typeof(string));       }       catch(Exception e){return;}       txtBefore.Text\= current;       //replace the text in that textbox to the URL       ReplaceAmazon(); } private void ReplaceAmazon() { //find the Book ID from the URL //could start with either 'ASIN/\[ID\]/' or 'tg/detail/-/\[ID\]/' const string  pattern = @".\*(ASIN|tg/detail/-)/(?<book>.\\d\*)/.\*"; Match book = Regex.Match(txtBefore.Text,pattern); if (book.Success) {       //add you referrer ID to the end of the 'good' URL       // thanks to [Hugh Brown](http://www.iwebthereforeiam.com/) for showing the short version of the url  txtAfter.Text =@"http://www.amazon.com/o/ASIN/" + book.Groups\["book"\].Value + @"/iserializable-20";       //make the result available via "paste"       Clipboard.SetDataObject(txtAfter.Text ,true);       } } ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 30, 2003 ### [Unit Test Your .NET Data Access Layer: Where are the Mocks?](https://osherove.com/blog/2003/9/30/unit-test-your-net-data-access-layer-where-are-the-mocks.html) - Sep 28, 2003 ### [\[New article\]: Creating a generic Site-To-RSS tool (site scraping)](https://osherove.com/blog/2003/9/28/new-article-creating-a-generic-site-to-rss-tool-site-scrapin.html) - Sep 24, 2003 ### [\[Article\] Fun with Unit Tests – Testing abstract classes](https://osherove.com/blog/2003/9/24/article-fun-with-unit-tests-testing-abstract-classes.html) - Sep 23, 2003 ### [I'm available](https://osherove.com/blog/2003/9/23/im-available.html) --- title: "Nothing like the smell of new books!" url: "https://osherove.com/blog/2003/9/25/nothing-like-the-smell-of-new-books.md" canonical: "https://osherove.com/blog/2003/9/25/nothing-like-the-smell-of-new-books.html" published: "2003-09-25T07:40:00" updated: "2003-09-25T07:40:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Just ordered 3 books from Amazon : How Would You Move Mount Fuji? Microsoft's Cult of the Puzzle - How the World's Smartest Company Selects the Most Creative Thinkers COM+ and the Battle for the Middle Tier Test Driven…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nothing like the smell of new books! By Roy Osherove September 25, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 25, 2003; technical details may be outdated. Just ordered 3 books from [Amazon](https://osherove.com/blog/2003/9/25/www.amazon.com): - [How Would You Move Mount Fuji? Microsoft's Cult of the Puzzle - How the World's Smartest Company Selects the Most Creative Thinkers](https://www.amazon.com/exec/obidos/ASIN/0316919160/iserializable-20) - [COM+ and the Battle for the Middle Tier](https://www.amazon.com/exec/obidos/ASIN/0471317179/iserializable-20) - [Test Driven Development: By Example](https://www.amazon.com/exec/obidos/ASIN/0321146530/iserializable-20) Thanks to my [Amazon](https://osherove.com/blog/2003/9/25/www.amazon.com) referring program, you just helped me reduce this cost to half of the original cost of the purchase. Thanks everyone :) I promise to share what I learn from these books. Also, I'm currently using Safari Books On line to read 3 more books: - [COM and .NET Component Services](https://www.amazon.com/exec/obidos/ASIN/0596001037/iserializable-20) - [Essential .NET, Volume 1: The Common Language Runtime](https://www.amazon.com/exec/obidos/ASIN/0201734117/iserializable-20) - [Refactoring: Improving the Design of Existing Code](https://www.amazon.com/exec/obidos/ASIN/0201485672/iserializable-20) Safari is great. It's much easier and cheaper this way. The only problem I have with this service is that they don't have all the books I'd want, so I'm forced to buy some of them off of [Amazon](https://osherove.com/blog/2003/9/25/www.amazon.com). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 26, 2003 ### [Google Code Jam 2003](https://osherove.com/blog/2003/9/26/google-code-jam-2003.html) - Sep 26, 2003 ### [Pay for my PDC?](https://osherove.com/blog/2003/9/26/pay-for-my-pdc.html) - Sep 24, 2003 ### [Some stuff](https://osherove.com/blog/2003/9/24/some-stuff.html) - Sep 24, 2003 ### [The perfect birthday gift](https://osherove.com/blog/2003/9/24/the-perfect-birthday-gift.html) --- title: "[Article] Fun with Unit Tests – Testing abstract classes" url: "https://osherove.com/blog/2003/9/24/article-fun-with-unit-tests-testing-abstract-classes.md" canonical: "https://osherove.com/blog/2003/9/24/article-fun-with-unit-tests-testing-abstract-classes.html" published: "2003-09-24T21:21:00" updated: "2003-09-24T21:21:00" tags: [".Net Original"] author: "Roy Osherove" description: "Just posted my latest article: Fun with Unit Tests – Testing abstract classes Summary In this article I’ll be looking into a trickier part of unit testing– testing the functionality of classes who cannot be instantiated…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Article\] Fun with Unit Tests – Testing abstract classes By Roy Osherove September 24, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 24, 2003; technical details may be outdated. Just posted my latest article: [Fun with Unit Tests – Testing abstract classes](https://osherove.com/rosherove/posts/29038.aspx) ###### Summary _In this article I’ll be looking into a trickier part of unit testing– testing the functionality of classes who cannot be instantiated on their own, abstract classes._ _I’ll show how to overcome this obstacle using “Mock Objects”, a technique which has a whole methodology behind it all on its own. We’ll see how mock objects provide us with abilities that let us query what’s happening inside our derived class._   [Read it](http://weblogs.asp.net/rosherove/posts/29038.aspx). Have fun. Be productive. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 28, 2003 ### [\[New article\]: Creating a generic Site-To-RSS tool (site scraping)](https://osherove.com/blog/2003/9/28/new-article-creating-a-generic-site-to-rss-tool-site-scrapin.html) - Sep 25, 2003 ### [AmazReplacer - Convert Amazon's URL into your referrer URL automatically](https://osherove.com/blog/2003/9/25/amazreplacer-convert-amazons-url-into-your-referrer-url-auto.html) - Sep 23, 2003 ### [I'm available](https://osherove.com/blog/2003/9/23/im-available.html) - Sep 21, 2003 ### [\[Article\] Introduction to Test-driven development with NUnit and the NUnit-Add-in](https://osherove.com/blog/2003/9/21/article-introduction-to-test-driven-development-with-nunit-a.html) --- title: "Fun with Unit Tests – Testing abstract classes" url: "https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.md" canonical: "https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.html" published: "2003-09-24T21:05:00" updated: "2003-09-24T21:05:00" tags: ["Unit Testing"] author: "Roy Osherove" description: "Download the source for this article: Direct link Summary In this article I’ll be looking into a trickier part of unit testing– testing the functionality of classes who cannot be instantiated on their own, abstract…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Fun with Unit Tests – Testing abstract classes By Roy Osherove September 24, 2003 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 24, 2003; technical details may be outdated. _Download the source for this article:_ [_Direct link_](http://royo.is-a-geek.com/files/articles/UnitTestingfun1.zip) ###### Summary _In this article I’ll be looking into a trickier part of unit testing– testing the functionality of classes who cannot be instantiated on their own, abstract classes._ _I’ll show how to overcome this obstacle using “Mock Objects”, a technique which has a whole methodology behind it all on its own. We’ll see how mock objects provide us with abilities that let us query what’s happening inside our derived class._   [Introduction](https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.html#_Introduction) [The problem with abstract classes](https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.html#_The_problem_with_abstract_classes) [Mock objects](https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.html#_Mock_objects) [A simple project idea](https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.html#_A_simple_project_idea) [Planning our first test](https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.html#_Planning_our_first_test) [Our first test](https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.html#_Our_first_test) [Creating our Mock object](https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.html#_Creating_our_Mock_object) [Creating our abstract class](https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.html#_Creating_our_abstract_class) [Making the test fail](https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.html#_Making_the_test_fail) [Making the test work](https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.html#_Making_the_test_work) [Conclusion](https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.html#_Conclusion) [References](https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.html#_References) ###### Introduction Unit testing is all good and well as a theoretical nirvana. “Yeah, we do unit tests” is a great answer to have when someone asks you, but achieving this is a process just like any other software development process. The overall idea looks great, but you come across problems that don’t fit your original plans, or things you can’t deal with the way you’re use to. Unit testing has several of these obstacles routed at the core of the mythology.  One of those obstacles is the testing of objects that cannot be instantiated on their own (abstract classes are one of several manifestations of this problem). As I’ll demonstrate, this too is possible using Mock objects, objects that exist for the sole purpose of helping us in our task of testing. ###### The problem with abstract classes So what’s the definition of the problem we are facing? Well, to run a test against a class, we need to have an instance of that class to work on. We need **something** to call methods on and get values back if needed. We need a real live object. In the case of abstract classes there’s no way to do this. We **could** make the class non-abstract for the sole purpose of testing it, but that would violate one of the most important concepts of Unit Tests – they should not alter the behavior or the data of the tested application. Making changes to the design of an object model for no reason other than tests is not the course of action we want to take.   We need to ask ourselves what we want to test in an abstract class. Usually abstract classes contain the plumbing required by classes that will derive from them. What we want to know is if the derived classes, as clients to the services the abstract class provides, are getting all the services they need. This method means that we are essentially wanting to do a “black box” test on the abstract class and make sure that any derived class that’s going to use it will have what we want it to have. So this shifts our focus a bit. How do we test that any “client” to the base class is receiving the services it needs? This could be quite a complex problem to test, because another important concept here is that we want to test only **one thing at a time**. If we test derived classes of the base class (which might be a design problem in itself) we are essentially testing the functionality of the base classes as well, not to mention we’ll have to build those classes for our tests to work at all! One of the most elegant solutions to this problem is actually very simple in concept – we’ll build objects just for our tests! ###### Mock objects Mock objects are a very handy technique to tests objects that are “mediators”. Instead of referring to a real domain object we call the Mock object which pretends to be the real object. The Mock object is used to validate any assertions and expectations we have of that object and we can fully interact with it while at the same time still have total control over the results of our object’s method calls. There’s a whole [Mock Objects testing framework](http://www.mockobjects.com/), which is an alternate view of unit testing. You can learn more about Mock objects by starting from [this link](http://c2.com/cgi/wiki?MockObject). Mock objects come in very handy when we either want to test an object that “changes stuff” in our application and we want to stop it control it, or when we want to test an object that uses _other_ objects in order to do its work. A data layer object that uses the database would be a good example of when we want to control such things (we never want our unit tests to corrupt live data, that’s rule #1, ask your DBA). In this case we can use a Mock object to derive from our class and make sure that it, as a “client” to our class, receives all the necessary “services” it expects. ###### A simple project idea In order to explain this in more “close to home” terms, I’ll make up a simple project task. We’ve designed a simple object model in which we have an abstract class “Task” which will contain a “start” method. The class will be used to derive other tasks from it, but will provide each derived class with abstract methods that will need to be implemented: _BeforeStart(), OnStart(),_ and _AfterStart()._ Each derived class will be able to use these methods to perform initialization before a task begins, the task itself when needed, and cleanup after the task has finished (think _ServicedComponent_ type events). ###### Planning our first test Ok. We have no code yet, but what do we test first? We want to make sure that for any derived class, calling the Start() method, actually triggers the _BeforeStart(), OnStart(),_ and _AfterStart()_  methods inside it. To do that, we’ll need an instance of a class derived from Task (which does not exist yet). This is a perfect candidate for a Mock object. We can use a Mock object that will derive from out base class and will let us know if its inner methods were called. We’ll want to used a very simple mechanism here. ###### Our first test In our first test we’ll assume we have an object derived from Task and well call it’s Start() method. Then we’ll assert that all three inert methods were called. \[Test\] public void TestOnStartCalled() {       MockTask task = new MockTask();       task.Start();       Assert.IsTrue(task.OnStartCalled);       Assert.IsTrue(task.BeforeStartCalled);       Assert.IsTrue(task.AfterStartCalled); } This code won’t compile because we don’t have any MockTask class defined. ###### Creating our Mock object Our mock object will derive from Task. Notice we’re building it assuming Task already exists. public class MockTask:Task {       public bool OnStartCalled\=false;       public bool BeforeStartCalled\=false;       public bool AfterStartCalled\=false; } The beauty of this is because this is **our** mock object we can make it do whatever we want. In this case we are simply adding flags to it. Those flags will have to change somehow later on, but that’s not our problem now. Now we’re concerned about making the code compile. Our code **still** won’t compile because we haven’t created out Task class yet. ###### Creating our abstract class public abstract class Task {       public void Start()       {       } } Notice we’re making the class as simple as possible, just making our code compile. ###### Making the test fail If we run the test now out code will compile, but the test will fail miserably. The derived class had no OnStart ,BeforeStart and AfterStart methods defined. Therefore it’s “called” flags will always remain false. ###### Making the test work Let’s make the test work by adding the required functionality to our base class: public abstract class Task {       public void Start()       {             BeforeStart();             OnStart();             AfterStart();       }       //all base classes must implement this method       protected abstract void OnStart();       protected abstract void BeforeStart();       protected abstract void AfterStart(); } public class MockTask:Task {       public bool OnStartCalled\=false;       public bool BeforeStartCalled\=false;       public bool AfterStartCalled\=false;       protected override void AfterStart()       {             AfterStartCalled\=true;                    }       protected override void BeforeStart()       {             BeforeStartCalled\=true;       }       protected override void OnStart()       {             OnStartCalled\=true;       } } ###### Conclusion “Be-a-utiful!” as Bruce almighty often remarks.  We now have a repeatable test that makes sure our base class calls all the methods we require from it. ###### References ·         [MockObjects testing framework](http://www.mockobjects.com/) ·         [What is a Mock object?](http://c2.com/cgi/wiki?MockObject) ·         Download the source for this article: [Direct link](http://royo.is-a-geek.com/files/articles/UnitTestingfun1.zip) ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Apr 3, 2005 ### [Naming standards for unit tests](https://osherove.com/blog/2005/4/3/naming-standards-for-unit-tests.html) - Jun 19, 2004 ### [Simplified Database Unit testing using Enterprise Services](https://osherove.com/blog/2004/6/19/simplified-database-unit-testing-using-enterprise-services.html) - Sep 21, 2003 ### [Introduction to Test-driven development with NUnit and the NUnit-Add-in](https://osherove.com/blog/2003/9/21/introduction-to-test-driven-development-with-nunit-and-the-n.html) --- title: "Some stuff" url: "https://osherove.com/blog/2003/9/24/some-stuff.md" canonical: "https://osherove.com/blog/2003/9/24/some-stuff.html" published: "2003-09-24T12:59:00" updated: "2003-09-24T12:59:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Joel spolsky tells us how he designed his dream office . I'm not crazy about the colors, but he details some very important points to look out for when designing office space, especially if you want people to be able to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some stuff By Roy Osherove September 24, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 24, 2003; technical details may be outdated. - Joel spolsky tells us how he [designed his dream office](http://www.joelonsoftware.com/articles/BionicOffice.html). I'm not crazy about the colors, but he details some very important points to look out for when designing office space, especially if you want people to be able to do pair programming. One of my favorites books, [PeopleWare](https://www.amazon.com/exec/obidos/ASIN/0932633439/iserializable-20), also has a chapter about office space. I think it's called “return the door!” or something.  One of the most insperational things I've ever read. It made me close my office door on the first job I ever had. (it caused some problems with some of the managers so I had to cave in and keep it open.. but it was a very fun and quite week for those of us inside that office while it lasted) - On a different note, I was in two interviews this afternoon. Both went well. Here's an observation though. If you're an HR manager, and want to know if the people doing the interviewing are doing their job well, one thing to look out for is to take a look at the paperwork the candidates fill in when they first arrive. You know, the one where you repeat all the details you **already wrote** on your CV anyway? - Why is looking at it important?  Well, if you see a large amount of doodling on the paper (those little drawings you do when you're bored out of your skull), you can take a wild guess and know that these people waited a long time to be interviewed, meaning they came in, sat down, and then waited for at least 20 minutes before actually taking the interview. It happened to me today. I waited half an hour to be interviewed. Other than the fact that it's pretty rude (I had other things to do you know?) it makes the candidate feel like they are not being respected as a person. If a work place can't even have a decent interviewing process, where people actually care that you're waiting a lot of time, how is that organization taking care of other stuff? - OK, I'm gonna do the dishes, listening to the [new .Net rocks show](http://www.franklins.net/dotnetrocks.asp). (Ah, the joys of unemployment..) - **Update:** - Listening to the new [.Net rocks show](http://www.franklins.net/dotnetrocks.asp) is a total **bomb**. Too much background noise folks! Too bad. I liked the idea of doing it in a tavern, but I really can't hear anything :( ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 26, 2003 ### [Pay for my PDC?](https://osherove.com/blog/2003/9/26/pay-for-my-pdc.html) - Sep 25, 2003 ### [Nothing like the smell of new books!](https://osherove.com/blog/2003/9/25/nothing-like-the-smell-of-new-books.html) - Sep 24, 2003 ### [The perfect birthday gift](https://osherove.com/blog/2003/9/24/the-perfect-birthday-gift.html) - Sep 23, 2003 ### [PDC hype and real actions](https://osherove.com/blog/2003/9/23/pdc-hype-and-real-actions.html) --- title: "The perfect birthday gift" url: "https://osherove.com/blog/2003/9/24/the-perfect-birthday-gift.md" canonical: "https://osherove.com/blog/2003/9/24/the-perfect-birthday-gift.html" published: "2003-09-24T12:17:00" updated: "2003-09-24T12:17:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Can I have this for my birthday? it's a P4 3,8 Ghz and it's only 7,800$. (link via Chris )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The perfect birthday gift By Roy Osherove September 24, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 24, 2003; technical details may be outdated. Can I have [this](http://www.go-l.com/desktops/machl38/features/index.htm) for my birthday? it's a P4 3,8 Ghz and it's only 7,800$. (link via [Chris](http://www.sellsbrothers.com/)) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 25, 2003 ### [Nothing like the smell of new books!](https://osherove.com/blog/2003/9/25/nothing-like-the-smell-of-new-books.html) - Sep 24, 2003 ### [Some stuff](https://osherove.com/blog/2003/9/24/some-stuff.html) - Sep 23, 2003 ### [PDC hype and real actions](https://osherove.com/blog/2003/9/23/pdc-hype-and-real-actions.html) - Sep 23, 2003 ### [Installation woes and SqlJunkies](https://osherove.com/blog/2003/9/23/installation-woes-and-sqljunkies.html) --- title: "Getting the list of installed programs on the local machine" url: "https://osherove.com/blog/2003/9/23/getting-the-list-of-installed-programs-on-the-local-machine.md" canonical: "https://osherove.com/blog/2003/9/23/getting-the-list-of-installed-programs-on-the-local-machine.html" published: "2003-09-23T20:27:00" updated: "2003-09-23T20:27:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Here's a snippet from the win-tech-off-topic list: Getting the list of installed programs on the local machine: static void GetInstalled() { string uninstallKey = @\"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\";…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Getting the list of installed programs on the local machine By Roy Osherove September 23, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 23, 2003; technical details may be outdated. Here's a snippet from the win-tech-off-topic list: Getting the list of installed programs on the local machine:  static void GetInstalled() {       string uninstallKey = @"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";       using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))       {             foreach (string skName in rk.GetSubKeyNames())             {                   using (RegistryKey sk = rk.OpenSubKey(skName))                   {                         Console.WriteLine(sk.GetValue("DisplayName"));                   }             }       } } ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 26, 2003 ### [Excellent ASP.NET Identity Matrix reference](https://osherove.com/blog/2003/9/26/excellent-aspnet-identity-matrix-reference.html) - Sep 26, 2003 ### [Testing nirvana](https://osherove.com/blog/2003/9/26/testing-nirvana.html) - Sep 23, 2003 ### [New Server Controls Provided by the ASP.NET Web Matrix](https://osherove.com/blog/2003/9/23/new-server-controls-provided-by-the-aspnet-web-matrix.html) - Sep 23, 2003 ### [For a good time, call 1-800-FAULT-INJECTION-TESTING](https://osherove.com/blog/2003/9/23/for-a-good-time-call-1-800-fault-injection-testing.html) --- title: "PDC hype and real actions" url: "https://osherove.com/blog/2003/9/23/pdc-hype-and-real-actions.md" canonical: "https://osherove.com/blog/2003/9/23/pdc-hype-and-real-actions.html" published: "2003-09-23T18:49:00" updated: "2003-09-23T18:49:00" tags: ["Off Topic"] author: "Roy Osherove" description: "With all the PDC hype going about, instead of just cheerleading, why havn't we seen some contest or giveaway of free tickets to the PDC? wouldn't that be cool, Scoble ?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # PDC hype and real actions By Roy Osherove September 23, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 23, 2003; technical details may be outdated. With all the PDC hype going about, instead of just cheerleading, why havn't we seen some contest or giveaway of free tickets to the PDC? wouldn't that be cool, [Scoble](http://scoble.weblogs.com/)? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 24, 2003 ### [Some stuff](https://osherove.com/blog/2003/9/24/some-stuff.html) - Sep 24, 2003 ### [The perfect birthday gift](https://osherove.com/blog/2003/9/24/the-perfect-birthday-gift.html) - Sep 23, 2003 ### [Installation woes and SqlJunkies](https://osherove.com/blog/2003/9/23/installation-woes-and-sqljunkies.html) - Sep 23, 2003 ### [Google search by location](https://osherove.com/blog/2003/9/23/google-search-by-location.html) --- title: "New Server Controls Provided by the ASP.NET Web Matrix" url: "https://osherove.com/blog/2003/9/23/new-server-controls-provided-by-the-aspnet-web-matrix.md" canonical: "https://osherove.com/blog/2003/9/23/new-server-controls-provided-by-the-aspnet-web-matrix.html" published: "2003-09-23T17:37:00" updated: "2003-09-23T17:37:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Quickly and easily build your ASP.NET Web applications with ASP.NET Web Matrix. Learn about this free development tool and new server controls that you can use in Web Matrix or Visual Studio .NET. [ MSDN just published ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Server Controls Provided by the ASP.NET Web Matrix By Roy Osherove September 23, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 23, 2003; technical details may be outdated. <table width="100%"><tbody><tr><td><em>Quickly and easily build your ASP.NET Web applications with ASP.NET Web Matrix. Learn about this free development tool and<a href="http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/ASPNet-NewSrvrCntrls-WebMatrix.asp"> new server controls </a>that you can use in Web Matrix or Visual Studio .NET.</em></td></tr></tbody></table> \[[MSDN just published](http://msdn.microsoft.com/rss.xml)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 26, 2003 ### [Testing nirvana](https://osherove.com/blog/2003/9/26/testing-nirvana.html) - Sep 23, 2003 ### [Getting the list of installed programs on the local machine](https://osherove.com/blog/2003/9/23/getting-the-list-of-installed-programs-on-the-local-machine.html) - Sep 23, 2003 ### [For a good time, call 1-800-FAULT-INJECTION-TESTING](https://osherove.com/blog/2003/9/23/for-a-good-time-call-1-800-fault-injection-testing.html) - Sep 22, 2003 ### [NAnt-addin: another coolness in the making?](https://osherove.com/blog/2003/9/22/nant-addin-another-coolness-in-the-making.html) --- title: "I'm available" url: "https://osherove.com/blog/2003/9/23/im-available.md" canonical: "https://osherove.com/blog/2003/9/23/im-available.html" published: "2003-09-23T10:59:00" updated: "2003-09-23T10:59:00" tags: [".Net Original"] author: "Roy Osherove" description: "Perhaps it was in honor of my new MCP , or just because it is two days before the Hebrew new year's, I find myself looking for a job again . The tale is short and not that complicated. suffice to say that my current…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm available By Roy Osherove September 23, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 23, 2003; technical details may be outdated. Perhaps it was in honor of my [new MCP](http://weblogs.asp.net/rosherove/posts/28267.aspx), or just because it is two days before the Hebrew new year's, I find myself [looking for a job again](http://weblogs.asp.net/rosherove/posts/6870.aspx). The tale is short and not that complicated. suffice to say that my current company were not really sure what they were looking for, but I wasn't it. So, it's come to searching again, and you get the chance to grab me while I'm young and underpaid :) **If you're interested in hiring me,** [**look here**](http://weblogs.asp.net/rosherove/posts/6870.aspx) **for my resume and other important stuff.** My current plans: 1. Write more articles (and publish on MSDN) 2. Do my first lecture in a user group (about Unit testing) 3. Build and foster an Israeli community website on my home machine based on the Community starter kit 4. Take my next MCP test 5. Read several books I've been meaning to ([Don's](https://www.amazon.com/exec/obidos/ASIN/0201734117/iserializable-20), [Martin's](https://www.amazon.com/exec/obidos/ASIN/0201485672/iserializable-20),[Chris's](https://www.amazon.com/exec/obidos/ASIN/0321116208/iserializable-20)) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 25, 2003 ### [AmazReplacer - Convert Amazon's URL into your referrer URL automatically](https://osherove.com/blog/2003/9/25/amazreplacer-convert-amazons-url-into-your-referrer-url-auto.html) - Sep 24, 2003 ### [\[Article\] Fun with Unit Tests – Testing abstract classes](https://osherove.com/blog/2003/9/24/article-fun-with-unit-tests-testing-abstract-classes.html) - Sep 21, 2003 ### [\[Article\] Introduction to Test-driven development with NUnit and the NUnit-Add-in](https://osherove.com/blog/2003/9/21/article-introduction-to-test-driven-development-with-nunit-a.html) - Sep 19, 2003 ### [Passed MCP 70-316](https://osherove.com/blog/2003/9/19/passed-mcp-70-316.html) --- title: "For a good time, call 1-800-FAULT-INJECTION-TESTING" url: "https://osherove.com/blog/2003/9/23/for-a-good-time-call-1-800-fault-injection-testing.md" canonical: "https://osherove.com/blog/2003/9/23/for-a-good-time-call-1-800-fault-injection-testing.html" published: "2003-09-23T10:48:00" updated: "2003-09-23T10:48:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Bruce E. Williams , of the MS testing team blogs about what fault injection really is, and how to utilizie it for good evil . Gotta love that." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # For a good time, call 1-800-FAULT-INJECTION-TESTING By Roy Osherove September 23, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 23, 2003; technical details may be outdated. [Bruce E. Williams](http://blogs.gotdotnet.com/bwill/), of the MS testing team [blogs about what fault injection](http://blogs.gotdotnet.com/bwill/permalink.aspx/2db3e3a7-fa76-401a-964b-9f2639d5848a) really is, and how to utilizie it for ~good~  evil . Gotta love that. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 23, 2003 ### [Getting the list of installed programs on the local machine](https://osherove.com/blog/2003/9/23/getting-the-list-of-installed-programs-on-the-local-machine.html) - Sep 23, 2003 ### [New Server Controls Provided by the ASP.NET Web Matrix](https://osherove.com/blog/2003/9/23/new-server-controls-provided-by-the-aspnet-web-matrix.html) - Sep 22, 2003 ### [NAnt-addin: another coolness in the making?](https://osherove.com/blog/2003/9/22/nant-addin-another-coolness-in-the-making.html) - Sep 21, 2003 ### [A macro to automatically attach to aspnet\_wp.exe](https://osherove.com/blog/2003/9/21/a-macro-to-automatically-attach-to-aspnet_wpexe.html) --- title: "Installation woes and SqlJunkies" url: "https://osherove.com/blog/2003/9/23/installation-woes-and-sqljunkies.md" canonical: "https://osherove.com/blog/2003/9/23/installation-woes-and-sqljunkies.html" published: "2003-09-23T03:36:00" updated: "2003-09-23T03:36:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Nothing beats waiting 2 hours for you vs.Net installation to complete just to discover there was an “Insert disc 1” prompt hidden behind all the other windows that you didn't notice! BTW, I just subscribed to SqlJunkies…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Installation woes and SqlJunkies By Roy Osherove September 23, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 23, 2003; technical details may be outdated. Nothing beats waiting 2 hours for you vs.Net installation to complete just to discover [there was an “Insert disc 1” prompt hidden behind all the other windows](http://sqljunkies.com/WebLog/srisamp/posts/170.aspx) that you didn't notice! BTW, I just subscribed to [SqlJunkies](http://sqljunkies.com/WebLog). Seems like it's gonna be big. Looks like more and more people are joining every day. In fact, looks like most of the posts there are “Hello world” posts :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 24, 2003 ### [The perfect birthday gift](https://osherove.com/blog/2003/9/24/the-perfect-birthday-gift.html) - Sep 23, 2003 ### [PDC hype and real actions](https://osherove.com/blog/2003/9/23/pdc-hype-and-real-actions.html) - Sep 23, 2003 ### [Google search by location](https://osherove.com/blog/2003/9/23/google-search-by-location.html) - Sep 22, 2003 ### [Cool cases](https://osherove.com/blog/2003/9/22/cool-cases.html) --- title: "Google search by location" url: "https://osherove.com/blog/2003/9/23/google-search-by-location.md" canonical: "https://osherove.com/blog/2003/9/23/google-search-by-location.html" published: "2003-09-23T02:57:00" updated: "2003-09-23T02:57:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Google Labs has released Search by Location . Enter some search terms and an address, city, or zip code and Google will return a bunch of results which contain nearby addresses and plot them on a map. You may recall…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Google search by location By Roy Osherove September 23, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 23, 2003; technical details may be outdated. _Google Labs has released_ [_Search by Location_](http://labs.google.com/location)_. Enter some search terms and an address, city, or zip code and Google will return a bunch of results which contain nearby addresses and plot them on a map._ _You may_ [_recall_](http://google.blogspace.com/archives/000306) _that this idea was_ [_the winner of the 2002 Google Programming Contest_](http://www.google.com/programming-contest/winner.html) _and submitted by_ [_Daniel Egnor_](http://www.ofb.net/~egnor/)_._ \[[Google weblog\]](http://google.blogspace.com/) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 23, 2003 ### [PDC hype and real actions](https://osherove.com/blog/2003/9/23/pdc-hype-and-real-actions.html) - Sep 23, 2003 ### [Installation woes and SqlJunkies](https://osherove.com/blog/2003/9/23/installation-woes-and-sqljunkies.html) - Sep 22, 2003 ### [Cool cases](https://osherove.com/blog/2003/9/22/cool-cases.html) - Sep 21, 2003 ### [Where did the desktops disappear?](https://osherove.com/blog/2003/9/21/where-did-the-desktops-disappear.html) --- title: "Free chapter from \"Essential .Net\" by Don Box" url: "https://osherove.com/blog/2003/9/22/free-chapter-from-quotessential-netquot-by-don-box.md" canonical: "https://osherove.com/blog/2003/9/22/free-chapter-from-quotessential-netquot-by-don-box.html" published: "2003-09-22T16:37:00" updated: "2003-09-22T16:37:00" tags: ["Free book chapters"] author: "Roy Osherove" description: "Found this out through the DOTNET-CLR mailing list: You can read a free chapter from Don Box 's latest book Essential .Net, Volume 1 , over at Amazon . Looks very promising. it's chapter 3 and it's called “ Type Basics…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free chapter from "Essential .Net" by Don Box By Roy Osherove September 22, 2003 In [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published September 22, 2003; technical details may be outdated. Found this out through the DOTNET-CLR mailing list: You can read a [free chapter](https://www.amazon.com/exec/obidos/ASIN/0201734117/iserializable-20) from [Don Box](http://www.gotdotnet.com/team/dbox/)'s latest book [Essential .Net, Volume 1](https://www.amazon.com/exec/obidos/ASIN/0201734117/iserializable-20), over at [Amazon](https://osherove.com/blog/2003/9/22/www.amazon.com). Looks very promising. it's chapter 3 and it's called “_Type Basics_” but I fear that “basics” is hardly the word to describe it. **Excellent** :) **Update:** _Download Ch 2 (Components) here -_ [_http://www.aw-bc.com/samplechapter/0201734117.pdf_](http://www.aw-bc.com/samplechapter/0201734117.pdf) \[ [SBC](https://osherove.com/sbchatterjee/) \] Excellent! ## More in Free book chapters [All posts in Free book chapters](https://osherove.com/blog/category/free-book-chapters) - Oct 6, 2003 ### [More than 500 sample chapters](https://osherove.com/blog/2003/10/6/more-than-500-sample-chapters.html) - Oct 2, 2003 ### [Visual Studio .NET Shortcut Key Guide](https://osherove.com/blog/2003/10/2/visual-studio-net-shortcut-key-guide.html) - Sep 8, 2003 ### [The OLE syndrom](https://osherove.com/blog/2003/9/8/the-ole-syndrom.html) - Sep 2, 2003 ### [Windows Forms Programming in C# Sample Chapter](https://osherove.com/blog/2003/9/2/windows-forms-programming-in-c-sample-chapter.html) --- title: "Cool cases" url: "https://osherove.com/blog/2003/9/22/cool-cases.md" canonical: "https://osherove.com/blog/2003/9/22/cool-cases.html" published: "2003-09-22T13:53:00" updated: "2003-09-22T13:53:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Huh. And you though your machine looked somewhat cool? Take a look at some of these ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool cases By Roy Osherove September 22, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 22, 2003; technical details may be outdated. Huh. And you though **your** machine looked somewhat cool? [Take a look at some of these](http://www.crazycases.at/cases.php3?page=1). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 23, 2003 ### [Installation woes and SqlJunkies](https://osherove.com/blog/2003/9/23/installation-woes-and-sqljunkies.html) - Sep 23, 2003 ### [Google search by location](https://osherove.com/blog/2003/9/23/google-search-by-location.html) - Sep 21, 2003 ### [Where did the desktops disappear?](https://osherove.com/blog/2003/9/21/where-did-the-desktops-disappear.html) - Sep 21, 2003 ### [Looking for a reporting solution for .Net](https://osherove.com/blog/2003/9/21/looking-for-a-reporting-solution-for-net.html) --- title: "Nice blog" url: "https://osherove.com/blog/2003/9/22/nice-blog.md" canonical: "https://osherove.com/blog/2003/9/22/nice-blog.html" published: "2003-09-22T13:36:00" updated: "2003-09-22T13:36:00" tags: ["Blogging"] author: "Roy Osherove" description: "Yeah. It's not earth shattering or anything, and I'm sure not everyone will run out and subscribe, but I've found a nice quiet blog to read, and I really like it. When browsing through some of the PDC bloggers (I'm not…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice blog By Roy Osherove September 22, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published September 22, 2003; technical details may be outdated. Yeah. It's not earth shattering or anything, and I'm sure not everyone will run out and subscribe, but I've found a nice quiet blog to read, and I really like it. When browsing through some of the [PDC bloggers](http://www.pdcbloggers.net/) (I'm not going, what a shame!), I came across [Brian Jackson's blog](http://www.btjdotnet.net/blog/) and immediately got hooked. Brian has a way with words athat I envy and I find what he writes about to be very near and dear to my heart as well. Here's a quote from [one of his posts](http://www.btjdotnet.net/blog/PermaLink.aspx?guid=86342185-8465-4c83-9d1c-cf34dd58f4eb): _Sometimes, when the VS.Net debugger hangs, it gives you the message "Can't stop debugging."  I've always felt great sympathy for the debugger at moments like that; I really know how it feels, poor thing._  **[Subscribed](http://www.btjdotnet.net/blog/SyndicationService.asmx/GetRss)**! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Oct 1, 2003 ### [Congratulations Robert!](https://osherove.com/blog/2003/10/1/congratulations-robert.html) - Sep 26, 2003 ### [Pay for my PDC?](https://osherove.com/blog/2003/9/26/pay-for-my-pdc.html) - Sep 18, 2003 ### [RegexLib RSS now even cooler](https://osherove.com/blog/2003/9/18/regexlib-rss-now-even-cooler.html) - Sep 18, 2003 ### [Ed has returned to the building](https://osherove.com/blog/2003/9/18/ed-has-returned-to-the-building.html) --- title: "NAnt-addin: another coolness in the making?" url: "https://osherove.com/blog/2003/9/22/nant-addin-another-coolness-in-the-making.md" canonical: "https://osherove.com/blog/2003/9/22/nant-addin-another-coolness-in-the-making.html" published: "2003-09-22T10:37:00" updated: "2003-09-22T10:37:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "Jamie Cansdale , proud parent of the coolness that is NUnit-Addin , is at it again. This time he's making an add-in for the NAnt build framework. If you hurry, he's looking for early alpha testers to help out with the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NAnt-addin: another coolness in the making? By Roy Osherove September 22, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 22, 2003; technical details may be outdated. [Jamie Cansdale](http://weblogs.asp.net/nunitaddin/), proud parent of the coolness that is [NUnit-Addin](http://www.mutantdesign.co.uk/nunit-addin/), is at it again. This time [he's making an add-in](http://weblogs.asp.net/nunitaddin/posts/28580.aspx) for the [NAnt](http://nant.sourceforge.net/) build framework. If you hurry, he's [looking for early alpha testers](http://weblogs.asp.net/nunitaddin/posts/28580.aspx) to help out with the efforts. I wonder if I could/should join in.  I never got the chance to use [NAnt](http://nant.sourceforge.net/) up until now, so this might be a fun exercise, but I'm not sure I have enough hours in the day left already. I **do** wanna see my **wife** every once in a while... ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 23, 2003 ### [New Server Controls Provided by the ASP.NET Web Matrix](https://osherove.com/blog/2003/9/23/new-server-controls-provided-by-the-aspnet-web-matrix.html) - Sep 23, 2003 ### [For a good time, call 1-800-FAULT-INJECTION-TESTING](https://osherove.com/blog/2003/9/23/for-a-good-time-call-1-800-fault-injection-testing.html) - Sep 21, 2003 ### [A macro to automatically attach to aspnet\_wp.exe](https://osherove.com/blog/2003/9/21/a-macro-to-automatically-attach-to-aspnet_wpexe.html) - Sep 19, 2003 ### [Data Access application block v3.0 has some good stuff](https://osherove.com/blog/2003/9/19/data-access-application-block-v30-has-some-good-stuff.html) --- title: "Checklist: Securing ASP.NET" url: "https://osherove.com/blog/2003/9/22/checklist-securing-aspnet.md" canonical: "https://osherove.com/blog/2003/9/22/checklist-securing-aspnet.html" published: "2003-09-22T07:14:00" updated: "2003-09-22T07:14:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "Wow! Checklist: Securing ASP.NET" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Checklist: Securing ASP.NET By Roy Osherove September 22, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 22, 2003; technical details may be outdated. Wow! [Checklist: Securing ASP.NET](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/CL_SecuAsp.asp) ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Sep 29, 2003 ### [Engineering Notebook: An Extreme Programming Episode](https://osherove.com/blog/2003/9/29/engineering-notebook-an-extreme-programming-episode.html) - Sep 28, 2003 ### [\[New article\]: Creating a generic Site-To-RSS tool (site scraping)](https://osherove.com/blog/2003/9/28/new-article-creating-a-generic-site-to-rss-tool-site-scrapin.html) - Sep 22, 2003 ### [HOW TO: Encrypt the settings in your web.config](https://osherove.com/blog/2003/9/22/how-to-encrypt-the-settings-in-your-webconfig.html) - Sep 22, 2003 ### [Sharing ASP.NET user controls accross projects](https://osherove.com/blog/2003/9/22/sharing-aspnet-user-controls-accross-projects.html) --- title: "HOW TO: Encrypt the settings in your web.config" url: "https://osherove.com/blog/2003/9/22/how-to-encrypt-the-settings-in-your-webconfig.md" canonical: "https://osherove.com/blog/2003/9/22/how-to-encrypt-the-settings-in-your-webconfig.html" published: "2003-09-22T07:01:00" updated: "2003-09-22T07:01:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "We're currently looking into this subject matter, and this article was a big leap forward in our efforts: HOW TO: Use the ASP.NET Utility to Encrypt Credentials and Session State Connection Strings" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # HOW TO: Encrypt the settings in your web.config By Roy Osherove September 22, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 22, 2003; technical details may be outdated. We're currently looking into this subject matter, and this article was a big leap forward in our efforts: [HOW TO: Use the ASP.NET Utility to Encrypt Credentials and Session State Connection Strings](http://support.microsoft.com/default.aspx?scid=329290) ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Sep 28, 2003 ### [\[New article\]: Creating a generic Site-To-RSS tool (site scraping)](https://osherove.com/blog/2003/9/28/new-article-creating-a-generic-site-to-rss-tool-site-scrapin.html) - Sep 22, 2003 ### [Checklist: Securing ASP.NET](https://osherove.com/blog/2003/9/22/checklist-securing-aspnet.html) - Sep 22, 2003 ### [Sharing ASP.NET user controls accross projects](https://osherove.com/blog/2003/9/22/sharing-aspnet-user-controls-accross-projects.html) - Sep 21, 2003 ### [\[Article\] Introduction to Test-driven development with NUnit and the NUnit-Add-in](https://osherove.com/blog/2003/9/21/article-introduction-to-test-driven-development-with-nunit-a.html) --- title: "Sharing ASP.NET user controls accross projects" url: "https://osherove.com/blog/2003/9/22/sharing-aspnet-user-controls-accross-projects.md" canonical: "https://osherove.com/blog/2003/9/22/sharing-aspnet-user-controls-accross-projects.html" published: "2003-09-22T04:18:00" updated: "2003-09-22T04:18:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "We recently published a How-To on support.microsoft.com for how to share user controls across projects. In talking with customers, one of the things they would like to do is have a common set of reusable web UI, say a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Sharing ASP.NET user controls accross projects By Roy Osherove September 22, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 22, 2003; technical details may be outdated. _We recently published a How-To on_ [_support.microsoft.com_](http://support.microsoft.com/) _for how to share user controls across projects.  In talking with customers, one of the things they would like to do is have a common set of reusable web UI, say a navigation bar, across multiple Visual Studio projects.  The problem is that there hasn't been an easy way to do this, and creating a server control seems like a lot of work for something so simple.  To help make this easier,_ [_this article_](http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q324785) _gives step-by-step instructions for creating a virtual directory for common user controls that can be reused in multiple Visual Studio projects._ \[[Dan Fernandez](http://blogs.gotdotnet.com/danielfe/permalink.aspx/4511cf72-57d7-4b18-88f7-1cb468ca252f)\] ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Sep 22, 2003 ### [Checklist: Securing ASP.NET](https://osherove.com/blog/2003/9/22/checklist-securing-aspnet.html) - Sep 22, 2003 ### [HOW TO: Encrypt the settings in your web.config](https://osherove.com/blog/2003/9/22/how-to-encrypt-the-settings-in-your-webconfig.html) - Sep 21, 2003 ### [\[Article\] Introduction to Test-driven development with NUnit and the NUnit-Add-in](https://osherove.com/blog/2003/9/21/article-introduction-to-test-driven-development-with-nunit-a.html) - Sep 21, 2003 ### [Asp.Net error handling](https://osherove.com/blog/2003/9/21/aspnet-error-handling.html) --- title: "Where did the desktops disappear?" url: "https://osherove.com/blog/2003/9/21/where-did-the-desktops-disappear.md" canonical: "https://osherove.com/blog/2003/9/21/where-did-the-desktops-disappear.html" published: "2003-09-21T19:42:00" updated: "2003-09-21T19:42:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I can't bloody believe it. For some reason, all the desktop screenshots on the desktop gallery are gone! Now why the hell did that happen?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Where did the desktops disappear? By Roy Osherove September 21, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 21, 2003; technical details may be outdated. I can't bloody believe it. For some reason, all the desktop screenshots on the [desktop gallery](http://pnavy.com/royo/desktops) are gone! Now why the hell did that happen? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 23, 2003 ### [Google search by location](https://osherove.com/blog/2003/9/23/google-search-by-location.html) - Sep 22, 2003 ### [Cool cases](https://osherove.com/blog/2003/9/22/cool-cases.html) - Sep 21, 2003 ### [Looking for a reporting solution for .Net](https://osherove.com/blog/2003/9/21/looking-for-a-reporting-solution-for-net.html) - Sep 20, 2003 ### [Making a decision in 4 seconds (or: How to know what you \*really\* want to do)](https://osherove.com/blog/2003/9/20/making-a-decision-in-4-seconds-or-how-to-know-what-you-reall.html) --- title: "A macro to automatically attach to aspnet_wp.exe" url: "https://osherove.com/blog/2003/9/21/a-macro-to-automatically-attach-to-aspnet_wpexe.md" canonical: "https://osherove.com/blog/2003/9/21/a-macro-to-automatically-attach-to-aspnet_wpexe.html" published: "2003-09-21T19:36:00" updated: "2003-09-21T19:36:00" tags: [".Net Quotations", "Tips & Tricks"] author: "Roy Osherove" description: "This was on the win-tech-off-topic mailing list: A macro to automatically attach to aspnet_wp.exe, written by Kevin Dente can save lots of clicking around time: <quote> Sub AttachAspNet() Dim process As EnvDTE.Process…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A macro to automatically attach to aspnet\_wp.exe By Roy Osherove September 21, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published September 21, 2003; technical details may be outdated. This was on the win-tech-off-topic mailing list: A macro to automatically attach to aspnet\_wp.exe, written by [Kevin Dente](http://weblogs.asp.net/kdente/) can save lots of clicking around time: <quote>   Sub AttachAspNet()         Dim process As EnvDTE.Process         If Not (DTE.Debugger.DebuggedProcesses Is Nothing) Then             For Each process In DTE.Debugger.DebuggedProcesses                 If (process.Name.IndexOf("aspnet\_wp.exe") <> -1) Then                     Exit Sub                 End If             Next         End If         For Each process In DTE.Debugger.LocalProcesses             If (process.Name.IndexOf("aspnet\_wp.exe") <> -1) Then                 process.Attach()                 Exit Sub             End If         Next     End Sub Unfortunately, it's not perfect. Process.Attach doesn't let you specify the program type (CLR, Script, native, etc). I think that it uses whatever your last selection was in the UI. But don't quote me on that, it's been a while. </quote> ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 23, 2003 ### [For a good time, call 1-800-FAULT-INJECTION-TESTING](https://osherove.com/blog/2003/9/23/for-a-good-time-call-1-800-fault-injection-testing.html) - Sep 22, 2003 ### [NAnt-addin: another coolness in the making?](https://osherove.com/blog/2003/9/22/nant-addin-another-coolness-in-the-making.html) - Sep 19, 2003 ### [Data Access application block v3.0 has some good stuff](https://osherove.com/blog/2003/9/19/data-access-application-block-v30-has-some-good-stuff.html) - Sep 17, 2003 ### [A glimpse into the future](https://osherove.com/blog/2003/9/17/a-glimpse-into-the-future.html) --- title: "[Article] Introduction to Test-driven development with NUnit and the NUnit-Add-in" url: "https://osherove.com/blog/2003/9/21/article-introduction-to-test-driven-development-with-nunit-a.md" canonical: "https://osherove.com/blog/2003/9/21/article-introduction-to-test-driven-development-with-nunit-a.html" published: "2003-09-21T15:35:00" updated: "2003-09-21T15:35:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "It's been a while since my last article, but this one has been lurking inside me for the past month or so. It's the first of a series I plan to write about Unit-Testing in .Net (well, maybe just another one down the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Article\] Introduction to Test-driven development with NUnit and the NUnit-Add-in By Roy Osherove September 21, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 21, 2003; technical details may be outdated. It's been a while since my last article, but this one has been lurking inside me for the past month or so. It's the first of a series I plan to write about Unit-Testing in .Net (well, maybe just another one down the line. I don't know if I have enough material for more). Her'es the intro: _Every once in a while in my development career I realize just how much I’ve been missing out on some technique that I’ve just discovered. Such was the case with learning about Design patterns, as was the case with learning how to write self-documenting code, and countless other occasions where I felt I’ve “discovered a whole new world” and from that moment on tried to stick to the new things I’ve learned. Doing Test-Driven development (TDD) was definitely one of those techniques._ [Read it here](http://weblogs.asp.net/rosherove/posts/28511.aspx). Have fun. Be productive. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 24, 2003 ### [\[Article\] Fun with Unit Tests – Testing abstract classes](https://osherove.com/blog/2003/9/24/article-fun-with-unit-tests-testing-abstract-classes.html) - Sep 23, 2003 ### [I'm available](https://osherove.com/blog/2003/9/23/im-available.html) - Sep 19, 2003 ### [Passed MCP 70-316](https://osherove.com/blog/2003/9/19/passed-mcp-70-316.html) - Sep 18, 2003 ### [RegexLib RSS now even cooler](https://osherove.com/blog/2003/9/18/regexlib-rss-now-even-cooler.html) --- title: "Introduction to Test-driven development with NUnit and the NUnit-Add-in" url: "https://osherove.com/blog/2003/9/21/introduction-to-test-driven-development-with-nunit-and-the-n.md" canonical: "https://osherove.com/blog/2003/9/21/introduction-to-test-driven-development-with-nunit-and-the-n.html" published: "2003-09-21T14:08:00" updated: "2003-09-21T14:08:00" tags: ["Unit Testing"] author: "Roy Osherove" description: "Every once in a while in my development career I realize just how much I’ve been missing out on some technique that I’ve just discovered. Such was the case with learning about Design patterns , as was the case with…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introduction to Test-driven development with NUnit and the NUnit-Add-in By Roy Osherove September 21, 2003 In [Unit Testing](https://osherove.com/blog/category/unit-testing) **Historical article** · Originally published September 21, 2003; technical details may be outdated. Every once in a while in my development career I realize just how much I’ve been missing out on some technique that I’ve just discovered. Such was the case with learning about _Design patterns_, as was the case with learning how to write self-documenting code, and countless other occasions where I felt I’ve “discovered a whole new world” and from that moment on tried to stick to the new things I’ve learned. Doing Test-Driven development (TDD) was definitely one of those techniques. I touched it first when I discovered the notion of [XP](http://www.xprogramming.org/).  XP is a software development methodology that has some hardcore guidelines on how to achieve success in development projects but it’s a very steep learning curve, and you can find [plenty of books](http://www.xprogramming.com/books/xp_recommended_reading_prog.htm) nowadays that talk about this subject. TDD is one of the trademarks of XP (you might have heard about other, more “provocative” notions such as pair-programming) but it wasn’t _invented_ there. There’s a whole movement that supports what is known as “Agile methodologies”. You might find it interesting to explore this whole subject. A good start would be [Martin Fowlers’ site](http://martinfowler.com/), one of the granddaddies of everything that is agile. But I digress. The whole notion of TDD is just that. Development is based on testing. Does that sound weird? That’s because we’re used to it being the other way around. Usually we’ll code something and throw it over to QA for testing. Sometimes we’ll hack out some tests after the code base is done, just to make sure that “everything appears to be working” . TDD takes this whole process and turns it upside down. That means that whenever we are going to code something up, we stop, and first do a test that makes sure our code works. Yep. We don’t have any code yet. **But we have a test to prove it.** Here are the bullet points for how to start doing TDD: 1.      Make a test that fails 2.      Make it work 3.      For every new feature goto step 1 It’s _that_ easy. **Really**. Now, I _know_ this sounds weird at first. How can we test code that does not exist yet? Well, if our code even **fails to compile**, that means the test failed in our book. So it’s a start. To show just how easy this is, let’s make a _pretend project_. Our first task in the project is to create a class named Calculator that contains a method that adds two numbers. Now, given what I’ve just explained, the first task would be to first have **one test that fails.** So let’s create a new Console Application project. This project will be our **testing** project. It’s not the real project that we have to do. This project will contain the code that tests our production code. In our **Main()** method let’s add a few lines of code that determine whether out code (which does not exist yet) runs ok. The first thing we want to do is test that we can create a new instance of our calculator class:  \[STAThread\]  static void Main(string\[\] args)  {        Calculator calc = new Calculator();  } Now, of course this code won’t compile, but what we have just done is created a test that relies on the fact that a class named Calculator exists. So our next step is now to **make the test pass** . To do that we’ll finally create our “real” project and add a class named _calculator_ to it. Once we add a reference to that project into out test project, we’ll see that the code compiles and runs just fine. We just **made the test pass**. Our next goal? Add an “AddNumbers()” method that takes two numbers and returns the sum of those numbers. Again, what’s the first thing we do?  That’s right. We create a test that fails. So let’s add code to test this to our previous test code: \[STAThread\] static void Main(string\[\] args) {       //test creation       Calculator calc = new Calculator();       //test addition       int retVal = calc.Add(22,20);       if(42!= retVal)       {             throw new Exception("calc.Add(2,2) did not return a value of 4");       } } That was simple. Again, this code won’t compile. We have to create the code that does this addition operation. Once we’ve added a simple method for Add() we can now re-run the test and make sure that it works. Let’s make this a little more interesting though. What happens when we send in a null value in one of the parameters? Suppose that the design requires us to throw a CalcException when a null value is sent to this Add() method.  If want to add this feature, we first need to test for it: //test exception try {       int retVal = calc.Add(null,22); } catch(CalcException ce) {       //test passed } catch(Exception e) {       throw new Exception("calc.Add(null,22) did not throw a calcException"); } Now the code won’t compile again, We don’t have a CalcException class defined. Once we define it, we can run the test, but it will fail again, since we’ll get a standard exception and not a calcException from the AddMethod. So we’ll change our code to throw that exception…. And so on… As you can see this process is pretty easy. What I’ve done at every step is define a goal, and than make sure I pass it. What we have achieved at the end of this session is a piece of code that is thoroughly tested. Not only that, we get several added bonuses: ·        Anyone who looks at our tests can understand what out intention and purpose is of each method ·        We can make changes to our code and know “what we broke” with the click of a mouse and fix it just as fast ·        If our testing covered all of our code like this, we could find bugs in our programs at build time that would have taken a very long time at the customer’s site But some things are definitely missing from our current solution: ·        No automation. If I wanted to run a build and get the results of the tests that were performed I’d have a long day coming up with a solution that traces the messages and output them. ·        No re-use. I’d have to re-write any output handling from scratch every time I want to test a project ·        No decoupling. Code that runs a test must be totally decoupled from other code that runs a test. I always want my testing code to run within a given context, a known set of known values for parameters and so on. I don’t want other tests messing up my state when they change stuff. There’s no framework that allows me to have a separate state for each testing code without significant work every time. **NUnit** What’s needed here is a framework that allows us to write tests and not worry too much about how we’re going to get back their results. The de-facto framework for .Net unit testing is [NUnit](http://www.nunit.org/). Currently at version 2.1, NUnit provides us with a set of base classes and attributes that allow us to abstract away our unit tests and concentrate on the code that actually does the testing. The beautiful thing is that moving from our current coding/testing style to Nunit style requires little learning and is very easy to master. Nunit allows us to separate out testing code into what is logically know as tests, test fixtures and test suites. The concept is very simple.   ·         You write a test to test a single piece of functionality. ·         You group one or more tests inside a test fixture that allows you to easily add repeatable state for each test (I’ll explain shortly) ·         You group one or more fixtures inside test suites to logically separate the test and their meaning So how do we turn our code into using Nunit style? ·         Download and install [Nunit](http://www.nunit.org/) ·         Add a reference to the **nunit.framework.dll** to our testing project ·         Add a _using_ clause for NUnit.Framework workspace in a new class file Now we’re ready to start working. Change the class’s name to _MyTestingClass_ . This class will hold the fixture for our tests. We also need to let the Nunit framework know that this class is a fixture, so we simple add a \[TestFixture\] attribute on top of the class name.  You can remove the default constructor from the class (but don’t make it private!). Once we’ve done that, we have a class that looks like this: \[TestFixture\]       public class MyTestClass       {       } Easy enough we just have to start adding tests to the class. We’ll use the code from our previous example to test against _Calculator_. A test in a fixture is defined as a public method that returns void and accepts no parameters, marked with the _“\[Test\]”_ attribute and with one or more assertions inside. So let’s add the first test.:  \[TestFixture\]  public class MyTestClass  {        \[Test\]        TestAddition()        { //test addition              int retVal = calc.Add(22,22);              Assert.AreEqual(44,retVal, "calc.Add() returned the wrong number"); }  } As you can see it’s the same code as before only now it’s sitting in a method of its own .The method is decorated with the \[Test\] attribute .Also, instead of having to manually throw an exception I’m using the Assert class which is part of the Nunit framework. You’ll get to know this class a lot as this is the main instrument you’ll use to verify your code. The Assert class will fail the current test if the condition passed to it is false. It contains only static methods that allows you to make sure that a value is not null, equals other values and just send in any Boolean expression you like. You can also send in messages that explain the meaning of this failure. Now we need to build our testing project so we can move on to the next step. **Test suites** Test suites in the new versions of Nunit are derived directly from the namespaces that the test fixtures reside in. If you have two fixtures in separate namespaces (i.e. one is not contained inside the other) they’ll be considered as residing in two separate test suites. **So what now?** **GUI** Well, now it’s time to run your first Nunit test. When you install Nunit you get two choices on how to run your unit tests: Either a GUI based version of the Nunit test runner, or a console based one. The Gui one is located in _Start->Programs->Nunit V2.1->Nunit-Gui_ . When you open it you get a pretty “not beautiful” but very functional interface that allows you to select an assembly with compiled unit tests inside it and run all the tests that are there. ·         Select File->New project ·         Select Project->Add assembly and select your compiled tests assembly. Once you’ve selected your assembly you’ll see the tree on the left fill up with namespaces, with the names of any test fixtures inside them and the names of any tests inside them. Now you can see why it’s important to put those attributes on our classes and tests. It’s how we make out testing GUI find them and run them. Make sure the top node of the tree is selected and click “Run” on the right side of the form. You see the progress bar very quickly turn green to signify success. If the bar is red, it means that test has failed and you can go back and make it succeed. I won’t go into too much detail here on how to use all the features in the Nunit GUI but you can learn all you need by reading the documentation for it. Feel free to close the GUI, it will remember the last assembly you loaded in it next time. On important thing to note here is that once one test inside a test suite fails, all other tests will not run. **Console** Besides the GUI version of the Nunit test runner, you also get a Console test runner. This is especially good for when you have an automated build procedure that runs unattended. You can make it call the console version of Nunit which outputs directly into the stdOutput and have it log all results. To make the console do the testing, you need to switch to \[Nunit program files folder\]\\Bin . From there you can run Nunit-Console.exe providing the name or full path of the assembly to test against. I urge you to put that path inside the global PATH environment  variable so that you can use the console easily from anywhere. **More testing goodies we get** ·        Another attribute you can put on a test is the _\[Ignore(reason)\]_ attribute, Use this to skip certain tests , but the reason for their skip will be displayed inside the GUI. ·        You can have a \[Setup\] and \[TearDown\] method inside your fixture. The \[Setup\] runs before each test in the current fixture is run, and the \[TearDown\] runs _after_ each test.  These methods are very useful for when you want all your tests to use the same set of clean initialized data. In there you can initialize global variables, delete or create  needed files and so on. This of \[Setup\] as an implicit contructor for each test, and of \[TearDown\] as a destructor for it. Methods that are marked by these attributes should not be marked as tests as well! ·        You can have a \[TestFixtureSetUp \] and \[TestFixtureTearDown\]  methods as well. These methods will be run only once for each test fixture tested. Use them for global initialization and cleanup of resources that can be shared by all tests in that fixture. ·        Another excellent attribute we get is the \[ExcpectedException\] attribute. When a test method is decorated with this attribute and no exception of the type specified in the attribute is thrown inside the test, thw test has failed. This is perfect to check that your components throw exceptions at the right moment, such as bad user input and so on. We’ll use this attribute to add another test to our fixture, which test for the CalcException: \[Test\] \[ExpectedException(typeof(CalcException))\] public void  TestException() {       int retVal = calc.Add(null,22);       Assert.IsTrue(true); } As you can see it couldn’t be easier. **The Nunit-Addin** Now that you understand the basics of writing unit tests with Nunit, it’s time for me to introduce one of the coolest gadgets related to this subject – the [Nunit Addin](http://www.mutantdesign.co.uk/nunit-addin/). This add-in allows you to ,instead of re-opening the Nunit-Gui every time you need to make sure your tests pass, to just right click on the project or class you wish to test and hit “Run Test(s)”.  You’ll get all the information inside VS>NET’s output window. This add-in allows more than just this functionality, however. It allows you to test a single method from inside the code editor. Just click anywhere inside the code of that method and hit “Run test”. Another very powerful feature allows you to do what is called “Ad-Hoc testing”. You can create any method, and not even put a \[Test\] attribute on it. Than, inside that method right click and hit “Test with”-“Debugger” and you immediately step into that method without needed to create a separate project that calls this method. Indeed, very powerful. You can also debug using different versions of the .Net framework or even [Mono](http://www.go-mono.com/). This add-in is a must have for quick incremental development. **A word before we finish** The technique I’ve shown here means very little if not pursued diligently. Remember – the first thing you ever do is **write the test, not the code**.  If you keep this up you’ll eventually end up with a system that is fully testable and with fewer bugs. You’ll also find that you think about your component’s design more responsibly, because you’re looking at them from a different perspective.  Once you get the “Zen” of it, you’ll start to even have more fun doing it. You’ll also gain confidence in changing your code. You’ll get instant feedback if something broke and you can squash bugs at their inception point. Another thing that needs to be known– Nunit is the unit testing framework for .Net, but like Nunit there are many others, for practically any semi-popular programming language out there. If you program in C++ for example, take a look at [CPPUnit](http://www.sourceforge.net/projects/cppunit/). There’s also a [JUnit](http://www.junit.org/index.htm) out there. In fact, Nunit is a port from JUnit into .Net. There are also commercial frameworks and addins that try to provide added functionality through add-ins for .Net unit testing: Some of those include [HarnessIt](http://www.unittesting.com/),[csUnit](http://www.csunit.org/index.php) and [X-Unity](http://x-unity.miik.com.ua/TestStudio.aspx#). Most of the non-.Net frameworks all support the same kind of logical notions of test case, fixture and suite, but each one might provide different means of expressing them. Attributes are unique to .Net but in other OO laguages you might have to derive a class from  TestFixture to declare it  as a fixture and so on. You can find the complete list of frameworks over at [www.xprogramming.com](http://www.xprogramming.com/) (look for the “downloads” link). **Advanced issues** This article is just a first in this series. In the next articles I’ll talk more about real world problems facing a developer who wants to test real-world applications. Some of these issues include: ·         Testing abstract classes? ·         Testing complex object models and dependencies ·         Testing database related features ·         Mock objects and their use ·         Testing GUI interactions ## More in Unit Testing [All posts in Unit Testing](https://osherove.com/blog/category/unit-testing) - Jun 19, 2004 ### [Simplified Database Unit testing using Enterprise Services](https://osherove.com/blog/2004/6/19/simplified-database-unit-testing-using-enterprise-services.html) - Sep 24, 2003 ### [Fun with Unit Tests – Testing abstract classes](https://osherove.com/blog/2003/9/24/fun-with-unit-tests-testing-abstract-classes.html) --- title: "Asp.Net error handling" url: "https://osherove.com/blog/2003/9/21/aspnet-error-handling.md" canonical: "https://osherove.com/blog/2003/9/21/aspnet-error-handling.html" published: "2003-09-21T11:22:00" updated: "2003-09-21T11:22:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "Here' are two ways to incorporate global error handling in ASP.NET: Implement IHttpHandler Use the HttpApplication.Error event And here's a more in-depth article about this subject (also points to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Asp.Net error handling By Roy Osherove September 21, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 21, 2003; technical details may be outdated. Here' are two ways to incorporate global error handling in ASP.NET: - [Implement _IHttpHandler_](http://staff.develop.com/candera/weblog2/permalink.aspx/60cb3dc2-fe67-4f88-9771-eeaebe507795) - [Use the _HttpApplication.Error_ event](http://dotnetguy.techieswithcats.com/archives/003785.shtml) And here's a more in-depth article about this subject (also points to HttpApplication.Error): - [Global Error handling in ASP.Net](http://www.developer.com/net/asp/article.php/961301) And here's a recent chat on MSDN: - [ASP.NET error handling and tracing](http://msdn.microsoft.com/chats/vstudio/vstudio_051602.asp) ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Sep 22, 2003 ### [Sharing ASP.NET user controls accross projects](https://osherove.com/blog/2003/9/22/sharing-aspnet-user-controls-accross-projects.html) - Sep 21, 2003 ### [\[Article\] Introduction to Test-driven development with NUnit and the NUnit-Add-in](https://osherove.com/blog/2003/9/21/article-introduction-to-test-driven-development-with-nunit-a.html) - Sep 17, 2003 ### [.Net resources abound at ARK 3.0](https://osherove.com/blog/2003/9/17/net-resources-abound-at-ark-30.html) - Sep 15, 2003 ### [I'm in the "contributor spotlight" on MSDNAA](https://osherove.com/blog/2003/9/15/im-in-the-quotcontributor-spotlightquot-on-msdnaa.html) --- title: "Looking for a reporting solution for .Net" url: "https://osherove.com/blog/2003/9/21/looking-for-a-reporting-solution-for-net.md" canonical: "https://osherove.com/blog/2003/9/21/looking-for-a-reporting-solution-for-net.html" published: "2003-09-21T08:05:00" updated: "2003-09-21T08:05:00" tags: ["Off Topic"] author: "Roy Osherove" description: "We're currently looking for a good Reports generator for .Net. Crystal sucks payment wise, and I know ActiveReports is good, but does anyone know another one? Support for hebrew is NOT a requirement in this case. Just…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Looking for a reporting solution for .Net By Roy Osherove September 21, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 21, 2003; technical details may be outdated. We're currently looking for a good Reports generator for .Net. Crystal sucks payment wise, and I know ActiveReports is good, but does anyone know another one? Support for hebrew is NOT a requirement in this case. Just good features and ease of use. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 22, 2003 ### [Cool cases](https://osherove.com/blog/2003/9/22/cool-cases.html) - Sep 21, 2003 ### [Where did the desktops disappear?](https://osherove.com/blog/2003/9/21/where-did-the-desktops-disappear.html) - Sep 20, 2003 ### [Making a decision in 4 seconds (or: How to know what you \*really\* want to do)](https://osherove.com/blog/2003/9/20/making-a-decision-in-4-seconds-or-how-to-know-what-you-reall.html) - Sep 17, 2003 ### [XP is still widely unknown black magic](https://osherove.com/blog/2003/9/17/xp-is-still-widely-unknown-black-magic.html) --- title: "Making a decision in 4 seconds (or: How to know what you *really* want to do)" url: "https://osherove.com/blog/2003/9/20/making-a-decision-in-4-seconds-or-how-to-know-what-you-reall.md" canonical: "https://osherove.com/blog/2003/9/20/making-a-decision-in-4-seconds-or-how-to-know-what-you-reall.html" published: "2003-09-20T10:28:00" updated: "2003-09-20T10:28:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Need to decide between two things and it's really hard to make the decision? Here's a quick way to understand what you really really want to choose: Take a coin to flip Decide in advance which side represents each…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Making a decision in 4 seconds (or: How to know what you \*really\* want to do) By Roy Osherove September 20, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 20, 2003; technical details may be outdated. Need to decide between two things and it's really hard to make the decision? Here's a quick way to understand what you **really really** want to choose: - Take a coin to flip - Decide in advance which side represents each decision - Promise yourself that whatever the coin falls onto, you'll respect that decision - Now throw the coin and let it fall on the floor - Watch which side is up - Do you feel the urge to re-throw the coin so you'll get the other decision, or do you want to just start doing it? - Now you know what you **really** want to do. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 21, 2003 ### [Where did the desktops disappear?](https://osherove.com/blog/2003/9/21/where-did-the-desktops-disappear.html) - Sep 21, 2003 ### [Looking for a reporting solution for .Net](https://osherove.com/blog/2003/9/21/looking-for-a-reporting-solution-for-net.html) - Sep 17, 2003 ### [XP is still widely unknown black magic](https://osherove.com/blog/2003/9/17/xp-is-still-widely-unknown-black-magic.html) - Sep 14, 2003 ### [Interesting research](https://osherove.com/blog/2003/9/14/interesting-research.html) --- title: "Cool site: Software Reality" url: "https://osherove.com/blog/2003/9/19/cool-site-software-reality.md" canonical: "https://osherove.com/blog/2003/9/19/cool-site-software-reality.html" published: "2003-09-19T20:32:00" updated: "2003-09-19T20:32:00" tags: ["Cool sites"] author: "Roy Osherove" description: "An innocent link in Benjamin's blog lead me to this very nice site about software development. It contains a lot of articles about lots of stuff, most with a touch of satire in them, but it all seems like its a very…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool site: Software Reality By Roy Osherove September 19, 2003 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published September 19, 2003; technical details may be outdated. An innocent link in [Benjamin's blog](http://benjaminm.net/PermaLink.aspx?guid=c470f292-78cf-4555-94ce-0af22f8398b1) lead me to [this very nice site](http://www.softwarereality.com/) about software development. It contains a lot of articles about lots of stuff, most with a touch of satire in them, but it all seems like its a very good read. The reason **I** like the site is because it seems to have lots of articles about XP and agile development, book reviews and so on. It's also one of the few places so far where I have seen a look at XP practices with a grain of salt, and bothers to give some good reasons for it. Not everything is hunky Dorry about it, according to them, and I always like to hear a second opinion. In fact, the “this sucks and here's why” opinions are usually the the ones you learn the most from.  For example, when I plan to buy a book at [Amazon](https://osherove.com/blog/2003/9/19/www.amazon.com), I always look for reviews that gave the book bad ratings. Why? Because if I can't find anything **there** that I think is viable, and there are enough good reviews for the book, there's a good chance the book might be what it's cover pretends to be. Mad readers are the best way to know if a book sucks. The same goes for other areas. If a company wants to know if it has any problems or possible ways to improve and do better, it should talk directly to those who say it has problems or those who will never buy from it.. If a practice it discouraged by parts of the community, a big **why** is a must from those that are in charge of this practice. Usually, you get to learn something new in the process, or at least discover a new way to look at things. ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Oct 5, 2003 ### [Good JavaScript reference and help](https://osherove.com/blog/2003/10/5/good-javascript-reference-and-help.html) - Sep 25, 2003 ### [AmazReplacer - Convert Amazon's URL into your referrer URL automatically](https://osherove.com/blog/2003/9/25/amazreplacer-convert-amazons-url-into-your-referrer-url-auto.html) - Sep 17, 2003 ### [Feeds of interest](https://osherove.com/blog/2003/9/17/feeds-of-interest.html) - Sep 11, 2003 ### [Geeky lectures - part III](https://osherove.com/blog/2003/9/11/geeky-lectures-part-iii.html) --- title: "Data Access application block v3.0 has some good stuff" url: "https://osherove.com/blog/2003/9/19/data-access-application-block-v30-has-some-good-stuff.md" canonical: "https://osherove.com/blog/2003/9/19/data-access-application-block-v30-has-some-good-stuff.html" published: "2003-09-19T19:27:00" updated: "2003-09-19T19:27:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Ugh. We just found out that our car's window has been smashed and the radio-disc has been taken. This happens in the same week that my wife has a small accident with a city bus smashing into her car(she's alrught!), and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Data Access application block v3.0 has some good stuff By Roy Osherove September 19, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 19, 2003; technical details may be outdated. Ugh. We just found out that our car's window has been smashed and the radio-disc has been taken. This happens in the same week that my wife has a small accident with a city bus smashing into her car(she's alrught!), and the day after that her shoes tear up in the middle of the street, making her walk to work barefoot. Hell of a week. Meanwhile [Fabrice reports](http://weblogs.asp.net/fmarguerie/posts/28256.aspx) there's a [version 3.0 of the data access application block](http://www.gotdotnet.com/community/workspaces/newsitem.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431&newsId=1304)! This one introduces support for generic provider interfaces, so you can use it to work against not just SQL server, but against anything with an IdbConnection interface (Oracle, ODBC...). Another cool thing I've noticed in this version - it has a whole solution of **Unit Tests** against the application block. I think that is a great example of real-world unit testing, and will be looking deep into how they tackle the issue of testing components that are supposed to work against a database. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 22, 2003 ### [NAnt-addin: another coolness in the making?](https://osherove.com/blog/2003/9/22/nant-addin-another-coolness-in-the-making.html) - Sep 21, 2003 ### [A macro to automatically attach to aspnet\_wp.exe](https://osherove.com/blog/2003/9/21/a-macro-to-automatically-attach-to-aspnet_wpexe.html) - Sep 17, 2003 ### [A glimpse into the future](https://osherove.com/blog/2003/9/17/a-glimpse-into-the-future.html) - Sep 16, 2003 ### [Real world test driven development](https://osherove.com/blog/2003/9/16/real-world-test-driven-development.html) --- title: "Passed MCP 70-316" url: "https://osherove.com/blog/2003/9/19/passed-mcp-70-316.md" canonical: "https://osherove.com/blog/2003/9/19/passed-mcp-70-316.html" published: "2003-09-19T10:42:00" updated: "2003-09-19T10:42:00" tags: [".Net Original"] author: "Roy Osherove" description: "Today was a good day. Got up at 7am(on a Friday - that's a Saturday for you US folks) and drove Tal to her university course, and I myself headed over to “John Brice” IT schools HQ and took my first MCP exam related to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Passed MCP 70-316 By Roy Osherove September 19, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 19, 2003; technical details may be outdated. Today was a good day. Got up at 7am(on a Friday - that's a Saturday for you US folks) and drove Tal to her university course, and I myself headed over to “John Brice” IT schools HQ and took my first MCP exam related to .Net - 70-316 (Windows apps with C#). **Passed the exam with a 915 score**. Yey! It ended up easier than I thought. If you have enough experience, the answers to most questions are simply logical conclusions, denying the applicability of the other answers possible answers.. The test itself was more relevant for today's developer than the VB6 tests I took back at 1999. The questions seemed to be more measuring real world experience(sure there are those pesky syntax questions but not all of them), which I like. So, Next up is web applications I think. Though this will be harder, since I have far less experience with that area. Still, a good day :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 23, 2003 ### [I'm available](https://osherove.com/blog/2003/9/23/im-available.html) - Sep 21, 2003 ### [\[Article\] Introduction to Test-driven development with NUnit and the NUnit-Add-in](https://osherove.com/blog/2003/9/21/article-introduction-to-test-driven-development-with-nunit-a.html) - Sep 18, 2003 ### [RegexLib RSS now even cooler](https://osherove.com/blog/2003/9/18/regexlib-rss-now-even-cooler.html) - Sep 15, 2003 ### [I'm in the "contributor spotlight" on MSDNAA](https://osherove.com/blog/2003/9/15/im-in-the-quotcontributor-spotlightquot-on-msdnaa.html) --- title: "RegexLib RSS now even cooler" url: "https://osherove.com/blog/2003/9/18/regexlib-rss-now-even-cooler.md" canonical: "https://osherove.com/blog/2003/9/18/regexlib-rss-now-even-cooler.html" published: "2003-09-18T09:16:00" updated: "2003-09-18T09:16:00" tags: [".Net Original", "Blogging"] author: "Roy Osherove" description: "Darren just informed me that the RegexLib RSS feed now shows the description of the regex in the “subject” instead of the full regex text, which is a real blessing. Now I can sit back and watch for new and cool regexs…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # RegexLib RSS now even cooler By Roy Osherove September 18, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published September 18, 2003; technical details may be outdated. [Darren](http://weblogs.asp.net/dneimke/) just informed me that the [RegexLib RSS feed](http://www.regexlib.com/Rss.aspx) now shows the description of the regex in the “subject” instead of the full regex text, which is a real blessing. Now I can sit back and watch for new and cool regexs from the comfort of my aggregator :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 21, 2003 ### [\[Article\] Introduction to Test-driven development with NUnit and the NUnit-Add-in](https://osherove.com/blog/2003/9/21/article-introduction-to-test-driven-development-with-nunit-a.html) - Sep 19, 2003 ### [Passed MCP 70-316](https://osherove.com/blog/2003/9/19/passed-mcp-70-316.html) - Sep 15, 2003 ### [I'm in the "contributor spotlight" on MSDNAA](https://osherove.com/blog/2003/9/15/im-in-the-quotcontributor-spotlightquot-on-msdnaa.html) - Sep 14, 2003 ### [IsNumeric() hell](https://osherove.com/blog/2003/9/14/isnumeric-hell-1.html) --- title: "Ed has returned to the building" url: "https://osherove.com/blog/2003/9/18/ed-has-returned-to-the-building.md" canonical: "https://osherove.com/blog/2003/9/18/ed-has-returned-to-the-building.html" published: "2003-09-18T04:23:00" updated: "2003-09-18T04:23:00" tags: ["Blogging"] author: "Roy Osherove" description: "I went to a casual dinner tonight with some bloggers in the area, including Chris Chris Sells and Robert Robert Scoble . As a result, I feel inspired to make an honest effort to get back to blogging. [ Ed Kaim ] Woohoo!…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ed has returned to the building By Roy Osherove September 18, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published September 18, 2003; technical details may be outdated. <table width="100%"><tbody><tr><td><p><em>I went to a casual dinner tonight with some bloggers in the area, including </em><a href="http://www.sellsbrothers.com/"><em>Chris </em></a><em><a href="http://www.sellsbrothers.com/" title="">Chris Sells</a></em><em> and </em><a href="http://radio.weblogs.com/0001011"><em>Robert </em></a><em><a href="http://scoble.weblogs.com/" title="">Robert Scoble</a></em><em>. As a result, I feel inspired to make an honest effort to get back to blogging.</em></p><p>[<a href="http://blogs.gotdotnet.com/EdKaim/permalink.aspx/101f796d-01e0-4bf6-b2d8-2395a86a8653">Ed Kaim</a>]</p><p>Woohoo!  I knew keeping that subscription wouldn't fail me...</p></td></tr></tbody></table> ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Sep 22, 2003 ### [Nice blog](https://osherove.com/blog/2003/9/22/nice-blog.html) - Sep 18, 2003 ### [RegexLib RSS now even cooler](https://osherove.com/blog/2003/9/18/regexlib-rss-now-even-cooler.html) - Sep 9, 2003 ### [What do I subscribe to? Get the OPML](https://osherove.com/blog/2003/9/9/what-do-i-subscribe-to-get-the-opml.html) - Sep 9, 2003 ### [Google likes me](https://osherove.com/blog/2003/9/9/google-likes-me.html) --- title: "XmlUnit" url: "https://osherove.com/blog/2003/9/18/xmlunit.md" canonical: "https://osherove.com/blog/2003/9/18/xmlunit.html" published: "2003-09-18T03:48:00" updated: "2003-09-18T03:48:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "This is a good idea: XmlUnit ofr .net and Java [via XProgramming via Robert ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # XmlUnit By Roy Osherove September 18, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 18, 2003; technical details may be outdated. This is a good idea: [XmlUnit ofr .net and Java](http://xmlunit.sourceforge.net/) \[via [XProgramming](http://www.xprogramming.com/software.htm) via [Robert](http://weblogs.asp.net/rhurlbut/posts/28036.aspx)\] ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Sep 25, 2003 ### [Expresso up to version 1.2 already](https://osherove.com/blog/2003/9/25/expresso-up-to-version-12-already.html) - Sep 22, 2003 ### [NAnt-addin: another coolness in the making?](https://osherove.com/blog/2003/9/22/nant-addin-another-coolness-in-the-making.html) - Sep 17, 2003 ### [More useful tools (and these are all free)](https://osherove.com/blog/2003/9/17/more-useful-tools-and-these-are-all-free.html) - Sep 16, 2003 ### [A list of regular expression tools](https://osherove.com/blog/2003/9/16/a-list-of-regular-expression-tools.html) --- title: ".Net resources abound at ARK 3.0" url: "https://osherove.com/blog/2003/9/17/net-resources-abound-at-ark-30.md" canonical: "https://osherove.com/blog/2003/9/17/net-resources-abound-at-ark-30.html" published: "2003-09-17T20:24:00" updated: "2003-09-17T20:24:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "Benjamin J. J. Voigt posts what seems to be a very valuable .net resource: ARK 3.0 . Lots of cool and interesting articles in there, including presentations and other goodies. In first glance I really liked these…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net resources abound at ARK 3.0 By Roy Osherove September 17, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 17, 2003; technical details may be outdated. [Benjamin J. J. Voigt posts](http://www.shamiro.ch/PermaLink.aspx?guid=d39cdcf0-49d1-4fcb-bc4d-7fbf028cf80d) what seems to be a very valuable .net resource: [ARK 3.0](http://docs.msdnaa.net/ark_new3.0/cd3/npage.htm). Lots of cool and interesting articles in there, including presentations and other goodies. In first glance I really liked these articles: - [Scripting .NET using Mondrian](http://docs.msdnaa.net/ark_new3.0/cd3/content/Type_Articles%20&%20White%20Papers.htm#title2_6) - [Design and Implementation of Generics for the .NET Common Language Runtime](http://docs.msdnaa.net/ark_new3.0/cd3/content/Type_Articles%20&%20White%20Papers.htm#title5_1) - [Stack Inspection: Theory and Variants](http://docs.msdnaa.net/ark_new3.0/cd3/content/Type_Articles%20&%20White%20Papers.htm#title2_7) - [MSDN Wonders of WinForms column: More WinForms Multi-Threading](http://docs.msdnaa.net/ark_new3.0/cd3/content/Type_Articles%20&%20White%20Papers.htm#title3_2) lectures: - [.NET Enterprise Services (audio)](http://docs.msdnaa.net/ark_new3.0/cd3/content/Type_Talks%20&%20Lectures.htm#title3_1) - [A Tour of the Shared Source CLI Distribution (video)](http://docs.msdnaa.net/ark_new3.0/cd3/content/Type_Talks%20&%20Lectures.htm#title4_1) There are also full books and sample book chapters for download: - [.NET Framework Security](http://docs.msdnaa.net/ark_new3.0/cd3/content/Type_Books.htm#title2_1) (full book) - [COM and .NET Component Services](http://docs.msdnaa.net/ark_new3.0/cd3/content/Type_Books.htm#title3_7) (Sample [chapter 10](http://docs.msdnaa.net/ark_new3.0/cd3/content/Books/ch10.pdf)) - [Building Secure Microsoft ASP.NET Applications](http://docs.msdnaa.net/ark_new3.0/cd3/content/Type_Books.htm#title5_4) (Sample [chapter 8](http://docs.msdnaa.net/ark_new3.0/cd3/content/Books/0735618909_SecureASPNET_Ch08.pdf)) ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Sep 21, 2003 ### [\[Article\] Introduction to Test-driven development with NUnit and the NUnit-Add-in](https://osherove.com/blog/2003/9/21/article-introduction-to-test-driven-development-with-nunit-a.html) - Sep 21, 2003 ### [Asp.Net error handling](https://osherove.com/blog/2003/9/21/aspnet-error-handling.html) - Sep 15, 2003 ### [I'm in the "contributor spotlight" on MSDNAA](https://osherove.com/blog/2003/9/15/im-in-the-quotcontributor-spotlightquot-on-msdnaa.html) - Sep 10, 2003 ### [More geeky streaming lectures](https://osherove.com/blog/2003/9/10/more-geeky-streaming-lectures.html) --- title: "Feeds of interest" url: "https://osherove.com/blog/2003/9/17/feeds-of-interest.md" canonical: "https://osherove.com/blog/2003/9/17/feeds-of-interest.html" published: "2003-09-17T19:33:00" updated: "2003-09-17T19:33:00" tags: ["Cool sites"] author: "Roy Osherove" description: "MSDN magazine - recent articles: Feed MSDN - just published: Feed 4GuysFromRolla headlines: Feed The Google weblog: Feed (always cool know leanr of the latest new features in Google..) Dilbert: Feed Garfield: Feed…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Feeds of interest By Roy Osherove September 17, 2003 In [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published September 17, 2003; technical details may be outdated. - MSDN magazine - recent articles: [Feed](http://msdn.microsoft.com/msdnmag/rss/recent.xml) - MSDN - just published: [Feed](http://msdn.microsoft.com/rss.xml) - 4GuysFromRolla headlines: [Feed](http://aspnet.4guysfromrolla.com/rss/rss.aspx) - The Google weblog: [Feed](http://google.blogspace.com/index.xml) (always cool know leanr of the latest new features in Google..) - Dilbert: [Feed](http://dwlt.net/tapestry/dilbert.rdf) - Garfield: [Feed](http://dwlt.net/tapestry/garfield.rdf) - RegexLib new items: [Feed](http://www.regexlib.com/Rss.aspx) (**suggestion to [Darren](http://weblogs.asp.net/DNeimke)**: It would be cool if the title of the posts contained the description, not the actual patterns text, as it makes it hard on the eyes inside SharpReader..) - **Update**: Found this: GotDotNet new user samples [feed](http://www.gotdotnet.com/community/resources/rss.aspx?feed=sample) And some Ego surfing link feeds: -  [Feedster RSS search](http://www.feedster.com/rss.php?q=Roy%20Osherove&sort=date&ie=UTF-8) -  [DayPop](http://www.daypop.com/search?q=Roy+Osherove&s=1&c=10&t=a&o=rss) -  [GoogleAlert](http://www.googlealert.com/) ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Sep 25, 2003 ### [AmazReplacer - Convert Amazon's URL into your referrer URL automatically](https://osherove.com/blog/2003/9/25/amazreplacer-convert-amazons-url-into-your-referrer-url-auto.html) - Sep 19, 2003 ### [Cool site: Software Reality](https://osherove.com/blog/2003/9/19/cool-site-software-reality.html) - Sep 11, 2003 ### [Geeky lectures - part III](https://osherove.com/blog/2003/9/11/geeky-lectures-part-iii.html) - Sep 10, 2003 ### [More geeky streaming lectures](https://osherove.com/blog/2003/9/10/more-geeky-streaming-lectures.html) --- title: "XP is still widely unknown black magic" url: "https://osherove.com/blog/2003/9/17/xp-is-still-widely-unknown-black-magic.md" canonical: "https://osherove.com/blog/2003/9/17/xp-is-still-widely-unknown-black-magic.html" published: "2003-09-17T19:20:00" updated: "2003-09-17T19:20:00" tags: ["Off Topic"] author: "Roy Osherove" description: "XP always interested me. I always wanted to try out real-world live XP style development but never really got the chance. The problem is, at least in Israel, most people don't even know what this acronym means, let…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # XP is still widely unknown black magic By Roy Osherove September 17, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 17, 2003; technical details may be outdated. XP always interested me. I always wanted to try out real-world live XP style development but never really got the chance. The problem is, at least in Israel, most people don't even know what this acronym means, let alone would be willing to try out pair programming (which, if you think about it a minute, you do almost daily but in short bursts instead of most of the time). Although XP has lots of facets to it, the fascinating fact is that most developers I know don't even know how to do the most basic and fundamental thing when it comes to good coding practices: Test-Driven development and defensive programming. What do I mean? Ask the developer next to you “have you ever done Unit Testing?”  its very likely that you'll get  a positive answer to that question. But ask the following questions: 1. How have you done Unit Testing? 2. Have you used any of the Unit testing frameworks? 3. Did you write or plan the unit tests before or after you've written the code? 4. Can you repeat those tests automatically to make sure nothing is broken? 5. What's the first thing you usually write inside a method body? and so on. Here are some answers you might get(or you might answer them yourself): **How have you done Unit Testing?** - _“Well, I opened the GUI and played around with it for a while to make sure the calculation engine was correct“_ - _“I created a small program that uses my component to do some stuff and make sure it doesn't crash or anything“_ - _“I had our junior developer come and play around with the code/GUI/component“_ **Have you used any of the Unit testing frameworks?** - _“What testing frameworks?“_ - _“Oh, I've heard something about that. 'Unit' something wasn't it?“_ - _“I read some article about it“_ - _“I checked it out but didn't get enough time to play with it“_ - _“Nope“_ **Did you write or plan the unit tests before or after you've written the code?** - _“After“_ - _“Write a unit test? I do it all by hand“_ - _“Plan a unit test? you must be joking. The code changes every hour!“_ - _“I wanted to do it before but my dev lead said we don't have enough time for that“_ **Can you repeat those tests automatically to make sure nothing is broken?** - _“Probably. I remember most all of them“_ - _“Yeah right“_ - _“Not really, it was all manual“_ - _“We recorded some of them with \[Insert GUI test automation tool here\]“_ **What's the first thing you usually write inside a method body?** - _“Uh.. the method body?“_ - _“What do you mean?“_ - _“Try{“_ These answers ain't **bad**. They just indicate that there's enough lack of knowledge in the developer community about agile processes to make it scary. Once a developer does get to experience some of the agile processes (test-driven development for example) its very hard to go back to the old ways. It's infectious.  The problem is getting the developer to invest their time, or better yet, getting the **company** to invest its time in learning these new processes. Even though agile methodologies have been around for quite some time now, its still very hard for developers and business managers alike to adept to them and learn them. There's a kind of “_It looks pretty weird and silly. It's never gonna work_” attitude , especially about pair programming, that is really hard to break. It **has** to come down from management, because sometimes developers just won't do themselves and their companies that favor on their own. Another problem is that social behavior makes it hard to implement on your own. You certainly can get the feeling you're just being silly trying to get a developer to sit with you on a project when everyone else just sits there looking for the slightest hint of miscalculation or error to say “_I told you it was stupid!“_. Its never gonna work if you can't back it up with your dev buddies at the helm along with you. Funny enough, this whole post was supposed to be a couple of lines about an XP link I came across on the [XP mailing list](http://groups.yahoo.com/group/extremeprogramming/): the [XP quick reference](http://xp123.com/xplor/xp0202/xp-one-page.PDF) PDF file. Oh. and the first thing you usually write inside a method body? _Assert_s and parameter checking (if needed). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 21, 2003 ### [Looking for a reporting solution for .Net](https://osherove.com/blog/2003/9/21/looking-for-a-reporting-solution-for-net.html) - Sep 20, 2003 ### [Making a decision in 4 seconds (or: How to know what you \*really\* want to do)](https://osherove.com/blog/2003/9/20/making-a-decision-in-4-seconds-or-how-to-know-what-you-reall.html) - Sep 14, 2003 ### [Interesting research](https://osherove.com/blog/2003/9/14/interesting-research.html) - Sep 11, 2003 ### [Happy Anniversary, honey. I love you.](https://osherove.com/blog/2003/9/11/happy-anniversary-honey-i-love-you.html) --- title: "More useful tools (and these are all free)" url: "https://osherove.com/blog/2003/9/17/more-useful-tools-and-these-are-all-free.md" canonical: "https://osherove.com/blog/2003/9/17/more-useful-tools-and-these-are-all-free.html" published: "2003-09-17T17:53:00" updated: "2003-09-17T17:53:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "following in the footsteps of Scott Hanselman who posted his list of Power Tools that he uses, I decided to post a partial list of the ones I use. How mine probably will differ is that mine will be all *free* utilities.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More useful tools (and these are all free) By Roy Osherove September 17, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 17, 2003; technical details may be outdated. _following in the footsteps of_ [_Scott Hanselman_](http://radio.weblogs.com/0106747/) _who posted his list of_ [_Power Tools_](http://radio.weblogs.com/0106747/stories/2003/09/09/scottHanselmansUltimateDeveloperAndPowerUsersToolsList.html) _that he uses, I decided to_ [_post a partial list_](http://weblogs.asp.net/bhouse/posts/27986.aspx) _of the ones I use.  How mine probably will differ is that mine will be all \*free\* utilities.  They are broken down into command line, .NET Utils, and windows utils._   \[ [Brenton House](http://weblogs.asp.net/bhouse/posts/27988.aspx) \] Yummy! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Sep 22, 2003 ### [NAnt-addin: another coolness in the making?](https://osherove.com/blog/2003/9/22/nant-addin-another-coolness-in-the-making.html) - Sep 18, 2003 ### [XmlUnit](https://osherove.com/blog/2003/9/18/xmlunit.html) - Sep 16, 2003 ### [A list of regular expression tools](https://osherove.com/blog/2003/9/16/a-list-of-regular-expression-tools.html) - Sep 10, 2003 ### [Scott Hanselman's C:\\Utils](https://osherove.com/blog/2003/9/10/scott-hanselmans-cutils.html) --- title: "A glimpse into the future" url: "https://osherove.com/blog/2003/9/17/a-glimpse-into-the-future.md" canonical: "https://osherove.com/blog/2003/9/17/a-glimpse-into-the-future.html" published: "2003-09-17T17:47:00" updated: "2003-09-17T17:47:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Jesse Ezell points to a book preview that tells a lot about what's coming next for ADO.NET . The same is available for ASP.NET . [ Fabrice MARGUERIE ] (Insert happy remark here)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A glimpse into the future By Roy Osherove September 17, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 17, 2003; technical details may be outdated. [_Jesse Ezell_](http://weblogs.asp.net/jezell/posts/27888.aspx) _points to a book preview that tells a lot about what's coming next for_ [_ADO.NET_](http://www.daveandal.net/books/8391/8391-intro-toc.htm)_. The same is available for_ [_ASP.NET_](http://www.daveandal.net/books/8960/8960-intro-toc.htm)_._ \[[Fabrice MARGUERIE](http://weblogs.asp.net/fmarguerie/posts/27964.aspx) \] (Insert happy remark here) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 21, 2003 ### [A macro to automatically attach to aspnet\_wp.exe](https://osherove.com/blog/2003/9/21/a-macro-to-automatically-attach-to-aspnet_wpexe.html) - Sep 19, 2003 ### [Data Access application block v3.0 has some good stuff](https://osherove.com/blog/2003/9/19/data-access-application-block-v30-has-some-good-stuff.html) - Sep 16, 2003 ### [Real world test driven development](https://osherove.com/blog/2003/9/16/real-world-test-driven-development.html) - Sep 16, 2003 ### [VB.Net Whidbey Nuggets](https://osherove.com/blog/2003/9/16/vbnet-whidbey-nuggets.html) --- title: "Real world test driven development" url: "https://osherove.com/blog/2003/9/16/real-world-test-driven-development.md" canonical: "https://osherove.com/blog/2003/9/16/real-world-test-driven-development.html" published: "2003-09-16T15:05:00" updated: "2003-09-16T15:05:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Peter gives an excellent example of doing real-world Test-Driven development using NUnit 2.1. It's all about simplicity. This example is good because it's not really an example. It's something he actually had to do, and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Real world test driven development By Roy Osherove September 16, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 16, 2003; technical details may be outdated. [Peter gives an excellent example](http://www.peterprovost.org/weblog/permalink.aspx?guid=457ece41-473e-4509-8e08-6aed7d345bc8) of doing real-world Test-Driven development using [NUnit](http://www.nunit.org/) 2.1. It's all about simplicity. This example is good because it's not really an example. It's something he actually had to do, and he just shows how he started doing it. Very nice. It gave me lots of confidence in how I write my unit testing code. It's practically the same technique. Teeny-tiny steps. I find the amount of bugs I find and fix  before they turn into all-nighters staggering. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 19, 2003 ### [Data Access application block v3.0 has some good stuff](https://osherove.com/blog/2003/9/19/data-access-application-block-v30-has-some-good-stuff.html) - Sep 17, 2003 ### [A glimpse into the future](https://osherove.com/blog/2003/9/17/a-glimpse-into-the-future.html) - Sep 16, 2003 ### [VB.Net Whidbey Nuggets](https://osherove.com/blog/2003/9/16/vbnet-whidbey-nuggets.html) - Sep 13, 2003 ### [Pure simplicity](https://osherove.com/blog/2003/9/13/pure-simplicity.html) --- title: "A list of regular expression tools" url: "https://osherove.com/blog/2003/9/16/a-list-of-regular-expression-tools.md" canonical: "https://osherove.com/blog/2003/9/16/a-list-of-regular-expression-tools.html" published: "2003-09-16T11:15:00" updated: "2003-09-16T11:15:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "http://www.larkware.com/RegexTools.html Need I say more? Do you know any other good ones?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A list of regular expression tools By Roy Osherove September 16, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 16, 2003; technical details may be outdated. [http://www.larkware.com/RegexTools.html](http://www.larkware.com/RegexTools.html) Need I say more? Do you know any other good ones? ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Sep 18, 2003 ### [XmlUnit](https://osherove.com/blog/2003/9/18/xmlunit.html) - Sep 17, 2003 ### [More useful tools (and these are all free)](https://osherove.com/blog/2003/9/17/more-useful-tools-and-these-are-all-free.html) - Sep 10, 2003 ### [Scott Hanselman's C:\\Utils](https://osherove.com/blog/2003/9/10/scott-hanselmans-cutils.html) - Sep 3, 2003 ### [Cool utility of the day: Code Snippet Compiler](https://osherove.com/blog/2003/9/3/cool-utility-of-the-day-code-snippet-compiler.html) --- title: "VB.Net Whidbey Nuggets" url: "https://osherove.com/blog/2003/9/16/vbnet-whidbey-nuggets.md" canonical: "https://osherove.com/blog/2003/9/16/vbnet-whidbey-nuggets.html" published: "2003-09-16T11:12:00" updated: "2003-09-16T11:12:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Ah. Some great VB.Net Whidbey Nuggets from David McNamee's blog. Looks like Good ol' VB is gonna be just as important to master as is C#, if not more. Productivity, remember? It's the one thing that will save your job…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VB.Net Whidbey Nuggets By Roy Osherove September 16, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 16, 2003; technical details may be outdated. Ah. Some great [VB.Net Whidbey Nuggets](http://www.davidmcnamee.com/permalink.aspx/aa4eea30-5f4e-4588-9e8e-ce09f7aaf50c) from David McNamee's blog. Looks like Good ol' VB is gonna be just as important to master as is C#, if not more. Productivity, remember?  It's the one thing that will save your job every time. (link via [Patrick](http://weblogs.asp.net/psteele/posts/27748.aspx)) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 17, 2003 ### [A glimpse into the future](https://osherove.com/blog/2003/9/17/a-glimpse-into-the-future.html) - Sep 16, 2003 ### [Real world test driven development](https://osherove.com/blog/2003/9/16/real-world-test-driven-development.html) - Sep 13, 2003 ### [Pure simplicity](https://osherove.com/blog/2003/9/13/pure-simplicity.html) - Sep 9, 2003 ### [IntelliJ IDEA Aurora Easter Egg](https://osherove.com/blog/2003/9/9/intellij-idea-aurora-easter-egg.html) --- title: "I'm in the \"contributor spotlight\" on MSDNAA" url: "https://osherove.com/blog/2003/9/15/im-in-the-quotcontributor-spotlightquot-on-msdnaa.md" canonical: "https://osherove.com/blog/2003/9/15/im-in-the-quotcontributor-spotlightquot-on-msdnaa.html" published: "2003-09-15T17:05:00" updated: "2003-09-15T17:05:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "Looks like one of my articles on MSDN-AA just made the contributor spotlight section on the front page! Check it out, it's down there on the right lower corner. I'm am honored :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm in the "contributor spotlight" on MSDNAA By Roy Osherove September 15, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 15, 2003; technical details may be outdated. Looks like one of  [my articles](http://www.msdnaa.com/Resources/display.aspx?ResID=2102) on MSDN-AA just made the [contributor spotlight section](http://www.msdnaa.com/) on the front page!  Check it out, it's down there on the right lower corner. I'm am honored :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 19, 2003 ### [Passed MCP 70-316](https://osherove.com/blog/2003/9/19/passed-mcp-70-316.html) - Sep 18, 2003 ### [RegexLib RSS now even cooler](https://osherove.com/blog/2003/9/18/regexlib-rss-now-even-cooler.html) - Sep 14, 2003 ### [IsNumeric() hell](https://osherove.com/blog/2003/9/14/isnumeric-hell-1.html) - Sep 14, 2003 ### [IsNumeric() hell](https://osherove.com/blog/2003/9/14/isnumeric-hell.html) --- title: "IsNumeric() hell" url: "https://osherove.com/blog/2003/9/14/isnumeric-hell-1.md" canonical: "https://osherove.com/blog/2003/9/14/isnumeric-hell-1.html" published: "2003-09-14T19:14:00" updated: "2003-09-14T19:14:00" tags: [".Net Original"] author: "Roy Osherove" description: "As an old VB'er I have to ask - what's up with the lack of IsNumeric() in the base class library? Why is there a Char.IsNumber() but no string.IsNumeric()? Why should I have to reference Microsoft.VisualBasic.Dll for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # IsNumeric() hell By Roy Osherove September 14, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 14, 2003; technical details may be outdated. As an old VB'er I have to ask - what's up with the lack of **IsNumeric()** in the base class library? Why is there a Char.IsNumber() but no string.IsNumeric()? Why should I have to reference Microsoft.VisualBasic.Dll for this “special” feature? (BTW - there's no harm in referencing that dll, it's a part of the framework just like System.XML is, but still...) Here's a [long and thorough discussion](http://tulsadnug.org/Forums/ShowPost.aspx?PostID=624) on the various “workarounds” needed to have this simple functionality implemented. Highlights: - Use the _Microsoft.VisualBasic_ namespace(easy and clean, but why so far away?) - Convert the string to a char array and check each item using _Char.IsNumber()_ - Convert the string to a char array and check each item using _if (arr\[i\] > 57 || arr\[i\] < 48) return false;_ - Try a conversion and use a _Try-Catch_ block to check for no- success(the worst performance option) - Use _Double.TryParse()_ to return a boolean for success (now why don't we have this for the other types?) - (added later:) Yeah, you can also use a regular expression to check for a numeric. Are we done yet? This reminds me of a joke (which you surely know): _NASA spent $12 million for a space pen that can write upside down while the russians just used a pencil. _ ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 18, 2003 ### [RegexLib RSS now even cooler](https://osherove.com/blog/2003/9/18/regexlib-rss-now-even-cooler.html) - Sep 15, 2003 ### [I'm in the "contributor spotlight" on MSDNAA](https://osherove.com/blog/2003/9/15/im-in-the-quotcontributor-spotlightquot-on-msdnaa.html) - Sep 14, 2003 ### [IsNumeric() hell](https://osherove.com/blog/2003/9/14/isnumeric-hell.html) - Sep 11, 2003 ### [Document outline](https://osherove.com/blog/2003/9/11/document-outline.html) --- title: "IsNumeric() hell" url: "https://osherove.com/blog/2003/9/14/isnumeric-hell.md" canonical: "https://osherove.com/blog/2003/9/14/isnumeric-hell.html" published: "2003-09-14T19:14:00" updated: "2003-09-14T19:14:00" tags: [".Net Original"] author: "Roy Osherove" description: "As an old VB'er I have to ask - what's up with the lack of IsNumeric() in the base class library? Why is there a Char.IsNumber() but no string.IsNumeric()? Why should I have to reference Microsoft.VisualBasic.Dll for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # IsNumeric() hell By Roy Osherove September 14, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 14, 2003; technical details may be outdated. As an old VB'er I have to ask - what's up with the lack of **IsNumeric()** in the base class library? Why is there a Char.IsNumber() but no string.IsNumeric()? Why should I have to reference Microsoft.VisualBasic.Dll for this “special” feature? (BTW - there's no harm in referencing that dll, it's a part of the framework just like System.XML is, but still...) Here's a [long and thorough discussion](http://tulsadnug.org/Forums/ShowPost.aspx?PostID=624) on the various “workarounds” needed to have this simple functionality implemented. Highlights: - Use the _Microsoft.VisualBasic_ namespace(easy and clean, but why so far away?) - Convert the string to a char array and check each item using _Char.IsNumber()_ - Convert the string to a char array and check each item using _if (arr\[i\] > 57 || arr\[i\] < 48) return false;_ - Try a conversion and use a _Try-Catch_ block to check for no- success(the worst performance option) - Use _Double.TryParse()_ to return a boolean for success (now why don't we have this for the other types?) - (added later:) Yeah, you can also use a regular expression to check for a numeric. Are we done yet? This reminds me of a joke (which you surely know): _NASA spent $12 million for a space pen that can write upside down while the russians just used a pencil. _ ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 15, 2003 ### [I'm in the "contributor spotlight" on MSDNAA](https://osherove.com/blog/2003/9/15/im-in-the-quotcontributor-spotlightquot-on-msdnaa.html) - Sep 14, 2003 ### [IsNumeric() hell](https://osherove.com/blog/2003/9/14/isnumeric-hell-1.html) - Sep 11, 2003 ### [Document outline](https://osherove.com/blog/2003/9/11/document-outline.html) - Sep 10, 2003 ### [Israeli .Net web casts - finally!](https://osherove.com/blog/2003/9/10/israeli-net-web-casts-finally.html) --- title: "Interesting research" url: "https://osherove.com/blog/2003/9/14/interesting-research.md" canonical: "https://osherove.com/blog/2003/9/14/interesting-research.html" published: "2003-09-14T07:14:00" updated: "2003-09-14T07:14:00" tags: ["Off Topic"] author: "Roy Osherove" description: "aoccdrnig to a rscheearch at an Elingsh uinervtisy, it deosn't mttaer in waht oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht frist and lsat ltteer is at the rghit pclae. The rset can be a toatl mses…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Interesting research By Roy Osherove September 14, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 14, 2003; technical details may be outdated.  aoccdrnig to a rscheearch at an Elingsh uinervtisy, it deosn't mttaer in waht oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht frist and lsat ltteer is at the rghit pclae. The rset can be a toatl mses and you can sitll raed it wouthit porbelm. Tihs is bcuseae we do not raed ervey lteter by it slef but the wrod as a wlohe. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 20, 2003 ### [Making a decision in 4 seconds (or: How to know what you \*really\* want to do)](https://osherove.com/blog/2003/9/20/making-a-decision-in-4-seconds-or-how-to-know-what-you-reall.html) - Sep 17, 2003 ### [XP is still widely unknown black magic](https://osherove.com/blog/2003/9/17/xp-is-still-widely-unknown-black-magic.html) - Sep 11, 2003 ### [Happy Anniversary, honey. I love you.](https://osherove.com/blog/2003/9/11/happy-anniversary-honey-i-love-you.html) - Sep 11, 2003 ### [Geeky lectures - part III](https://osherove.com/blog/2003/9/11/geeky-lectures-part-iii.html) --- title: "Pure simplicity" url: "https://osherove.com/blog/2003/9/13/pure-simplicity.md" canonical: "https://osherove.com/blog/2003/9/13/pure-simplicity.html" published: "2003-09-13T14:37:00" updated: "2003-09-13T14:37:00" tags: [".Net Quotations", "Tips & Tricks"] author: "Roy Osherove" description: "How's this for pure simplicity? In VS.Net - CTRL-X when nothing is selected - Cuts the current line CTRL-C when nothing is selected - Copies the current line I never knew and never tried. Huh. Thanks d0m1 !" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Pure simplicity By Roy Osherove September 13, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published September 13, 2003; technical details may be outdated. How's this for pure simplicity? In VS.Net -  - CTRL-X when nothing is selected - Cuts the current line - CTRL-C when nothing is selected - Copies the current line I never knew and never tried. Huh. Thanks [d0m1](http://dotnetjunkies.com/WebLog/d0m1/posts/1560.aspx)! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 16, 2003 ### [Real world test driven development](https://osherove.com/blog/2003/9/16/real-world-test-driven-development.html) - Sep 16, 2003 ### [VB.Net Whidbey Nuggets](https://osherove.com/blog/2003/9/16/vbnet-whidbey-nuggets.html) - Sep 9, 2003 ### [IntelliJ IDEA Aurora Easter Egg](https://osherove.com/blog/2003/9/9/intellij-idea-aurora-easter-egg.html) - Sep 9, 2003 ### [.Net security blogs](https://osherove.com/blog/2003/9/9/net-security-blogs.html) --- title: "Happy Anniversary, honey. I love you." url: "https://osherove.com/blog/2003/9/11/happy-anniversary-honey-i-love-you.md" canonical: "https://osherove.com/blog/2003/9/11/happy-anniversary-honey-i-love-you.html" published: "2003-09-11T12:29:00" updated: "2003-09-11T12:29:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This weekend my wife Tal and I are celebrating our 2 year anniversary. Honey , I love you with all my heart. I want to live with you for the rest of my life. Keep that amazing smile you always have, and may all our…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Happy Anniversary, honey. I love you. By Roy Osherove September 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 11, 2003; technical details may be outdated. This weekend my wife Tal and I are celebrating our 2 year anniversary. **Honey**, I love you with all my heart. I want to live with you for the rest of my life. Keep that amazing smile you always have, and may all our wishes come true, together. Your loving husbend.  ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 17, 2003 ### [XP is still widely unknown black magic](https://osherove.com/blog/2003/9/17/xp-is-still-widely-unknown-black-magic.html) - Sep 14, 2003 ### [Interesting research](https://osherove.com/blog/2003/9/14/interesting-research.html) - Sep 11, 2003 ### [Geeky lectures - part III](https://osherove.com/blog/2003/9/11/geeky-lectures-part-iii.html) - Sep 10, 2003 ### [More geeky streaming lectures](https://osherove.com/blog/2003/9/10/more-geeky-streaming-lectures.html) --- title: "Geeky lectures - part III" url: "https://osherove.com/blog/2003/9/11/geeky-lectures-part-iii.md" canonical: "https://osherove.com/blog/2003/9/11/geeky-lectures-part-iii.html" published: "2003-09-11T07:18:00" updated: "2003-09-11T07:18:00" tags: ["Cool sites", "Off Topic"] author: "Roy Osherove" description: "In the ongoing geeky lectures saga, Dumky says: I have aggregated a bunch of similar links a couple of weeks back. http://blog.monstuff.com/archives/000099.html" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Geeky lectures - part III By Roy Osherove September 11, 2003 In [Cool sites](https://osherove.com/blog/category/cool-sites), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 11, 2003; technical details may be outdated. In the ongoing geeky lectures saga, [Dumky](http://blog.monstuff.com/archives/000099.html)  says: _I have aggregated a bunch of similar links a couple of weeks back._ [_http://blog.monstuff.com/archives/000099.html_](http://blog.monstuff.com/archives/000099.html) ## More in Cool sites [All posts in Cool sites](https://osherove.com/blog/category/cool-sites) - Sep 19, 2003 ### [Cool site: Software Reality](https://osherove.com/blog/2003/9/19/cool-site-software-reality.html) - Sep 17, 2003 ### [Feeds of interest](https://osherove.com/blog/2003/9/17/feeds-of-interest.html) - Sep 10, 2003 ### [More geeky streaming lectures](https://osherove.com/blog/2003/9/10/more-geeky-streaming-lectures.html) - Sep 6, 2003 ### [Can we have this for the PDC as well?](https://osherove.com/blog/2003/9/6/can-we-have-this-for-the-pdc-as-well.html) --- title: "Document outline" url: "https://osherove.com/blog/2003/9/11/document-outline.md" canonical: "https://osherove.com/blog/2003/9/11/document-outline.html" published: "2003-09-11T07:14:00" updated: "2003-09-11T07:14:00" tags: [".Net Original", "Tips & Tricks"] author: "Roy Osherove" description: "For the past few weeks I've been deep diving into ASP.Net land. One of the things I wasn't prepared for was the amount of time I would have to spend tweaking and changing HTML and Java Scripts. A lot. Lots of times I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Document outline By Roy Osherove September 11, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published September 11, 2003; technical details may be outdated. For the past few weeks I've been deep diving into ASP.Net land. One of the things I wasn't prepared for was the amount of time I would have to spend tweaking and changing HTML and Java Scripts. A lot. Lots of times I found myself lost in the sea of HTML and scripts, until I found a very cool feature of vs.Net: The “Document outline” window. Whether you're on design view or HTML view - just press CTRL+ALT+T and the window opens up showing you a hierarchical tree view of the page structure - tables, Divs, every thing and it jumps to where you are in the page so you can actually get a “**You are here”** feature like in those city maps on billboards. Very cool. However, this is not news to lots of folks. What I **did** discover is another feature in this window: One of the things that window does **not** show is all the scripts in the page, or does it? Look at the top left corner of that window. That little flash icon just wants to be pressed! Voilà! You have all the scripts in the page including a list of all client and objects events (those that are implemented are highlighted in **bold.** Double clicking on one of those events automatically inserts the event wire up in the HTML and creates a simple function to take care of that event in java script, landing you right inside it, VB style. If only it would write all those functions in a single separate script block that would rule. Can't have everything I guess :) Very cool! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 14, 2003 ### [IsNumeric() hell](https://osherove.com/blog/2003/9/14/isnumeric-hell-1.html) - Sep 14, 2003 ### [IsNumeric() hell](https://osherove.com/blog/2003/9/14/isnumeric-hell.html) - Sep 10, 2003 ### [Israeli .Net web casts - finally!](https://osherove.com/blog/2003/9/10/israeli-net-web-casts-finally.html) - Sep 10, 2003 ### [Issue and solution: Web custom control not showing in designer with "Security Error" tooltip](https://osherove.com/blog/2003/9/10/issue-and-solution-web-custom-control-not-showing-in-designe.html) --- title: "Israeli .Net web casts - finally!" url: "https://osherove.com/blog/2003/9/10/israeli-net-web-casts-finally.md" canonical: "https://osherove.com/blog/2003/9/10/israeli-net-web-casts-finally.html" published: "2003-09-10T10:21:00" updated: "2003-09-10T10:21:00" tags: [".Net Original"] author: "Roy Osherove" description: "If you're a Israeli .Net developer, MS israel has finally started taking baby steps towards providing webcasts in hebrew about .Net. Just got the email (Thanks dana). So - wer'e gonna have 3 webcasts: 22.9.03 - .Net…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israeli .Net web casts - finally! By Roy Osherove September 10, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 10, 2003; technical details may be outdated. If you're a Israeli .Net developer, MS israel has finally started taking baby steps towards providing webcasts in hebrew about .Net. Just got the email (Thanks dana). So - wer'e gonna have 3 webcasts: - [22.9.03 -  **.Net Remoting**                                   with Alon Fliess](http://demo.interwise.com/ISRDemo/iSeminar/CA9095/) - [17.11.03 - **Migrating from VB to VB NET**       with Noam King](http://demo.interwise.com/ISRDemo/iSeminar/LW1837/) - [15.12.03 - **Decentralized applications in NET**  with Nimrod Luria](http://demo.interwise.com/ISRDemo/iSeminar/RG4809/) Notice - These webcasts are in **hebrew.** So first, congratulations, and welcome aboard. Second - too little (dare I say too late?): Too little means that only one webcast per month is peanuts. There should be at leastr one a week. Its not like there's not enough material to cover. Secondly, The material seems to be beginner oriented (well, except the third one maybe). How about some hardcore stuff as well?  Tips and tricks? tweaks? How about adding online chats (like the ones that are [held almost weekly](http://msdn.microsoft.com/chats) at the MS site), contests? monthly draws of cool swag? C'mon MS Israel. You can do better! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 14, 2003 ### [IsNumeric() hell](https://osherove.com/blog/2003/9/14/isnumeric-hell.html) - Sep 11, 2003 ### [Document outline](https://osherove.com/blog/2003/9/11/document-outline.html) - Sep 10, 2003 ### [Issue and solution: Web custom control not showing in designer with "Security Error" tooltip](https://osherove.com/blog/2003/9/10/issue-and-solution-web-custom-control-not-showing-in-designe.html) - Sep 10, 2003 ### [So, you have to live with 1.0?](https://osherove.com/blog/2003/9/10/so-you-have-to-live-with-10.html) --- title: "Issue and solution: Web custom control not showing in designer with \"Security Error\" tooltip" url: "https://osherove.com/blog/2003/9/10/issue-and-solution-web-custom-control-not-showing-in-designe.md" canonical: "https://osherove.com/blog/2003/9/10/issue-and-solution-web-custom-control-not-showing-in-designe.html" published: "2003-09-10T09:38:00" updated: "2003-09-10T09:38:00" tags: [".Net Original"] author: "Roy Osherove" description: "Tal, my wife ran into a weird situation today: She created a web custom control with very simple text output(”Hello world”), After compiling it, she created a new web application and added the compiled control to the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Issue and solution: Web custom control not showing in designer with "Security Error" tooltip By Roy Osherove September 10, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 10, 2003; technical details may be outdated. Tal, my wife ran into a weird situation today: She created a web custom control  with very simple text output(”Hello world”), After compiling it, she created a new web application and added the compiled control to the toolbox, and then dragged it into the designer. Oddly enough, the designer simply marked the control with a gray box saying “could not create control” with a tooltip saying “Security error”. Very weird. It worked on all other machines except hers. After a full day of trial and error she discovered the reason for this. Her .Net framework security setting did not allow that control to appear on the designer. To fix it: - Control Panel->Administrative tools - > Microsoft .Net Framework 1.x configuration - My computer->Runtime security policy-> Click the “_Adjust Zone Security_“ link on the right pane - Select “Make changes for this computer/user“ as you like and click next - Select “Local Intranet“ and make sure the lower bar is at least one level below “Full trust“ level That should solve it. Phew. And yes, I'm a .Net developer married to a .Net developer. And you thought **your** familiy was geeky. Heh. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 11, 2003 ### [Document outline](https://osherove.com/blog/2003/9/11/document-outline.html) - Sep 10, 2003 ### [Israeli .Net web casts - finally!](https://osherove.com/blog/2003/9/10/israeli-net-web-casts-finally.html) - Sep 10, 2003 ### [So, you have to live with 1.0?](https://osherove.com/blog/2003/9/10/so-you-have-to-live-with-10.html) - Sep 8, 2003 ### [Issues and solutions with Process and Request Identity in ASP.NET](https://osherove.com/blog/2003/9/8/issues-and-solutions-with-process-and-request-identity-in-as.html) --- title: "More geeky streaming lectures" url: "https://osherove.com/blog/2003/9/10/more-geeky-streaming-lectures.md" canonical: "https://osherove.com/blog/2003/9/10/more-geeky-streaming-lectures.html" published: "2003-09-10T05:59:00" updated: "2003-09-10T05:59:00" tags: ["Cool Articles", "Cool sites", "Off Topic"] author: "Roy Osherove" description: "After I posted about the NerdTV , another gem occurred on my path. In a comment to that post, Michael Favro wrote: “Then you'll love the Multi-University/Research Laboratory Seminar Series at…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More geeky streaming lectures By Roy Osherove September 10, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Cool sites](https://osherove.com/blog/category/cool-sites), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 10, 2003; technical details may be outdated. After I posted about the [NerdTV](http://weblogs.asp.net/rosherove/posts/26818.aspx) , another gem occurred on my path. In a comment to that post, Michael Favro wrote: _“Then you'll love the Multi-University/Research Laboratory Seminar Series at_ [_http://murl.microsoft.com/default.asp_](http://murl.microsoft.com/default.asp)_. It contains the UW CSE Colloquia Series from past years, as well as other research and lecture series.”_ Indeed! Thanks Michael :) ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Sep 17, 2003 ### [.Net resources abound at ARK 3.0](https://osherove.com/blog/2003/9/17/net-resources-abound-at-ark-30.html) - Sep 15, 2003 ### [I'm in the "contributor spotlight" on MSDNAA](https://osherove.com/blog/2003/9/15/im-in-the-quotcontributor-spotlightquot-on-msdnaa.html) - Sep 9, 2003 ### [NerdTV](https://osherove.com/blog/2003/9/9/nerdtv.html) - Sep 8, 2003 ### [Issues and solutions with Process and Request Identity in ASP.NET](https://osherove.com/blog/2003/9/8/issues-and-solutions-with-process-and-request-identity-in-as.html) --- title: "So, you have to live with 1.0?" url: "https://osherove.com/blog/2003/9/10/so-you-have-to-live-with-10.md" canonical: "https://osherove.com/blog/2003/9/10/so-you-have-to-live-with-10.html" published: "2003-09-10T05:53:00" updated: "2003-09-10T05:53:00" tags: [".Net Original"] author: "Roy Osherove" description: "Some of us still use the 1.0 framework (for pretty weird reasons, some people still believe that moving to 1.1 would be a bad thing.. and it's not - if you take the necessary precautions and know what breaks between…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # So, you have to live with 1.0? By Roy Osherove September 10, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 10, 2003; technical details may be outdated. Some of us still use the 1.0 framework (for pretty weird reasons, some people still believe that moving to 1.1 would be a bad thing.. and it's not - if you take the [necessary precautions](http://www.asp.net/faq/SideBySide.aspx) and know what breaks between versions). The least you can do then is make sure to download and install [Service pack 2](http://support.microsoft.com/default.aspx?scid=kb;EN-US;318836) for .Net 1.0. - Download it [here](http://support.microsoft.com/default.aspx?scid=kb;EN-US;318836). - Here's the [list of fixes](http://support.microsoft.com/default.aspx?scid=kb;EN-US;321884) in the service pack. - Don't know if you have the service pack installed? [Here's how to find out](http://support.microsoft.com/?kbid=318785&sd=msdn). ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 10, 2003 ### [Israeli .Net web casts - finally!](https://osherove.com/blog/2003/9/10/israeli-net-web-casts-finally.html) - Sep 10, 2003 ### [Issue and solution: Web custom control not showing in designer with "Security Error" tooltip](https://osherove.com/blog/2003/9/10/issue-and-solution-web-custom-control-not-showing-in-designe.html) - Sep 8, 2003 ### [Issues and solutions with Process and Request Identity in ASP.NET](https://osherove.com/blog/2003/9/8/issues-and-solutions-with-process-and-request-identity-in-as.html) - Sep 4, 2003 ### [Automatic Data-Relations](https://osherove.com/blog/2003/9/4/automatic-data-relations.html) --- title: "Scott Hanselman's C:\\Utils" url: "https://osherove.com/blog/2003/9/10/scott-hanselmans-cutils.md" canonical: "https://osherove.com/blog/2003/9/10/scott-hanselmans-cutils.html" published: "2003-09-10T00:19:00" updated: "2003-09-10T00:19:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Here are most of the contents of my C:/UTILS folder. These are all well loved and used. I wouldn't recommend them if I didn't use them constantly. Perhaps Roy didn't realize what he was asking for. [ Scott Hanselman ]…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scott Hanselman's C:\\Utils By Roy Osherove September 10, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 10, 2003; technical details may be outdated. _[Here are](http://radio.weblogs.com/0106747/stories/2003/09/09/scottHanselmansUltimateDeveloperAndPowerUsersToolsList.html) most of the contents of my C:/UTILS folder. These are all well loved and used.  I wouldn't recommend them if I didn't use them constantly. Perhaps Roy didn't realize what he was asking for._ \[[Scott Hanselman](http://radio.weblogs.com/0106747/stories/2003/09/09/scottHanselmansUltimateDeveloperAndPowerUsersToolsList.html)\] Oh.My.God. It looks like I have some checking up to do. There goes my next night's sleep :) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Sep 17, 2003 ### [More useful tools (and these are all free)](https://osherove.com/blog/2003/9/17/more-useful-tools-and-these-are-all-free.html) - Sep 16, 2003 ### [A list of regular expression tools](https://osherove.com/blog/2003/9/16/a-list-of-regular-expression-tools.html) - Sep 3, 2003 ### [Cool utility of the day: Code Snippet Compiler](https://osherove.com/blog/2003/9/3/cool-utility-of-the-day-code-snippet-compiler.html) - Sep 2, 2003 ### [The Final Release of NUnit V2.1 is now available](https://osherove.com/blog/2003/9/2/the-final-release-of-nunit-v21-is-now-available.html) --- title: "What do I subscribe to? Get the OPML" url: "https://osherove.com/blog/2003/9/9/what-do-i-subscribe-to-get-the-opml.md" canonical: "https://osherove.com/blog/2003/9/9/what-do-i-subscribe-to-get-the-opml.html" published: "2003-09-09T15:08:00" updated: "2003-09-09T15:08:00" tags: ["Blogging"] author: "Roy Osherove" description: "I've decided to post my blog favorites as an OPML file for your subscription pleasure. it is exported from SharpReader, so you have some categories in there. Hopefully I'll be updating it as time goes by and I come…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What do I subscribe to? Get the OPML By Roy Osherove September 9, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published September 9, 2003; technical details may be outdated. I've decided to post my [blog favorites as an OPML file](http://weblogs.asp.net/rosherove/posts/26888.aspx) for your subscription pleasure. it is exported from SharpReader, so you have some categories in there. Hopefully I'll be updating it as time goes by and I come across more cool blogs. Have fun! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Sep 18, 2003 ### [RegexLib RSS now even cooler](https://osherove.com/blog/2003/9/18/regexlib-rss-now-even-cooler.html) - Sep 18, 2003 ### [Ed has returned to the building](https://osherove.com/blog/2003/9/18/ed-has-returned-to-the-building.html) - Sep 9, 2003 ### [Google likes me](https://osherove.com/blog/2003/9/9/google-likes-me.html) - Sep 9, 2003 ### [.Net security blogs](https://osherove.com/blog/2003/9/9/net-security-blogs.html) --- title: "My favorites in OPML" url: "https://osherove.com/blog/2003/9/9/my-favorites-in-opml.md" canonical: "https://osherove.com/blog/2003/9/9/my-favorites-in-opml.html" published: "2003-09-09T15:03:00" updated: "2003-09-09T15:03:00" tags: ["Other"] author: "Roy Osherove" description: "<?xml version=\"1.0\" encoding=\"utf-8\"?> <opml xmlns:xsd=\" http://www.w3.org/2001/XMLSchema \" xmlns:xsi=\" http://www.w3.org/2001/XMLSchema-instance \"> <head> <title>Generated by SharpReader -…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My favorites in OPML By Roy Osherove September 9, 2003 In [Other](https://osherove.com/blog/category/other) **Historical article** · Originally published September 9, 2003; technical details may be outdated. <?xml version="1.0" encoding="utf-8"?> <opml xmlns:xsd="[http://www.w3.org/2001/XMLSchema](http://www.w3.org/2001/XMLSchema)" xmlns:xsi="[http://www.w3.org/2001/XMLSchema-instance](http://www.w3.org/2001/XMLSchema-instance)">   <head>     <title>Generated by SharpReader - http://www.sharpreader.net</title\>   </head>   <body>     <outline title="Cools">       <outline type="rss" title="Joi Ito's Web" description="Joi Ito's conversation with the living web." xmlUrl="[http://joi.ito.com/index.xml](http://joi.ito.com/index.xml)" htmlUrl="[http://joi.ito.com/](http://joi.ito.com/)" />       <outline type="rss" title="Google Weblog" description="The latest news on everyone's favorite search engine." xmlUrl="[http://google.blogspace.com/index.xml](http://google.blogspace.com/index.xml)" htmlUrl="[http://google.blogspace.com/](http://google.blogspace.com/)" />       <outline type="rss" title="MSDN Magazine: Current Issue" description="The Microsoft Journal for Developers" xmlUrl="[http://msdn.microsoft.com/msdnmag/rss/recent.xml](http://msdn.microsoft.com/msdnmag/rss/recent.xml)" htmlUrl="[http://msdn.microsoft.com/msdnmag/](http://msdn.microsoft.com/msdnmag/)" />       <outline type="rss" title="Incremental Blogger" description="Loren's Blog" xmlUrl="[http://journals.tuxreports.com/lch/index.rdf](http://journals.tuxreports.com/lch/index.rdf)" htmlUrl="[http://journals.tuxreports.com/lch/](http://journals.tuxreports.com/lch/)" />       <outline type="rss" title="PC Magazine: New Product Reviews" description="First looks at new products from PC Magazine: lab-based test, ratings, editor and user reviews." xmlUrl="[http://rssnewsapps.ziffdavis.com/pcmag.xml](http://rssnewsapps.ziffdavis.com/pcmag.xml)" htmlUrl="[http://www.pcmag.com](http://www.pcmag.com/)" />       <outline type="rss" title="GeekyMoBlog" description="Mobloggin' from my Sony Ericsson t306, from and around the Bay Area." xmlUrl="[http://geekychick.textamerica.com/rss.asp?imgtype=full](http://geekychick.textamerica.com/rss.asp?imgtype=full)" htmlUrl="[http://geekychick.textamerica.com/](http://geekychick.textamerica.com/)" />       <outline type="rss" title="Extremetech" description="Core Technology How-to, Reviews, News and Commentary" xmlUrl="[http://rssnewsapps.ziffdavis.com/extreme.xml](http://rssnewsapps.ziffdavis.com/extreme.xml)" htmlUrl="[http://www.extremetech.com](http://www.extremetech.com/)" />     </outline>     <outline title=".Net Blogs">       <outline title="Important News">         <outline type="rss" title="MSDN Just Published" description="Keep current with all the new technical articles, columns, specifications, and resources published on the Microsoft Developer Network (MSDN)." xmlUrl="[http://msdn.microsoft.com/rss.xml](http://msdn.microsoft.com/rss.xml)" htmlUrl="[http://msdn.microsoft.com/](http://msdn.microsoft.com/)" />         <outline type="rss" title="4GuysFromRolla.com Headlines" description="Headlines for 4GuysFromRolla.com.  4Guys is an online resource site for ASP and ASP.NET information!" xmlUrl="[http://aspnet.4guysfromrolla.com/rss/rss.aspx](http://aspnet.4guysfromrolla.com/rss/rss.aspx)" htmlUrl="[http://www.4GuysFromRolla.com](http://www.4guysfromrolla.com/)" />         <outline type="rss" title="WebLogs @ DotNetJunkies.com" description=".NET Programming Weblogs" xmlUrl="[http://www.dotnetjunkies.com/WebLog/MainFeed.aspx](http://www.dotnetjunkies.com/WebLog/MainFeed.aspx)" htmlUrl="[http://www.dotnetjunkies.com/WebLog/](http://www.dotnetjunkies.com/WebLog/)" />         <outline type="rss" title="WebLogs @ ASP.NET" description=".NETWeblogs by .NET Developers" xmlUrl="[http://weblogs.asp.net/MainFeed.aspx](http://weblogs.asp.net/MainFeed.aspx)" htmlUrl="[http://weblogs.asp.net](http://weblogs.asp.net/)" />       </outline>       <outline title="MSFT">         <outline type="rss" title="Ivan's blog" description="" xmlUrl="[http://blogs.gotdotnet.com/IvanMed/blogxbrowsing.asmx/GetRss](http://blogs.gotdotnet.com/IvanMed/blogxbrowsing.asmx/GetRss)?" htmlUrl="[http://blogs.gotdotnet.com/ivanmed/](http://blogs.gotdotnet.com/ivanmed/)" />         <outline type="rss" title="Greg Fee" description="" xmlUrl="[http://blogs.gotdotnet.com/gregfee/blogxbrowsing.asmx/GetRss](http://blogs.gotdotnet.com/gregfee/blogxbrowsing.asmx/GetRss)?" htmlUrl="[http://blogs.gotdotnet.com/gregfee/](http://blogs.gotdotnet.com/gregfee/)" />         <outline type="rss" title="Ed Kaim" description="" xmlUrl="[http://blogs.gotdotnet.com/EdKaim/blogxbrowsing.asmx/GetRss](http://blogs.gotdotnet.com/EdKaim/blogxbrowsing.asmx/GetRss)?" htmlUrl="[http://blogs.gotdotnet.com/EdKaim/](http://blogs.gotdotnet.com/EdKaim/)" />         <outline type="rss" title="XML Eye for the Object Guy" description="" xmlUrl="[http://blogs.gotdotnet.com/tewald/blogxbrowsing.asmx/GetRss](http://blogs.gotdotnet.com/tewald/blogxbrowsing.asmx/GetRss)?" htmlUrl="[http://blogs.gotdotnet.com/tewald/](http://blogs.gotdotnet.com/tewald/)" />         <outline type="rss" title="Marquee de [Chris Sells](http://www.sellsbrothers.com/)\- Chris's insight outlet" description="Thoughts that Chris [Chris Sells](http://www.sellsbrothers.com/) has about whatever interests him that day" xmlUrl="[http://www.sellsbrothers.com/news/rss2.aspx](http://www.sellsbrothers.com/news/rss2.aspx)" htmlUrl="[http://www.sellsbrothers.com/](http://www.sellsbrothers.com/)" />         <outline type="rss" title="The Scobleizer Weblog" description="Come get Scobleized!" xmlUrl="[http://radio.weblogs.com/0001011/rss.xml](http://radio.weblogs.com/0001011/rss.xml)" htmlUrl="[http://radio.weblogs.com/0001011/](http://radio.weblogs.com/0001011/)" />         <outline type="rss" title="ScottGu's Blog" description="" xmlUrl="[http://weblogs.asp.net/ScottGu/rss.aspx](http://weblogs.asp.net/ScottGu/rss.aspx)" htmlUrl="[http://weblogs.asp.net/scottgu/](http://weblogs.asp.net/scottgu/)" />         <outline type="rss" title="Suzanne Cook's .NET CLR Loader Notes" description="" xmlUrl="[http://blogs.gotdotnet.com/suzcook/blogxbrowsing.asmx/GetRss](http://blogs.gotdotnet.com/suzcook/blogxbrowsing.asmx/GetRss)?" htmlUrl="[http://blogs.gotdotnet.com/suzcook/](http://blogs.gotdotnet.com/suzcook/)" />         <outline type="rss" title="-Net notes(Chris Brumme)" description="" xmlUrl="[http://blogs.gotdotnet.com/cbrumme/blogxbrowsing.asmx/GetRss](http://blogs.gotdotnet.com/cbrumme/blogxbrowsing.asmx/GetRss)?" htmlUrl="[http://blogs.gotdotnet.com/cbrumme/](http://blogs.gotdotnet.com/cbrumme/)" />         <outline type="rss" title="Panopticon Central(Paul Vick - VB.Net lead)" description="a blog on Visual Basic, .NET and other stuff" xmlUrl="[http://www.panopticoncentral.net/rss.aspx](http://www.panopticoncentral.net/rss.aspx)" htmlUrl="[http://www.panopticoncentral.net](http://www.panopticoncentral.net/)" />         <outline type="rss" title="Don Box's Spoutlet" description="Rants from the SOAP box" xmlUrl="[http://www.gotdotnet.com/team/dbox/rss.aspx](http://www.gotdotnet.com/team/dbox/rss.aspx)" htmlUrl="[http://www.gotdotnet.com/team/dbox/default.aspx](http://www.gotdotnet.com/team/dbox/default.aspx)" />       </outline>       <outline title="Book writing">         <outline type="rss" title="Ingo's BookBlog" description="" xmlUrl="[http://www.ingorammer.com/bookblog/index.xml](http://www.ingorammer.com/bookblog/index.xml)" htmlUrl="[http://www.ingorammer.com/BookBlog/](http://www.ingorammer.com/BookBlog/)" />         <outline type="rss" title="Christian Nagel's OneNotes" description="The secret of joy in work is contained in one word: excellence." xmlUrl="[http://weblogs.asp.net/cnagel/Rss.aspx?CategoryID=1584](http://weblogs.asp.net/cnagel/Rss.aspx?CategoryID=1584)" htmlUrl="[http://weblogs.asp.net/cnagel/](http://weblogs.asp.net/cnagel/)" />       </outline>       <outline type="rss" title="public MattBerther : ISerializable" description="Matt Berther on C#, XML, and anything else that comes to mind..." xmlUrl="[http://www.mattberther.com/index.xml](http://www.mattberther.com/index.xml)" htmlUrl="[http://www.mattberther.com/](http://www.mattberther.com/)" />       <outline type="rss" title="Luke Hutteman's public virtual MemoryStream" description="Luke Hutteman on Java, C#, J2EE, RSS and whatever else comes to mind..." xmlUrl="[http://www.hutteman.com/weblog/rss.xml](http://www.hutteman.com/weblog/rss.xml)" htmlUrl="[http://www.hutteman.com/weblog/](http://www.hutteman.com/weblog/)" />       <outline type="rss" title="Developer Center RSS Feeds" description="Experimental RSS feeds" xmlUrl="[http://msdn.microsoft.com/asp.net/using/building/web/web.xml](http://msdn.microsoft.com/asp.net/using/building/web/web.xml)" htmlUrl="" />       <outline type="rss" title="Clemens Vasters: Enterprise Development & Alien Abductions" description="Web Services work, do they?" xmlUrl="[http://staff.newtelligence.net/clemensv/SyndicationService.asmx/GetRss](http://staff.newtelligence.net/clemensv/SyndicationService.asmx/GetRss)" htmlUrl="[http://staff.newtelligence.net/clemensv/](http://staff.newtelligence.net/clemensv/)" />       <outline type="rss" title="jeremy's wayward thoughts" description="Programming, views, blurbs, whatever..." xmlUrl="[http://www.eskimo.com/~jeremyk/index.rdf](http://www.eskimo.com/~jeremyk/index.rdf)" htmlUrl="[http://www.eskimo.com/~jeremyk/](http://www.eskimo.com/~jeremyk/)" />       <outline type="rss" title="Eric.Weblog()" description="Thoughts about software from yet another person who invented the Internet" xmlUrl="[http://software.ericsink.com/rss.xml](http://software.ericsink.com/rss.xml)" htmlUrl="[http://software.ericsink.com/](http://software.ericsink.com/)" />       <outline type="rss" title="Sean 'Early' Campbell & Scott 'Adopter' Swigart's Radio Weblog" description="This weblog is maintained by Sean Campbell and Scott Swigart, Sr. principals of 3 Leaf Solutions, and is dedicated to providing the latest information on emerging Microsoft technologies." xmlUrl="[http://radio.weblogs.com/0117167/rss.xml](http://radio.weblogs.com/0117167/rss.xml)" htmlUrl="[http://radio.weblogs.com/0117167/](http://radio.weblogs.com/0117167/)" />       <outline type="rss" title="Peter Provost's Geek Noise" description="Technology news, development articles, Microsoft .NET, and other stuff..." xmlUrl="[http://www.peterprovost.org/weblog/SyndicationService.asmx/GetRss](http://www.peterprovost.org/weblog/SyndicationService.asmx/GetRss)" htmlUrl="[http://www.peterprovost.org/weblog/](http://www.peterprovost.org/weblog/)" />       <outline type="rss" title="A Surprisingly High Tower" description="" xmlUrl="[http://www.gehtland.com/blogxbrowsing.asmx/GetRss](http://www.gehtland.com/blogxbrowsing.asmx/GetRss)?" htmlUrl="[http://staff.develop.com/gehtland/weblog/](http://staff.develop.com/gehtland/weblog/)" />       <outline type="rss" title="Adam Nathan's Interop-Centric CLR Blog" description="" xmlUrl="[http://blogs.gotdotnet.com/anathan/blogxbrowsing.asmx/GetRss](http://blogs.gotdotnet.com/anathan/blogxbrowsing.asmx/GetRss)?" htmlUrl="[http://blogs.gotdotnet.com/anathan/](http://blogs.gotdotnet.com/anathan/)" />       <outline type="rss" title="AddressOf.com" description="" xmlUrl="[http://addressof.com/blog/blogxbrowsing.asmx/GetRss](http://addressof.com/blog/blogxbrowsing.asmx/GetRss)?" htmlUrl="[http://addressof.com/blog/](http://addressof.com/blog/)" />       <outline type="rss" title="Benjamin J. J. Voigt" description="Creativity Is Inspired By Activity" xmlUrl="[http://www.shamiro.ch/blogxbrowsing.asmx/GetRss](http://www.shamiro.ch/blogxbrowsing.asmx/GetRss)?" htmlUrl="[http://www.shamiro.ch/](http://www.shamiro.ch/)" />       <outline type="rss" title="Better Living Through Software" description="Life at Microsoft, the software industry from a rational perspective" xmlUrl="[http://www.netcrucible.com/blog/rss.xml](http://www.netcrucible.com/blog/rss.xml)" htmlUrl="[http://www.netcrucible.com/blog/](http://www.netcrucible.com/blog/)" />       <outline type="rss" title="Brad Abrams" description="" xmlUrl="[http://blogs.gotdotnet.com/brada/BlogXBrowsing.asmx/GetRss](http://blogs.gotdotnet.com/brada/BlogXBrowsing.asmx/GetRss)?" htmlUrl="[http://blogs.gotdotnet.com/BradA/](http://blogs.gotdotnet.com/BradA/)" />       <outline type="rss" title="Cameron's Visual Basic .NET Blog(VB.Net team)" description="" xmlUrl="[http://blogs.gotdotnet.com/cambecc/blogxbrowsing.asmx/GetRss](http://blogs.gotdotnet.com/cambecc/blogxbrowsing.asmx/GetRss)?" htmlUrl="[http://blogs.gotdotnet.com/cambecc/](http://blogs.gotdotnet.com/cambecc/)" />       <outline type="rss" title="Chris Kinsman's .NET Musings" description="Musings about my daily development experiences with this thing we call .NET" xmlUrl="[http://radio.weblogs.com/0101134/rss.xml](http://radio.weblogs.com/0101134/rss.xml)" htmlUrl="[http://radio.weblogs.com/0101134/](http://radio.weblogs.com/0101134/)" />       <outline type="rss" title="Dare Obasanjo aka Carnage4Life" description="Dare Obasanjo aka Carnage4Life : The Kuro5hin Diary" xmlUrl="[http://www.25hoursaday.com/rss10.xml](http://www.25hoursaday.com/rss10.xml)" htmlUrl="[http://www.kuro5hin.org/user/Carnage4Life/diary](http://www.kuro5hin.org/user/Carnage4Life/diary)" />       <outline type="rss" title="Doubt's log" description="" xmlUrl="[http://radio.weblogs.com/0100529/rss.xml](http://radio.weblogs.com/0100529/rss.xml)" htmlUrl="[http://radio.weblogs.com/0100529/](http://radio.weblogs.com/0100529/)" />       <outline type="rss" title="Ingo Rammer's Weblog" description="" xmlUrl="[http://www.ingorammer.com/weblog/rss.aspx](http://www.ingorammer.com/weblog/rss.aspx)" htmlUrl="[http://www.ingorammer.com/](http://www.ingorammer.com/)" />       <outline type="rss" title="Jon Udell- InfoWorld" description="Jon's InfoWorld articles" xmlUrl="[http://weblog.infoworld.com/udell/categories/infoworld/rss.xml](http://weblog.infoworld.com/udell/categories/infoworld/rss.xml)" htmlUrl="[http://weblog.infoworld.com/udell/categories/infoworld/](http://weblog.infoworld.com/udell/categories/infoworld/)" />       <outline type="rss" title="Larkware News" description="Neat stuff for the Windows software developer" xmlUrl="[http://www.larkware.com/larkware2.xml](http://www.larkware.com/larkware2.xml)" htmlUrl="[http://www.larkware.com/](http://www.larkware.com/)" />       <outline type="rss" title="Mobile Musings by Anil John" description="Mobility and Security with .NET by Anil John" xmlUrl="[http://www.learnmobile.net/weblog/rss.xml](http://www.learnmobile.net/weblog/rss.xml)" htmlUrl="[http://www.LearnMobile.net/weblog](http://www.learnmobile.net/weblog)" />       <outline type="rss" title="Objective" description="<EM><STRONG><FONT face="Trebuchet MS" size=5> <P align=right><EM><STRONG><FONT face=Tahoma color=ivory size=7>Ob?jec?tive</FONT></STRONG></EM> <BR><FONT face=Tahoma color=ivory size=1><EM><STRONG>Chris Hollander's Homespun 'blog.&nbsp; A fine mix of Geek, Wit, and humor, with a splash of life thrown&nbsp;&nbsp;in.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </STRONG></EM></FONT></P></FONT></STRONG></EM>" xmlUrl="[http://objective.mine.nu/latest.rss](http://objective.mine.nu/latest.rss)" htmlUrl="[http://objective.mine.nu/index.aspx](http://objective.mine.nu/index.aspx)" />       <outline type="rss" title="Pushing the Envelope" description="" xmlUrl="[http://www.gotdotnet.com/team/tewald/rss.aspx](http://www.gotdotnet.com/team/tewald/rss.aspx)" htmlUrl="[http://www.gotdotnet.com/team/tewald/](http://www.gotdotnet.com/team/tewald/)" />       <outline type="rss" title="Sam Gentile's Blog" description=".NET and Software Development from an experienced perspective - .NET/CLR, Rotor, Interop, MC+/C++, COM+, ES, Mac OS X, Extreme Programming and More!" xmlUrl="[http://samgentile.com/blog/Rss.aspx](http://samgentile.com/blog/Rss.aspx)" htmlUrl="[http://samgentile.com/blog/](http://samgentile.com/blog/)" />       <outline type="rss" title="Sam Ruby" description="It's just data" xmlUrl="[http://www.intertwingly.net/blog/index.rss2](http://www.intertwingly.net/blog/index.rss2)" htmlUrl="[http://www.intertwingly.net/blog/](http://www.intertwingly.net/blog/)" />       <outline type="rss" title="Scott Hanselman's Weblog" description="[www.computerzen.com](http://www.computerzen.com/)" xmlUrl="[http://radio.weblogs.com/0106747/rss.xml](http://radio.weblogs.com/0106747/rss.xml)" htmlUrl="[http://radio.weblogs.com/0106747/](http://radio.weblogs.com/0106747/)" />       <outline type="rss" title="simplegeek" description="" xmlUrl="[http://www.simplegeek.com/blogxbrowsing.asmx/GetRss](http://www.simplegeek.com/blogxbrowsing.asmx/GetRss)?" htmlUrl="[http://www.simplegeek.com](http://www.simplegeek.com/)" />       <outline type="rss" title="Stephen Forte's Weblog" description="Sex, Drugs, and .NET" xmlUrl="[http://radio.weblogs.com/0125758/rss.xml](http://radio.weblogs.com/0125758/rss.xml)" htmlUrl="[http://www.stephenforte.net/owDasBlog/](http://www.stephenforte.net/owDasBlog/)" />       <outline type="rss" title="The .NET Guy" description="Musings on Life and Technology" xmlUrl="[http://dotnetguy.techieswithcats.com/index.rdf](http://dotnetguy.techieswithcats.com/index.rdf)" htmlUrl="[http://dotnetguy.techieswithcats.com/](http://dotnetguy.techieswithcats.com/)" />       <outline type="rss" title="The angryCoder Blog" description="Jonathan Goodyear's unplugged and uncut opinions about the state of software development." xmlUrl="[http://www.angrycoder.com/blog/rss.xml](http://www.angrycoder.com/blog/rss.xml)" htmlUrl="[http://www.angryCoder.com/blog/](http://www.angrycoder.com/blog/)" />       <outline type="rss" title="The Developer Life" description="" xmlUrl="[http://msdn.microsoft.com/blogs/ericr/rss.xml](http://msdn.microsoft.com/blogs/ericr/rss.xml)" htmlUrl="[http://msdn.microsoft.com/blogs/ericr/](http://msdn.microsoft.com/blogs/ericr/)" />       <outline type="rss" title="The Furrygoat Experience" description="So it goes." xmlUrl="[http://www.furrygoat.com/rss.aspx](http://www.furrygoat.com/rss.aspx)" htmlUrl="[http://www.furrygoat.com/](http://www.furrygoat.com/)" />     </outline>     <outline title="Comics">       <outline type="rss" title="Garfield" description="Tapestry :: RSS Delivery of Web Comics" xmlUrl="[http://dwlt.net/tapestry/garfield.rdf](http://dwlt.net/tapestry/garfield.rdf)" htmlUrl="[http://www.ucomics.com/garfield/](http://www.ucomics.com/garfield/)" />       <outline type="rss" title="Peanuts" description="Tapestry :: RSS Delivery of Web Comics" xmlUrl="[http://dwlt.net/tapestry/peanuts.rdf](http://dwlt.net/tapestry/peanuts.rdf)" htmlUrl="[http://www.snoopy.com/](http://www.snoopy.com/)" />       <outline type="rss" title="Dilbert" description="Tapestry :: RSS Delivery of Web Comics" xmlUrl="[http://dwlt.net/tapestry/dilbert.rdf](http://dwlt.net/tapestry/dilbert.rdf)" htmlUrl="[http://dwlt.net/tapestry/](http://dwlt.net/tapestry/)" />       <outline type="rss" title="Get Fuzzy" description="Tapestry :: RSS Delivery of Web Comics" xmlUrl="[http://dwlt.net/tapestry/getfuzzy.rdf](http://dwlt.net/tapestry/getfuzzy.rdf)" htmlUrl="[http://www.comics.com/comics/getfuzzy/](http://www.comics.com/comics/getfuzzy/)" />     </outline>   </body> </opml> ## More in Other [All posts in Other](https://osherove.com/blog/category/other) - Dec 25, 2003 ### [An optimizing experience](https://osherove.com/blog/2003/12/25/an-optimizing-experience.html) - Oct 30, 2003 ### [Easy Proxy handling through the ProxyFactory and ProxyInfo classes](https://osherove.com/blog/2003/10/30/easy-proxy-handling-through-the-proxyfactory-and-proxyinfo-c.html) - Jun 11, 2003 ### [Announcing: .Net Desktops Contest](https://osherove.com/blog/2003/6/11/announcing-net-desktops-contest.html) - May 26, 2003 ### [.Net Debugging Resources](https://osherove.com/blog/2003/5/26/net-debugging-resources.html) --- title: "Google likes me" url: "https://osherove.com/blog/2003/9/9/google-likes-me.md" canonical: "https://osherove.com/blog/2003/9/9/google-likes-me.html" published: "2003-09-09T14:49:00" updated: "2003-09-09T14:49:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Heh. I rule Google :) http://www.google.com/search?hl=&cat=&meta=&q=ISerializable (And Matt Berther is on my tracks...)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Google likes me By Roy Osherove September 9, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 9, 2003; technical details may be outdated. Heh. I rule Google :) [http://www.google.com/search?hl=&cat=&meta=&q=ISerializable](http://www.google.com/search?hl=&cat=&meta=&q=ISerializable) (And [Matt Berther](http://www.mattberther.com/) is on my tracks...) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Sep 18, 2003 ### [Ed has returned to the building](https://osherove.com/blog/2003/9/18/ed-has-returned-to-the-building.html) - Sep 9, 2003 ### [What do I subscribe to? Get the OPML](https://osherove.com/blog/2003/9/9/what-do-i-subscribe-to-get-the-opml.html) - Sep 9, 2003 ### [.Net security blogs](https://osherove.com/blog/2003/9/9/net-security-blogs.html) - Sep 8, 2003 ### [Why people are not into RSS readers](https://osherove.com/blog/2003/9/8/why-people-are-not-into-rss-readers.html) --- title: "IntelliJ IDEA Aurora Easter Egg" url: "https://osherove.com/blog/2003/9/9/intellij-idea-aurora-easter-egg.md" canonical: "https://osherove.com/blog/2003/9/9/intellij-idea-aurora-easter-egg.html" published: "2003-09-09T14:45:00" updated: "2003-09-09T14:45:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Luke finds the IntelliJ IDEA Aurora Easter Egg amd it's pretty cool, in a haxorz sort of way :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # IntelliJ IDEA Aurora Easter Egg By Roy Osherove September 9, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 9, 2003; technical details may be outdated. Luke finds the [IntelliJ IDEA Aurora Easter Egg](http://www.hutteman.com/weblog/2003/09/05-119.html) amd it's pretty cool, in a haxorz sort of way :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 16, 2003 ### [VB.Net Whidbey Nuggets](https://osherove.com/blog/2003/9/16/vbnet-whidbey-nuggets.html) - Sep 13, 2003 ### [Pure simplicity](https://osherove.com/blog/2003/9/13/pure-simplicity.html) - Sep 9, 2003 ### [.Net security blogs](https://osherove.com/blog/2003/9/9/net-security-blogs.html) - Sep 8, 2003 ### [BuildIt](https://osherove.com/blog/2003/9/8/buildit.html) --- title: "Pair Programming Q&A" url: "https://osherove.com/blog/2003/9/9/pair-programming-qampa.md" canonical: "https://osherove.com/blog/2003/9/9/pair-programming-qampa.html" published: "2003-09-09T10:30:00" updated: "2003-09-09T10:30:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Jonathan links to a good Q&A about pair programming, which I have always wanted to try and implement “for real”. Never got the chance though. ps. Is it just me or is the main feed broken?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Pair Programming Q&A By Roy Osherove September 9, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 9, 2003; technical details may be outdated. [Jonathan links to a good Q&A](http://weblogs.asp.net/JCogley/posts/26835.aspx) about pair programming, which I have always wanted to try and implement “for real”. Never got the chance though. ps. Is it just me or is the main feed broken? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 10, 2003 ### [More geeky streaming lectures](https://osherove.com/blog/2003/9/10/more-geeky-streaming-lectures.html) - Sep 9, 2003 ### [Google likes me](https://osherove.com/blog/2003/9/9/google-likes-me.html) - Sep 9, 2003 ### [NerdTV](https://osherove.com/blog/2003/9/9/nerdtv.html) - Sep 8, 2003 ### [Why people are not into RSS readers](https://osherove.com/blog/2003/9/8/why-people-are-not-into-rss-readers.html) --- title: "X1 is cool" url: "https://osherove.com/blog/2003/9/9/x1-is-cool.md" canonical: "https://osherove.com/blog/2003/9/9/x1-is-cool.html" published: "2003-09-09T08:44:00" updated: "2003-09-09T08:44:00" tags: [] author: "Roy Osherove" description: "X1 is the coolest searcher ever. But it should have a \" developer mode \" configured. It can't find any of the files in my C:\\intpub\\adminScripts. :(" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # X1 is cool By Roy Osherove September 9, 2003 **Historical article** · Originally published September 9, 2003; technical details may be outdated. [X1](http://www.x1.com/) is the coolest searcher ever. But it should have a "**developer** **mode**" configured. It can't find any of the files in my C:\\intpub\\adminScripts. :( --- title: "NerdTV" url: "https://osherove.com/blog/2003/9/9/nerdtv.md" canonical: "https://osherove.com/blog/2003/9/9/nerdtv.html" published: "2003-09-09T05:35:00" updated: "2003-09-09T05:35:00" tags: ["Cool Articles", "Off Topic"] author: "Roy Osherove" description: "There's nothing like a good techie streamed presentation to get me going in the late hours of the night. Yes.My name is Roy and I'm a geek. And this looks to be one of my favorite sites in the near future: University of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NerdTV By Roy Osherove September 9, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 9, 2003; technical details may be outdated. There's nothing like a good techie streamed presentation to get me going in the late hours of the night. Yes.My name is Roy and I'm a geek. And this looks to be one of my favorite sites in the near future: [University of Washington Computer Science and Engineering Colloquium series](http://www.uwtv.org/programs/displayseries.asp?collid=357). I just call it NerdTV or the Discovery channel for geeks.  Nothing like streaming shows like these: - [DNA Time Series Expression Data](http://www.uwtv.org/programs/displayevent.asp?rid=1838) - [Network Performance Routing Strategies](http://www.uwtv.org/programs/displayevent.asp?rid=1840) - [Vulnerability Analysis](http://www.uwtv.org/programs/displayevent.asp?rid=1792) - [Constructing Code: Expanders](http://www.uwtv.org/programs/displayevent.asp?rid=1839) - [Logical Inference Systems](http://www.uwtv.org/programs/displayevent.asp?rid=1764) - [Model Management: Databases](http://www.uwtv.org/programs/displayevent.asp?rid=1766) - [Data-Driven Texture and Motion](http://www.uwtv.org/programs/displayevent.asp?rid=1862) - [Routers: The Click System](http://www.uwtv.org/programs/displayevent.asp?rid=1863) - [Computer Architecture](http://www.uwtv.org/programs/displayevent.asp?rid=1841) - [Mac OS X for UNIX Users](http://www.uwtv.org/programs/displayevent.asp?rid=1763) - [ASM Models using AsmL](http://www.uwtv.org/programs/displayevent.asp?rid=1760) - [Digital Photography: Bhutan Expedition](http://www.uwtv.org/programs/displayevent.asp?rid=1865) - [Programming: Secure Execution](http://www.uwtv.org/programs/displayevent.asp?rid=1765) - [Cyclone: Safe Programming](http://www.uwtv.org/programs/displayevent.asp?rid=1793) - [Ubiquitous Computing: System Privacy](http://www.uwtv.org/programs/displayevent.asp?rid=1866) - [Approximate Replication](http://www.uwtv.org/programs/displayevent.asp?rid=1836) - [Probabilistically Checkable Proofs](http://www.uwtv.org/programs/displayevent.asp?rid=1864) - [Query Processing in Sensor Networks](http://www.uwtv.org/programs/displayevent.asp?rid=1791) (Link via [The Furrygoat Experience](http://www.furrygoat.com/)) ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Sep 15, 2003 ### [I'm in the "contributor spotlight" on MSDNAA](https://osherove.com/blog/2003/9/15/im-in-the-quotcontributor-spotlightquot-on-msdnaa.html) - Sep 10, 2003 ### [More geeky streaming lectures](https://osherove.com/blog/2003/9/10/more-geeky-streaming-lectures.html) - Sep 8, 2003 ### [Issues and solutions with Process and Request Identity in ASP.NET](https://osherove.com/blog/2003/9/8/issues-and-solutions-with-process-and-request-identity-in-as.html) - Sep 7, 2003 ### [SQL Server Professional: System-Supplied Trace UDFs](https://osherove.com/blog/2003/9/7/sql-server-professional-system-supplied-trace-udfs.html) --- title: ".Net security blogs" url: "https://osherove.com/blog/2003/9/9/net-security-blogs.md" canonical: "https://osherove.com/blog/2003/9/9/net-security-blogs.html" published: "2003-09-09T05:08:00" updated: "2003-09-09T05:08:00" tags: [".Net Quotations", "Blogging"] author: "Roy Osherove" description: "Darrell Norton posts about two very good .net security related blogs he found: Ivan , and Greg . Subscribed!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net security blogs By Roy Osherove September 9, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published September 9, 2003; technical details may be outdated. [Darrell Norton posts](http://dotnetjunkies.com/WebLog/darrell.norton/posts/1464.aspx) about two very good .net security related blogs he found: [Ivan](http://blogs.gotdotnet.com/ivanmed), and [Greg](http://blogs.gotdotnet.com/gregfee/). Subscribed! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 13, 2003 ### [Pure simplicity](https://osherove.com/blog/2003/9/13/pure-simplicity.html) - Sep 9, 2003 ### [IntelliJ IDEA Aurora Easter Egg](https://osherove.com/blog/2003/9/9/intellij-idea-aurora-easter-egg.html) - Sep 8, 2003 ### [BuildIt](https://osherove.com/blog/2003/9/8/buildit.html) - Sep 7, 2003 ### [Israel .NET web User Group meeting at September 10th - Performance & Caching](https://osherove.com/blog/2003/9/7/israel-net-web-user-group-meeting-at-september-10th-performa.html) --- title: "Issues and solutions with Process and Request Identity in ASP.NET" url: "https://osherove.com/blog/2003/9/8/issues-and-solutions-with-process-and-request-identity-in-as.md" canonical: "https://osherove.com/blog/2003/9/8/issues-and-solutions-with-process-and-request-identity-in-as.html" published: "2003-09-08T13:58:00" updated: "2003-09-08T13:58:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "Just found a great KB article that explains how deal with all kinds of permission and identity issues when doing stuff from ASP.NET. I've highlighted the sections so you can see all the tasks that could use…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Issues and solutions with Process and Request Identity in ASP.NET By Roy Osherove September 8, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 8, 2003; technical details may be outdated. Just found a great KB article that explains how deal with all kinds of permission and identity issues when doing stuff from ASP.NET. I've highlighted the sections so you can see all the tasks that could use configurations: [**INFO: Process and Request Identity in ASP.NET**](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1) - [SUMMARY](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#1) - [MORE INFORMATION](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#2) - [Configure the Process Identity](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#3) - [Default Permissions for the ASPNET Account](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#4) - [Accessing Resources](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5) - [Using File Resources](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5a) - [Enabling Impersonation](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5b) - [Using Databases](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5c) - [Using the Event Log](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5d) - [Using System.DirectoryServices and Active Directory](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5e) - [Using Performance Counters](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5f) - [Starting Out-of-Process COM Servers](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5g) - [Debugging Issues](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5h) - [Running Code with a Fixed Identity](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5i) - [Compiling Code-Behind Files on UNC Shares](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5j) - [Using ASP.NET on a Primary or Backup Domain Controller](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5k) - [Reading the IIS Metabase](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5l) - [Using System.Management and WMI](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5m) - [Interacting with the Desktop](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5n) - [Removing ASP.NET](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#5o) - [REFERENCES](http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q317/0/12.asp&NoWebContent=1#6) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 10, 2003 ### [Issue and solution: Web custom control not showing in designer with "Security Error" tooltip](https://osherove.com/blog/2003/9/10/issue-and-solution-web-custom-control-not-showing-in-designe.html) - Sep 10, 2003 ### [So, you have to live with 1.0?](https://osherove.com/blog/2003/9/10/so-you-have-to-live-with-10.html) - Sep 4, 2003 ### [Automatic Data-Relations](https://osherove.com/blog/2003/9/4/automatic-data-relations.html) - Sep 4, 2003 ### [Debugging shortcuts - Run to cursor, Find next statement](https://osherove.com/blog/2003/9/4/debugging-shortcuts-run-to-cursor-find-next-statement.html) --- title: "BuildIt" url: "https://osherove.com/blog/2003/9/8/buildit.md" canonical: "https://osherove.com/blog/2003/9/8/buildit.html" published: "2003-09-08T13:04:00" updated: "2003-09-08T13:04:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "I haven't really looked in to automatic build managers using .Net. I really should. But where do I start? Where do I look for good builders? Is there a page out there that lists them all?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BuildIt By Roy Osherove September 8, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 8, 2003; technical details may be outdated. I haven't really looked in to [automatic build managers](http://weblogs.asp.net/yosit/posts/26622.aspx) using .Net. I really should. But where do I start? Where do I look for good builders? Is there a page out there that lists them all? ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 9, 2003 ### [IntelliJ IDEA Aurora Easter Egg](https://osherove.com/blog/2003/9/9/intellij-idea-aurora-easter-egg.html) - Sep 9, 2003 ### [.Net security blogs](https://osherove.com/blog/2003/9/9/net-security-blogs.html) - Sep 7, 2003 ### [Israel .NET web User Group meeting at September 10th - Performance & Caching](https://osherove.com/blog/2003/9/7/israel-net-web-user-group-meeting-at-september-10th-performa.html) - Sep 6, 2003 ### [Can we have this for the PDC as well?](https://osherove.com/blog/2003/9/6/can-we-have-this-for-the-pdc-as-well.html) --- title: "Why people are not into RSS readers" url: "https://osherove.com/blog/2003/9/8/why-people-are-not-into-rss-readers.md" canonical: "https://osherove.com/blog/2003/9/8/why-people-are-not-into-rss-readers.html" published: "2003-09-08T11:43:00" updated: "2003-09-08T11:43:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Don Browning Answers to a post by Robert Scoble about the amount of bloggers at MS: “Well Robert, over here at Turner (BTW, don't know if I've ever said it publicly but I work for Turner Broadcasting ), we have 3…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why people are not into RSS readers By Roy Osherove September 8, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 8, 2003; technical details may be outdated. [Don Browning Answers](http://weblogs.asp.net/dbrowning/posts/26699.aspx) to a [post](http://radio.weblogs.com/0001011/2003/09/07.html#a4539) by [Robert Scoble](http://scoble.weblogs.com/) about the amount of bloggers at MS: _“Well Robert, over here at Turner (BTW, don't know if I've ever said it publicly but I work for_ [_Turner Broadcasting_](http://www.turner.com/)_), we have 3 bloggers... Thats it... 3.  Heck, I can't even get most of the developers I work with to **read** blogs, much less publish content ..“_ I hear ya. I'm in exactly the same situation and I bet others are hopelessly trying to do the same at other places. I think it has to do with the fact that blogs are still not that accessible. **RSS readers are not mainstream**. They are the "Linuxes" of today's data clients (Outlook being windows). The moment Outlook express or Outlook is fitted with a built in RSS client, and sites will  \*really publish\* the fact that they are available through RSS - then you'll start having people listen to you. Actually all this will happen when we stop talking about “_RSS”_ and start calling it a more people friendly name. How about "_Skinny mode_"?  _"This site is available in skinny mode. Just press \*this\* link here”_ and outlook will pop up asking if you'd like to subscribe to this site. That should be it. perhaps one can get this level of friendliness today, but you have to install an "RSS reader". You might as well have asked people to install an "SMTP packet sniffer" - sounds just as terrifying if you have no idea what both do. Actually, thinking about it some more, it does not apply only to less technical people. It applies to very technical people as well. Here's an example: A couple of months ago [Yosi taguri](http://weblogs.asp.net/yosit) in a big conference to about 400 people. In this conference he had a lecture, at the end of which he showed the .NetWeblogs up on the big screen and talked on and on about all the benefits one can get from visiting this site daily. A few days later I started seeing some traffic from Israel reading my blog. It wasn't much. mind you. Perhaps 5-20 page views a day from Israeli ISPs. A few weeks later, wer'e back at almost the same place - almost no Israeli traffic what so ever. Why is that? I was talking to one of the people in the user group the other day about some technical matter which I have recently posted about. When I told him “I blogged about it yesterday” he replied that yeah, he knows my site and the whole .net blogger world, but he feels as though its a waste of time. He usually looks in MSDN for problem solving but that's it. He's not the only one I encountered that knows about the RSS thing but does not do anything about it. Why is that? These people that I'm talking about now are very technical, and they care about learning new stuff. But using an RSS reader today is almost “taboo”. It's so new and so **not easy to use** and so **not readily available** that you have to work really hard and really know what you're looking for to get an RSS reader. In fact - I remember one of the first first posts I ever made in my blog (about 7 months ago): [RSS feeds are not for newbies, but should be](https://osherove.com/rosherove/posts/2126.aspx) Seems like nothing much has changed since then, Only better RSS readers and more available syndications, but it's **still** not for the average user (technical as they may be). I think the only people who read blogs(and other things) via RSS readers are those who , other than tech knowledge, have something else in common, although I can't define it. The other (and majority) crowed that reads these blogs just hists the page name in their browser several times a day. That's good enough for most people right now. Hopefully - it will change soon. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Sep 9, 2003 ### [Google likes me](https://osherove.com/blog/2003/9/9/google-likes-me.html) - Sep 9, 2003 ### [.Net security blogs](https://osherove.com/blog/2003/9/9/net-security-blogs.html) - Sep 1, 2003 ### [A good introduction to IT blogging and blogs in general](https://osherove.com/blog/2003/9/1/a-good-introduction-to-it-blogging-and-blogs-in-general.html) - Aug 29, 2003 ### [I've been slacking off](https://osherove.com/blog/2003/8/29/ive-been-slacking-off.html) --- title: "The OLE syndrom" url: "https://osherove.com/blog/2003/9/8/the-ole-syndrom.md" canonical: "https://osherove.com/blog/2003/9/8/the-ole-syndrom.html" published: "2003-09-08T05:40:00" updated: "2003-09-08T05:40:00" tags: ["Free book chapters", "Off Topic"] author: "Roy Osherove" description: "So wrote the Inside OLE guru: “.. I considered all of this utter nonsense. [†] I had no use for adoration, admiration, and obeisance. Flattery was useless, and I certainly didn’t want to shoulder the responsibility of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The OLE syndrom By Roy Osherove September 8, 2003 In [Free book chapters](https://osherove.com/blog/category/free-book-chapters), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 8, 2003; technical details may be outdated. **So wrote the _Inside OLE_ guru:** _“.. I considered all of this utter nonsense._[_\[†\]_](http://www.anandasangha.net/mysticmicrosoft/Chapter11.htm#_ftn2)  _I had no use for adoration, admiration, and obeisance.  Flattery was useless, and I certainly didn’t want to shoulder the responsibility of people’s projects and careers!  And I knew full well that my “expertise” in OLE was nothing short of a gift of grace—Inside OLE 2 had been given to me.  It wasn’t something I created by my own power...”_ \[[Mystic Microsoft - chapter 11](http://www.anandasangha.net/mysticmicrosoft/Chapter11.htm)\] - via [Robert Scoble](http://scoble.weblogs.com/) Sounds like the perfect [_Imposter Syndrom_](http://weblogs.asp.net/rosherove/posts/10573.aspx) to me. ## More in Free book chapters [All posts in Free book chapters](https://osherove.com/blog/category/free-book-chapters) - Oct 2, 2003 ### [Visual Studio .NET Shortcut Key Guide](https://osherove.com/blog/2003/10/2/visual-studio-net-shortcut-key-guide.html) - Sep 22, 2003 ### [Free chapter from "Essential .Net" by Don Box](https://osherove.com/blog/2003/9/22/free-chapter-from-quotessential-netquot-by-don-box.html) - Sep 2, 2003 ### [Windows Forms Programming in C# Sample Chapter](https://osherove.com/blog/2003/9/2/windows-forms-programming-in-c-sample-chapter.html) - Aug 21, 2003 ### [Free WMI book chapter](https://osherove.com/blog/2003/8/21/free-wmi-book-chapter.html) --- title: "Israel .NET web User Group meeting at September 10th - Performance & Caching" url: "https://osherove.com/blog/2003/9/7/israel-net-web-user-group-meeting-at-september-10th-performa.md" canonical: "https://osherove.com/blog/2003/9/7/israel-net-web-user-group-meeting-at-september-10th-performa.html" published: "2003-09-07T09:31:00" updated: "2003-09-07T09:31:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Hi All, This month meeting will take place on Wednesday, Sep 10th, at 17:45 (Registration and \"Kibud-Kal\" from 17:00). The meeting will take place at Microsoft meeting room at the \"hapnina\" 2 Raanana. Lecture Topic:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel .NET web User Group meeting at September 10th - Performance & Caching By Roy Osherove September 7, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 7, 2003; technical details may be outdated. Hi All, This month meeting will take place on Wednesday, Sep 10th, at 17:45 (Registration and "Kibud-Kal" from 17:00). The meeting will take place at Microsoft meeting room at the "hapnina" 2 Raanana. **Lecture Topic: "Performance & Caching"** **agenda :** The topics Udi will try to cover this month are: _What performance really is, and when it is important._ _How to tell if performance is a problem, and what to do about it._ _How caching relates to all this._ _Technologies that will be encountered:_ _ASP.NET, ADO.NET, SQL Server 2000_ _Common Caching techniques:_ _Caching data close to the client:_ _\- ViewState_ _\- Page output caching_ _\- Caching datasets_ _CAB ( Caching Application Block )_ _Each technique will show pros and cons, when and where to use it, and lots of code examples._ **Lecturer: Udi Dahan, VP of R&D at TDO, Ltd.** See you there. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 9, 2003 ### [.Net security blogs](https://osherove.com/blog/2003/9/9/net-security-blogs.html) - Sep 8, 2003 ### [BuildIt](https://osherove.com/blog/2003/9/8/buildit.html) - Sep 6, 2003 ### [Can we have this for the PDC as well?](https://osherove.com/blog/2003/9/6/can-we-have-this-for-the-pdc-as-well.html) - Sep 5, 2003 ### [\[Book\] Managed DirectX 9 Kick Start : Graphics and Game Programming](https://osherove.com/blog/2003/9/5/book-managed-directx-9-kick-start-graphics-and-game-programm.html) --- title: "SQL Server Professional: System-Supplied Trace UDFs" url: "https://osherove.com/blog/2003/9/7/sql-server-professional-system-supplied-trace-udfs.md" canonical: "https://osherove.com/blog/2003/9/7/sql-server-professional-system-supplied-trace-udfs.html" published: "2003-09-07T04:03:00" updated: "2003-09-07T04:03:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "Most of you have probably created your own SQL Server user-defined functions (UDFs), but did you know that Microsoft ships a fair number of its own UDFs, especially in the most recent SP3? In this article, Baya…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SQL Server Professional: System-Supplied Trace UDFs By Roy Osherove September 7, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 7, 2003; technical details may be outdated. _Most of you have probably created your own SQL Server user-defined functions (UDFs), but did you know that Microsoft ships a fair number of its own UDFs, especially in the most recent SP3? In this article, Baya Pavliashvili and Kevin Kline explore a subset of them that are related to traces._ \[[MSDN Just Published](http://msdn.microsoft.com/rss.xml)\] Here's the [full article on MSDN](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsqlpro03/html/sp03h1.asp). ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Sep 9, 2003 ### [NerdTV](https://osherove.com/blog/2003/9/9/nerdtv.html) - Sep 8, 2003 ### [Issues and solutions with Process and Request Identity in ASP.NET](https://osherove.com/blog/2003/9/8/issues-and-solutions-with-process-and-request-identity-in-as.html) - Sep 5, 2003 ### [The Hyperlinked Organization](https://osherove.com/blog/2003/9/5/the-hyperlinked-organization.html) - Sep 5, 2003 ### [Service-Oriented Architecture and Programming](https://osherove.com/blog/2003/9/5/service-oriented-architecture-and-programming.html) --- title: "Can we have this for the PDC as well?" url: "https://osherove.com/blog/2003/9/6/can-we-have-this-for-the-pdc-as-well.md" canonical: "https://osherove.com/blog/2003/9/6/can-we-have-this-for-the-pdc-as-well.html" published: "2003-09-06T23:11:00" updated: "2003-09-06T23:11:00" tags: [".Net Quotations", "Cool sites"] author: "Roy Osherove" description: "I am all-over- this . Yes folks, you can see and hear all the Teched 2003 sessions. Yes. see and hear! Notice that every session on that page has two links. The lower one is to merely download the PPT file, but the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Can we have this for the PDC as well? By Roy Osherove September 6, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published September 6, 2003; technical details may be outdated. I am all-over-[this](http://microsoft.sitestream.com/). Yes folks, you can see and hear all the Teched 2003 sessions. Yes. see **and** hear! Notice that every session on that page has **two**  links. The lower one is to merely download the PPT file, but the **upper** one(the headline) opens up a world of fun as you get to see both the presentation **and the voice over from the actual talk** synchronized. Indeed - very very cool. Thanks for the great tip, [Dave](http://weblogs.asp.net/dburke/posts/26534.aspx). Hey [Scoble](http://scoble.weblogs.com/), can you make the PDC sessions available like this as well? ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 8, 2003 ### [BuildIt](https://osherove.com/blog/2003/9/8/buildit.html) - Sep 7, 2003 ### [Israel .NET web User Group meeting at September 10th - Performance & Caching](https://osherove.com/blog/2003/9/7/israel-net-web-user-group-meeting-at-september-10th-performa.html) - Sep 5, 2003 ### [\[Book\] Managed DirectX 9 Kick Start : Graphics and Game Programming](https://osherove.com/blog/2003/9/5/book-managed-directx-9-kick-start-graphics-and-game-programm.html) - Sep 5, 2003 ### [Full-featured Automatic Argument Parser](https://osherove.com/blog/2003/9/5/full-featured-automatic-argument-parser.html) --- title: "Usability vs. Beauty" url: "https://osherove.com/blog/2003/9/6/usability-vs-beauty.md" canonical: "https://osherove.com/blog/2003/9/6/usability-vs-beauty.html" published: "2003-09-06T09:34:00" updated: "2003-09-06T09:34:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Mickey Williams takes me to task on Usability vs. Beauty . I disagree, but understand his point. I think more beautiful designs are simply more usable. Why? Because they are more pleasing to use. [ Robert Scoble ]…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Usability vs. Beauty By Roy Osherove September 6, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 6, 2003; technical details may be outdated. [_Mickey Williams takes me to task on Usability vs. Beauty_](http://www.servergeek.com/2003_08_31_blog_arc.htm#106260459985013150)_. I disagree, but understand his point. I think more beautiful designs are simply more usable. Why? Because they are more pleasing to use._ \[[](http://radio.weblogs.com/0001011/2003/09/05.html#a4507)[Robert Scoble](http://scoble.weblogs.com/)\] Totally disagree. Take a look at a product like "[Total Commander](http://www.ghisler.com/)". It still has that 70's software look, yet it is still one of the most known and beloved software products. Why? Because it gets the job done for which it was created, and it does it with a minimum of fuss or arrogance. It's still one of the most usable tools out there for admins even though many competitors have risen to the challenge. Of course, it could not have done this without setting the expectations to the right place. Don't expect a nice GUI, but do expect to be able to do anything with keyboard shortcuts. Even though it has lots  of missing "usability" features (Some of the dialogs just suck) it still wins out over a lot of other products. I've tried them all, and always went back and so have many many others. Just look for "file managers" in google. The best thing is - it's just a successor to "Norton Commander" which was the most used app in the DOS days. People still look for that power/simplicity combo, and TC seems to be one of the few that provides it. Usability does not always mean “low learning curve”. It does mean “consistent” almost always. TC is consistent with NC keystrokes and a lot of people used that. It's like a legacy that moved on. Same reason that Word still has a setting to look like word 95 somewhere (along with key binding). Take a desk clerk who handles his work with paper and no computer. Now give them the most usable paper processing app. What should it look like? It should like exactly like what his desk looked like, along with painted papers that can be moved around, labels and all. It should not look like a windows form. It should be consistent with what the work used to be like. That's how you win. TC does exactly that. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 8, 2003 ### [Why people are not into RSS readers](https://osherove.com/blog/2003/9/8/why-people-are-not-into-rss-readers.html) - Sep 8, 2003 ### [The OLE syndrom](https://osherove.com/blog/2003/9/8/the-ole-syndrom.html) - Sep 5, 2003 ### [Pics from the new office](https://osherove.com/blog/2003/9/5/pics-from-the-new-office.html) - Sep 5, 2003 ### [The Hyperlinked Organization](https://osherove.com/blog/2003/9/5/the-hyperlinked-organization.html) --- title: "[Book] Managed DirectX 9 Kick Start : Graphics and Game Programming" url: "https://osherove.com/blog/2003/9/5/book-managed-directx-9-kick-start-graphics-and-game-programm.md" canonical: "https://osherove.com/blog/2003/9/5/book-managed-directx-9-kick-start-graphics-and-game-programm.html" published: "2003-09-05T23:14:00" updated: "2003-09-05T23:14:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Brad Abrams reports of a new book by one of the dev leades on the Managed DirectX : Managed DirectX 9 Kick Start : Graphics and Game Programming" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[Book\] Managed DirectX 9 Kick Start : Graphics and Game Programming By Roy Osherove September 5, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 5, 2003; technical details may be outdated. [Brad Abrams reports](http://blogs.gotdotnet.com/BradA/permalink.aspx/3501ae58-1080-4b51-8f37-f3b791276db9) of a new book by one of the dev leades on the **Managed DirectX**: [Managed DirectX 9 Kick Start : Graphics and Game Programming](https://www.amazon.com/exec/obidos/ASIN/0672325969/iserializable-20) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 7, 2003 ### [Israel .NET web User Group meeting at September 10th - Performance & Caching](https://osherove.com/blog/2003/9/7/israel-net-web-user-group-meeting-at-september-10th-performa.html) - Sep 6, 2003 ### [Can we have this for the PDC as well?](https://osherove.com/blog/2003/9/6/can-we-have-this-for-the-pdc-as-well.html) - Sep 5, 2003 ### [Full-featured Automatic Argument Parser](https://osherove.com/blog/2003/9/5/full-featured-automatic-argument-parser.html) - Sep 4, 2003 ### [Cool debugging tool of the day: Developer Playground](https://osherove.com/blog/2003/9/4/cool-debugging-tool-of-the-day-developer-playground.html) --- title: "Pics from the new office" url: "https://osherove.com/blog/2003/9/5/pics-from-the-new-office.md" canonical: "https://osherove.com/blog/2003/9/5/pics-from-the-new-office.html" published: "2003-09-05T22:50:00" updated: "2003-09-05T22:50:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Although I recently switched jobs, I never really blogged about it. I'll make up for it a little now with a few pics from the new digs. These are *really* new digs mind you. In fact, I came in two weeks before the whole…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Pics from the new office By Roy Osherove September 5, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 5, 2003; technical details may be outdated. Although I recently switched jobs, I never really blogged about it. I'll make up for it a little now with a few pics from the new digs. These are \*really\* new digs mind you. In fact, I came in two weeks before the whole company moved places to where we are now (which is where the photos were taken). So the offices are \*brand spanking new\*  for everyone. The pics were taken by Ariel, my office roommate. A great guy. Clicking on these thumbnails takes you to more pics from our offices. But down below you can see me sitting in my new office, and the other pic shows the view from my window. Very cool place we got. I like it a lot. One more thing, notice the poster I have hanging on my wall. Can you recognize it? I'll give you a hint - “_**I'm a Mort**_“ :) [![](https://osherove.com/img/wb/f1e83f86_pnavy.com_royo_albums_Identify_Roy2.thumb.jpg)](http://pnavy.com/royo/Identify)   ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 8, 2003 ### [The OLE syndrom](https://osherove.com/blog/2003/9/8/the-ole-syndrom.html) - Sep 6, 2003 ### [Usability vs. Beauty](https://osherove.com/blog/2003/9/6/usability-vs-beauty.html) - Sep 5, 2003 ### [The Hyperlinked Organization](https://osherove.com/blog/2003/9/5/the-hyperlinked-organization.html) - Sep 4, 2003 ### [Congratulations Lior!](https://osherove.com/blog/2003/9/4/congratulations-lior.html) --- title: "The Hyperlinked Organization" url: "https://osherove.com/blog/2003/9/5/the-hyperlinked-organization.md" canonical: "https://osherove.com/blog/2003/9/5/the-hyperlinked-organization.html" published: "2003-09-05T20:52:00" updated: "2003-09-05T20:52:00" tags: ["Cool Articles", "Off Topic"] author: "Roy Osherove" description: "A post on the Xtreme Programming mailing list pointed to this article: The Hyperlinked Organization (David Weinberger) It's a wonderful read. Here's a quote: .. Increasingly, a useful expert is not someone with…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Hyperlinked Organization By Roy Osherove September 5, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 5, 2003; technical details may be outdated. A post on the Xtreme Programming mailing list pointed to this article: [The Hyperlinked Organization](http://www.cluetrain.com/passages.html#hyperlinked) (David Weinberger) It's a wonderful read. Here's a quote: _.. Increasingly, a useful expert is not someone with (containing) all the answers but someone who knows where to find answers. The new experts have value not by centralizing information and control but by being great "pointers" to other people and to useful, current information._ _In short, your most valuable employee is likely to be the one who, in response to a question, doesn't give a concrete answer in a booming voice but who says, "You should talk to Larry. And check Janis's project plan. Oh, and there's a mailing list on this topic I ran into a couple of weeks ago — "_ This article is part of a book that I now really really want to buy: [The cluetrain menifesto](https://www.amazon.com/exec/obidos/ASIN/0738202444/iserializable-20). (It appears you can get the full book online but the link is broken. Still, here's [chapter 1](http://www.cluetrain.com/apocalypso.html) in full.) **Update**: I found the full book [available in full online](http://www.peak.org/~luomat/misc/cluetrain/www.gonzomarkets.com/cluetrain/) here. Have fun. ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Sep 8, 2003 ### [Issues and solutions with Process and Request Identity in ASP.NET](https://osherove.com/blog/2003/9/8/issues-and-solutions-with-process-and-request-identity-in-as.html) - Sep 7, 2003 ### [SQL Server Professional: System-Supplied Trace UDFs](https://osherove.com/blog/2003/9/7/sql-server-professional-system-supplied-trace-udfs.html) - Sep 5, 2003 ### [Service-Oriented Architecture and Programming](https://osherove.com/blog/2003/9/5/service-oriented-architecture-and-programming.html) - Sep 4, 2003 ### [Unit testing links, and NUnit Add-in rocks](https://osherove.com/blog/2003/9/4/unit-testing-links-and-nunit-add-in-rocks.html) --- title: "Full-featured Automatic Argument Parser" url: "https://osherove.com/blog/2003/9/5/full-featured-automatic-argument-parser.md" canonical: "https://osherove.com/blog/2003/9/5/full-featured-automatic-argument-parser.html" published: "2003-09-05T19:52:00" updated: "2003-09-05T19:52:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Full-featured Automatic Argument Parser - Another command-line parsing class for .NET. This one makes good use of attributes to set things up in a natural way. [ Larkware ] It looks totally cool. Can't wait for my next…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Full-featured Automatic Argument Parser By Roy Osherove September 5, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 5, 2003; technical details may be outdated. [Full-featured Automatic Argument Parser](http://www.codeproject.com/csharp/ArgumentParser.asp) - Another command-line parsing class for .NET. This one makes good use of attributes to set things up in a natural way. \[[Larkware](http://www.larkware.com/)\] It looks totally cool. Can't wait for my next program that accepts command line arguments so I can test this baby in “real“ action :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 6, 2003 ### [Can we have this for the PDC as well?](https://osherove.com/blog/2003/9/6/can-we-have-this-for-the-pdc-as-well.html) - Sep 5, 2003 ### [\[Book\] Managed DirectX 9 Kick Start : Graphics and Game Programming](https://osherove.com/blog/2003/9/5/book-managed-directx-9-kick-start-graphics-and-game-programm.html) - Sep 4, 2003 ### [Cool debugging tool of the day: Developer Playground](https://osherove.com/blog/2003/9/4/cool-debugging-tool-of-the-day-developer-playground.html) - Sep 3, 2003 ### [Cool utility of the day: Code Snippet Compiler](https://osherove.com/blog/2003/9/3/cool-utility-of-the-day-code-snippet-compiler.html) --- title: "Service-Oriented Architecture and Programming" url: "https://osherove.com/blog/2003/9/5/service-oriented-architecture-and-programming.md" canonical: "https://osherove.com/blog/2003/9/5/service-oriented-architecture-and-programming.html" published: "2003-09-05T09:24:00" updated: "2003-09-05T09:24:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "Just finished watching these two MSDN TV shows: SOAP: Service-Oriented Architecture and Programming, Pt. 1 SOAP: Service-Oriented Architecture and Programming, Pt. 2 which are just the same lecture by Don box split in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Service-Oriented Architecture and Programming By Roy Osherove September 5, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 5, 2003; technical details may be outdated. Just finished watching these two MSDN TV shows: [SOAP: Service-Oriented Architecture and Programming, Pt. 1](http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20030827SOAPDB/manifest.xml) [SOAP: Service-Oriented Architecture and Programming, Pt. 2](http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20030902SOAPDB/manifest.xml) which are just the same lecture by Don box split in two. First, **Don is a hell of a lecturer**. Second, It's a very good lecture about what/where/when/why abstractions and services and OOP and all that stuff came to be. Even though I'm not into all that SOAP stuff, I actually got a lot out of it, and feel like I understand a little bit more about the problems and challenges that face us as developers and the people who are behind SOAP. Excellent! Thanks [Chris](http://www.sellsbrothers.com/) . ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Sep 7, 2003 ### [SQL Server Professional: System-Supplied Trace UDFs](https://osherove.com/blog/2003/9/7/sql-server-professional-system-supplied-trace-udfs.html) - Sep 5, 2003 ### [The Hyperlinked Organization](https://osherove.com/blog/2003/9/5/the-hyperlinked-organization.html) - Sep 4, 2003 ### [Unit testing links, and NUnit Add-in rocks](https://osherove.com/blog/2003/9/4/unit-testing-links-and-nunit-add-in-rocks.html) - Sep 4, 2003 ### [MSDN could have had me](https://osherove.com/blog/2003/9/4/msdn-could-have-had-me.html) --- title: "Unit testing links, and NUnit Add-in rocks" url: "https://osherove.com/blog/2003/9/4/unit-testing-links-and-nunit-add-in-rocks.md" canonical: "https://osherove.com/blog/2003/9/4/unit-testing-links-and-nunit-add-in-rocks.html" published: "2003-09-04T19:17:00" updated: "2003-09-04T19:17:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "While browsing around Jamie's weblog , I noticed two very interesting links concerning Unit testing: Test-Driven Development In .NET Unit Testing and Test-First Development Next week I'm planning on opening the first of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unit testing links, and NUnit Add-in rocks By Roy Osherove September 4, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 4, 2003; technical details may be outdated. While browsing around [Jamie's weblog](http://weblogs.asp.net/nunitaddin), I noticed two very interesting links concerning Unit testing: - [Test-Driven Development In .NET](http://www.peterprovost.org/wiki/ow.asp?Test%2DDriven%5FDevelopment%5FIn%5F%2ENET) - [Unit Testing and Test-First Development](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp03202003.asp) Next week I'm planning on opening the first of hopefully many .Net study group in my new job. My topic of choice was doing Unit tests with [NUnit](http://www.nunit.org/) and the [NUnit](http://www.nunit.org/) add-in. These links should be pretty helpful to organize my thoughts on this. I'd like to say one more thing. [Jamie cansdale](http://weblogs.asp.net/nunitaddin)'s [](http://www.mutantdesign.co.uk/nunit-addin/)[NUnit](http://www.nunit.org/) Addin is one of the most useful pieces of software I have ever used, and is a tribute to Jamie's total and utter coolness. **Thanks Jamie** :) You've helped make my (and many others, including my users) life a little easier and elegant. ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Sep 5, 2003 ### [The Hyperlinked Organization](https://osherove.com/blog/2003/9/5/the-hyperlinked-organization.html) - Sep 5, 2003 ### [Service-Oriented Architecture and Programming](https://osherove.com/blog/2003/9/5/service-oriented-architecture-and-programming.html) - Sep 4, 2003 ### [MSDN could have had me](https://osherove.com/blog/2003/9/4/msdn-could-have-had-me.html) - Sep 1, 2003 ### [Showing the "Browse For Folder" dialog](https://osherove.com/blog/2003/9/1/showing-the-quotbrowse-for-folderquot-dialog.html) --- title: "MSDN could have had me" url: "https://osherove.com/blog/2003/9/4/msdn-could-have-had-me.md" canonical: "https://osherove.com/blog/2003/9/4/msdn-could-have-had-me.html" published: "2003-09-04T18:59:00" updated: "2003-09-04T18:59:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "The upcoming MSDN magazine will feature this article: Plug-Ins : Let Users Add Functionality to Your .NET Applications with Macros and Plug-Ins by Jason Clark Damn. Sounds like my two articles about plug-ins in .Net…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSDN could have had me By Roy Osherove September 4, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 4, 2003; technical details may be outdated. The [upcoming MSDN](http://msdn.microsoft.com/msdnmag/issues/03/10/default.aspx) magazine will feature this article: **Plug-Ins: Let Users Add Functionality to Your .NET Applications with Macros and Plug-Ins** by Jason Clark Damn. Sounds like my [two articles about plug-ins](http://msdnaa.net/search.aspx?SearchText=Roy&ResourceTypes=all&Mode=Search&Archives=False) in .Net could have been there instead :(   I feel like I could contribute so much. Hey you guys over at MSDN - You could have asked me, I'd have donated my articles for free. Who do I call? ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Sep 5, 2003 ### [Service-Oriented Architecture and Programming](https://osherove.com/blog/2003/9/5/service-oriented-architecture-and-programming.html) - Sep 4, 2003 ### [Unit testing links, and NUnit Add-in rocks](https://osherove.com/blog/2003/9/4/unit-testing-links-and-nunit-add-in-rocks.html) - Sep 1, 2003 ### [Showing the "Browse For Folder" dialog](https://osherove.com/blog/2003/9/1/showing-the-quotbrowse-for-folderquot-dialog.html) - Sep 1, 2003 ### [A good introduction to IT blogging and blogs in general](https://osherove.com/blog/2003/9/1/a-good-introduction-to-it-blogging-and-blogs-in-general.html) --- title: "Cool debugging tool of the day: Developer Playground" url: "https://osherove.com/blog/2003/9/4/cool-debugging-tool-of-the-day-developer-playground.md" canonical: "https://osherove.com/blog/2003/9/4/cool-debugging-tool-of-the-day-developer-playground.html" published: "2003-09-04T18:45:00" updated: "2003-09-04T18:45:00" tags: [".Net Quotations", "Cool sites"] author: "Roy Osherove" description: "My friend Jonas Blunck , author of the most excellent ieHTTPHeaders and ComTrace , dropped me a line a couple of days ago, to let me know he's dropped a new development tool -- Developer Playground . This is yet another…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool debugging tool of the day: Developer Playground By Roy Osherove September 4, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published September 4, 2003; technical details may be outdated. _My friend_ [_Jonas Blunck_](http://www.blunck.info/ "http://www.blunck.info")_, author of the most excellent_ [_ieHTTPHeaders_](http://www.blunck.info/iehttpheaders.html "http://www.blunck.info/iehttpheaders.html") _and_ [_ComTrace_](http://www.blunck.info/comtrace.html "http://www.blunck.info/comtrace.html")_, dropped me a line a couple of days ago, to let me know he's dropped a new development tool --_ [_Developer Playground_](http://www.blunck.info/dp.html "http://www.blunck.info/dp.html")_. This is yet another piece of pure debugging magic that Jonas (and_ [_Kim Grasman_](http://www.winwonk.com/ "http://www.winwonk.com/")_) have put together -- and a must have for anyone doing any serious debugging or reverse engineering type work... The short list of features from their site includes:_ > - _Shows run-time DLL dependencies for running processes_ > - _Hooks any process, and tracing single calls to external DLLs_ > - _Integrates with favorite tools such as Google, OleView, Depends and the Explorer_ > - _Saves trace output to text file_ > - _Comes with semi-integrated HTML help (not that it's necessary)_ > > _Pick it up **now**!_ > > \[[Sam Gentile](http://samgentile.com/blog/posts/9750.aspx)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 5, 2003 ### [\[Book\] Managed DirectX 9 Kick Start : Graphics and Game Programming](https://osherove.com/blog/2003/9/5/book-managed-directx-9-kick-start-graphics-and-game-programm.html) - Sep 5, 2003 ### [Full-featured Automatic Argument Parser](https://osherove.com/blog/2003/9/5/full-featured-automatic-argument-parser.html) - Sep 3, 2003 ### [Cool utility of the day: Code Snippet Compiler](https://osherove.com/blog/2003/9/3/cool-utility-of-the-day-code-snippet-compiler.html) - Sep 2, 2003 ### [Windows Forms Programming in C# Sample Chapter](https://osherove.com/blog/2003/9/2/windows-forms-programming-in-c-sample-chapter.html) --- title: "Automatic Data-Relations" url: "https://osherove.com/blog/2003/9/4/automatic-data-relations.md" canonical: "https://osherove.com/blog/2003/9/4/automatic-data-relations.html" published: "2003-09-04T13:01:00" updated: "2003-09-04T13:01:00" tags: [".Net Original"] author: "Roy Osherove" description: "Greg asks about data relation support in Yukon . Meanwhile, in the present, there are several ways to avoid building those relations manually in code: Return hierachical data from your SQL server procedures (with the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Automatic Data-Relations By Roy Osherove September 4, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 4, 2003; technical details may be outdated. [Greg asks about data relation support in Yukon](http://weblogs.asp.net/grobinson/posts/26340.aspx). Meanwhile, in the present, there are several ways to avoid building those relations manually in code: - Return hierachical data from your SQL server procedures (with the FOR XML keywords). When you use ExecuteXMLReader() against this data, you can make your dataset read the XML from the reader. Automagically, all the relevant data relations that appear in the returned hierarchical XML will be created within the dataset. You get the added benefit of retrieving multiple tables in a single call to SQL server. - Another way is for when you can't return XML from your queries. You can use my [SchemaHelper](http://weblogs.asp.net/rosherove/story/9661.aspx) class to automacially build any data relations between tables that are present in your dataset. The class queries the database for its underlying schema (using OleDbConnection.GetOleDbSchema()) . Right now it needs an OleDbConnection, but there is also a way to retrieve the schema data from a SqlConnection , which I hope to add to the class soon. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 10, 2003 ### [So, you have to live with 1.0?](https://osherove.com/blog/2003/9/10/so-you-have-to-live-with-10.html) - Sep 8, 2003 ### [Issues and solutions with Process and Request Identity in ASP.NET](https://osherove.com/blog/2003/9/8/issues-and-solutions-with-process-and-request-identity-in-as.html) - Sep 4, 2003 ### [Debugging shortcuts - Run to cursor, Find next statement](https://osherove.com/blog/2003/9/4/debugging-shortcuts-run-to-cursor-find-next-statement.html) - Sep 4, 2003 ### [Books to buy](https://osherove.com/blog/2003/9/4/books-to-buy.html) --- title: "Congratulations Lior!" url: "https://osherove.com/blog/2003/9/4/congratulations-lior.md" canonical: "https://osherove.com/blog/2003/9/4/congratulations-lior.html" published: "2003-09-04T08:43:00" updated: "2003-09-04T08:43:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Lior Rozner is getting married today! Woohoo! Congratulations Lior, I wish you everything you'll ever want or need :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Congratulations Lior! By Roy Osherove September 4, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 4, 2003; technical details may be outdated. [Lior Rozner](http://weblogs.asp.net/lrozner/ "weblog") is getting married today!  Woohoo! Congratulations Lior, I wish you everything you'll ever want or need :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 5, 2003 ### [Pics from the new office](https://osherove.com/blog/2003/9/5/pics-from-the-new-office.html) - Sep 5, 2003 ### [The Hyperlinked Organization](https://osherove.com/blog/2003/9/5/the-hyperlinked-organization.html) - Sep 3, 2003 ### [RLRT htpd tscdrb gntst](https://osherove.com/blog/2003/9/3/rlrt-htpd-tscdrb-gntst.html) - Sep 2, 2003 ### [Communication is key](https://osherove.com/blog/2003/9/2/communication-is-key.html) --- title: "Debugging shortcuts - Run to cursor, Find next statement" url: "https://osherove.com/blog/2003/9/4/debugging-shortcuts-run-to-cursor-find-next-statement.md" canonical: "https://osherove.com/blog/2003/9/4/debugging-shortcuts-run-to-cursor-find-next-statement.html" published: "2003-09-04T07:13:00" updated: "2003-09-04T07:13:00" tags: [".Net Original"] author: "Roy Osherove" description: "Here are some common debugging tasks that I've found you can do with the keyboard: * sometimes when I debug I go to all sorts of places in my code, while inside a breakpoint or when debugging line by line. In order to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Debugging shortcuts - Run to cursor, Find next statement By Roy Osherove September 4, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 4, 2003; technical details may be outdated. Here are some common debugging tasks that I've found you can do with the keyboard: \* sometimes when I debug I go to all sorts of places in my code, while inside a breakpoint or when debugging line by line. In order to quickly get back to the line that is going to be executed next - press **ALT + NUM \*** \* press **CTRL+F10** to make the program run up to the line you are standing on ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 8, 2003 ### [Issues and solutions with Process and Request Identity in ASP.NET](https://osherove.com/blog/2003/9/8/issues-and-solutions-with-process-and-request-identity-in-as.html) - Sep 4, 2003 ### [Automatic Data-Relations](https://osherove.com/blog/2003/9/4/automatic-data-relations.html) - Sep 4, 2003 ### [Books to buy](https://osherove.com/blog/2003/9/4/books-to-buy.html) - Sep 3, 2003 ### [Israel Visual Basic User Group today - on ADO.Net](https://osherove.com/blog/2003/9/3/israel-visual-basic-user-group-today-on-adonet.html) --- title: "Books to buy" url: "https://osherove.com/blog/2003/9/4/books-to-buy.md" canonical: "https://osherove.com/blog/2003/9/4/books-to-buy.html" published: "2003-09-04T05:03:00" updated: "2003-09-04T05:03:00" tags: [".Net Original"] author: "Roy Osherove" description: "Here's the list of books my company is planning to buy in the next few days (suggestions are welcome) : Windows Forms Programming in C# Essential .NET, Volume I: The Common Language Runtime Patterns of Enterprise…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Books to buy By Roy Osherove September 4, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 4, 2003; technical details may be outdated. Here's the list of books my company is planning to buy in the next few days (suggestions are welcome) : [Windows Forms Programming in C#](https://www.amazon.com/exec/obidos/ASIN/0321116208/iserializable-20) [Essential .NET, Volume I: The Common Language Runtime](https://www.amazon.com/exec/obidos/ASIN/0201734117/qid=1058574497/sr=8-3/ref=sr_8_3/iserializable-20) [Patterns of Enterprise Application Architecture](https://www.amazon.com/exec/obidos/ASIN/0321127420/ref=pd_sim_books_3/iserializable-20)  [Programming Windows with C# (Core Reference)](https://www.amazon.com/exec/obidos/ASIN/0735613702/ref=pd_sxp_elt_l1/iserializable-20) [.NET Framework Security](https://www.amazon.com/exec/obidos/ASIN/067232184X/ref=pd_sxp_elt_l1/iserializable-20) [Microsoft ADO.NET (Core Reference)](https://www.amazon.com/exec/obidos/ASIN/0735614237/ref=pd_sxp_elt_l1/iserializable-20) [Programming .NET Components](https://www.amazon.com/exec/obidos/ASIN/0596003471/iserializable-20) [Transactional COM+: Building Scalable Applications](https://www.amazon.com/exec/obidos/ASIN/0201615940/qid=1058575074/sr=8-1/ref=sr_8_1/iserializable-20) [About Face 2.0: The Essentials of Interaction Design](https://www.amazon.com/exec/obidos/ASIN/0764526413/iserializable-20) [Shared Source CLI Essentials](https://www.amazon.com/exec/obidos/ASIN/059600351X/iserializable-20) [How to Break Software: A Practical Guide to Testing](https://www.amazon.com/exec/obidos/ASIN/0201796198/iserializable-20) [.NET and COM: The Complete Interoperability Guide](https://www.amazon.com/exec/obidos/ASIN/067232170X/iserializable-20) [Pair Programming Illuminated](https://www.amazon.com/exec/obidos/ASIN/0201745763/iserializable-20) [Streamlined Object Modeling: Patterns, Rules, and Implementation](https://www.amazon.com/exec/obidos/ASIN/0130668397/iserializable-20) [PeopleWare](https://www.amazon.com/exec/obidos/ASIN/0932633439/iserializable-20) [Managing Software Requirements](https://www.amazon.com/exec/obidos/ASIN/0201615932/iserializable-20) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 4, 2003 ### [Automatic Data-Relations](https://osherove.com/blog/2003/9/4/automatic-data-relations.html) - Sep 4, 2003 ### [Debugging shortcuts - Run to cursor, Find next statement](https://osherove.com/blog/2003/9/4/debugging-shortcuts-run-to-cursor-find-next-statement.html) - Sep 3, 2003 ### [Israel Visual Basic User Group today - on ADO.Net](https://osherove.com/blog/2003/9/3/israel-visual-basic-user-group-today-on-adonet.html) - Sep 1, 2003 ### [Hosting the CLR - the native approach](https://osherove.com/blog/2003/9/1/hosting-the-clr-the-native-approach.html) --- title: "Israel Visual Basic User Group today - on ADO.Net" url: "https://osherove.com/blog/2003/9/3/israel-visual-basic-user-group-today-on-adonet.md" canonical: "https://osherove.com/blog/2003/9/3/israel-visual-basic-user-group-today-on-adonet.html" published: "2003-09-03T06:41:00" updated: "2003-09-03T06:41:00" tags: [".Net Original"] author: "Roy Osherove" description: "Israel Visual Basic User Group this Wednesday - on ADO.Net You don't have to be a VB programmer to learn about .Net. It's about the framework anyway. I recommend you be there. If you think you already know ado.net - go…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel Visual Basic User Group today - on ADO.Net By Roy Osherove September 3, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 3, 2003; technical details may be outdated. [Israel Visual Basic User Group this Wednesday - on ADO.Net](https://osherove.com/rosherove/posts/26080.aspx) You don't have to be a VB programmer to learn about .Net. It's about the framework anyway. I recommend you be there. If you think you already know ado.net - go to the second half of the meeting which deals with advanced ADO.Net issues. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 4, 2003 ### [Debugging shortcuts - Run to cursor, Find next statement](https://osherove.com/blog/2003/9/4/debugging-shortcuts-run-to-cursor-find-next-statement.html) - Sep 4, 2003 ### [Books to buy](https://osherove.com/blog/2003/9/4/books-to-buy.html) - Sep 1, 2003 ### [Hosting the CLR - the native approach](https://osherove.com/blog/2003/9/1/hosting-the-clr-the-native-approach.html) - Sep 1, 2003 ### [The \[Conditional\] Attribute](https://osherove.com/blog/2003/9/1/the-conditional-attribute.html) --- title: "RLRT htpd tscdrb gntst" url: "https://osherove.com/blog/2003/9/3/rlrt-htpd-tscdrb-gntst.md" canonical: "https://osherove.com/blog/2003/9/3/rlrt-htpd-tscdrb-gntst.html" published: "2003-09-03T05:22:00" updated: "2003-09-03T05:22:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is a true matrix fan. And he shows us how to get at the latest hidden matrix trailer." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # RLRT htpd tscdrb gntst By Roy Osherove September 3, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 3, 2003; technical details may be outdated. [This](http://objective.mine.nu/archive/2003/9/3.aspx#when:01:36:46.9410016) is a true matrix fan. And he [shows us](http://objective.mine.nu/archive/2003/9/3.aspx#when:01:36:46.9410016) how to get at the latest hidden matrix trailer. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 5, 2003 ### [The Hyperlinked Organization](https://osherove.com/blog/2003/9/5/the-hyperlinked-organization.html) - Sep 4, 2003 ### [Congratulations Lior!](https://osherove.com/blog/2003/9/4/congratulations-lior.html) - Sep 2, 2003 ### [Communication is key](https://osherove.com/blog/2003/9/2/communication-is-key.html) - Sep 2, 2003 ### [GSM decrypted](https://osherove.com/blog/2003/9/2/gsm-decrypted.html) --- title: "Cool utility of the day: Code Snippet Compiler" url: "https://osherove.com/blog/2003/9/3/cool-utility-of-the-day-code-snippet-compiler.md" canonical: "https://osherove.com/blog/2003/9/3/cool-utility-of-the-day-code-snippet-compiler.html" published: "2003-09-03T04:40:00" updated: "2003-09-03T04:40:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "My blogging buddy Jeff Key (maker of the increasingly useful NetPing ) has posted yet another snazzy util, a Code Snippet Compiler . As .NET folks, we all find ourselves creating junk Console applications with a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool utility of the day: Code Snippet Compiler By Roy Osherove September 3, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 3, 2003; technical details may be outdated. _My blogging buddy_ [_Jeff Key_](http://weblogs.asp.net/Jkey/) _(maker of the increasingly useful_ [_NetPing_](http://www.sliver.com/dotnet/netping/)_) has posted yet another snazzy util, a_ [_Code Snippet Compiler_](http://www.sliver.com/dotnet/SnippetCompiler/)_. As .NET folks, we all find ourselves creating junk Console applications with a Console.WriteLine just to test a snippet of code! His utility sits in the tray and is always ready when you want to whip out a quick line or two. Very cool._ \[[Scott Hanselman's Weblog](http://radio.weblogs.com/0106747/)\] Blogs **rock**. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 5, 2003 ### [Full-featured Automatic Argument Parser](https://osherove.com/blog/2003/9/5/full-featured-automatic-argument-parser.html) - Sep 4, 2003 ### [Cool debugging tool of the day: Developer Playground](https://osherove.com/blog/2003/9/4/cool-debugging-tool-of-the-day-developer-playground.html) - Sep 2, 2003 ### [Windows Forms Programming in C# Sample Chapter](https://osherove.com/blog/2003/9/2/windows-forms-programming-in-c-sample-chapter.html) - Sep 2, 2003 ### [The Final Release of NUnit V2.1 is now available](https://osherove.com/blog/2003/9/2/the-final-release-of-nunit-v21-is-now-available.html) --- title: "Windows Forms Programming in C# Sample Chapter" url: "https://osherove.com/blog/2003/9/2/windows-forms-programming-in-c-sample-chapter.md" canonical: "https://osherove.com/blog/2003/9/2/windows-forms-programming-in-c-sample-chapter.html" published: "2003-09-02T18:59:00" updated: "2003-09-02T18:59:00" tags: [".Net Quotations", "Free book chapters"] author: "Roy Osherove" description: "AW has been kind enough to post the preface and a sample chapter (Chapter 9: Design-Time Integration) to the official AW Windows Forms Programming in C# book page. They've also posted Mike Blaszczak's foreword. Enjoy.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Windows Forms Programming in C\# Sample Chapter By Roy Osherove September 2, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published September 2, 2003; technical details may be outdated. _AW has been kind enough to post_ [_the preface and a sample chapter_](http://www.awprofessional.com/catalog/product.asp?product_id={B757E215-0FB4-4EA1-A051-65EE537AE9C7}) _(Chapter 9: Design-Time Integration) to the official AW Windows Forms Programming in C# book page. They've also posted Mike Blaszczak's foreword. Enjoy._ \[via [Chris Sells](http://www.sellsbrothers.com/)\] (links added by me) Cool! (I think I write 'cool' too much. Do I?) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 4, 2003 ### [Cool debugging tool of the day: Developer Playground](https://osherove.com/blog/2003/9/4/cool-debugging-tool-of-the-day-developer-playground.html) - Sep 3, 2003 ### [Cool utility of the day: Code Snippet Compiler](https://osherove.com/blog/2003/9/3/cool-utility-of-the-day-code-snippet-compiler.html) - Sep 2, 2003 ### [The Final Release of NUnit V2.1 is now available](https://osherove.com/blog/2003/9/2/the-final-release-of-nunit-v21-is-now-available.html) - Sep 2, 2003 ### [Israel Visual Basic User Group this wednesday - on ADO.Net](https://osherove.com/blog/2003/9/2/israel-visual-basic-user-group-this-wednesday-on-adonet.html) --- title: ".NetWeblogs chosen for site of the week on ASPExperts" url: "https://osherove.com/blog/2003/9/2/netweblogs-chosen-for-site-of-the-week-on-aspexperts.md" canonical: "https://osherove.com/blog/2003/9/2/netweblogs-chosen-for-site-of-the-week-on-aspexperts.html" published: "2003-09-02T15:05:00" updated: "2003-09-02T15:05:00" tags: [".NetWeblogs Site"] author: "Roy Osherove" description: "digging through the links in Shawn's post about ASPExpert's book of the week , I find that weblogs.asp.net has been chosen site of the week as well! Coolness! Way to go Scott :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .NetWeblogs chosen for site of the week on ASPExperts By Roy Osherove September 2, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) **Historical article** · Originally published September 2, 2003; technical details may be outdated. digging through the links in [Shawn's post about ASPExpert's book of the week](http://weblogs.asp.net/shawnmor/posts/26109.aspx), I find that **weblogs.asp.net** has been chosen [site of the week](http://www.aspexperts.com/) as well! Coolness! Way to go Scott :) ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - Dec 23, 2003 ### [About the new .Netweblogs features](https://osherove.com/blog/2003/12/23/about-the-new-netweblogs-features.html) - Jul 29, 2003 ### [.NetWeblogs coolness achieved](https://osherove.com/blog/2003/7/29/netweblogs-coolness-achieved.html) - May 30, 2003 ### [New Skin, New Host...](https://osherove.com/blog/2003/5/30/new-skin-new-host.html) --- title: "Communication is key" url: "https://osherove.com/blog/2003/9/2/communication-is-key.md" canonical: "https://osherove.com/blog/2003/9/2/communication-is-key.html" published: "2003-09-02T12:11:00" updated: "2003-09-02T12:11:00" tags: ["Off Topic"] author: "Roy Osherove" description: "“ ...Also, I've recently started to try to really concentrate on what my friends and family are saying when they start conversations with me while I'm working. (Previously I would continue working, giving a grunt now…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Communication is key By Roy Osherove September 2, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 2, 2003; technical details may be outdated. “_...Also, I've recently started to try to really concentrate on what my friends and family are saying when they start conversations with me while I'm working. (Previously I would continue working, giving a grunt now and again, as necessary.) This little thing has made a big difference. Of course, lots of folks way smarter than I already know this stuff, but to a geek who only learned how to communicate with other humans relatively recently, this is deep thinking!_” \[[Chris Sells communicates](http://www.sellsbrothers.com/spout/#Communication_Is_All)\] Oh. Been there. I too need to start listening to my phone conversations and stop typing more while the most important people in my life talk to me. It's stupid and I'll start trying **now**. I bet this is a big problem for a lot of folks here as well.. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 4, 2003 ### [Congratulations Lior!](https://osherove.com/blog/2003/9/4/congratulations-lior.html) - Sep 3, 2003 ### [RLRT htpd tscdrb gntst](https://osherove.com/blog/2003/9/3/rlrt-htpd-tscdrb-gntst.html) - Sep 2, 2003 ### [GSM decrypted](https://osherove.com/blog/2003/9/2/gsm-decrypted.html) - Sep 1, 2003 ### [A better disposable email](https://osherove.com/blog/2003/9/1/a-better-disposable-email.html) --- title: "The Final Release of NUnit V2.1 is now available" url: "https://osherove.com/blog/2003/9/2/the-final-release-of-nunit-v21-is-now-available.md" canonical: "https://osherove.com/blog/2003/9/2/the-final-release-of-nunit-v21-is-now-available.html" published: "2003-09-02T12:00:00" updated: "2003-09-02T12:00:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "This is the third major release of NUnit and the second since it was rewritten to take advantage of .NET custom attributes. Highlights of this release include: * Support for the .NET framework versions 1.0 and 1.1 * The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Final Release of NUnit V2.1 is now available By Roy Osherove September 2, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published September 2, 2003; technical details may be outdated. _This is the third major release of NUnit and the second since it was rewritten to take advantage of .NET custom attributes. Highlights of this release include: \* Support for the .NET framework versions 1.0 and 1.1 \* The ability to run test suites across multiple assemblies \* New TestFixtureSetup and TestFixtureTeardown attributes \* Improvements to the GUI interface \* New command line switches for both GUI and Console runners \* Some degree of integration with Visual Studio \* Tests now execute in the same order as they are displayed in the gui. \* Substantial improvements in error and exception reporting. \* Now runs on Windows 98 Download either the msi file or the source zip from the following link: _[_http://sourceforge.net/project/showfiles.php?group\_id=10749&release\_id=179125_](http://sourceforge.net/project/showfiles.php?group_id=10749&release_id=179125 "http://sourceforge.net/project/showfiles.php?group_id=10749&release_id=179125") _See the ReadMe.pdf for more info (include in the msi install but not in the source zip).__ \[_[_SourceForge.net: SF.net Project News: NUnit .Net unit testing framework (including full news text)_](http://sourceforge.net/forum/forum.php?forum_id=306292)_\]_ _You already know this is a must have in your daily development tools._ \[[Sam Gentile's Blog](http://samgentile.com/blog/posts/9697.aspx)\] **'nuff said.** ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 3, 2003 ### [Cool utility of the day: Code Snippet Compiler](https://osherove.com/blog/2003/9/3/cool-utility-of-the-day-code-snippet-compiler.html) - Sep 2, 2003 ### [Windows Forms Programming in C# Sample Chapter](https://osherove.com/blog/2003/9/2/windows-forms-programming-in-c-sample-chapter.html) - Sep 2, 2003 ### [Israel Visual Basic User Group this wednesday - on ADO.Net](https://osherove.com/blog/2003/9/2/israel-visual-basic-user-group-this-wednesday-on-adonet.html) - Sep 1, 2003 ### [Showing the "Browse For Folder" dialog](https://osherove.com/blog/2003/9/1/showing-the-quotbrowse-for-folderquot-dialog.html) --- title: "GSM decrypted" url: "https://osherove.com/blog/2003/9/2/gsm-decrypted.md" canonical: "https://osherove.com/blog/2003/9/2/gsm-decrypted.html" published: "2003-09-02T10:07:00" updated: "2003-09-02T10:07:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Looks like our people in the israel Technion institute found a way to decrypt the GSM network stream , allowing them to listen in on about 850 million people's conversations. How scary is that?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # GSM decrypted By Roy Osherove September 2, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 2, 2003; technical details may be outdated. Looks like our people in the israel Technion institute found a way to [decrypt the GSM network stream](http://www.wired.com/news/politics/0,1283,32992,00.html), allowing them to listen in on about 850 million people's conversations. How scary is that? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 3, 2003 ### [RLRT htpd tscdrb gntst](https://osherove.com/blog/2003/9/3/rlrt-htpd-tscdrb-gntst.html) - Sep 2, 2003 ### [Communication is key](https://osherove.com/blog/2003/9/2/communication-is-key.html) - Sep 1, 2003 ### [A better disposable email](https://osherove.com/blog/2003/9/1/a-better-disposable-email.html) - Sep 1, 2003 ### [Make the "Beziers" screen saver look good](https://osherove.com/blog/2003/9/1/make-the-quotbeziersquot-screen-saver-look-good.html) --- title: "Israel Visual Basic User Group this wednesday - on ADO.Net" url: "https://osherove.com/blog/2003/9/2/israel-visual-basic-user-group-this-wednesday-on-adonet.md" canonical: "https://osherove.com/blog/2003/9/2/israel-visual-basic-user-group-this-wednesday-on-adonet.html" published: "2003-09-02T09:57:00" updated: "2003-09-02T09:57:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "The September meeting of the Israel Visual Basic User Group http://www.renaissance.co.il/ivbug : “This month I hope to fulfill my promise to have a meeting dedicated to data access – let’s just hope the lights stay on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel Visual Basic User Group this wednesday - on ADO.Net By Roy Osherove September 2, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published September 2, 2003; technical details may be outdated. The September meeting of the Israel Visual Basic User Group [http://www.renaissance.co.il/ivbug](http://www.renaissance.co.il/ivbug "http://www.renaissance.co.il/ivbug"): _“This month I hope to fulfill my promise to have a meeting dedicated to data access – let’s just hope the lights stay on this time !  The first session will be a more basic session, meant as an introduction to those who are not really familiar with ADO.NET and as refresher for those who are familiar with it.  In the second session, I will demo some more advanced, real-world techniques that go beyond the basics that you normally hear or read about – including some new ones that I haven’t shown in any previous conference presentations.“_ \[Jackie Goldstein\] **September 3, 2003** 17:30 - 18:00   Assembly18:00 - 18:05   Introduction and miscellaneous18:05 - 19:30    **“Introduction and Review of ADO.NET”**                        Jackie Goldstein, Renaissance Computer Systems Ltd. 19:30 - 19:45    Break19:45 – 20:00   "Hatzilu !"                         Open session, with questions and answers/ideas from everyone20:00 - 21:00   **“Advanced Techniques in ADO.NET****”**                        Jackie Goldstein, Renaissance Computer Systems Ltd. **New Location:** Microsoft Israel 2 Hapnina St, Ra'anana (09) 7625-100 Floor 0 , Dekel Room It is the new building across from Amdocs. After the first traffic circle, there is an area for parking on the right. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 2, 2003 ### [Windows Forms Programming in C# Sample Chapter](https://osherove.com/blog/2003/9/2/windows-forms-programming-in-c-sample-chapter.html) - Sep 2, 2003 ### [The Final Release of NUnit V2.1 is now available](https://osherove.com/blog/2003/9/2/the-final-release-of-nunit-v21-is-now-available.html) - Sep 1, 2003 ### [Showing the "Browse For Folder" dialog](https://osherove.com/blog/2003/9/1/showing-the-quotbrowse-for-folderquot-dialog.html) - Sep 1, 2003 ### [Book: Windows Forms Programming in C#](https://osherove.com/blog/2003/9/1/book-windows-forms-programming-in-c.html) --- title: "A better disposable email" url: "https://osherove.com/blog/2003/9/1/a-better-disposable-email.md" canonical: "https://osherove.com/blog/2003/9/1/a-better-disposable-email.html" published: "2003-09-01T21:00:00" updated: "2003-09-01T21:00:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "“ I am Jack's single serve email address .” [via HDConsultants ] This disposable email is even better than mailinator , because it actually forwards email to your real address, but you get to say when the fake email…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A better disposable email By Roy Osherove September 1, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 1, 2003; technical details may be outdated. “_I am Jack's_ [_single serve email address_](http://jetable.org/)_.”_ \[via [HDConsultants](http://hdconsultants.us/posts/156.aspx)\] This disposable email is even better than [mailinator](http://www.mailinator.com/), because it actually forwards email to your **real** address, but you get to say when the fake email address destroys itself - anywhere from 4 to 48 hours from now. tre'-cool! (was that French?) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Sep 3, 2003 ### [Cool utility of the day: Code Snippet Compiler](https://osherove.com/blog/2003/9/3/cool-utility-of-the-day-code-snippet-compiler.html) - Sep 2, 2003 ### [The Final Release of NUnit V2.1 is now available](https://osherove.com/blog/2003/9/2/the-final-release-of-nunit-v21-is-now-available.html) - Aug 25, 2003 ### [NUnit v2.1 RC1 released](https://osherove.com/blog/2003/8/25/nunit-v21-rc1-released.html) - Aug 17, 2003 ### [CodeSmart.Net](https://osherove.com/blog/2003/8/17/codesmartnet.html) --- title: "Showing the \"Browse For Folder\" dialog" url: "https://osherove.com/blog/2003/9/1/showing-the-quotbrowse-for-folderquot-dialog.md" canonical: "https://osherove.com/blog/2003/9/1/showing-the-quotbrowse-for-folderquot-dialog.html" published: "2003-09-01T19:36:00" updated: "2003-09-01T19:36:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Another one from Derek Stone . Boy this guy seems to have all the answers for me today. This time it's a simple class that shows the “Browse for folder” dialog in VB.Net. It uses the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Showing the "Browse For Folder" dialog By Roy Osherove September 1, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 1, 2003; technical details may be outdated. Another one from [Derek Stone](http://www.elitevb.com/content/author.aspx?id=3). Boy this guy seems to have all the answers for me today. This time it's [a simple class that shows the “Browse for folder” dialog](http://www.elitevb.com/content/01,0077,01/01.aspx) in VB.Net. It uses the System.Windows.Forms.Design.FolderNameEditor.FolderBrowser class to do its magic, meaning it's clean and simple. Still, I'm not sure where I've heard this, but I think MS discourages the use of this class, because it's meant for internal designers use only? Can anyone who knows comment on this? **Update:** I was feeling like a total idiot last night. Here are all those people talking about how the **FolderBrowserDialog** class was added in v1.1, yet even though I have vs.Net 2003 installed, I could not for the life of me find it!.  Really. I tried all sorts of winforms projects but it just was not there. Then I came to work this morning and opened vs.net 2003 here, and voilà! it's right there in front of me. Anyone knows what's going on here? ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 2, 2003 ### [The Final Release of NUnit V2.1 is now available](https://osherove.com/blog/2003/9/2/the-final-release-of-nunit-v21-is-now-available.html) - Sep 2, 2003 ### [Israel Visual Basic User Group this wednesday - on ADO.Net](https://osherove.com/blog/2003/9/2/israel-visual-basic-user-group-this-wednesday-on-adonet.html) - Sep 1, 2003 ### [Book: Windows Forms Programming in C#](https://osherove.com/blog/2003/9/1/book-windows-forms-programming-in-c.html) - Aug 28, 2003 ### ["Could not open in Design view. Quote values differently..." solved!](https://osherove.com/blog/2003/8/28/quotcould-not-open-in-design-view-quote-values-differentlyqu.html) --- title: "Make the \"Beziers\" screen saver look good" url: "https://osherove.com/blog/2003/9/1/make-the-quotbeziersquot-screen-saver-look-good.md" canonical: "https://osherove.com/blog/2003/9/1/make-the-quotbeziersquot-screen-saver-look-good.html" published: "2003-09-01T15:03:00" updated: "2003-09-01T15:03:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Here's a simple way to create a nice looking screen saver from one of the screen savers your machine is already equipped with (Beziers). Open the “screen saver properties” dialog Select “ Beziers “ Click “ Settings “…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Make the "Beziers" screen saver look good By Roy Osherove September 1, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 1, 2003; technical details may be outdated. Here's a simple way to create a nice looking screen saver from one of the screen savers your machine is already equipped with (Beziers). - Open the “screen saver properties” dialog - Select “_Beziers_“ - Click “_Settings_“ - Change “_Beziers in each loop_“ setting to 10 - Change “_Repeat each loop_“ to 100 - Change “_speed_“ to slowest - If you have this setting, make sure to select “_random colors_“ - Press “_OK_“ and click “_preview_“ - Feel free to play with the amount of Beziers in each loop until you feel you like it. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 2, 2003 ### [GSM decrypted](https://osherove.com/blog/2003/9/2/gsm-decrypted.html) - Sep 1, 2003 ### [A better disposable email](https://osherove.com/blog/2003/9/1/a-better-disposable-email.html) - Sep 1, 2003 ### [A good introduction to IT blogging and blogs in general](https://osherove.com/blog/2003/9/1/a-good-introduction-to-it-blogging-and-blogs-in-general.html) - Sep 1, 2003 ### [Book: Windows Forms Programming in C#](https://osherove.com/blog/2003/9/1/book-windows-forms-programming-in-c.html) --- title: "A good introduction to IT blogging and blogs in general" url: "https://osherove.com/blog/2003/9/1/a-good-introduction-to-it-blogging-and-blogs-in-general.md" canonical: "https://osherove.com/blog/2003/9/1/a-good-introduction-to-it-blogging-and-blogs-in-general.html" published: "2003-09-01T07:00:00" updated: "2003-09-01T07:00:00" tags: ["Blogging", "Cool Articles", "Off Topic"] author: "Roy Osherove" description: "For a while now I've been looking for a way to introduce people(mainly other developers) to weblogging and RSS feeds, but could not find a good intro that “gets” it. Now I think I've come across just that: Blogs:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A good introduction to IT blogging and blogs in general By Roy Osherove September 1, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Cool Articles](https://osherove.com/blog/category/cool-articles), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 1, 2003; technical details may be outdated. For a while now I've been looking for a way to introduce people(mainly other developers) to weblogging and RSS feeds, but could not find a good intro that “gets” it. Now I think I've come across just that: [Blogs: Another Tool in the Security Pro's Toolkit (Part One)](http://www.securityfocus.com/columnists/173) [Blogs: Another Tool in the Security Pro's Toolkit (Part Two)](http://www.securityfocus.com/columnists/177) (Thanks to [Jim Meeker](http://dotnetjunkies.com/WebLog/jmeeker/posts/1335.aspx) for the link) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Sep 9, 2003 ### [.Net security blogs](https://osherove.com/blog/2003/9/9/net-security-blogs.html) - Sep 8, 2003 ### [Why people are not into RSS readers](https://osherove.com/blog/2003/9/8/why-people-are-not-into-rss-readers.html) - Aug 29, 2003 ### [I've been slacking off](https://osherove.com/blog/2003/8/29/ive-been-slacking-off.html) - Aug 29, 2003 ### [A .Net weblogger business card?](https://osherove.com/blog/2003/8/29/a-net-weblogger-business-card.html) --- title: "Book: Windows Forms Programming in C#" url: "https://osherove.com/blog/2003/9/1/book-windows-forms-programming-in-c.md" canonical: "https://osherove.com/blog/2003/9/1/book-windows-forms-programming-in-c.html" published: "2003-09-01T06:52:00" updated: "2003-09-01T06:52:00" tags: [".Net Quotations", "Off Topic"] author: "Roy Osherove" description: "Chris Sells : “ My WinForms book for C# programmers should be on the shelves today. I've set up the site where you can download the source and report problems. The VB.NET version should be out at the PDC. Enjoy. ”…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Book: Windows Forms Programming in C\# By Roy Osherove September 1, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 1, 2003; technical details may be outdated. [Chris Sells](http://www.sellsbrothers.com/): “_My [WinForms book for C# programmers](https://www.amazon.com/exec/obidos/ASIN/0321116208/iserializable-20) should be on the shelves today. I've [set up the site](http://www.sellsbrothers.com/writing/wfbook/) where you can download the source and report problems. The VB.NET version should be out at the PDC. Enjoy._” \[links added by me\] Cool. This is my next book. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 2, 2003 ### [Israel Visual Basic User Group this wednesday - on ADO.Net](https://osherove.com/blog/2003/9/2/israel-visual-basic-user-group-this-wednesday-on-adonet.html) - Sep 1, 2003 ### [Showing the "Browse For Folder" dialog](https://osherove.com/blog/2003/9/1/showing-the-quotbrowse-for-folderquot-dialog.html) - Aug 28, 2003 ### ["Could not open in Design view. Quote values differently..." solved!](https://osherove.com/blog/2003/8/28/quotcould-not-open-in-design-view-quote-values-differentlyqu.html) - Aug 26, 2003 ### [ASP.Net dialog hell - a little easier..?](https://osherove.com/blog/2003/8/26/aspnet-dialog-hell-a-little-easier.html) --- title: "Hosting the CLR - the native approach" url: "https://osherove.com/blog/2003/9/1/hosting-the-clr-the-native-approach.md" canonical: "https://osherove.com/blog/2003/9/1/hosting-the-clr-the-native-approach.html" published: "2003-09-01T05:39:00" updated: "2003-09-01T05:39:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "A while ago I posted about a user group session which involved explanations about CLR hosting, among others. Hosting can be done either through COM interfaces or through native C or C++. Although the lecturer talked…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hosting the CLR - the native approach By Roy Osherove September 1, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published September 1, 2003; technical details may be outdated. A while ago I [posted about a user group session](http://weblogs.asp.net/rosherove/posts/24800.aspx) which involved explanations about CLR hosting, among others. Hosting can be done either through COM interfaces or through native C or C++. Although the lecturer talked about each approach, one of the people who came with me from our company, Michael, was looking for a good example of just how to do native CLR loading and hosting, and came up with this: [Hosting the CLR](http://www.elitevb.com/content/01,0095,01/01.aspx).  Surprisingly, the article is hosted on [EliteVB](http://www.elitevb.com/) which is all about VB :). ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 4, 2003 ### [Books to buy](https://osherove.com/blog/2003/9/4/books-to-buy.html) - Sep 3, 2003 ### [Israel Visual Basic User Group today - on ADO.Net](https://osherove.com/blog/2003/9/3/israel-visual-basic-user-group-today-on-adonet.html) - Sep 1, 2003 ### [The \[Conditional\] Attribute](https://osherove.com/blog/2003/9/1/the-conditional-attribute.html) - Sep 1, 2003 ### [Asynchronous ASP.Net actions suck?](https://osherove.com/blog/2003/9/1/asynchronous-aspnet-actions-suck.html) --- title: "The [Conditional] Attribute" url: "https://osherove.com/blog/2003/9/1/the-conditional-attribute.md" canonical: "https://osherove.com/blog/2003/9/1/the-conditional-attribute.html" published: "2003-09-01T03:35:00" updated: "2003-09-01T03:35:00" tags: [".Net Original"] author: "Roy Osherove" description: "If you want to write methods that are only available with conditional compiler arguments you can use an attribute just for that purpose: < Conditional(\"DEBUG\")> _ Private Sub MyMethod() End Sub [Conditional(\"DEBUG\")]…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The \[Conditional\] Attribute By Roy Osherove September 1, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 1, 2003; technical details may be outdated. If you want to write methods that are only available with conditional compiler arguments you can use an attribute just for that purpose: < Conditional("DEBUG")> \_ Private Sub MyMethod() End Sub \[Conditional("DEBUG")\] Private void MyMethod() {} ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 3, 2003 ### [Israel Visual Basic User Group today - on ADO.Net](https://osherove.com/blog/2003/9/3/israel-visual-basic-user-group-today-on-adonet.html) - Sep 1, 2003 ### [Hosting the CLR - the native approach](https://osherove.com/blog/2003/9/1/hosting-the-clr-the-native-approach.html) - Sep 1, 2003 ### [Asynchronous ASP.Net actions suck?](https://osherove.com/blog/2003/9/1/asynchronous-aspnet-actions-suck.html) - Aug 25, 2003 ### [Loading Winform UI controls from a different AppDomain is problematic](https://osherove.com/blog/2003/8/25/loading-winform-ui-controls-from-a-different-appdomain-is-pr.html) --- title: "Asynchronous ASP.Net actions suck?" url: "https://osherove.com/blog/2003/9/1/asynchronous-aspnet-actions-suck.md" canonical: "https://osherove.com/blog/2003/9/1/asynchronous-aspnet-actions-suck.html" published: "2003-09-01T02:55:00" updated: "2003-09-01T02:55:00" tags: [".Net Original"] author: "Roy Osherove" description: "Every once in a while you get to do dev work in an area you know nothing about. That’s me and ASP.Net. Well, I do know some things but it’s all theoretical. I never really got to do asp.net development in a “real”…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Asynchronous ASP.Net actions suck? By Roy Osherove September 1, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published September 1, 2003; technical details may be outdated. Every once in a while you get to do dev work in an area you know nothing about. That’s me and ASP.Net. Well, I **do** know some things but it’s all theoretical. I never really got to do asp.net development in a “real” situation. Yesterday, however, I got to do just that. I needed to integrate a library I wrote in .Net to be used in asp.net. Mind you, this wasn’t just any “get my data” kinda lib. It does some work asynchronously, throws events when it finds some stuff and takes a long time. Having some from a strong background on win forms and VB, with no web experience what so ever, I’m used to easily enable my apps with progress bars, asynchronous status updates via events and so on, all in a rich UI. Moving over to “stateless” mode pretty much throws much of what I know and love to the garbage can, leaving me to find out how the hell am I supposed to this with an object that is destroyed in the next call. I still haven’t figured out a way to do it. The closest thing I found was actually quite a complicated piece of work. It looks like the infrastructure required to do this entails public or protected properties in the code behind class, HIDDEN fields that reflect those properties in the web form, and a JavaScript function that occurs in the “OnLoad” event of the page (in the BODY tag) that checks if it should call “submit” on the form itself. That’s not real asynchronous. It’s plain old procedural programming, with the scripting function acting as the good old message pump. (how difficult would it be in regular ASP??) If you have any web experience you might be laughing,   but I’ll still ask : **Why the hell is it so much more difficult?** The answer is, of course, that the browser was never meant to be a real application platform. Therefore, it will never provide the power we expect in today’s rich applications. Dev wise, it means we’ll always have to “work around” problems instead of focusing on the business value of our web applications. Example – instead of wondering “what’s the best way to show the user the progress”, I’m actually wondering if **there is** a good way that’s actually feasible without it taking a week to implement. Smart clients (auto deployed) provide an answer for this problem. They still do not provide an answer for not having the .net framework installed on a user’s machine (which people are **still(!)** afraid of) which is the main reason I’m working on an ASP.Net project right now, instead of an auto-deployed smart winform GUI. Hopefully, this will change soon. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 1, 2003 ### [Hosting the CLR - the native approach](https://osherove.com/blog/2003/9/1/hosting-the-clr-the-native-approach.html) - Sep 1, 2003 ### [The \[Conditional\] Attribute](https://osherove.com/blog/2003/9/1/the-conditional-attribute.html) - Aug 25, 2003 ### [Loading Winform UI controls from a different AppDomain is problematic](https://osherove.com/blog/2003/8/25/loading-winform-ui-controls-from-a-different-appdomain-is-pr.html) - Aug 25, 2003 ### [The ultimate connection string reference](https://osherove.com/blog/2003/8/25/the-ultimate-connection-string-reference.html) --- title: "Writing a product review" url: "https://osherove.com/blog/2003/9/1/writing-a-product-review.md" canonical: "https://osherove.com/blog/2003/9/1/writing-a-product-review.html" published: "2003-09-01T02:30:00" updated: "2003-09-01T02:30:00" tags: ["Cool Articles", "Off Topic"] author: "Roy Osherove" description: "Mike has more writer's advice. This time about writing a product review . “ Today I want to talk a bit about writing product reviews. Having spent quite a while as the Product Editor for MCP Magazine , this is an area…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Writing a product review By Roy Osherove September 1, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published September 1, 2003; technical details may be outdated. [Mike](http://www.larkware.com/) has more writer's advice. This time about [writing a product review](http://www.larkware.com/Articles/AdviceforWritersPart5.html). “_Today I want to talk a bit about writing product reviews. Having spent quite a while as the Product Editor for_ [_MCP Magazine_](http://www.mcpmag.com/)_, this is an area that I should know something about..._” ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Sep 1, 2003 ### [A good introduction to IT blogging and blogs in general](https://osherove.com/blog/2003/9/1/a-good-introduction-to-it-blogging-and-blogs-in-general.html) - Sep 1, 2003 ### [Hosting the CLR - the native approach](https://osherove.com/blog/2003/9/1/hosting-the-clr-the-native-approach.html) - Aug 29, 2003 ### [MSDE - The missing piece](https://osherove.com/blog/2003/8/29/msde-the-missing-piece.html) - Aug 26, 2003 ### [ASP.Net dialog hell - a little easier..?](https://osherove.com/blog/2003/8/26/aspnet-dialog-hell-a-little-easier.html) --- title: "MSDE - The missing piece" url: "https://osherove.com/blog/2003/8/29/msde-the-missing-piece.md" canonical: "https://osherove.com/blog/2003/8/29/msde-the-missing-piece.html" published: "2003-08-29T21:14:00" updated: "2003-08-29T21:14:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "Thanks to Mike Gunderloy for pointing out this great article on MSDE. It should have been entitled : Everything you wanted to ask about MSDE" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSDE - The missing piece By Roy Osherove August 29, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published August 29, 2003; technical details may be outdated. Thanks to [Mike Gunderloy](http://www.larkware.com/) for pointing out this great article on MSDE. It should have been entitled : [Everything you wanted to ask about MSDE](http://www.betav.com/Files/Content/Whitepapers/msde_files/msde.htm) ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Sep 1, 2003 ### [Hosting the CLR - the native approach](https://osherove.com/blog/2003/9/1/hosting-the-clr-the-native-approach.html) - Sep 1, 2003 ### [Writing a product review](https://osherove.com/blog/2003/9/1/writing-a-product-review.html) - Aug 26, 2003 ### [ASP.Net dialog hell - a little easier..?](https://osherove.com/blog/2003/8/26/aspnet-dialog-hell-a-little-easier.html) - Aug 26, 2003 ### [Advice for article writers - part II](https://osherove.com/blog/2003/8/26/advice-for-article-writers-part-ii.html) --- title: "I've been slacking off" url: "https://osherove.com/blog/2003/8/29/ive-been-slacking-off.md" canonical: "https://osherove.com/blog/2003/8/29/ive-been-slacking-off.html" published: "2003-08-29T21:07:00" updated: "2003-08-29T21:07:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Yeah. I do need to get more serious about wrting to the blog. Lately I feel I've been mostly “hanging on” rather than charging forward with the tech vengeance I had. I've been so tied up with the new job, that I can't…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I've been slacking off By Roy Osherove August 29, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 29, 2003; technical details may be outdated. Yeah. I do need to get more serious about wrting to the blog. Lately I feel I've been mostly “hanging on” rather than charging forward with the tech vengeance I had. I've been so tied up with the new job, that I can't find the time to both write sincerely and keep my life in order. Hopefully the coming weeks will clear up a bit. I am working on a review of [CodeSmart.Net](http://www.axtools.com/) and an article on WMI & DirectoryServices in .Net, both should be out in the coming weeks. I'll try to lurk less and do more. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Sep 8, 2003 ### [Why people are not into RSS readers](https://osherove.com/blog/2003/9/8/why-people-are-not-into-rss-readers.html) - Sep 1, 2003 ### [A good introduction to IT blogging and blogs in general](https://osherove.com/blog/2003/9/1/a-good-introduction-to-it-blogging-and-blogs-in-general.html) - Aug 29, 2003 ### [A .Net weblogger business card?](https://osherove.com/blog/2003/8/29/a-net-weblogger-business-card.html) - Aug 28, 2003 ### [Main feed for blogs.gotdotnet.com, please!](https://osherove.com/blog/2003/8/28/main-feed-for-blogsgotdotnetcom-please.html) --- title: "A 'softie at a linux show" url: "https://osherove.com/blog/2003/8/29/a-softie-at-a-linux-show.md" canonical: "https://osherove.com/blog/2003/8/29/a-softie-at-a-linux-show.html" published: "2003-08-29T20:58:00" updated: "2003-08-29T20:58:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Josh Ledgard from MS talks about the impressions of a 'softie in a linux show . Some very interesting comments, and at least one surprising anacdote.. Some of the more intersting parts:: “Listening (and Responding) to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A 'softie at a linux show By Roy Osherove August 29, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 29, 2003; technical details may be outdated. [Josh Ledgard](http://blogs.gotdotnet.com/jledgard/) from MS talks about [the impressions of a 'softie in a linux show](http://blogs.gotdotnet.com/jledgard/permalink.aspx/0da73a83-d04d-4bb1-bafb-d487b3e5c0f6). Some very interesting comments, and at least one surprising anacdote.. Some of the more intersting parts:: _**“Listening (and Responding) to Customers**_ _Everyone beat MS up on this one.  Simon Phipps, the Chief Technology Evangelist at Sun, made the point best when he said " I used to work as a tester at Microsoft on Word 1.0.  I would log bugs that I'm not even sure the developers ever looked at. I never saw any fixed or heard about the bugs again. The first time I logged a bug against_ [_OpenOffice.org_](http://www.openoffice.org/ "http://www.openoffice.org/") _one of the developers wrote me back, told me he had fixed it, and I would see it in a released version in 3 months".  He challenged Microsoft to do the same thing and the audience cheered. It reminded me that Microsoft cannot continue to be a black hole in the eyes of the customer._ “ “_**Worst Ploy to take advantage of:** Real networks threw an after hours party with free drinks to convince people to [build their next generation software](https://www.helixcommunity.org/ "https://www.helixcommunity.org/") for them.  “Sure, I’ll write free code for you in return for peanuts and beer”.  (With the unemployment in the valley they might have had a few takers who considered it a good offer.)_ **_Line most likely heard after people read my badge_**_: Oh, well at least you don’t work for SCO._ “ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Sep 1, 2003 ### [Writing a product review](https://osherove.com/blog/2003/9/1/writing-a-product-review.html) - Aug 29, 2003 ### [I've been slacking off](https://osherove.com/blog/2003/8/29/ive-been-slacking-off.html) - Aug 29, 2003 ### [A .Net weblogger business card?](https://osherove.com/blog/2003/8/29/a-net-weblogger-business-card.html) - Aug 28, 2003 ### [Main feed for blogs.gotdotnet.com, please!](https://osherove.com/blog/2003/8/28/main-feed-for-blogsgotdotnetcom-please.html) --- title: "A .Net weblogger business card?" url: "https://osherove.com/blog/2003/8/29/a-net-weblogger-business-card.md" canonical: "https://osherove.com/blog/2003/8/29/a-net-weblogger-business-card.html" published: "2003-08-29T11:30:00" updated: "2003-08-29T11:30:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Would it be too “out there” if I were to create business cards saying : Roy Osherove Catch me at ISerializable.com this way I can hand it over to people I meet in user groups and stuff. I think it makes an impression,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A .Net weblogger business card? By Roy Osherove August 29, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 29, 2003; technical details may be outdated. Would it be too “out there” if I were to create business cards saying : **Roy Osherove** _Catch me at_ **ISerializable.com** this way I can hand it over to people I meet in user groups and stuff. I think it makes an impression, and when I mention people that I have a blog about .Net they always want the address. This makes it more official and easier to remember. Taking it further - All the .Net webloggers should have a universal business card with the same logo - stating their blog address and IM address. How's that for a community? :) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Sep 1, 2003 ### [A good introduction to IT blogging and blogs in general](https://osherove.com/blog/2003/9/1/a-good-introduction-to-it-blogging-and-blogs-in-general.html) - Aug 29, 2003 ### [I've been slacking off](https://osherove.com/blog/2003/8/29/ive-been-slacking-off.html) - Aug 28, 2003 ### [Main feed for blogs.gotdotnet.com, please!](https://osherove.com/blog/2003/8/28/main-feed-for-blogsgotdotnetcom-please.html) - Aug 28, 2003 ### [Ed has left the building](https://osherove.com/blog/2003/8/28/ed-has-left-the-building.html) --- title: "Main feed for blogs.gotdotnet.com, please!" url: "https://osherove.com/blog/2003/8/28/main-feed-for-blogsgotdotnetcom-please.md" canonical: "https://osherove.com/blog/2003/8/28/main-feed-for-blogsgotdotnetcom-please.html" published: "2003-08-28T20:26:00" updated: "2003-08-28T20:26:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Steve strikes a chord when he says “ Main feed for blogs.gotdotnet.com, please! “." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Main feed for blogs.gotdotnet.com, please! By Roy Osherove August 28, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 28, 2003; technical details may be outdated. [Steve](http://dotnetjunkies.com/weblog/seichert/) strikes a chord when he says “[Main feed for blogs.gotdotnet.com, please!](http://dotnetjunkies.com/weblog/seichert/posts/1292.aspx) “. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Aug 29, 2003 ### [I've been slacking off](https://osherove.com/blog/2003/8/29/ive-been-slacking-off.html) - Aug 29, 2003 ### [A .Net weblogger business card?](https://osherove.com/blog/2003/8/29/a-net-weblogger-business-card.html) - Aug 28, 2003 ### [Ed has left the building](https://osherove.com/blog/2003/8/28/ed-has-left-the-building.html) - Aug 26, 2003 ### [MSFT.Opml](https://osherove.com/blog/2003/8/26/msftopml.html) --- title: "Ed has left the building" url: "https://osherove.com/blog/2003/8/28/ed-has-left-the-building.md" canonical: "https://osherove.com/blog/2003/8/28/ed-has-left-the-building.html" published: "2003-08-28T05:58:00" updated: "2003-08-28T05:58:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Ed Kaim: “ I've decided to take some time off from blogging ”. This sucks. Ed has been one of my favorites for a long time, with great stories and good inside scoops on what it like “out there”. Too bad." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ed has left the building By Roy Osherove August 28, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 28, 2003; technical details may be outdated. Ed Kaim: “[I've decided to take some time off from blogging](http://blogs.gotdotnet.com/EdKaim/permalink.aspx/0a4ca0da-a026-4204-b03f-d6e7061b29db)”. This sucks. Ed has been one of my favorites for a long time, with great stories and good inside scoops on what it like “out there”. Too bad. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Aug 29, 2003 ### [A .Net weblogger business card?](https://osherove.com/blog/2003/8/29/a-net-weblogger-business-card.html) - Aug 28, 2003 ### [Main feed for blogs.gotdotnet.com, please!](https://osherove.com/blog/2003/8/28/main-feed-for-blogsgotdotnetcom-please.html) - Aug 26, 2003 ### [MSFT.Opml](https://osherove.com/blog/2003/8/26/msftopml.html) - Aug 25, 2003 ### [A meeting with Udi, and a talk about performance Do's and Don'ts](https://osherove.com/blog/2003/8/25/a-meeting-with-udi-and-a-talk-about-performance-dos-and-dont.html) --- title: "\"Could not open in Design view. Quote values differently...\" solved!" url: "https://osherove.com/blog/2003/8/28/quotcould-not-open-in-design-view-quote-values-differentlyqu.md" canonical: "https://osherove.com/blog/2003/8/28/quotcould-not-open-in-design-view-quote-values-differentlyqu.html" published: "2003-08-28T05:20:00" updated: "2003-08-28T05:20:00" tags: [".Net Quotations", "Tips & Tricks"] author: "Roy Osherove" description: "Ever get this message when working in the Vs.Net webform designer? “Could not open in Design view. Quote values differently inside a '<%...” etc This problem is easily solved by replacing nesting double quotes with…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # "Could not open in Design view. Quote values differently..." solved! By Roy Osherove August 28, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published August 28, 2003; technical details may be outdated. Ever get this message when working in the Vs.Net webform designer? _“Could not open in Design view. Quote values differently inside  a '<%...” etc_ This problem is easily solved by replacing nesting double quotes with single quotes. That means if you have this: _**<img src="../<%=Application("SERVICE\_COMPANY\_LOGO")%>">**_ just change it to this: _**<img src='../<%=Application("SERVICE\_COMPANY\_LOGO")%>'> **_ that did the job for me. And thanks [Matthew](http://weblogs.asp.net/mreynolds). I got this through [DotNet247](http://www.dotnet247.com/247reference/msgs/13/67282.aspx) :). ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 1, 2003 ### [Showing the "Browse For Folder" dialog](https://osherove.com/blog/2003/9/1/showing-the-quotbrowse-for-folderquot-dialog.html) - Sep 1, 2003 ### [Book: Windows Forms Programming in C#](https://osherove.com/blog/2003/9/1/book-windows-forms-programming-in-c.html) - Aug 26, 2003 ### [ASP.Net dialog hell - a little easier..?](https://osherove.com/blog/2003/8/26/aspnet-dialog-hell-a-little-easier.html) - Aug 25, 2003 ### [Developing Software in Visual Studio .NET with Non-Administrative Privileges](https://osherove.com/blog/2003/8/25/developing-software-in-visual-studio-net-with-non-administra.html) --- title: "No smiling! We're Canadian" url: "https://osherove.com/blog/2003/8/27/no-smiling-were-canadian.md" canonical: "https://osherove.com/blog/2003/8/27/no-smiling-were-canadian.html" published: "2003-08-27T13:18:00" updated: "2003-08-27T13:18:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I just had to post this . Sorry :) “ The new measure took effect on Aug. 15, but there is a smile amnesty for the next two months to accommodate those who have already filed happy-looking photos or have not heard of the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # No smiling! We're Canadian By Roy Osherove August 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 27, 2003; technical details may be outdated. I just **had** to post [this](http://www.globeandmail.com/servlet/story/RTGAM.20030827.wsmile0827/BNStory/National/). Sorry :) “_The new measure took effect on Aug. 15, but there is a smile amnesty for the next two months to accommodate those who have already filed happy-looking photos or have not heard of the ban on grins._ _"We have already received photos with small smiles that we are ready to accept," Ms. Meunier said._” ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 28, 2003 ### [Main feed for blogs.gotdotnet.com, please!](https://osherove.com/blog/2003/8/28/main-feed-for-blogsgotdotnetcom-please.html) - Aug 28, 2003 ### [Ed has left the building](https://osherove.com/blog/2003/8/28/ed-has-left-the-building.html) - Aug 26, 2003 ### [Advice for article writers - part II](https://osherove.com/blog/2003/8/26/advice-for-article-writers-part-ii.html) - Aug 26, 2003 ### [MSFT.Opml](https://osherove.com/blog/2003/8/26/msftopml.html) --- title: "ASP.Net dialog hell - a little easier..?" url: "https://osherove.com/blog/2003/8/26/aspnet-dialog-hell-a-little-easier.md" canonical: "https://osherove.com/blog/2003/8/26/aspnet-dialog-hell-a-little-easier.html" published: "2003-08-26T19:41:00" updated: "2003-08-26T19:41:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Jesse helps ASP.Net developers save themselves from dialog hell by posting some base classes that can be used to more easily create web-based dialogs. That's worth like a medal or something." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ASP.Net dialog hell - a little easier..? By Roy Osherove August 26, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published August 26, 2003; technical details may be outdated. [Jesse](http://weblogs.asp.net/jezell) helps ASP.Net developers save themselves from dialog hell by posting [some base classes](http://weblogs.asp.net/jezell/posts/25450.aspx) that can be used to more easily create web-based dialogs. That's worth like a medal or something. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Sep 1, 2003 ### [Book: Windows Forms Programming in C#](https://osherove.com/blog/2003/9/1/book-windows-forms-programming-in-c.html) - Aug 28, 2003 ### ["Could not open in Design view. Quote values differently..." solved!](https://osherove.com/blog/2003/8/28/quotcould-not-open-in-design-view-quote-values-differentlyqu.html) - Aug 25, 2003 ### [Developing Software in Visual Studio .NET with Non-Administrative Privileges](https://osherove.com/blog/2003/8/25/developing-software-in-visual-studio-net-with-non-administra.html) - Aug 25, 2003 ### [NUnit v2.1 RC1 released](https://osherove.com/blog/2003/8/25/nunit-v21-rc1-released.html) --- title: "Advice for article writers - part II" url: "https://osherove.com/blog/2003/8/26/advice-for-article-writers-part-ii.md" canonical: "https://osherove.com/blog/2003/8/26/advice-for-article-writers-part-ii.html" published: "2003-08-26T19:20:00" updated: "2003-08-26T19:20:00" tags: ["Cool Articles", "Off Topic"] author: "Roy Osherove" description: "Mike Gunderloy has put together part II of his advice for newbie article writers . A must read if you have ever wanted to publish an article and didn't know where to start." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Advice for article writers - part II By Roy Osherove August 26, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 26, 2003; technical details may be outdated. [Mike Gunderloy](http://www.larkware.com/) has put together [part II of his advice for newbie article writers](http://www.larkware.com/Articles/AdviceforWritersPart2.html). A must read if you have ever wanted to publish an article and didn't know where to start. ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Aug 29, 2003 ### [MSDE - The missing piece](https://osherove.com/blog/2003/8/29/msde-the-missing-piece.html) - Aug 26, 2003 ### [ASP.Net dialog hell - a little easier..?](https://osherove.com/blog/2003/8/26/aspnet-dialog-hell-a-little-easier.html) - Aug 25, 2003 ### [Developing Software in Visual Studio .NET with Non-Administrative Privileges](https://osherove.com/blog/2003/8/25/developing-software-in-visual-studio-net-with-non-administra.html) - Aug 20, 2003 ### [Make your app support plugins](https://osherove.com/blog/2003/8/20/make-your-app-support-plugins.html) --- title: "MSFT.Opml" url: "https://osherove.com/blog/2003/8/26/msftopml.md" canonical: "https://osherove.com/blog/2003/8/26/msftopml.html" published: "2003-08-26T09:11:00" updated: "2003-08-26T09:11:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "“It's been an 8h task, but it's done, a nice, clean OPML file of all MSFT bloggers for your RSS aggregator to read. I've only excluded those, who don't have RSS feeds, which is a pitty, but there is sure somebody who…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSFT.Opml By Roy Osherove August 26, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 26, 2003; technical details may be outdated. _“It's been an 8h task, but it's done, a nice, clean OPML file of all MSFT bloggers for your RSS aggregator to read. I've only excluded those, who don't have RSS feeds, which is a pitty, but there is sure somebody who can enhance the file, maintain it and redistribute it. Take the pick of your personal msft celeb and subscribe to thier feeds._ [_msft.opml (13.62 KB)_](http://www.shamiro.ch/content/binary/msft.opml) _“_ \[[Benjamin J. J. Voigt](http://www.shamiro.ch/PermaLink.aspx?guid=471570af-695b-4c44-b8c4-fb2836542596)\] Needless to say, this adds a whole new listing to my FeedDemon. Already found some great content! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Aug 28, 2003 ### [Main feed for blogs.gotdotnet.com, please!](https://osherove.com/blog/2003/8/28/main-feed-for-blogsgotdotnetcom-please.html) - Aug 28, 2003 ### [Ed has left the building](https://osherove.com/blog/2003/8/28/ed-has-left-the-building.html) - Aug 25, 2003 ### [A meeting with Udi, and a talk about performance Do's and Don'ts](https://osherove.com/blog/2003/8/25/a-meeting-with-udi-and-a-talk-about-performance-dos-and-dont.html) - Aug 23, 2003 ### [MSN Messenger upgrade blocks Trillian](https://osherove.com/blog/2003/8/23/msn-messenger-upgrade-blocks-trillian.html) --- title: "Loading Winform UI controls from a different AppDomain is problematic" url: "https://osherove.com/blog/2003/8/25/loading-winform-ui-controls-from-a-different-appdomain-is-pr.md" canonical: "https://osherove.com/blog/2003/8/25/loading-winform-ui-controls-from-a-different-appdomain-is-pr.html" published: "2003-08-25T19:18:00" updated: "2003-08-25T19:18:00" tags: [".Net Original"] author: "Roy Osherove" description: "I recently got a question regarding a problem loading dynamic UI controls at runtime. Part of the solution that person tried to do was to try and load the controls in a separate AppDomain , so that they can later unload…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Loading Winform UI controls from a different AppDomain is problematic By Roy Osherove August 25, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published August 25, 2003; technical details may be outdated. I recently got a question regarding a problem loading dynamic UI controls at runtime. Part of the solution that person tried to do was to try and load the controls in a separate _[AppDomain](http://www.dotnet247.com/247reference/System/AppDomain.aspx)_, so that they can later unload those AppDomains and release the memory that the controls occupied. However - this did not work: \>We can create the usercontrols in a different appdomain but when we go \>to add the usercontrol to the launcher's container (_Me.Controls.Add_) in \>the default appdomain we get: \> \>"_Remoting cannot find field parent on type System.Windows.Forms.Control_" \> \>It does find events, the Tag property, and the Location property. \> \>It appears that the transparentproxy isn't exposing all of the \>usercontrol properties, etc.  We are not using an interface because we \>don't know what properties, methods, etc. the control container is \>expecting at run-time.  Also, we are loading UserControls so we thought \>they would expose any interfaces the container may be looking for \>(although apparently not through remoting).  All of the controls inherit \>MarshalByReference and we find no difference if we decorate them with \>. Here's the code to reproduce this:     Public Sub New()         MyBase.New()         'This call is required by the Windows Form Designer.         InitializeComponent()         'Add any initialization after the InitializeComponent() call         Dim \_appDomain As AppDomain         Dim \_handle As System.Runtime.Remoting.ObjectHandle         Dim \_control As System.Windows.Forms.TextBox         \_appDomain = AppDomain.CreateDomain("TextBox")         \_control = \_appDomain.CreateInstanceFromAndUnwrap("C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.0.3705\\System.Windows.Forms.dll", "System.Windows.Forms.TextBox")         Me.Controls.Add(\_control)     End Sub **So why does this happen?** The problem stems from the fact that you are loading the control from a different AppDomain, and thus are essentially using remoting to talk to the control through the context boundery. Unfortunately, Remoting cannot access private members through context bounderies, which is exactly what '_parent_' is in this case(inside the _Control_ class). ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 1, 2003 ### [The \[Conditional\] Attribute](https://osherove.com/blog/2003/9/1/the-conditional-attribute.html) - Sep 1, 2003 ### [Asynchronous ASP.Net actions suck?](https://osherove.com/blog/2003/9/1/asynchronous-aspnet-actions-suck.html) - Aug 25, 2003 ### [The ultimate connection string reference](https://osherove.com/blog/2003/8/25/the-ultimate-connection-string-reference.html) - Aug 25, 2003 ### [Combobox binding trouble - with a solution](https://osherove.com/blog/2003/8/25/combobox-binding-trouble-with-a-solution.html) --- title: "A meeting with Udi, and a talk about performance Do's and Don'ts" url: "https://osherove.com/blog/2003/8/25/a-meeting-with-udi-and-a-talk-about-performance-dos-and-dont.md" canonical: "https://osherove.com/blog/2003/8/25/a-meeting-with-udi-and-a-talk-about-performance-dos-and-dont.html" published: "2003-08-25T18:28:00" updated: "2003-08-25T18:28:00" tags: ["Blogging"] author: "Roy Osherove" description: "The last time I went to a user group meeting I got to meet a very interesting fellow named Udi Dahan . I've seen him a couple of times before in previous meetings, but I didn't know him. Apparently he's been reading my…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A meeting with Udi, and a talk about performance Do's and Don'ts By Roy Osherove August 25, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published August 25, 2003; technical details may be outdated. The [last time I went to a user group meeting](http://weblogs.asp.net/rosherove/posts/24800.aspx) I got to meet a very interesting fellow named **Udi Dahan**.  I've seen him a couple of times before in previous meetings, but I didn't know him. Apparently he's been reading my blog(and all the other blogs in this great community) for a while, and has a lot to say and contribute in many .Net areas. You can spot him easily in the user group meeting - he'll be the tall guy wearing military uniform and asking all the right questions. Truly, he seems to be one of the most intelligent persons I've met. We got to talk by email a bit, but in the last meeting he came up to me and introduced himself. After the meeting ended we got to talking a bit about what he does(hush hush) , how he does it and all the other stuff a developer asks the first time he meets another developer. In one of the past emails to me, Udi suggested that I take a more active approach and start lecturing in the user group circuit. I always thought about doing that, but always “chickened out” at the last moment. When we met he told me that after he emailed me about it, he asked himself  “_why don't I do as I preach?_”, and got himself his own lecturing gig!. He'll be lecturing in the upcoming [.Net web developers users group](http://teched.magen.com/Events/event.aspx?EventID=36) next month about _performance Do's and Don'ts in .Net_. That is so cool.  I really admire someone who just goes out and does stuff like that. I should do the same. I have no idea what subject I could talk about though. Anyway, getting back to the meeting with Udi, we talked about what performance issues he'll bring up. Turns out the talk will be about what you **shouldn't do** just as much as it will be about what you **should** do. Sometimes people can go in wild and crazy directions just to get performance gains that are insignificant compared to the amount of time they lost researching it (on project budget!). What Udi wants to say is that sometimes you should know when to stop and look back and get the bigger picture. Or maybe have a different way to achieve almost the same results. I just **know** this will be a talk that won't go down easy with the crowd. Every developer thinks they know best when it comes to their code and technique. It's hard for people to accept new ways of doing old stuff. Whatever happens, it's gonna be an “energetic” and probably pretty interactive discussion. Of course - it's gonna be very very interesting. I should come in with an open mind. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Aug 28, 2003 ### [Ed has left the building](https://osherove.com/blog/2003/8/28/ed-has-left-the-building.html) - Aug 26, 2003 ### [MSFT.Opml](https://osherove.com/blog/2003/8/26/msftopml.html) - Aug 23, 2003 ### [MSN Messenger upgrade blocks Trillian](https://osherove.com/blog/2003/8/23/msn-messenger-upgrade-blocks-trillian.html) - Aug 23, 2003 ### [Was that a shout out?](https://osherove.com/blog/2003/8/23/was-that-a-shout-out.html) --- title: "Developing Software in Visual Studio .NET with Non-Administrative Privileges" url: "https://osherove.com/blog/2003/8/25/developing-software-in-visual-studio-net-with-non-administra.md" canonical: "https://osherove.com/blog/2003/8/25/developing-software-in-visual-studio-net-with-non-administra.html" published: "2003-08-25T17:59:00" updated: "2003-08-25T17:59:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "There was a big discussion not long ago in the .Net community whether it is feasible to actually do Dev work as a non-admin. While the benefits are very big for the end user, a lot of people insisted that it is just too…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Developing Software in Visual Studio .NET with Non-Administrative Privileges By Roy Osherove August 25, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published August 25, 2003; technical details may be outdated. There was a big discussion not long ago in the .Net community whether it is feasible to actually do Dev work as a non-admin. While the benefits are very big for the end user, a lot of people insisted that it is just too darn hard to do all the grunt work without the right permissions, and that getting those permissions every time(i.e logging on and off, RanAs commands) were terribly restrictive and hard to accomplish without a heavy dose of discipline and masochism. Then I came across this article, written by Lars Bergstrom of the Visual Studio Core Team: [Developing Software in Visual Studio .NET with Non-Administrative Privileges](http://msdnaa.net/Resources/display.aspx?ResID=2203) Apparently, the folks at Redmond are dealing with those issues as well. So much so that someone decided to write an article on how one would go about their daily tasks f they were running as a non-admin. Very informative. There's a whole table of references of what's needed to launch and why, where and how to do it.  What's good is that the article does not spare you from the gory details of just what's \*not\* possible easily, but what \*can\* be done about it. Good one. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 28, 2003 ### ["Could not open in Design view. Quote values differently..." solved!](https://osherove.com/blog/2003/8/28/quotcould-not-open-in-design-view-quote-values-differentlyqu.html) - Aug 26, 2003 ### [ASP.Net dialog hell - a little easier..?](https://osherove.com/blog/2003/8/26/aspnet-dialog-hell-a-little-easier.html) - Aug 25, 2003 ### [NUnit v2.1 RC1 released](https://osherove.com/blog/2003/8/25/nunit-v21-rc1-released.html) - Aug 23, 2003 ### [Finally some helpful code!](https://osherove.com/blog/2003/8/23/finally-some-helpful-code.html) --- title: "The ultimate connection string reference" url: "https://osherove.com/blog/2003/8/25/the-ultimate-connection-string-reference.md" canonical: "https://osherove.com/blog/2003/8/25/the-ultimate-connection-string-reference.html" published: "2003-08-25T17:19:00" updated: "2003-08-25T17:19:00" tags: [".Net Original", "Cool sites"] author: "Roy Osherove" description: "This is the most complete reference of any connection string you'll ever need: http://www.connectionstrings.com/" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The ultimate connection string reference By Roy Osherove August 25, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool sites](https://osherove.com/blog/category/cool-sites) **Historical article** · Originally published August 25, 2003; technical details may be outdated. This is the most complete reference of any connection string you'll ever need: [http://www.connectionstrings.com/](http://www.connectionstrings.com/) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Sep 1, 2003 ### [Asynchronous ASP.Net actions suck?](https://osherove.com/blog/2003/9/1/asynchronous-aspnet-actions-suck.html) - Aug 25, 2003 ### [Loading Winform UI controls from a different AppDomain is problematic](https://osherove.com/blog/2003/8/25/loading-winform-ui-controls-from-a-different-appdomain-is-pr.html) - Aug 25, 2003 ### [Combobox binding trouble - with a solution](https://osherove.com/blog/2003/8/25/combobox-binding-trouble-with-a-solution.html) - Aug 24, 2003 ### [Some debugging tips](https://osherove.com/blog/2003/8/24/some-debugging-tips.html) --- title: "NUnit v2.1 RC1 released" url: "https://osherove.com/blog/2003/8/25/nunit-v21-rc1-released.md" canonical: "https://osherove.com/blog/2003/8/25/nunit-v21-rc1-released.html" published: "2003-08-25T16:49:00" updated: "2003-08-25T16:49:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "NUnit v2.1 RC1 was released last night on SourceForge. From the release documentation: * Support for the .NET framework versions 1.0 and 1.1 * The ability to run test suites across multiple assemblies * New…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NUnit v2.1 RC1 released By Roy Osherove August 25, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published August 25, 2003; technical details may be outdated. [_NUnit v2.1 RC1_](http://sourceforge.net/projects/nunit) _was released last night on SourceForge.  From the release documentation:_ > _\* Support for the .NET framework versions 1.0 and 1.1 > \* The ability to run test suites across multiple assemblies > \* New TestFixtureSetup and TestFixtureTeardown attributes > \* Improvements to the GUI interface > \* New command line switches for both GUI and Console runners > \* Some degree of integration with Visual Studio > \* Tests now execute in the same order as they are displayed in the gui. > \* Substantial improvements in error and exception reporting. > \* Now runs on Windows 98_ > > \[via [Darrell Norton](http://dotnetjunkies.com/WebLog/darrell.norton/posts/1243.aspx)\] > > How very cool. I've been using [NUnit](http://sourceforge.net/projects/nunit) and the [NUnit Add-in](http://www.mutantdesign.co.uk/nunit-addin/) for some time now. I find the process of test-driven development amazingly relaxing - from a developer's point of view. Today , for instance, I had to write a class that generates a list of data and then enters it into the database. What's the first thing I did? I created the TestClass for it even before the class had one line of code. > > The great thing about the NUnit add-in is that it allows you to write a test procedure in a class, and then just right click in the editor and select “Run tests”. It's that simple. If you haven't tried doing tests before coding - give it a try. > > Of course, the other thing (which is the best feature of having unit tests in place) is that once you have a specific feature, or maybe just a line of code added, you can run all the tests you've created with a single click, and really **know** that nothing was broken. It lets you continue with your work with an amazing amount of confidence. Another thing this allows you to do is be able to make code modifications(i.e “refactoring”) without fear of not knowing what you just caused. As long as you have a test for everything, you can be sure that you'll catch any broken stuff with one click. Of course, if you do find a bug that you're tests didn't find, that even better! You just created another test case to check against, and you'll always know the next time that bug appears and be able to crush it :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 26, 2003 ### [ASP.Net dialog hell - a little easier..?](https://osherove.com/blog/2003/8/26/aspnet-dialog-hell-a-little-easier.html) - Aug 25, 2003 ### [Developing Software in Visual Studio .NET with Non-Administrative Privileges](https://osherove.com/blog/2003/8/25/developing-software-in-visual-studio-net-with-non-administra.html) - Aug 23, 2003 ### [Finally some helpful code!](https://osherove.com/blog/2003/8/23/finally-some-helpful-code.html) - Aug 22, 2003 ### [Good example of asynchronous delegates at work](https://osherove.com/blog/2003/8/22/good-example-of-asynchronous-delegates-at-work.html) --- title: "Combobox binding trouble - with a solution" url: "https://osherove.com/blog/2003/8/25/combobox-binding-trouble-with-a-solution.md" canonical: "https://osherove.com/blog/2003/8/25/combobox-binding-trouble-with-a-solution.html" published: "2003-08-25T15:57:00" updated: "2003-08-25T15:57:00" tags: [".Net Original"] author: "Roy Osherove" description: "I recently had a very annoying “thing”. On my winfom app, I wanted to bind a combobox to a dataset. For some reason the combo would not show anything. The Dataset was perfect, I even bound it to a grid to see that it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Combobox binding trouble - with a solution By Roy Osherove August 25, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published August 25, 2003; technical details may be outdated. I recently had a very annoying “thing”. On my winfom app, I wanted to bind a combobox to a dataset. For some reason the combo would not show anything. The Dataset was perfect, I even bound it to a grid to see that it works, but the combo - Nada. Turns out I had the **Combobox.Sorted=True**.   Switching that to false solved the whole thing. of course this is logical if you think that if I wanted the data sorted, I would have made the Dataview that was the data source sorted on a specific column. Still - just a little thing you might want to remember if you ever get this \*very\* annoying behavior. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 25, 2003 ### [Loading Winform UI controls from a different AppDomain is problematic](https://osherove.com/blog/2003/8/25/loading-winform-ui-controls-from-a-different-appdomain-is-pr.html) - Aug 25, 2003 ### [The ultimate connection string reference](https://osherove.com/blog/2003/8/25/the-ultimate-connection-string-reference.html) - Aug 24, 2003 ### [Some debugging tips](https://osherove.com/blog/2003/8/24/some-debugging-tips.html) - Aug 21, 2003 ### [Make your app support plugins - Part II](https://osherove.com/blog/2003/8/21/make-your-app-support-plugins-part-ii.html) --- title: "Mike is handing out free advice. Grab it." url: "https://osherove.com/blog/2003/8/25/mike-is-handing-out-free-advice-grab-it.md" canonical: "https://osherove.com/blog/2003/8/25/mike-is-handing-out-free-advice-grab-it.html" published: "2003-08-25T14:33:00" updated: "2003-08-25T14:33:00" tags: ["Off Topic"] author: "Roy Osherove" description: "As someone who is just beginning as an article writer I'm not going to miss the chance and read some tips from people with much much more experience ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mike is handing out free advice. Grab it. By Roy Osherove August 25, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 25, 2003; technical details may be outdated. As someone who is just beginning as an article writer I'm not going to miss the chance and read [some tips from people with much much more experience](http://www.larkware.com/Articles/AdviceforWritersPart1.html). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 26, 2003 ### [Advice for article writers - part II](https://osherove.com/blog/2003/8/26/advice-for-article-writers-part-ii.html) - Aug 26, 2003 ### [MSFT.Opml](https://osherove.com/blog/2003/8/26/msftopml.html) - Aug 23, 2003 ### [MSN Messenger upgrade blocks Trillian](https://osherove.com/blog/2003/8/23/msn-messenger-upgrade-blocks-trillian.html) - Aug 23, 2003 ### [Was that a shout out?](https://osherove.com/blog/2003/8/23/was-that-a-shout-out.html) --- title: "Some debugging tips" url: "https://osherove.com/blog/2003/8/24/some-debugging-tips.md" canonical: "https://osherove.com/blog/2003/8/24/some-debugging-tips.html" published: "2003-08-24T07:41:00" updated: "2003-08-24T07:41:00" tags: [".Net Original"] author: "Roy Osherove" description: "I was pretty sick last night and only got 1 or 2 hours of sleep. I had to stay in a little to sleep it off but now I feel better. I thought I'd put out a quick post before I get off to work. A lot of people don't know…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some debugging tips By Roy Osherove August 24, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published August 24, 2003; technical details may be outdated. I was pretty sick last night and only got 1 or 2 hours of sleep. I had to stay in a little to sleep it off but now I feel better. I thought I'd put out a quick post before I get off to work. A lot of people don't know that in visual studio .Net , when debugging, the **Watch** window is a very powerful beast. Most people treat the data in it as read-only. It's not. You can walk up to any variable of value in the Watch window ,click on it, and write down the new value that you want for that variable. Just like that. - Not only is the **Watch** window not read-only and allows you to change while debugging, it can also **evaluate expressions** while debugging. For example, say you have a method in a class that accepts a value of type Class1 and returns as a string some information about that class. Say you are in the middle of debugging(running is paused). Pull up the Quick-watch window(Ctrl-Alt-Q) and type in the name of that function just as you would in C# (if you're debugging a VB.Net application you need to write the expression in VB.Net). So by writing **MyFunction(this)** in the quick watch window, that function actually gets evaluated and you can get a lot more information about what's going on in your debugging environment. - The same holds true for **advanced breakpoints**. You might not know it, but pressing Ctrl-B on a code line brings up the “breakpoint properties“ dialog. One of the properties in there allows you to enter the breakpoint only if some condition is true. That means you can write in there any expression that evaluates to true/false. Can you guess what I'm getting at? Yes. You can call functions inside your code that return bool values that will decide for you whether the breakpoint will hit. Not only that, these functions can also do some work in the process. They can log things, they can change things. This technique may get a little dangerous, but as long as you understand that you can seriously impact the execution path of you application if you're not careful, you can go ahead and do some real advanced debugging. - Did I also mention that you can set multiple breakpoints on the same line? You can, if you have multiple expressions on a code line. If you have a complex **if** statement, something like : - _if(MyFirstFunction() && MySecondFunction() || MyThirdFunction()) {}_ - You can actually set three different breakpoints here. To set a breakpoint only when the code executes _MySecondFunction()_ , put your cursor inside the name of the function call and hit F9. You'll see that a breakpoint is set in the middle of the code line. If you have multiple breakpoints on a single line, clicking the left side bar to clear the break point clear all of them. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 25, 2003 ### [The ultimate connection string reference](https://osherove.com/blog/2003/8/25/the-ultimate-connection-string-reference.html) - Aug 25, 2003 ### [Combobox binding trouble - with a solution](https://osherove.com/blog/2003/8/25/combobox-binding-trouble-with-a-solution.html) - Aug 21, 2003 ### [Make your app support plugins - Part II](https://osherove.com/blog/2003/8/21/make-your-app-support-plugins-part-ii.html) - Aug 20, 2003 ### [User Group notes: WMI, CLR hosting and AppDomains](https://osherove.com/blog/2003/8/20/user-group-notes-wmi-clr-hosting-and-appdomains.html) --- title: "Finally some helpful code!" url: "https://osherove.com/blog/2003/8/23/finally-some-helpful-code.md" canonical: "https://osherove.com/blog/2003/8/23/finally-some-helpful-code.html" published: "2003-08-23T20:30:00" updated: "2003-08-23T20:30:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "I don't know any german, but it looks like Ralf Westphal posted some seriously cool code that deletes email messages from your POP3 mail account that are sent by the worm. What's so cool is just how simple the code is.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Finally some helpful code! By Roy Osherove August 23, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published August 23, 2003; technical details may be outdated. I don't know any german, but it looks like [Ralf Westphal](https://osherove.com/ralfw)  posted some [seriously cool code](http://weblogs.asp.net/ralfw/posts/25116.aspx) that deletes email messages from your POP3 mail account that are sent by the worm. What's so cool is just how simple the code is. Coolness strikes yet again! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 25, 2003 ### [Developing Software in Visual Studio .NET with Non-Administrative Privileges](https://osherove.com/blog/2003/8/25/developing-software-in-visual-studio-net-with-non-administra.html) - Aug 25, 2003 ### [NUnit v2.1 RC1 released](https://osherove.com/blog/2003/8/25/nunit-v21-rc1-released.html) - Aug 22, 2003 ### [Good example of asynchronous delegates at work](https://osherove.com/blog/2003/8/22/good-example-of-asynchronous-delegates-at-work.html) - Aug 21, 2003 ### [Free WMI book chapter](https://osherove.com/blog/2003/8/21/free-wmi-book-chapter.html) --- title: "MSN Messenger upgrade blocks Trillian" url: "https://osherove.com/blog/2003/8/23/msn-messenger-upgrade-blocks-trillian.md" canonical: "https://osherove.com/blog/2003/8/23/msn-messenger-upgrade-blocks-trillian.html" published: "2003-08-23T18:54:00" updated: "2003-08-23T18:54:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "This totally sucks . Instead of doing that, why don't MS do what Trillian did ,and allow us all to use the same client for multiple networks?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSN Messenger upgrade blocks Trillian By Roy Osherove August 23, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 23, 2003; technical details may be outdated. [This totally sucks](http://famulus.msnbc.com/famulusgen/cnet08-20-153502.asp?t=CNTEK). Instead of doing that, why don't MS do what [Trillian](http://www.ceruleanstudios.com/trillian/index.html) did ,and allow us all to use the same client for multiple networks? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Aug 26, 2003 ### [MSFT.Opml](https://osherove.com/blog/2003/8/26/msftopml.html) - Aug 25, 2003 ### [A meeting with Udi, and a talk about performance Do's and Don'ts](https://osherove.com/blog/2003/8/25/a-meeting-with-udi-and-a-talk-about-performance-dos-and-dont.html) - Aug 23, 2003 ### [Was that a shout out?](https://osherove.com/blog/2003/8/23/was-that-a-shout-out.html) - Jul 29, 2003 ### [A directory of Israeli weblogs](https://osherove.com/blog/2003/7/29/a-directory-of-israeli-weblogs.html) --- title: "Was that a shout out?" url: "https://osherove.com/blog/2003/8/23/was-that-a-shout-out.md" canonical: "https://osherove.com/blog/2003/8/23/was-that-a-shout-out.html" published: "2003-08-23T17:41:00" updated: "2003-08-23T17:41:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Is it just me, or did Israel's very own Yosi Taguri manage to sneak in his name into the shoutouts of this week's .Net Rocks show ? Coolness. Israel is definitely on the map now ;)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Was that a shout out? By Roy Osherove August 23, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 23, 2003; technical details may be outdated. Is it just me, or did Israel's very own [Yosi Taguri](http://weblogs.asp.net/yosit) manage to sneak in his name into the shoutouts of this week's [.Net Rocks show](http://www.franklins.net/dotnetrocks.asp)? Coolness. Israel is **definitely** on the map now ;) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Aug 25, 2003 ### [A meeting with Udi, and a talk about performance Do's and Don'ts](https://osherove.com/blog/2003/8/25/a-meeting-with-udi-and-a-talk-about-performance-dos-and-dont.html) - Aug 23, 2003 ### [MSN Messenger upgrade blocks Trillian](https://osherove.com/blog/2003/8/23/msn-messenger-upgrade-blocks-trillian.html) - Jul 29, 2003 ### [A directory of Israeli weblogs](https://osherove.com/blog/2003/7/29/a-directory-of-israeli-weblogs.html) - Jul 28, 2003 ### [What's up with BlogShares?](https://osherove.com/blog/2003/7/28/whats-up-with-blogshares.html) --- title: "Screensaver from hell" url: "https://osherove.com/blog/2003/8/23/screensaver-from-hell.md" canonical: "https://osherove.com/blog/2003/8/23/screensaver-from-hell.html" published: "2003-08-23T17:24:00" updated: "2003-08-23T17:24:00" tags: ["Off Topic"] author: "Roy Osherove" description: "You might want to think twice before installing this screensaver on a friends computer." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Screensaver from hell By Roy Osherove August 23, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 23, 2003; technical details may be outdated. You might want to think twice before installing [this screensaver](http://www.sysinternals.com/ntw2k/freeware/bluescreensaver.shtml) on a friends computer. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 23, 2003 ### [MSN Messenger upgrade blocks Trillian](https://osherove.com/blog/2003/8/23/msn-messenger-upgrade-blocks-trillian.html) - Aug 23, 2003 ### [Was that a shout out?](https://osherove.com/blog/2003/8/23/was-that-a-shout-out.html) - Aug 20, 2003 ### [I give up - Career Calculus](https://osherove.com/blog/2003/8/20/i-give-up-career-calculus.html) - Aug 20, 2003 ### [Commandments for a publishable article](https://osherove.com/blog/2003/8/20/commandments-for-a-publishable-article.html) --- title: "Good example of asynchronous delegates at work" url: "https://osherove.com/blog/2003/8/22/good-example-of-asynchronous-delegates-at-work.md" canonical: "https://osherove.com/blog/2003/8/22/good-example-of-asynchronous-delegates-at-work.html" published: "2003-08-22T20:04:00" updated: "2003-08-22T20:04:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Grant Killian shows a very simple and informative example of asynchronous delegates using VB.Net. A good read if you never really “got” why they're so useful." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good example of asynchronous delegates at work By Roy Osherove August 22, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published August 22, 2003; technical details may be outdated. [Grant Killian shows a very simple and informative example](http://dotnetjunkies.com/WebLog/grant.killian/posts/1206.aspx) of asynchronous delegates using VB.Net. A good read if you never really “got” why they're so useful. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 25, 2003 ### [NUnit v2.1 RC1 released](https://osherove.com/blog/2003/8/25/nunit-v21-rc1-released.html) - Aug 23, 2003 ### [Finally some helpful code!](https://osherove.com/blog/2003/8/23/finally-some-helpful-code.html) - Aug 21, 2003 ### [Free WMI book chapter](https://osherove.com/blog/2003/8/21/free-wmi-book-chapter.html) - Aug 20, 2003 ### [MSDN has launched the Mobility & Embedded Developer Center](https://osherove.com/blog/2003/8/20/msdn-has-launched-the-mobility-amp-embedded-developer-center.html) --- title: "Make your app support plugins - Part II" url: "https://osherove.com/blog/2003/8/21/make-your-app-support-plugins-part-ii.md" canonical: "https://osherove.com/blog/2003/8/21/make-your-app-support-plugins-part-ii.html" published: "2003-08-21T15:21:00" updated: "2003-08-21T15:21:00" tags: [".Net Original"] author: "Roy Osherove" description: "Make your app support plugins - Part II , including the source code for it (which was not available before), can now be found on MSDNAA . Thanks Lauri :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Make your app support plugins - Part II By Roy Osherove August 21, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published August 21, 2003; technical details may be outdated. [Make your app support plugins - Part II](http://msdnaa.net/Resources/Display.aspx?ResID=2200) , including the source code for it (which was not available before), can now be found on [MSDNAA](http://msdnaa.net/Resources/Display.aspx?ResID=2200). Thanks Lauri :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 25, 2003 ### [Combobox binding trouble - with a solution](https://osherove.com/blog/2003/8/25/combobox-binding-trouble-with-a-solution.html) - Aug 24, 2003 ### [Some debugging tips](https://osherove.com/blog/2003/8/24/some-debugging-tips.html) - Aug 20, 2003 ### [User Group notes: WMI, CLR hosting and AppDomains](https://osherove.com/blog/2003/8/20/user-group-notes-wmi-clr-hosting-and-appdomains.html) - Aug 20, 2003 ### [Make your app support plugins](https://osherove.com/blog/2003/8/20/make-your-app-support-plugins.html) --- title: "Free WMI book chapter" url: "https://osherove.com/blog/2003/8/21/free-wmi-book-chapter.md" canonical: "https://osherove.com/blog/2003/8/21/free-wmi-book-chapter.html" published: "2003-08-21T05:00:00" updated: "2003-08-21T05:00:00" tags: [".Net Quotations", "Free book chapters"] author: "Roy Osherove" description: "SBC Adds that there's a free book chapter on WMI over at APress: .NET Framework and Windows Management Instrumentation" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free WMI book chapter By Roy Osherove August 21, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published August 21, 2003; technical details may be outdated.  [SBC](https://osherove.com/sbchatterjee/) Adds that there's a free book chapter on WMI over at APress: [.NET Framework and Windows Management Instrumentation](http://www.apress.com/book/supplementDownload.html?bID=120&sID=971) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 23, 2003 ### [Finally some helpful code!](https://osherove.com/blog/2003/8/23/finally-some-helpful-code.html) - Aug 22, 2003 ### [Good example of asynchronous delegates at work](https://osherove.com/blog/2003/8/22/good-example-of-asynchronous-delegates-at-work.html) - Aug 20, 2003 ### [MSDN has launched the Mobility & Embedded Developer Center](https://osherove.com/blog/2003/8/20/msdn-has-launched-the-mobility-amp-embedded-developer-center.html) - Aug 20, 2003 ### [It's so hardcore you could say it's CLR Porn](https://osherove.com/blog/2003/8/20/its-so-hardcore-you-could-say-its-clr-porn.html) --- title: "MSDN has launched the Mobility & Embedded Developer Center" url: "https://osherove.com/blog/2003/8/20/msdn-has-launched-the-mobility-amp-embedded-developer-center.md" canonical: "https://osherove.com/blog/2003/8/20/msdn-has-launched-the-mobility-amp-embedded-developer-center.html" published: "2003-08-20T19:45:00" updated: "2003-08-20T19:45:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "“ MSDN has launched the Mobility & Embedded Developer Center at http://msdn.microsoft.com/mobility . Hooray! ” [ Ed Kaim ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSDN has launched the Mobility & Embedded Developer Center By Roy Osherove August 20, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published August 20, 2003; technical details may be outdated. “_MSDN has launched the Mobility & Embedded Developer Center at_ [_http://msdn.microsoft.com/mobility_](http://msdn.microsoft.com/mobility)_. Hooray!_” \[[Ed Kaim](http://blogs.gotdotnet.com/EdKaim/permalink.aspx/75dcda67-9f1f-4ec6-a7a8-096bcb222b9e)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 22, 2003 ### [Good example of asynchronous delegates at work](https://osherove.com/blog/2003/8/22/good-example-of-asynchronous-delegates-at-work.html) - Aug 21, 2003 ### [Free WMI book chapter](https://osherove.com/blog/2003/8/21/free-wmi-book-chapter.html) - Aug 20, 2003 ### [It's so hardcore you could say it's CLR Porn](https://osherove.com/blog/2003/8/20/its-so-hardcore-you-could-say-its-clr-porn.html) - Aug 20, 2003 ### [New book and blog from Ingo](https://osherove.com/blog/2003/8/20/new-book-and-blog-from-ingo.html) --- title: "User Group notes: WMI, CLR hosting and AppDomains" url: "https://osherove.com/blog/2003/8/20/user-group-notes-wmi-clr-hosting-and-appdomains.md" canonical: "https://osherove.com/blog/2003/8/20/user-group-notes-wmi-clr-hosting-and-appdomains.html" published: "2003-08-20T18:42:00" updated: "2003-08-20T18:42:00" tags: [".Net Original"] author: "Roy Osherove" description: "If you missed it. Today was the monthly group meeting of the Israel visual C++ users group (I’ve been meaning to add a list of Israel’s .Net user groups to my blog links but somehow I always end up doing something…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # User Group notes: WMI, CLR hosting and AppDomains By Roy Osherove August 20, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published August 20, 2003; technical details may be outdated. If you missed it. Today was the monthly group meeting of the [Israel visual C++ users group](http://www.comconix.com/ivcug/) (I’ve been meaning to add a list of [Israel’s .Net user groups](http://www.microsoft.com/israel/communities/usergroups.mspx) to my blog links but somehow I always end up doing something else..). The meeting was supposed to be a continuation of a previous meeting, that concerned “CLR plumbing”. Basically it talked about several subjects. Some more interesting than others. I’ll list what I remember with a short description of the most important stuff. **WMI(Windows management instrumentation)** Actually this is a subject that in the past 2 weeks or so has become near and dear to my heart. In fact, I’m planning to write an article on my experiences with it, and with active directory programming. WMI is a technology that allows you to literally query the insides of your computer(or a remote machine) for various system information. For example – to get the list of all directories on your disk you can literally execute a query such as “_Select \* from Win32\_Directory_”. You can then work against an extensive and complex object model that can pretty much get you anywhere you want and do whatever you like. This is also supported in .Net (via the _System.Management_ namespace). One of the things that the .Net framework adds to the machine on which it is installed is an additional set of classes that allow you to query for various performance counters that are specific for .Net [WMI administrative tools](http://www.microsoft.com/downloads/details.aspx?FamilyId=6430F853-1120-48DB-8CC5-F2ABDC3ED314&displaylang=en) package is a small setup program that deploys several utilities that allow easier work and learning with the WMI classes. Mainly, the CIM studio is **the** tool to learn exactly what exists and what can be done with this amazing technology, and is installed using this setup program. Another cool tool for the VS.Net: [Management (WMI) Extensions for Visual Studio .NET 2003 Server Explorer](http://www.microsoft.com/downloads/details.aspx?FamilyID=62d91a63-1253-4ea6-8599-68fb3ef77de1&DisplayLang=en) **CLR hosting and AppDomains** For each process that loads a managed application, a new and unique instance of the CLR is loaded and hosted via that process. That means that if you double click 100 times on a managed exe, you’ll have 100 instances of the CLR running on your system. Performance wise, if any of those applications wanted to talk to each , since each of them resides in a separate AppDomain, they are actually talking via Remoting. Remoting between different Process is very expansive for performance. One way to overcome this limitation is to have a single AppDomain host other AppDomains within its own process, each AppDomain running the managed assembly on its own. The basic idea is that you will have one “loader” program, that all that it does is perform code such as the following:     Private Sub HostExternalCode()         Dim app As AppDomain         Dim app1 As AppDomain         app = AppDomain.CreateDomain("Domain1")         app.ExecuteAssembly("MyProgram11.exe")         app1 = AppDomain.CreateDomain("Domain2")         app1.ExecuteAssembly("MyProgram22.exe")     End Sub Now what you have here are actually 3 AppDomains. 1 for the current AppDomain, and 2 more that are running inside the current Process. Actually, they are running inside the current thread. They can actually block this thread from processing. The better way to do this is to create a multi threaded implementation of this program that runs each assembly on a separate thread. Now. All this hassle still does not mean these Applications have solved the problems of speaking to each other. Still, each application message to another application has to cross the AppDomain boundary. However, now these boundaries reside **in the same process space** and thus performance suffers much less. The CLR actually exposes both unmanaged APIs and COM interfaces. This allows you to easily instantiate a CLR instance in any COM language (even in Excel VBA) and make it do some cool stuff. The cooler stuff, however resides (as always) in the unmanaged native APIs. You can write a C/C++ application that uses those APIs and really customize the way in which the CLR instance loads. You can set whether it will run optimized for a single(workstation) or multi processor(server) machine .The difference?  Optimizations. Points about “server” mode: - if you set “server” and are running on a single processor machine you’ll automatically get the “workstation” behavior minus one caveat: “server” mode does not let you run garbage collection on a separate thread, unlike “workstation” mode. But since you are running as “server” in default, you’ll get the “server” threading behavior. - The default run mode is “workstation” More things you can set when you host your own CLR via native APIs: - You can set the Domain model to “Domain Neutral” meaning your AppDomains won’t have to deal with any security contexts when speaking to each other. You simply will have full trust on everything running in that CLR instance. - One other thing I can’t remember **Perf counters** New Performance counters are added to the Perfmon when installing the framework. One important point was that all perf counters in .Net framework are “always on” meaning you get perf counters running even if you’re no using perfmon or other means to track them. This causes a performance hit, but was worth the code, because have “#if”s everywhere in the native code was much more a performance hit. You can use WMI to access all the perf counters on the machine as well! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 24, 2003 ### [Some debugging tips](https://osherove.com/blog/2003/8/24/some-debugging-tips.html) - Aug 21, 2003 ### [Make your app support plugins - Part II](https://osherove.com/blog/2003/8/21/make-your-app-support-plugins-part-ii.html) - Aug 20, 2003 ### [Make your app support plugins](https://osherove.com/blog/2003/8/20/make-your-app-support-plugins.html) - Aug 17, 2003 ### [CodeSmart.Net](https://osherove.com/blog/2003/8/17/codesmartnet.html) --- title: "I give up - Career Calculus" url: "https://osherove.com/blog/2003/8/20/i-give-up-career-calculus.md" canonical: "https://osherove.com/blog/2003/8/20/i-give-up-career-calculus.html" published: "2003-08-20T18:11:00" updated: "2003-08-20T18:11:00" tags: ["Off Topic"] author: "Roy Osherove" description: "OK! I'll link to it too. It's too damn good to be passed over (even if half the world had already blogged about it). Career Calculus - Ever wonder why you haven't gotten that promotion you wanted? Why you aren't doing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I give up - Career Calculus By Roy Osherove August 20, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 20, 2003; technical details may be outdated. OK! I'll link to it too. It's too damn good to be passed over (even if half the world had already blogged about it). [Career Calculus](http://software.ericsink.com/Career_Calculus.html) - Ever wonder why you haven't gotten that promotion you wanted? Why you aren't doing what you really want to do? Why you seem to know less and less as time goes by instead of the opposite? You might be putting an emphasis on the wrong things in your career. As for the PDC? I've tried not to be dragged into that trap again, so I'll just say to all those who are blogging about how they take responsibility for their career.  how many of you would have gone to the PDC if it was in Israel? (assume the same cool stuff and everything) ah! Things seem a bit different now, don't they? Perhaps you'd rather buy a good book instead, or just not go to not lose your job, or other “non important” stuff? I'm talking to those who can “afford“ it. I'm sure at least half the people wouldn't go(those that are paying for this out of their own pocket, or that come from small companies). You know what, my new job isn't sending me to the PDC. It sucks. But that does not mean they are not a good company. Sometimes you need to be realistic. They buy books, subscribe to magazines and do whatever they can to let their employees learn and prosper. Reading _career calculus_ you can understand that just going to the PDC isn't the biggest part of the equation. It's about the state of mind you're in. I'm not going. Does that mean I'm not in that state of mind? No. It means that sometimes you just can't go. But I know I'll get there someday. That's the spirit that should be present in your mind. Here's another news flash. I'd be “whining” about the PDC cost **even if I were going**. It is nothing more than an objective statement. It's pretty easy to look down and say “You're not going, that means you don't really want to go”. Patronizing sentences are one of the things I like least. I know because sometimes I can be a real patronizing jerk. It takes one to know one. So here's the deal. If you are going to the PDC because you can afford it, or because your company is sending you or whatever, don't judge those who aren't going. Sure, some “could” if they really wanted to, but i'm not talking about that .5% of developers. Don't assume that just because you are so privilaged that you've walked a mile in another person's shoes and get to tell them what they did right or wrong. Here's an exceprt from a post I wrote a while ago. It was [about commintment](http://weblogs.asp.net/rosherove/posts/8127.aspx): “**_About Commitment_** _Here's a great example of a developer I got to know through the blog. He's actually in a worst state than I am, since he's got no internet connection at home. So what_ [_he_](http://cengizhan.com/ "Watch out, the site's in turkish.. :)") _does, is each day , he goes to an internet café, goes online, reads blogs, downloads articles and saves it all to a USB-drive. Then he goes home and studies what he got._ _That's pretty darn cool if you ask me. If I were at a position to hire this guy, I'd probably do it; even if he possessed only half of what I needed. I'll know he'd be one of my best developers_.” From what I know, this guy isn't going to the PDC either. Does that mean he's not taking charge of his own career? How errogant must one be to include this guy in that definition? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 23, 2003 ### [Was that a shout out?](https://osherove.com/blog/2003/8/23/was-that-a-shout-out.html) - Aug 23, 2003 ### [Screensaver from hell](https://osherove.com/blog/2003/8/23/screensaver-from-hell.html) - Aug 20, 2003 ### [Commandments for a publishable article](https://osherove.com/blog/2003/8/20/commandments-for-a-publishable-article.html) - Aug 18, 2003 ### [Google minus weblogs](https://osherove.com/blog/2003/8/18/google-minus-weblogs.html) --- title: "Commandments for a publishable article" url: "https://osherove.com/blog/2003/8/20/commandments-for-a-publishable-article.md" canonical: "https://osherove.com/blog/2003/8/20/commandments-for-a-publishable-article.html" published: "2003-08-20T17:34:00" updated: "2003-08-20T17:34:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I was having a chat with Lauri Travis, one of the editors of MSDNAA . Lauri has been reading some of the blogs here, and was glad to find lots of great .Net content in this little community. In our chat, I suggested…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Commandments for a publishable article By Roy Osherove August 20, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 20, 2003; technical details may be outdated. I was having a chat with Lauri Travis, one of the editors of [MSDNAA](http://msdnaa.net/). Lauri has been reading some of the blogs here, and was glad to find lots of great .Net content in this little community. In our chat, I suggested Lauri created her own .Net weblog, since she helps run a .Net user group, and an editor on one of the biggest tech related sites on the net. We talked about what one would write about in such a blog, and I immediatly thought that, given her current role, she could contribute as to the process in which she makes the selection between publishable material and stuff that erm.. is not publishable.  She said she has no real time to start her own blog, but she could provide me with her “commandments” to a publishable article: 1. Technically relevant subject matter. 2. Up to date with latest version. 3. Plenty of code that will build with no errors in VS .NET. 4. A good explanation of the code in the article. 5. Code that is well formatted in the article and downloadable source code with the complete project files. 6. Articles that are chosen for the Contributor Spotlight Section typically have about half source code and about half text. 7. Articles that discuss things that are not common – embedded technologies, mobile etc. 8. Last but not least – my favorite articles are the ones that make you go “Wow!  That was neat! I want to try it!”  **Update:** Lauri says: “Everyone who reads this should send me an article for MSDNAA!” ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 23, 2003 ### [Screensaver from hell](https://osherove.com/blog/2003/8/23/screensaver-from-hell.html) - Aug 20, 2003 ### [I give up - Career Calculus](https://osherove.com/blog/2003/8/20/i-give-up-career-calculus.html) - Aug 18, 2003 ### [Google minus weblogs](https://osherove.com/blog/2003/8/18/google-minus-weblogs.html) - Aug 17, 2003 ### [Google binding](https://osherove.com/blog/2003/8/17/google-binding.html) --- title: "Make your app support plugins" url: "https://osherove.com/blog/2003/8/20/make-your-app-support-plugins.md" canonical: "https://osherove.com/blog/2003/8/20/make-your-app-support-plugins.html" published: "2003-08-20T16:34:00" updated: "2003-08-20T16:34:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "Another one of mine made MSDNAA - Make your app support plugins ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Make your app support plugins By Roy Osherove August 20, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published August 20, 2003; technical details may be outdated. Another one of mine made [MSDNAA](http://msdnaa.net/) \- [Make your app support plugins](http://msdnaa.net/Resources/Display.aspx?ResID=2197). ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 21, 2003 ### [Make your app support plugins - Part II](https://osherove.com/blog/2003/8/21/make-your-app-support-plugins-part-ii.html) - Aug 20, 2003 ### [User Group notes: WMI, CLR hosting and AppDomains](https://osherove.com/blog/2003/8/20/user-group-notes-wmi-clr-hosting-and-appdomains.html) - Aug 17, 2003 ### [CodeSmart.Net](https://osherove.com/blog/2003/8/17/codesmartnet.html) - Aug 17, 2003 ### [WMI mind blower](https://osherove.com/blog/2003/8/17/wmi-mind-blower.html) --- title: "It's so hardcore you could say it's CLR Porn" url: "https://osherove.com/blog/2003/8/20/its-so-hardcore-you-could-say-its-clr-porn.md" canonical: "https://osherove.com/blog/2003/8/20/its-so-hardcore-you-could-say-its-clr-porn.html" published: "2003-08-20T15:34:00" updated: "2003-08-20T15:34:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Chris brumme managed to create yet another brain killer “post” (at 9,000+ words it's hardly that). Go drench your thirst for knowledge . Highly recommended." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # It's so hardcore you could say it's CLR Porn By Roy Osherove August 20, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published August 20, 2003; technical details may be outdated. [Chris brumme](http://blogs.gotdotnet.com/cbrumme) managed to create yet another brain killer “post” (at 9,000+ words it's hardly that). [Go drench your thirst for knowledge](http://blogs.gotdotnet.com/cbrumme/permalink.aspx/dac5ba4a-f0c8-42bb-a5cf-097efb25d1a9). Highly recommended. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 21, 2003 ### [Free WMI book chapter](https://osherove.com/blog/2003/8/21/free-wmi-book-chapter.html) - Aug 20, 2003 ### [MSDN has launched the Mobility & Embedded Developer Center](https://osherove.com/blog/2003/8/20/msdn-has-launched-the-mobility-amp-embedded-developer-center.html) - Aug 20, 2003 ### [New book and blog from Ingo](https://osherove.com/blog/2003/8/20/new-book-and-blog-from-ingo.html) - Aug 14, 2003 ### [PDC: Show me the bits](https://osherove.com/blog/2003/8/14/pdc-show-me-the-bits.html) --- title: "New book and blog from Ingo" url: "https://osherove.com/blog/2003/8/20/new-book-and-blog-from-ingo.md" canonical: "https://osherove.com/blog/2003/8/20/new-book-and-blog-from-ingo.html" published: "2003-08-20T08:17:00" updated: "2003-08-20T08:17:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Looks like Ingo Rammer , the Remoting machine, is gonna write a new book and blog about the writing process ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New book and blog from Ingo By Roy Osherove August 20, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published August 20, 2003; technical details may be outdated. Looks like [Ingo Rammer](http://www.ingorammer.com/), the [Remoting](https://www.amazon.com/exec/obidos/ASIN/1590590252/iserializable-20) machine,  is gonna write [a new book and blog about the writing process](http://www.ingorammer.com/weblog/archives/001315.html). ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 20, 2003 ### [MSDN has launched the Mobility & Embedded Developer Center](https://osherove.com/blog/2003/8/20/msdn-has-launched-the-mobility-amp-embedded-developer-center.html) - Aug 20, 2003 ### [It's so hardcore you could say it's CLR Porn](https://osherove.com/blog/2003/8/20/its-so-hardcore-you-could-say-its-clr-porn.html) - Aug 14, 2003 ### [PDC: Show me the bits](https://osherove.com/blog/2003/8/14/pdc-show-me-the-bits.html) - Aug 13, 2003 ### [.Net Rocks with Brent Rector](https://osherove.com/blog/2003/8/13/net-rocks-with-brent-rector.html) --- title: "Google minus weblogs" url: "https://osherove.com/blog/2003/8/18/google-minus-weblogs.md" canonical: "https://osherove.com/blog/2003/8/18/google-minus-weblogs.html" published: "2003-08-18T15:04:00" updated: "2003-08-18T15:04:00" tags: ["Off Topic"] author: "Roy Osherove" description: "“ Wonder what Google will be like with blogs filtered? Have a look . You'll need an API Key (details within). Let me know what you think! “ [ BlogWise ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Google minus weblogs By Roy Osherove August 18, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 18, 2003; technical details may be outdated. “_Wonder what Google will be like with blogs filtered?_ [_Have a look_](http://www.blogwise.com/cgi-bin/search.pl)_. You'll need an API Key (details within). Let me know what you think!_ “ \[[BlogWise](http://www.blogwise.com/)\] ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 20, 2003 ### [I give up - Career Calculus](https://osherove.com/blog/2003/8/20/i-give-up-career-calculus.html) - Aug 20, 2003 ### [Commandments for a publishable article](https://osherove.com/blog/2003/8/20/commandments-for-a-publishable-article.html) - Aug 17, 2003 ### [Google binding](https://osherove.com/blog/2003/8/17/google-binding.html) - Aug 17, 2003 ### [Nemo bedroom](https://osherove.com/blog/2003/8/17/nemo-bedroom.html) --- title: "Coding tips and tricks by Eric Gunnerson" url: "https://osherove.com/blog/2003/8/18/coding-tips-and-tricks-by-eric-gunnerson.md" canonical: "https://osherove.com/blog/2003/8/18/coding-tips-and-tricks-by-eric-gunnerson.html" published: "2003-08-18T05:42:00" updated: "2003-08-18T05:42:00" tags: ["Cool Articles", "Tips & Tricks"] author: "Roy Osherove" description: "Here is a nice article by Eric Gunnerson with various tips and tricks. I really liked the first one : “What is the difference between a Windows Forms project and a Console Application project? The somewhat surprising…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Coding tips and tricks by Eric Gunnerson By Roy Osherove August 18, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published August 18, 2003; technical details may be outdated. [Here is a nice article](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/Csharp01212002.asp) by Eric Gunnerson with various tips and tricks. I really liked the first one : _“What is the difference between a Windows Forms project and a Console Application project?_ _The somewhat surprising answer is not much. The only real difference is that a Console application sends output to a Console Window, and a Windows Form application doesn't. However, this is only the default behavior. There's no reason a Windows Forms application can't have a console window._ _Enabling the console window is easy. From Microsoft Visual Studio®, right-click on the project and choose **Properties**. Change the output type from **Windows Application** to **Console Application**. Or, from the command line, use `/target:exe` instead of `/target:winexe`._ _I've found this to be fairly useful when debugging my applications, and it's easy to turn off the console application when you're done. “_ I did not know that! how very cool! ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Aug 20, 2003 ### [Make your app support plugins](https://osherove.com/blog/2003/8/20/make-your-app-support-plugins.html) - Aug 20, 2003 ### [It's so hardcore you could say it's CLR Porn](https://osherove.com/blog/2003/8/20/its-so-hardcore-you-could-say-its-clr-porn.html) - Aug 11, 2003 ### [Server.Transfer vs. Response.Redirect](https://osherove.com/blog/2003/8/11/servertransfer-vs-responseredirect.html) - Jul 28, 2003 ### [Resolving DataSet Conflicts](https://osherove.com/blog/2003/7/28/resolving-dataset-conflicts.html) --- title: "CodeSmart.Net" url: "https://osherove.com/blog/2003/8/17/codesmartnet.md" canonical: "https://osherove.com/blog/2003/8/17/codesmartnet.html" published: "2003-08-17T20:38:00" updated: "2003-08-17T20:38:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "Is it just me or does CodeSmart.Net seem like one of the coolest VS.Net add-ins around the block? I've been a loyal Axtools customer in my VB6 days and thought the move to VS.Net would leave them little to enhance - but…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CodeSmart.Net By Roy Osherove August 17, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published August 17, 2003; technical details may be outdated. Is it just me or does [CodeSmart.Net](http://www.axtools.com/products/cs2k3net.htm) seem like one of the coolest VS.Net add-ins around the block? I've been a loyal [Axtools](http://www.axtools.com/) customer in my VB6 days and thought the move to VS.Net would leave them little to enhance - but I was totally wrong. Totally recommended! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 20, 2003 ### [User Group notes: WMI, CLR hosting and AppDomains](https://osherove.com/blog/2003/8/20/user-group-notes-wmi-clr-hosting-and-appdomains.html) - Aug 20, 2003 ### [Make your app support plugins](https://osherove.com/blog/2003/8/20/make-your-app-support-plugins.html) - Aug 17, 2003 ### [WMI mind blower](https://osherove.com/blog/2003/8/17/wmi-mind-blower.html) - Aug 12, 2003 ### [Catch ex As Exception When...](https://osherove.com/blog/2003/8/12/catch-ex-as-exception-when.html) --- title: "Google binding" url: "https://osherove.com/blog/2003/8/17/google-binding.md" canonical: "https://osherove.com/blog/2003/8/17/google-binding.html" published: "2003-08-17T19:08:00" updated: "2003-08-17T19:08:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Addy sent me this: \"Hey dude, do a search on google for \" winforms data binding \"..." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Google binding By Roy Osherove August 17, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 17, 2003; technical details may be outdated. [Addy](http://dotnetweblogs.com/ASanto/Default.aspx)  sent me this: "Hey dude, do a search on google for "[winforms data binding](http://www.google.com/search?q=winforms+data+binding)"... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 20, 2003 ### [Commandments for a publishable article](https://osherove.com/blog/2003/8/20/commandments-for-a-publishable-article.html) - Aug 18, 2003 ### [Google minus weblogs](https://osherove.com/blog/2003/8/18/google-minus-weblogs.html) - Aug 17, 2003 ### [Nemo bedroom](https://osherove.com/blog/2003/8/17/nemo-bedroom.html) - Aug 17, 2003 ### [Happy birthday to me!](https://osherove.com/blog/2003/8/17/happy-birthday-to-me.html) --- title: "Nemo bedroom" url: "https://osherove.com/blog/2003/8/17/nemo-bedroom.md" canonical: "https://osherove.com/blog/2003/8/17/nemo-bedroom.html" published: "2003-08-17T19:02:00" updated: "2003-08-17T19:02:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This is how I want our kids bedroom to look like (scroll down to “The four walls” header)." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nemo bedroom By Roy Osherove August 17, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 17, 2003; technical details may be outdated. [This](http://www.2frogs.net/0803diary.htm) is how I want **our** kids bedroom to look like (scroll down to “The four walls” header). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 18, 2003 ### [Google minus weblogs](https://osherove.com/blog/2003/8/18/google-minus-weblogs.html) - Aug 17, 2003 ### [Google binding](https://osherove.com/blog/2003/8/17/google-binding.html) - Aug 17, 2003 ### [Happy birthday to me!](https://osherove.com/blog/2003/8/17/happy-birthday-to-me.html) - Aug 15, 2003 ### [A nice blackout story](https://osherove.com/blog/2003/8/15/a-nice-blackout-story.html) --- title: "WMI mind blower" url: "https://osherove.com/blog/2003/8/17/wmi-mind-blower.md" canonical: "https://osherove.com/blog/2003/8/17/wmi-mind-blower.html" published: "2003-08-17T07:29:00" updated: "2003-08-17T07:29:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "If you have ever played around with WMI, specifically in .Net - this will blow your mind: Management (WMI) Extensions for Visual Studio .NET 2003 Server Explorer" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # WMI mind blower By Roy Osherove August 17, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published August 17, 2003; technical details may be outdated. If you have ever played around with WMI, specifically in .Net - this will blow your mind: [Management (WMI) Extensions for Visual Studio .NET 2003 Server Explorer](http://www.microsoft.com/downloads/details.aspx?FamilyID=62d91a63-1253-4ea6-8599-68fb3ef77de1&DisplayLang=en) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 20, 2003 ### [Make your app support plugins](https://osherove.com/blog/2003/8/20/make-your-app-support-plugins.html) - Aug 17, 2003 ### [CodeSmart.Net](https://osherove.com/blog/2003/8/17/codesmartnet.html) - Aug 12, 2003 ### [Catch ex As Exception When...](https://osherove.com/blog/2003/8/12/catch-ex-as-exception-when.html) - Aug 12, 2003 ### [My new favorite book](https://osherove.com/blog/2003/8/12/my-new-favorite-book.html) --- title: "Happy birthday to me!" url: "https://osherove.com/blog/2003/8/17/happy-birthday-to-me.md" canonical: "https://osherove.com/blog/2003/8/17/happy-birthday-to-me.html" published: "2003-08-17T04:10:00" updated: "2003-08-17T04:10:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm 28 today. I totally feel 18 though." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Happy birthday to me! By Roy Osherove August 17, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 17, 2003; technical details may be outdated. I'm 28 today. I totally feel 18 though. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 17, 2003 ### [Google binding](https://osherove.com/blog/2003/8/17/google-binding.html) - Aug 17, 2003 ### [Nemo bedroom](https://osherove.com/blog/2003/8/17/nemo-bedroom.html) - Aug 15, 2003 ### [A nice blackout story](https://osherove.com/blog/2003/8/15/a-nice-blackout-story.html) - Aug 14, 2003 ### [Idiomatic domains](https://osherove.com/blog/2003/8/14/idiomatic-domains.html) --- title: "A nice blackout story" url: "https://osherove.com/blog/2003/8/15/a-nice-blackout-story.md" canonical: "https://osherove.com/blog/2003/8/15/a-nice-blackout-story.html" published: "2003-08-15T13:32:00" updated: "2003-08-15T13:32:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Chris Hollander tells a wonderful story about the blackout of 2003." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A nice blackout story By Roy Osherove August 15, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 15, 2003; technical details may be outdated. [Chris Hollander tells a wonderful story](http://objective.mine.nu/archive/2003/8/15.aspx#when:06:21:44.3016944) about the blackout of 2003. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 17, 2003 ### [Nemo bedroom](https://osherove.com/blog/2003/8/17/nemo-bedroom.html) - Aug 17, 2003 ### [Happy birthday to me!](https://osherove.com/blog/2003/8/17/happy-birthday-to-me.html) - Aug 14, 2003 ### [Idiomatic domains](https://osherove.com/blog/2003/8/14/idiomatic-domains.html) - Aug 13, 2003 ### [Hard disk Space Managers](https://osherove.com/blog/2003/8/13/hard-disk-space-managers.html) --- title: "Idiomatic domains" url: "https://osherove.com/blog/2003/8/14/idiomatic-domains.md" canonical: "https://osherove.com/blog/2003/8/14/idiomatic-domains.html" published: "2003-08-14T15:56:00" updated: "2003-08-14T15:56:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Marc Fest has a list of a thousand domain names that no one has taken yet. some of them seem pretty cool. Apparently he did it using a small program he wrote. What's missing? The program code itself would be cool to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Idiomatic domains By Roy Osherove August 14, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 14, 2003; technical details may be outdated. Marc Fest has a [list of a thousand domain names](http://www.marcfest.com/idiomaticdomains/) that no one has taken yet. some of them seem pretty cool. Apparently he did it using a small program he wrote. What's missing? The program code itself would be cool to see. Also - he didn't try to put the words “dotnet“ in there :( but some are cool : causinghurt.com, comingbackformore.com, destructbutton.com , giveitarest.com ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 17, 2003 ### [Happy birthday to me!](https://osherove.com/blog/2003/8/17/happy-birthday-to-me.html) - Aug 15, 2003 ### [A nice blackout story](https://osherove.com/blog/2003/8/15/a-nice-blackout-story.html) - Aug 13, 2003 ### [Hard disk Space Managers](https://osherove.com/blog/2003/8/13/hard-disk-space-managers.html) - Aug 13, 2003 ### [Google Calc](https://osherove.com/blog/2003/8/13/google-calc.html) --- title: "PDC: Show me the bits" url: "https://osherove.com/blog/2003/8/14/pdc-show-me-the-bits.md" canonical: "https://osherove.com/blog/2003/8/14/pdc-show-me-the-bits.html" published: "2003-08-14T15:53:00" updated: "2003-08-14T15:53:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Brad tells us what the PDC attendees will get: Longhorn! You have seen screen shots from leaked versions, now get your own copy! Not only will you get to see * some * of the new look and feel stuff we are doing, but you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # PDC: Show me the bits By Roy Osherove August 14, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published August 14, 2003; technical details may be outdated. [Brad tells us](http://blogs.gotdotnet.com/BradA/permalink.aspx/f744e127-8784-458f-90fa-28218db254cc) what the PDC attendees will get: 1. _Longhorn! You have seen screen shots from leaked versions, now get your own copy! Not only will you get to see \***some**\* of the new look and feel stuff we are doing, but you will also get and SDK and tools support for programming to the huge new managed APIs that longhorn offers. (more on that in a later post)._ 2. _Whidbey .NET Framework and VS Whidbey – See the work we have done in the platform AND the tools that target that platform._ 3. _Yukon – For you data heads, you will love this… Stored procs written in C#\\VB, way cool._ _Oh and, BTW, be sure to bring a DVD drive to the event!_ \[[Brad Abrams](http://blogs.gotdotnet.com/BradA/)\]   I'd write how totally bummed I am for not going to this, but some people seem to find it “whiny”. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 20, 2003 ### [It's so hardcore you could say it's CLR Porn](https://osherove.com/blog/2003/8/20/its-so-hardcore-you-could-say-its-clr-porn.html) - Aug 20, 2003 ### [New book and blog from Ingo](https://osherove.com/blog/2003/8/20/new-book-and-blog-from-ingo.html) - Aug 13, 2003 ### [.Net Rocks with Brent Rector](https://osherove.com/blog/2003/8/13/net-rocks-with-brent-rector.html) - Aug 13, 2003 ### [Catch ex As Exception (sometimes)](https://osherove.com/blog/2003/8/13/catch-ex-as-exception-sometimes.html) --- title: "Hard disk Space Managers" url: "https://osherove.com/blog/2003/8/13/hard-disk-space-managers.md" canonical: "https://osherove.com/blog/2003/8/13/hard-disk-space-managers.html" published: "2003-08-13T15:10:00" updated: "2003-08-13T15:10:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "Oh, and John Tobler points out some very cool Hard disk space managers . What can I say - I'm a gadget freak!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hard disk Space Managers By Roy Osherove August 13, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 13, 2003; technical details may be outdated. Oh, and [John Tobler](http://weblogs.asp.net/jtobler) points out some very cool [Hard disk space managers](http://weblogs.asp.net/jtobler/posts/23984.aspx). What can I say - I'm a gadget freak! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Aug 17, 2003 ### [CodeSmart.Net](https://osherove.com/blog/2003/8/17/codesmartnet.html) - Aug 17, 2003 ### [WMI mind blower](https://osherove.com/blog/2003/8/17/wmi-mind-blower.html) - Aug 13, 2003 ### [Google Calc](https://osherove.com/blog/2003/8/13/google-calc.html) - Aug 10, 2003 ### [OurNotepad](https://osherove.com/blog/2003/8/10/ournotepad.html) --- title: "Google Calc" url: "https://osherove.com/blog/2003/8/13/google-calc.md" canonical: "https://osherove.com/blog/2003/8/13/google-calc.html" published: "2003-08-13T15:03:00" updated: "2003-08-13T15:03:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "Yeah, the Google toolbar is out and final , BUT . Did you know that you can use google as your calculator as well? Just search google for “ 4 * 5 ” :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Google Calc By Roy Osherove August 13, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 13, 2003; technical details may be outdated. Yeah, the [Google toolbar is out and final](http://weblogs.asp.net/bhouse/posts/23938.aspx), **BUT**. Did you know that you can use google [as your calculator](http://radio.weblogs.com/0117167/2003/08/12.html#a422) as well? Just search google for “**4 \* 5**” :) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Aug 17, 2003 ### [WMI mind blower](https://osherove.com/blog/2003/8/17/wmi-mind-blower.html) - Aug 13, 2003 ### [Hard disk Space Managers](https://osherove.com/blog/2003/8/13/hard-disk-space-managers.html) - Aug 10, 2003 ### [OurNotepad](https://osherove.com/blog/2003/8/10/ournotepad.html) - Jul 29, 2003 ### [Amazon light](https://osherove.com/blog/2003/7/29/amazon-light.html) --- title: ".Net Rocks with Brent Rector" url: "https://osherove.com/blog/2003/8/13/net-rocks-with-brent-rector.md" canonical: "https://osherove.com/blog/2003/8/13/net-rocks-with-brent-rector.html" published: "2003-08-13T14:49:00" updated: "2003-08-13T14:49:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Mark and Carl talk with Brent Rector about intellectual property , namely assembly and application obfuscation: techniques used, and the resultant binaries. They also talk about Remoting and get Brent's take on the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Rocks with Brent Rector By Roy Osherove August 13, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published August 13, 2003; technical details may be outdated. Mark and Carl talk with [Brent Rector](http://www.wiseowl.com/) about **intellectual property**, namely assembly and application obfuscation: techniques used, and the resultant binaries. They also talk about **Remoting** and get Brent's take on the value of Remoting. This is not the same old stuff either! The big gem in this show, we think, is Brent's 5-minute description of how **Code Access Security** works, which we immediately recognize as something very special. 62 minutes [http://www.franklins.net/dotnetrocks1.asp](http://www.franklins.net/dotnetrocks1.asp "http://www.franklins.net/dotnetrocks1.asp") _\- Carl Franklin and Mark Dunn_ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 20, 2003 ### [New book and blog from Ingo](https://osherove.com/blog/2003/8/20/new-book-and-blog-from-ingo.html) - Aug 14, 2003 ### [PDC: Show me the bits](https://osherove.com/blog/2003/8/14/pdc-show-me-the-bits.html) - Aug 13, 2003 ### [Catch ex As Exception (sometimes)](https://osherove.com/blog/2003/8/13/catch-ex-as-exception-sometimes.html) - Aug 11, 2003 ### [A new Data Access Application Block release](https://osherove.com/blog/2003/8/11/a-new-data-access-application-block-release.html) --- title: "Catch ex As Exception (sometimes)" url: "https://osherove.com/blog/2003/8/13/catch-ex-as-exception-sometimes.md" canonical: "https://osherove.com/blog/2003/8/13/catch-ex-as-exception-sometimes.html" published: "2003-08-13T04:19:00" updated: "2003-08-13T04:19:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Mattias Sjögren quickly replied to my last post about the exceptions not being caught in VB.NET : “You don't get a DivideByZeroException because you're using the floating point division operator (/) and not the integer…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Catch ex As Exception (sometimes) By Roy Osherove August 13, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published August 13, 2003; technical details may be outdated. [Mattias Sjögren](http://www.msjogren.net/) quickly replied to my [last post](http://weblogs.asp.net/rosherove/posts/23853.aspx) about the exceptions not being caught in VB.NET : _“You don't get a DivideByZeroException because you're using the floating point division operator (/) and not the integer division one (\\). Only integer division by zero throws, floating point generates NAN or infinity or something like that. “_ And [Paul Vick](http://www.panopticoncentral.net/) promised to blog about this behaviour some day. Boy, I really like this community :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 14, 2003 ### [PDC: Show me the bits](https://osherove.com/blog/2003/8/14/pdc-show-me-the-bits.html) - Aug 13, 2003 ### [.Net Rocks with Brent Rector](https://osherove.com/blog/2003/8/13/net-rocks-with-brent-rector.html) - Aug 11, 2003 ### [A new Data Access Application Block release](https://osherove.com/blog/2003/8/11/a-new-data-access-application-block-release.html) - Jul 30, 2003 ### [Visual Studio .Net tips page on MSDN](https://osherove.com/blog/2003/7/30/visual-studio-net-tips-page-on-msdn.html) --- title: "Catch ex As Exception When..." url: "https://osherove.com/blog/2003/8/12/catch-ex-as-exception-when.md" canonical: "https://osherove.com/blog/2003/8/12/catch-ex-as-exception-when.html" published: "2003-08-12T20:39:00" updated: "2003-08-12T20:39:00" tags: [".Net Original"] author: "Roy Osherove" description: "I too would like to add a cool little thingie in VB.Net after reading Rachel's post . One of the coolest exception handling features (which I could not find in C# BTW) is catching exceptions only on certain conditions.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Catch ex As Exception When... By Roy Osherove August 12, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published August 12, 2003; technical details may be outdated. I too would like to add a cool little thingie in VB.Net after reading [Rachel's post](http://weblogs.asp.net/rreese/posts/23841.aspx). One of the coolest exception handling features (which I could not find in C# BTW) is catching exceptions only on certain conditions. So I can basically write: Private Sub Button1\_Click(By Val sender As System.Object, By Val e As System.Events) Handles Button.Click Try 'my bad code here  Catch ex As Exception **When false** 'we will never get here End Try End Sub How cool is that? And does anyone know the equivalent to this in C#? **Update:** For some reason - some exceptions are never caught by my error handler. Division by zero for example. Take a look at this code: Try Dim x As Integer = CInt(Textbooks.Text) 'x is zero MsgBox(x / x) Catch ex As Exception 'we never get here! 'whaaa? Me.Text = ex.Message End Try I'm sure it's probably a setting somewhere in VS, but I can't seem to find it. :( Sometimes it's the simplest things that drive you crazy...  ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 17, 2003 ### [CodeSmart.Net](https://osherove.com/blog/2003/8/17/codesmartnet.html) - Aug 17, 2003 ### [WMI mind blower](https://osherove.com/blog/2003/8/17/wmi-mind-blower.html) - Aug 12, 2003 ### [My new favorite book](https://osherove.com/blog/2003/8/12/my-new-favorite-book.html) - Aug 12, 2003 ### [Caching in WinForms](https://osherove.com/blog/2003/8/12/caching-in-winforms.html) --- title: "My new favorite book" url: "https://osherove.com/blog/2003/8/12/my-new-favorite-book.md" canonical: "https://osherove.com/blog/2003/8/12/my-new-favorite-book.html" published: "2003-08-12T20:25:00" updated: "2003-08-12T20:25:00" tags: [".Net Original"] author: "Roy Osherove" description: "It's pretty darn late now, so before I go to sleep - this is my new favorite book: Debugging Applications for Microsoft .NET and Microsoft Windows" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My new favorite book By Roy Osherove August 12, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published August 12, 2003; technical details may be outdated. It's pretty darn late now, so before I go to sleep - this is my new favorite book: [Debugging Applications for Microsoft .NET and Microsoft Windows](https://www.amazon.com/exec/obidos/ASIN/0735615365/qid%3D1053952911/sr%3D11-1/ref%3Dsr%5F11%5F1/iserializable-20) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 17, 2003 ### [WMI mind blower](https://osherove.com/blog/2003/8/17/wmi-mind-blower.html) - Aug 12, 2003 ### [Catch ex As Exception When...](https://osherove.com/blog/2003/8/12/catch-ex-as-exception-when.html) - Aug 12, 2003 ### [Caching in WinForms](https://osherove.com/blog/2003/8/12/caching-in-winforms.html) - Aug 11, 2003 ### [Server.Transfer vs. Response.Redirect](https://osherove.com/blog/2003/8/11/servertransfer-vs-responseredirect.html) --- title: "Caching in WinForms" url: "https://osherove.com/blog/2003/8/12/caching-in-winforms.md" canonical: "https://osherove.com/blog/2003/8/12/caching-in-winforms.html" published: "2003-08-12T16:44:00" updated: "2003-08-12T16:44:00" tags: [".Net Original"] author: "Roy Osherove" description: "Just out of curiosity I decided to try out some caching experiments in winforms. I wasn’t out to do any performance counting or anything, but I was playing around with the caching application block. After messing with…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Caching in WinForms By Roy Osherove August 12, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published August 12, 2003; technical details may be outdated. Just out of curiosity I decided to try out some caching experiments in winforms.  I wasn’t out to do any performance counting or anything, but I was playing around with the caching application block. After messing with it for a while, I remembered that I had already seen a very easy implementation for caching even **before** the caching application block was released.  This caching implementation actually used the System.**Web.Caching.Cache** class (usually used in ASP.NET applications) for the caching. So, I decided to try it out. It turned out to be one of the simplest things ever. Simple steps to using the ASP.NET cache in a non-web application: - Add System.Web to your references - Get the actual cache object using private Cache m\_Cache; m\_Cache = HttpRuntime.Cache; - Now you can use all those wonderful cache features such as expirations and file dependencies in your application. One more thing: \-         You do **not** need IIS installed on the machine in order to work with the Cache object Now, here’s something funny I discovered when using the Cache object; one of the coolest features that it exposes it “sliding expiration time” and “absolute expiration time” for stuff you put in there. Basically this means that I can put my stuff in the cache, and make that stuff “expire” say, 20 minutes from now(sliding expiration). Not only that. I provide a callback function that will be called when that item actually expires so I can re-fill the cached item and thus “refresh” it.  If we’re dealing with absolute expiration time, it will only be called on a specific date and time provided by me. For example  “expire this item on 12/12/03 00:00”. Very cool. BUT – here’s a little snag I fell into: I added an item to the cache like so: m\_Cache.Add("ds",ds, null,DateTime.MaxValue,TimeSpan.FromSeconds(3),CacheItemPriority.High,new CacheItemRemovedCallback(OnItemRemove)); without getting into too much detail – I’m adding an item that will expire 3 seconds from now (sliding expiration) and want my callback function to be call when it expires. On my callback function I re-add the expired item in the same way – to expire in 3 seconds. And so on. I have a form and a button that when clicked tries to get the value of  the cached item. I put a Debug message in my callback function to know when I have an expired item. Now I run the application. I don’t click anything for 10 seconds. Then I click the button. What do you think happened? **The callback was not called until I clicked the button** Yep – that’s right. I get the callback only the first time my code tries to access the item after it has already expired. Can you see why this might be a bad thing? Suppose I have some very complicated data cached in there. And suppose it takes me 30 seconds to refresh that data.  Instead of this data being refreshed an given intervals, I am faced with the fact that the next used that tries to access this data will have to wait 30 seconds for it. This fact is also stated in [this MSDN article](http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/aspnet-cachingtechniquesbestpract.asp#aspnet-cachingtechniquesbestpract_topic4). I wish I had a more deterministic way of using this event.  Anyway – some pointers about using this **Web.Caching.Cache** (some may not agree, but there are my views): \-         If you need caching within your appdomain, and not shared in other places – this is the fastest and easiest way to go. \-         For more complicated stuff (like sharing on a larger scope, deterministic expiry times and the ability to provide your own dependency resources) look to the [Caching application block](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/CachingBlock.asp) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 12, 2003 ### [Catch ex As Exception When...](https://osherove.com/blog/2003/8/12/catch-ex-as-exception-when.html) - Aug 12, 2003 ### [My new favorite book](https://osherove.com/blog/2003/8/12/my-new-favorite-book.html) - Aug 11, 2003 ### [Server.Transfer vs. Response.Redirect](https://osherove.com/blog/2003/8/11/servertransfer-vs-responseredirect.html) - Jul 28, 2003 ### [About coding standards](https://osherove.com/blog/2003/7/28/about-coding-standards.html) --- title: "AppSight on eWeek" url: "https://osherove.com/blog/2003/8/12/appsight-on-eweek.md" canonical: "https://osherove.com/blog/2003/8/12/appsight-on-eweek.html" published: "2003-08-12T04:46:00" updated: "2003-08-12T04:46:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Our company just made eWeek . It's all about the .NET features that our main product - AppSight BlackBox will support. Less on the technical side, but still very cool stuff and I'm very proud to be a part of it." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # AppSight on eWeek By Roy Osherove August 12, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 12, 2003; technical details may be outdated. Our company [just made eWeek](http://www.eweek.com/article2/0,3959,1211341,00.asp). It's all about the .NET features that our main product - [AppSight BlackBox](http://www.identify.com/) will support. Less on the technical side, but still very cool stuff and I'm very proud to be a part of it. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 13, 2003 ### [Hard disk Space Managers](https://osherove.com/blog/2003/8/13/hard-disk-space-managers.html) - Aug 13, 2003 ### [Google Calc](https://osherove.com/blog/2003/8/13/google-calc.html) - Aug 10, 2003 ### [OurNotepad](https://osherove.com/blog/2003/8/10/ournotepad.html) - Aug 8, 2003 ### [Can I please have my keyboard and mouse talking to my Win2k3 server?](https://osherove.com/blog/2003/8/8/can-i-please-have-my-keyboard-and-mouse-talking-to-my-win2k3.html) --- title: "A new Data Access Application Block release" url: "https://osherove.com/blog/2003/8/11/a-new-data-access-application-block-release.md" canonical: "https://osherove.com/blog/2003/8/11/a-new-data-access-application-block-release.html" published: "2003-08-11T15:18:00" updated: "2003-08-11T15:18:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "“ This is a new version for the DAAB supporting a common base code which uses only ADO.NET interfaces in an abstract base class. Then simple providers sets the correct instances for each ADO.NET provider. If somebody…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A new Data Access Application Block release By Roy Osherove August 11, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published August 11, 2003; technical details may be outdated. “_This is a new version for the DAAB supporting a common base code which uses only ADO.NET interfaces in an abstract base class. Then simple providers sets the correct instances for each ADO.NET provider. If somebody wants to add a new provider NUnit test cases are provided so you can reuse them to test you provider._” \[[Diego Gonzalez](http://weblogs.asp.net/DGonzalez/posts/23592.aspx)\] Very cool! Check [it](http://www.gotdotnet.com/Community/Workspaces/workspace.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431) out. The release binaries are [here](http://www.gotdotnet.com/Community/Workspaces/viewuploads.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431). ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 13, 2003 ### [.Net Rocks with Brent Rector](https://osherove.com/blog/2003/8/13/net-rocks-with-brent-rector.html) - Aug 13, 2003 ### [Catch ex As Exception (sometimes)](https://osherove.com/blog/2003/8/13/catch-ex-as-exception-sometimes.html) - Jul 30, 2003 ### [Visual Studio .Net tips page on MSDN](https://osherove.com/blog/2003/7/30/visual-studio-net-tips-page-on-msdn.html) - Jul 29, 2003 ### [Juval Löwy on .NET Rocks, talks about C# 2.0](https://osherove.com/blog/2003/7/29/juval-l246wy-on-net-rocks-talks-about-c-20.html) --- title: "Server.Transfer vs. Response.Redirect" url: "https://osherove.com/blog/2003/8/11/servertransfer-vs-responseredirect.md" canonical: "https://osherove.com/blog/2003/8/11/servertransfer-vs-responseredirect.html" published: "2003-08-11T11:46:00" updated: "2003-08-11T11:46:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "I was recently faced with this question: What is the difference between Server.Transfer() and Response.Redirect()? I didn't really know the answer, because I'm more of a winforms kinda guy. However, my wife pointed me…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Server.Transfer vs. Response.Redirect By Roy Osherove August 11, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published August 11, 2003; technical details may be outdated. I was recently faced with this question:  _What is the difference between **Server.Transfer()** and **Response.Redirect()?**_ I didn't really know the answer, because I'm more of a winforms kinda guy. However, my wife pointed me to [this lovely article regarding exactly this question](http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=15). How cool is she? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 12, 2003 ### [My new favorite book](https://osherove.com/blog/2003/8/12/my-new-favorite-book.html) - Aug 12, 2003 ### [Caching in WinForms](https://osherove.com/blog/2003/8/12/caching-in-winforms.html) - Jul 28, 2003 ### [About coding standards](https://osherove.com/blog/2003/7/28/about-coding-standards.html) - Jul 28, 2003 ### [Nasty bug in Data Access Block Ver. 2.0](https://osherove.com/blog/2003/7/28/nasty-bug-in-data-access-block-ver-20.html) --- title: "OurNotepad" url: "https://osherove.com/blog/2003/8/10/ournotepad.md" canonical: "https://osherove.com/blog/2003/8/10/ournotepad.html" published: "2003-08-10T19:19:00" updated: "2003-08-10T19:19:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "Marc fest recently contacted me to respond to one of my past posts regarding Chris Pirillo . After that he mentioned the new project he's working on: Our Notepad.com . “ If you want to you can also mention my latest…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # OurNotepad By Roy Osherove August 10, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 10, 2003; technical details may be outdated. [Marc fest](http://www.marcfest.com/) recently contacted me to respond to one of my [past posts](http://weblogs.asp.net/rosherove/posts/7180.aspx) regarding [Chris Pirillo](http://chris.pirillo.com/). After that he mentioned the new project he's working on: [Our Notepad.com](http://www.ournotepad.com/). “_If you want to you can also mention my latest service,_ [_www.OurNotepad.com_](http://www.ournotepad.com/) _-- just launched this weekend. You'd be the first to mention it. It's designed to be the simplest collaboration tool on the Web. See_ [_http://www.ournotepad.com/help.html_](http://www.ournotepad.com/help.html) _for more.”_ it sounds cool, but I can't honestly say I'll use it for something. Right now it's still a bit to cumbersome to use. But you may think differently, or, as newsgroups posters say “YMMV” (your mileage may vary). ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Aug 13, 2003 ### [Hard disk Space Managers](https://osherove.com/blog/2003/8/13/hard-disk-space-managers.html) - Aug 13, 2003 ### [Google Calc](https://osherove.com/blog/2003/8/13/google-calc.html) - Jul 29, 2003 ### [Amazon light](https://osherove.com/blog/2003/7/29/amazon-light.html) - Jul 24, 2003 ### [Cool idea of the day](https://osherove.com/blog/2003/7/24/cool-idea-of-the-day.html) --- title: "Can I please have my keyboard and mouse talking to my Win2k3 server?" url: "https://osherove.com/blog/2003/8/8/can-i-please-have-my-keyboard-and-mouse-talking-to-my-win2k3.md" canonical: "https://osherove.com/blog/2003/8/8/can-i-please-have-my-keyboard-and-mouse-talking-to-my-win2k3.html" published: "2003-08-08T19:50:00" updated: "2003-08-08T19:50:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Well, this certainly is not what I expected. For my coming birthday, my wife bought me two cool gadgets: the Logitech Cordless MouseMan Optical mouse, and the MS Natural multimedia keyboard . Very cool. One little…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Can I please have my keyboard and mouse talking to my Win2k3 server? By Roy Osherove August 8, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 8, 2003; technical details may be outdated. Well, this certainly is **not** what I expected. For my coming birthday, my wife bought me two cool gadgets:  the Logitech [Cordless MouseMan Optical](http://www.logitech.com/index.cfm?page=products/details&CRID=3&CONTENTID=4979&countryid=19&languageid=1) mouse, and the [MS Natural multimedia keyboard](http://www.microsoft.com/hardware/keyboard/nmmk_info.asp). Very cool. One little problem, though: **their software does not bloody install on Windows Server 2003!** Now. Logitech can somehow be forgiven for their lack of support for this new system, although they should have had support for it already, but I truly don't get MS. Hey folks, this is **your** OS, and this is **your** keyboard. They should be able to work together out of the box! At least have a driver ready for download on your site for those early adopters. ugh. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 12, 2003 ### [AppSight on eWeek](https://osherove.com/blog/2003/8/12/appsight-on-eweek.html) - Aug 10, 2003 ### [OurNotepad](https://osherove.com/blog/2003/8/10/ournotepad.html) - Aug 7, 2003 ### [Short and sweet - I'm back](https://osherove.com/blog/2003/8/7/short-and-sweet-im-back.html) - Jul 30, 2003 ### [Count anything in your open Word document](https://osherove.com/blog/2003/7/30/count-anything-in-your-open-word-document.html) --- title: "Short and sweet - I'm back" url: "https://osherove.com/blog/2003/8/7/short-and-sweet-im-back.md" canonical: "https://osherove.com/blog/2003/8/7/short-and-sweet-im-back.html" published: "2003-08-07T14:55:00" updated: "2003-08-07T14:55:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Got back from Crete, Greece a couple of hours ago It was a-m-a-z-i-n-g My skin is peeling and itchy from sun burn As folks were saying, it was a much needed time away from the computer It's a real downer coming back :(…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Short and sweet - I'm back By Roy Osherove August 7, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published August 7, 2003; technical details may be outdated. - Got back from Crete, Greece a couple of hours ago - It was a-m-a-z-i-n-g - My skin is peeling and itchy from sun burn - As folks were saying, it was a much needed time away from the computer - It's a real downer coming back :( - But! I got me a new keyboard and mouse (for my coming birthday) - I have about 300 blog posts to read - I have 50 emails to answer - Life is back to normal Oh, and I start [my new job](http://www.identify.com/) on sunday. I'm totally excited :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 10, 2003 ### [OurNotepad](https://osherove.com/blog/2003/8/10/ournotepad.html) - Aug 8, 2003 ### [Can I please have my keyboard and mouse talking to my Win2k3 server?](https://osherove.com/blog/2003/8/8/can-i-please-have-my-keyboard-and-mouse-talking-to-my-win2k3.html) - Jul 30, 2003 ### [Count anything in your open Word document](https://osherove.com/blog/2003/7/30/count-anything-in-your-open-word-document.html) - Jul 30, 2003 ### [Out on vacation](https://osherove.com/blog/2003/7/30/out-on-vacation.html) --- title: "Count anything in your open Word document" url: "https://osherove.com/blog/2003/7/30/count-anything-in-your-open-word-document.md" canonical: "https://osherove.com/blog/2003/7/30/count-anything-in-your-open-word-document.html" published: "2003-07-30T18:05:00" updated: "2003-07-30T18:05:00" tags: ["Off Topic", "Tips & Tricks"] author: "Roy Osherove" description: "I'm using the Word 2003 beta, so I'm not sure if this applies to older versions. Ever wanted to know how many words, lines, paragraphs or even characters you have in your open Word document? Easy. Select…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Count anything in your open Word document By Roy Osherove July 30, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published July 30, 2003; technical details may be outdated. _I'm using the Word 2003 beta, so I'm not sure if this applies to older versions._ Ever wanted to know how many words, lines, paragraphs or even characters you have in your open Word document? Easy. Select _**View->Toolbars->Word Count**_ and you'll get a cool little toolbar to help you! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 8, 2003 ### [Can I please have my keyboard and mouse talking to my Win2k3 server?](https://osherove.com/blog/2003/8/8/can-i-please-have-my-keyboard-and-mouse-talking-to-my-win2k3.html) - Aug 7, 2003 ### [Short and sweet - I'm back](https://osherove.com/blog/2003/8/7/short-and-sweet-im-back.html) - Jul 30, 2003 ### [Out on vacation](https://osherove.com/blog/2003/7/30/out-on-vacation.html) - Jul 29, 2003 ### [As years go by](https://osherove.com/blog/2003/7/29/as-years-go-by.html) --- title: "Out on vacation" url: "https://osherove.com/blog/2003/7/30/out-on-vacation.md" canonical: "https://osherove.com/blog/2003/7/30/out-on-vacation.html" published: "2003-07-30T17:50:00" updated: "2003-07-30T17:50:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'll be on vacation in Greece, starting tomorrow(the 31st) up until august 7th. Me and the Mrs. are out for a full week of sea and sun, and I'll even make an effort of doing all this without a computer * shudder *. I'll…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Out on vacation By Roy Osherove July 30, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 30, 2003; technical details may be outdated. I'll be on vacation in Greece, starting tomorrow(the 31st) up until august 7th. Me and the Mrs. are out for a full week of sea and sun, and I'll even make an effort of doing all this without a computer \*_shudder_\*. I'll catch you all on the flip side :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Aug 7, 2003 ### [Short and sweet - I'm back](https://osherove.com/blog/2003/8/7/short-and-sweet-im-back.html) - Jul 30, 2003 ### [Count anything in your open Word document](https://osherove.com/blog/2003/7/30/count-anything-in-your-open-word-document.html) - Jul 29, 2003 ### [As years go by](https://osherove.com/blog/2003/7/29/as-years-go-by.html) - Jul 28, 2003 ### [Nice quote](https://osherove.com/blog/2003/7/28/nice-quote.html) --- title: "Visual Studio .Net tips page on MSDN" url: "https://osherove.com/blog/2003/7/30/visual-studio-net-tips-page-on-msdn.md" canonical: "https://osherove.com/blog/2003/7/30/visual-studio-net-tips-page-on-msdn.html" published: "2003-07-30T07:28:00" updated: "2003-07-30T07:28:00" tags: [".Net Quotations", "Tips & Tricks"] author: "Roy Osherove" description: "Just found this cool Visual Studio .Net tips page on MSDN, thanks to Sudhakar Sadasivuni ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Visual Studio .Net tips page on MSDN By Roy Osherove July 30, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published July 30, 2003; technical details may be outdated. Just found this cool [Visual Studio .Net  tips page](http://msdn.microsoft.com/vsdata/tips/showtips.asp?group=1&area=1&ID=1) on MSDN, thanks to [Sudhakar Sadasivuni .](http://dotnetjunkies.com/weblog/sudhakar/) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 13, 2003 ### [Catch ex As Exception (sometimes)](https://osherove.com/blog/2003/8/13/catch-ex-as-exception-sometimes.html) - Aug 11, 2003 ### [A new Data Access Application Block release](https://osherove.com/blog/2003/8/11/a-new-data-access-application-block-release.html) - Jul 29, 2003 ### [Juval Löwy on .NET Rocks, talks about C# 2.0](https://osherove.com/blog/2003/7/29/juval-l246wy-on-net-rocks-talks-about-c-20.html) - Jul 28, 2003 ### [Registration-free COM interop](https://osherove.com/blog/2003/7/28/registration-free-com-interop.html) --- title: "A directory of Israeli weblogs" url: "https://osherove.com/blog/2003/7/29/a-directory-of-israeli-weblogs.md" canonical: "https://osherove.com/blog/2003/7/29/a-directory-of-israeli-weblogs.html" published: "2003-07-29T20:55:00" updated: "2003-07-29T20:55:00" tags: ["Blogging"] author: "Roy Osherove" description: "I just discovered a directory of Israeli weblogs . I never imagined there were so much (but still so little) of them. Most of them are in hebrew, and are hands down b-o-r-i-n-g. Still, it's good to know our country is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A directory of Israeli weblogs By Roy Osherove July 29, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 29, 2003; technical details may be outdated. I just discovered [a directory of Israeli weblogs](http://ilblogs.djyaniv.com/). I never imagined there were so much (but still so little) of them. Most of them are in hebrew, and are hands down b-o-r-i-n-g. Still, it's good to know our country is slowly heading towards that “internet” thing. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Aug 23, 2003 ### [MSN Messenger upgrade blocks Trillian](https://osherove.com/blog/2003/8/23/msn-messenger-upgrade-blocks-trillian.html) - Aug 23, 2003 ### [Was that a shout out?](https://osherove.com/blog/2003/8/23/was-that-a-shout-out.html) - Jul 28, 2003 ### [What's up with BlogShares?](https://osherove.com/blog/2003/7/28/whats-up-with-blogshares.html) - Jul 23, 2003 ### [.Net Desktop contest winners announced](https://osherove.com/blog/2003/7/23/net-desktop-contest-winners-announced.html) --- title: "As years go by" url: "https://osherove.com/blog/2003/7/29/as-years-go-by.md" canonical: "https://osherove.com/blog/2003/7/29/as-years-go-by.html" published: "2003-07-29T20:21:00" updated: "2003-07-29T20:21:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Now, this is amazing: http://zonezero.com/magazine/essays/diegotime/time.html “[Starting from 1976] On June 17th, every year, the family goes through a private ritual: we photograph ourselves to stop a fleeting moment,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # As years go by By Roy Osherove July 29, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 29, 2003; technical details may be outdated. Now, this is amazing: [http://zonezero.com/magazine/essays/diegotime/time.html](http://zonezero.com/magazine/essays/diegotime/time.html) “\[Starting from 1976\] _On June 17th, every year, the family goes through a private ritual: we photograph ourselves to stop a fleeting moment, the arrow of time passing by._ “ \[via [Racheli](http://www.bitsofmagic.com/heblog/index.php?p=548&c=1)\] ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 30, 2003 ### [Count anything in your open Word document](https://osherove.com/blog/2003/7/30/count-anything-in-your-open-word-document.html) - Jul 30, 2003 ### [Out on vacation](https://osherove.com/blog/2003/7/30/out-on-vacation.html) - Jul 28, 2003 ### [Nice quote](https://osherove.com/blog/2003/7/28/nice-quote.html) - Jul 28, 2003 ### [Framework Compatibility Graphics initiative](https://osherove.com/blog/2003/7/28/framework-compatibility-graphics-initiative.html) --- title: "Juval Löwy on .NET Rocks, talks about C# 2.0" url: "https://osherove.com/blog/2003/7/29/juval-l246wy-on-net-rocks-talks-about-c-20.md" canonical: "https://osherove.com/blog/2003/7/29/juval-l246wy-on-net-rocks-talks-about-c-20.html" published: "2003-07-29T09:07:00" updated: "2003-07-29T09:07:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "“ Well, if you've been wondering what the next version of C# will bring to the table, you have to check out this interview with Juval Lowy. He got permission from Microsoft to spill the beans about the new features in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Juval Löwy on .NET Rocks, talks about C\# 2.0 By Roy Osherove July 29, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 29, 2003; technical details may be outdated. “_Well, if you've been wondering what the next version of C# will bring to the table, you have to check out this interview with Juval Lowy. He got permission from Microsoft to spill the beans about the new features in C# 2.0._ _Of the new features, Juval's favorite is Generics. Generics allow you to define data structures without committing to actual data types. This results with significant performance boost, higher quality code and faster development, because you get to reuse data processing algorithms without duplicating type-specific code_. “ \[[.NetRocks](http://www.franklins.net/dotnetrocks.asp)\] Need I say more? Go grab this show and listen to it now! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Aug 11, 2003 ### [A new Data Access Application Block release](https://osherove.com/blog/2003/8/11/a-new-data-access-application-block-release.html) - Jul 30, 2003 ### [Visual Studio .Net tips page on MSDN](https://osherove.com/blog/2003/7/30/visual-studio-net-tips-page-on-msdn.html) - Jul 28, 2003 ### [Registration-free COM interop](https://osherove.com/blog/2003/7/28/registration-free-com-interop.html) - Jul 27, 2003 ### [Moving Crystal reports from 1.0 to 1.1](https://osherove.com/blog/2003/7/27/moving-crystal-reports-from-10-to-11.html) --- title: "Amazon light" url: "https://osherove.com/blog/2003/7/29/amazon-light.md" canonical: "https://osherove.com/blog/2003/7/29/amazon-light.html" published: "2003-07-29T08:49:00" updated: "2003-07-29T08:49:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Oh goodie! Looks like my days of browsing Amazon, opening multiple pages at a time, clicking back and forward like crazy are gone, thanks to this cool site: Amazon Light which allows me to do exactly that, only from…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Amazon light By Roy Osherove July 29, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published July 29, 2003; technical details may be outdated. Oh goodie! Looks like my days of browsing Amazon, opening multiple pages at a time, clicking back and forward like crazy are gone, thanks to this cool site: [Amazon Light](http://www.kokogiak.com/amazon2/) which allows me to do exactly that, only from within one page, including search history, bookmarks and shortcuts. Most importantly, it does all this magic using nothing but Amazon's web services down below. Very cool! Thanks to [Ziv Caspi](http://radio.weblogs.com/0106548/) for the link. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Aug 13, 2003 ### [Google Calc](https://osherove.com/blog/2003/8/13/google-calc.html) - Aug 10, 2003 ### [OurNotepad](https://osherove.com/blog/2003/8/10/ournotepad.html) - Jul 24, 2003 ### [Cool idea of the day](https://osherove.com/blog/2003/7/24/cool-idea-of-the-day.html) - Jul 19, 2003 ### [Cool product of the day: Mathematica.Net](https://osherove.com/blog/2003/7/19/cool-product-of-the-day-mathematicanet.html) --- title: ".NetWeblogs coolness achieved" url: "https://osherove.com/blog/2003/7/29/netweblogs-coolness-achieved.md" canonical: "https://osherove.com/blog/2003/7/29/netweblogs-coolness-achieved.html" published: "2003-07-29T05:25:00" updated: "2003-07-29T05:25:00" tags: [".NetWeblogs Site"] author: "Roy Osherove" description: "Oh.My.God. Great job Scott!! I love it! Let's try a different skin for a while. see what happens... One thing though - I can't seem to download the spell checker - “Bandwidth limit exceeded” :(" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .NetWeblogs coolness achieved By Roy Osherove July 29, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) **Historical article** · Originally published July 29, 2003; technical details may be outdated. Oh.My.God. [Great job](http://weblogs.asp.net/sitenews/posts/21615.aspx) Scott!! I love it! Let's try a different skin for a while. see what happens... One thing though - I can't seem to download the spell checker - “Bandwidth limit exceeded” :( ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - Dec 23, 2003 ### [About the new .Netweblogs features](https://osherove.com/blog/2003/12/23/about-the-new-netweblogs-features.html) - Sep 2, 2003 ### [.NetWeblogs chosen for site of the week on ASPExperts](https://osherove.com/blog/2003/9/2/netweblogs-chosen-for-site-of-the-week-on-aspexperts.html) - May 30, 2003 ### [New Skin, New Host...](https://osherove.com/blog/2003/5/30/new-skin-new-host.html) - May 30, 2003 ### [Scott Branches](https://osherove.com/blog/2003/5/30/scott-branches.html) --- title: "Resolving DataSet Conflicts" url: "https://osherove.com/blog/2003/7/28/resolving-dataset-conflicts.md" canonical: "https://osherove.com/blog/2003/7/28/resolving-dataset-conflicts.html" published: "2003-07-28T21:01:00" updated: "2003-07-28T21:01:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "One last one before I go to sleep. Resolving DataSet Conflicts Discusses working with data in a disconnected state and provides one possible solution for correcting DataSet conflicts. [ MSDN- Visual Basic .NET ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Resolving DataSet Conflicts By Roy Osherove July 28, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published July 28, 2003; technical details may be outdated. One last one before I go to sleep. [_Resolving DataSet Conflicts_](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbdatasetconflicts.asp) _Discusses working with data in a disconnected state and provides one possible solution for correcting DataSet conflicts._ \[[MSDN- Visual Basic .NET](http://msdn.microsoft.com/vbasic/)\] ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Aug 18, 2003 ### [Coding tips and tricks by Eric Gunnerson](https://osherove.com/blog/2003/8/18/coding-tips-and-tricks-by-eric-gunnerson.html) - Aug 11, 2003 ### [Server.Transfer vs. Response.Redirect](https://osherove.com/blog/2003/8/11/servertransfer-vs-responseredirect.html) - Jul 28, 2003 ### [Broken window theory](https://osherove.com/blog/2003/7/28/broken-window-theory.html) - Jul 28, 2003 ### [Debugging in Visual Basic .NET](https://osherove.com/blog/2003/7/28/debugging-in-visual-basic-net.html) --- title: "Broken window theory" url: "https://osherove.com/blog/2003/7/28/broken-window-theory.md" canonical: "https://osherove.com/blog/2003/7/28/broken-window-theory.html" published: "2003-07-28T20:57:00" updated: "2003-07-28T20:57:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "Everyone should know about the Broken window theory . \"Researchers studying urban decay wanted to find out why some neighborhoods escape the ravages of the inner city, and others right next door—with the same…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Broken window theory By Roy Osherove July 28, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published July 28, 2003; technical details may be outdated. Everyone should know about the [**Broken window theory**](http://www.artima.com/intv/fixitP.html). "Researchers studying urban decay wanted to find out why some neighborhoods escape the ravages of the inner city, and others right next door—with the same demographics and economic makeup—would become a hell hole where the cops were scared to go in. They wanted to figure out what made the difference. The researchers did a test. They took a nice car, like a Jaguar, and parked it in the South Bronx in New York. They retreated back to a duck blind, and watched to see what would happen. They left the car parked there for something like four days, and nothing happened. It wasn't touched. So they went up and broke a little window on the side, and went back to the blind. In something like four hours, the car was turned upside down, torched, and stripped—the whole works. They did more studies and developed a "Broken Window Theory." A window gets broken at an apartment building, but no one fixes it. It's left broken. Then something else gets broken. Maybe it's an accident, maybe not, but it isn't fixed either. Graffiti starts to appear. More and more damage accumulates. Very quickly you get an exponential ramp. The whole building decays. Tenants move out. Crime moves in. And you've lost the game. It's all over. We use the broken window theory as a metaphor for managing technical debt on a project" ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Aug 11, 2003 ### [Server.Transfer vs. Response.Redirect](https://osherove.com/blog/2003/8/11/servertransfer-vs-responseredirect.html) - Jul 28, 2003 ### [Resolving DataSet Conflicts](https://osherove.com/blog/2003/7/28/resolving-dataset-conflicts.html) - Jul 28, 2003 ### [Debugging in Visual Basic .NET](https://osherove.com/blog/2003/7/28/debugging-in-visual-basic-net.html) - Jul 27, 2003 ### [Asynchronous Execution in Visual Basic .NET](https://osherove.com/blog/2003/7/27/asynchronous-execution-in-visual-basic-net.html) --- title: "Debugging in Visual Basic .NET" url: "https://osherove.com/blog/2003/7/28/debugging-in-visual-basic-net.md" canonical: "https://osherove.com/blog/2003/7/28/debugging-in-visual-basic-net.html" published: "2003-07-28T20:52:00" updated: "2003-07-28T20:52:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "If you're a VB 6.0 developer who recently moved(or is planning to move) to VB.Net, the IDE and debugger are a much stroger and meaner beast than ever before. Debugging in Visual Basic .NET is a nice intro to all the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Debugging in Visual Basic .NET By Roy Osherove July 28, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published July 28, 2003; technical details may be outdated. If you're a VB 6.0 developer who recently moved(or is planning to move) to VB.Net, the IDE and debugger are a much stroger and meaner beast than ever before. [Debugging in Visual Basic .NET](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtch_DebuggingVBNET.asp) is a nice intro to all the cool stuff you can now do to debug your application. new C# developers will also find this helpful for their debugging tasks , if they don't mind reading some VB.Net code in the process. This one goes right into my [.Net debugging resources](http://weblogs.asp.net/rosherove/story/7573.aspx) page. ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Jul 28, 2003 ### [Resolving DataSet Conflicts](https://osherove.com/blog/2003/7/28/resolving-dataset-conflicts.html) - Jul 28, 2003 ### [Broken window theory](https://osherove.com/blog/2003/7/28/broken-window-theory.html) - Jul 27, 2003 ### [Asynchronous Execution in Visual Basic .NET](https://osherove.com/blog/2003/7/27/asynchronous-execution-in-visual-basic-net.html) - Jul 22, 2003 ### [My article on MSDNAA](https://osherove.com/blog/2003/7/22/my-article-on-msdnaa.html) --- title: "About coding standards" url: "https://osherove.com/blog/2003/7/28/about-coding-standards.md" canonical: "https://osherove.com/blog/2003/7/28/about-coding-standards.html" published: "2003-07-28T20:32:00" updated: "2003-07-28T20:32:00" tags: [".Net Original"] author: "Roy Osherove" description: "\" Here is the IDesign C# Coding Standard for development guidelines and best practices.\" [ Mark Brown ] This is written by Juval Lowy , which is a sort of hero of mine. A first look shows some really deep and thoughtful…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About coding standards By Roy Osherove July 28, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 28, 2003; technical details may be outdated. "_Here is the IDesign_ [_C# Coding Standard_](http://www.idesign.net/idesign/download/IDesign%20CSharp%20Coding%20Standard.zip) _for development guidelines and best practices."_ \[[Mark Brown](http://www.dotnetjunkies.com/weblog/markbrown/posts/518.aspx)\] This is written by [Juval Lowy](http://www.componentware.net/idesign/DesktopDefault.aspx?tabindex=3&tabid=4), which is a sort of hero of mine. A first look shows some really deep and thoughtful standards in there. I'm thinking that every company should have coding standards, and these are a good start. What do I mean by "start"? I mean that most companies will probably find at least some of the stuff in there redundant for their coding tasks, so you'll need to create a skeleton of what you would actually use in your own company. When I helped implement coding standards at on eof my previous jobs, I learned some good lessons: - Make sure all the employees agree with the standards. I'm not saying that they should all like it, because language wars are always there, but they should all agree to practice them to the letter. - Consult with everyone about the document. Make a meeting, go through the standards one by one, and change /add/remove whatever you like. But make sure everyone understands that once it's final, its final. - No need to go overboard. Some things are better left alone. Also, no one will bother adhering to a 250 page document. - For the first few weeks after starting, follow the standards ,and all the team's code with 12 eyes. Sometimes people need to be reminded to do this and that, it's human. - The one who "drives" the standards should know them all by heart. No way can they be asked a question about the subject and not be able to answer quickly. - Every standard should come with examples of "bad" code and "good" code. - Have a first page in the document that states the  "reason for doing this" . Programmers are human. Humans usually resist change. Programmers are also logical. If you explain why, they will understand and agree. - Try to explain the reason behind the most important standards separately. things such as "why is it best to write comments this way and not that way" are usually good because people tend to remember and do what they think is logical. If they don't know why they are doing it this way, they won't remember to do it the right way next time. If they \*do\* understand, doing it in another way will just seem "wrong" to them , which is what you are looking for. - Some people will resist change no matter what. Deal with it. Make them adhere. there are no two ways about it. "[Broken window theory](http://www.artima.com/intv/fixitP.html)". - If you have old code that is nowhere near what the standards look like, refactor it with time. If some peace of that code needs to be worked on, make it adhere to the guidelines as much as possible. People need to learn to take responsibility of every piece of code they lay their hands on. Refactoring is a way of life, not a task. - Have a standard for C# and VB.Net and any other language you use ready in advance. The parts that overlap go in an overall document, and the others go in separate documents. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 12, 2003 ### [Caching in WinForms](https://osherove.com/blog/2003/8/12/caching-in-winforms.html) - Aug 11, 2003 ### [Server.Transfer vs. Response.Redirect](https://osherove.com/blog/2003/8/11/servertransfer-vs-responseredirect.html) - Jul 28, 2003 ### [Nasty bug in Data Access Block Ver. 2.0](https://osherove.com/blog/2003/7/28/nasty-bug-in-data-access-block-ver-20.html) - Jul 28, 2003 ### [DataReader.HasRows](https://osherove.com/blog/2003/7/28/datareaderhasrows.html) --- title: "Nice quote" url: "https://osherove.com/blog/2003/7/28/nice-quote.md" canonical: "https://osherove.com/blog/2003/7/28/nice-quote.html" published: "2003-07-28T19:39:00" updated: "2003-07-28T19:39:00" tags: ["Off Topic"] author: "Roy Osherove" description: "\"They say that money is the root of all evil. No it's not. Lack of money is the root of all evil.\" -- Gene Simmons, KISS" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice quote By Roy Osherove July 28, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 28, 2003; technical details may be outdated. _"They say that money is the root of all evil. No it's not._ _**Lack** of money is the root of all evil."_ \-- Gene Simmons, KISS ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 30, 2003 ### [Out on vacation](https://osherove.com/blog/2003/7/30/out-on-vacation.html) - Jul 29, 2003 ### [As years go by](https://osherove.com/blog/2003/7/29/as-years-go-by.html) - Jul 28, 2003 ### [Framework Compatibility Graphics initiative](https://osherove.com/blog/2003/7/28/framework-compatibility-graphics-initiative.html) - Jul 28, 2003 ### [What's up with BlogShares?](https://osherove.com/blog/2003/7/28/whats-up-with-blogshares.html) --- title: "Framework Compatibility Graphics initiative" url: "https://osherove.com/blog/2003/7/28/framework-compatibility-graphics-initiative.md" canonical: "https://osherove.com/blog/2003/7/28/framework-compatibility-graphics-initiative.html" published: "2003-07-28T19:05:00" updated: "2003-07-28T19:05:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Looks like Robert is on the right track with his Framework Compatibility Graphics initiative . I think we'll all need this in the near future. I know I'd love to go to a download site and see, by the download link, an…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Framework Compatibility Graphics initiative By Roy Osherove July 28, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 28, 2003; technical details may be outdated. Looks like Robert is on the right track with his [Framework Compatibility Graphics initiative](http://weblogs.asp.net/rmclaws/posts/10613.aspx) . I think we'll all need this in the near future. I know I'd love to go to a download site and see, by the download link, an icon telling me what framework version this application works with. Great idea! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 29, 2003 ### [As years go by](https://osherove.com/blog/2003/7/29/as-years-go-by.html) - Jul 28, 2003 ### [Nice quote](https://osherove.com/blog/2003/7/28/nice-quote.html) - Jul 28, 2003 ### [What's up with BlogShares?](https://osherove.com/blog/2003/7/28/whats-up-with-blogshares.html) - Jul 28, 2003 ### [Geekier than thou](https://osherove.com/blog/2003/7/28/geekier-than-thou.html) --- title: "Nasty bug in Data Access Block Ver. 2.0" url: "https://osherove.com/blog/2003/7/28/nasty-bug-in-data-access-block-ver-20.md" canonical: "https://osherove.com/blog/2003/7/28/nasty-bug-in-data-access-block-ver-20.html" published: "2003-07-28T18:10:00" updated: "2003-07-28T18:10:00" tags: [".Net Original"] author: "Roy Osherove" description: "Thanks to Mark Brown for discovering this bug in the Data Access Block Ver. 2.0. Short answer: Here's how to fix the data access bug: Open the SQLHelper.cs file look for the line that contains this line of code: C#:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nasty bug in Data Access Block Ver. 2.0 By Roy Osherove July 28, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 28, 2003; technical details may be outdated. Thanks to [Mark Brown](http://www.dotnetjunkies.com/weblog/markbrown/) for [discovering this bug](http://www.dotnetjunkies.com/weblog/markbrown/posts/454.aspx) in the Data Access Block Ver. 2.0. **Short answer:** Here's how to fix the data access bug: - Open the _SQLHelper.cs_ file - look for the line that contains this line of code: **C#:**  tableName += (index + 1).ToString(); **VB:**  tableName = tableName & (index + 1).ToString() - Replace it with this line of code: **C#:**  tableName= "Table" + (index + 1).ToString(); **VB:** :  tableName = "Table"  & (index + 1).ToString() - That's it. **Long answer** The bug is introduced when you try to use the _SQLHelper.FillDataSet_() method. basically the helper allows you to send in many SELECT statements, and pass in the names of the tables that the SELECTs will fill. The table names are used to create TableMappings between the table names you provide and the tables that the SELECT statements will create in the dataset. A very nifty idea, only the idea is killed right at the third table because down under, the helper loops through the table names and maps each table to a corresponding default table name with a sequential number, so if I send _"MyFirstTable","MYSecondTable","MyThirdTable"_ in the table names string array, they should be mapped to _"Table","Table1","Table2"_ respectively. sadly, what really happens is that the third table will be mapped to a table named "Table12" instead of "Table3". And it's all because of this line: **C#:**  tableName += (index + 1).ToString(); **VB:**  tableName = tableName & (index + 1).ToString() After two loops, tablename will already be "Table1", so anything you concatenate to it will just mess everything up. that's why changing it to this line will work every time: **C#:**  tableName= "Table" + (index + 1).ToString(); **VB:** :  tableName = "Table"  & (index + 1).ToString() ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Aug 11, 2003 ### [Server.Transfer vs. Response.Redirect](https://osherove.com/blog/2003/8/11/servertransfer-vs-responseredirect.html) - Jul 28, 2003 ### [About coding standards](https://osherove.com/blog/2003/7/28/about-coding-standards.html) - Jul 28, 2003 ### [DataReader.HasRows](https://osherove.com/blog/2003/7/28/datareaderhasrows.html) - Jul 28, 2003 ### [Filling typed datasets using Data Access Application Block v.2.0](https://osherove.com/blog/2003/7/28/filling-typed-datasets-using-data-access-application-block-v.html) --- title: "DataReader.HasRows" url: "https://osherove.com/blog/2003/7/28/datareaderhasrows.md" canonical: "https://osherove.com/blog/2003/7/28/datareaderhasrows.html" published: "2003-07-28T12:04:00" updated: "2003-07-28T12:04:00" tags: [".Net Original"] author: "Roy Osherove" description: "One of the annoying things in version 1.0 of the .net framework was regarding the DataReader (Ole DB or SQL) class. You had no way of knowing whether the reader you got was pointing to any data or has no rows. You had…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # DataReader.HasRows By Roy Osherove July 28, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 28, 2003; technical details may be outdated. One of the annoying things in version 1.0 of the .net framework was regarding the _DataReader_ (Ole DB or SQL) class. You had no way of knowing whether the reader you got was pointing to any data or has no rows. You had to manually try to read from it and check if nothing had been returned. Very flaky. Apparently it is not common knowledge beacause someone asked me this, but  In v1.1 this has been sorted out. Every _DataReader_ object now has a _HasRows_ property that returns a Boolean. Phew! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 28, 2003 ### [About coding standards](https://osherove.com/blog/2003/7/28/about-coding-standards.html) - Jul 28, 2003 ### [Nasty bug in Data Access Block Ver. 2.0](https://osherove.com/blog/2003/7/28/nasty-bug-in-data-access-block-ver-20.html) - Jul 28, 2003 ### [Filling typed datasets using Data Access Application Block v.2.0](https://osherove.com/blog/2003/7/28/filling-typed-datasets-using-data-access-application-block-v.html) - Jul 28, 2003 ### [Checking for NULL values](https://osherove.com/blog/2003/7/28/checking-for-null-values.html) --- title: "Filling typed datasets using Data Access Application Block v.2.0" url: "https://osherove.com/blog/2003/7/28/filling-typed-datasets-using-data-access-application-block-v.md" canonical: "https://osherove.com/blog/2003/7/28/filling-typed-datasets-using-data-access-application-block-v.html" published: "2003-07-28T11:40:00" updated: "2003-07-28T11:40:00" tags: [".Net Original"] author: "Roy Osherove" description: "The new Microsoft Data Access Application Block is out, and it contains some nice changes. One of the nicest (and simplest) is the ability to fill a dataset (that may or may not be strongly typed) using the SQLHelper…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Filling typed datasets using Data Access Application Block v.2.0 By Roy Osherove July 28, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 28, 2003; technical details may be outdated. The new _Microsoft Data Access Application Block_ is out, and it contains some nice changes. One of the nicest (and simplest) is the ability to fill a _dataset_(that may or may not be strongly typed) using the _SQLHelper_ class. Let’s say that I have created a strongly typed DataSet named ds. Also, let’s say I have 3 tables in the DB that I’d like to fill my dataset from. It’s pretty simple, actually. SqlHelper.FillDataset(Connection String ,Command Type,SELECT statement , Dataset variable ,Table mapping array) **Connection string**:      You guessed it. **Command Type**:         Can be either Text(Select statement) or StoredProcedure(name of an SP in the database).                                     CommandType.TableDirect  will not work with the .Net Sql client data provider. **Select Statement**:       You guessed it again **Dataset variable**:        the dataset to fill **Table mapping array**: this is pretty important. You need to pass in an array containing the name of the actual table you are going to fill in your dataset, otherwise the sql helper will create a new table in your dataset named “table”, “table1”.. and so on. So this is the code I wrote to fill my dataset: public ApartmentDataset GetDataset() { ApartmentDataset ds = new ApartmentDataset(); SqlHelper.FillDataset(CON\_STRING,CommandType.Text, "select \* from Apartments",ds,new string\[\]{"Apartments"}); SqlHelper.FillDataset(CON\_STRING,CommandType.Text, "select \* from Cities",ds, new string\[\]{"Cities"}); SqlHelper.FillDataset(CON\_STRING,CommandType.Text, "select \* from Statuses",ds, new string\[\]{"Statuses"}); return ds; } Kinda wordy, ain’t it? Can you see the pattern here? So I created this small helper function : private void FillDatasetTable(string tableName,DataSet ds) { SqlHelper.FillDataset( CON\_STRING, CommandType.Text, "select \* from " + tableName, ds, new string\[\]{tableName}); } So now my code for filling and returning the dataset looks and reads much better: public ApartmentDataset GetDataset() {       ApartmentDataset ds = new ApartmentDataset();       FillDatasetTable("Apartments",ds);       FillDatasetTable("Cities",ds);       FillDatasetTable("Statuses",ds);       return ds; } **Update:** This just goes to show how an outside perspective can help out. [Lior Rozner](http://weblogs.asp.net/lrozner/) just sent over a much cleaner way of filling your Dataset object, filling multiple tables in one go:  public ApartmentDataset GetDataset() { ApartmentDataset ds = new ApartmentDataset(); SqlHelper.FillDataset(CON\_STRING,CommandType.Text, "select \* from Apartments " + "select \* from Cities " + "select \* from Statuses ", ds, new string\[\]{"Apartments", "Cities", "Statuses"});  return ds; } Thanks, Lior! **Another Update:** There's a bug in the Data Access Blocks. [Here's the fix!](http://weblogs.asp.net/rosherove/posts/10614.aspx) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 28, 2003 ### [Nasty bug in Data Access Block Ver. 2.0](https://osherove.com/blog/2003/7/28/nasty-bug-in-data-access-block-ver-20.html) - Jul 28, 2003 ### [DataReader.HasRows](https://osherove.com/blog/2003/7/28/datareaderhasrows.html) - Jul 28, 2003 ### [Checking for NULL values](https://osherove.com/blog/2003/7/28/checking-for-null-values.html) - Jul 27, 2003 ### [C++ for programmers](https://osherove.com/blog/2003/7/27/c-for-programmers.html) --- title: "What's up with BlogShares?" url: "https://osherove.com/blog/2003/7/28/whats-up-with-blogshares.md" canonical: "https://osherove.com/blog/2003/7/28/whats-up-with-blogshares.html" published: "2003-07-28T08:03:00" updated: "2003-07-28T08:03:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "What's up with BlogShares ? My status has not been updated since March 13th, and I fear that this is just a symptom of a dying site. Anyone know anything about that?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What's up with BlogShares? By Roy Osherove July 28, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 28, 2003; technical details may be outdated. What's up with [BlogShares](http://www.blogshares.com/blogs.php?blog=http%3A%2F%2Fdotnetweblogs.com%2FRosherove%2F&user=1681)?  My status has not been updated since March 13th, and I fear that this is just a symptom of a dying site. Anyone know anything about that? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Aug 23, 2003 ### [Was that a shout out?](https://osherove.com/blog/2003/8/23/was-that-a-shout-out.html) - Jul 29, 2003 ### [A directory of Israeli weblogs](https://osherove.com/blog/2003/7/29/a-directory-of-israeli-weblogs.html) - Jul 23, 2003 ### [.Net Desktop contest winners announced](https://osherove.com/blog/2003/7/23/net-desktop-contest-winners-announced.html) - Jul 23, 2003 ### [Another VB.Net team member blog in the wild](https://osherove.com/blog/2003/7/23/another-vbnet-team-member-blog-in-the-wild.html) --- title: "Beta chapters of OReilly books" url: "https://osherove.com/blog/2003/7/28/beta-chapters-of-oreilly-books.md" canonical: "https://osherove.com/blog/2003/7/28/beta-chapters-of-oreilly-books.html" published: "2003-07-28T07:59:00" updated: "2003-07-28T07:59:00" tags: ["Free book chapters"] author: "Roy Osherove" description: "\" OReilly has released beta chapters from their forthcoming books including - ASP.NET , Regular Expressions & .NET Framework .\" [ S.B. Chatterjee ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Beta chapters of OReilly books By Roy Osherove July 28, 2003 In [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published July 28, 2003; technical details may be outdated. "_OReilly has released_ [_beta chapters_](http://www.oreilly.com/beta/) _from their forthcoming books including -_ [_ASP.NET_](http://www.oreilly.com/catalog/aspdotnetnut2/)_,_ [_Regular Expressions_](http://www.oreilly.com/catalog/regexppr/chapter/index.html) _&_ [_.NET Framework_](http://www.oreilly.com/catalog/dotnetfrmess3/)_."_  \[[S.B. Chatterjee](http://weblogs.asp.net/sbchatterjee/) \] ## More in Free book chapters [All posts in Free book chapters](https://osherove.com/blog/category/free-book-chapters) - Sep 2, 2003 ### [Windows Forms Programming in C# Sample Chapter](https://osherove.com/blog/2003/9/2/windows-forms-programming-in-c-sample-chapter.html) - Aug 21, 2003 ### [Free WMI book chapter](https://osherove.com/blog/2003/8/21/free-wmi-book-chapter.html) - Jun 21, 2003 ### [More Free Chapters](https://osherove.com/blog/2003/6/21/more-free-chapters.html) - Jun 18, 2003 ### [Free Full Tech Books](https://osherove.com/blog/2003/6/18/free-full-tech-books.html) --- title: "Geekier than thou" url: "https://osherove.com/blog/2003/7/28/geekier-than-thou.md" canonical: "https://osherove.com/blog/2003/7/28/geekier-than-thou.html" published: "2003-07-28T07:46:00" updated: "2003-07-28T07:46:00" tags: ["Off Topic"] author: "Roy Osherove" description: "My wife and I are going on vacation in a few days. We still have not decided where, but it will probably be either Greece or Turkey. We'll be there at least 5 nights, during which, somewhat like Joi , I will forbid…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Geekier than thou By Roy Osherove July 28, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 28, 2003; technical details may be outdated. My wife and I are going on vacation in a few days. We still have not decided where, but it will probably be either Greece or Turkey. We'll be there at least 5 nights, during which, somewhat like [Joi](http://joi.ito.com/archives/2003/07/27/a_day_of_silence_with_my_rock.html), I will forbid myself from touching a computer, although I have no pet rock or whatever. _God_ I hope I can do this. I'm suffering withdrawal pains already! My geekness runs deeper than that, though. A few days ago we were having dinner with some friends of ours, and my wife blurbs something about us going to Greece for 10 days. “_What??_”, I suddenly jumped (well, not really jump. I was totally surprised, though), “_We said seven days max!_” and then I went on and on about how I have to have a few empty days before my new work starts so that I can check my emails, be with the computer and generally get into a “computing state” before I start my new job. The silence at the table when I finished talking was pretty horrible. People were looking at me as if I was an alien from mars who had just landed an hour ago and is looking for test subjects. Is it that bad? A few days later we sat with more friends over dinner (celebrating a friend’s engagement) and somehow, it got ugly again. The subject rose that I would have a few days off between the vacation and the trip to Greece, and I made the mistake of telling one of the guys how it would be so great, that I’ll have a few days to just sit down and learn C++. That friend was also a programmer, so I was totally thrown off by his reaction. It consisted of a short pause, followed by a wondering “_why the hell I would want to ruin a perfectly good day off sitting in front of my computer_”. Stumped, I was just sitting there as my other friend sat there and began to tell the story from a few days before. Everyone had a big laugh, including myself, but on the way home I started thinking whether this was really a normal feeling. Shouldn’t a “normal” person want to go to the beach instead of sitting in front of a computer? Both of my friends who did not understand me, are both very technical, study oriented people. One is a dev team lead, and the other is a mathematician. You could say that they both know what it’s like to sit and learn your ass off. Yet they still find the time to enjoy other things, something which I find harder. Does that make me a geekier person or something? Does it not show that I have a real passion for what I do? But then, they show passion as well, so what gives? If I “give in” too much to the “other” things in life, it would make me feel not on top of my game. Like I’m losing points or something. Like every day that goes by that I’m not on that computer, learning new stuff, is a day I’m totally missing something. My dilemma is solved once I realize that I am not only defined by my programming experience, but by my family, and how we spend time together, grow together and learn together. Yes, it will continue to be a struggle of compromises, but that’s life. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 28, 2003 ### [Framework Compatibility Graphics initiative](https://osherove.com/blog/2003/7/28/framework-compatibility-graphics-initiative.html) - Jul 28, 2003 ### [What's up with BlogShares?](https://osherove.com/blog/2003/7/28/whats-up-with-blogshares.html) - Jul 27, 2003 ### [The Imposter Syndrome: Feeling Like A Fraud](https://osherove.com/blog/2003/7/27/the-imposter-syndrome-feeling-like-a-fraud.html) - Jul 27, 2003 ### [Expand the desktops gallery](https://osherove.com/blog/2003/7/27/expand-the-desktops-gallery.html) --- title: "Checking for NULL values" url: "https://osherove.com/blog/2003/7/28/checking-for-null-values.md" canonical: "https://osherove.com/blog/2003/7/28/checking-for-null-values.html" published: "2003-07-28T06:57:00" updated: "2003-07-28T06:57:00" tags: [".Net Original"] author: "Roy Osherove" description: "I was recently asked how to check if a DB value you have in your hands is NULL . For one, you can use the System.DBNull class's ' Value ' property to check this like so: if (myVar==DBNull.Value) Another way, is when you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Checking for NULL values By Roy Osherove July 28, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 28, 2003; technical details may be outdated. I was recently asked how to check if a DB value you have in your hands is _NULL_. For one, you can use the _System.DBNull_ class's '_Value_' property to check this like so: if (myVar==DBNull.Value) Another way, is when you have a _DataRow_ in your hands: if(myDataRow.IsNull(myFieldName)) if(myDataRow.IsNull(myFieldIndex)) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 28, 2003 ### [DataReader.HasRows](https://osherove.com/blog/2003/7/28/datareaderhasrows.html) - Jul 28, 2003 ### [Filling typed datasets using Data Access Application Block v.2.0](https://osherove.com/blog/2003/7/28/filling-typed-datasets-using-data-access-application-block-v.html) - Jul 27, 2003 ### [C++ for programmers](https://osherove.com/blog/2003/7/27/c-for-programmers.html) - Jul 23, 2003 ### [Scripting .Net](https://osherove.com/blog/2003/7/23/scripting-net.html) --- title: "Registration-free COM interop" url: "https://osherove.com/blog/2003/7/28/registration-free-com-interop.md" canonical: "https://osherove.com/blog/2003/7/28/registration-free-com-interop.html" published: "2003-07-28T06:51:00" updated: "2003-07-28T06:51:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Registration-free COM interop activates a component without using the Windows registry to store assembly information. Instead of registering a component on a computer during deployment, you create Win32-style manifest…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Registration-free COM interop By Roy Osherove July 28, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 28, 2003; technical details may be outdated. _[Registration-free COM interop](http://www.123aspx.com/redir.aspx?res=30741) activates a component without using the Windows registry to store assembly information. Instead of registering a component on a computer during deployment, you create Win32-style manifest files at design time that contain information about binding and activation. These manifest files, rather than registry keys,_ direct the activation of an object. \[[123aspx Newest ASP.NET Resources](http://www.123aspx.com/)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 30, 2003 ### [Visual Studio .Net tips page on MSDN](https://osherove.com/blog/2003/7/30/visual-studio-net-tips-page-on-msdn.html) - Jul 29, 2003 ### [Juval Löwy on .NET Rocks, talks about C# 2.0](https://osherove.com/blog/2003/7/29/juval-l246wy-on-net-rocks-talks-about-c-20.html) - Jul 27, 2003 ### [Moving Crystal reports from 1.0 to 1.1](https://osherove.com/blog/2003/7/27/moving-crystal-reports-from-10-to-11.html) - Jul 27, 2003 ### [Using XPath to find objects in your object model](https://osherove.com/blog/2003/7/27/using-xpath-to-find-objects-in-your-object-model.html) --- title: "Asynchronous Execution in Visual Basic .NET" url: "https://osherove.com/blog/2003/7/27/asynchronous-execution-in-visual-basic-net.md" canonical: "https://osherove.com/blog/2003/7/27/asynchronous-execution-in-visual-basic-net.html" published: "2003-07-27T20:10:00" updated: "2003-07-27T20:10:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "Nice MSDN article: Asynchronous Execution in Visual Basic .NET besides the obvious \"How can my secondary thread talk to the GUI without hanging the application\", there is a wide discussion on threads, ProcessThread,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Asynchronous Execution in Visual Basic .NET By Roy Osherove July 27, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published July 27, 2003; technical details may be outdated. Nice MSDN article: [Asynchronous Execution in Visual Basic .NET](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbasync.asp) besides the obvious "How can my secondary  thread talk to the GUI without hanging the application", there is a wide discussion on threads, ProcessThread, ThreadPool, threads and delegates, and much more. Good stuff. ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Jul 28, 2003 ### [Broken window theory](https://osherove.com/blog/2003/7/28/broken-window-theory.html) - Jul 28, 2003 ### [Debugging in Visual Basic .NET](https://osherove.com/blog/2003/7/28/debugging-in-visual-basic-net.html) - Jul 22, 2003 ### [My article on MSDNAA](https://osherove.com/blog/2003/7/22/my-article-on-msdnaa.html) - Jul 19, 2003 ### [Log4net How-To](https://osherove.com/blog/2003/7/19/log4net-how-to.html) --- title: "The Imposter Syndrome: Feeling Like A Fraud" url: "https://osherove.com/blog/2003/7/27/the-imposter-syndrome-feeling-like-a-fraud.md" canonical: "https://osherove.com/blog/2003/7/27/the-imposter-syndrome-feeling-like-a-fraud.html" published: "2003-07-27T18:47:00" updated: "2003-07-27T18:47:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I can't say these words any better: \"My shameful secret is out: I cannot write. I have been sitting for two hours now, my pen idling over my page. My mind is barren of fresh ideas, my thoughts are cranky and resistant.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Imposter Syndrome: Feeling Like A Fraud By Roy Osherove July 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 27, 2003; technical details may be outdated. I can't say these words any better: _"My shameful secret is out: I cannot write. I have been sitting for two hours now, my pen idling over my page. My mind is barren of fresh ideas, my thoughts are cranky and resistant. I have been calling to the winds for inspiration but it hasn’t come. It’s almost noon and my writing boat hasn’t even left the shore._ _A secret voice hisses in my ear: “Call yourself a writer? Ha, you have nothing to say, everything you want to say has been said before. You got assigned this column because you smart-talked your way into it, but now you’re caught. Your time’s up, you fraud....”_ _"...Research into the “**imposter syndrome**” first began in 1978 by two psychotherapists Pauline Clance and Suzanne Imes who studied a group of successful, high-achieving women. They found that these women had high levels of self-doubt and an inability to internalise their success. They believed they were “fooling” other people, that they got where they did because of contacts or luck — even when a reality check proved that the exact opposite was true. External proofs of excellence — academic degrees, awards, promotions — were routinely dismissed. As researcher Dr Valerie Young put it: “Rather than offering assurance, each new achievement and subsequent challenge only serves to intensify the ever present fear of being...found out.”_ \[[The Imposter Syndrome: Feeling Like A Fraud](http://fecolumnists.expressindia.com/full_column.php?content_id=32033)\] **(if you totally get what this is saying, you should read the whole article.)** I bet many of you have felt like this, god knows I have You know what? it's **normal**. this article changed my point of view so much, that I couldn't help but share it. So although it may seem off topic, it really isn't.  ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 28, 2003 ### [What's up with BlogShares?](https://osherove.com/blog/2003/7/28/whats-up-with-blogshares.html) - Jul 28, 2003 ### [Geekier than thou](https://osherove.com/blog/2003/7/28/geekier-than-thou.html) - Jul 27, 2003 ### [Expand the desktops gallery](https://osherove.com/blog/2003/7/27/expand-the-desktops-gallery.html) - Jul 27, 2003 ### [MSDN VB blog section](https://osherove.com/blog/2003/7/27/msdn-vb-blog-section.html) --- title: "Moving Crystal reports from 1.0 to 1.1" url: "https://osherove.com/blog/2003/7/27/moving-crystal-reports-from-10-to-11.md" canonical: "https://osherove.com/blog/2003/7/27/moving-crystal-reports-from-10-to-11.html" published: "2003-07-27T17:48:00" updated: "2003-07-27T17:48:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Peter Van Ooijen of .NetJunkies provides some great hard earned tips for moving Crystal Reports from .Net ver. 1.0 to ver. 1.1. Thanks Peter. Great tips!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Moving Crystal reports from 1.0 to 1.1 By Roy Osherove July 27, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 27, 2003; technical details may be outdated. [Peter Van  Ooijen](http://dotnetjunkies.com/WebLog/petergekko) of .NetJunkies provides some [great hard earned tips](http://dotnetjunkies.com/WebLog/petergekko/posts/535.aspx) for moving Crystal Reports from .Net ver. 1.0 to ver. 1.1. Thanks Peter. Great tips! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 29, 2003 ### [Juval Löwy on .NET Rocks, talks about C# 2.0](https://osherove.com/blog/2003/7/29/juval-l246wy-on-net-rocks-talks-about-c-20.html) - Jul 28, 2003 ### [Registration-free COM interop](https://osherove.com/blog/2003/7/28/registration-free-com-interop.html) - Jul 27, 2003 ### [Using XPath to find objects in your object model](https://osherove.com/blog/2003/7/27/using-xpath-to-find-objects-in-your-object-model.html) - Jul 27, 2003 ### [More on Modifying IL at runtime](https://osherove.com/blog/2003/7/27/more-on-modifying-il-at-runtime.html) --- title: "Using XPath to find objects in your object model" url: "https://osherove.com/blog/2003/7/27/using-xpath-to-find-objects-in-your-object-model.md" canonical: "https://osherove.com/blog/2003/7/27/using-xpath-to-find-objects-in-your-object-model.html" published: "2003-07-27T09:07:00" updated: "2003-07-27T09:07:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Sean Gerety points to an MSDN article on how to query over object models using ObjectXPathNavigator . very interesting. I'll just point out to this fine article by Dino Esposito, regarding implementation of the exact…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Using XPath to find objects in your object model By Roy Osherove July 27, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 27, 2003; technical details may be outdated. [Sean Gerety points](http://dotnetjunkies.com/WebLog/metablog/posts/516.aspx) to an MSDN article on how to [query over object models using ObjectXPathNavigator](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnexxml/html/xml03172003.asp). very interesting. I'll just point out to this fine article by Dino Esposito, regarding implementation of the exact same thing, only from a different angle : ["Implementing XmlReader Classes for Non-XML Data Structures and Formats"](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/custxmlread.asp) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 28, 2003 ### [Registration-free COM interop](https://osherove.com/blog/2003/7/28/registration-free-com-interop.html) - Jul 27, 2003 ### [Moving Crystal reports from 1.0 to 1.1](https://osherove.com/blog/2003/7/27/moving-crystal-reports-from-10-to-11.html) - Jul 27, 2003 ### [More on Modifying IL at runtime](https://osherove.com/blog/2003/7/27/more-on-modifying-il-at-runtime.html) - Jul 24, 2003 ### [Rewrite MSIL Code on the Fly](https://osherove.com/blog/2003/7/24/rewrite-msil-code-on-the-fly.html) --- title: "More on Modifying IL at runtime" url: "https://osherove.com/blog/2003/7/27/more-on-modifying-il-at-runtime.md" canonical: "https://osherove.com/blog/2003/7/27/more-on-modifying-il-at-runtime.html" published: "2003-07-27T08:17:00" updated: "2003-07-27T08:17:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "In the comments for my earlier post about IL modification, Dumky points to 3 articles on his site: Part 1 , Part 2 and Part 3 . Definately worth the read if you have any interest in the subject. Also subscribed to his…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More on Modifying IL at runtime By Roy Osherove July 27, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 27, 2003; technical details may be outdated. _In the comments for my_ [_earlier post_](http://www.furrygoat.com/archives/000522.html) _about IL modification,_ [_Dumky_](http://blog.monstuff.com/) _points to 3 articles on his site:_ [_Part 1_](http://blog.monstuff.com/archives/000058.html)_,_ [_Part 2_](http://blog.monstuff.com/archives/000059.html) _and_ [_Part 3_](http://blog.monstuff.com/archives/000060.html)_._ _Definately worth the read if you have any interest in the subject. Also_ [_subscribed_](http://www.furrygoat.com/Misc/BlogRoll.aspx) _to his_ [_RSS feed_](http://blog.monstuff.com/index.rdf)_._ \[[The Furrygoat Experience](http://www.furrygoat.com/)\] Oh yeah. Coolness encapsulated! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 27, 2003 ### [Moving Crystal reports from 1.0 to 1.1](https://osherove.com/blog/2003/7/27/moving-crystal-reports-from-10-to-11.html) - Jul 27, 2003 ### [Using XPath to find objects in your object model](https://osherove.com/blog/2003/7/27/using-xpath-to-find-objects-in-your-object-model.html) - Jul 24, 2003 ### [Rewrite MSIL Code on the Fly](https://osherove.com/blog/2003/7/24/rewrite-msil-code-on-the-fly.html) - Jul 22, 2003 ### [Israel .NET Software Architects User Group Meeting - July 2003](https://osherove.com/blog/2003/7/22/israel-net-software-architects-user-group-meeting-july-2003.html) --- title: "Expand the desktops gallery" url: "https://osherove.com/blog/2003/7/27/expand-the-desktops-gallery.md" canonical: "https://osherove.com/blog/2003/7/27/expand-the-desktops-gallery.html" published: "2003-07-27T06:34:00" updated: "2003-07-27T06:34:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Hey, now that the .Net Desktops contest is over, you can now continue to submit your desktop to the . Net gallery ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Expand the desktops gallery By Roy Osherove July 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 27, 2003; technical details may be outdated. Hey, now that the .Net Desktops contest is over, you can now [continue to submit](http://weblogs.asp.net/rosherove/story/8523.aspx) your desktop to the .[Net gallery](http://pnavy.com/royo/desktops). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 28, 2003 ### [Geekier than thou](https://osherove.com/blog/2003/7/28/geekier-than-thou.html) - Jul 27, 2003 ### [The Imposter Syndrome: Feeling Like A Fraud](https://osherove.com/blog/2003/7/27/the-imposter-syndrome-feeling-like-a-fraud.html) - Jul 27, 2003 ### [MSDN VB blog section](https://osherove.com/blog/2003/7/27/msdn-vb-blog-section.html) - Jul 23, 2003 ### [Faster typing achieved slowly](https://osherove.com/blog/2003/7/23/faster-typing-achieved-slowly.html) --- title: "C++ for programmers" url: "https://osherove.com/blog/2003/7/27/c-for-programmers.md" canonical: "https://osherove.com/blog/2003/7/27/c-for-programmers.html" published: "2003-07-27T06:20:00" updated: "2003-07-27T06:20:00" tags: [".Net Original"] author: "Roy Osherove" description: "The past week has been quite interesting. As part of my new job I’m supposed to learn C++. When I heard that someone is actually gonna make me learn that language I was totally excited. I’ve been trying to learn C++ on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # C++ for programmers By Roy Osherove July 27, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 27, 2003; technical details may be outdated. The past week has been quite interesting. As part of my new job I’m supposed to learn C++. When I heard that someone is actually gonna make me learn that language I was totally excited. I’ve been trying to learn C++ on my own for quite a while now, but have never been able to come to terms with all the language’s features on my own. It’s simply one of those things that are very hard to learn without someone with real-life experience in that language helping you out on the sidelines. The fact that you’re doing it without it being your duty, but only as a side note, is even harder, since discipline is all up to you. Enter my savior. One of the most important C++ learning discoveries I’ve made was to find one of the best books I have ever read that tried to teach me this language: [Thinking in C++, by Bruce Eckel](http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html). Not only is this one of the best C++ books around for beginners in C++(and I’ve read many…), it is also available totally free for download, in two volumes. You can also [buy the printed version on Amazon](https://www.amazon.com/exec/obidos/ASIN/0139798099/ref=ase_bruceeckelA/iserializable-20). I won’t do a full review here, as I’m not yet fully done with the book yet, but: If you are already a programmer and all you want to do is learn C++, this is the book for you. It actually does what the cover promises: it makes you **think** in C++, so once you hit something you don’t know, you’re likely to solve it or understand it because this book also teaches you all the “why”s, not just the “how”s. Since this is all about .Net, I’ve decided to put Visual Studio .Net to the test. For each program I wrote and compiled on VS 6, I created a solution in VS.Net 2003 and did exactly the same program, compiled it and ran it. I can say this: **With Vs.net around, why is anyone still using VS6?** Since C++.net allows you to create totally CLR free C++ programs, there’s no reason you shouldn’t import most of your current C++ workspaces and start using Vs.net right away. You get great benefits: \-         A much better IDE, including better Intellisense, collapsible code, tool tips and all the other productivity enhancements in Vs.Net. \-         The world’s best debugger. You know it. \-         You can even do straight out C programming in Vs.net, (All C++ compilers support this) o       Actually, my wife is currently writing her homework for the university(a course in the C language) in Vs.Net Other books people tell me are a “must read”: [Effective C++](https://www.amazon.com/exec/obidos/ASIN/0201924889/qid=1059295555/sr=2-1/ref=sr_2_1/iserializable-20) [More effective C++](https://www.amazon.com/exec/obidos/ASIN/020163371X/qid=1059295555/sr=2-2/ref=sr_2_2/iserializable-20) [Effective STL](https://www.amazon.com/exec/obidos/tg/detail/-/0201749629/qid=1059295607/sr=1-1/ref=sr_1_1/002-0888422-1902418?v=glance&s=books) **Update:** [SBC](http://weblogs.asp.net/sbchatterjee) recommends more books: [Modern C++ Design: Generic Programming and Design Patterns Applied](https://www.amazon.com/exec/obidos/ASIN/0201704315/iserializable-20) [Advanced C++ Programming Styles and Idioms](https://www.amazon.com/exec/obidos/ASIN/0201548550/iserializable-20) and Dana says that it's not always feasible to do a full workspace converstion. I do wonder what problems you encountered. Anyway, here's a link to an MSDN article explaining the [importing issues between VS6 and VS.Net](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_vc_porting_home.asp) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 28, 2003 ### [Filling typed datasets using Data Access Application Block v.2.0](https://osherove.com/blog/2003/7/28/filling-typed-datasets-using-data-access-application-block-v.html) - Jul 28, 2003 ### [Checking for NULL values](https://osherove.com/blog/2003/7/28/checking-for-null-values.html) - Jul 23, 2003 ### [Scripting .Net](https://osherove.com/blog/2003/7/23/scripting-net.html) - Jul 23, 2003 ### [Skill Evaluation](https://osherove.com/blog/2003/7/23/skill-evaluation.html) --- title: "MSDN VB blog section" url: "https://osherove.com/blog/2003/7/27/msdn-vb-blog-section.md" canonical: "https://osherove.com/blog/2003/7/27/msdn-vb-blog-section.html" published: "2003-07-27T05:18:00" updated: "2003-07-27T05:18:00" tags: ["Off Topic"] author: "Roy Osherove" description: "\" Duncan points out the new blogs section he's setup and what do you know...there I am! :) Thanks, Duncan! \" [ Erik Porter ] Wow. I'm there too! Totally flattered :) Thanks!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSDN VB blog section By Roy Osherove July 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 27, 2003; technical details may be outdated. _" [Duncan points out](http://weblogs.asp.net/duncanma/posts/10556.aspx) the new [blogs section](http://msdn.microsoft.com/vbasic/support/community/blogs/) he's setup and what do you know...there I am!  :)  Thanks, Duncan! " _\[[Erik Porter](http://weblogs.asp.net/eporter/)\] Wow. I'm there too! Totally flattered :) Thanks! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 27, 2003 ### [The Imposter Syndrome: Feeling Like A Fraud](https://osherove.com/blog/2003/7/27/the-imposter-syndrome-feeling-like-a-fraud.html) - Jul 27, 2003 ### [Expand the desktops gallery](https://osherove.com/blog/2003/7/27/expand-the-desktops-gallery.html) - Jul 23, 2003 ### [Faster typing achieved slowly](https://osherove.com/blog/2003/7/23/faster-typing-achieved-slowly.html) - Jul 22, 2003 ### [Do what you love](https://osherove.com/blog/2003/7/22/do-what-you-love.html) --- title: "Rewrite MSIL Code on the Fly" url: "https://osherove.com/blog/2003/7/24/rewrite-msil-code-on-the-fly.md" canonical: "https://osherove.com/blog/2003/7/24/rewrite-msil-code-on-the-fly.html" published: "2003-07-24T13:48:00" updated: "2003-07-24T13:48:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "\"Lately i've been spending my extra cycles on understanding the deep, dark secrets of the CLR . Between using cordbg as my primary debugger instead of Visual Studio , and writing a mini-profiler w/ the Allocation…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Rewrite MSIL Code on the Fly By Roy Osherove July 24, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 24, 2003; technical details may be outdated. _"Lately i've been spending my extra cycles on understanding the deep, dark secrets of the_ [_CLR_](http://www.gotdotnet.com/team/clr/about_clr.aspx)_. Between using_ [_cordbg_](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptutorials/html/appendix_b__runtime_debugger_cordbg.asp) _as my primary debugger instead of_ [_Visual Studio_](http://www.microsoft.com/vstudio)_, and writing a mini-profiler w/ the Allocation Profiler API's, my head's just been swimming along in_ [_metadata_](http://msdn.microsoft.com/msdnmag/issues/1000/metadata/) _land._ _Then a brillant article that's in the upcoming_ [_September MSDN magazine_](http://msdn.microsoft.com/msdnmag/issues/03/09/default.aspx) _by_ [_Aleksandr Mikunov_](http://www.codeproject.com/script/profile/whos_who.asp?id=31976) _passed by me. Titled "Rewrite MSIL Code on the Fly with the .NET Framework Profiling API", it dives into the murky depths of code injection. There's more information from Alex on the subject in a companion article up on_ [_The Code Project_](http://www.codeproject.com/dotnet/model_constraints_in_net2.asp)_. Highly recommended reading."_ \[[The Furrygoat Experience](http://www.furrygoat.com/archives/000522.html)\] Hey, no fair! The MSDN article isn't online yet :( ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 27, 2003 ### [Using XPath to find objects in your object model](https://osherove.com/blog/2003/7/27/using-xpath-to-find-objects-in-your-object-model.html) - Jul 27, 2003 ### [More on Modifying IL at runtime](https://osherove.com/blog/2003/7/27/more-on-modifying-il-at-runtime.html) - Jul 22, 2003 ### [Israel .NET Software Architects User Group Meeting - July 2003](https://osherove.com/blog/2003/7/22/israel-net-software-architects-user-group-meeting-july-2003.html) - Jul 20, 2003 ### [More active desktop](https://osherove.com/blog/2003/7/20/more-active-desktop.html) --- title: "Cool idea of the day" url: "https://osherove.com/blog/2003/7/24/cool-idea-of-the-day.md" canonical: "https://osherove.com/blog/2003/7/24/cool-idea-of-the-day.html" published: "2003-07-24T03:39:00" updated: "2003-07-24T03:39:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Andres Aguiar sends word that Joel on Software sends word about Mailinator . Need a disposable email address so you can sign up for some web site, quick? You've already got one, at Paul Tyma's clever Mailinator . Just…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool idea of the day By Roy Osherove July 24, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published July 24, 2003; technical details may be outdated.  [Andres Aguiar](http://weblogs.asp.net/aaguiar/) sends word that  [Joel on Software](http://www.joelonsoftware.com/) sends word about [Mailinator](http://www.mailinator.com/). _Need a disposable email address so you can sign up for some web site, quick? You've already got one, at Paul Tyma's clever_ [_Mailinator_](http://www.mailinator.com/)_. Just send an email to any address @mailinator.com. Your email address already exists. Get your email sent here, THEN come check mailinator. Your mail will be waiting. More proof that great UI design is done by taking away, not adding things._ _\[via_ [_Joel on Software_](http://www.joelonsoftware.com/)_\]_ ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Aug 10, 2003 ### [OurNotepad](https://osherove.com/blog/2003/8/10/ournotepad.html) - Jul 29, 2003 ### [Amazon light](https://osherove.com/blog/2003/7/29/amazon-light.html) - Jul 19, 2003 ### [Cool product of the day: Mathematica.Net](https://osherove.com/blog/2003/7/19/cool-product-of-the-day-mathematicanet.html) - Jul 18, 2003 ### [Yet another new tabbed browser? This one has some new features](https://osherove.com/blog/2003/7/18/yet-another-new-tabbed-browser-this-one-has-some-new-feature.html) --- title: "Faster typing achieved slowly" url: "https://osherove.com/blog/2003/7/23/faster-typing-achieved-slowly.md" canonical: "https://osherove.com/blog/2003/7/23/faster-typing-achieved-slowly.html" published: "2003-07-23T18:07:00" updated: "2003-07-23T18:07:00" tags: ["Off Topic"] author: "Roy Osherove" description: "My touch typing abilities have been improving for the past few days. The hardest part seems to be typing out actual code. typing all those exclamation points and semicolons is pretty rough to place your fingers on, but…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Faster typing achieved slowly By Roy Osherove July 23, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 23, 2003; technical details may be outdated. My touch typing abilities have been improving for the past few days. The hardest part seems to be typing out actual code. typing all those exclamation points and semicolons is pretty rough to place your fingers on, but slowly, I get it to go faster and faster. Somtimes I'll catch myself typing out like in the olds days- using 4 fingers and two eyes, but I have to say that I really like the experience of typing something out and keeping my eyes on the screen at the same time, watching the text being written in real time. I even tried a friend's keyboard, [an ergonomical one by Microsoft](https://www.amazon.com/exec/obidos/ASIN/B00006D2L3/qid=1058994121/sr=8-1/ref=sr_8_1/iserializable-20). The difference is amazing. It's much more easy to touch type on that kind of keyboard than on a regular one. Conversely, it is much harder to type on it using my old typing method. everything is very different and thus everything is much slower. My eyes and fingers kept looking for keys in a specific place. Once I "let go" and let my fingers roam the keyboards without my eyes "helping", everything was much simpler. The keyboard is designed to make your fingers "slip" in to their right place. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 27, 2003 ### [Expand the desktops gallery](https://osherove.com/blog/2003/7/27/expand-the-desktops-gallery.html) - Jul 27, 2003 ### [MSDN VB blog section](https://osherove.com/blog/2003/7/27/msdn-vb-blog-section.html) - Jul 22, 2003 ### [Do what you love](https://osherove.com/blog/2003/7/22/do-what-you-love.html) - Jul 18, 2003 ### [Mr. Bunny](https://osherove.com/blog/2003/7/18/mr-bunny.html) --- title: "Scripting .Net" url: "https://osherove.com/blog/2003/7/23/scripting-net.md" canonical: "https://osherove.com/blog/2003/7/23/scripting-net.html" published: "2003-07-23T17:04:00" updated: "2003-07-23T17:04:00" tags: [".Net Original"] author: "Roy Osherove" description: "Chris Sells points to this article about implemeting scripting in .Net . Very interesting stuff. In one of my past jobs, I've implemented a full blown exstensible VB6 application, which used the COM Scripting engine…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scripting .Net By Roy Osherove July 23, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 23, 2003; technical details may be outdated. [Chris Sells](http://www.sellsbrothers.com/) points to [this article about implemeting scripting in .Net](http://msdn.microsoft.com/msdnmag/issues/02/08/VisualStudioforApplications/default.aspx). Very interesting stuff. In one of my past jobs, I've implemented a full blown exstensible VB6 application, which used the COM Scripting engine provided by Microsoft. One of the best things about it was that it allowed me to expose the full object model of my application to outside scripts. I could even expose events of my objects and have them call scripting procedures on the outside. It was pure bliss to see it in action, and was a great help when it came time to add minor (and major) tweaks at the client's side. Exposing your object including its events to scripting in VB6 was a matter of 3 lines of code. Very easy. I don't see it being that easy with .Net.  Not today, anyhow. [Alintex came up with their scripting .Net support](http://www.alintex.com/). so this is something that I'll have to check out, but what's realy missing is great \*free\* support for this kind of easy scripting. It should not be as complicated as depicted in the article above. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 28, 2003 ### [Checking for NULL values](https://osherove.com/blog/2003/7/28/checking-for-null-values.html) - Jul 27, 2003 ### [C++ for programmers](https://osherove.com/blog/2003/7/27/c-for-programmers.html) - Jul 23, 2003 ### [Skill Evaluation](https://osherove.com/blog/2003/7/23/skill-evaluation.html) - Jul 21, 2003 ### [Kit George on BitVector32 bug](https://osherove.com/blog/2003/7/21/kit-george-on-bitvector32-bug.html) --- title: ".Net Desktop contest winners announced" url: "https://osherove.com/blog/2003/7/23/net-desktop-contest-winners-announced.md" canonical: "https://osherove.com/blog/2003/7/23/net-desktop-contest-winners-announced.html" published: "2003-07-23T13:54:00" updated: "2003-07-23T13:54:00" tags: ["Blogging"] author: "Roy Osherove" description: "Ok. The .Net desktops contest is over and we have our winners! You can check out the statistics at the desktops site . 1st Place : Tony Pino (no real surprise there...) Tony gets the book Applied XML Programming for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Desktop contest winners announced By Roy Osherove July 23, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 23, 2003; technical details may be outdated. Ok. The [.Net desktops contest](http://pnavy.com/royo/desktops) is over and we have our winners! You can check out the statistics at the [desktops site](http://pnavy.com/royo/desktops). **1st Place**: [Tony Pino](http://pnavy.com/royo/desktops/TonyPino) (no real surprise there...) _Tony gets the book_ [_Applied XML Programming for Microsoft .NET_](https://www.amazon.com/exec/obidos/ASIN/0735618011/qid=1058291340/sr=8-1/ref=sr_8_1/iserializable-20) _courtesy of_ [_Patrick Steele_](http://weblogs.asp.net/psteele) **2nd Place**: [Rob Chartier](http://pnavy.com/royo/desktops/RobCartier) _Rob gets a 30$ coupon at the Microsoft store, courtesy of_ [_Robert Scoble_](http://scoble.weblogs.com/) **3rd place**: [Addy Santo](http://pnavy.com/royo/desktops/Addys) _Addy gets the book:_ [_MCAD/MCSD Training Guide (70-310): Developing XML Web Services and Server Components with Visual Basic .NET and the .NET Framework_](https://www.amazon.com/exec/obidos/ASIN/0789728206/qid=1058219311/sr=8-2/ref=sr_8_2/iserializable-20) _,courtesy of_ [_Mike Gundelroy_](http://www.larkware.com/) Congratulations to all of you! **Winners**: Contact me for details on how to get your prizes :) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 29, 2003 ### [A directory of Israeli weblogs](https://osherove.com/blog/2003/7/29/a-directory-of-israeli-weblogs.html) - Jul 28, 2003 ### [What's up with BlogShares?](https://osherove.com/blog/2003/7/28/whats-up-with-blogshares.html) - Jul 23, 2003 ### [Another VB.Net team member blog in the wild](https://osherove.com/blog/2003/7/23/another-vbnet-team-member-blog-in-the-wild.html) - Jul 18, 2003 ### [A chat with scoble](https://osherove.com/blog/2003/7/18/a-chat-with-scoble.html) --- title: "Skill Evaluation" url: "https://osherove.com/blog/2003/7/23/skill-evaluation.md" canonical: "https://osherove.com/blog/2003/7/23/skill-evaluation.html" published: "2003-07-23T11:04:00" updated: "2003-07-23T11:04:00" tags: [".Net Original"] author: "Roy Osherove" description: "I was listening to the .Net Rocks show a few days ago, and heard a very interesting idea: Mark and Carl offered their services as \"Skills evaluators\". Basically if you're a company that wants to hire someone as a .Net…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Skill Evaluation By Roy Osherove July 23, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 23, 2003; technical details may be outdated. I was listening to the [.Net Rocks](http://www.franklins.net/dotnetrocks.asp) show a few days ago, and heard a very interesting idea: Mark and Carl offered their services as "Skills evaluators". Basically if you're a company that wants to hire someone as a .Net developer, yet you have no one qualified enough in your company that can truly evaluate just how technically able that person really is, you send that person over to them for evaluation, and they tell you exactly how good this person really is. Very nice idea, and pretty simple too. So, **I'll offer my services here**. If anyone based in Israel is looking to hire a .Net developer, and have no way to check this person for what their really worth, contact me, I'll be happy to help evaluate this person over a phone interview. I'll even throw in a special: first 5 customers get a **free** interview. How's that? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 27, 2003 ### [C++ for programmers](https://osherove.com/blog/2003/7/27/c-for-programmers.html) - Jul 23, 2003 ### [Scripting .Net](https://osherove.com/blog/2003/7/23/scripting-net.html) - Jul 21, 2003 ### [Kit George on BitVector32 bug](https://osherove.com/blog/2003/7/21/kit-george-on-bitvector32-bug.html) - Jul 17, 2003 ### [Your favorite add-in?](https://osherove.com/blog/2003/7/17/your-favorite-add-in.html) --- title: "Another VB.Net team member blog in the wild" url: "https://osherove.com/blog/2003/7/23/another-vbnet-team-member-blog-in-the-wild.md" canonical: "https://osherove.com/blog/2003/7/23/another-vbnet-team-member-blog-in-the-wild.html" published: "2003-07-23T03:16:00" updated: "2003-07-23T03:16:00" tags: ["Blogging"] author: "Roy Osherove" description: "Very cool! Another member of the VB.Net team has started a blog: Cameron Beccario" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another VB.Net team member blog in the wild By Roy Osherove July 23, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 23, 2003; technical details may be outdated. Very cool! Another member of the VB.Net team has started a blog: [Cameron Beccario](http://blogs.gotdotnet.com/cambecc/) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 28, 2003 ### [What's up with BlogShares?](https://osherove.com/blog/2003/7/28/whats-up-with-blogshares.html) - Jul 23, 2003 ### [.Net Desktop contest winners announced](https://osherove.com/blog/2003/7/23/net-desktop-contest-winners-announced.html) - Jul 18, 2003 ### [A chat with scoble](https://osherove.com/blog/2003/7/18/a-chat-with-scoble.html) - Jul 18, 2003 ### [Weblogs@DotNetJunkies](https://osherove.com/blog/2003/7/18/weblogsdotnetjunkies.html) --- title: "Do what you love" url: "https://osherove.com/blog/2003/7/22/do-what-you-love.md" canonical: "https://osherove.com/blog/2003/7/22/do-what-you-love.html" published: "2003-07-22T16:16:00" updated: "2003-07-22T16:16:00" tags: ["Off Topic"] author: "Roy Osherove" description: "\" In 1960, a researcher interviewed 1500 business-school students and classified them in two categories: those who were in it for the money (1245 of them ) and those who were going to use the degree to do something they…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Do what you love By Roy Osherove July 22, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 22, 2003; technical details may be outdated. "_In 1960, a researcher interviewed 1500 business-school students and classified them in two categories: those who were in it for the money (1245 of them ) and those who were going to use the degree to do something they cared deeply about ( the other 255 people). Twenty years later, the researcher checked on the graduates and found that 101 of them were millionaires , and all but one of those millionaires came from the 255 people who had pursued what they loved to do!_ Now, you may think that your passion for Icelandic poetry of the baroque period, or butterfly collecting, or golf , or social justice , might consign you to a permanent separation between what you love and what you do for a living, but it isn't necessarily so. Vladimir Nabokov, one of the greatest novelists of this centurey, was far more passionate about butterfly collecting than writing. His first college teaching job, in fact, was in lepidoptery. REsearch on more than 400,000 Americans over the past 40 years indicates that pursuing your passions , even in small doses, here and there each day , helps you make the most of your current capabilities and encourages you to develop new ones. " From _[The other 90%](https://www.amazon.com/exec/obidos/ASIN/060980880X/qid=1058901415/sr=8-1/ref=sr_8_1/iserializable-20)_ by Robert K. Cooper, Three Rivers Press 2001" \[[Thinking About Computing(Bruce Eckle)](http://www.mindview.net/WebLog/)\]   I feel like I'm on the right way. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 27, 2003 ### [MSDN VB blog section](https://osherove.com/blog/2003/7/27/msdn-vb-blog-section.html) - Jul 23, 2003 ### [Faster typing achieved slowly](https://osherove.com/blog/2003/7/23/faster-typing-achieved-slowly.html) - Jul 18, 2003 ### [Mr. Bunny](https://osherove.com/blog/2003/7/18/mr-bunny.html) - Jul 18, 2003 ### [Must-have books for my new job](https://osherove.com/blog/2003/7/18/must-have-books-for-my-new-job.html) --- title: "Israel .NET Software Architects User Group Meeting - July 2003" url: "https://osherove.com/blog/2003/7/22/israel-net-software-architects-user-group-meeting-july-2003.md" canonical: "https://osherove.com/blog/2003/7/22/israel-net-software-architects-user-group-meeting-july-2003.html" published: "2003-07-22T13:23:00" updated: "2003-07-22T13:23:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Thanks, Dana, for making me aware of this :) .NET Software Architects User Group Meeting - July 2003 ( 27/07/2003 ) \" You are welcome to attend the July meeting to be held on July 27 th . The meeting will focus on the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel .NET Software Architects User Group Meeting - July 2003 By Roy Osherove July 22, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 22, 2003; technical details may be outdated. Thanks, Dana, for making me aware of this :) **.NET Software Architects User Group Meeting - July 2003**(27/07/2003) "_You are welcome to attend the July meeting to be held on July 27th. The meeting will focus on the new .NET Application Blocks_ _This month, our presenter is Avi Ben-Menachem, a senior consultant at Microsoft Consulting Services._ _This presentation will cover the PAG application blocks that are reusable components and associated guidance for performing common application development functions such as SQL Data access, configuration management and application instrumentation. Blocks greatly improve developer productivity when building everyday applications. An overview of the PAG architecture and the blocks' relationship to this architecture will be provided. A breakdown of the blocks existing, expected lifetime, and roadmap for future blocks will be provided. The benefits and limitations of using the blocks will be explained in detail with code samples._ _Kindly confirm your participation by e-mailing me at \[email removed\]._ Details summary: Date: **July 27th, 2003** (27/07/2003) Time: **17:30 – 20:00** Location: **HP (Compaq) offices,** **9 Daphna St****, Kiryat Etgarim (northern industrial area), Ra’anana** (see [http://www.microsoft.com/israel/dev/netsa.asp](http://www.microsoft.com/israel/dev/netsa.asp) for location details) Topic: **The new .NET Application blocks** Agenda: 17:30 – 17:45 – Assembly 17:45 – 18:45 – The new .NET Application Blocks – Avi Ben-Menachem \- Microsoft 18:45 – 19:00 – Break 19:00 – 20:00 – The new .NET Application Blocks – Avi Ben-Menachem \- Microsoft Thank you and see you there! Don’t hesitate to contact me with any questions or requests. Yosi Levy, \[email removed\]" ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 27, 2003 ### [More on Modifying IL at runtime](https://osherove.com/blog/2003/7/27/more-on-modifying-il-at-runtime.html) - Jul 24, 2003 ### [Rewrite MSIL Code on the Fly](https://osherove.com/blog/2003/7/24/rewrite-msil-code-on-the-fly.html) - Jul 20, 2003 ### [More active desktop](https://osherove.com/blog/2003/7/20/more-active-desktop.html) - Jul 16, 2003 ### [See you at the user group tonight (topic - CLR plumbing)](https://osherove.com/blog/2003/7/16/see-you-at-the-user-group-tonight-topic-clr-plumbing.html) --- title: "My article on MSDNAA" url: "https://osherove.com/blog/2003/7/22/my-article-on-msdnaa.md" canonical: "https://osherove.com/blog/2003/7/22/my-article-on-msdnaa.html" published: "2003-07-22T13:23:00" updated: "2003-07-22T13:23:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "One of my articles just made the MSDNAA site. Using Regular Expressions and XML Classes to Parse Your Log Files I'm totally flattered." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My article on MSDNAA By Roy Osherove July 22, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published July 22, 2003; technical details may be outdated. One of my articles just made the [MSDNAA](http://www.msdnaa.com/) site. [Using Regular Expressions and XML Classes to Parse Your Log Files](http://msdnaa.net/Resources/Display.aspx?ResID=2102) I'm totally flattered. ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Jul 28, 2003 ### [Debugging in Visual Basic .NET](https://osherove.com/blog/2003/7/28/debugging-in-visual-basic-net.html) - Jul 27, 2003 ### [Asynchronous Execution in Visual Basic .NET](https://osherove.com/blog/2003/7/27/asynchronous-execution-in-visual-basic-net.html) - Jul 19, 2003 ### [Log4net How-To](https://osherove.com/blog/2003/7/19/log4net-how-to.html) - Jul 18, 2003 ### [BitVector32 in the real world](https://osherove.com/blog/2003/7/18/bitvector32-in-the-real-world.html) --- title: "Kit George on BitVector32 bug" url: "https://osherove.com/blog/2003/7/21/kit-george-on-bitvector32-bug.md" canonical: "https://osherove.com/blog/2003/7/21/kit-george-on-bitvector32-bug.html" published: "2003-07-21T15:39:00" updated: "2003-07-21T15:39:00" tags: [".Net Original"] author: "Roy Osherove" description: "Kit George, of Microsoft, responds to the BitVector32 bug that was posted about by Mattias Sjögren : \" Just a note all: we are tracking this issue at Microsoft, and we do appreciate you taking the time to let us know…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Kit George on BitVector32 bug By Roy Osherove July 21, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 21, 2003; technical details may be outdated. Kit George, of Microsoft, responds to the [BitVector32 bug](http://weblogs.asp.net/rosherove/posts/10270.aspx) that was posted about by [**Mattias Sjögren**](http://www.msjogren.net/): "_Just a note all: we are tracking this issue at Microsoft, and we do appreciate you taking the time to let us know about it. We didn't get a chance to fix this during Everett, but you can expect this to be fixed in the next release."_ Thanks Kit! Good to know someone's on top of that, and for taking the time to comment :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 23, 2003 ### [Scripting .Net](https://osherove.com/blog/2003/7/23/scripting-net.html) - Jul 23, 2003 ### [Skill Evaluation](https://osherove.com/blog/2003/7/23/skill-evaluation.html) - Jul 17, 2003 ### [Your favorite add-in?](https://osherove.com/blog/2003/7/17/your-favorite-add-in.html) - Jul 16, 2003 ### [Managed C++ performence vs. native C++](https://osherove.com/blog/2003/7/16/managed-c-performence-vs-native-c.html) --- title: "More active desktop" url: "https://osherove.com/blog/2003/7/20/more-active-desktop.md" canonical: "https://osherove.com/blog/2003/7/20/more-active-desktop.html" published: "2003-07-20T18:27:00" updated: "2003-07-20T18:27:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Doug Thews about his active desktop: \"I thought you might be interested in knowing I posted some cool feature updates at: http://www.ddconsult.com/blogs/illuminati/archives/000085.html \"" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More active desktop By Roy Osherove July 20, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 20, 2003; technical details may be outdated. [Doug Thews](http://www.ddconsult.com/blogs/illuminati) about his active desktop: "I thought you might be interested in knowing I posted some cool feature updates at: [http://www.ddconsult.com/blogs/illuminati/archives/000085.html](http://www.ddconsult.com/blogs/illuminati/archives/000085.html)" ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 24, 2003 ### [Rewrite MSIL Code on the Fly](https://osherove.com/blog/2003/7/24/rewrite-msil-code-on-the-fly.html) - Jul 22, 2003 ### [Israel .NET Software Architects User Group Meeting - July 2003](https://osherove.com/blog/2003/7/22/israel-net-software-architects-user-group-meeting-july-2003.html) - Jul 16, 2003 ### [See you at the user group tonight (topic - CLR plumbing)](https://osherove.com/blog/2003/7/16/see-you-at-the-user-group-tonight-topic-clr-plumbing.html) - Jul 16, 2003 ### [We will not ship s#!\*t](https://osherove.com/blog/2003/7/16/we-will-not-ship-st.html) --- title: "Log4net How-To" url: "https://osherove.com/blog/2003/7/19/log4net-how-to.md" canonical: "https://osherove.com/blog/2003/7/19/log4net-how-to.html" published: "2003-07-19T07:11:00" updated: "2003-07-19T07:11:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "If you want to start instrumenting your application for tracing and debugging, log4net is a good tool. This article explains how to take your first steps to implement it inyour applications. Very nice." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Log4net How-To By Roy Osherove July 19, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published July 19, 2003; technical details may be outdated. If you want to start instrumenting your application for tracing and debugging, [log4net](http://log4net.sourceforge.net/) is a good tool. [This article explains](http://www.ondotnet.com/pub/a/dotnet/2003/06/16/log4net.html) how to take your first steps to implement it inyour applications. Very nice. ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Jul 27, 2003 ### [Asynchronous Execution in Visual Basic .NET](https://osherove.com/blog/2003/7/27/asynchronous-execution-in-visual-basic-net.html) - Jul 22, 2003 ### [My article on MSDNAA](https://osherove.com/blog/2003/7/22/my-article-on-msdnaa.html) - Jul 18, 2003 ### [BitVector32 in the real world](https://osherove.com/blog/2003/7/18/bitvector32-in-the-real-world.html) - Jul 18, 2003 ### [Nice performance counters article](https://osherove.com/blog/2003/7/18/nice-performance-counters-article.html) --- title: "Cool product of the day: Mathematica.Net" url: "https://osherove.com/blog/2003/7/19/cool-product-of-the-day-mathematicanet.md" canonical: "https://osherove.com/blog/2003/7/19/cool-product-of-the-day-mathematicanet.html" published: "2003-07-19T05:56:00" updated: "2003-07-19T05:56:00" tags: ["Cool Tools"] author: "Roy Osherove" description: ".Net/Link \". NET/Link is a toolkit that integrates Mathematica and the Microsoft .NET Framework . It lets you call code written in any .NET-compatible language from Mathematica in a completely transparent way, and it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool product of the day: Mathematica.Net By Roy Osherove July 19, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published July 19, 2003; technical details may be outdated. [**.Net/Link**](http://www.wolfram.com/solutions/mathlink/netlink/) _".[NET/Link](http://www.wolfram.com/solutions/mathlink/netlink/) is a toolkit that integrates [Mathematica](http://www.wolfram.com/products/mathematica/index.html) and the_ [_Microsoft .NET Framework_](http://www.microsoft.com/net/)_. It lets you call code written in any .NET-compatible language from Mathematica in a completely transparent way, and it lets you use and control the Mathematica kernel from a .NET program. For Mathematica users, .NET/Link makes all existing and future .NET types an automatic extension to the Mathematica environment. For .NET programmers, .NET/Link turns Mathematica into a scripting shell that lets you experiment with, build, and test .NET types a line at a time. It also makes .NET a powerful environment for writing programs that use the computational services of Mathematica. "_ ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jul 29, 2003 ### [Amazon light](https://osherove.com/blog/2003/7/29/amazon-light.html) - Jul 24, 2003 ### [Cool idea of the day](https://osherove.com/blog/2003/7/24/cool-idea-of-the-day.html) - Jul 18, 2003 ### [Yet another new tabbed browser? This one has some new features](https://osherove.com/blog/2003/7/18/yet-another-new-tabbed-browser-this-one-has-some-new-feature.html) - Jul 18, 2003 ### [Make your desktop show active RSS content](https://osherove.com/blog/2003/7/18/make-your-desktop-show-active-rss-content.html) --- title: "Mr. Bunny" url: "https://osherove.com/blog/2003/7/18/mr-bunny.md" canonical: "https://osherove.com/blog/2003/7/18/mr-bunny.html" published: "2003-07-18T22:06:00" updated: "2003-07-18T22:06:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Ok. These are two of the funniest books I've seen in a while, and they both deal with programming. I'm not sure how well known they are, but I just found out about them. Click the \"Look inside\" links. Mr. Bunny's Guide…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mr. Bunny By Roy Osherove July 18, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 18, 2003; technical details may be outdated. Ok. These are two of the funniest books I've seen in a while, and they both deal with programming. I'm not sure how well known they are, but I just found out about them. Click the "Look inside" links. [**Mr. Bunny's Guide to Activex**](https://www.amazon.com/exec/obidos/tg/detail/-/0201485362/ref=lib_dp_TFCV/102-8078858-0196108?v=glance&s=books&vi=reader#reader-link)[![](https://osherove.com/img/wb/7cdfb60d_images.amazon.com_images_P_0201485362.01.__PIt.arrow_TopLeft_-1_-17_SCTHUMBZZZ_.jpg)](https://www.amazon.com/exec/obidos/tg/detail/-/0201485362/ref=lib_dp_TFCV/102-8078858-0196108?v=glance&s=books&vi=reader#reader-link) [**Mr. Bunny's Big Cup o' Java(TM)**](https://www.amazon.com/exec/obidos/tg/detail/-/0201615630/qid=1058576286/sr=1-1/ref=sr_1_1/102-8078858-0196108?v=glance&s=books) [![](https://osherove.com/img/wb/531eb099_images.amazon.com_images_P_0201615630.01.__PIt.arrow_TopLeft_-1_-17_SCTHUMBZZZ_.jpg)](https://www.amazon.com/exec/obidos/tg/detail/-/0201615630/ref=lib_dp_TFCV/102-8078858-0196108?v=glance&s=books&vi=reader#reader-link) <table><tbody><tr><td width="60"> </td><td width="100%"></td></tr></tbody></table> Thanks to Anon for the link to the activeX one(you should have posted you name...) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 23, 2003 ### [Faster typing achieved slowly](https://osherove.com/blog/2003/7/23/faster-typing-achieved-slowly.html) - Jul 22, 2003 ### [Do what you love](https://osherove.com/blog/2003/7/22/do-what-you-love.html) - Jul 18, 2003 ### [Must-have books for my new job](https://osherove.com/blog/2003/7/18/must-have-books-for-my-new-job.html) - Jul 18, 2003 ### [A chat with scoble](https://osherove.com/blog/2003/7/18/a-chat-with-scoble.html) --- title: "Must-have books for my new job" url: "https://osherove.com/blog/2003/7/18/must-have-books-for-my-new-job.md" canonical: "https://osherove.com/blog/2003/7/18/must-have-books-for-my-new-job.html" published: "2003-07-18T21:44:00" updated: "2003-07-18T21:44:00" tags: ["Off Topic"] author: "Roy Osherove" description: "My new job asked me to give a list of books that I think would be needed, so I made this one: (note: some books are not here because they already have them) Essential .NET, Volume I: The Common Language Runtime…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Must-have books for my new job By Roy Osherove July 18, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 18, 2003; technical details may be outdated. My new job asked me to give a list of books that I think would be needed, so I made this one: (note: some books are not here because they already have them) [Essential .NET, Volume I: The Common Language Runtime](https://www.amazon.com/exec/obidos/ASIN/0201734117/qid=1058574497/sr=8-3/ref=sr_8_3/iserializable-20) [Debugging Applications for Microsoft .NET and Microsoft Windows](https://www.amazon.com/exec/obidos/ASIN/0735615365/ref=pd_sxp_elt_l1/iserializable-20) [Patterns of Enterprise Application Architecture](https://www.amazon.com/exec/obidos/ASIN/0321127420/ref=pd_sim_books_3/iserializable-20) [Inside Microsoft .NET IL Assembler](https://www.amazon.com/exec/obidos/ASIN/0735615470/ref=pd_sxp_elt_l1/iserializable-20) [Programming Windows with C# (Core Reference)](https://www.amazon.com/exec/obidos/ASIN/0735613702/ref=pd_sxp_elt_l1/iserializable-20) [.NET Framework Security](https://www.amazon.com/exec/obidos/ASIN/067232184X/ref=pd_sxp_elt_l1/iserializable-20) [Microsoft ADO.NET (Core Reference)](https://www.amazon.com/exec/obidos/ASIN/0735614237/ref=pd_sxp_elt_l1/iserializable-20) [Programming .NET Components](https://www.amazon.com/exec/obidos/ASIN/0596003471/iserializable-20) [Transactional COM+: Building Scalable Applications](https://www.amazon.com/exec/obidos/ASIN/0201615940/qid=1058575074/sr=8-1/ref=sr_8_1/iserializable-20) can you recommend other good books? The focus is on being able to get in to the very core of .net framework, to know how everything works from the inside, and be able to examing, at runtime, anything within the CLR. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 22, 2003 ### [Do what you love](https://osherove.com/blog/2003/7/22/do-what-you-love.html) - Jul 18, 2003 ### [Mr. Bunny](https://osherove.com/blog/2003/7/18/mr-bunny.html) - Jul 18, 2003 ### [A chat with scoble](https://osherove.com/blog/2003/7/18/a-chat-with-scoble.html) - Jul 17, 2003 ### [Touch typing hell](https://osherove.com/blog/2003/7/17/touch-typing-hell.html) --- title: "A chat with scoble" url: "https://osherove.com/blog/2003/7/18/a-chat-with-scoble.md" canonical: "https://osherove.com/blog/2003/7/18/a-chat-with-scoble.html" published: "2003-07-18T21:20:00" updated: "2003-07-18T21:20:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Robert Scoble tried to IM me the other day. I wasn’t at my computer, so all I saw when I returned to the machine a few hours later was “ If you’re around, ping me ”. My gut feeling told me that this had something to do…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A chat with scoble By Roy Osherove July 18, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 18, 2003; technical details may be outdated. [Robert Scoble](http://scoble.weblogs.com/) tried to IM me the other day. I wasn’t at my computer, so all I saw when I returned to the machine a few hours later was “_If you’re around, ping me_”. My gut feeling told me that this had something to do with my rants([here](http://weblogs.asp.net/rosherove/posts/10095.aspx),[here](http://weblogs.asp.net/rosherove/posts/10164.aspx)) about the pricing schema of the PDC, but I wasn’t sure what he had to say about it.  Naturally, I started day dreaming. //Start Dream //---------------------------------- Scoble: _“Hey Roy. How are you?”_ Me:      _“_Hi Robert. Fine, and you?” Scoble: _“Great! Listen, the guys up here have been paying lots of attention to your posts about the PDC pricing, and we’ve come up with two decisions:_ _One – The PDC prices will be lowered to 500$ based on your recommendation_ _Two – We want to invite you and 3 friends to the PDC, all expanses included, because we think the Israeli developer community has been neglected for too long, and want to show you our appreciation for bringing that to our attention._ _What do you think?”_ Me:      “Great!” //---------------------------------- //End Dream Well, that’s not how it went. We did have a very nice conversation about the PDC subject, though. He explained to me some of the details of why the PDC can’t be done in Europe(MSFT can’t allow its devs to go overseas for a week, it would cost too much) and then , what followed, was basically me somehow ranting and spilling my guts out for someone whom I don’t really know. I still don’t get why I did that, but it was a good feeling. It was the kind of talk that you can only get on a chat session with a stranger from Microsoft… I told him how I feel trapped and not being able to attend all the important conferences. I told him that down here in Israel, we’ve got a small community of die-hard developers that are just itching to do **something** with Microsoft, to be involved, to chip in, to be part of this ‘coolness’ factor. This is something people in the US don’t really get. If you’re in the USA, you can easily enough get to any conference you want (if you have the admission fee on hand). Down here, and in other places I presume, even if you did have the money to get in, you still need to take a long, 12 hour flight, which costs a big load of money , just to get the chance to get in to a conference. And don’t get me started on meeting the most important people in the industry. Hey, anytime scoble writes “W_e’re having a [weblogger dinner](http://radio.weblogs.com/0001011/2003/07/17.html#a3847) at so and so…_” I’m reminded of this fact. What are the chances of people like Don Box, or Chris Sells or all the other cool .Net celebs ever coming to Israel? Practically zero. This barrier is tough, and I think a big part of my rants about the PDC were rooted in this inner anger of why things sometimes really suck on this angle. Of course, I still support and back up everything I said, because the pricing still totally sucks. Anyway, Scoble was a real sport about it, and I think that he “got” me. Hey [scoble](http://scoble.weblogs.com/), how about you coming down here for some Longhorn evangelism sometime? I’ll even throw in a **weblogger dinner** just for you! J ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 23, 2003 ### [.Net Desktop contest winners announced](https://osherove.com/blog/2003/7/23/net-desktop-contest-winners-announced.html) - Jul 23, 2003 ### [Another VB.Net team member blog in the wild](https://osherove.com/blog/2003/7/23/another-vbnet-team-member-blog-in-the-wild.html) - Jul 18, 2003 ### [Weblogs@DotNetJunkies](https://osherove.com/blog/2003/7/18/weblogsdotnetjunkies.html) - Jul 18, 2003 ### [Make your desktop show active RSS content](https://osherove.com/blog/2003/7/18/make-your-desktop-show-active-rss-content.html) --- title: "BitVector32 in the real world" url: "https://osherove.com/blog/2003/7/18/bitvector32-in-the-real-world.md" canonical: "https://osherove.com/blog/2003/7/18/bitvector32-in-the-real-world.html" published: "2003-07-18T20:35:00" updated: "2003-07-18T20:35:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "A little known(and little documented) class in the framework is the System.Collections.Specialized.BitVector32 . It allows working easily with 32 bit integers, which are used extensively in optimized environments as a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BitVector32 in the real world By Roy Osherove July 18, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published July 18, 2003; technical details may be outdated. A little known(and little documented) class in the framework is the **_System.Collections.Specialized.BitVector32_** . It allows working easily with 32 bit integers, which are used extensively in optimized environments as a way to quickly pass data around. I had in application in VB6 once that had to talk to a COM server written in C++. The server would send and recieve statuses and messages using only 32 bit constructs. Luckily, I had a cool class that helped me work with it easily(I never was much of a bits and bytes guy), but this was in VB6. It's good to know that _BitVector32_ exists, and now, [John R. Lewis has written a short and to the point article](http://www.aspzone.com/Entries/cde44ebd07c447a886f2f5b6ddb90d1c.aspx) which explains how he used it to parse data in a real application. Great contribution! I just \*know\* that that article will save me a few headaches in the future. **Update:** [Mattias Sjögren](http://www.msjogren.net/) comments a very important remark: FYI, the BitVector32 has a bug in that the indexer always returns false for bit #31, even if it's set. The following code should reproduce it. class BitVectorBugDemo { static void Main() { BitVector32 bv = new BitVector32( unchecked((int)0xFFFFFFFF) ); int mask = BitVector32.CreateMask(); for ( int bit = 0; bit < 32; bit++ ) { Console.WriteLine( "Bit: {0}, Mask: {1:X}, value: {2}", bit, mask, bv\[mask\] ); if ( bit < 31 ) mask = BitVector32.CreateMask( mask ); } } } Thanks for the tip! I wonder how the hell do I work around that... **Update:** [_Sebastian Lambla_](http://thetechnologist.is-a-geek.com/blog/) _has created a_ [_replacement for the BitVector32 class_](http://thetechnologist.is-a-geek.com/blog/PermaLink.aspx?guid=fa184c52-b602-4838-95e1-00c7fca09d8d) _in the framework. The original has a nasty bug in it :_ [_the indexer always returns false for bit #31_](http://weblogs.asp.net/rosherove/posts/10270.aspx)_. Sebastian decided he needed more flexibility from it anyway so he recreated it from scratch._ _Very cool. Great work._ _You can download the class in a_ [_zip file from his post_](http://thetechnologist.is-a-geek.com/blog/PermaLink.aspx?guid=fa184c52-b602-4838-95e1-00c7fca09d8d)_._ \[via a [future post of mine](http://weblogs.asp.net/rosherove/posts/37166.aspx)\] ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Jul 22, 2003 ### [My article on MSDNAA](https://osherove.com/blog/2003/7/22/my-article-on-msdnaa.html) - Jul 19, 2003 ### [Log4net How-To](https://osherove.com/blog/2003/7/19/log4net-how-to.html) - Jul 18, 2003 ### [Nice performance counters article](https://osherove.com/blog/2003/7/18/nice-performance-counters-article.html) - Jul 1, 2003 ### [User Interface Design For Programmers](https://osherove.com/blog/2003/7/1/user-interface-design-for-programmers.html) --- title: "Nice performance counters article" url: "https://osherove.com/blog/2003/7/18/nice-performance-counters-article.md" canonical: "https://osherove.com/blog/2003/7/18/nice-performance-counters-article.html" published: "2003-07-18T20:09:00" updated: "2003-07-18T20:09:00" tags: ["Cool Articles"] author: "Roy Osherove" description: "I was going to write an article about performance counters and their use in .Net, but then I found this very nice article on the subject." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice performance counters article By Roy Osherove July 18, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published July 18, 2003; technical details may be outdated. I was going to write an article about performance counters and their use in .Net, but then I found [this very nice article](http://www.c-sharpcorner.com/Code/2002/May/PerformanceCountersP1.asp) on the subject. ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Jul 19, 2003 ### [Log4net How-To](https://osherove.com/blog/2003/7/19/log4net-how-to.html) - Jul 18, 2003 ### [BitVector32 in the real world](https://osherove.com/blog/2003/7/18/bitvector32-in-the-real-world.html) - Jul 1, 2003 ### [User Interface Design For Programmers](https://osherove.com/blog/2003/7/1/user-interface-design-for-programmers.html) - Jun 15, 2003 ### [Data Binding Woes - A Simple Solution](https://osherove.com/blog/2003/6/15/data-binding-woes-a-simple-solution.html) --- title: "Weblogs@DotNetJunkies" url: "https://osherove.com/blog/2003/7/18/weblogsdotnetjunkies.md" canonical: "https://osherove.com/blog/2003/7/18/weblogsdotnetjunkies.html" published: "2003-07-18T05:40:00" updated: "2003-07-18T05:40:00" tags: ["Blogging"] author: "Roy Osherove" description: "I just subscribed to the DotNetJunkies Weblogs combined RSS feed, and you should too. Some interesting posts going on there. (via LarkWare )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Weblogs@DotNetJunkies By Roy Osherove July 18, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 18, 2003; technical details may be outdated. I just subscribed to the [DotNetJunkies Weblogs](http://www.dotnetjunkies.com/WebLog/MainFeed.aspx) combined RSS feed, and you should too. Some interesting posts going on there. (via [LarkWare](http://www.larkware.com/)) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 23, 2003 ### [Another VB.Net team member blog in the wild](https://osherove.com/blog/2003/7/23/another-vbnet-team-member-blog-in-the-wild.html) - Jul 18, 2003 ### [A chat with scoble](https://osherove.com/blog/2003/7/18/a-chat-with-scoble.html) - Jul 18, 2003 ### [Make your desktop show active RSS content](https://osherove.com/blog/2003/7/18/make-your-desktop-show-active-rss-content.html) - Jul 14, 2003 ### [Vote for your favorite desktop at the .Net Desktops Contest](https://osherove.com/blog/2003/7/14/vote-for-your-favorite-desktop-at-the-net-desktops-contest.html) --- title: "Yet another new tabbed browser? This one has some new features" url: "https://osherove.com/blog/2003/7/18/yet-another-new-tabbed-browser-this-one-has-some-new-feature.md" canonical: "https://osherove.com/blog/2003/7/18/yet-another-new-tabbed-browser-this-one-has-some-new-feature.html" published: "2003-07-18T05:39:00" updated: "2003-07-18T05:39:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Mark Brown sends word of a new breed of browser - using a visual tabbed interface. Some very cool stuff there. Perhps this could be the next buzz? It's called iRider . They have a nice flash demo on their site that is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Yet another new tabbed browser? This one has some new features By Roy Osherove July 18, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published July 18, 2003; technical details may be outdated. [Mark Brown sends word](http://dotnetjunkies.com/WebLog/markbrown/posts/460.aspx) of a new breed of browser - using a visual tabbed interface. Some very cool stuff there. Perhps this could be the next buzz? It's called [iRider](http://www.irider.com/). They have a nice flash demo on their site that is worth checking out. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jul 24, 2003 ### [Cool idea of the day](https://osherove.com/blog/2003/7/24/cool-idea-of-the-day.html) - Jul 19, 2003 ### [Cool product of the day: Mathematica.Net](https://osherove.com/blog/2003/7/19/cool-product-of-the-day-mathematicanet.html) - Jul 18, 2003 ### [Make your desktop show active RSS content](https://osherove.com/blog/2003/7/18/make-your-desktop-show-active-rss-content.html) - Jul 12, 2003 ### [Command line life saver - LinkD](https://osherove.com/blog/2003/7/12/command-line-life-saver-linkd.html) --- title: "Make your desktop show active RSS content" url: "https://osherove.com/blog/2003/7/18/make-your-desktop-show-active-rss-content.md" canonical: "https://osherove.com/blog/2003/7/18/make-your-desktop-show-active-rss-content.html" published: "2003-07-18T05:19:00" updated: "2003-07-18T05:19:00" tags: ["Blogging", "Cool Tools", "Tips & Tricks"] author: "Roy Osherove" description: "Doug Thews sent me this regarding the .net desktop contest: \" After looking at some of your entries, I decided that I had to write my own ActiveDesktop in ASP.NET to consume RSS feeds and provide other information. I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Make your desktop show active RSS content By Roy Osherove July 18, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published July 18, 2003; technical details may be outdated. [Doug Thews](http://www.ddconsult.com/blogs/illuminati/) sent me this regarding the .net desktop contest: "_After looking at some of your entries, I decided that I had to write my own ActiveDesktop in ASP.NET to consume RSS feeds and provide other information. I don't want entry into your contest, but I thought you might be interested in the project source code for grins ..._ [http://www.ddconsult.com/blogs/illuminati/archives/000078.html](http://www.ddconsult.com/blogs/illuminati/archives/000078.html)" Great! Hey Robert, I know you wanted to find out how it's done, so here's your chance. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 18, 2003 ### [A chat with scoble](https://osherove.com/blog/2003/7/18/a-chat-with-scoble.html) - Jul 18, 2003 ### [Weblogs@DotNetJunkies](https://osherove.com/blog/2003/7/18/weblogsdotnetjunkies.html) - Jul 14, 2003 ### [Vote for your favorite desktop at the .Net Desktops Contest](https://osherove.com/blog/2003/7/14/vote-for-your-favorite-desktop-at-the-net-desktops-contest.html) - Jul 11, 2003 ### [The blogger chain letter?](https://osherove.com/blog/2003/7/11/the-blogger-chain-letter.html) --- title: "Touch typing hell" url: "https://osherove.com/blog/2003/7/17/touch-typing-hell.md" canonical: "https://osherove.com/blog/2003/7/17/touch-typing-hell.html" published: "2003-07-17T21:16:00" updated: "2003-07-17T21:16:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm starting to try and learn touch typing again, and it's pretty damn hard. I'm actually doing it right now and it's horrible! and the teaching program is sooo boring! I'm a pretty fast typist, when I look at the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Touch typing hell By Roy Osherove July 17, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 17, 2003; technical details may be outdated. I'm starting to try and learn touch typing again, and it's pretty damn hard. I'm actually doing it right now and it's horrible! and the teaching program is sooo boring! I'm a pretty fast typist, when I look at the keyboard, actually faster in english than I do in hebrew, but like this - It's a bloody nightmare! this post took 5 minutes to write so far. They should make a "Touch typing for programmers" software. All the drills would incoporate code in the language you choose, and there should also be drills for standard comments. You know, the usual kind: "Legacy code -  do not delete!!!!!!!!!" "You need to call it this way or it won't work, I don't know why." and so on..... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 18, 2003 ### [Must-have books for my new job](https://osherove.com/blog/2003/7/18/must-have-books-for-my-new-job.html) - Jul 18, 2003 ### [A chat with scoble](https://osherove.com/blog/2003/7/18/a-chat-with-scoble.html) - Jul 16, 2003 ### [Vs.Net for presentations](https://osherove.com/blog/2003/7/16/vsnet-for-presentations.html) - Jul 16, 2003 ### [PDC pricing continued](https://osherove.com/blog/2003/7/16/pdc-pricing-continued.html) --- title: "Your favorite add-in?" url: "https://osherove.com/blog/2003/7/17/your-favorite-add-in.md" canonical: "https://osherove.com/blog/2003/7/17/your-favorite-add-in.html" published: "2003-07-17T14:27:00" updated: "2003-07-17T14:27:00" tags: [".Net Original"] author: "Roy Osherove" description: "Have you voted for the best Visual Studio.Net add-in contest? Cast you vote here . What did I vote for? The Reflector Add-in of course. definitely the coolest tool and most useful I've seen yet. And it just got released…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Your favorite add-in? By Roy Osherove July 17, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 17, 2003; technical details may be outdated. Have you voted for the best Visual Studio.Net add-in contest? [Cast you vote here](http://www.codeproject.com/script/survey/survey.asp?survey=297). What did I vote for? The [Reflector Add-in](http://www.managedaddins.net/addins/reflector/Default.htm) of course. definitely the coolest tool and most useful I've seen yet. And it just got [released with a new version](http://weblogs.asp.net/yosit/posts/10039.aspx) too. What? You didn't know there was one? well there is. And it allows you to see the actually see the decompiled assembly source while debugging inside VS.Net. Very exciting stuff for those who like it low-level.... :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 23, 2003 ### [Skill Evaluation](https://osherove.com/blog/2003/7/23/skill-evaluation.html) - Jul 21, 2003 ### [Kit George on BitVector32 bug](https://osherove.com/blog/2003/7/21/kit-george-on-bitvector32-bug.html) - Jul 16, 2003 ### [Managed C++ performence vs. native C++](https://osherove.com/blog/2003/7/16/managed-c-performence-vs-native-c.html) - Jul 15, 2003 ### [.Net articles on MSDNAA](https://osherove.com/blog/2003/7/15/net-articles-on-msdnaa.html) --- title: "Vs.Net for presentations" url: "https://osherove.com/blog/2003/7/16/vsnet-for-presentations.md" canonical: "https://osherove.com/blog/2003/7/16/vsnet-for-presentations.html" published: "2003-07-16T18:38:00" updated: "2003-07-16T18:38:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Scott Hanselman points to a macro that should be useful for code presenters that allows chaning the font size in VS.NET to the appropriate presentation size. Cool. Another way to do this is by calling your VS.Net…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Vs.Net for presentations By Roy Osherove July 16, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 16, 2003; technical details may be outdated. [Scott Hanselman](http://radio.weblogs.com/0106747/2003/07/16.html#a389) points to a macro that should be useful for code presenters that allows chaning the font size in VS.NET to the appropriate presentation size. Cool. Another way to do this is by calling your VS.Net _devenv.exe_ with a command line argument specifying the font size in which to display everything: **C:\\\[My Devenv path\]\\devenv.exe" /fs 40** this will load vs.net and all fonts in dialogs and source will be set to size 40. very scary! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 18, 2003 ### [A chat with scoble](https://osherove.com/blog/2003/7/18/a-chat-with-scoble.html) - Jul 17, 2003 ### [Touch typing hell](https://osherove.com/blog/2003/7/17/touch-typing-hell.html) - Jul 16, 2003 ### [PDC pricing continued](https://osherove.com/blog/2003/7/16/pdc-pricing-continued.html) - Jul 15, 2003 ### [Death to the double-click (a lesson in design)](https://osherove.com/blog/2003/7/15/death-to-the-double-click-a-lesson-in-design.html) --- title: "Managed C++ performence vs. native C++" url: "https://osherove.com/blog/2003/7/16/managed-c-performence-vs-native-c.md" canonical: "https://osherove.com/blog/2003/7/16/managed-c-performence-vs-native-c.html" published: "2003-07-16T17:49:00" updated: "2003-07-16T17:49:00" tags: [".Net Original"] author: "Roy Osherove" description: "The user group meeting today went great. Very interesting stuff. We actually got to see all the stuff that the .Net framework installation installs on the target machine. Lot’s of goodies in there right out of the box.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Managed C++ performence vs. native C++ By Roy Osherove July 16, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 16, 2003; technical details may be outdated. The user group meeting today went great. Very interesting stuff. We actually got to see all the stuff that the .Net framework installation installs on the target machine. Lot’s of goodies in there right out of the box. One of the things that interested me the most of a discussion about Managed C++ and how it compares to native C++ performance wise(It wasn’t the subject but it was still a C++ user group at the core so the discussion shifted several times). It was interesting to me because although I’m not a C++ developer (but I’ll have to be soon, yey!), I got into an argument with one of my colleagues. He claims(even though he has no real experience in .Net and he admits to only hearing it from other “certified” sources) that managed C++ will always be slower than native C++ because of several facts: 1)      The virtual machine gets in the way 2)      Security checks and others being performed before the code is actually executed. In response I said that he’s talking nonsense, and that I know for a fact that Managed C++ can be much faster then native, and I had several points to that: 1)      JIT compilation before execution allows for optimized code to run against the current machine configuration and CPU(a Pentium 4,for example, has an optimized set of instructions for floating point operations I think). 2)      Um.. that was what I could come up with. As a matter of fact, I stood there, without the ability to defend  what I believed to be true, because I had no real reinforcement in terms of optimizations. His arguments did make sense and I started to think that perhaps I was wrong? Then to my rescue the subject came up at the user group and the speaker was damned straight about it – Managed C++ on average, can outperform the C++ optimizer on standard applications. The main reasons: 1)      JIT compilation – like what I said before 2)      Memory allocation. This was a point I had not considered.  The CLR allocates memory in a much different and faster way then the C++ memory allocation scheme. Basically in native C++ the memory allocation scheme had to look for a place in which to put memory chunks in(I won’t go into much detail here), when in the CLR the memory is always allocated without looking for free space. It just “puts” it on top (or at the end of) the memory chain and garbage collection later comes into play and removes any “holes” between chunks. This essentially is a much faster operation(not garbage collection, just memory allocation. GC is very expensive). In the end, the CLR optimizations easily compensate for the other “slow” features. So yeah, Managed C++ can be much faster then native. Cool! Update: [This post from Brad Adams](http://blogs.gotdotnet.com/BradA/permalink.aspx/a4ff32cf-1285-4ab1-95b8-7f7a45d467a0) helps clear things up even more! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 21, 2003 ### [Kit George on BitVector32 bug](https://osherove.com/blog/2003/7/21/kit-george-on-bitvector32-bug.html) - Jul 17, 2003 ### [Your favorite add-in?](https://osherove.com/blog/2003/7/17/your-favorite-add-in.html) - Jul 15, 2003 ### [.Net articles on MSDNAA](https://osherove.com/blog/2003/7/15/net-articles-on-msdnaa.html) - Jul 14, 2003 ### [More maintainable code(and others) lessons](https://osherove.com/blog/2003/7/14/more-maintainable-codeand-others-lessons.html) --- title: "PDC pricing continued" url: "https://osherove.com/blog/2003/7/16/pdc-pricing-continued.md" canonical: "https://osherove.com/blog/2003/7/16/pdc-pricing-continued.html" published: "2003-07-16T15:24:00" updated: "2003-07-16T15:24:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Scoble explains why the PDC costs so much, and adds to the reasons that make the PDC a cool event. I’ll just comment on the pricing, as I admit I totally wanna be there myself. And meet all the cool people. The pricing.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # PDC pricing continued By Roy Osherove July 16, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 16, 2003; technical details may be outdated. [Scoble explains why](http://radio.weblogs.com/0001011/2003/07/15.html#a3795) the PDC costs so much, and [adds to the reasons](http://radio.weblogs.com/0001011/2003/07/15.html#a3796) that make the PDC a cool event. I’ll just comment on the pricing, as I admit I **totally** wanna be there myself. And meet all the cool people. The pricing. Now, Let me just clear something up. This conference is Microsoft’s way of promoting its new line of products to the world, to enhance developer focus on products and basically show how cool it is. In the end, Microsoft is a **company**, and they sell products. To who? To their **customers** who just happen to be developers. Now, if you came to me as a company which sells a products that they think I need and you say “_Hey, I have lots of cool stuff coming your way that you might really really like!_” I’ll say _“Cool!, when is it?_”. But then you’d say “_But it will cost you 2000$ to get in_”. I’ll say “_What the..?”._ Hey , get it in your head – you’re trying to sell **us** on something that you **want** us to work with. How dis this marketing show turn out to be something that I as a potential customer, have to pay for? Don’t you depend on the dev community? What if no one showed up? Would you lower the cost of a ticket then? Of course! You **need** the people to come in and see what’s new. The fact that some people love your products so much and want to network with people in your company so much does not give you the right to take advantage and charge the hell out of everyone. Last time I checked, Microsoft could afford giving out that event. Why should I care how much Microsoft pays for the event? It was **their idea!** You want to sell something to me, not the other way around. So why should I be so dumb as to say “_oh, cool. I’ll get to pay just 1,700$ instead of 2,000$ and they’ll let me in to their hall of fame!”_. You know what? As much as I’d love to be there, it’s the **people** that will be there that will make up the best part of this conference. Microsoft’s strategy won big time here: Its customers are paying to see new stuff and cool people. Most customers would argue that it should be the other way around.   So why do we still go to these conferences? I think it works in this case because we’re dealing with developers and technical people – people who are excited about technology and are willing to pay up to see the next big thing before anyone else. These kinds of people are **great** customers. They are the dream of a tech store owner. They’ll spend a bunch of bucks on stuff so tiny and insignificant, that even they’ll throw it away two months later at the sight of a newer model. **Wake up!** You can get away with this strategy for only so long. Then people will start saying “you know, they should be after me, not me after them!”. Ah, but will that really happen? probably not. **It’s in our blood**. And Microsoft is exploiting that fact to its full potential. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 17, 2003 ### [Touch typing hell](https://osherove.com/blog/2003/7/17/touch-typing-hell.html) - Jul 16, 2003 ### [Vs.Net for presentations](https://osherove.com/blog/2003/7/16/vsnet-for-presentations.html) - Jul 15, 2003 ### [Death to the double-click (a lesson in design)](https://osherove.com/blog/2003/7/15/death-to-the-double-click-a-lesson-in-design.html) - Jul 15, 2003 ### [Cheer up Jeff. You can get the job you want](https://osherove.com/blog/2003/7/15/cheer-up-jeff-you-can-get-the-job-you-want.html) --- title: "See you at the user group tonight (topic - CLR plumbing)" url: "https://osherove.com/blog/2003/7/16/see-you-at-the-user-group-tonight-topic-clr-plumbing.md" canonical: "https://osherove.com/blog/2003/7/16/see-you-at-the-user-group-tonight-topic-clr-plumbing.html" published: "2003-07-16T05:16:00" updated: "2003-07-16T05:16:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Hope to see you all tonight and the Israel Visual C++ user group meeting( note - anyone can go, you don't have to know C++ . the topic is great for anyone involved in .Net!) here's the info from the site: \" Date:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # See you at the user group tonight (topic - CLR plumbing) By Roy Osherove July 16, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 16, 2003; technical details may be outdated. Hope to see you all tonight and the Israel Visual C++ user group meeting(**note** - anyone can go, you don't have to know C++ . the topic is great for anyone involved in .Net!) here's the info from the site: "_Date:   **Wedensday,   July 16, 17:00 - 20:00**_ _Place:   **Microsoft Israel**_                **_Hapnina 2  ( Amdocs Building )_****_ç_** **_New address_**             **_Ground Floor_**             **_Raanana_** **_+972 (9) 762-5100_**          **_Parking: In Microsoft Building, turn right at the traffic circle. Please mention you came for "Microsoft User Groups"_** **_Topic: "CLR Plumbing"_** **_Lecturer_****_:Gad J. Meir_** **_IDAG, Ltd._** **_B.Sc in Computer Engineering, Technion - Technical Institute of Israel MCSE, MCSD, MCT and most other Microsoft Certifications Certified MSF Trainer, Microsoft International_** _To be able to run .net application on a target machine, you need to install or make sure that .net Run Time environment is installed._ ·                     _What really happened to the target computer while the .net RT environment is installed? What is the .net RT? Not in the concept or Classes libraries but in files, registry entries, WMI counters, Performance Monitor objects, Libraries Types and many other items that are being installed._ ·                     _What kinds of tools are installed with the RT to help the developer and the system administrator?_ ·                     _What does each tool do?_ ·                     _When to use each tool?_ ·                     _How to build Hello world program without VS.net._ ·                     _What really happened on the computer when you run the Hello world program?_ _Take a deep look into the CLR virtual machine.!_ **_Please note that Microsoft has moved to Raanana. Please make sure to go to the new location._** _Don’t forget our website is at_   [_http://www.comconix.com/ivcug_](http://www.comconix.com/ivcug)         _Although admission is free and you may attend without reserving a place, we kindly request that you notify us if you plan to attend so that we can be sure to have enough chairs and FOOD! Thank you._ _Moshe Raab_ _\[email removed\]"_ ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 22, 2003 ### [Israel .NET Software Architects User Group Meeting - July 2003](https://osherove.com/blog/2003/7/22/israel-net-software-architects-user-group-meeting-july-2003.html) - Jul 20, 2003 ### [More active desktop](https://osherove.com/blog/2003/7/20/more-active-desktop.html) - Jul 16, 2003 ### [We will not ship s#!\*t](https://osherove.com/blog/2003/7/16/we-will-not-ship-st.html) - Jul 14, 2003 ### [A C# programmer's VB.Net starter kit](https://osherove.com/blog/2003/7/14/a-c-programmers-vbnet-starter-kit.html) --- title: "We will not ship s#!*t" url: "https://osherove.com/blog/2003/7/16/we-will-not-ship-st.md" canonical: "https://osherove.com/blog/2003/7/16/we-will-not-ship-st.html" published: "2003-07-16T04:59:00" updated: "2003-07-16T04:59:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "\" We will not ship shit : words by Robert C. Martin.\" - posted by Lawrence @ 7/15/2003 11:55:25 AM" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # We will not ship s\#!\*t By Roy Osherove July 16, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 16, 2003; technical details may be outdated. _"_[_We will not ship shit_](http://www.artima.com/weblogs/viewpost.jsp?thread=7588)_: words by Robert C. Martin."_ \- posted by [Lawrence](http://loluyede.blogspot.com/) [](http://loluyede.blogspot.com/)@ [7/15/2003 11:55:25 AM](http://loluyede.blogspot.com/2003_07_01_loluyede_archive.html#105829532554607506) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 20, 2003 ### [More active desktop](https://osherove.com/blog/2003/7/20/more-active-desktop.html) - Jul 16, 2003 ### [See you at the user group tonight (topic - CLR plumbing)](https://osherove.com/blog/2003/7/16/see-you-at-the-user-group-tonight-topic-clr-plumbing.html) - Jul 14, 2003 ### [A C# programmer's VB.Net starter kit](https://osherove.com/blog/2003/7/14/a-c-programmers-vbnet-starter-kit.html) - Jul 14, 2003 ### [Another brain killer from Chris Brumme](https://osherove.com/blog/2003/7/14/another-brain-killer-from-chris-brumme.html) --- title: "Death to the double-click (a lesson in design)" url: "https://osherove.com/blog/2003/7/15/death-to-the-double-click-a-lesson-in-design.md" canonical: "https://osherove.com/blog/2003/7/15/death-to-the-double-click-a-lesson-in-design.html" published: "2003-07-15T19:41:00" updated: "2003-07-15T19:41:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Why do today's mice still have \"Double Click\" functionality? In terms of interaction design - its one of the worst forms of design ever created; You have one button which does different things at different…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Death to the double-click (a lesson in design) By Roy Osherove July 15, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 15, 2003; technical details may be outdated. Why do today's mice still have "Double Click" functionality? In terms of interaction design - its one of the worst forms of design ever created; You have one button which does different things at different circumstances. **not only that**, but those circumstances are not easily comprehensible, they are more of the "touchy feely" kind and thus many people fail to use them correctly. The action of the button depends on how **fast** you can move your finger. How's that for "designed with human considerations"? It's one of the most annoying tasks to be performed by a human, and sometimes people just fail miserably at achieving this "simple" task. click too slowly and you'll start editing a file name, click too fast and you'll soon have a muscle cramps. Logitech first came out witha "revolutionary" software that allows one to configure one of their mouse buttons to be used as as "double click". You could make your thum double click on files etc. Microsoft soon followed. You even have various system properties that you can configure to set the desired length of time between single clicks in order for it to be considered a "double click". Why hasn't anyone come out with a mouse that has a built in double-click button? It shouldn't even be called "double click" . it should be callse the "**Activate"** button" or something. You won't need any software to configure the damn thing. Want to run a file? simply "activate" it with your thumb(or whatever the design). No settings, no nothing. Do you need special settings in order to work with the "click" or "right click" button on the mouse? no. Its obvious and so should "A**ctivate"** be. Get the hint, MSFT/Logitech? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 16, 2003 ### [Vs.Net for presentations](https://osherove.com/blog/2003/7/16/vsnet-for-presentations.html) - Jul 16, 2003 ### [PDC pricing continued](https://osherove.com/blog/2003/7/16/pdc-pricing-continued.html) - Jul 15, 2003 ### [Cheer up Jeff. You can get the job you want](https://osherove.com/blog/2003/7/15/cheer-up-jeff-you-can-get-the-job-you-want.html) - Jul 15, 2003 ### [New job](https://osherove.com/blog/2003/7/15/new-job.html) --- title: ".Net articles on MSDNAA" url: "https://osherove.com/blog/2003/7/15/net-articles-on-msdnaa.md" canonical: "https://osherove.com/blog/2003/7/15/net-articles-on-msdnaa.html" published: "2003-07-15T19:16:00" updated: "2003-07-15T19:16:00" tags: [".Net Original"] author: "Roy Osherove" description: "Lots of great .Net articles over at MSDNAA (Hopefully one of mine will be published there real soon..)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net articles on MSDNAA By Roy Osherove July 15, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 15, 2003; technical details may be outdated. Lots of great .Net articles over at [MSDNAA](http://www.msdnaa.com/) (Hopefully one of mine will be published there real soon..) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 17, 2003 ### [Your favorite add-in?](https://osherove.com/blog/2003/7/17/your-favorite-add-in.html) - Jul 16, 2003 ### [Managed C++ performence vs. native C++](https://osherove.com/blog/2003/7/16/managed-c-performence-vs-native-c.html) - Jul 14, 2003 ### [More maintainable code(and others) lessons](https://osherove.com/blog/2003/7/14/more-maintainable-codeand-others-lessons.html) - Jul 9, 2003 ### [Tonight's user group meeting went great (or - What does the matrix, X-Box's "Halo" and COM+ have in common?)](https://osherove.com/blog/2003/7/9/tonights-user-group-meeting-went-great-or-what-does-the-matr.html) --- title: "Cheer up Jeff. You can get the job you want" url: "https://osherove.com/blog/2003/7/15/cheer-up-jeff-you-can-get-the-job-you-want.md" canonical: "https://osherove.com/blog/2003/7/15/cheer-up-jeff-you-can-get-the-job-you-want.html" published: "2003-07-15T18:28:00" updated: "2003-07-15T18:28:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Sometimes life just throws one surprise at you after another, and sometimes these are not good surprises either. While I celebrated my new job, Jeff Julian discovered today that he'd been sacked , along with 15 other…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cheer up Jeff. You can get the job you want By Roy Osherove July 15, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 15, 2003; technical details may be outdated. Sometimes life just throws one surprise at you after another, and sometimes these are not good surprises either. While I [celebrated](http://weblogs.asp.net/rosherove/posts/10115.aspx) my new job, [Jeff Julian discovered today that he'd been sacked](http://jjulian.geekswithblogs.com/BlogItem.aspx?Guid=fbaee4ef-96d3-41c0-a34c-d39b981494aa), along with 15 other employees from his company, as part of a big company effort to minimize costs. The only thing I can tell Jeff is this: It's all for the best. Things might not look it now, but you'll find out eventually that being laid off today, gave you an opportunity to find the job of your dreams tomorrow. And if that job does not work out, that just means you haven’t gotten there yet, but you'll get it eventually. This is the same thing that happened to me(although I wasn't laid off,  I was not too far from it). My last job made me feel miserable and unappreciated because I was assigned to do a job I did not sign up for when I joined the company. In the end, I left, and then looked and looked(for 4 months) for the job I really want, and I found it(hopefully!). So what was it all worth? It was all for the best. It's like I was **meant** to be dissatisfied with my old company so that I would leave in order to find this job. If you treat it this way, you'll see that everything is much easier. just think of it as a transition period between now and the job of your dreams. So what now? How do you get that job? Easy. You **know** you love the technology. You **know** that you know it inside out(or have the ability to learn whatever is needed to that degree). Now all you have to do is show it to the outside world. And you have at least two tools to do that. ·         **Get all the MCP and MCSD titles you can get your hands on.** It’s always good to paste that “_Microsoft Certified..._” logo on the CV. Can’t hurt, only add! ·         **Make your blog a central point in your resume and presentation.** You are your blog. If you associate yourself with it enough, you’ll be “the dude from the interview who has a site with articles”. You’ll be easily remembered and hopefully sought after. Follow the tips below and you’ll be able to boast about your technical work and accomplishments. Your blog will be one of the most valuable tools you’ll ever own in the fight to get the recognition you deserve in future job interviews. ·         **Blog early & often** you can't even **begin** to imagine the amount of impact my blog has helped create for me in job interviews.In fact, my blog was the only reason I'm currently starting a new job at a place I **want** to work at(funny story on that in a future post). The fact that you have a passion for the technology, so much that you're doing a "site" about it makes you easily one of the best candidates for any .Net job. How many other candidates do this? This also gives your interviewer a chance to really get to know you even before you get to the first interview! Think about it! If the interviewer researched about you enough and read your blog(because it was on your resume) your chances of getting into that job are **much** higher. You have the advantage of the interviewer actually **knowing** you before the interview, and thus feels much closer to you than the other candidates. ·         **Write articles on your blog** First , you get the added benefit of actually learning very well the stuff you're writing about. Second, you can point those out in your resume. Telling your interviewer "Yeah, I've written some articles on this and that, and I'm thinking about writing an article on that subject, you can see it on my site(not blog!)" makes you look **very good** and for a reason - you're a hardcore tech guy who actually writes and publishes articles on his spare time. What employer would not like that? ·         **Put up a picture of yourself on the blog** A picture speaks a thousand words and makes browsing your blog a much more personal and intimate experience. A potential reviewer will immediately be able to feel "closer" to you and even know what you look like before the first interview, making you in a better position then other candidates. Make sure the picture shows you in a relaxed and trusting position, which sends out an "I'm a cool tech dude, and this is my life" kind of message. - **Show the world what you've created** Show the world what you've created so far in your career (if you have anything to show). If you made nice GUIs, try to get screenshots and post about them. You can later reference all that on you blog and just point your interviewer at the link to those examples. Make sure the shots are **impressive**. If you have no pics, or maybe you've worked on a server product, You need to try and either link to the products you've made(if they are public) or create pre-rendered schemas of how stuff worked there and put links to them on your blog. If your interviewer asks you stuff about "how di that work?" you'll be able to impress them with pre-rendered graphics and diagrams, showing diligence and patience. - **Go to all the user groups you can** Try to get involved with the community. The more involved you are, the more "networked" you get. The more network you have, the easier you'll get personal recommendations and references to job offers who you might never have gotten through regular channels like newspapers. Sometimes people are looking for that special someone, but it's on a back-burner. They won't put up an ad, they'll just tell the employees to be on the lookout for something good. when that happens, you'll probably be one of very few(if any) candidates for a position, which is usually in a company who looks and cares for its employees(it hand picks them, that's a good sign). That's it. Probably more stuff, but you get the message. **publicize yourselves**. I can honestly say that this is what I have done in order to promote myself. This is what I call "personal advertising" .You should be proud in your geekness. People who are proud and boast in stuff they created on interviews are not that common, and if they can back up what they say - they will usually be the more prominent candidates of all. They'll get the jobs because they've proved \*real skill\* , not just "on paper". ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 16, 2003 ### [PDC pricing continued](https://osherove.com/blog/2003/7/16/pdc-pricing-continued.html) - Jul 15, 2003 ### [Death to the double-click (a lesson in design)](https://osherove.com/blog/2003/7/15/death-to-the-double-click-a-lesson-in-design.html) - Jul 15, 2003 ### [New job](https://osherove.com/blog/2003/7/15/new-job.html) - Jul 15, 2003 ### [The PDC is missing its target audience](https://osherove.com/blog/2003/7/15/the-pdc-is-missing-its-target-audience.html) --- title: "New job" url: "https://osherove.com/blog/2003/7/15/new-job.md" canonical: "https://osherove.com/blog/2003/7/15/new-job.html" published: "2003-07-15T15:35:00" updated: "2003-07-15T15:35:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm happy to annouce that today I've signed on for my new Job. yey! My new company is Identify . Some of the folks I talked to know about them. They (Or rather \"we\") make a product called \" AppSight Black Box \" which I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New job By Roy Osherove July 15, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 15, 2003; technical details may be outdated. I'm happy to annouce that today I've signed on for my new Job. yey! My new company is [Identify](http://www.identify.com/). Some of the folks I talked to know about them. They (Or rather "we") make a product called "**AppSight Black Box**" which I won't go into details about. You can check out the site if you want to learn more. I'll have to check how they feel about my blog. What can I publish here about my work? What \*can't\* I? Maybe I can use it to get in touch with the .Net community and get feedback from other developers on some of the product's features? I don't know how this will turn out, we'll have to wait and see. I start on the 10th of August. Until then I'll need to break in the "new guy" in my [old](http://www.polyinformation.com/) company as gently as possible, and then have a small vacation in greece before the big fresh start. Hey, Microsoft, you just missed me! :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 15, 2003 ### [Death to the double-click (a lesson in design)](https://osherove.com/blog/2003/7/15/death-to-the-double-click-a-lesson-in-design.html) - Jul 15, 2003 ### [Cheer up Jeff. You can get the job you want](https://osherove.com/blog/2003/7/15/cheer-up-jeff-you-can-get-the-job-you-want.html) - Jul 15, 2003 ### [The PDC is missing its target audience](https://osherove.com/blog/2003/7/15/the-pdc-is-missing-its-target-audience.html) - Jul 14, 2003 ### [Hero \[ot\]](https://osherove.com/blog/2003/7/14/hero-ot.html) --- title: "Third prize found!" url: "https://osherove.com/blog/2003/7/15/third-prize-found.md" canonical: "https://osherove.com/blog/2003/7/15/third-prize-found.html" published: "2003-07-15T14:58:00" updated: "2003-07-15T14:58:00" tags: [] author: "Roy Osherove" description: "Patrick Steele just donated the third prize for the . Net desktops contest : The book Applied XML Programming for Microsoft .NET Thanks Patrick!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Third prize found! By Roy Osherove July 15, 2003 **Historical article** · Originally published July 15, 2003; technical details may be outdated. [Patrick Steele](http://weblogs.asp.net/psteele) just donated the third prize for the .[Net desktops contest](http://weblogs.asp.net/rosherove/posts/10062.aspx) : The book [Applied XML Programming for Microsoft .NET](https://www.amazon.com/exec/obidos/ASIN/0735618011/qid=1058291340/sr=8-1/ref=sr_8_1/iserializable-20) Thanks Patrick! --- title: "The PDC is missing its target audience" url: "https://osherove.com/blog/2003/7/15/the-pdc-is-missing-its-target-audience.md" canonical: "https://osherove.com/blog/2003/7/15/the-pdc-is-missing-its-target-audience.html" published: "2003-07-15T11:31:00" updated: "2003-07-15T11:31:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Can anyone please enlighten me as to why the PDC costs so much(2000$ and upwards)? Let's take a look at their website and try to understand: ---------------------SNIP--------------------- Be one of the first to look…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The PDC is missing its target audience By Roy Osherove July 15, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 15, 2003; technical details may be outdated. Can anyone **please** enlighten me as to why the [PDC](http://msdn.microsoft.com/events/pdc/regandtravel.aspx) costs so much(2000$ and upwards)? Let's take a look at their website and try to understand: _\---------------------SNIP---------------------_ _**Be one of the first to look under the hood of "Longhorn."** "Longhorn" is the code name for the next major release of Microsoft Windows®—and the innovation runs deep. At PDC 2003, you can be the first to get information on how to build your applications to take advantage of "Longhorn," and be ready for the future._ **Great. Worth 2000$? No.** _Get up to speed on the next-generation database capabilities of "Yukon."_ _With deep XML support and Common Language Runtime integration, the next release of Microsoft SQL Server, code named "Yukon," will take programmability, scalability, availability, and business intelligence to the next level._ **Great. Worth 2000$? No.** _**Experience the future of application development with Visual Studio "Whidbey."** Extend your power and productivity with upcoming versions of Microsoft Visual Studio®. Unleash the power of advanced Web services, harness business processes, and transform database programming with "Yukon." See the latest innovation in Visual C#®, Visual C++®, Visual Basic®, and other programming languages._**Great. Worth 2000$? No.** _**Take Web services to the next level with Microsoft .NET connected software.** Web services have become the industry choice for connecting systems. At PDC 2003, you'll see where Web services are going next, with new capabilities, advanced infrastructure tools, and new opportunities._**Great. Worth 2000$? No.** _**Get early code.** PDC attendees have always been the first to get developer previews of important future products. The tradition continues with PDC 2003—get early, and in some cases, exclusive code for Windows "Longhorn," SQL Server "Yukon," Visual Studio "Whidbey," and other technologies._ **Great. Worth 2000$? No.** _**A great value.** Your PDC 2003 ID gets you into a keynote address on the next generation of computing from Chairman and Chief Software Architect Bill Gates, as well as break-out sessions, exclusive parties, interactive labs, a full service food court, and much, much more._ **Great. Worth 2000$? No.** _\---------------------SNIP---------------------_ So what will my company(if it decides to actually pay for this, which won't happen while I'm alive) get for the money? Basically its all just early adopter teasers and previews. No real added value here to my company(and many others) regarding development or technology. No real impact. The only thing they **would** get is me coming back with a big smile on my face. **Worth 2000$? No.** It's all just a big "who's who" party that costs a lot of money to get in to. Too bad. I  thought this was all still about making great technology, not merchendizing. Why can't you charge admission fees that are for **human beings**? Why must I sit aside and feel like I can't attend the "_biggest dev event of the year_" just because you target only corporate money? Isn't it all about marketing your new technology? Should'nt you be interested in what a regular developer has to say and see regarding these things? Well most of us can't be there. We can't afford it. The devlopers that **will** get to go will feel very privilaged, though. Maybe that's what you were planning for? Thinking about it some more, maybe you **do** target corporate america, and that's what you'll get. But that would mean this is all just a big marketing show extravaganza, nothing more. No tech added value whatsoever was intended in the first place! I find that a bit on the low side. Give me a low cost, low profile conference any day over that big hype. If you can't see why it's important for developers like me to go there(and be able to afford it), you're probably looking in the wrong direction. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 15, 2003 ### [Cheer up Jeff. You can get the job you want](https://osherove.com/blog/2003/7/15/cheer-up-jeff-you-can-get-the-job-you-want.html) - Jul 15, 2003 ### [New job](https://osherove.com/blog/2003/7/15/new-job.html) - Jul 14, 2003 ### [Hero \[ot\]](https://osherove.com/blog/2003/7/14/hero-ot.html) - Jul 11, 2003 ### [Geek encounters](https://osherove.com/blog/2003/7/11/geek-encounters.html) --- title: "Vote for your favorite desktop at the .Net Desktops Contest" url: "https://osherove.com/blog/2003/7/14/vote-for-your-favorite-desktop-at-the-net-desktops-contest.md" canonical: "https://osherove.com/blog/2003/7/14/vote-for-your-favorite-desktop-at-the-net-desktops-contest.html" published: "2003-07-14T18:52:00" updated: "2003-07-14T18:52:00" tags: ["Blogging"] author: "Roy Osherove" description: "the .Net desktops contest is now closed for new submissions (you can add your desktop to the gallery once the contest is finished if you like). You can all go there now and vote for the best three desktops . The contest…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Vote for your favorite desktop at the .Net Desktops Contest By Roy Osherove July 14, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 14, 2003; technical details may be outdated. the .Net desktops contest is now closed for new submissions (you can add your desktop to the gallery once the contest is finished if you like). You can all [go there now and vote for the best three desktops](http://pnavy.com/royo/desktops). The contest will go on for about 2 weeks(I think that will suffice) and after that time we'll declare the 3 winners. When browsing the desktops remember that there are actually two pages in the gallery, so don't overlook the second page! The following prizes are available for the first places: - 30$ coupon at the microsoft store (which goes a longer way than you think), courtesy of [Robert Scoble](http://scoble.weblogs.com/) - The book: [MCAD/MCSD Training Guide (70-310): Developing XML Web Services and Server Components with Visual Basic .NET and the .NET Framework](https://www.amazon.com/exec/obidos/ASIN/0789728206/qid=1058219311/sr=8-2/ref=sr_8_2/iserializable-20) ,courtesy of [Mike Gundelroy](http://www.larkware.com/) - The book: [Applied XML Programming for Microsoft .NET](https://www.amazon.com/exec/obidos/ASIN/0735618011/qid=1058291340/sr=8-1/ref=sr_8_1/iserializable-20) courtesy of [Patrick Steele](http://weblogs.asp.net/psteele) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 18, 2003 ### [Weblogs@DotNetJunkies](https://osherove.com/blog/2003/7/18/weblogsdotnetjunkies.html) - Jul 18, 2003 ### [Make your desktop show active RSS content](https://osherove.com/blog/2003/7/18/make-your-desktop-show-active-rss-content.html) - Jul 11, 2003 ### [The blogger chain letter?](https://osherove.com/blog/2003/7/11/the-blogger-chain-letter.html) - Jul 9, 2003 ### [Microsoft does, but can do even more](https://osherove.com/blog/2003/7/9/microsoft-does-but-can-do-even-more.html) --- title: "More maintainable code(and others) lessons" url: "https://osherove.com/blog/2003/7/14/more-maintainable-codeand-others-lessons.md" canonical: "https://osherove.com/blog/2003/7/14/more-maintainable-codeand-others-lessons.html" published: "2003-07-14T18:34:00" updated: "2003-07-14T18:34:00" tags: [".Net Original"] author: "Roy Osherove" description: "In the past week or so I’ve been going over all my code with the new guy who’s going to replace my in my current job(Yeah, I’m about to leave, but that’s a whole different post). It's strange. I have done code reviews…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More maintainable code(and others) lessons By Roy Osherove July 14, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 14, 2003; technical details may be outdated. In the past week or so I’ve been going over all my code with the new guy who’s going to replace my in my current job(Yeah, I’m about to leave, but that’s a whole different post). It's strange. I **have** done code reviews in the past, but never had the pleasure of going through \*all\* my old code, class by class, line by line almost, with someone with a completely different perspective and experience than me. It was enlightening. I found that: ·        **No matter how well you think you might code, you’ll always be able to find a sloppy line or implementation somewhere**. We all make those “mistakes”. I quoted that word because usually there’s a pretty good reason why these things were written as they were. There usually is no good reason for keeping them that way (not including special occasions), but somehow, because we’re all human, the code looks just like that – human. I discovered a whole slew of OOP inconsistencies, starting with naming guidelines, up to standard method names not being descriptive enough, and even some un-optimized loops and stuff.   ·        **It’s always great to get a fresh perspective on things**. I found several things I could have done better, and several things that I did influenced the new guy on stuff he didn’t know. It was great to get some validation on my design decisions. ·        **You can never have too much documentation**. I found this out the hard way. My company never seemed to find the time and budget to document the code using a 3rp part tool such as [Document!-X](http://www.innovasys.co.uk/products/documentx.asp) or the likes, so what I ended up with was a half baked set of documents and code comments. I twasa sad tail. Everything has to be explained “manually”. No real documents exist to tell the story(although I tried to give as much as possible using all sorts of long comments and a few word documents). Although all the design documents were there, it really wasn;t what was expected, and I feel it could have been a lot better. The end result is I had to struggle to find the right place to even start explaining how our infrastructure works, and an even bigger battle explaining stuff that even I didn’t remember their purpose. ·        **[Self-documenting code](http://weblogs.asp.net/rosherove/posts/9651.aspx) is the way to go**. I cannot stress this enough. I’ve found, going through 1 year old codebase, that I can easily remember and understand what each method and class does just because the names were meaningful enough to “get” it without trying too hard. Even the new guy got some of these things without me having to explain it to him. The stuff I did have to explain was usually either very complicated and logical, or written poorly enough to not be understood the first time around. The rule of thumb here is “If you need to write a comment on that method it is either too long, or not written in a self documenting way”. ·        **You should always document your database tables and their reason for being**. This is another biggie. We have a database that has plenty of “probably” obsolete tables in it that we cannot delete because some legacy C++ code **might** be using them. The C++ team does not want to take any risks so everything just stays as it is. Sometimes the table design is pretty horrible, and without good documentation you can be left wondering why that “ID” column is of type “nVarChar” instead of an IDENTITY field. Luckily, I’ve kept a neat and ordered word document specifying each tables purpose in life, its relevant tables relations, a description of each columns purpose and all the columns that are not used. Of course I also listed “currently unused” tables in this document as well. This helped a lot when explaining the database’s structure to the new guy, since I suspect no one in our company really knows for sure exactly what each table does. It like a “father to son” sort of fairy tale information passed using only stories, and no books written about it.  A real myth. Had I not created that word document, we’d be in real trouble today. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 16, 2003 ### [Managed C++ performence vs. native C++](https://osherove.com/blog/2003/7/16/managed-c-performence-vs-native-c.html) - Jul 15, 2003 ### [.Net articles on MSDNAA](https://osherove.com/blog/2003/7/15/net-articles-on-msdnaa.html) - Jul 9, 2003 ### [Tonight's user group meeting went great (or - What does the matrix, X-Box's "Halo" and COM+ have in common?)](https://osherove.com/blog/2003/7/9/tonights-user-group-meeting-went-great-or-what-does-the-matr.html) - Jul 9, 2003 ### [Israel .net web developers group meeting](https://osherove.com/blog/2003/7/9/israel-net-web-developers-group-meeting.html) --- title: "A C# programmer's VB.Net starter kit" url: "https://osherove.com/blog/2003/7/14/a-c-programmers-vbnet-starter-kit.md" canonical: "https://osherove.com/blog/2003/7/14/a-c-programmers-vbnet-starter-kit.html" published: "2003-07-14T18:14:00" updated: "2003-07-14T18:14:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "If you're a C# programmer wanting to learn how to speak VB.Net, Darrel Norton has some useful links to get started on that task, having started this quest on his own." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A C\# programmer's VB.Net starter kit By Roy Osherove July 14, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 14, 2003; technical details may be outdated. If you're a C# programmer wanting to learn how to speak VB.Net, [Darrel Norton](http://dotnetjunkies.com/weblog/darrell.norton/) has [some useful links](http://dotnetjunkies.com/weblog/darrell.norton/posts/408.aspx) to get started on that task, having started this quest on his own. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 16, 2003 ### [See you at the user group tonight (topic - CLR plumbing)](https://osherove.com/blog/2003/7/16/see-you-at-the-user-group-tonight-topic-clr-plumbing.html) - Jul 16, 2003 ### [We will not ship s#!\*t](https://osherove.com/blog/2003/7/16/we-will-not-ship-st.html) - Jul 14, 2003 ### [Another brain killer from Chris Brumme](https://osherove.com/blog/2003/7/14/another-brain-killer-from-chris-brumme.html) - Jul 11, 2003 ### [Quake II .Net](https://osherove.com/blog/2003/7/11/quake-ii-net.html) --- title: "Another brain killer from Chris Brumme" url: "https://osherove.com/blog/2003/7/14/another-brain-killer-from-chris-brumme.md" canonical: "https://osherove.com/blog/2003/7/14/another-brain-killer-from-chris-brumme.html" published: "2003-07-14T17:06:00" updated: "2003-07-14T17:06:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Oh dear. It looks like Chris Brumme posted another \"post\". This time it is regarding TransparentProxy and measures in at about 6,300 words. Oh well, there goes my evening...." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another brain killer from Chris Brumme By Roy Osherove July 14, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 14, 2003; technical details may be outdated. Oh dear. It looks like [Chris Brumme](http://blogs.gotdotnet.com/cbrumme/) posted another "post". This time it is regarding [TransparentProxy](http://blogs.gotdotnet.com/cbrumme/permalink.aspx/24e9e5f5-9923-4cf9-b097-9c018c69d5cb) and measures in at about 6,300 words. Oh well, there goes my evening.... ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 16, 2003 ### [We will not ship s#!\*t](https://osherove.com/blog/2003/7/16/we-will-not-ship-st.html) - Jul 14, 2003 ### [A C# programmer's VB.Net starter kit](https://osherove.com/blog/2003/7/14/a-c-programmers-vbnet-starter-kit.html) - Jul 11, 2003 ### [Quake II .Net](https://osherove.com/blog/2003/7/11/quake-ii-net.html) - Jul 10, 2003 ### [DirectCast](https://osherove.com/blog/2003/7/10/directcast.html) --- title: "Hero [ot]" url: "https://osherove.com/blog/2003/7/14/hero-ot.md" canonical: "https://osherove.com/blog/2003/7/14/hero-ot.html" published: "2003-07-14T16:53:00" updated: "2003-07-14T16:53:00" tags: ["Off Topic"] author: "Roy Osherove" description: "\" Hero \" is my new favorite movie. It has everything Matrix Reloaded wanted to have - great martial arts scenes, good actors, and a story. I had the same experience as I did watching \"Crouching tiger,hidden dragon\" for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hero \[ot\] By Roy Osherove July 14, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 14, 2003; technical details may be outdated. "[Hero](http://www.play-asia.com/paos-17_001007c0000000000000000.html)" is my new favorite movie. It has everything Matrix Reloaded wanted to have - great martial arts scenes, good actors, and a story. I had the same experience as I did watching "Crouching tiger,hidden dragon" for the first time. "wow". but this one tops even that movie. coolness. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 15, 2003 ### [New job](https://osherove.com/blog/2003/7/15/new-job.html) - Jul 15, 2003 ### [The PDC is missing its target audience](https://osherove.com/blog/2003/7/15/the-pdc-is-missing-its-target-audience.html) - Jul 11, 2003 ### [Geek encounters](https://osherove.com/blog/2003/7/11/geek-encounters.html) - Jul 9, 2003 ### [Microsoft does, but can do even more](https://osherove.com/blog/2003/7/9/microsoft-does-but-can-do-even-more.html) --- title: "Command line life saver - LinkD" url: "https://osherove.com/blog/2003/7/12/command-line-life-saver-linkd.md" canonical: "https://osherove.com/blog/2003/7/12/command-line-life-saver-linkd.html" published: "2003-07-12T19:40:00" updated: "2003-07-12T19:40:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "Craig explains and points to a wonderful tool that makes working with long directory names from the command line a breeze - LinkD . This and other useful tools can be found here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Command line life saver - LinkD By Roy Osherove July 12, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published July 12, 2003; technical details may be outdated. [Craig explains and points to a wonderful tool](http://staff.develop.com/candera/weblog2/permalink.aspx/b298fb8a-4e31-4f75-a736-cfe37c15f396) that makes working with long directory names from the command line a breeze - **LinkD**. This and other useful tools can be found [here](http://www.petri.co.il/download_free_reskit_tools.htm). ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jul 18, 2003 ### [Yet another new tabbed browser? This one has some new features](https://osherove.com/blog/2003/7/18/yet-another-new-tabbed-browser-this-one-has-some-new-feature.html) - Jul 18, 2003 ### [Make your desktop show active RSS content](https://osherove.com/blog/2003/7/18/make-your-desktop-show-active-rss-content.html) - Jul 7, 2003 ### [FeedDemon fixes abound!](https://osherove.com/blog/2003/7/7/feeddemon-fixes-abound.html) - Jul 5, 2003 ### [Settings Add-in ver. 1.0 released on GotDotNet](https://osherove.com/blog/2003/7/5/settings-add-in-ver-10-released-on-gotdotnet.html) --- title: "The blogger chain letter?" url: "https://osherove.com/blog/2003/7/11/the-blogger-chain-letter.md" canonical: "https://osherove.com/blog/2003/7/11/the-blogger-chain-letter.html" published: "2003-07-11T22:20:00" updated: "2003-07-11T22:20:00" tags: ["Blogging"] author: "Roy Osherove" description: "Hmm. Could this be the start of the blogger chain-letter of the future? I wonder if implementing such an idea here on .NetWeblogs might be viable. I know I'd like to see the \"celebrity\" bloggers answer 5 interview…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The blogger chain letter? By Roy Osherove July 11, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 11, 2003; technical details may be outdated. Hmm. Could [this](http://www.livejournal.com/users/darkmoon/1469933.html) be the start of the blogger chain-letter of the future? I wonder if implementing such an idea here on .NetWeblogs might be viable. I know I'd like to see the "celebrity" bloggers answer 5 interview questions... ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 18, 2003 ### [Make your desktop show active RSS content](https://osherove.com/blog/2003/7/18/make-your-desktop-show-active-rss-content.html) - Jul 14, 2003 ### [Vote for your favorite desktop at the .Net Desktops Contest](https://osherove.com/blog/2003/7/14/vote-for-your-favorite-desktop-at-the-net-desktops-contest.html) - Jul 9, 2003 ### [Microsoft does, but can do even more](https://osherove.com/blog/2003/7/9/microsoft-does-but-can-do-even-more.html) - Jul 7, 2003 ### [FeedDemon fixes abound!](https://osherove.com/blog/2003/7/7/feeddemon-fixes-abound.html) --- title: "Geek encounters" url: "https://osherove.com/blog/2003/7/11/geek-encounters.md" canonical: "https://osherove.com/blog/2003/7/11/geek-encounters.html" published: "2003-07-11T09:28:00" updated: "2003-07-11T09:28:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Yesterday, after work, I got the chance to meet up with Yosi & Lior and see where they work(at SPL ). Later we grabbed our cars and headed out for a small dinner(I still can’t eat anything even now, and its already noon…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Geek encounters By Roy Osherove July 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 11, 2003; technical details may be outdated. Yesterday, after work, I got the chance to meet up with [Yosi](http://weblogs.asp.net/yosit/) & [Lior](http://weblogs.asp.net/lrozner/) and see where they work(at [SPL](http://www.splsoftware.com/default.asp)). Later we grabbed our cars and headed out for a small dinner(I still can’t eat anything even now, and its already noon the next day) and got to talk about all the things that us geeks talk about when we get together and have small dinners with no one to stop us from speaking about the geeky stuff we like to talk about \[this sentence has been cut for readability’s sake\]. One of the things we talked about was a bit of a drag – **“Getting there from here”.** This subject means different things to different people, but to me, this means “making it” in the software world, getting recognition, and do what I love in the process (i.e. “working at Microsoft”). Now, **I know** that the chances of me getting a job at Microsoft USA are pretty darn slim. In fact, it does not even matter if I were one of the greatest minds on the planet. I wouldn’t get there without one of two things: ·         Networking ·         Exposure Without these two things, I can have skills from here to New York, and still no one would know. I could write a resume and submit it to [Microsoft’s career site](http://www.microsoft.com/careers)(which I did), but it seems that me being is Israel would mean that it wont even be read. No. My only chance is to expose myself(and this blog is a start) to the world and hope that the right person stops by and picks me.  Either that, or I have to have a network of connections going up all the way to Microsoft, and this network has no be connected to that right person who picks me. That’s situation I find myself in(And I thin I’m not the only one). This is not to say that I can’t find a great job in Israel and have the time of my life there, it just means that my dream job is practically a dream. Without a work visa to the US – almost any job in the U.S is a dream. Getting back to my post, After 3 hours of geek talk, we decided that this was too fun to stop now, so we arranged to meet up later that evening , each with his wife/girlfriend, at the “Stakato” restaurant in Herzliya.   This place is located right at the heart of one of the most hi-tech oriented city blocks in Israel, and can be compared to Times Square, only on a much much smaller scale(this is Israel, remember? Everything is smaller here). At night the place is swarming with people and lively restaurants, each with different music coming out of its loudspeakers, and you can hear it all a mile away. It makes for an interesting “carnival-like” feeling, although the music is not Brazilian(mostly), just plain hip-hop,dance or other modem stuff. The get together was great. We had a lot of laughs and talked about our backgrounds, what we do, where we live, stuff we went through. You know. The usual.  It was nice to go out and have some laughs and drinks. I was a total geek and wore my “Visual Studio .Net” T-Shirt. I got some good news that evening: [One of my articles](http://www.ondotnet.com/lpt/a/3888) will be republished on the [MSDNAA](http://www.msdnaa.net/) site, which really flattered me. Yosi asked me whether I’d like to give a talk in the next Tech-Ed in Israel(in about a year) about advanced regular expressions and parsing. How could I say no to that? Of course, its not a done deal. It was just a thought, but hey, you gotta start somewhere. Later in the car on the way home Tal, my wife, told me “Great guys!”. I knew it. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 15, 2003 ### [The PDC is missing its target audience](https://osherove.com/blog/2003/7/15/the-pdc-is-missing-its-target-audience.html) - Jul 14, 2003 ### [Hero \[ot\]](https://osherove.com/blog/2003/7/14/hero-ot.html) - Jul 9, 2003 ### [Microsoft does, but can do even more](https://osherove.com/blog/2003/7/9/microsoft-does-but-can-do-even-more.html) - Jul 9, 2003 ### [Smile! You're on candid camera!](https://osherove.com/blog/2003/7/9/smile-youre-on-candid-camera.html) --- title: "Quake II .Net" url: "https://osherove.com/blog/2003/7/11/quake-ii-net.md" canonical: "https://osherove.com/blog/2003/7/11/quake-ii-net.html" published: "2003-07-11T08:31:00" updated: "2003-07-11T08:31:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Now this is cool: Quake II in managed C++. (via Clemens )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Quake II .Net By Roy Osherove July 11, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 11, 2003; technical details may be outdated. Now  **this** is cool: [Quake II in managed C++.](http://radio.weblogs.com/0108971/2003/07/11.html#a220) (via [Clemens](http://radio.weblogs.com/0108971/)) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 14, 2003 ### [A C# programmer's VB.Net starter kit](https://osherove.com/blog/2003/7/14/a-c-programmers-vbnet-starter-kit.html) - Jul 14, 2003 ### [Another brain killer from Chris Brumme](https://osherove.com/blog/2003/7/14/another-brain-killer-from-chris-brumme.html) - Jul 10, 2003 ### [DirectCast](https://osherove.com/blog/2003/7/10/directcast.html) - Jul 10, 2003 ### [Downloadable MSDN magazine](https://osherove.com/blog/2003/7/10/downloadable-msdn-magazine.html) --- title: "DirectCast" url: "https://osherove.com/blog/2003/7/10/directcast.md" canonical: "https://osherove.com/blog/2003/7/10/directcast.html" published: "2003-07-10T20:34:00" updated: "2003-07-10T20:34:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "For us VB.Net programmers. You should know about DirectCast . (via Paul Vick )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # DirectCast By Roy Osherove July 10, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 10, 2003; technical details may be outdated. For us VB.Net programmers. You should know [about DirectCast](http://www.panopticoncentral.net/commentview.aspx/8c666b6b-8933-488a-aa7c-f42c52873824). (via [Paul Vick](http://www.panopticoncentral.net/)) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 14, 2003 ### [Another brain killer from Chris Brumme](https://osherove.com/blog/2003/7/14/another-brain-killer-from-chris-brumme.html) - Jul 11, 2003 ### [Quake II .Net](https://osherove.com/blog/2003/7/11/quake-ii-net.html) - Jul 10, 2003 ### [Downloadable MSDN magazine](https://osherove.com/blog/2003/7/10/downloadable-msdn-magazine.html) - Jul 9, 2003 ### [Patterns](https://osherove.com/blog/2003/7/9/patterns.html) --- title: "Downloadable MSDN magazine" url: "https://osherove.com/blog/2003/7/10/downloadable-msdn-magazine.md" canonical: "https://osherove.com/blog/2003/7/10/downloadable-msdn-magazine.html" published: "2003-07-10T01:55:00" updated: "2003-07-10T01:55:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Whoa! I didn't realize this, but Stephen Toub points out that the monthly issues of MSDN Magazine are available in downloadable CHM format . [ The Furrygoat Experience ] Cool! I read MSDN regularly, but havn't noticed…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Downloadable MSDN magazine By Roy Osherove July 10, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 10, 2003; technical details may be outdated. _Whoa! I didn't realize this, but_ [_Stephen Toub_](http://blogs.gotdotnet.com/stoub/) [_points out_](http://blogs.gotdotnet.com/stoub/PermaLink.aspx/f06899c8-68ec-4263-ac1c-e35c63a504e7) _that the_ [_monthly issues of MSDN Magazine_](http://msdn.microsoft.com/msdnmag/issues/03/07/default.aspx) _are available in_ [_downloadable CHM format_](http://msdn.microsoft.com/msdnmag/issues/03/07/MSDNMag0307.chm)_._ \[[The Furrygoat Experience](http://www.furrygoat.com/)\] Cool! I read MSDN regularly, but havn't noticed the thing either :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 11, 2003 ### [Quake II .Net](https://osherove.com/blog/2003/7/11/quake-ii-net.html) - Jul 10, 2003 ### [DirectCast](https://osherove.com/blog/2003/7/10/directcast.html) - Jul 9, 2003 ### [Patterns](https://osherove.com/blog/2003/7/9/patterns.html) - Jul 6, 2003 ### [Visual Studio .NET and C# Tips and Tricks](https://osherove.com/blog/2003/7/6/visual-studio-net-and-c-tips-and-tricks.html) --- title: "Patterns" url: "https://osherove.com/blog/2003/7/9/patterns.md" canonical: "https://osherove.com/blog/2003/7/9/patterns.html" published: "2003-07-09T17:19:00" updated: "2003-07-09T17:19:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "You want to read those ... yes you do want to read them even if you alread went through the GoF patterns for C# . [ Benjamin J. J. Voigt ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Patterns By Roy Osherove July 9, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 9, 2003; technical details may be outdated. _You want to read_ [_those_](http://msdn.microsoft.com/practices/type/Patterns/default.asp)_... yes you do want to read them even if you alread went through the_ [_GoF patterns for C#_](http://www.dofactory.com/Patterns/Patterns.aspx)_._ \[[Benjamin J. J. Voigt](http://www.shamiro.ch/weblog/default.aspx)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 10, 2003 ### [DirectCast](https://osherove.com/blog/2003/7/10/directcast.html) - Jul 10, 2003 ### [Downloadable MSDN magazine](https://osherove.com/blog/2003/7/10/downloadable-msdn-magazine.html) - Jul 6, 2003 ### [Visual Studio .NET and C# Tips and Tricks](https://osherove.com/blog/2003/7/6/visual-studio-net-and-c-tips-and-tricks.html) - Jul 1, 2003 ### [.Net Rocks with Tim Huckaby](https://osherove.com/blog/2003/7/1/net-rocks-with-tim-huckaby.html) --- title: "Microsoft does, but can do even more" url: "https://osherove.com/blog/2003/7/9/microsoft-does-but-can-do-even-more.md" canonical: "https://osherove.com/blog/2003/7/9/microsoft-does-but-can-do-even-more.html" published: "2003-07-09T16:21:00" updated: "2003-07-09T16:21:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "I was glad to see that Paul Vick read what I wrote (but answered on a different subject). It feels good to know that the right people are reading what you are saying. Paul - if youre reading this - I love what you did…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft does, but can do even more By Roy Osherove July 9, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 9, 2003; technical details may be outdated. I was glad to see that [Paul Vick](http://www.panopticoncentral.net/PermaLink.aspx/79f8ee66-6af9-45ec-9eca-f4723dc78175)  [read what I wrote](http://www.panopticoncentral.net/PermaLink.aspx/79f8ee66-6af9-45ec-9eca-f4723dc78175)(but answered on a different subject). It feels good to know that the right people are reading what you are saying. Paul - if youre reading this - I **love** what you did with VB.Net. You're making a great product(yes, it has its shortcomings, just like any other product.). hey , if you run into the C# team, tell them that I **love** C# as well. they are both reall cool products. Actually, I'll spill it all(no this is not a suck up) - I really like what y'all did with .Net, as a whole. It's one hell of a framework, and I love using it. It solves lots of problems, and the community that is starting to gather up is quite amazing. **Kudos**. Now, here's what I'd like to see you do more of: - Be more involved in the community (being a weblogger - having your people blog who be a great way IMHO). There's nothing I love more than to follow the personal musings of the people who actually decide what I'll get to program on for the next so and so years. - That  also means being more involved in Israel(or any other country that feels neglected). Yeah, the last .Net deep dive event was great, but I want more. If you have giveaways for MSDN subscriptions, don't just give them out in the US(I'll just mention the lates free PDA giveaway, or the free practices book that could only be sent inside the US). I don;t want a second grade, handdwon downloadable copy - I want the real deal. (i.e "First class citizens") Ugh, I can't think of more stuff. I'm too tired. But I'll update this post if something else comes up. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 14, 2003 ### [Vote for your favorite desktop at the .Net Desktops Contest](https://osherove.com/blog/2003/7/14/vote-for-your-favorite-desktop-at-the-net-desktops-contest.html) - Jul 11, 2003 ### [The blogger chain letter?](https://osherove.com/blog/2003/7/11/the-blogger-chain-letter.html) - Jul 7, 2003 ### [FeedDemon fixes abound!](https://osherove.com/blog/2003/7/7/feeddemon-fixes-abound.html) - Jul 3, 2003 ### [6 months and counting](https://osherove.com/blog/2003/7/3/6-months-and-counting.html) --- title: "Smile! You're on candid camera!" url: "https://osherove.com/blog/2003/7/9/smile-youre-on-candid-camera.md" canonical: "https://osherove.com/blog/2003/7/9/smile-youre-on-candid-camera.html" published: "2003-07-09T16:04:00" updated: "2003-07-09T16:04:00" tags: ["Off Topic"] author: "Roy Osherove" description: "By the way, tonight's lecture was taken in Microsoft's offices in Kfar-Saba. Did you know that they tape all the lectures there on video ? ut not in a mounted - middle of the room camera. nope. It's like the ones used…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Smile! You're on candid camera! By Roy Osherove July 9, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 9, 2003; technical details may be outdated. By the way, [tonight's lecture](http://weblogs.asp.net/rosherove/posts/9884.aspx) was taken in Microsoft's offices in Kfar-Saba. Did you know that they tape all the lectures there **on video**? ut not in a mounted - middle of the room camera. nope. It's like the ones used against thefts in department stores all over the world. You can;t see where it looking, or even if its turned on. . We could see the camera house mounted in the center of the lecture hall's ceiling (looks like the ones that you have in department stores - in a round, mirror coated half-ball hanging from the ceiling). From what I got, Microsoft's CEO - Arye scoop, actually watches the lectures when he gets the chance. How cool(or scary) is that? Now **there's** pressure for ya ;) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 11, 2003 ### [Geek encounters](https://osherove.com/blog/2003/7/11/geek-encounters.html) - Jul 9, 2003 ### [Microsoft does, but can do even more](https://osherove.com/blog/2003/7/9/microsoft-does-but-can-do-even-more.html) - Jul 8, 2003 ### [IDE enhancements - conclusion?](https://osherove.com/blog/2003/7/8/ide-enhancements-conclusion.html) - Jul 8, 2003 ### [Am I the stereotypical VB programmer?](https://osherove.com/blog/2003/7/8/am-i-the-stereotypical-vb-programmer.html) --- title: "Tonight's user group meeting went great (or - What does the matrix, X-Box's \"Halo\" and COM+ have in common?)" url: "https://osherove.com/blog/2003/7/9/tonights-user-group-meeting-went-great-or-what-does-the-matr.md" canonical: "https://osherove.com/blog/2003/7/9/tonights-user-group-meeting-went-great-or-what-does-the-matr.html" published: "2003-07-09T15:53:00" updated: "2003-07-09T15:53:00" tags: [".Net Original"] author: "Roy Osherove" description: "Just got back from tonight's Israel web developers group meeting . The lecture was made by Yosi Taguri & Lior Rozner and was about the basics of COM+. Now, I never got the chance to work on an application that used…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tonight's user group meeting went great (or - What does the matrix, X-Box's "Halo" and COM+ have in common?) By Roy Osherove July 9, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 9, 2003; technical details may be outdated. Just got back from [tonight's Israel web developers group meeting](http://teched.magen.com/Events/event.aspx?EventID=36). The lecture was made by [Yosi Taguri](http://weblogs.asp.net/yosit/) & [Lior Rozner](http://weblogs.asp.net/lrozner/) and was about the basics of COM+. Now, I never got the chance to work on an application that used COM+(I'm sorry to say), but I've always wanted to learn this subject. Today's lecture was one of the best intros into this subject that I've seen anywhere. These two guys went up on stage(or rather, down - the stage was not elevated,it was sunken) and started out with very common, very simple applications - ones that we've all done before. _"Take two tables, bind them to a data grid, do two changes on the Dataset, and submit"_. From that - they developed the same application only using transactions, then proceeded to do the same application with COM+ transactions, and then explained about the beauty of distributed transactions. Of course, transactions are not everything, but they were the best "business case" to show to a crowd of developers. They showd real problems, and real solutions. They also recommended this book: [Transactional COM+: Building Scalable Applications](https://www.amazon.com/exec/obidos/ASIN/0201615940/qid=1057776492/sr=8-1/ref=sr_8_1/iserializable-20) The lecture was great. Hey, Its the first time I've seen anyone pull out a Matrix(the first) DVD and play a scene just to start the discussion about the Context in COM+. They showd the scene in which mopheus explains to new what is the matrix, right at the start of the movie, and we were all told - _"Whenever you hear the word 'Matrix'  - substitute it with the word 'Context'"_. What you get is morpheus saying something like this: _"The context is all around you. It is the air that you breath. Is goes with you to church, to work, it is the world that had been pulled over your eyes to cover you from the truth"_ **_Very cool._** **Then they pulled out the X-Box and we all played Halo**. How's that for a finish? Somehow - this had something to do with the lecture(I swear I heard them mumbling something about context and transactions, but they were too busy messing around with the joysticks:) The lecture was done by them both, and to be fair I have to say the the first part - in which the architecute of a simple 3-tier application was explained - was a bit slow. It all turned around, though, when the second part came up. Boy, when people talk about stuff they love - their faces just shine. Great job guys! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 15, 2003 ### [.Net articles on MSDNAA](https://osherove.com/blog/2003/7/15/net-articles-on-msdnaa.html) - Jul 14, 2003 ### [More maintainable code(and others) lessons](https://osherove.com/blog/2003/7/14/more-maintainable-codeand-others-lessons.html) - Jul 9, 2003 ### [Israel .net web developers group meeting](https://osherove.com/blog/2003/7/9/israel-net-web-developers-group-meeting.html) - Jul 7, 2003 ### [Advanced debugging tips and stuff you never knew about the "Find" combo box](https://osherove.com/blog/2003/7/7/advanced-debugging-tips-and-stuff-you-never-knew-about-the-q.html) --- title: "Israel .net web developers group meeting" url: "https://osherove.com/blog/2003/7/9/israel-net-web-developers-group-meeting.md" canonical: "https://osherove.com/blog/2003/7/9/israel-net-web-developers-group-meeting.html" published: "2003-07-09T03:32:00" updated: "2003-07-09T03:32:00" tags: [".Net Original"] author: "Roy Osherove" description: "Hope to see you all this evening at the Israel .net web developers group meeting . It looks like its gonna be a very fun lecture about Enterprise services. All I know is that they'll have XBox machines there as well. I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Israel .net web developers group meeting By Roy Osherove July 9, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 9, 2003; technical details may be outdated. Hope to see you all this evening at the [Israel .net web developers group meeting](http://teched.magen.com/Events/event.aspx?EventID=36). It looks like its gonna be a very fun lecture about Enterprise services. All I know is that they'll have XBox machines there as well. I have no idea why :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 14, 2003 ### [More maintainable code(and others) lessons](https://osherove.com/blog/2003/7/14/more-maintainable-codeand-others-lessons.html) - Jul 9, 2003 ### [Tonight's user group meeting went great (or - What does the matrix, X-Box's "Halo" and COM+ have in common?)](https://osherove.com/blog/2003/7/9/tonights-user-group-meeting-went-great-or-what-does-the-matr.html) - Jul 7, 2003 ### [Advanced debugging tips and stuff you never knew about the "Find" combo box](https://osherove.com/blog/2003/7/7/advanced-debugging-tips-and-stuff-you-never-knew-about-the-q.html) - Jul 5, 2003 ### [Settings Add-in ver. 1.0 released on GotDotNet](https://osherove.com/blog/2003/7/5/settings-add-in-ver-10-released-on-gotdotnet.html) --- title: "Speed up Internet Explorer" url: "https://osherove.com/blog/2003/7/9/speed-up-internet-explorer.md" canonical: "https://osherove.com/blog/2003/7/9/speed-up-internet-explorer.html" published: "2003-07-09T03:29:00" updated: "2003-07-09T03:29:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "I just have to re-post this amazingliy powerful tweak , as I've just installed my new machine, and had to do it again. boy, it helps! Speed up Internet Explorer" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Speed up Internet Explorer By Roy Osherove July 9, 2003 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published July 9, 2003; technical details may be outdated. I just have to re-post this amazingliy powerful tweak ,  as I've just installed my new machine, and had to do it again. boy, it helps! [Speed up Internet Explorer](http://www.regxplor.com/tweak11.html) ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Jul 30, 2003 ### [Visual Studio .Net tips page on MSDN](https://osherove.com/blog/2003/7/30/visual-studio-net-tips-page-on-msdn.html) - Jul 18, 2003 ### [Make your desktop show active RSS content](https://osherove.com/blog/2003/7/18/make-your-desktop-show-active-rss-content.html) - Jul 3, 2003 ### [Nice MS Word shortcut](https://osherove.com/blog/2003/7/3/nice-ms-word-shortcut.html) - Jul 3, 2003 ### [Copy MsgBox Text](https://osherove.com/blog/2003/7/3/copy-msgbox-text.html) --- title: "IDE enhancements - conclusion?" url: "https://osherove.com/blog/2003/7/8/ide-enhancements-conclusion.md" canonical: "https://osherove.com/blog/2003/7/8/ide-enhancements-conclusion.html" published: "2003-07-08T14:58:00" updated: "2003-07-08T14:58:00" tags: ["Off Topic"] author: "Roy Osherove" description: "In my last post, I named a few enhancements I’d like to see added to C#’s IDE. I then asked, for each of these, why was it not sensible to add them, or why do they not exist in the first place. I’ve gotten plenty of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # IDE enhancements - conclusion? By Roy Osherove July 8, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 8, 2003; technical details may be outdated. In my last post, I named a few enhancements I’d like to see added to C#’s IDE. I then asked, for each of these, why was it not sensible to add them, or why do they not exist in the first place. I’ve gotten plenty of responses. First, Thanks Oisin, for clearing up what you actually meant. I think your point is well made on a few points, and I can’t say I disagree with some of the things you’ve said. I’ll totally disregard the “language war” theme that keeps bubling up, because that’s not what this is about(although I’ve been there, done that). Second, [Frans posted an extensive post](http://weblogs.asp.net/fbouma/posts/9818.aspx) regarding each item I named separately. I can only say it was a very interesting read, and whoever is interested in getting real answers to my ponderings should read that first. I don’t want this to turn into a language war thing. I wanted the discussion to focus on the reasons some things are, and why some things can’t be. I got the answers for those things, and , like any logical programmer – once I got the logic behind that, I agree and understand with **some** of the stuff.  I haven’t changed my mind about some of them, but I now fully realize why some things are as they are today, and why some will never be. Thanks guys. My knowledge world just got richer today thanks to you J ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 9, 2003 ### [Microsoft does, but can do even more](https://osherove.com/blog/2003/7/9/microsoft-does-but-can-do-even-more.html) - Jul 9, 2003 ### [Smile! You're on candid camera!](https://osherove.com/blog/2003/7/9/smile-youre-on-candid-camera.html) - Jul 8, 2003 ### [Am I the stereotypical VB programmer?](https://osherove.com/blog/2003/7/8/am-i-the-stereotypical-vb-programmer.html) - Jul 7, 2003 ### [Passport identity change](https://osherove.com/blog/2003/7/7/passport-identity-change.html) --- title: "Am I the stereotypical VB programmer?" url: "https://osherove.com/blog/2003/7/8/am-i-the-stereotypical-vb-programmer.md" canonical: "https://osherove.com/blog/2003/7/8/am-i-the-stereotypical-vb-programmer.html" published: "2003-07-08T10:03:00" updated: "2003-07-08T10:03:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Oisin responds to my requests regarding VS.Net IDE enhancements : \"Roy, if there ever was a stereotypical VB programmer to be singled out as an example, it would be you. Absolutely no understanding of why things aren't…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Am I the stereotypical VB programmer? By Roy Osherove July 8, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 8, 2003; technical details may be outdated. Oisin responds to my [requests regarding VS.Net IDE enhancements](http://weblogs.asp.net/rosherove/posts/9726.aspx): "Roy, if there ever was a stereotypical VB programmer to be singled out as an example, it would be you. Absolutely no understanding of why things aren't all like VB. This post was enough to put me off reading your blog for good. Unsubscribed."   It seems I have succumbed to the stereotype of the VB programmer: " Absolutely no understanding of why things aren't all like VB. "   m\_readers-1. I fail to see how you could have figured that out from my post. As a long time programmer I've used more than one language, and am involved in C# and VB.NET development for quite some time now.  It is not uncommon for a programmer who is versatile in more than one language to compare between the two, and even ask questions that might seem obvious to someone who is looking from deep down inside the trenches, or that has only "done" one language for most of his life, or is set on a particular style. Want an example? How many C and C++ programmers, after learning the intricacies of C#, would take the trouble to learn VB.NET? Does that question seem irrelevant? Funny? Stupid?   Why? VB6/VB.NET developers will most likely do this in regards to C#. This will mostly be due to job constraints, though, and they'll have a hard time adjusting, but a lot of VB.NET programmers realize that they **need** to learn it or they will be left behind in the job market(and I'm saying this as a guy who loved VB.Net). C# folks feel less of that pressure, and so feel less obliged to do the opposite, but because they won't try this new "thing", they'll only have the point of view from "their" side of the street. That VB.Net to C# move will likely yield tons of questions that might seem irrelevant/stupid/unknowing, but those are \*exactly\* the kinds of questions that C-syntaxers should watch out for. Their bringing a whole new way of thinking, a RAD way, into what was once the fort of the hardcore programmers. C# is more RAD than hardcore in its current incarnation, but many C#'ers don’t see it that way.   Now, the issues I've raised were mostly productivity issues, that could benefit \*any\* of .net's language's IDE.  If you're a hardcore C# fanatic who will have it no other way than "this is how it should be" – you've been warned – there's no real place in this profession for old,stale and unmovable thinking. If you can’t take a few questions that ponder "why" everything couldn’t be different, you're not open minded. Hey, at least if you're gonna defend why some of these things cannot be changed, you might as well give out some good reasons, or explain why things are irrelevant to ponder on.   You know what? I **know** that I have a lot to learn. I **know** that there are lots of things with which you could 'enlighten' me about these subjects. Why not do the more sensible thing and instead of signing off with anger and fury – you could help the world out by helping one misguided stereotypical VB programmer "get" it. I promise to listen carefully. But hey, you have to promise to listen carefully as well. Going through what I suggested to be added to the C# IDE: - Background compile  - **Should there be no background compile in C#? Why?** - Case-insensitivity  - **Why is Case sensitivty important? If its so needed, how could other languages do without it?** - VB.NET-like Intellisense for enums and namespaces writing  - **Why should this not be?** - Automatic creation of "()" braces on method calls -  meaning that writing the following: _MyMethod myParameter_ Turns into: _MyMethod(myParameter)_ automatically.(VB.NET does this very nicely - saving lots of typing time)  **\- OK - how is this productivity enhancement "not meant" to be in C#?** - **With** like functionality VB.NET - jeez - this is the part I miss the most.... - **And this is bad beacause?** Can you exaplin to me each item - one by one - and why it's shouldn't be like VB.Net? (I've just noticed that in that list - I wrote far more things that are missing in VB.Net that the C# list - just a thought) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 9, 2003 ### [Smile! You're on candid camera!](https://osherove.com/blog/2003/7/9/smile-youre-on-candid-camera.html) - Jul 8, 2003 ### [IDE enhancements - conclusion?](https://osherove.com/blog/2003/7/8/ide-enhancements-conclusion.html) - Jul 7, 2003 ### [Passport identity change](https://osherove.com/blog/2003/7/7/passport-identity-change.html) - Jul 7, 2003 ### [Silly quote of the day](https://osherove.com/blog/2003/7/7/silly-quote-of-the-day.html) --- title: "FeedDemon fixes abound!" url: "https://osherove.com/blog/2003/7/7/feeddemon-fixes-abound.md" canonical: "https://osherove.com/blog/2003/7/7/feeddemon-fixes-abound.html" published: "2003-07-07T19:13:00" updated: "2003-07-07T19:13:00" tags: ["Blogging", "Cool Tools"] author: "Roy Osherove" description: "Boy. It seems like FeedDemon's new beta release fixed and added a lot of the things that I complained about (I don't attribute this to me, I'm not that much of a self-centered guy!). Great!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # FeedDemon fixes abound! By Roy Osherove July 7, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published July 7, 2003; technical details may be outdated. Boy. It seems like [FeedDemon's new beta](http://www.bradsoft.com/feeddemon/beta/index.asp) release [fixed and added a lot of the things](http://www.bradsoft.com/feeddemon/readme/readme1b2.asp) that I [complained about](http://weblogs.asp.net/rosherove/posts/9444.aspx)(I don't attribute this to me, I'm  not that much of a self-centered guy!). Great! ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 11, 2003 ### [The blogger chain letter?](https://osherove.com/blog/2003/7/11/the-blogger-chain-letter.html) - Jul 9, 2003 ### [Microsoft does, but can do even more](https://osherove.com/blog/2003/7/9/microsoft-does-but-can-do-even-more.html) - Jul 3, 2003 ### [6 months and counting](https://osherove.com/blog/2003/7/3/6-months-and-counting.html) - Jun 29, 2003 ### [Scripting News Is Down. I'm Sad.](https://osherove.com/blog/2003/6/29/scripting-news-is-down-im-sad.html) --- title: "Advanced debugging tips and stuff you never knew about the \"Find\" combo box" url: "https://osherove.com/blog/2003/7/7/advanced-debugging-tips-and-stuff-you-never-knew-about-the-q.md" canonical: "https://osherove.com/blog/2003/7/7/advanced-debugging-tips-and-stuff-you-never-knew-about-the-q.html" published: "2003-07-07T19:09:00" updated: "2003-07-07T19:09:00" tags: [".Net Original"] author: "Roy Osherove" description: "1) You can set breakpoints on the callstack window as well - just select the call and hit F9 or right click. great for recursive functions. 2 ) You can set individual breakpoints on different expressions on the same…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Advanced debugging tips and stuff you never knew about the "Find" combo box By Roy Osherove July 7, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 7, 2003; technical details may be outdated. 1) **You can set breakpoints on the callstack** window as well - just select the call and hit F9 or right click. great for recursive functions. 2**) You can set individual breakpoints on different expressions** on the same line bye setting the cursor in the specific expression and hitting F9 3) **CTRL+B - advanced breakpoint properties dialog**(if you didn't know this already) 4) **You can set a breakpoint directly on a specific method in a class if you know their names**. Just write down the "class.method" in the "Function" tab of the breakpoint properties dialog and you'll save yourself lots of time in finding that point in code and pressing F9. **Notices**: - It's case sensitive if you're using a case-sensitive language - The method name might not show up in C++ debugging if it's hidden in a DEFINE - You must select the correct language in the breakpoint dialog. - Oh one more thing - if youre using managed C++ you'll have to prefix the debugging expression with "MC::" so to set a break on class MyClass with function MyFunc you'd have to write "MC::MyClass::MyFunc" in the breakpoint dialog. 5) **You can write breakpoints that break on calls to the framework classes**. for example - you could write in the breakpoint dialog - "Console.WriteLine" and you'll break into disassembly whenever you call that function(You'll get a long list of "child" breakpoints for each of that method's overloads in the breakpoint window) You can also break on properties, but you'll have to prefix the property name with a "get\_" or "set\_" prefix. 6)(best one) **Auto-search for methods to breakpoint on.** In the breakpoint dialog, if you type just the name of a method that you know exists, and that method is unique in the application, you'll automatically set a breakpoint there, without the need to specify class name. **BUT** - if you have overloads to that method, or it exists in more than one namespace, you get a list of all the available methods and overloads, allowing you to select on which ones you'd like to set a breakpoint, and the best part - you have an "All" button to quickly set a breakpoint on all of them. If you'e debugging C++ - you can write the \[name of a class\]+ "." and you'll get a list of all members that can be debugged. note: DON'T try this in other languages - you'll get a very nast crash if you do! 7)**A few things you should have known about the "Find" combo on VS.NET's main toolbar:** - If you type the name of a solution file or any other file that is somehow related to the project or is in the INCLUDE environment variable and then press CTRL+SHIFT+G - VS.Net will open that file in the eidotr for editing. - If you write the name of a method (or class.method) like in the breakpoint dialog and press F9 - you'll get the same functionlity like in the breakpoint dialog. - If you type in ">" in the find combo - you'll see that it turns into a run of the mill command line! (including intellisense and all) \[Much of this was learned from the book "[Debugging Applications for Microsoft .NET and Microsoft Windows](https://www.amazon.com/exec/obidos/ASIN/0735615365/qid=1057615405/sr=8-1/ref=sr_8_1/iserializable-20)"\] ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 9, 2003 ### [Tonight's user group meeting went great (or - What does the matrix, X-Box's "Halo" and COM+ have in common?)](https://osherove.com/blog/2003/7/9/tonights-user-group-meeting-went-great-or-what-does-the-matr.html) - Jul 9, 2003 ### [Israel .net web developers group meeting](https://osherove.com/blog/2003/7/9/israel-net-web-developers-group-meeting.html) - Jul 5, 2003 ### [Settings Add-in ver. 1.0 released on GotDotNet](https://osherove.com/blog/2003/7/5/settings-add-in-ver-10-released-on-gotdotnet.html) - Jul 5, 2003 ### [What's missing in today's hottest languages?](https://osherove.com/blog/2003/7/5/whats-missing-in-todays-hottest-languages.html) --- title: "Passport identity change" url: "https://osherove.com/blog/2003/7/7/passport-identity-change.md" canonical: "https://osherove.com/blog/2003/7/7/passport-identity-change.html" published: "2003-07-07T10:54:00" updated: "2003-07-07T10:54:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I had to change my Passport ID today, because it was an iname.com ID, and that is manages by Mail.com , which totally sucks. Their server is slower than my grandmother's turtle(and he's cripple). Speaking of slow - the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Passport identity change By Roy Osherove July 7, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 7, 2003; technical details may be outdated. I had to change my Passport ID today, because it was an **iname.com** ID, and that is manages by **Mail.com** , which totally sucks. Their server is slower than my grandmother's turtle(and he's cripple). Speaking of slow - the whole passport authentication infrastucture is a bloody nightmare. It takes too long to login or log out or to change anything. You have to fix this,MSFT, cause its starting to catch on, and soon this will mean real trouble to real people. Anyway - I did the newbie mistake of not saving all my contacts from my MSN messenger before signing in with the new ID and now I lost them all(all 3!). **So. If you want to contact me via MSN i'm at** **[my contact form](https://osherove.com/contact)**. (Let the spamming begin!). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 8, 2003 ### [IDE enhancements - conclusion?](https://osherove.com/blog/2003/7/8/ide-enhancements-conclusion.html) - Jul 8, 2003 ### [Am I the stereotypical VB programmer?](https://osherove.com/blog/2003/7/8/am-i-the-stereotypical-vb-programmer.html) - Jul 7, 2003 ### [Silly quote of the day](https://osherove.com/blog/2003/7/7/silly-quote-of-the-day.html) - Jul 6, 2003 ### [There goes an hour or two](https://osherove.com/blog/2003/7/6/there-goes-an-hour-or-two.html) --- title: "Silly quote of the day" url: "https://osherove.com/blog/2003/7/7/silly-quote-of-the-day.md" canonical: "https://osherove.com/blog/2003/7/7/silly-quote-of-the-day.html" published: "2003-07-07T07:04:00" updated: "2003-07-07T07:04:00" tags: ["Off Topic"] author: "Roy Osherove" description: "\"Keyboard Error. Hit F1 to continue.\"" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Silly quote of the day By Roy Osherove July 7, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 7, 2003; technical details may be outdated. **"Keyboard Error.** **Hit F1 to continue."** ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 8, 2003 ### [Am I the stereotypical VB programmer?](https://osherove.com/blog/2003/7/8/am-i-the-stereotypical-vb-programmer.html) - Jul 7, 2003 ### [Passport identity change](https://osherove.com/blog/2003/7/7/passport-identity-change.html) - Jul 6, 2003 ### [There goes an hour or two](https://osherove.com/blog/2003/7/6/there-goes-an-hour-or-two.html) - Jul 4, 2003 ### [How's this for less eye strain](https://osherove.com/blog/2003/7/4/hows-this-for-less-eye-strain.html) --- title: "There goes an hour or two" url: "https://osherove.com/blog/2003/7/6/there-goes-an-hour-or-two.md" canonical: "https://osherove.com/blog/2003/7/6/there-goes-an-hour-or-two.html" published: "2003-07-06T05:18:00" updated: "2003-07-06T05:18:00" tags: ["Off Topic"] author: "Roy Osherove" description: "So much for a productive day. My work machine's hard disk failed, appearently during the weekend, so I get to work, and I find a nice black screen with nothing but a \"Disk Read Error\" message. Ugh. Why does that even…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # There goes an hour or two By Roy Osherove July 6, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 6, 2003; technical details may be outdated. So much for a productive day. My work machine's hard disk failed, appearently during the weekend, so I get to work, and I find a nice black screen with nothing but a "Disk Read Error" message. Ugh. Why does that even happen in this day & age? Perhaps we should all start working like in the CIA - all terminals are actually thin clients working against a big mainframe. Did you know those terminals don;t even have Had Drives? So you won't be able to copy informaiton  (They don't have copiers for the same reason) - at least that's what I've learned watching "The Recruit" movie this weekend.  What can I say (If I may digress a litlle..) that movie sucked big time. You've got all that security, yet people still manage to sneak out information using a simple USB hard drive which they connect to their keyboad. How stupid is that? So I move to a different machine so I can continue working, and boy - what a difference a seat makes. All my settings , my favorite settings! gone like the wind! made me think of an idea for software that takes your computer settings and applies them into a different machine(like the [vs.Net add-in](http://weblogs.asp.net/rosherove/posts/9732.aspx) thingy only on a different scale) I'm not talking about moving entire programs, i'm just talking advanced automatic tweaking stuff - like removing the "Really delete? are you absolutely sure that you would like to delete this file you confused little user you?" dialog from the recycle bin and so on... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 7, 2003 ### [Passport identity change](https://osherove.com/blog/2003/7/7/passport-identity-change.html) - Jul 7, 2003 ### [Silly quote of the day](https://osherove.com/blog/2003/7/7/silly-quote-of-the-day.html) - Jul 4, 2003 ### [How's this for less eye strain](https://osherove.com/blog/2003/7/4/hows-this-for-less-eye-strain.html) - Jul 4, 2003 ### [I’ve just learned that a friend of mine is looking for a job.](https://osherove.com/blog/2003/7/4/ive-just-learned-that-a-friend-of-mine-is-looking-for-a-job.html) --- title: "Visual Studio .NET and C# Tips and Tricks" url: "https://osherove.com/blog/2003/7/6/visual-studio-net-and-c-tips-and-tricks.md" canonical: "https://osherove.com/blog/2003/7/6/visual-studio-net-and-c-tips-and-tricks.html" published: "2003-07-06T02:54:00" updated: "2003-07-06T02:54:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Visual Studio .NET and C# Tips and Tricks Software legend Juval Lowy shares his tips, tricks and best practices. Juval demonstrates how to deal with common hurdles and how to effectively apply .NET, by presenting…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Visual Studio .NET and C\# Tips and Tricks By Roy Osherove July 6, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 6, 2003; technical details may be outdated. # [_Visual Studio .NET and C# Tips and Tricks_](http://www.gotdotnet.com/utility/tracking/tracklink.aspx?url=http%3a%2f%2fmsdn.microsoft.com%2fmsdntv%2fepisode.aspx%3fxml%3depisodes%2fen%2f20030701VSNETJL%2fmanifest.xml) _Software legend Juval Lowy shares his tips, tricks and best practices. Juval demonstrates how to deal with common hurdles and how to effectively apply .NET, by presenting utilities and ideas that can enhance your productivity significantly._ \[[GotDotNet](http://www.gotdotnet.com/)\] Nice tips... ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 10, 2003 ### [Downloadable MSDN magazine](https://osherove.com/blog/2003/7/10/downloadable-msdn-magazine.html) - Jul 9, 2003 ### [Patterns](https://osherove.com/blog/2003/7/9/patterns.html) - Jul 1, 2003 ### [.Net Rocks with Tim Huckaby](https://osherove.com/blog/2003/7/1/net-rocks-with-tim-huckaby.html) - Jun 28, 2003 ### [Nice page of ADO.NET notes & tips](https://osherove.com/blog/2003/6/28/nice-page-of-adonet-notes-amp-tips.html) --- title: "Settings Add-in ver. 1.0 released on GotDotNet" url: "https://osherove.com/blog/2003/7/5/settings-add-in-ver-10-released-on-gotdotnet.md" canonical: "https://osherove.com/blog/2003/7/5/settings-add-in-ver-10-released-on-gotdotnet.html" published: "2003-07-05T14:52:00" updated: "2003-07-05T14:52:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "OK. I've released version 1.0 of my VS.NET Settings add-in on GotDotNet. Here's the project's URL. You can download the full setup there ( Currently tested on vs.net 2002 only ). After installation you'll get a new menu…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Settings Add-in ver. 1.0 released on GotDotNet By Roy Osherove July 5, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published July 5, 2003; technical details may be outdated. OK. I've released version 1.0 of my VS.NET Settings add-in on GotDotNet. [Here's the project's URL.](http://www.gotdotnet.com/Community/Workspaces/workspace.aspx?id=a8203f73-5da3-4e7c-839e-a7c82b797a90) You can download the full setup there (**Currently tested on vs.net 2002 only**). After installation you'll get a new menu command uner the vs.net "**tools**" menu called "**SettingsAddin**" (Havn't figured out how to change the damn thing yet!). clicking on it allows you to either import an existing settings file(which was exported earlier) or to export your current color configurations to a settings file. sweet & simple. since this is my first gotDotNet project, I sure made some "newbie" mistakes, so I'd like to know of any(such as missing source control stuff or whatever). I welcome participation and code contributions, so feel free to join in. here are some screenshots: <table><tbody><tr><td></td><td width="1"></td></tr><tr><td colspan="3" height="1"></td></tr></tbody></table> Tab 1 - Import <table><tbody><tr><td></td><td width="1"></td></tr><tr><td colspan="3" height="1"></td></tr></tbody></table> Tab 2 - Export ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 9, 2003 ### [Israel .net web developers group meeting](https://osherove.com/blog/2003/7/9/israel-net-web-developers-group-meeting.html) - Jul 7, 2003 ### [Advanced debugging tips and stuff you never knew about the "Find" combo box](https://osherove.com/blog/2003/7/7/advanced-debugging-tips-and-stuff-you-never-knew-about-the-q.html) - Jul 5, 2003 ### [What's missing in today's hottest languages?](https://osherove.com/blog/2003/7/5/whats-missing-in-todays-hottest-languages.html) - Jul 4, 2003 ### [Export and import VS.NET's text editor's color and font settings](https://osherove.com/blog/2003/7/4/export-and-import-vsnets-text-editors-color-and-font-setting.html) --- title: "What's missing in today's hottest languages?" url: "https://osherove.com/blog/2003/7/5/whats-missing-in-todays-hottest-languages.md" canonical: "https://osherove.com/blog/2003/7/5/whats-missing-in-todays-hottest-languages.html" published: "2003-07-05T04:29:00" updated: "2003-07-05T04:29:00" tags: [".Net Original"] author: "Roy Osherove" description: "Some of these changes refeer to stuff that is simply missing as an IDE feature rather than a language construct, but you get the drift.. Things VB.NET should have had out of the box: Multiple lines code (i.e. no \"_\"…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What's missing in today's hottest languages? By Roy Osherove July 5, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 5, 2003; technical details may be outdated. Some of these changes refeer to stuff that is simply missing as an IDE feature rather than a language construct, but you get the drift.. **Things VB.NET should have had out of the box:** - Multiple lines code (i.e. no "\_" needed to break a line into smaller ones - much more readable code (Especially when declaring attributes - yuck!) - Multiple lined comments - XML help tags like C#(Why do we need VBCommenter for such a basic thing?) - "Debug" and "Release" build folders by default. Why the hell is that missing? - Indexed properties and arrays accessed like C#'s arrays - using "\[\]" and not "()" - The same for attributes - using "<>" is \*ugly\* **Things C# should have had out of the box:** - Background compile - Case-insensitivity - VB.NET-like Intellisense for enums and namespaces writing - Automatic creation of "()" braces on method calls -  meaning that writing the following: _MyMethod myParameter_ Turns into: _MyMethod(myParameter)_ automatically.(VB.NET does this very nicely - saving lots of typing time) - **With** like functionality VB.NET - jeez - this is the part I miss the most.... I'd say that any languages that adopts these changes automatically becomes my "perfect" language - for the time being... :) Update: I \*knew\* I'd forget some stuff: - Edit &  continue in both languages - VB.NET - properties - public getters with private/friend setters making your property read only for the  public but writable for internal or friend classes (thnks to [Jan](http://weblogs.asp.net/jan/posts/9727.aspx) for reminding me...) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 7, 2003 ### [Advanced debugging tips and stuff you never knew about the "Find" combo box](https://osherove.com/blog/2003/7/7/advanced-debugging-tips-and-stuff-you-never-knew-about-the-q.html) - Jul 5, 2003 ### [Settings Add-in ver. 1.0 released on GotDotNet](https://osherove.com/blog/2003/7/5/settings-add-in-ver-10-released-on-gotdotnet.html) - Jul 4, 2003 ### [Export and import VS.NET's text editor's color and font settings](https://osherove.com/blog/2003/7/4/export-and-import-vsnets-text-editors-color-and-font-setting.html) - Jul 3, 2003 ### [A much needed SchemaHelper class](https://osherove.com/blog/2003/7/3/a-much-needed-schemahelper-class-1.html) --- title: "Export and import VS.NET's text editor's color and font settings" url: "https://osherove.com/blog/2003/7/4/export-and-import-vsnets-text-editors-color-and-font-setting.md" canonical: "https://osherove.com/blog/2003/7/4/export-and-import-vsnets-text-editors-color-and-font-setting.html" published: "2003-07-04T23:20:00" updated: "2003-07-04T23:20:00" tags: [".Net Original"] author: "Roy Osherove" description: "I like customizing the way my VS.NET text editor looks and feels. I like dabbling with the colors and settings of the editor until everything is just as I like it. One caveat – If I move to a different computer – all…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Export and import VS.NET's text editor's color and font settings By Roy Osherove July 4, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 4, 2003; technical details may be outdated. I like customizing the way my VS.NET text editor looks and feels. I like dabbling with the colors and settings of the editor until everything is just as I like it. One caveat – If I move to a different computer – all the settings are gone, and I could find no way of taking them with me. So – I created this handy little macro module, which allows you to : ·         **Save** your current colors and fonts settings in a text file ·         **Load** colors and settings from a text file Simple huh? I’ve only tested this with vs.net 2002, so I’d like to know if it works on 2003 as well… Here’s the code. To use it, just copy and paste it all in a new module in your vs.net macros(ALT+F11). I'll try to turn this into an easier t use addin(will be a nice learning exercise..) Update: I'll have the Add-in ready by the end of the day :) it's pretty cool! --- Imports EnvDTE Imports System.IO Imports System.Text Imports System Public Module Settings     '-------------------------------------------------     'saves the current color and font settings of the text editor to a named text file     Public Sub SaveColorSettings()         Dim sb As New StringBuilder()         Dim clr As \[Property\]         Dim ci As ColorableItems         Dim sFile As String = GetFileName()         If sFile = "" Then Exit Sub clr = \_ DTE.Properties("FontsAndColors","TextEditor").Item(\_ "FontsAndColorsItems")         For Each ci In clr.Object             sb.Append(ci.Name & vbTab & \_ ci.Foreground.ToString() & vbTab & \_ ci.Bold.ToString() & vbTab & \_ ci.Background.ToString() & vbNewLine)         Next         Dim write As TextWriter = File.CreateText(sFile)         write.Write(sb.ToString())         write.Close()         MsgBox(sFile & " created!", MsgBoxStyle.Information)     End Sub     '--------------------------------------------     'Loads color and font settings of the ‘text editor from a named text file     Public Sub LoadColorSettings()         Dim sFile As String = GetFileName()         If sFile = "" Then Exit Sub         Dim reader As TextReader = File.OpenText(sFile)         Dim sLine As String         Try             Do                 sLine = reader.ReadLine()                 ParseLine(sLine)             Loop While sLine.Length > 0         Catch e As Exception         End Try         MsgBox("settings loaded successfully!")     End Sub     '---------------------------------------------------     Private Function DefaultSettingsFileName() As String         Return Path.Combine(Environment.CurrentDirectory, "EditorSettings.txt")     End Function     '------------------------------------------------------     Private Sub ParseLine(ByVal sLine As String)         Dim clr As \[Property\]         Dim ci As ColorableItems         Dim arr As String()         Try             arr = Split(sLine, vbTab)             clr = DTE.Properties("FontsAndColors", "TextEditor").Item("FontsAndColorsItems")             ci = clr.Object(arr(0))             ci.Foreground = UInt32.Parse(arr(1).ToString())             ci.Bold = Boolean.Parse(arr(2).ToString())             ci.Background = UInt32.Parse(arr(3).ToString())         Catch e As Exception         End Try     End Sub     '------------------------------------------------------     Private Function GetFileName() As String         Dim sFile As String = InputBox( \_ "Enter the file name to create/load from", \_ "Settings file name", DefaultSettingsFileName())         Return sFile     End Function     '------------------------------------------------- End Module ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 5, 2003 ### [Settings Add-in ver. 1.0 released on GotDotNet](https://osherove.com/blog/2003/7/5/settings-add-in-ver-10-released-on-gotdotnet.html) - Jul 5, 2003 ### [What's missing in today's hottest languages?](https://osherove.com/blog/2003/7/5/whats-missing-in-todays-hottest-languages.html) - Jul 3, 2003 ### [A much needed SchemaHelper class](https://osherove.com/blog/2003/7/3/a-much-needed-schemahelper-class-1.html) - Jul 1, 2003 ### [Why I write in Both C# and VB.NET](https://osherove.com/blog/2003/7/1/why-i-write-in-both-c-and-vbnet.html) --- title: "How's this for less eye strain" url: "https://osherove.com/blog/2003/7/4/hows-this-for-less-eye-strain.md" canonical: "https://osherove.com/blog/2003/7/4/hows-this-for-less-eye-strain.html" published: "2003-07-04T21:34:00" updated: "2003-07-04T21:34:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I was fiddling with the color settings for visual studio, and was trying to get a less eye-straining environment for coding in. Turns out I made the perfect settings.. if I were a black ops agent or something..." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How's this for less eye strain By Roy Osherove July 4, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 4, 2003; technical details may be outdated. I was fiddling with the color settings for visual studio, and was trying to get a less eye-straining environment for coding in. Turns out I made the perfect settings.. if I were a black ops agent or something... <table><tbody><tr><td colspan="3" height="1"></td></tr><tr><td width="1"></td><td><a href="http://pnavy.com/royo/Me/BlackCode?full=1"><img alt="" decoding="async" height="105" loading="lazy" src="https://osherove.com/img/wb/7ba8723a_pnavy.com_royo_albums_Me_BlackCode.thumb.jpg" width="150"></a></td></tr></tbody></table> ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 7, 2003 ### [Silly quote of the day](https://osherove.com/blog/2003/7/7/silly-quote-of-the-day.html) - Jul 6, 2003 ### [There goes an hour or two](https://osherove.com/blog/2003/7/6/there-goes-an-hour-or-two.html) - Jul 4, 2003 ### [I’ve just learned that a friend of mine is looking for a job.](https://osherove.com/blog/2003/7/4/ive-just-learned-that-a-friend-of-mine-is-looking-for-a-job.html) - Jul 3, 2003 ### [About maintainable code](https://osherove.com/blog/2003/7/3/about-maintainable-code.html) --- title: "I’ve just learned that a friend of mine is looking for a job." url: "https://osherove.com/blog/2003/7/4/ive-just-learned-that-a-friend-of-mine-is-looking-for-a-job.md" canonical: "https://osherove.com/blog/2003/7/4/ive-just-learned-that-a-friend-of-mine-is-looking-for-a-job.html" published: "2003-07-04T12:59:00" updated: "2003-07-04T12:59:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I’ve just learned that a very good friend of mine is looking for a job. If you’re looking for a Graphics artist/Web designer / Flash wizard and you’re based in the London area, you should seriously consider checking him…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I’ve just learned that a friend of mine is looking for a job. By Roy Osherove July 4, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 4, 2003; technical details may be outdated. I’ve just learned that a very good friend of mine is looking for a job. If you’re looking for a **Graphics artist/Web designer**/**Flash wizard** and you’re based in the London area, you should seriously consider checking him out. I can personally attest to the quality of his work and his amazing graphical sense and skills. You can contact him directly at \[email removed\] (Tomer Nohi is his name) Or you can contact him through me via my [contact](http://weblogs.asp.net/rosherove/contact.aspx) link. He’s helped create some pretty cool sites; I’ll mention just a couple – [www.vw.co.il](http://www.vw.co.il/) – slick Volkswagen Israel flash extravaganza [http://www.baran-raviv.com/](http://www.baran-raviv.com/) - flash and site design Great guy, great professional. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 6, 2003 ### [There goes an hour or two](https://osherove.com/blog/2003/7/6/there-goes-an-hour-or-two.html) - Jul 4, 2003 ### [How's this for less eye strain](https://osherove.com/blog/2003/7/4/hows-this-for-less-eye-strain.html) - Jul 3, 2003 ### [About maintainable code](https://osherove.com/blog/2003/7/3/about-maintainable-code.html) - Jul 2, 2003 ### [Cool Lecture!](https://osherove.com/blog/2003/7/2/cool-lecture.html) --- title: "A much needed SchemaHelper class" url: "https://osherove.com/blog/2003/7/3/a-much-needed-schemahelper-class-1.md" canonical: "https://osherove.com/blog/2003/7/3/a-much-needed-schemahelper-class-1.html" published: "2003-07-03T14:14:00" updated: "2003-07-03T14:14:00" tags: [".Net Original"] author: "Roy Osherove" description: "Phew . I've made a fixed version of my SchemaHelper class (this time in C#). This class solves the problem of not being able to automatically find Data Relations while filling a Dataset object with tables. Although…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A much needed SchemaHelper class By Roy Osherove July 3, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 3, 2003; technical details may be outdated. **Phew**. I've made a fixed version of my **SchemaHelper** class (this time in C#). This class solves the problem of not being able to automatically find Data Relations while filling a Dataset object with tables. Although DataAdapter **will** fill the primary key of the columns and other properties if you use it with FillSchema() or set its MissingSchemaAction to AddWithKey, DataRelations will not be added automatically. ##### _Enter SchemaHelper._ This class lets you automatically find and create DataRelations for the tables in your Dataset(or it can create them for you if they are missing) according to the foreign key schema information that can be retrieved using an OleDBConnection object. This functionality **does exist** for SqlConection, but I'll add that functionality later(or you can add it yourself). You'll need to pass it an open instance of a connection, a dataset, and two flags. The first flag tells it whether to create master tables which do not exist in your dataset but can be found in the foreign key schema. The second flag tells it whether to automatically create related tables if they do not exist for your primary table in your dataset. That last flag is handy if you only have a table in your dataset and you want to discover and add to the dataset all the data tables that are related to it using a foreign key, and create the data relations between them automatically as well.  You can also use it to fill relations of one particular table, by passing in the table name, in which case it will only try to retrieve and create the table you pass in, and the related tables for it (given the right flags). The syntax to use is pretty straight forward: DataSet ds = new DataSet(); cn.Open(); Console.WriteLine("table count is " + ds.Tables.Count); Console.WriteLine("relation count is " + ds.Relations.Count); SchemaHelper.InferDataRelations(cn,ds,"Users",true,true); cn.Close(); After this operation(supposing you have a foreign key between Users.userID and orders.UserID) you'll end up with two DataTables and on relation between them. If you use this syntax, however: SchemaHelper.InferDataRelations(cn,ds,false,false); You'll end up with only new Data relations between already existing tables in your dataset(which should be a faster operation). **Here's the code for the entire class – as always – I welcome any comment or suggestion:** [**Here's the full story & code**](http://weblogs.asp.net/rosherove/story/9661.aspx) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 5, 2003 ### [What's missing in today's hottest languages?](https://osherove.com/blog/2003/7/5/whats-missing-in-todays-hottest-languages.html) - Jul 4, 2003 ### [Export and import VS.NET's text editor's color and font settings](https://osherove.com/blog/2003/7/4/export-and-import-vsnets-text-editors-color-and-font-setting.html) - Jul 1, 2003 ### [Why I write in Both C# and VB.NET](https://osherove.com/blog/2003/7/1/why-i-write-in-both-c-and-vbnet.html) - Jul 1, 2003 ### [Automatically Create DataRelations Based On OleDB Schema](https://osherove.com/blog/2003/7/1/automatically-create-datarelations-based-on-oledb-schema.html) --- title: "A much needed SchemaHelper class" url: "https://osherove.com/blog/2003/7/3/a-much-needed-schemahelper-class.md" canonical: "https://osherove.com/blog/2003/7/3/a-much-needed-schemahelper-class.html" published: "2003-07-03T14:12:00" updated: "2003-07-03T14:12:00" tags: ["ADO.Net"] author: "Roy Osherove" description: "Phew. I've made a fixed version of my SchemaHelper class (this time in C#). This class solves the problem of not being able to automatically find Data Relations while filling a Dataset object with tables. Although…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A much needed SchemaHelper class By Roy Osherove July 3, 2003 In [ADO.Net](https://osherove.com/blog/category/ado-net) **Historical article** · Originally published July 3, 2003; technical details may be outdated. Phew. I've made a fixed version of my **SchemaHelper** class (this time in C#). This class solves the problem of not being able to automatically find Data Relations while filling a Dataset object with tables. Although DataAdapter **will** fill the primary key of the columns and other properties if you use it with FillSchema() or set its MissingSchemaAction to AddWithKey, DataRelations will not be added automatically. ##### _Enter SchemaHelper._ This class lets you automatically find and create DataRelations for the tables in your Dataset(or it can create them for you if they are missing) according to the foreign key schema information that can be retrieved using an OleDBConnection object. This functionality **does exist** for SqlConection, but I'll add that functionality later(or you can add it yourself). You'll need to pass it an open instance of a connection, a dataset, and two flags. The first flag tells it whether to create master tables which do not exist in your dataset but can be found in the foreign key schema. The second flag tells it whether to automatically create related tables if they do not exist for your primary table in your dataset. That last flag is handy if you only have a table in your dataset and you want to discover and add to the dataset all the data tables that are related to it using a foreign key, and create the data relations between them automatically as well.  You can also use it to fill relations of one particular table, by passing in the table name, in which case it will only try to retrieve and create the table you pass in, and the related tables for it (given the right flags). The syntax to use is pretty straight forward: DataSet ds = new DataSet(); cn.Open(); Console.WriteLine("table count is " + ds.Tables.Count); Console.WriteLine("relation count is " + ds.Relations.Count); SchemaHelper.InferDataRelations(cn,ds,"Users",true,true); cn.Close(); After this operation(supposing you have a foreign key between Users.userID and orders.UserID) you'll end up with two DataTables and on relation between them. If you use this syntax, however: SchemaHelper.InferDataRelations(cn,ds,false,false); You'll end up with only new Data relations between already existing tables in your dataset(which should be a faster operation). **Here's the code for the entire class – as always – I welcome any comment or suggestion:** (Notice that I had to break lines a lot to keep it all readable…) --- public class SchemaHelper { public enum InformationType {       TablesAndView,       Everything } public static readonly string FK\_COL\_NAME = "FK\_COLUMN\_NAME"; public static readonly string PK\_COL\_NAME = "PK\_COLUMN\_NAME"; public static readonly string FK\_TABLE\_NAME = "FK\_TABLE\_NAME"; public static readonly string PK\_TABLE\_NAME\= "PK\_TABLE\_NAME"; private SchemaHelper(){} private static object\[\] CreateArrayForSchemaQuery(                                     string TableCatalog,                                     string TableSchema,                                     string TableName,                                     string TableType) {       return new object\[\]{TableCatalog,TableSchema,                               TableName,TableType};       } public static string GetRestrictionName(InformationType restriction)             {             switch(restriction)             {                   case InformationType.TablesAndView:                         return "TABLE";                   case InformationType.Everything:                         return null;                         default:                         return null;             }       } public static DataTable GetForeignKeysSchemaTable(                                     OleDbConnection connection,                                     string tableName)       {       DataTable schema =             connection.GetOleDbSchemaTable(                         OleDbSchemaGuid.Foreign\_Keys,                         CreateArrayForSchemaQuery(                                           null,                                           null,                                           tableName,                                     GetRestrictionName(                                     InformationType.Everything)));       return schema;       } public static DataTable GetForeignKeysSchemaTable(OleDbConnection connection)       {             return GetForeignKeysSchemaTable(connection,null);       } private static void CreateTableIf(DataSet ds,string tableName,                               OleDbConnection connection,bool create)       {       if(create)                   {                   OleDbDataAdapter adp = new OleDbDataAdapter(string.Empty,                                                       connection);                   CreateAndFillSchemaIfMissing(ds,adp,tableName);                   }             } private static void CreateRelationsForAllSchemaRows(DataTable schemaTable,                                                 OleDbConnection connection,                                                 DataSet ds,                                                 string tableName,                                                 bool createOriginal,                                                 bool CreateRelated)       {             foreach(DataRow row in schemaTable.Rows)             {             string sPKCol     = row\[SchemaHelper.PK\_COL\_NAME\].ToString();             string sFKCol     =     row\[SchemaHelper.FK\_COL\_NAME\].ToString();             string sPKTable = row\[SchemaHelper.PK\_TABLE\_NAME\].ToString();             string sFKTable =       row\[SchemaHelper.FK\_TABLE\_NAME\].ToString();             string sRelName = sPKTable + "\_" +  sPKCol +                         "\_" + sFKTable + "\_" +  sFKCol;             bool bCreatePKForThisRow\= (createOriginal && tableName ==null);             CreateTableIf(ds,sPKTable,connection,bCreatePKForThisRow);             CreateTableIf(ds,sFKTable,connection,CreateRelated);             if(ds.Tables.Contains(sFKTable)&& ds.Tables.Contains(sPKTable))                   }                   CreateDataRelation(ds,sRelName, sPKTable,                                     sPKCol,sFKTable,sFKCol); }             }       } public static void InferDataRelations(OleDbConnection connection,                                     DataSet ds,bool createOriginal,                                     bool createRelated)       {             InferDataRelations(connection,ds,null,createOriginal,createRelated);       } public static void InferDataRelations(OleDbConnection connection,                                     DataSet ds,string tableName,                                     bool createMasterTableIfMissing,                                     bool createChildTableIfMissing)       {       CreateTableIf(ds,tableName,connection,                   (createMasterTableIfMissing && tableName !=null));       DataTable schema = GetForeignKeysSchemaTable(connection,tableName);       CreateRelationsForAllSchemaRows(schema,connection,ds,                                     tableName,createMasterTableIfMissing,                                                 createChildTableIfMissing);       } public static DataRelation CreateDataRelation(DataSet ds,                                           string  RelationName,                                           string PrimaryTableName,                                           string PrimaryColumnName,                                           string ChildTableName,                                           string ChildColumnName)       {             DataColumn PKDataCol =             ds.Tables\[PrimaryTableName\].Columns\[PrimaryColumnName\];             DataColumn FKDataCol =             ds.Tables\[ChildTableName\].Columns\[ChildColumnName\];             DataRelation dr =             ds.Relations.Add(RelationName,FKDataCol,PKDataCol);             return dr;       } public static void CreateAndFillSchemaIfMissing(DataSet ds,                                           OleDbDataAdapter adp,                                           string TableName)       {             if(!ds.Tables.Contains(TableName))             {             adp.SelectCommand.CommandText = "SELECT \* FROM " + TableName;             adp.FillSchema(ds, SchemaType.Source, TableName);             }       } } --- ## More in ADO.Net [All posts in ADO.Net](https://osherove.com/blog/category/ado-net) - Aug 21, 2006 ### [Free E-Book: Developing Time-Oriented Database Applications in SQL](https://osherove.com/blog/2006/8/21/free-e-book-developing-time-oriented-database-applications-i.html) - Jun 21, 2003 ### [Winforms Data Binding Lessons Learned](https://osherove.com/blog/2003/6/21/winforms-data-binding-lessons-learned.html) --- title: "Nice MS Word shortcut" url: "https://osherove.com/blog/2003/7/3/nice-ms-word-shortcut.md" canonical: "https://osherove.com/blog/2003/7/3/nice-ms-word-shortcut.html" published: "2003-07-03T12:05:00" updated: "2003-07-03T12:05:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "Say you have a document with multiple lines(duh!). Go to the middle of the document and select a couple of lines that have text above them or below them.. Press LEFT SHIFT+LEFT ALT + Up Or Down arrow several times..." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice MS Word shortcut By Roy Osherove July 3, 2003 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published July 3, 2003; technical details may be outdated. Say you have a document with multiple lines(duh!). Go to the middle of the document and select a couple of lines that have text above them or below them.. Press LEFT SHIFT+LEFT ALT + Up Or Down arrow several times... ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Jul 18, 2003 ### [Make your desktop show active RSS content](https://osherove.com/blog/2003/7/18/make-your-desktop-show-active-rss-content.html) - Jul 9, 2003 ### [Speed up Internet Explorer](https://osherove.com/blog/2003/7/9/speed-up-internet-explorer.html) - Jul 3, 2003 ### [Copy MsgBox Text](https://osherove.com/blog/2003/7/3/copy-msgbox-text.html) - Jun 22, 2003 ### [Disabling Connection Pooling](https://osherove.com/blog/2003/6/22/disabling-connection-pooling.html) --- title: "6 months and counting" url: "https://osherove.com/blog/2003/7/3/6-months-and-counting.md" canonical: "https://osherove.com/blog/2003/7/3/6-months-and-counting.html" published: "2003-07-03T09:11:00" updated: "2003-07-03T09:11:00" tags: ["Blogging"] author: "Roy Osherove" description: "I've just realized that I've been blogging here for almost 6 months. Should I light half a candle? Yey! Halfppy Blogthday :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 6 months and counting By Roy Osherove July 3, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published July 3, 2003; technical details may be outdated. I've just realized that I've been blogging here for almost 6 months. Should I light half a candle? ![](https://osherove.com/img/wb/90833cbb_www.mylittlelife.net_photos_candle.jpg) Yey! **Halfppy Blogthday** :) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 9, 2003 ### [Microsoft does, but can do even more](https://osherove.com/blog/2003/7/9/microsoft-does-but-can-do-even-more.html) - Jul 7, 2003 ### [FeedDemon fixes abound!](https://osherove.com/blog/2003/7/7/feeddemon-fixes-abound.html) - Jun 29, 2003 ### [Scripting News Is Down. I'm Sad.](https://osherove.com/blog/2003/6/29/scripting-news-is-down-im-sad.html) - Jun 29, 2003 ### [Me Too!](https://osherove.com/blog/2003/6/29/me-too.html) --- title: "About maintainable code" url: "https://osherove.com/blog/2003/7/3/about-maintainable-code.md" canonical: "https://osherove.com/blog/2003/7/3/about-maintainable-code.html" published: "2003-07-03T08:35:00" updated: "2003-07-03T08:35:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm currently into documenting my source code and creating infrastructure documents. It's amazing how important these things are, I'd say it's inversely related to how boring they are to do J . One of the most important…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About maintainable code By Roy Osherove July 3, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 3, 2003; technical details may be outdated. I'm currently into documenting my source code and creating infrastructure documents. It's amazing how important these things are, I'd say it's inversely related to how boring they are to doJ . One of the most important things I've ever learned about writing code was early in my career. I was a young programmer, entering a new job as a part of a VB dev team. The first few months at that company were one of the most excruciating periods of my career. I literally had to "forget" everything that I thought I knew about writing solid maintainable code , and literally go against my better judgment. The first rule of maintainable code I had to learn: ### Make your code self describing I though I knew it all when I entered that new job. I was right out of another project which, looking back, was one of the worst things I'd ever help create. I really thought I understood the principles of maintainable code: ·         Leave good comments in your code ·         Use Hungarian notation in some pre-agreed format(VB 6) That was about it. I had helped create a coding convention document for VB programmers while I was in my previous job and I was pretty zealous in making people adhere to it. That was before I "got" it. One of the first talks my new team lead gave me included one of the things I would **always tell other programmers not to do**: ·         Try to leave as little comments as you can in your code Jeez! How was I supposed to deal with that? I kept trying to explain to him that writing comments in your code was one of the first tasks I would ever do, that it makes the code maintainable, that without it, the world would be a big pool of chaos and spaghetti code. He would hear none of that. I had to learn the following lessons: ·         **Comments get stale**. If the code changes, the comments need to change too. They usually don't. So what you get is bad explanations - meaning bad maintainability. ·         **If you have to leave a comment to explain what you wanted to do – your code isn’t self describing**. Think about that for a minute. ·         If there really is no other way than to comment, explain **why** something is done, not **what** its doing. ·         If your procedure does not fit into a single screen, its too long. You need to divide work into sub procedures. o        This part was the hard. Sometimes I would show him a procedure, he'd say its too long, and I had to find a way to "artificially" split it into sub-procedures. Once you learn how to do that, you'll never go back. It's addictive – like building LEGO… o        Event handlers should almost always have only one line – which calls a method to do the work. ·         A method's name should explain what it does : InsertCustomer(), CreateSchemaIfNoExists(), FindUserByID()… and so on ·         A variable's name should indicate what type it is(you can also add scope, but that's about the last straw for readability) using partial Hungarian notation. o        I don’t care if VS.NET had built in tooltips to show you a variable's type. I won't always have VS.NET available for code reading. o        This habit comes in **real** handy when printing code for code reviews ·         Boolean methods always start with "Is":  _IsTableEmpty(), IsAnotherLoopRequired(), IsUserInDatabase(), IsPasswordMatching()_ and so on… ·         Putting headers in your modules **is** a good idea, because the overall description of the purpose of a module is likely to never change. This is all just the start of a coding habits manual, but I had the most challenging weeks when I tried to simply write code that adheres to all of them. As I've said – **not** commenting code was one of the hardest to achieve. I've learned, though, that it makes very good sense. ##### _So now I'm documenting my own code_ And I can tell you, following those simple rules sure as hell saves me loads of time today. I am looking at code I wrote more than a year and a half ago, and I understand it pretty quickly, even though the amount of comments is minimal. However I do find some pretty cryptic things here and there. What can I say, I'm human, and I make mistakes. These are usually the things that you get to right at 3am, with a presentation the next day(ah, the life of a startup programmer…). My point – yeah, you have to think a little when writing code, **but** – it totally pays off in the long run (and even immediately), Especially when you're working with a team. I can tell you some pretty horrendous horror stories about bad code, but I'm sure you've all been there. How many of you can tell **goo**d stories of code they received was self-documenting and easy to understand? Is that common ? No. I'd be surprised to hear that it is (I'm not talking about Microsoft, ok?) Heh, I'll just link (again) to my favorite "how to write bad code" article: [How to write unmaintainable code](http://www.mindprod.com/unmain) Update: LondonGeek makes a good comment about how comments that spell the \*intention\* of the code will never get stale.: _"Many programmers don't comment, they annotate their code. For example the say "Create an XML DOM and load it with the text file cust.xml" when they should actually say "Retrieve a list of my customers". The second version enables someone to understand the intent rather than the implementation. This kind of comment will rarely get stale, in-fact it will only get stale when you completely change the intent of the code."_  Agreed, however - why would you need to write that comment in the first place? Why not just make it a method named " RetrieveCustomerList()" which is self describing? He also mentions this great book, which I recommend you have on your shelf - which is filled with great discussion about these kinds of problems: [Code Complete](https://www.amazon.com/exec/obidos/ASIN/1556154844/iserializable-20) [Duncan](http://www.merrioncomputing.com/) points to this link for programming techniques: [http://www.merrioncomputing.com/Programming/7Secrets.htm](http://www.merrioncomputing.com/Programming/7Secrets.htm) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 4, 2003 ### [How's this for less eye strain](https://osherove.com/blog/2003/7/4/hows-this-for-less-eye-strain.html) - Jul 4, 2003 ### [I’ve just learned that a friend of mine is looking for a job.](https://osherove.com/blog/2003/7/4/ive-just-learned-that-a-friend-of-mine-is-looking-for-a-job.html) - Jul 2, 2003 ### [Cool Lecture!](https://osherove.com/blog/2003/7/2/cool-lecture.html) - Jul 2, 2003 ### [VB User Group meeting Tonight, Hope to See You There](https://osherove.com/blog/2003/7/2/vb-user-group-meeting-tonight-hope-to-see-you-there.html) --- title: "Copy MsgBox Text" url: "https://osherove.com/blog/2003/7/3/copy-msgbox-text.md" canonical: "https://osherove.com/blog/2003/7/3/copy-msgbox-text.html" published: "2003-07-03T06:15:00" updated: "2003-07-03T06:15:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "when you get a message box with lots of text (mainly on error messages) and you need to copy the text of the message, simply press ctrl+c , you'll hear a beep from windows, then you can paste it every where and you'll…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Copy MsgBox Text By Roy Osherove July 3, 2003 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published July 3, 2003; technical details may be outdated. _when you get a message box with lots of text (mainly on error messages) and you need to copy the text of the message, simply press ctrl+c , you'll hear a beep from windows, then you can paste it every where and you'll get a 'text like' message box with the message and the buttons._ \[via [Yosi Taguri](http://weblogs.asp.net/yosit/posts/9644.aspx)\] ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Jul 9, 2003 ### [Speed up Internet Explorer](https://osherove.com/blog/2003/7/9/speed-up-internet-explorer.html) - Jul 3, 2003 ### [Nice MS Word shortcut](https://osherove.com/blog/2003/7/3/nice-ms-word-shortcut.html) - Jun 22, 2003 ### [Disabling Connection Pooling](https://osherove.com/blog/2003/6/22/disabling-connection-pooling.html) - Jun 22, 2003 ### [A Little Macro To Automate Creating Connection Strings](https://osherove.com/blog/2003/6/22/a-little-macro-to-automate-creating-connection-strings.html) --- title: "Cool Lecture!" url: "https://osherove.com/blog/2003/7/2/cool-lecture.md" canonical: "https://osherove.com/blog/2003/7/2/cool-lecture.html" published: "2003-07-02T15:26:00" updated: "2003-07-02T15:26:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Wow. Today's User Group meeting was one of the best I've ever attended. The session was about UI design guidlines and how people percieve things. I'll write more about it tomorrow, but for now I'll just say that if you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool Lecture! By Roy Osherove July 2, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 2, 2003; technical details may be outdated. Wow. Today's [User Group meeting](http://weblogs.asp.net/rosherove/posts/9589.aspx) was one of the best I've ever attended. The session was about UI design guidlines and how people percieve things. I'll write more about it tomorrow, but for now I'll just say that if you had the chance to be there but didn't , you missed one hell of a lecture. Speaking of which, You **really** should be in the next session of the [asp.net user group](http://teched.magen.com/events/event.aspx?EventID=36) on the 9th. Rumors are circling about it, I'll just say that you should bring along some popcorn, and perhaps an X-Box joystick.... :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 4, 2003 ### [I’ve just learned that a friend of mine is looking for a job.](https://osherove.com/blog/2003/7/4/ive-just-learned-that-a-friend-of-mine-is-looking-for-a-job.html) - Jul 3, 2003 ### [About maintainable code](https://osherove.com/blog/2003/7/3/about-maintainable-code.html) - Jul 2, 2003 ### [VB User Group meeting Tonight, Hope to See You There](https://osherove.com/blog/2003/7/2/vb-user-group-meeting-tonight-hope-to-see-you-there.html) - Jul 2, 2003 ### [What's Up With That?](https://osherove.com/blog/2003/7/2/whats-up-with-that.html) --- title: "VB User Group meeting Tonight, Hope to See You There" url: "https://osherove.com/blog/2003/7/2/vb-user-group-meeting-tonight-hope-to-see-you-there.md" canonical: "https://osherove.com/blog/2003/7/2/vb-user-group-meeting-tonight-hope-to-see-you-there.html" published: "2003-07-02T09:43:00" updated: "2003-07-02T09:43:00" tags: ["Off Topic"] author: "Roy Osherove" description: "IVBUG moved to a new location Microsoft Israel 2 Hapnina St, Raanana (09) 7625-100 Floor 0 , Dekel Room It is the new building across from Amdocs. After the first traffic circle, there is an area for parking on the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VB User Group meeting Tonight, Hope to See You There By Roy Osherove July 2, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 2, 2003; technical details may be outdated. **[IVBUG](http://www.renaissance.co.il/ivbug/) moved to a new location** Microsoft Israel 2 Hapnina St, Raanana (09) 7625-100 Floor 0 , Dekel Room It is the new building across from Amdocs. After the first traffic circle, there is an area for parking on the right. 17:30 - 18:00   Assembly 18:00 - 18:05   Introduction and miscellaneous 18:05 - 19:30    “Thoughtful Design of User Interface Screens (Part 1)”                         Dr. Yaakov Greenshpan, UI 19:30 - 19:45    Break 19:45 – 20:00   "Hatzilu !"                         Open session, with questions and answers/ideas from everyone 20:00 - 21:00   “Thoughtful Design of User Interface Screens (Part 2)”                         Dr. Yaakov Greenshpan, UI **Summery:** We all develop screens. In some cases these are loaded input screens, in other cases OLAP or other Data Analysis systems. Sometimes these may be very complicated screens, in others, two fields and a single submit button. The main question is how to design these screens to be efficient and comfortable to use? This presentation will discuss different aspects of the design of single screens. Navigation will not be discussed (practically), only ways to design screens for efficient and comfortable use. To this end, rules of thumb as well as in-depth explanations will be given regarding the way that the human data processing unit works in regard to the implications on interface design. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 3, 2003 ### [About maintainable code](https://osherove.com/blog/2003/7/3/about-maintainable-code.html) - Jul 2, 2003 ### [Cool Lecture!](https://osherove.com/blog/2003/7/2/cool-lecture.html) - Jul 2, 2003 ### [What's Up With That?](https://osherove.com/blog/2003/7/2/whats-up-with-that.html) - Jul 1, 2003 ### [User Interface Design For Programmers](https://osherove.com/blog/2003/7/1/user-interface-design-for-programmers.html) --- title: "What's Up With That?" url: "https://osherove.com/blog/2003/7/2/whats-up-with-that.md" canonical: "https://osherove.com/blog/2003/7/2/whats-up-with-that.html" published: "2003-07-02T04:59:00" updated: "2003-07-02T04:59:00" tags: ["Off Topic"] author: "Roy Osherove" description: "What's up with people mass mailing recipes of salad dressings and coockies to all their internet lists? I swear that the next time I get a salad recipe from 3 different sources I'll... I'll... What's up with windows…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What's Up With That? By Roy Osherove July 2, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 2, 2003; technical details may be outdated. **What's up** with people mass mailing recipes of salad dressings and coockies to all their internet lists? I **swear** that the next time I get a salad recipe from 3 different sources I'll... I'll... **What's up** with windows 2000 not willing to give up the memory that word took after I closed it? **hello!** I'm not using it anymore! What kind twisted garbage collection from hell scheme would do that? **What's up** with IE taking 30 seconds to open, and then another 10 seconds just to load that first page? meanwhile my CPU usage rockets , and my memory usage is a nightmare(I have 256MB RAM, on a 700 pentium 2 workstation). **What the hell is up** with the ";" key being so damn close to the "single quote" key? I keep getting these two mixed up? My fingers can;t(see!) be that fat! **What's up** with hosting sites on the net? Isn;t there a decent **free** site that I can keep a small amount of personal files for linking to them without the need to create a website on that host and without it being some kind of a devious scheme to spam me until I want to kill outlook? **What's up** with companies that think that they can get away with letting their programmers work on 15" screens and old horrible microsoft mice that you have to pound repeatedly agaist your desk for the mouse to move the way you **want**  it to move? **What's up** with computer speakers cables being way too short for their own good? I have always had a problem figuring out how to put a speaker  on each side of my screen. They never have enough line length between them to let you do that without first knocking down stuff on your desktop. It's always a \*big deal\* to setup speakers. ugh. Speking of which, **what's up** with speaker connections way out on the back of the computer? What do I have to reach down under my  desk, turn the PC around, and connect the damn thing? Why should I have to do that if I want to use headphones instead of speakers? Why should I have to \*buy\* extra stuff just so I can do the most basic procedures easily? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 2, 2003 ### [Cool Lecture!](https://osherove.com/blog/2003/7/2/cool-lecture.html) - Jul 2, 2003 ### [VB User Group meeting Tonight, Hope to See You There](https://osherove.com/blog/2003/7/2/vb-user-group-meeting-tonight-hope-to-see-you-there.html) - Jul 1, 2003 ### [User Interface Design For Programmers](https://osherove.com/blog/2003/7/1/user-interface-design-for-programmers.html) - Jul 1, 2003 ### [Yey!](https://osherove.com/blog/2003/7/1/yey.html) --- title: "User Interface Design For Programmers" url: "https://osherove.com/blog/2003/7/1/user-interface-design-for-programmers.md" canonical: "https://osherove.com/blog/2003/7/1/user-interface-design-for-programmers.html" published: "2003-07-01T19:02:00" updated: "2003-07-01T19:02:00" tags: ["Cool Articles", "Off Topic"] author: "Roy Osherove" description: "Just discovered this gem on Joel's site: User Interface Design For Programmers It's a full book, and its very very good an entertaining. Recommended!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # User Interface Design For Programmers By Roy Osherove July 1, 2003 In [Cool Articles](https://osherove.com/blog/category/cool-articles), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 1, 2003; technical details may be outdated. Just discovered this gem on Joel's site: **[User Interface Design For Programmers](http://www.joelonsoftware.com/uibook/fog0000000249.html)** It's a full book, and its very very good an entertaining. Recommended! ## More in Cool Articles [All posts in Cool Articles](https://osherove.com/blog/category/cool-articles) - Jul 18, 2003 ### [BitVector32 in the real world](https://osherove.com/blog/2003/7/18/bitvector32-in-the-real-world.html) - Jul 18, 2003 ### [Nice performance counters article](https://osherove.com/blog/2003/7/18/nice-performance-counters-article.html) - Jun 15, 2003 ### [Data Binding Woes - A Simple Solution](https://osherove.com/blog/2003/6/15/data-binding-woes-a-simple-solution.html) - Jun 12, 2003 ### [AppDomains Reloaded](https://osherove.com/blog/2003/6/12/appdomains-reloaded.html) --- title: "Why I write in Both C# and VB.NET" url: "https://osherove.com/blog/2003/7/1/why-i-write-in-both-c-and-vbnet.md" canonical: "https://osherove.com/blog/2003/7/1/why-i-write-in-both-c-and-vbnet.html" published: "2003-07-01T18:09:00" updated: "2003-07-01T18:09:00" tags: [".Net Original"] author: "Roy Osherove" description: "I keep getting this question: Why do I write some posts in VB.NET and some in C#. Short answer: · Future employers like to see that I’m fluent in both · I want to be able to move between them seamlessly, as I believe…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why I write in Both C\# and VB.NET By Roy Osherove July 1, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 1, 2003; technical details may be outdated. I keep getting this question: Why do I write some posts in VB.NET and some in C#. **Short answer:** ·         Future employers like to see that I’m fluent in both ·         I want to be able to move between them seamlessly, as I believe many future projects will hold code written in more that one .Net language, mostly these two… **Long answer:** ·         Fact is, the people who sign the checks in this industry don’t “get” that it’s all about the runtime, that the two are one and the same, that once you know one, you can learn the other in 1 week and be just as productive No. They know that “VB.NET is VB.NET and C# is C#”. “I need a VB.NET programmer for this position, not a C# programmer”. As lame as it sounds, that’s exactly what we’ll all have to provide them. We’ll all have to know more than one .net language (perhaps they should just be called “.Net syntaxes”) in order to appeal to more available jobs. The fact that these syntaxes are the same under the hood is too much of a “small technical detail”. So much so, that employers (unless an experienced technical team lead will do **all** the hiring process) cannot comprehend that any C# developer can be a VB.NET developer, and vice versa. Perhaps in a few years it will sink in, but today, as I get calls from places, that awfully familiar dialog keeps popping up : _“How many years of experience have you had with \[.Net language\]?”_ “I’ve been doing .Net for about 2 years now” _“OK, so how many of those were using \[.Net language\]?”_ “Um, 2.” _“OK, so 2 years in \[.Net language\]. Any XML experience?”_ “Yeah, lots. It’s all about XML in .Net” _“OK, but have you worked with XML using \[.Net Language\]?”_ “Yeah, I did” And so on…. ·         There are many features in each of these languages that I like. I actually enjoy writing code in both of them. ·         One thing – VB.NET is **tons** more productive than C# is. The number reason? **Better Intellisense.** Why is it that when I use VB.NET I can set a property which accepts an enum to some value, and when I type “=” I get an intellisense combo which lays out all the enums before me? Just select and press tab and you’re there. If I do that in C#, I have to bloody remember the name of the enum, type “.” And only than do I get Intellisense **Why the hell is it not in both languages?** Dudes – you **have** to make C# more productive. ·         I don’t like VB.Net’s verbosity. It sucks. It’s like I’m writing an essay every time I want to implement a protected overloaded method in my derived classes. ·         C# is much more structured and concise. I like its clarity and purity. It’s just cool. Tell you the truth – when I just got into .Net – I left VB6 behind. I didn’t even give a blink in VB.NET’s direction. I wrestled with C#’s curly braces and semicolons until I could do them automatically, and I loved every minute of it. Than I re-discovered VB.NET, and it’s like returning home. Everything is familiar, and **so easy**. I’ll try to mix them both in my posting examples as much as possible. I really love them both. You should know them both **blind**. Do it for yourself if for no other reason. You’ll thank yourselves when you come across that first project that involved the language you thought you’d never use. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 4, 2003 ### [Export and import VS.NET's text editor's color and font settings](https://osherove.com/blog/2003/7/4/export-and-import-vsnets-text-editors-color-and-font-setting.html) - Jul 3, 2003 ### [A much needed SchemaHelper class](https://osherove.com/blog/2003/7/3/a-much-needed-schemahelper-class-1.html) - Jul 1, 2003 ### [Automatically Create DataRelations Based On OleDB Schema](https://osherove.com/blog/2003/7/1/automatically-create-datarelations-based-on-oledb-schema.html) - Jul 1, 2003 ### [More about .Net Deep Dive](https://osherove.com/blog/2003/7/1/more-about-net-deep-dive.html) --- title: ".Net Rocks with Tim Huckaby" url: "https://osherove.com/blog/2003/7/1/net-rocks-with-tim-huckaby.md" canonical: "https://osherove.com/blog/2003/7/1/net-rocks-with-tim-huckaby.html" published: "2003-07-01T18:01:00" updated: "2003-07-01T18:01:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Cool! new .Net Rocks show is up online, and this week its Tim Huckaby" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Rocks with Tim Huckaby By Roy Osherove July 1, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published July 1, 2003; technical details may be outdated. Cool! [new .Net Rocks show is up online,](http://www.franklins.net/dotnetrocks.asp) and this week its Tim Huckaby ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 9, 2003 ### [Patterns](https://osherove.com/blog/2003/7/9/patterns.html) - Jul 6, 2003 ### [Visual Studio .NET and C# Tips and Tricks](https://osherove.com/blog/2003/7/6/visual-studio-net-and-c-tips-and-tricks.html) - Jun 28, 2003 ### [Nice page of ADO.NET notes & tips](https://osherove.com/blog/2003/6/28/nice-page-of-adonet-notes-amp-tips.html) - Jun 22, 2003 ### [More About Processes](https://osherove.com/blog/2003/6/22/more-about-processes.html) --- title: "Yey!" url: "https://osherove.com/blog/2003/7/1/yey.md" canonical: "https://osherove.com/blog/2003/7/1/yey.html" published: "2003-07-01T16:41:00" updated: "2003-07-01T16:41:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Here's me boasting with my new T-Shirt at the .Net deep dive event! To my right you can see Oren and Anat, two old colleagues." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Yey! By Roy Osherove July 1, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 1, 2003; technical details may be outdated. Here's me boasting with my new T-Shirt at the .Net deep dive event! To my right you can see Oren and Anat, two old colleagues. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 2, 2003 ### [What's Up With That?](https://osherove.com/blog/2003/7/2/whats-up-with-that.html) - Jul 1, 2003 ### [User Interface Design For Programmers](https://osherove.com/blog/2003/7/1/user-interface-design-for-programmers.html) - Jul 1, 2003 ### [Chris Sells talks about Learning to Learn](https://osherove.com/blog/2003/7/1/chris-sells-talks-about-learning-to-learn.html) - Jul 1, 2003 ### [Wasted Years](https://osherove.com/blog/2003/7/1/wasted-years.html) --- title: "Chris Sells talks about Learning to Learn" url: "https://osherove.com/blog/2003/7/1/chris-sells-talks-about-learning-to-learn.md" canonical: "https://osherove.com/blog/2003/7/1/chris-sells-talks-about-learning-to-learn.html" published: "2003-07-01T11:46:00" updated: "2003-07-01T11:46:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Chris Sells talks about Learning to Learn [via scoble ] Totally interesting." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Chris Sells talks about Learning to Learn By Roy Osherove July 1, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 1, 2003; technical details may be outdated. [**Chris Sells talks about Learning to Learn**](http://www.sellsbrothers.com/spout/#Learning_to_Learn) \[via [scoble](http://scoble.weblogs.com/)\] Totally interesting. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 1, 2003 ### [User Interface Design For Programmers](https://osherove.com/blog/2003/7/1/user-interface-design-for-programmers.html) - Jul 1, 2003 ### [Yey!](https://osherove.com/blog/2003/7/1/yey.html) - Jul 1, 2003 ### [Wasted Years](https://osherove.com/blog/2003/7/1/wasted-years.html) - Jul 1, 2003 ### [User Groups](https://osherove.com/blog/2003/7/1/user-groups.html) --- title: "Wasted Years" url: "https://osherove.com/blog/2003/7/1/wasted-years.md" canonical: "https://osherove.com/blog/2003/7/1/wasted-years.html" published: "2003-07-01T11:23:00" updated: "2003-07-01T11:23:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Oh boy. This funny article brought back a lot of memories. I remember once receiving some legacy VB code, and trying to figure out what the hell was happening. It was a nightmare. 3 or four modules containing huge…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Wasted Years By Roy Osherove July 1, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 1, 2003; technical details may be outdated. Oh boy. [This funny article](http://www.mindprod.com/unmain) brought back **a lot** of memories. I remember once receiving some legacy VB code, and trying to figure out what the hell was happening. It was a nightmare. 3 or four modules containing huge 200-300 line procedures which accessed the database using lots concatenated strings SQL text inside. The best part was that one of them was named **Doit()** . After about 200 lines or so, it called another method.  That one was called **Doit1()**. That was the longest week of my life. That application had to be rewritten from the ground up, that's how bad it was. Sometimes people waste entire man-years on this stuff. I think it all comes down to companies not willing to spend the extra buck on the more experienced programmer, and think they can get away with it. They only end up paying much much more, not in the distant future, mind you, but starting right from the day that person comes on board. You can actually hear the money going down the drain on these occasions. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 1, 2003 ### [Yey!](https://osherove.com/blog/2003/7/1/yey.html) - Jul 1, 2003 ### [Chris Sells talks about Learning to Learn](https://osherove.com/blog/2003/7/1/chris-sells-talks-about-learning-to-learn.html) - Jul 1, 2003 ### [User Groups](https://osherove.com/blog/2003/7/1/user-groups.html) - Jun 27, 2003 ### [Still Alive](https://osherove.com/blog/2003/6/27/still-alive.html) --- title: "Automatically Create DataRelations Based On OleDB Schema" url: "https://osherove.com/blog/2003/7/1/automatically-create-datarelations-based-on-oledb-schema.md" canonical: "https://osherove.com/blog/2003/7/1/automatically-create-datarelations-based-on-oledb-schema.html" published: "2003-07-01T09:59:00" updated: "2003-07-01T09:59:00" tags: [".Net Original"] author: "Roy Osherove" description: "I was frustrated about the lack of automatic support for DataRelation creation via the DataAdapters , and the less-than-friendly OleDBConnection.GetOleDbSchemaTable() method, so I've decided to create a small class,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Automatically Create DataRelations Based On OleDB Schema By Roy Osherove July 1, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 1, 2003; technical details may be outdated. I was frustrated about the [lack of automatic support for DataRelation creation via the DataAdapters](http://weblogs.asp.net/rosherove/posts/9446.aspx), and the less-than-friendly _OleDBConnection.GetOleDbSchemaTable()_ method, so I've decided to create a small class, which does what I needed. It's not refactored or optimized (it's pretty slow), and there are several _big_ features missing, but it’s a start. Mind you, this only works with OLE DB connections... What it does: ·         accepts a Dataset and an OleDBConnection object ·         Retrieves the schema containing all the foreign keys using that connection ·         Creates missing tables that are found in the foreign keys schema(along with primary keys and such) ·         Creates DataRelations to represent the foreign keys in the schema Here's the code (I welcome all comments, this is just a start): --- Imports System.Text Imports System.Data Imports System.Data.OleDb Public Class MatchMaker     Public Shared Sub InferRelations(ByVal ds As DataSet, \_ ByVal cn As OleDbConnection)         Dim row As DataRow         Dim adp As New OleDbDataAdapter("", cn)         'we can put restrictions on the data we want to recieve         Dim restrictions As Object() = \_ New Object() {Nothing, \_ Nothing, \_ Nothing, \_ Nothing}         'this is the Foreign key data we need to create relations         Dim schemaTable As DataTable = \_ cn.GetOleDbSchemaTable(OleDbSchemaGuid.Foreign\_Keys, \_ restrictions)         'go through all the foreign keys displayed         For Each row In schemaTable.Rows             Dim strTable As String = row("PK\_TABLE\_NAME")             Dim strChild As String = row("FK\_TABLE\_NAME")             Dim strParentColName As String = row("PK\_COLUMN\_NAME")             Dim strChildColName As String = row("FK\_COLUMN\_NAME")             'the relation name that will be created             Dim strRelationName As String = \_ strTable + "\_" + strParentColName + \_ "\_" + strChild + "\_" + strChildColName             'create any non existing tables along with key information             CreateAndfFillSchema(ds, adp, strTable)             CreateAndfFillSchema(ds, adp, strChild)             Try                 Dim PrimaryColumn As DataColumn = \_ ds.Tables(strTable).Columns(strParentColName)                 Dim ChildColumn As DataColumn = \_ ds.Tables(strChild).Columns(strChildColName)                 ds.Relations.Add(strRelationName, PrimaryColumn, ChildColumn)             Catch e As Exception                 'well get here if there's already such as relation                 'but we want to continue anyway             End Try         Next     End Sub     Private Shared Sub CreateAndfFillSchema(ByVal ds As DataSet, \_ ByVal adp As OleDbDataAdapter, \_ ByVal TableName As String)         If Not ds.Tables.Contains(TableName) Then             adp.SelectCommand.CommandText = "SELECT \* FROM " + TableName             adp.FillSchema(ds, SchemaType.Source, TableName)         End If     End Sub End Class --- [](http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q309488)  **What's missing:** ·         Support for multi-column primary keys relations ·         Optimized FillSchema functionality – I think that copying the functionality of FillSchema to create primary keys and so on within the code instead of calling FillSchema will speed things us considerably ·         Support for Types of relation update and delete functionality(Cascaded ,none and so on) to be read from the schema ·         Probably more stuff.  **Resources:** - [HOW TO: Retrieve Schema Information by Using GetOleDbSchemaTable and Visual Basic .NET](http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q309488) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 3, 2003 ### [A much needed SchemaHelper class](https://osherove.com/blog/2003/7/3/a-much-needed-schemahelper-class-1.html) - Jul 1, 2003 ### [Why I write in Both C# and VB.NET](https://osherove.com/blog/2003/7/1/why-i-write-in-both-c-and-vbnet.html) - Jul 1, 2003 ### [More about .Net Deep Dive](https://osherove.com/blog/2003/7/1/more-about-net-deep-dive.html) - Jun 30, 2003 ### [.Net Deep Dive Recap](https://osherove.com/blog/2003/6/30/net-deep-dive-recap.html) --- title: "User Groups" url: "https://osherove.com/blog/2003/7/1/user-groups.md" canonical: "https://osherove.com/blog/2003/7/1/user-groups.html" published: "2003-07-01T06:54:00" updated: "2003-07-01T06:54:00" tags: ["Off Topic"] author: "Roy Osherove" description: "If you're in Israel, there's the IVBUG meeting tommorow. Also, on the 9th, the Web developers .Net group meets and there's supposed to be some real interesting stuff going on there. Yosi wrote about that as well. Ever…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # User Groups By Roy Osherove July 1, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published July 1, 2003; technical details may be outdated. If you're in Israel, there's the [IVBUG](http://www.renaissance.co.il/ivbug/) meeting tommorow. Also, on the 9th, the [Web developers .Net group](http://teched.magen.com/events/event.aspx?EventID=36) meets and there's supposed to be some real interesting stuff going on there. Yosi [wrote about that](http://weblogs.asp.net/yosit/posts/9526.aspx) as well. Ever wonder what are all the User Groups in Israel(or anywhere else)? [Here's a chance to know](http://www.ineta.org/Default.aspx?tabindex=1&tabid=3). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 1, 2003 ### [Chris Sells talks about Learning to Learn](https://osherove.com/blog/2003/7/1/chris-sells-talks-about-learning-to-learn.html) - Jul 1, 2003 ### [Wasted Years](https://osherove.com/blog/2003/7/1/wasted-years.html) - Jun 27, 2003 ### [Still Alive](https://osherove.com/blog/2003/6/27/still-alive.html) - Jun 24, 2003 ### [.Net Rocks Rocks, INETA, and Starting A User Group](https://osherove.com/blog/2003/6/24/net-rocks-rocks-ineta-and-starting-a-user-group.html) --- title: "More about .Net Deep Dive" url: "https://osherove.com/blog/2003/7/1/more-about-net-deep-dive.md" canonical: "https://osherove.com/blog/2003/7/1/more-about-net-deep-dive.html" published: "2003-07-01T06:44:00" updated: "2003-07-01T06:44:00" tags: [".Net Original"] author: "Roy Osherove" description: "Just wanted to add the following items about yesterday's event: People: · I got to meet some of my old work colleagues · I got to meet the head of the ASP.NET user group , Nimrod, which is a cool guy. The idea came up…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More about .Net Deep Dive By Roy Osherove July 1, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published July 1, 2003; technical details may be outdated. **Just wanted to add the following items about yesterday's event:** **People:** ·         I got to meet some of my [old work colleagues](http://www.tvuna.co.il/) ·         I got to meet the head of the [ASP.NET user group](http://teched.magen.com/events/event.aspx?EventID=36), Nimrod, which is a cool guy. The idea came up thay I would use one of the MSFT community starter kits to setup a website for that user group. I'm still pondering whethet I'm up for it... ·         I got a chance to mingle a little at the event, and I finally met Michal Geva face to face. Can you believe that until a few months ago I didn't even know who she is? ·         Got to meet up with some of Yosi taguri's [crew](http://weblogs.asp.net/lrozner). ·         Got to mingle with some other great people! **I'll say this about the Israeli developer crowd**, though. I think we're a much more closed-up  group of people than from what I've seen in other conferences(Well, I haven't been to that many of them, but that's the feeling I get). When "Ask the experts" time came, Most of the people preferred to go home(you could also get to dive in the hotel pool if you wanted ,but only 5% brought a swimsuit..), or just sit aside. Out of about 400-500 attendees, I think less then 50 actually took part in the "experts" booth, asking questions and so on. I think that's the easiest way to identify those who truly "get" it. Let all the rest go and see who's left with some hardcore questions, or even just to listen to some hardcore answers…. **Loot**: ·         1 .**Net** Beach Towel ·         1 VS.NET T-Shirt ·         1,000,000 marketing papers ·         1 Technet Webast sampler CD ROM ·         1 Teched 2003 memories CD(I wasn't there, but it was nice to see that at least **someone** had fun...) ·         4 potnetial Job oppertunities ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 1, 2003 ### [Why I write in Both C# and VB.NET](https://osherove.com/blog/2003/7/1/why-i-write-in-both-c-and-vbnet.html) - Jul 1, 2003 ### [Automatically Create DataRelations Based On OleDB Schema](https://osherove.com/blog/2003/7/1/automatically-create-datarelations-based-on-oledb-schema.html) - Jun 30, 2003 ### [.Net Deep Dive Recap](https://osherove.com/blog/2003/6/30/net-deep-dive-recap.html) - Jun 29, 2003 ### [FillSchema and AddWithKey Don't Operate As Promised?](https://osherove.com/blog/2003/6/29/fillschema-and-addwithkey-dont-operate-as-promised.html) --- title: ".Net Deep Dive Recap" url: "https://osherove.com/blog/2003/6/30/net-deep-dive-recap.md" canonical: "https://osherove.com/blog/2003/6/30/net-deep-dive-recap.html" published: "2003-06-30T14:20:00" updated: "2003-06-30T14:20:00" tags: [".Net Original"] author: "Roy Osherove" description: "Today was a long and cool day (Although it was hot outside). The “.Net Deep Dive” full day event at the Hilton (a.k.a ‘Teched for the financially challenged”) took place today, and I got to attend four lectures. 3 of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Deep Dive Recap By Roy Osherove June 30, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 30, 2003; technical details may be outdated. Today was a long and cool day (Although it was hot outside). The “.Net Deep Dive” full day event at the Hilton (a.k.a ‘Teched for the financially challenged”) took place today, and I got to attend four lectures. 3 of those were extra cool, and 1 was a bore from hell. **The first lecture** was done by [Yosi Taguri](http://weblogs.asp.net/yosit) and was about [advanced debugging techniques](http://weblogs.asp.net/yosit/posts/9443.aspx). _(btw, you might want to check out my_ [_.Net Debugging Resources_](http://dotnetweblogs.com/rosherove/story/7573.aspx) _page...)_ Lots of cool stuff shown there. highlights: ·         Using  DBG files for production debugging ·         Reflector , and the Reflector Add-in ·         Trace & Debug differences One of the best moments in that lecture was when Yosi introduced **[Reflector](http://www.aisto.com/roeder/dotnet/).** First, he gave a pretty a very exciting intro on how we all have Microsoft .Net source code right under our noses and we don’t even know it. He then proceeded to show us the cool-tool in all its glory. He really knows how to capture a crowd. One nice anecdote he mentioned was a problem that he had in one of the applications his team was building. Somewhere, It broke in the move to .Net 1.1. He then proceeded to show the exact reason why it broke, by something that would never have been found without using a decompiler – **Server.Transfer** was passing (in the code inside the assembly) a Boolean flag to an overloaded version of itself which accepts that flag, only in ver. 1.0 it sent false as default to that method, and in 1.1 it sends **true**. Totally amazing. Seeing this code in reflector(both the 1.1 and the 1.0 version assemblies were loaded in reflector for side by side comparison of this method) was a very powerful presentation. When he finally showed the link to reflector, you could hear the immediate paper and pen rustling of 200 attendees. Yeah, it was a captive audience. Showing the Reflector Add-in while debugging a .net application from inside VS.NET was a pretty imressive deal as well, but the initial impression from reflector was much more powerful, and justly so. It is one amazing tool. The screen looked a lot like this one, although there , the reflector window was \*inside\* VS.NET: <table width="1%"><tbody><tr><td></td><td width="1"></td></tr><tr><td colspan="3" height="1"></td></tr></tbody></table> One comment about that presentation – He should have used bigger screen fonts. Oh, he also mentioned **.NetWeblogs**, so expect a rush of Israeli server hits in the next couple of days J Hopefully, more Israeli .net programmers will discover these weblogs for the valuable information resource they are and start tapping into the minds of some very interesting people and ideas. **The second lecture** dealt with COM+ tips and tricks, but was so much a bore that I won’t even try to remember what the hell went on over there. People were yawning most of the time, and I think time stopped still for a few moments. Advice to lecturer: you should at least **try** to look like you are interested in the lecture you are giving. **The third lecture** dealt with Caching patterns & Practices and was was a pretty fun deal. Points of interest: ·         You can use the ASP.NET cache’s advanced functionality in non-web applications as well, just import System.Web and use HTTPRuntime.Cache. ·         The [Caching Application Block](http://www.microsoft.com/downloads/details.aspx?familyid=b55164c9-94c8-4077-aa29-afe4074746de&displaylang=en) looks to be one of the coolest new gadgets in town. It will work with SQL server, Memory-Mapped-Files and Static variables, all according to the needs you specify ·         There are specific patterns and caching strategies for any situation you’ll find yourself in. [The caching architecture guide can be found in here](http://www.microsoft.com/downloads/details.aspx?familyid=b55164c9-94c8-4077-aa29-afe4074746de&displaylang=en). There is a specific process to be taken when deciding on a strategy – Decide on the Scope and staleness of your cache data demands, and based on these, you can find the right strategy to fit your needs. There are actually decision tables on their site(Chapter 3 I believe) that show you what to do. Very nice. ·         For each application scope needed, the cache should use a different state holder solution. o        For AppDomain Scope (i.e. cachind data for your application internal use only) , static variables are the best. o        For Machine Scope(i.e. multiple applications using the same cached data – Memory Mapped files o        For Server Farm scope(i.e. Multiple machines using the same cached data) – SQL server persistent storage ·         Do **not** use a Remoting Singleton for your caching needs. It is not scalable, and performance is the worst of all the strategies mentioned above. ·         SQL server persistent storage is basically the only way to go for multi-machine scope caching (Which I find weird. I thought there were better solutions out there…) ·         Microsoft’s Patters & Practices team is always looking for input and feedback , to know what do developers really need, are they going in the right direction? What’s missing? Are they wrong about something? They should have all the feedback in the world IMHO, since the more they get from us, the more we get from them. Symbiosis is not an ugly word here… **The fourth lecture** dealt with performance and speed improvements tips & tricks. This was easily one of the best lectures I’ve attended. The lecturer was talking fast and to the point, much like what he was trying to explain to us. ·         If you really need something to work fast, and you don’t see any built-in solution – build it yourself – the ugly way. No two ways about that. ·         Know the performance hit of your code. Just thinking about boxing operations when using HashTables to lookup integers was enough to convince me that yeah, there’s lots of room for improvement if you really need to. o        Why do you have boxing with HashTables? Because a HashTable accepts as key an **object**, so any int,long or souble you pass to it, is automatically boxed and wrapped, and becomes an object which represents an int, long or double. This takes plenty of time. You won’t always need to get rid of that performance hit, but if and when you do, its good to know that the only way to avoid this, is building your own implementation of a HashTable. ·         If you only have one CPU on the machine, splitting a task to four different threads won’t help you, it’ll only increase the amount of time to finish the task. Always consider the amount of processes for multithreaded tasks ·         COM Interop is a big performance hit. Sometimes you’ll need to come up with some ugly stuff to avoind conversion of data structures beween your layer and the other layer (think .Net arrays Vs. C arrays) ·         ThreadPool Rocks ·         Object Pooling Rocks ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 1, 2003 ### [Automatically Create DataRelations Based On OleDB Schema](https://osherove.com/blog/2003/7/1/automatically-create-datarelations-based-on-oledb-schema.html) - Jul 1, 2003 ### [More about .Net Deep Dive](https://osherove.com/blog/2003/7/1/more-about-net-deep-dive.html) - Jun 29, 2003 ### [FillSchema and AddWithKey Don't Operate As Promised?](https://osherove.com/blog/2003/6/29/fillschema-and-addwithkey-dont-operate-as-promised.html) - Jun 27, 2003 ### [Quick & Easy ADO.NET Speed Improvements](https://osherove.com/blog/2003/6/27/quick-amp-easy-adonet-speed-improvements.html) --- title: "Scripting News Is Down. I'm Sad." url: "https://osherove.com/blog/2003/6/29/scripting-news-is-down-im-sad.md" canonical: "https://osherove.com/blog/2003/6/29/scripting-news-is-down-im-sad.html" published: "2003-06-29T18:01:00" updated: "2003-06-29T18:01:00" tags: ["Blogging"] author: "Roy Osherove" description: "Dave took down scripting news . I really feel for what he writes there. I have nothing to say to make him feel any better. I can only offer my sympathy as someone who \"tries\" to undestand what he's going through. In the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scripting News Is Down. I'm Sad. By Roy Osherove June 29, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 29, 2003; technical details may be outdated. Dave [took down scripting news](http://www.scripting.com/). I really feel for what he writes there. I have nothing to say to make him feel any better. I can only offer my sympathy as someone who "tries" to undestand what he's going through. In the end, the feeling of being left alone is far more powerful than any medium. It's the feelings, that people sometimes bare for all to see, that make me actually have emotions for someone I've never met(and probably never will). Dave just did that, and it reads and makes you want to cry a little. Yeah.It really did make me feel that. And you know what, I wasn't a real avid reader of that site. It just the person behind that last post that made me write all this "stuff" right now. Update: Oh! It seems to be back up, and Dave seems to be his usual self. The world is normal again(And I don't like people teaching me lessons - although I did learn \*something\* tonight) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 7, 2003 ### [FeedDemon fixes abound!](https://osherove.com/blog/2003/7/7/feeddemon-fixes-abound.html) - Jul 3, 2003 ### [6 months and counting](https://osherove.com/blog/2003/7/3/6-months-and-counting.html) - Jun 29, 2003 ### [Me Too!](https://osherove.com/blog/2003/6/29/me-too.html) - Jun 29, 2003 ### [FeedDemon Likes And Dislikes](https://osherove.com/blog/2003/6/29/feeddemon-likes-and-dislikes.html) --- title: "Me Too!" url: "https://osherove.com/blog/2003/6/29/me-too.md" canonical: "https://osherove.com/blog/2003/6/29/me-too.html" published: "2003-06-29T17:45:00" updated: "2003-06-29T17:45:00" tags: ["Blogging"] author: "Roy Osherove" description: "I want a weblogger dinner too! Unfortunately, it seems as though most of the bloggers in these parts don't come to Israel that often, and it also appears that It won't be anytime soon until I get over there. So. I'd…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Me Too! By Roy Osherove June 29, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 29, 2003; technical details may be outdated. I want a [weblogger dinner](http://weblogs.asp.net/datagridgirl/posts/9445.aspx) too! Unfortunately, it seems as though most of the bloggers in these parts don't come to Israel that often, and it also appears that It won't be anytime soon until I get over there. **So.** I'd like to extend an invitation to anyone of the bloggers here who happens to stop by our little conflicted country - Dinner is on me! :) (If you happen to lecture at our user group by accident, that's fine too :)) (**Yes**, we have Mc'Donalds. **No**, we do not ride camels to work anymore.) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jul 3, 2003 ### [6 months and counting](https://osherove.com/blog/2003/7/3/6-months-and-counting.html) - Jun 29, 2003 ### [Scripting News Is Down. I'm Sad.](https://osherove.com/blog/2003/6/29/scripting-news-is-down-im-sad.html) - Jun 29, 2003 ### [FeedDemon Likes And Dislikes](https://osherove.com/blog/2003/6/29/feeddemon-likes-and-dislikes.html) - Jun 17, 2003 ### [Scoble, Come Back!](https://osherove.com/blog/2003/6/17/scoble-come-back.html) --- title: "FillSchema and AddWithKey Don't Operate As Promised?" url: "https://osherove.com/blog/2003/6/29/fillschema-and-addwithkey-dont-operate-as-promised.md" canonical: "https://osherove.com/blog/2003/6/29/fillschema-and-addwithkey-dont-operate-as-promised.html" published: "2003-06-29T17:42:00" updated: "2003-06-29T17:42:00" tags: [".Net Original"] author: "Roy Osherove" description: "uuugh! I've been struggling with this one for a few days now, so after hitting all the relevant newg groups, let's see if anyone has a good answer: Given a DataTable, I need to know all the Other DataTables that have a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # FillSchema and AddWithKey Don't Operate As Promised? By Roy Osherove June 29, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 29, 2003; technical details may be outdated. uuugh! I've been struggling with this one for a few days now, so after hitting all the relevant newg groups, let's see if anyone has a good answer: Given a DataTable, I need to know all the Other DataTables that have a Relation to this table. Specifically, I want to know all the relations in which this table is a "Details" table (i.e. has a foreign key constraint). I've tried using the DataAdapter.FillSchema method, but no luck. I've also tried setting the DataAdapter.MissingSchemaAction to AddWithKey, but still no luck. I've made sure that the table actually has a foreign key in the DB(I'm using Northwind SQL server). The only way that works, is by using a completely different feature: Connection.GetOleDBSchemaTable(), but It seems to me that this should be possible using the DataAdapter as well. All the references I've read on the subject point to the fact that using each of these 2 methods od the DataAdapter will create those missing relations. :( **Update:** Just found out that _FillSchema_ or Fill are not supposed to add Data Relations automatically. _GetOleDBSchema_ is the only way. I'll try to create something generic for use in these situations , though. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jul 1, 2003 ### [More about .Net Deep Dive](https://osherove.com/blog/2003/7/1/more-about-net-deep-dive.html) - Jun 30, 2003 ### [.Net Deep Dive Recap](https://osherove.com/blog/2003/6/30/net-deep-dive-recap.html) - Jun 27, 2003 ### [Quick & Easy ADO.NET Speed Improvements](https://osherove.com/blog/2003/6/27/quick-amp-easy-adonet-speed-improvements.html) - Jun 22, 2003 ### [Disabling Connection Pooling](https://osherove.com/blog/2003/6/22/disabling-connection-pooling.html) --- title: "FeedDemon Likes And Dislikes" url: "https://osherove.com/blog/2003/6/29/feeddemon-likes-and-dislikes.md" canonical: "https://osherove.com/blog/2003/6/29/feeddemon-likes-and-dislikes.html" published: "2003-06-29T16:19:00" updated: "2003-06-29T16:19:00" tags: ["Blogging", "Cool Tools"] author: "Roy Osherove" description: "I have to admit it. FeedDemon totally rocked my RSS reading world. I like it even better than NewsGator. The interface(I'm a GUI guy) is very very slick and intuitive, and I really like the browser oane being positioned…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # FeedDemon Likes And Dislikes By Roy Osherove June 29, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published June 29, 2003; technical details may be outdated. I have to admit it. [FeedDemon](http://www.feeddemon.com/) totally rocked my RSS reading world. I like it even better than NewsGator. The interface(I'm  a GUI guy) is very very slick and intuitive, and I really like the browser oane being positioned to the right(like outlook 2003). I think this is the one reader I would consider actually paying for. It’s almost mature enough as a product for me to consider it as good payable. Things I really like: ·         It’s separate from Outlook, which is a plus. The task of  reading RSS should be, to me, separate from using my email at work. It allows me to set it aside and leave it alone while I go about doing my business. ·         Its fast and, compared to the others, consumes very little resources ·         It does not make me feel stupid sometimes when I do something wrong or don’t know how to operate something. Its interface is much more self-describing than the others, allowing me to quickly figure out what I’m doing. All this is on top of the fact that in actuality, it is a much more diverse and complex product than the other aggregators out there. It just feels simple. That’s what its all about. Now for the things I like a little less, and stuff I’d like to see added: ·         I’d like to know when new posts arrive even when its minimized to tray(NewzCrawler does this nicely with a popup balloon, much like ZoneAlarm does to alert you of important stuff). This ability should be allowed to be turned off, for less interference with the “flow” when needed. ·         This ability should be allowed to be enabled only for select channels(I only want to know when Scoble posts something, for example) ·         I’d like to be able to hide the channel selector to the left just like I make the message selector disappear when I full-size the browser window. Sometimes it just takes up too much space. Hey , not all of us use twin 19” dual monitors you know? ·         An ability, like [NewsGator](http://www.newsgator.com/), to right click an RSS link in IE and register it as a feed in FeedDemon ·         Plug-in support and SDK – so we can integrate all kinds of cool stuff in there ·         Help ·         Searching and indexing abilities ·         Add a hierarchical view of the Channel listings, allowing drag& Drop between channels and categories ·         Customizable shortcuts for **everything** ·         Ability to set special icons for individual feeds(+ Forecolor,font…) ·         Add “author” column in the messages listing ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 29, 2003 ### [Scripting News Is Down. I'm Sad.](https://osherove.com/blog/2003/6/29/scripting-news-is-down-im-sad.html) - Jun 29, 2003 ### [Me Too!](https://osherove.com/blog/2003/6/29/me-too.html) - Jun 17, 2003 ### [Scoble, Come Back!](https://osherove.com/blog/2003/6/17/scoble-come-back.html) - Jun 17, 2003 ### [Oy Vey](https://osherove.com/blog/2003/6/17/oy-vey.html) --- title: "Nice page of ADO.NET notes & tips" url: "https://osherove.com/blog/2003/6/28/nice-page-of-adonet-notes-amp-tips.md" canonical: "https://osherove.com/blog/2003/6/28/nice-page-of-adonet-notes-amp-tips.html" published: "2003-06-28T13:40:00" updated: "2003-06-28T13:40:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "http://kristopherjohnson.net/cgi-bin/twiki/view/KJ/AdoDotNet Update: Oh, and also: ADO.NET Best Practices (via Chris Kinsman )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice page of ADO.NET notes & tips By Roy Osherove June 28, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published June 28, 2003; technical details may be outdated. [http://kristopherjohnson.net/cgi-bin/twiki/view/KJ/AdoDotNet](http://kristopherjohnson.net/cgi-bin/twiki/view/KJ/AdoDotNet) Update: Oh, and also: [ADO.NET Best Practices](http://radio.weblogs.com/0101134/2002/08/01.html#a21) (via [Chris Kinsman](http://radio.weblogs.com/0101134/2002/08/01.html#a21)) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 6, 2003 ### [Visual Studio .NET and C# Tips and Tricks](https://osherove.com/blog/2003/7/6/visual-studio-net-and-c-tips-and-tricks.html) - Jul 1, 2003 ### [.Net Rocks with Tim Huckaby](https://osherove.com/blog/2003/7/1/net-rocks-with-tim-huckaby.html) - Jun 22, 2003 ### [More About Processes](https://osherove.com/blog/2003/6/22/more-about-processes.html) - Jun 20, 2003 ### [Typed Dataset Q&A](https://osherove.com/blog/2003/6/20/typed-dataset-qampa.html) --- title: "Quick & Easy ADO.NET Speed Improvements" url: "https://osherove.com/blog/2003/6/27/quick-amp-easy-adonet-speed-improvements.md" canonical: "https://osherove.com/blog/2003/6/27/quick-amp-easy-adonet-speed-improvements.html" published: "2003-06-27T20:04:00" updated: "2003-06-27T20:04:00" tags: [".Net Original"] author: "Roy Osherove" description: "OK, I coudn't resist... 1) It’s about 20 times faster to create DataTables in your dataset using code, than letting your DataAdapter create them. 2) A very good potential for speed improvement lies when filling a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Quick & Easy ADO.NET Speed Improvements By Roy Osherove June 27, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 27, 2003; technical details may be outdated. OK, I coudn't resist... 1) It’s about 20 times faster to create DataTables in your dataset using code, than letting your DataAdapter create them. 2)  A very good potential for speed improvement lies when filling a DataSet with DataTables that have constraints such as PrimaryKeys. As the DataAdapter adds each row to the DataTable, it has to check that the new row meets the constraints of the table. This means significant slowdown when loading a dataset. Usually, your dataset will have the same constraints as the database you pulled the data from, meaning there’s no reason to check validity of data again. **Easy solution** -  the DataSet contains a property called ‘_EnforceConstraints’_ which is by default set to _True_. Just set this property to _False_ before filling up the Dataset and you’ll save all that precious validation time. If you're working with just a single DataTable object, you can use the _BeginLoadData_ and _EndLoadData_ methods of the DataTable to achieve the same goal. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 30, 2003 ### [.Net Deep Dive Recap](https://osherove.com/blog/2003/6/30/net-deep-dive-recap.html) - Jun 29, 2003 ### [FillSchema and AddWithKey Don't Operate As Promised?](https://osherove.com/blog/2003/6/29/fillschema-and-addwithkey-dont-operate-as-promised.html) - Jun 22, 2003 ### [Disabling Connection Pooling](https://osherove.com/blog/2003/6/22/disabling-connection-pooling.html) - Jun 22, 2003 ### [A Little Macro To Automate Creating Connection Strings](https://osherove.com/blog/2003/6/22/a-little-macro-to-automate-creating-connection-strings.html) --- title: "Still Alive" url: "https://osherove.com/blog/2003/6/27/still-alive.md" canonical: "https://osherove.com/blog/2003/6/27/still-alive.html" published: "2003-06-27T19:40:00" updated: "2003-06-27T19:40:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Just wanted to say that I'm still alive, but I am in the middle of so much \"stuff\" right now, I can hardly find any time to blog about stuff. Hopefully in a few days the situation will settle down a bit and I can…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Still Alive By Roy Osherove June 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 27, 2003; technical details may be outdated. Just wanted to say that I'm still alive, but I am in the middle of so much "stuff" right now, I can hardly find any time to blog about stuff. Hopefully in a few days the situation will settle down a bit and I can continue to spill my guts out. Meanwhile I'm struggling with my MCP certification, job search, various articles and learning my a\*\* off trying to dive deep into the ADO.NET, the new application blocks and a new application I'm working on. I'm still trolling .NetWeblogs, but I'll be on the reading side of things mostly. Hopefully, when I get back we'll be able to finish up te .Net Desktops contest(did I mention there are prizes?). **quick notes:** - FeedDemon is really cool, and no, I havn't run in to any spyware yet... - [Google Toolbar 2.0](http://toolbar.google.com/index-beta.php) is very cool I really miss being part of "the loop". I'll be back ASAP ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 1, 2003 ### [Wasted Years](https://osherove.com/blog/2003/7/1/wasted-years.html) - Jul 1, 2003 ### [User Groups](https://osherove.com/blog/2003/7/1/user-groups.html) - Jun 24, 2003 ### [.Net Rocks Rocks, INETA, and Starting A User Group](https://osherove.com/blog/2003/6/24/net-rocks-rocks-ineta-and-starting-a-user-group.html) - Jun 23, 2003 ### [Stop The Silliness](https://osherove.com/blog/2003/6/23/stop-the-silliness.html) --- title: ".Net Rocks Rocks, INETA, and Starting A User Group" url: "https://osherove.com/blog/2003/6/24/net-rocks-rocks-ineta-and-starting-a-user-group.md" canonical: "https://osherove.com/blog/2003/6/24/net-rocks-rocks-ineta-and-starting-a-user-group.html" published: "2003-06-24T13:00:00" updated: "2003-06-24T13:00:00" tags: ["Off Topic"] author: "Roy Osherove" description: "> Boy. I have to say, the last .Net Rocks show totally rocked . Julie - you were great There was so much talk going on about all the user groups around the world, and all the cool speakers, it re-sparked my old flame -…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Rocks Rocks, INETA, and Starting A User Group By Roy Osherove June 24, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 24, 2003; technical details may be outdated. \> Boy. I have to say, [the last .Net Rocks](http://www.franklins.net/dotnetrocks.asp) show totally rocked. [Julie](http://weblogs.asp.net/jlerman/)  - you were great There was so much talk going on about all the user groups around the world, and all the cool speakers, it re-sparked my old flame - I wanted to start a user group too. In fact, I even blogged about it a couple of months ago. Listening to all these talks really made those thouts resurface, although I still think having a fifth user group with already 4 others competing over the same metropolitan area would be too much. I **still** think the VB user group in Israel could do a lot better, and even approached our group leader(who is also a regional director) offering to assist and maybe get some website going. Nothing really happened in that regard. Perhaps I should have tried harder? Perhaps I should just go at it and start consulting the good people of INETA on how to achieve this? I wonder, If I did want to gather up a group of 10 or more people who are willing to learn new stuff about .net, who will join me? Most israeil developers(AFAIK) don't even know user groups exist. That's just sad. How many Israeli programmers read the main [.netWeblogs homepage](http://weblogs.asp.net/)(I won't even dare to guess how many israeli programmers know what RSS is). I wonder if any of the user group members listened to my advice and started reading these blogs(If you have, let me know!) Getting back to the show, Carl plays a mean guitar, and on the show before this one played a wonderful quiet piece, which I totally liked. Hey Carl, How about getting some music-only MP3's our way? On this show, there was a whole band(or was it all just remixing?) with a very funny song about smoking. Heh. These are great interludes. I'd like to hear more about favorite tools by the people they interview, though. Also, the shows seem to get shorter.They used to be 70-80 minutes each, now we get only 60. I'm addicted! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jul 1, 2003 ### [User Groups](https://osherove.com/blog/2003/7/1/user-groups.html) - Jun 27, 2003 ### [Still Alive](https://osherove.com/blog/2003/6/27/still-alive.html) - Jun 23, 2003 ### [Stop The Silliness](https://osherove.com/blog/2003/6/23/stop-the-silliness.html) - Jun 19, 2003 ### [Book Gripes, Safari Bookshelf, And a .Net Desktops Prize](https://osherove.com/blog/2003/6/19/book-gripes-safari-bookshelf-and-a-net-desktops-prize.html) --- title: "Stop The Silliness" url: "https://osherove.com/blog/2003/6/23/stop-the-silliness.md" canonical: "https://osherove.com/blog/2003/6/23/stop-the-silliness.html" published: "2003-06-23T13:13:00" updated: "2003-06-23T13:13:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Sure, I could write a long post regarding Eric's post about the future. I could even make it really deep and insightful , so Scoble will link to me. But I won't. I find it very hard to get real interested in this issue,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Stop The Silliness By Roy Osherove June 23, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 23, 2003; technical details may be outdated. Sure, I could write a long post regarding [Eric's post](http://www.randomhacks.net/stories/the-missing-future.html) about the future. I could even make it really deep and insightful , so [Scoble](http://scoble.weblogs.com/) will link to me. But I won't. I find it very hard to get real interested in this issue, mainly because it's not really relevant. It's almost like a "flame" post on the newsgroups. Everyone wants to answer the guy, But where's it gonna lead? Does anyone here believe that by talking about this issue MSFT will somehow change anything in the way that it behaves? Will Open source be any different in 5 years because of these discussions?  I'd rather open .NetWeblogs and read something technical and interesting, which **applies to me**. **Speaking of which:** - I've accumulated quite a bunch of articles and tools in my .[Net Debugging resources](http://dotnetweblogs.com/rosherove/story/7573.aspx) section. - Hey [Scott](http://aspnetweblog.com/), [Blogert](http://aspnetweblog.com/posts/7830.aspx) is really cool, but is it possible to get a version that runs on 1.0? I'm sure I'm not the only one in need of this... - The [.Net Desktops](http://pnavy.com/royo/desktops) contest submission period  will end at the closing of this month. If you want to add your desktop, [hurry](http://weblogs.asp.net/rosherove/story/8523.aspx). - I've managed to talk [Scoble](http://scoble.weblogs.com/) into donating some (yet to be known) prize, and [Mike](http://www.larkware.com/) has also donated a prize, so **1st** and **2nd** place get something :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 27, 2003 ### [Still Alive](https://osherove.com/blog/2003/6/27/still-alive.html) - Jun 24, 2003 ### [.Net Rocks Rocks, INETA, and Starting A User Group](https://osherove.com/blog/2003/6/24/net-rocks-rocks-ineta-and-starting-a-user-group.html) - Jun 19, 2003 ### [Book Gripes, Safari Bookshelf, And a .Net Desktops Prize](https://osherove.com/blog/2003/6/19/book-gripes-safari-bookshelf-and-a-net-desktops-prize.html) - Jun 18, 2003 ### [SQL Server is Missing NextVal Functionality](https://osherove.com/blog/2003/6/18/sql-server-is-missing-nextval-functionality.html) --- title: "Disabling Connection Pooling" url: "https://osherove.com/blog/2003/6/22/disabling-connection-pooling.md" canonical: "https://osherove.com/blog/2003/6/22/disabling-connection-pooling.html" published: "2003-06-22T19:11:00" updated: "2003-06-22T19:11:00" tags: [".Net Original", "Tips & Tricks"] author: "Roy Osherove" description: "ADO.NET Data Providers automatically use connection pooling turned on. If you want to turn this functionality off: In an SQLConnection object, Add this to the connection string: Pooling=False; In An OLEDBConnection…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Disabling Connection Pooling By Roy Osherove June 22, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published June 22, 2003; technical details may be outdated. ADO.NET Data Providers automatically use connection pooling turned on. If you want to turn this functionality off: In an _SQLConnection_ object, Add this to the connection string: **Pooling=False;** In An _OLEDBConnection_ object, add this: **OLE DB Services=-4;** This way, the _OLE DB_ data provider will mark your connection so that it does not participate in connection pooling. P.S This post was written using Scott's new [Blogert](http://aspnetweblog.com/posts/7830.aspx). It Rocks! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 29, 2003 ### [FillSchema and AddWithKey Don't Operate As Promised?](https://osherove.com/blog/2003/6/29/fillschema-and-addwithkey-dont-operate-as-promised.html) - Jun 27, 2003 ### [Quick & Easy ADO.NET Speed Improvements](https://osherove.com/blog/2003/6/27/quick-amp-easy-adonet-speed-improvements.html) - Jun 22, 2003 ### [A Little Macro To Automate Creating Connection Strings](https://osherove.com/blog/2003/6/22/a-little-macro-to-automate-creating-connection-strings.html) - Jun 21, 2003 ### [Winforms Data Binding Lessons Learned](https://osherove.com/blog/2003/6/21/winforms-data-binding-lessons-learned-1.html) --- title: "A Little Macro To Automate Creating Connection Strings" url: "https://osherove.com/blog/2003/6/22/a-little-macro-to-automate-creating-connection-strings.md" canonical: "https://osherove.com/blog/2003/6/22/a-little-macro-to-automate-creating-connection-strings.html" published: "2003-06-22T18:44:00" updated: "2003-06-22T18:44:00" tags: [".Net Original", "Tips & Tricks"] author: "Roy Osherove" description: "I've created a little macro that automatically creates a connection string and inserts it in your code. It pops up the infamous \" Data Links \" dialog for you, saving you, the poor programmer, from having to remember all…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Little Macro To Automate Creating Connection Strings By Roy Osherove June 22, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published June 22, 2003; technical details may be outdated. I've created a little macro that automatically creates a connection string and inserts it in your code. It pops up the infamous "_Data Links_" dialog for you, saving you, the poor programmer, from having to remember all those pesky little syntax details.... :) No references needed for this. **Thank** **god** for CreateObject :) Public Sub InsertConnectionString() Dim links As Object = CreateObject("DataLinks") Dim cn As Object = CreateObject("ADODB.Connection") links.PromptEdit(cn) If cn.connectionstring = "" Then Exit Sub Dim sel As TextSelection = ActiveDocument().Selection sel.Text = cn.connectionstring End Sub Now just add a shortcut for it and you're ready to roll... ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 27, 2003 ### [Quick & Easy ADO.NET Speed Improvements](https://osherove.com/blog/2003/6/27/quick-amp-easy-adonet-speed-improvements.html) - Jun 22, 2003 ### [Disabling Connection Pooling](https://osherove.com/blog/2003/6/22/disabling-connection-pooling.html) - Jun 21, 2003 ### [Winforms Data Binding Lessons Learned](https://osherove.com/blog/2003/6/21/winforms-data-binding-lessons-learned-1.html) - Jun 19, 2003 ### [How To Know When An External Application Exits](https://osherove.com/blog/2003/6/19/how-to-know-when-an-external-application-exits.html) --- title: "More About Processes" url: "https://osherove.com/blog/2003/6/22/more-about-processes.md" canonical: "https://osherove.com/blog/2003/6/22/more-about-processes.html" published: "2003-06-22T03:54:00" updated: "2003-06-22T03:54:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "I wouldn't delude myself into thinking that this is because of my earlier post about Processes , but Early & Adopter posted a small and helpful post about Debugging Process.Start by redirecting the Standard Output…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More About Processes By Roy Osherove June 22, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published June 22, 2003; technical details may be outdated. - I wouldn't delude myself into thinking that this is because of my [earlier post about Processes](http://weblogs.asp.net/rosherove/posts/8973.aspx), but [Early & Adopter](http://radio.weblogs.com/0117167/) posted a small and helpful [post about Debugging Process.Start](http://radio.weblogs.com/0117167/2003/06/19.html#a347) by redirecting the Standard Output stream from that process. - Also, I was asked how to handle preventing multiple instances of the same application. I'll just point in the direction of [this nice article](http://www.codeproject.com/useritems/restricting_instances.asp) for the answer ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jul 1, 2003 ### [.Net Rocks with Tim Huckaby](https://osherove.com/blog/2003/7/1/net-rocks-with-tim-huckaby.html) - Jun 28, 2003 ### [Nice page of ADO.NET notes & tips](https://osherove.com/blog/2003/6/28/nice-page-of-adonet-notes-amp-tips.html) - Jun 20, 2003 ### [Typed Dataset Q&A](https://osherove.com/blog/2003/6/20/typed-dataset-qampa.html) - Jun 18, 2003 ### [Very Good Winforms FAQ](https://osherove.com/blog/2003/6/18/very-good-winforms-faq.html) --- title: "Winforms Data Binding Lessons Learned" url: "https://osherove.com/blog/2003/6/21/winforms-data-binding-lessons-learned-1.md" canonical: "https://osherove.com/blog/2003/6/21/winforms-data-binding-lessons-learned-1.html" published: "2003-06-21T19:27:00" updated: "2003-06-21T19:27:00" tags: [".Net Original"] author: "Roy Osherove" description: "Over the past week or so, I've been learning quite a lot about Data Binding in WinForms. I've decided to put the most important lessons I've learned in a short article . Her'e are its headlines: Lesson 1 : Displaying…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Winforms Data Binding Lessons Learned By Roy Osherove June 21, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 21, 2003; technical details may be outdated. Over the past week or so, I've been learning quite a lot about Data Binding in WinForms. I've decided to put the most important lessons I've learned in a [short article](http://weblogs.asp.net/rosherove/story/9088.aspx). Her'e are its headlines: **Lesson 1**: Displaying Many-To-Many Relationships Using  DataBinding **Lesson 2**:  Reacting to and canceling illegal Row Editing in a DataGrid **Lesson 3**: Reacting to and canceling illegal Row Deletion **Lesson 4**: How to make a Non-DataGrid control act as the Master Table (**or**: How to get the desired position in a BindingContext, when all you have to go on is a DataRow object ) No. 4 is a rehash of a past post, but I thought it should be here as well [Read it here](http://weblogs.asp.net/rosherove/story/9088.aspx). ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 22, 2003 ### [Disabling Connection Pooling](https://osherove.com/blog/2003/6/22/disabling-connection-pooling.html) - Jun 22, 2003 ### [A Little Macro To Automate Creating Connection Strings](https://osherove.com/blog/2003/6/22/a-little-macro-to-automate-creating-connection-strings.html) - Jun 19, 2003 ### [How To Know When An External Application Exits](https://osherove.com/blog/2003/6/19/how-to-know-when-an-external-application-exits.html) - Jun 19, 2003 ### [Winforms DataBinding Bliss](https://osherove.com/blog/2003/6/19/winforms-databinding-bliss.html) --- title: "Winforms Data Binding Lessons Learned" url: "https://osherove.com/blog/2003/6/21/winforms-data-binding-lessons-learned.md" canonical: "https://osherove.com/blog/2003/6/21/winforms-data-binding-lessons-learned.html" published: "2003-06-21T19:12:00" updated: "2003-06-21T19:12:00" tags: ["ADO.Net"] author: "Roy Osherove" description: "I’ve been dabbling with Winforms Data Biding and the DataGrid control for the past week, and here are some lessons I’ve Found (The code is in VB.NET): Lesson 1: Displaying Many-To-Many Relationships Using DataBinding…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Winforms Data Binding Lessons Learned By Roy Osherove June 21, 2003 In [ADO.Net](https://osherove.com/blog/category/ado-net) **Historical article** · Originally published June 21, 2003; technical details may be outdated. I’ve been dabbling with Winforms Data Biding and the DataGrid control for the past week, and here are some lessons I’ve Found (The code is in VB.NET): ##### _Lesson 1: Displaying Many-To-Many Relationships Using  DataBinding_ Displaying A Master-Details relation in a forms is really not a big deal. You Set one control up which is bound to the master table, and one DataGrid which is bound to the relation between the Master Table and the Child Table like so: adpSoldiers.Fill(ds, "Soldiers") ds.Relations.Add("SoldierNotes", ds.Tables("Soldiers").Columns("ID"), ds.Tables("Notes").Columns("SoldierID")) In this code, we have one table “Soldiers” and for each soldier we can have 1 or more notes.  A simple one-to-many relationship. All we have to do in roder to display a master details form here is have two data grids, one bound to ds.Tables("Soldiers") and one bound to ds with a DataMember property of  "Soldiers.SoldierNotes" . The problem arises when we have a many-to-many relationship. Let’s say we have another table “Courses”. Now, each soldier can be enrolled into one or more courses, and each course can be taken by one or more soldiers. For that purpose, we have a third table “Registrations” which contains only “SoldierID” and “CourseID” as columns, with a PK comprised of both of these columns. Suppose we want to show, for the selected soldier in grid 1, all the courses, including course name, which he is enrolled to. Simple Data Binding to the relation between Soldiers and Registrations will not do. adpSoldiers.Fill(ds, "Soldiers") adpSoldiers.Fill(ds, "Courses") adpSoldiers.Fill(ds, "Registrations") ds.Relations.Add("SolCourses", ds.Tables("Soldiers").Columns("ID"), ds.Tables("Registrations ").Columns("SoldierID")) We’ll get unreadable data in the “details” grid only showing “SoldierID” and “CourseID” columns. So what’s the solution? Unfortunately, as much as I looked, there is not really elegant solution, but here’s the best way I’ve found to overcome this: What we can do, is add **calculated columns** into our “registrations” datatable, which , for each DataRow in the table, display the value of the parent **Courses** row’s “Name” value, using a predefined relation: First, we add this relation into our relations collection, which will allow us to retrieve the parent Courses Row for each Registrations Row according to the “CourseID” value: ds.Relations.Add("CourseReg", ds.Tables("Courses").Columns("ID"), ds.Tables("Registrations ").Columns("CourseID")) Next, We’ll add the calculated columns to our “Registrations” DataTable: ds.Tables("Registrations").Columns.Add("Course", GetType(String), "Parent(CourseReg).Name") What I pass in to the Columns constructor is the **name** of the new columns, the **type** of displayed data in that columns, and the **expression** that the columns will hold. To retrieve the parent row using a specified relation, I’ll write “Parent(RelationName).ColumName”. I could also get a child aggregate function using this data columns, by specifying “Count(Child(RelationsName).ID)”. If the DataTable only has one relation defined, I don’t even have to specify the name of the relation to use, like so: “Sum(Child.Price)”. To learn more about calculated columns, [here’s a nice article about the subject](http://www.ondotnet.com/lpt/a/3879). OK. So now that we have our calculated column in place, we can use the same relation in the details grid, only this time we’ll see the name of the course as well as the other columns. The calculated columns in the DataGrid will be read-only, as they should be. A new problem is encountered, though. The user still cannot add new items to the DataGrid, without knowing in advance the ID of the needed course, and the soldier. (Once those values are entered inside the new row in the grid, the “name” column will display the name of the new course registration, but not before then). For that you’ll either have to have a [combo box that will be placed over the “CourseID” Active cell](http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp#q480q), or other, more user-friendly external means of inserting a row to the DataTable. ##### _Lesson 2:  Reacting to and canceling illegal Row Editing in a DataGrid_ Lets say that we have a Grid, bound to the Courses Table, but we don’t want the user to edit a course that has already started. We have a ”StartDate column in the Courses Table, so all we need to do now is know when a user has changed a value, and cancel that edit if needed. The way to do this, is reacting to the DataTable’s **RowChanging** event. This event will be thrown once one of the Selected DataRow’s columns will be edited. Here’s the code: AddHandler ds.Tables("Courses").RowChanging, New DataRowChangeEventHandler(AddressOf OnRowChange) Private Sub OnRowChange(ByVal sender As Object, ByVal e As DataRowChangeEventArgs) If IsInProgress(e.Row) Then Throw New Exception("Course Is Already In Progress") End If End Sub Private Function IsInProgress(ByVal row As DataRow) As Boolean 'code to determine if the current Course is in progress End Function Here’s the funny thing: To cancel the editing, I need to throw an exception. This exception will be caught by the DataGrid, and shown to the user. What ever text you write in the exception message will be displayed to the user in a message box followed by a question whether they would like to cancel or edit the new value. By the way, this event can also be used to discover new rows. You can also register to the ‘RowDeleting” event of the DataTable to receive notification of a row’s deletion, but you cannot cancel that action from within the event. This is a bit more complicated, and is explained in the next lesson. You can use the DataRowChangeEventArgs.Action property to determine what action was taken for this even to occur; _Deleted, Changed, Added_ and so on… ##### _Lesson 3: Reacting to and canceling illegal Row Deletion_ OK. This part is a little trickier than before, since you can’t just throw an exception which will be handled by the DataGrid. Nope. For some reason you have to go through some hoops to create this kind of functionality yourself. The first trick to understanding how to accomplish this is understanding how the DataGrid displays its data. You’ll notice that the DataGrid does not have any properties such as “AllowDelete” or “AllowAddNew”. Infact, you can’t control how your users will interact with the grid using any of the grid’s properties(except “Enabled”). The trick is, that the DataGrid is actually basing its interactivity level on an underlying **DataView** object to which it is bound. If you’ll look at a DataView object, you’ll see that it does contain this kind of properties. So, setting “_AllowDelete_” on the DataGrid’s underlying DataView object to **false** will disable delete functionality from the Grid. Now, the technique becomes pretty simple: We disable the “AllowDelete” property of the DataView, and catch the _KeyDown_ event of the DataGrid. If the KeyCode is that of the _Keys.Delete_ key, we enable deletion on the DataView, delete the current DataRow, and disable deletion again until next time. Here’s the code:     Private Sub grd\_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles grd.KeyDown         If e.KeyCode = Keys.Delete Then             'check whether the current DataRow Course             'is in Progress and cancel deletion if it is             If IsInProgress(CType(GetGridCurrency().Current, DataRowView).Row) Then                 MsgBox("Already in progress")             Else                 'Delete the current row                 EnableDelete(True)                 CType(GetGridCurrency().Current, DataRowView).Delete()                 EnableDelete(False)             End If         End If     End Sub     Private Function GetGridCurrency() As CurrencyManager         'return the currency manager associated with the DataGrid         Dim cm As CurrencyManager = BindingContext(grd.DataSource, grd.DataMember)         Return cm     End Function     Private Sub EnableDelete(ByVal value As Boolean)         'enable or disable AllowDelete on the         'DataGrid() 's underlying DataView         Dim cm As CurrencyManager = GetGridCurrency()         Dim view As DataView = CType(cm.List, DataView)         view.AllowDelete = value     End Sub Notice that What I’m actually Deleting is a **DataRowView** object, not a DataRow. This is because just like a DataTable had DataRows, a DataView as DataRowViews, corresponding to each DataTable row. Each DataRowView holds a property reference to the DataRow associated with it.Performing actions on a DataRowView is just like performing them on a DataRow object. That’s it. There’s no way around this that I could find… I’ve seen one other way to accomplish this functionality – by deriving a custom grid from the DataGrid, and pre-processing WM\_KEYDOWN messages before they arrive \***shudder**\*. ##### _Lesson 4: How to make a Non-DataGrid control act as the Master Table_ ##### _(or: How to_ _get the desired position in a BindingContext, when all you have to go on is a DataRow object)_ This problem would occur whenever you want a control other than a DataGrid to serve as a 'master' in a master-details data bound form. Imagine that the control that you have is a treeview. You filled up the treeNodes and set the node.Tag property with a DataRow object . You want the user to be able to click on a tree node and let a DataGrid on the form show the child rows of the selected DataRow. Now, If we have a ListBox or ComboBox control, this could be easy. You just set the BindingManager's Position property to the current index of the control. But what about a treeview? Where is the $#%! index there? **The solution** is pretty darn simple: using a _DataView_ object. A DataView object has the ability to find a row based on a key and a value, meaning that if the DataRow is sorted according to the primary key of the table, you can use it too look up a row based on a given primary key. It contains a **Find** method which, how comfortable, return the index to the row that was found. so, all you have to do is create a new DataView object, make it sort on your PK, and use it to find and index. Then you set the Binding manager's postion according to the returned index. Yu will need to bind your controls to that particular DataView, so you'll get the correct position(no biggie). One word of caution - a DataTable object has by default a DefaultDataView property which you can use. It is recommended to use a new DataView object, which gives you more flexibilty, and hey, you can create 2 or even 10 different view of your data. You can sort them, you can filter them, hell, you can just show the rows that were last changed,added,deleted - you name it. It's all there using the DataView. Here's the code to handle the user selecting a tree node: //Create a custom view of the data private DataView view = new DataView(m\_ds.Tables\["Stuff"\]); //make it sort based on the PK view.Sort\="ID"; //Handling a listbox event private void listBox1\_SelectedIndexChanged(object sender, System.EventArgs e) {       //get the binding manager to set the position       BindingManagerBase bind = BindingContext\[m\_ds,"Stuff"\];       //Using the 'Find' of the DataView       //returns the needed row index!       //Just make sure you bind the ValueMember       //property of the listbox       bind.Position\= view.Find(listBox1.SelectedValue); } //Handling a TreeView event private void treeView1\_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) {       //get the binding manager to set the position       BindingManagerBase bind = BindingContext\[m\_ds,"Stuff"\];       DataRow row = (DataRow)treeView1.SelectedItem.Tag;       int wantedID = int.Parse(row\["ID"\].ToString());       bind.Position\= view.Find(wantedID); } ## More in ADO.Net [All posts in ADO.Net](https://osherove.com/blog/category/ado-net) - Aug 21, 2006 ### [Free E-Book: Developing Time-Oriented Database Applications in SQL](https://osherove.com/blog/2006/8/21/free-e-book-developing-time-oriented-database-applications-i.html) - Jul 3, 2003 ### [A much needed SchemaHelper class](https://osherove.com/blog/2003/7/3/a-much-needed-schemahelper-class.html) --- title: "More Free Chapters" url: "https://osherove.com/blog/2003/6/21/more-free-chapters.md" canonical: "https://osherove.com/blog/2003/6/21/more-free-chapters.html" published: "2003-06-21T16:55:00" updated: "2003-06-21T16:55:00" tags: ["Free book chapters"] author: "Roy Osherove" description: "Silly me. I never noticed that CodeProject has a whole section devoted to free book chapters online . Cool! Update: Steven points to even more free chapters on ASPAlliance . yey! SBC points to free Regex chapters ..." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More Free Chapters By Roy Osherove June 21, 2003 In [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published June 21, 2003; technical details may be outdated. Silly me. I never noticed that [CodeProject](http://www.codeproject.com/) has a [whole section devoted to free book chapters online](http://www.codeproject.com/books/). Cool! Update: [Steven](http://weblogs.asp.net/ssmith/) points to [even more free chapters on ASPAlliance](http://aspalliance.com/chapters/). yey! [SBC](http://weblogs.asp.net/sbchatterjee/) points to [free Regex chapters](http://www.oreilly.com/catalog/regex2/chapter/index.html)... ## More in Free book chapters [All posts in Free book chapters](https://osherove.com/blog/category/free-book-chapters) - Aug 21, 2003 ### [Free WMI book chapter](https://osherove.com/blog/2003/8/21/free-wmi-book-chapter.html) - Jul 28, 2003 ### [Beta chapters of OReilly books](https://osherove.com/blog/2003/7/28/beta-chapters-of-oreilly-books.html) - Jun 18, 2003 ### [Free Full Tech Books](https://osherove.com/blog/2003/6/18/free-full-tech-books.html) - Jun 13, 2003 ### [Yet Another Book Chapter](https://osherove.com/blog/2003/6/13/yet-another-book-chapter.html) --- title: "Typed Dataset Q&A" url: "https://osherove.com/blog/2003/6/20/typed-dataset-qampa.md" canonical: "https://osherove.com/blog/2003/6/20/typed-dataset-qampa.html" published: "2003-06-20T12:53:00" updated: "2003-06-20T12:53:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Q: I need to get the best possible performance out of my middle-tier components, so I'm using untyped DataSet objects on the server. But strongly typed DataSet objects are so handy when I build the client portion of the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Typed Dataset Q&A By Roy Osherove June 20, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published June 20, 2003; technical details may be outdated. <table><tbody><tr><td><b><em>Q:</em></b></td><td><p><em>I need to get the best possible performance out of my middle-tier components, so I'm using untyped <span>DataSet </span>objects on the server. But strongly typed <span>DataSet </span>objects are so handy when I build the client portion of the application. Is there a way to get the best of both worlds?</em></p></td></tr><tr><td><b><em>A:</em></b></td><td><p><em>Yes. Have your middle tier return and accept untyped <span>DataSet </span>objects. Use instances of strongly typed <span>DataSet </span>objects in the client application, and use the <span>Merge </span>method to import the contents of the untyped <span>DataSet </span>objects returned by the middle tier.</em></p></td></tr><tr><td><b><em>Q:</em></b></td><td><p><em><span>DataSet </span>objects offer limited validation features. I can't set properties on either an untyped or a strongly typed <span>DataSet </span>to ensure that the value of a column falls between certain limits. Can I add my own code to the class file for added validation?</em></p></td></tr><tr><td><b><em>A:</em></b></td><td><p><em>Of course. You can add validation code to the desired properties of your strongly typed classes, but this was not an intended use of the strongly typed <span>DataSet</span>. Your validation code will not be stored in the .xsd file for the strongly typed <span>DataSet</span> class. If you modify the contents of the .xsd file, Visual Studio .NET will regenerate the class for the strongly typed <span>DataSet</span> and you'll lose the code that you've written.</em></p><p><em>You have another option: create a new class that inherits from the strongly typed <span>DataSet </span>class and add your validation code there.</em></p></td></tr></tbody></table> \[via [ADO.NET Core Reference](https://www.amazon.com/exec/obidos/ASIN/0735614237/qid=1056123818/sr=1-1/ref=sr_1_1/iserializable-20)\] This is easily one of the best tech books I've read, especially on this subject. Heartily recommended. They have this Q&A section on every big subject that is covered, and the questions are to the point. Way to go! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 28, 2003 ### [Nice page of ADO.NET notes & tips](https://osherove.com/blog/2003/6/28/nice-page-of-adonet-notes-amp-tips.html) - Jun 22, 2003 ### [More About Processes](https://osherove.com/blog/2003/6/22/more-about-processes.html) - Jun 18, 2003 ### [Very Good Winforms FAQ](https://osherove.com/blog/2003/6/18/very-good-winforms-faq.html) - Jun 17, 2003 ### [.Net Shortcuts + Automate GAC and COM operations using this Cool Add-in](https://osherove.com/blog/2003/6/17/net-shortcuts-automate-gac-and-com-operations-using-this-coo.html) --- title: "Book Gripes, Safari Bookshelf, And a .Net Desktops Prize" url: "https://osherove.com/blog/2003/6/19/book-gripes-safari-bookshelf-and-a-net-desktops-prize.md" canonical: "https://osherove.com/blog/2003/6/19/book-gripes-safari-bookshelf-and-a-net-desktops-prize.html" published: "2003-06-19T20:43:00" updated: "2003-06-19T20:43:00" tags: ["Off Topic"] author: "Roy Osherove" description: "One of the biggest(and most common) mistakes a tech book publisher can make is not knowing to quit while your ahead. Much like bad movie sequels, You'll often see a good book followed by a bunch of totally redundant…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Book Gripes, Safari Bookshelf, And a .Net Desktops Prize By Roy Osherove June 19, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 19, 2003; technical details may be outdated. - **One of the biggest(and most common) mistakes a tech book publisher can make** is not knowing to quit while your ahead. Much like bad movie sequels, You'll often see a good book followed by a bunch of totally redundant books that try to sqeeze a little more money out of the customer by luring them with a name that sounds a lot like the first one, but usually holds nothing more than a faded out copy of the messages from it... **Example**: A very good book called [Extreme Programming Explained](https://www.amazon.com/exec/obidos/ASIN/0201616416/qid=1056065321/sr=8-1/ref=sr_8_1/iserializable-20) was published in 1999. It was a pretty big succes, as the topic was pretty new and provocative(I bought it  and learned a lot).  So, in the years following that book, the following books came out as well: - Planning Extreme Programming - Extreme Programming Perspectives - Extreme Programming Installed - Questioning Extreme Programming - Extreme Programming for Web Projects - Testing Extreme Programming Insane. Totally insane. The first one was really great. All the rest are mostly a rehash of the first one, with a slightly different context. Cognitive dissonance for the impulse buyer, giving us peanuts on every book instead of stuffing it all into a nice good book without chewing 75% of the first book over and over. - **On a different note:** I registered for the [Safari Online Bookshelf](http://www.safaribooksonline.com/) 30 day trial through our company MSDN subscruption, and it seems really cool. Lots of cool books there, though I **really don't like** the fact that they pre-stuffed my bookshelf with **7(!)** books I didn't ask for and cannot get rid of until the trial period ends, leaving me room for only 13 books which I pick. Hey, If you're gonna give something away, just give it, no smarty-pants games please. - **Yet another note: .Net Desktops Prize** [Scoble](http://scoble.weblogs.com/) promised to try and find some cool prize for the .Net Desktops contest. Yey! Thanks scoble! **Now** it's gonna get interesting :) Have **you** [signed up](http://weblogs.asp.net/rosherove/story/8523.aspx) yet? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 24, 2003 ### [.Net Rocks Rocks, INETA, and Starting A User Group](https://osherove.com/blog/2003/6/24/net-rocks-rocks-ineta-and-starting-a-user-group.html) - Jun 23, 2003 ### [Stop The Silliness](https://osherove.com/blog/2003/6/23/stop-the-silliness.html) - Jun 18, 2003 ### [SQL Server is Missing NextVal Functionality](https://osherove.com/blog/2003/6/18/sql-server-is-missing-nextval-functionality.html) - Jun 18, 2003 ### [About Interfaces](https://osherove.com/blog/2003/6/18/about-interfaces.html) --- title: "Kudos to MSFT" url: "https://osherove.com/blog/2003/6/19/kudos-to-msft.md" canonical: "https://osherove.com/blog/2003/6/19/kudos-to-msft.html" published: "2003-06-19T12:50:00" updated: "2003-06-19T12:50:00" tags: [] author: "Roy Osherove" description: "This is the kind of stuff that makes me want to work at microsoft and is the main reason they keep \"winning\"." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Kudos to MSFT By Roy Osherove June 19, 2003 **Historical article** · Originally published June 19, 2003; technical details may be outdated. [This](http://blogs.gotdotnet.com/edkaim/PermaLink.aspx/483e29c5-9d2a-492d-89cc-84580cf72e12) is the kind of stuff that makes me want to work at microsoft and is the main reason they keep "winning". --- title: "How To Know When An External Application Exits" url: "https://osherove.com/blog/2003/6/19/how-to-know-when-an-external-application-exits.md" canonical: "https://osherove.com/blog/2003/6/19/how-to-know-when-an-external-application-exits.html" published: "2003-06-19T11:36:00" updated: "2003-06-19T11:36:00" tags: [".Net Original"] author: "Roy Osherove" description: "I was asked how one can launch an external application and know when it is finished. Her'es the code (Console Application): using System . Diagnostics ; static void Main ( string [] args ) { Process p = new Process ();…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How To Know When An External Application Exits By Roy Osherove June 19, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 19, 2003; technical details may be outdated. I was asked how one can launch an external application and know when it is finished. Her'es the code (Console Application): using System.Diagnostics; static void Main(string\[\] args) {       Process p  = new Process();       //Register for the event that notifies the process exit       p.Exited+=new EventHandler(OnExit);       p.StartInfo.FileName\= "Notepad.exe";       //you must enable this property or you won't get the event       p.EnableRaisingEvents\=true;       p.Start();       Console.WriteLine("Waiting...");       Console.ReadLine(); } private static void OnExit(object sender,EventArgs e) {       //here you get the event of a process close       Console.WriteLine("The process was finished!"); } You can also avoid using an event handler and simply make the code wait for the process(Synchronous invocation). Here are the two possibilities: p.Start(); //wait indefinitely for the process to finish p.WaitForExit(); //this line will be called only when the process finishes Console.WriteLine("Waiting..."); Or you could wait for a maximum number of milliseconds(a sort of timeout): p.Start(); //wait up to 5 seconds for the process to finish p.WaitForExit(5000); //this line will be called after 5 seconds //or when the process finishes Console.WriteLine("Waiting..."); ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 22, 2003 ### [A Little Macro To Automate Creating Connection Strings](https://osherove.com/blog/2003/6/22/a-little-macro-to-automate-creating-connection-strings.html) - Jun 21, 2003 ### [Winforms Data Binding Lessons Learned](https://osherove.com/blog/2003/6/21/winforms-data-binding-lessons-learned-1.html) - Jun 19, 2003 ### [Winforms DataBinding Bliss](https://osherove.com/blog/2003/6/19/winforms-databinding-bliss.html) - Jun 16, 2003 ### [Funny Behaviour](https://osherove.com/blog/2003/6/16/funny-behaviour.html) --- title: "Winforms DataBinding Bliss" url: "https://osherove.com/blog/2003/6/19/winforms-databinding-bliss.md" canonical: "https://osherove.com/blog/2003/6/19/winforms-databinding-bliss.html" published: "2003-06-19T11:16:00" updated: "2003-06-19T11:16:00" tags: [".Net Original"] author: "Roy Osherove" description: "Played around with the Winforms DataGrid some more yesterday. Boy, it's nice. real nice. DataBinding Rocks . In VB6 I almost never used DataBinding, since I was mainly into N-Tier development, thus DataBinding would…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Winforms DataBinding Bliss By Roy Osherove June 19, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 19, 2003; technical details may be outdated. - Played around with the Winforms DataGrid some more yesterday. Boy, it's nice. **real** nice. DataBinding Rocks. - In VB6 I almost never used DataBinding, since I was mainly into N-Tier development, thus DataBinding would break my "_don't be a data layer_" rule for GUI. - But now, wow. I like it :) - I am [Funky](http://www.thereisnocat.com/funkidator/?uri=http%3A%2F%2Fweblogs.asp.net%2Frosherove%2FRss.aspx&mode=funkidate&funkidate=Funkidate+Me%21) like that... ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 21, 2003 ### [Winforms Data Binding Lessons Learned](https://osherove.com/blog/2003/6/21/winforms-data-binding-lessons-learned-1.html) - Jun 19, 2003 ### [How To Know When An External Application Exits](https://osherove.com/blog/2003/6/19/how-to-know-when-an-external-application-exits.html) - Jun 16, 2003 ### [Funny Behaviour](https://osherove.com/blog/2003/6/16/funny-behaviour.html) - Jun 15, 2003 ### [Data Binding Woes - A Simple Solution](https://osherove.com/blog/2003/6/15/data-binding-woes-a-simple-solution.html) --- title: "Very Good Winforms FAQ" url: "https://osherove.com/blog/2003/6/18/very-good-winforms-faq.md" canonical: "https://osherove.com/blog/2003/6/18/very-good-winforms-faq.html" published: "2003-06-18T18:10:00" updated: "2003-06-18T18:10:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "You probably know this one, but here goes anyway... I've been playing a lot with the winforms DataGrid and binding stuff. One of the best FAQ's i've found on the subject was George Shepherd's Windows Forms FAQ . Apart…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Very Good Winforms FAQ By Roy Osherove June 18, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published June 18, 2003; technical details may be outdated. You probably know this one, but here goes anyway... I've been playing a lot with the winforms DataGrid and binding stuff. One of the best FAQ's i've found on the subject was [George Shepherd's Windows Forms FAQ](http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp). Apart from having one of the most elaborate FAQ's on the DataGrid, it has plenty of other FAQ's as well - just look at [the main page](http://www.syncfusion.com/FAQ/Winforms/). Coolness. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 22, 2003 ### [More About Processes](https://osherove.com/blog/2003/6/22/more-about-processes.html) - Jun 20, 2003 ### [Typed Dataset Q&A](https://osherove.com/blog/2003/6/20/typed-dataset-qampa.html) - Jun 17, 2003 ### [.Net Shortcuts + Automate GAC and COM operations using this Cool Add-in](https://osherove.com/blog/2003/6/17/net-shortcuts-automate-gac-and-com-operations-using-this-coo.html) - Jun 13, 2003 ### [Yet Another Book Chapter](https://osherove.com/blog/2003/6/13/yet-another-book-chapter.html) --- title: "SQL Server is Missing NextVal Functionality" url: "https://osherove.com/blog/2003/6/18/sql-server-is-missing-nextval-functionality.md" canonical: "https://osherove.com/blog/2003/6/18/sql-server-is-missing-nextval-functionality.html" published: "2003-06-18T10:31:00" updated: "2003-06-18T10:31:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I really like working with SQL server, but there is one feature that's missing that I can;t understand why: Sequences. In ORACLE, I could do a \"Table.NextVal\" to get the value of the next insert unique ID. In SQL Server…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SQL Server is Missing NextVal Functionality By Roy Osherove June 18, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 18, 2003; technical details may be outdated. I really like working with SQL server, but there is one feature that's missing that I can;t understand why: Sequences. -  In ORACLE, I could do a "Table.NextVal" to get the value of the next insert unique ID. - In SQL Server - I have nothing but @@IDENTITY to go with, but I can only get the Current IDENTITY. This is causing some of our stuff some real trouble. Anyone know if there's a way to implement **NextVal** functionality in SQL server? we've been fighting with this all day.... :( Is there something we're missing here? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 23, 2003 ### [Stop The Silliness](https://osherove.com/blog/2003/6/23/stop-the-silliness.html) - Jun 19, 2003 ### [Book Gripes, Safari Bookshelf, And a .Net Desktops Prize](https://osherove.com/blog/2003/6/19/book-gripes-safari-bookshelf-and-a-net-desktops-prize.html) - Jun 18, 2003 ### [About Interfaces](https://osherove.com/blog/2003/6/18/about-interfaces.html) - Jun 17, 2003 ### [ABEK](https://osherove.com/blog/2003/6/17/abek.html) --- title: "Free Full Tech Books" url: "https://osherove.com/blog/2003/6/18/free-full-tech-books.md" canonical: "https://osherove.com/blog/2003/6/18/free-full-tech-books.html" published: "2003-06-18T10:26:00" updated: "2003-06-18T10:26:00" tags: ["Free book chapters"] author: "Roy Osherove" description: "A friend just let me know about this very cool site: [Content removed] Sorry guys, but until I'm sure this site holds legal content, I won't publish it. A big \"Sorry \" goes out to all the authors who are losing their…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free Full Tech Books By Roy Osherove June 18, 2003 In [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published June 18, 2003; technical details may be outdated. A friend just let me know about this very cool site: \[Content removed\] Sorry guys, but until I'm sure this site holds legal content, I won't publish it. A big "Sorry " goes out to all the authors who are losing their livelihood over this kind of book stealing. p.s - If you think I'm wrong and know that the site was legal - tell me. I'll repost. ## More in Free book chapters [All posts in Free book chapters](https://osherove.com/blog/category/free-book-chapters) - Jul 28, 2003 ### [Beta chapters of OReilly books](https://osherove.com/blog/2003/7/28/beta-chapters-of-oreilly-books.html) - Jun 21, 2003 ### [More Free Chapters](https://osherove.com/blog/2003/6/21/more-free-chapters.html) - Jun 13, 2003 ### [Yet Another Book Chapter](https://osherove.com/blog/2003/6/13/yet-another-book-chapter.html) - Jun 12, 2003 ### [Free ADO.NET book chapter](https://osherove.com/blog/2003/6/12/free-adonet-book-chapter.html) --- title: "About Interfaces" url: "https://osherove.com/blog/2003/6/18/about-interfaces.md" canonical: "https://osherove.com/blog/2003/6/18/about-interfaces.html" published: "2003-06-18T04:48:00" updated: "2003-06-18T04:48:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Duncan writes about punitive UI, and I totally agree. I've always been a big fan of Design and interaction. Tha's why some things just toally annoy me that other people don't even notice: Why should I have to press a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About Interfaces By Roy Osherove June 18, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 18, 2003; technical details may be outdated. Duncan [writes](http://weblogs.asp.net/duncanma/posts/8866.aspx) about punitive UI, and I totally agree. I've always been a big fan of Design and interaction. Tha's why some things just toally annoy me that other people don't even notice: -  Why should I have to press a key on my cellphone for 3 seconds for the phone to lock itself? And why should I press that same hey for 3 seconds **again** to unlock? Nokia did it right by making you press 2 buttons in sequence, thus avoiding both "accidents" and giving you instant gratification by unlocking the moment you press those keys. When I had my nokia I pressed them pretty quick, but in my samsung this totally annoys me.... - Sometimes on dialog boxes(especially in MSFT's office) you have to answer "yes" or "no". Funny thing is that sometimes, in order to move between those yes/no buttons you have to press the left arrow key and sometimes the right. It **changes**. Users need a consistent interface behavior! - Some blog headlines, when clicked, take you to the actual post(most do), but some take you to a totally different site. This may do wonders for the shortness of the post, but for most users this is confusing. Consistency please! That's why (I think) post .NetWebloggers choose to ignore the fact that they can make their post title link to another place. - Some tabbed browsers , when you press "CTRL+TAB" jump to the next tab(like opera) but some(like netCaptor) jump to the **previous** one. ugh. consistency... - When Installing Visual studio 6, you get a msgbox at the end asking "would you like to restart your computer?" which proceeds to totally ignore your answer and restart your computer anyway... - Copying a Cell or a cell group in Excel only works One time! Once you paste it, you've lost it forever. I'm sure there's a good reason, but it totally sucks. Consistency between your own office application is a must! - Some doors have "pull" designed handles on the outside, even though you have to push or slide them sideways to get through. How screwed up is that? - My Car alarm does not make any beeping sounds when I turn it on. I keep forgetting whether I even turned it on when I got out. _Sounds_ are an interface as well. Just think of your phone line as a kind of audio interface made of beeps. What do all these things have in common? User interface is not just a software related concept. It's a human concept. It just _applies_ to software as well.. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 19, 2003 ### [Book Gripes, Safari Bookshelf, And a .Net Desktops Prize](https://osherove.com/blog/2003/6/19/book-gripes-safari-bookshelf-and-a-net-desktops-prize.html) - Jun 18, 2003 ### [SQL Server is Missing NextVal Functionality](https://osherove.com/blog/2003/6/18/sql-server-is-missing-nextval-functionality.html) - Jun 17, 2003 ### [ABEK](https://osherove.com/blog/2003/6/17/abek.html) - Jun 17, 2003 ### [More About Desktops](https://osherove.com/blog/2003/6/17/more-about-desktops.html) --- title: "Scoble, Come Back!" url: "https://osherove.com/blog/2003/6/17/scoble-come-back.md" canonical: "https://osherove.com/blog/2003/6/17/scoble-come-back.html" published: "2003-06-17T17:19:00" updated: "2003-06-17T17:19:00" tags: ["Blogging"] author: "Roy Osherove" description: "Heh. Now that scoble is spending some more time away from his blog, I almost *miss* him, in a weird, egotistical sort of way... Hey scoble ! Leave all that \"family\" stuff behind and write something :) Boy, I'm a rebel." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scoble, Come Back! By Roy Osherove June 17, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 17, 2003; technical details may be outdated. Heh. Now that [scoble](http://radio.weblogs.com/0001011/) is spending some more time away from his blog, I almost \*miss\* him, in a weird, egotistical sort of way... Hey [scoble](http://radio.weblogs.com/0001011/)! Leave all that "family" stuff behind and write something :) Boy, I'm a rebel. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 29, 2003 ### [Me Too!](https://osherove.com/blog/2003/6/29/me-too.html) - Jun 29, 2003 ### [FeedDemon Likes And Dislikes](https://osherove.com/blog/2003/6/29/feeddemon-likes-and-dislikes.html) - Jun 17, 2003 ### [Oy Vey](https://osherove.com/blog/2003/6/17/oy-vey.html) - Jun 12, 2003 ### [Google Is Blog-Crazed](https://osherove.com/blog/2003/6/12/google-is-blog-crazed.html) --- title: "ABEK" url: "https://osherove.com/blog/2003/6/17/abek.md" canonical: "https://osherove.com/blog/2003/6/17/abek.html" published: "2003-06-17T16:01:00" updated: "2003-06-17T16:01:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Hehe. I've got to get me that ABEK certification." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ABEK By Roy Osherove June 17, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 17, 2003; technical details may be outdated. Hehe. I've **got** to get me that [ABEK](http://blogs.gotdotnet.com/edkaim/PermaLink.aspx/558734b1-36bf-4337-90a2-8a749eb2a975) certification. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 18, 2003 ### [SQL Server is Missing NextVal Functionality](https://osherove.com/blog/2003/6/18/sql-server-is-missing-nextval-functionality.html) - Jun 18, 2003 ### [About Interfaces](https://osherove.com/blog/2003/6/18/about-interfaces.html) - Jun 17, 2003 ### [More About Desktops](https://osherove.com/blog/2003/6/17/more-about-desktops.html) - Jun 17, 2003 ### ["How Do I Get There From Here?"](https://osherove.com/blog/2003/6/17/quothow-do-i-get-there-from-herequot.html) --- title: ".Net Shortcuts + Automate GAC and COM operations using this Cool Add-in" url: "https://osherove.com/blog/2003/6/17/net-shortcuts-automate-gac-and-com-operations-using-this-coo.md" canonical: "https://osherove.com/blog/2003/6/17/net-shortcuts-automate-gac-and-com-operations-using-this-coo.html" published: "2003-06-17T11:50:00" updated: "2003-06-17T11:50:00" tags: [".Net Quotations", "Cool Tools", "Tips & Tricks"] author: "Roy Osherove" description: "Date: 6/2/2003 Author: Enrico Sabbadin Versions: VS.NET Level: Advanced File Size: 315K download Summary: This add-in for VS.NET 2003 automatically: 1) Registers the assembly in the GAC right after it has been built. 2)…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Shortcuts + Automate GAC and COM operations using this Cool Add-in By Roy Osherove June 17, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published June 17, 2003; technical details may be outdated. **Date:** 6/2/2003 **Author:** Enrico Sabbadin **Versions:** VS.NET **Level:** Advanced **File Size:** 315K [download](http://www.vb2themax.com/Downloads/Files/VSNETActions.zip) **Summary:** This add-in for VS.NET 2003 automatically:   1) Registers the assembly in the GAC right after it has been built.   2) Exports types to COM: produces the type library (and registers it if specified) .. as tlbexp.exe does.   3) Registers classes in the registry ..as regasm.exe does.   4) Avoids the bulding of an Assembly if its read-only attribute is set.   5) If a build fails, it stops the build process for the remaining assembly in the solution. You configure the Add-in behaviour for your VS.NET project by placing appropriate entries in the section of the project app.config file. **Note:** if you use VS.NET 2003, read [this tip](http://www.vb2themax.com/Item.asp?PageID=TipBank&ID=629) to see how you can configure simple pre and post-build actions without the help external add-ins. \---------------------------------------------------- **Date:** 5/26/2003 **Author:** Enrico Sabbadin **Versions:** .NET **Level:** Advanced **File Size:** 4K [download](http://www.vb2themax.com/Downloads/Files/dotNetRegEntries.zip) **Summary:** This registry file adds the following entries to the Windows Explorer's context menus, that will help you speed your development and test cycle: 1) .idl files : Build : run midl.exe against the idl file top produce a type library from it. 2) .dll files: register/unregister COM dll using regsvr32, register .NET assembly in the GAC, register .NET assembly for COM Interop (regasm.exe), register .NET assembly for COM Interop using the codebase switch (regasm.exe /codebase), register/unregister COM EXE. 3) .tlb files : use regtlib to register a type library. 4) Any directory: Open a DOS console and sets required PATH and INCLUDE environment variables (runs vsvar32.bat). \[via [VB2TheMax](http://www.vb2themax.com/)\] Cool! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 20, 2003 ### [Typed Dataset Q&A](https://osherove.com/blog/2003/6/20/typed-dataset-qampa.html) - Jun 18, 2003 ### [Very Good Winforms FAQ](https://osherove.com/blog/2003/6/18/very-good-winforms-faq.html) - Jun 13, 2003 ### [Yet Another Book Chapter](https://osherove.com/blog/2003/6/13/yet-another-book-chapter.html) - Jun 12, 2003 ### [Some Good Book Recommendations From the Experts](https://osherove.com/blog/2003/6/12/some-good-book-recommendations-from-the-experts.html) --- title: "More About Desktops" url: "https://osherove.com/blog/2003/6/17/more-about-desktops.md" canonical: "https://osherove.com/blog/2003/6/17/more-about-desktops.html" published: "2003-06-17T08:08:00" updated: "2003-06-17T08:08:00" tags: ["Off Topic"] author: "Roy Osherove" description: "We're starting to get some real content into the desktops gallery . If you'd like to add your own desktop, see the guide . I really like how it's turning out. Looking at all these really gives you a feel for the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More About Desktops By Roy Osherove June 17, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 17, 2003; technical details may be outdated. We're starting to get some real content into the [desktops gallery](http://pnavy.com/royo/desktops). If you'd like to add your own desktop, see the [guide](http://weblogs.asp.net/rosherove/story/8523.aspx). I really like how it's turning out. Looking at all these really gives you a feel for the different types of people (or, not so different..?) that hang out here. Meanwhile, the coolest desktop IMHO is [Rob's](http://pnavy.com/royo/desktops/RobCartier). What I think is needed, though, is some kind of small prize for the "coolest" winner which will be decided by the end of the month(provided we have a prize by then).  Since I can't really afford anything, maybe some of our [pals](http://radio.weblogs.com/0001011/2003/06/16.html#a3389) at MSFT would like to donate a poster,T-Shirt or anything else that would fit the occasion?  I'm open to suggestions. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 18, 2003 ### [About Interfaces](https://osherove.com/blog/2003/6/18/about-interfaces.html) - Jun 17, 2003 ### [ABEK](https://osherove.com/blog/2003/6/17/abek.html) - Jun 17, 2003 ### ["How Do I Get There From Here?"](https://osherove.com/blog/2003/6/17/quothow-do-i-get-there-from-herequot.html) - Jun 16, 2003 ### [My Baby Hits The Road Tomorrow](https://osherove.com/blog/2003/6/16/my-baby-hits-the-road-tomorrow.html) --- title: "\"How Do I Get There From Here?\"" url: "https://osherove.com/blog/2003/6/17/quothow-do-i-get-there-from-herequot.md" canonical: "https://osherove.com/blog/2003/6/17/quothow-do-i-get-there-from-herequot.html" published: "2003-06-17T06:30:00" updated: "2003-06-17T06:30:00" tags: ["Off Topic"] author: "Roy Osherove" description: "In a comment to one of my posts I got this: \" I'm a poor college student living in the middle of nowhere... I know a bit of Java, a lot of HTML, and I've got the gist of XML... I was wondering, what should I focus on if…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # "How Do I Get There From Here?" By Roy Osherove June 17, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 17, 2003; technical details may be outdated. In a comment to one of my posts I got this: "I'm a poor college student living in the middle of nowhere... I know a bit of Java, a lot of HTML, and I've got the gist of XML... I was wondering, what should I focus on if I wanted to get a real job in the tech industry? (Not something that any fool with an A+ can do, something where I don't have to wear shoes to work, where the caffine's free, and a life is optional) My problem is that my local college doesn't teach anything, programming-wise. And quite simply, I don't know where to start. No car, no job, and not knowing anyone in the business is kinda putting me in a corner." That's a tough situation. In today's market, it's pretty hard for veteran programmers to get a decent job, let alone people who have little to no real world experience as software developers. Also, your "requirements" from the job are pretty unrealistic, to say the least. After the bubble burst, employers have much more choice from many experienced developers who mainly need to put some food on the table, with almost no requirements other than to let them to their job. You can't be choosy these days. If you're looking for a job where shoes are optional, I suggest you start your own company and make your own shoe policy. You are more than likely to never come across that kind of work in any other situation. What I can almost guarantee you is that the "life is optional" part will be true. Employers will expect you to put in more hours and more effort in order to keep your job in today's "hellish" market. You just can’t afford to be one step behind. I'm not talking about MSFT , which is my dream job at the moment. I'm talking about the "rest" of the companies out there, who usually treat their employees as disposable material. Simply put, what you're looking for probably does not exist today. If I were in that position, knowing what I know today here's my To-do list: ·         **Get a more real-world priority list of what you want from your job. These could be** o        I want a big/small/startup company o        I want to become a manager/technical guru o        I want to experience working with \[specific field of expertise such as hardware, software,real-time,embedded,web…\] ·         **Now that you've finished learning in college, make sure you understand :** o        You have much more to learn o        Your college experience will **not** help you  for anything but job interviews and puzzels o        You might have to look for a job for a looong time ,several months or more ·         **What you need to do:** o        Go learn the area that you find interesting(For me it was VB and then .Net) o        Learn it and get a certification(for MSFT certs – MCSD is preferable) ·         **What jobs you can look for:** o        I'd look for places that let you start at the bottom – as a QA or tester o        Learn while you work there(maybe you'll have to get certified first to get that job ,though) o        Microsoft has a [career site](http://www.microsoft.com/careers) and is always looking for people. Yeah, even you. o        Create a resume listing all your merits and what you've done in college involving technology o        Become an intern somewhere. It's hard for an employer to turn down a free employee… ·         **Start Networking** o        Making a blog is one of the best ways to get noticed. o        Start a blog about what your going through(if you'll learn .Net – start a blog here!) o        Create a personal web site with your resume (If you have a home computer you can make into a server, this would be a great ASP.NET learning experience) o        Make a demonstration project to show to potential employers. It always makes a great impression if you can whip out a diskette and say "I have some code here, would you like to check it out?" o        Join mailing lists, forums and news groups involving what you are learning. There are also forums and lists explicitly for the purpose of distributing your CV, and lots of sites out there for this purpose, all for free. ·         **Once you learn how to program, get real world experience on your own** o        Get friends and colleagues or your parent's friends to agree for you to do some software related project for them. Something you can brag about o        Make up open source projects and share your code. Make them cool, so people will notice you and what you do o        Learn design patterns and practices, and get some good books about project management. o        Add all this to your resume Yeah. It's tough out there. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 17, 2003 ### [ABEK](https://osherove.com/blog/2003/6/17/abek.html) - Jun 17, 2003 ### [More About Desktops](https://osherove.com/blog/2003/6/17/more-about-desktops.html) - Jun 16, 2003 ### [My Baby Hits The Road Tomorrow](https://osherove.com/blog/2003/6/16/my-baby-hits-the-road-tomorrow.html) - Jun 15, 2003 ### [Late In The Evening](https://osherove.com/blog/2003/6/15/late-in-the-evening.html) --- title: "Oy Vey" url: "https://osherove.com/blog/2003/6/17/oy-vey.md" canonical: "https://osherove.com/blog/2003/6/17/oy-vey.html" published: "2003-06-17T04:41:00" updated: "2003-06-17T04:41:00" tags: ["Blogging"] author: "Roy Osherove" description: "\" Tomorrow really is just a few webloggers and a lawyer talking about life on the Internet \" [ Scoble ] That's one scary sentence! It's like in those gangster movies: the mafia guys just want to take you to the corner…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Oy Vey By Roy Osherove June 17, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 17, 2003; technical details may be outdated. "_Tomorrow really is just a few webloggers and a lawyer talking about life on the Internet_" \[[Scoble](http://radio.weblogs.com/0001011/2003/06/16.html#a3371)\] That's one scary sentence! It's like in those gangster movies: the mafia guys just want to take you to the corner to "talk" :) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 29, 2003 ### [FeedDemon Likes And Dislikes](https://osherove.com/blog/2003/6/29/feeddemon-likes-and-dislikes.html) - Jun 17, 2003 ### [Scoble, Come Back!](https://osherove.com/blog/2003/6/17/scoble-come-back.html) - Jun 12, 2003 ### [Google Is Blog-Crazed](https://osherove.com/blog/2003/6/12/google-is-blog-crazed.html) - Jun 11, 2003 ### [Living in a Bubble](https://osherove.com/blog/2003/6/11/living-in-a-bubble.html) --- title: "My Baby Hits The Road Tomorrow" url: "https://osherove.com/blog/2003/6/16/my-baby-hits-the-road-tomorrow.md" canonical: "https://osherove.com/blog/2003/6/16/my-baby-hits-the-road-tomorrow.html" published: "2003-06-16T14:58:00" updated: "2003-06-16T14:58:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Just wanted to brag a little - Tommorow I'm releasing an alpha version of our companie's latest tracing software.I built this thing entrely myself. It's mostly built using VB6, with the the remoting extentions built…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My Baby Hits The Road Tomorrow By Roy Osherove June 16, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 16, 2003; technical details may be outdated. Just wanted to brag a little - Tommorow I'm releasing an alpha version of our companie's latest tracing software.I built this thing entrely myself. It's mostly built using VB6, with the the remoting extentions built using C# and interop. Right now the execs won't commit to a full .Net implementation of it. It's just too costly. Since it started out as a VB6 project, it will also finish this way. Among its features: - Tracing plugins for VB,C++ and .Net - Full docking,floating and auto-hide windows - Views of the trace data, each view uses a custom filter of what to show. - Views are grouped by Layouts which can be saved and restored - Layouts can be categorized and sorted(also saved) - customizable colors (and icons in later versions) - Remoting extentions to allow recieving traces from remote machines(via HTTP/TCP) Next versions will have - Custom actions on specific filter hits (example: If you encounter error level 3 - play \*this\* wav file) - Pluggable views to allow custom handling of recived traces - Reusable filters and views, shared between multiple layouts <table width="1%"><tbody><tr><td><p><a href="http://pnavy.com/royo/Work/trace"><img alt="" decoding="async" height="105" loading="lazy" src="https://osherove.com/img/wb/3752b2f3_pnavy.com_royo_albums_Work_trace.thumb.jpg" width="150"></a></p></td><td width="1"></td></tr><tr><td colspan="3" height="1"></td></tr></tbody></table> I'll be releasing it for small amounts of production use tommorow. Hopefully, everything will go well... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 17, 2003 ### [More About Desktops](https://osherove.com/blog/2003/6/17/more-about-desktops.html) - Jun 17, 2003 ### ["How Do I Get There From Here?"](https://osherove.com/blog/2003/6/17/quothow-do-i-get-there-from-herequot.html) - Jun 15, 2003 ### [Late In The Evening](https://osherove.com/blog/2003/6/15/late-in-the-evening.html) - Jun 14, 2003 ### [Family Vs. Technology](https://osherove.com/blog/2003/6/14/family-vs-technology.html) --- title: "Funny Behaviour" url: "https://osherove.com/blog/2003/6/16/funny-behaviour.md" canonical: "https://osherove.com/blog/2003/6/16/funny-behaviour.html" published: "2003-06-16T11:17:00" updated: "2003-06-16T11:17:00" tags: [".Net Original"] author: "Roy Osherove" description: "Tamar, a friend of mine, alerted me to this funny behaviour. can anyone tell me why the following code: static void Main(string[] args) { Console.WriteLine(21 - 5.45); Console.WriteLine(21 - 20.45); Console.Read(); }…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Funny Behaviour By Roy Osherove June 16, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 16, 2003; technical details may be outdated. Tamar, a friend of mine, alerted me to this funny behaviour. can anyone tell me why the following code: static void Main(string\[\] args) { Console.WriteLine(21 - 5.45); Console.WriteLine(21 - 20.45); Console.Read(); } produces this: 15.55 0.550000000000001 This happens in C#,VB.NET and VB6.  What's going on here? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 19, 2003 ### [How To Know When An External Application Exits](https://osherove.com/blog/2003/6/19/how-to-know-when-an-external-application-exits.html) - Jun 19, 2003 ### [Winforms DataBinding Bliss](https://osherove.com/blog/2003/6/19/winforms-databinding-bliss.html) - Jun 15, 2003 ### [Data Binding Woes - A Simple Solution](https://osherove.com/blog/2003/6/15/data-binding-woes-a-simple-solution.html) - Jun 14, 2003 ### [Winforms Data Binding Woes](https://osherove.com/blog/2003/6/14/winforms-data-binding-woes.html) --- title: "Data Binding Woes - A Simple Solution" url: "https://osherove.com/blog/2003/6/15/data-binding-woes-a-simple-solution.md" canonical: "https://osherove.com/blog/2003/6/15/data-binding-woes-a-simple-solution.html" published: "2003-06-15T18:59:00" updated: "2003-06-15T18:59:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "Wooho! Found the solution to the Data Binding problem I was having . I got it from this free book chapter: How to use Data Views from this book . I'll explain the problem and then the solution. Problem : How do you get…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Data Binding Woes - A Simple Solution By Roy Osherove June 15, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published June 15, 2003; technical details may be outdated. Wooho! Found the solution to the [Data Binding problem I was having](http://weblogs.asp.net/rosherove/posts/8699.aspx). I got it from this free book chapter: [How to use Data Views](http://www.ftponline.com/books/chapters/1890774197.pdf)  from [this book](https://www.amazon.com/exec/obidos/ASIN/1890774197/qid=1055453215/sr=8-1/ref=sr_8_1/iserializable-20). I'll explain the problem and then the solution. **Problem**: How do you get the desired position in a BindingContext, when all you have to go on is a DataRow object? This problem would occur whenever you wanted a control other that a DataGrid to serve as a 'master' in a master-details data bound form. Imagine that the control that you have is a treeview. You filled up the treeNodes and set the node.Tag property with a DataRow object . You want the user to be able to click on a tree node and let a DataGrid on the form show the child rows of the selected DataRow. Now, If we have a ListBox or ComboBox control, this could be easy. You just set the BindingManager's Position property to the current index of the control. But what about a treeview? Where is the $#%! index there? **The solution** is pretty darn simple: using a _DataView_ object! A DataView object has the ability to find a row based on a key and a value, meaning that if the DataRow is sorted according to the primary key of the table, you can use it too look up a row based on a given primary key. It contains a **Find** method which, how comfortable, return the index to the row that was found. so, all you have to do is create a new DataView object, make it sort on your PK, and use it to find and index. Then you set the Binding manager's postion according to the returned index. Yu will need to bind your controls to that particular DataView, so you'll get the correct position(no biggie). One word of caution - a DataTable object has by default a DefaultDataView property which you can use. It is recommended to use a new DataView object, which gives you more flexibilty, and hey, you can create 2 or even 10 different view of your data. You can sort them, you can filter them, hell, you can just show the rows that were last changed,added,deleted - you name it. It's all there using the DataView. I just "got" it, and I like it! Here's the code to handle the user selecting a tree node: --- //Create a custom view of the data private DataView view = new DataView(m\_ds.Tables\["Stuff"\]); //make it sort based on the PK view.Sort\="ID"; //Handling a listbox event private void listBox1\_SelectedIndexChanged(object sender, System.EventArgs e) {       //get the binding manager to set the position       BindingManagerBase bind = BindingContext\[m\_ds,"Stuff"\];       //Using the 'Find' of the DataView       //returns the needed row index!       //Just make sure you bind the ValueMember       //property of the listbox       bind.Position\= view.Find(listBox1.SelectedValue); } //Handling a TreeView event private void treeView1\_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) {       //get the binding manager to set the position       BindingManagerBase bind = BindingContext\[m\_ds,"Stuff"\];       DataRow row = (DataRow)treeView1.SelectedItem.Tag;       int wantedID = int.Parse(row\["ID"\].ToString());       bind.Position\= view.Find(wantedID); } ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 19, 2003 ### [Winforms DataBinding Bliss](https://osherove.com/blog/2003/6/19/winforms-databinding-bliss.html) - Jun 16, 2003 ### [Funny Behaviour](https://osherove.com/blog/2003/6/16/funny-behaviour.html) - Jun 14, 2003 ### [Winforms Data Binding Woes](https://osherove.com/blog/2003/6/14/winforms-data-binding-woes.html) - Jun 13, 2003 ### [About Reflector, Encoding, And an Article Error](https://osherove.com/blog/2003/6/13/about-reflector-encoding-and-an-article-error.html) --- title: "Late In The Evening" url: "https://osherove.com/blog/2003/6/15/late-in-the-evening.md" canonical: "https://osherove.com/blog/2003/6/15/late-in-the-evening.html" published: "2003-06-15T14:37:00" updated: "2003-06-15T14:37:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It's all quiet now. Everyone has left work and went home. When all the busy sounds of the day disappear, this is when I feel most comfortable. I find I get the most work done after 5PM. We're at the 11 th floor,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Late In The Evening By Roy Osherove June 15, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 15, 2003; technical details may be outdated. It's all quiet now. Everyone has left work and went home. When all the busy sounds of the day disappear, this is when I feel most comfortable. I find I get the most work done after 5PM. We're at the 11th floor, towering (well, not really "towering", but a "bit higher than" would do) over Tel Aviv's center. During the day this place is one big pile of cars, honks and smog. But now it's late evening hours. If I go up to the window and put half my body out, almost falling, and tilt my head to the left, I can see the sea. The window is not in my room, it far away in the conference room. There's a nice cool breeze in the air when I open that window. It reminds me how much I'm missing being closed up between these walls from morning to night. I can still see plenty of cars zooming by on the road below, but everything seems much more peaceful. Everyone at the bus stations looks tired and weary from the long day. I've been hacking away some code for the last several hours with almost no break, hypnotized by the sounds of my keystrokes, generating invisible logical connections between logical things that did not exist just moments ago. This is the time when imagination turns into reality. When I "_flow_" I feel nothing short of a wizard, waving his shiny keyboard around, making cool stuff happen. When I wake up from these "_flows_" I find that several hours passed by. This is when I open the window and let the cool evening wind caress my face. \- "_You've done well, wizard, but work is abound and we must continue_"  I can almost hear it whisper to me. Well, back to the hot seat. Just me, my keyboard, a 17" screen and the humming of the air conditioning behind me. Soon the AC will stop cooling and will only push semi-cold air onto my back. The building management "saves money" this way. When I turn around I can see a picture of me and my wife hanging on the wall behind me. It's enclosed in a light brown frame.  We took that picture on her birthday, I think it was two years ago. I can look at that picture and get more strength. "_Keep Coding_". I do. Punching away on the keyboard, I sometimes do it like a robot. It took some time for me to start typing fast. Some looong time. Now I can almost type blindly, but not really. I tried learning touch-typing, but couldn’t rid the old typing habits. Sometimes you'll get to some word combinations that you type so often that you can actually type as fast as you think. Things like "if", "then", "Dim I as integer"   zoom by. People at work tell me I hit my keyboard so hard it's going to break someday. It will.  When I hit "Enter" its like a small victory every time. Sometimes' though, I'll get those cryptic error messages and crashes that only a VB6 developer can understand. On those message boxes I'll hit "Enter" almost like I'm trying to hit that message box. I find it almost rewarding. Besides, keyboards are cheap J "_Go home_". Just a little while longer. Just trying to make this one.last.bit.work.and.than.I'm.off.  **F5**. "Error". **Fix**. **F5**. "Error". **Fix** more. "_ugh_". **F5**. It runs. I'm off. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 17, 2003 ### ["How Do I Get There From Here?"](https://osherove.com/blog/2003/6/17/quothow-do-i-get-there-from-herequot.html) - Jun 16, 2003 ### [My Baby Hits The Road Tomorrow](https://osherove.com/blog/2003/6/16/my-baby-hits-the-road-tomorrow.html) - Jun 14, 2003 ### [Family Vs. Technology](https://osherove.com/blog/2003/6/14/family-vs-technology.html) - Jun 13, 2003 ### [Ouch!](https://osherove.com/blog/2003/6/13/ouch.html) --- title: "Family Vs. Technology" url: "https://osherove.com/blog/2003/6/14/family-vs-technology.md" canonical: "https://osherove.com/blog/2003/6/14/family-vs-technology.html" published: "2003-06-14T18:03:00" updated: "2003-06-14T18:03:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Scoble writes about the daily struggle between family and technology. I totally understand and share a lot of what he's going through. Sometimes we all need to face the mirror and say to ourselves \" OK. Just turn off…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Family Vs. Technology By Roy Osherove June 14, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 14, 2003; technical details may be outdated. [Scoble writes](http://radio.weblogs.com/0001011/2003/06/13.html#a3323) about the daily struggle between family and technology. I totally understand and share a lot of what he's going through. Sometimes we all need to face the mirror and say to ourselves "_OK. Just turn **off** the damn computer_". I know that whenever I do, I always wonder aftwerwards why it seemed so hard to detach from my computer. If anything, I come back to the computer revived and filled with life and love. Hopfully, Scoble "got" it and is now out there on a quiet computerless weekend, not reading all those great comments people left him on that post, spending some quality time with the family. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 16, 2003 ### [My Baby Hits The Road Tomorrow](https://osherove.com/blog/2003/6/16/my-baby-hits-the-road-tomorrow.html) - Jun 15, 2003 ### [Late In The Evening](https://osherove.com/blog/2003/6/15/late-in-the-evening.html) - Jun 13, 2003 ### [Ouch!](https://osherove.com/blog/2003/6/13/ouch.html) - Jun 12, 2003 ### [Coolest Birthday Ever](https://osherove.com/blog/2003/6/12/coolest-birthday-ever.html) --- title: "Winforms Data Binding Woes" url: "https://osherove.com/blog/2003/6/14/winforms-data-binding-woes.md" canonical: "https://osherove.com/blog/2003/6/14/winforms-data-binding-woes.html" published: "2003-06-14T16:08:00" updated: "2003-06-14T16:08:00" tags: [".Net Original"] author: "Roy Osherove" description: "I recently needed to get into Data Binding in win forms. I’ve read several articles( 1 , 2 , 3 ) and came up with several conclusions/questions: 1. Win forms Data Binding is very cool and powerful Using The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Winforms Data Binding Woes By Roy Osherove June 14, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 14, 2003; technical details may be outdated. I recently needed to get into  Data Binding in win forms. I’ve read several articles([1](http://msdn.microsoft.com/msdnmag/issues/02/02/cutting/default.aspx),[2](http://www.dnzone.com/ShowDetail.asp?NewsId=155),[3](http://www.akadia.com/services/dotnet_databinding.html)) and came up with several conclusions/questions:  1.      Win forms Data Binding is very cool and powerful Using The _BindingContext_ and _CurrencyManager_ lets you do some powerful in a very simple way. 2.      You can easily create a master-details page using two datagrids , and  dataset containing a parent and child tables and a DataRelation object 3.      You **cannot** easily create a master-details form if you want a control other than a DataGrid to represent your Parent Table. ##### _About item No.3_ So why can’t you, for example, just slap on a form a ListBox and a DataGrid and make the ListBox change what the DataGrid shows? The answer is pretty simple, although I never would have figured it out myself; When you bind a _DataGrid_ to a relation in a dataset, the _DataGrid_ tries to find all the controls on the form that use that relation’s Parent Table as their **_DataMember_**. It then retrieves the _CurrencyManager_ Associated with those controls and creates Ad-Hoc Event Handlers to these to its “_CurrentChanged_” Event, thus allowing itself to react to the user moving between separate parent records. Here’s the catch – A _ListBox_ or _ComboBox_ or _TreeView_ control dones not have a **_DataMember_** property so any DataGrid that is on the form will not react when the user moves to a different item on that control. Sad but true. So what do you do? How do you still make the _DataGrid_ respond? The short answer is that you have to manually set the _BindingManager_’s _Position_ property (Which tells the bound controls on the form what records they are currently watching). You need to retrieve the Current _Row_ in your ListBox and loop through the _BindingManager_ rows until you find it. Yeah, totally ugly. I couldn’t figure out a different way. I’m almost **sure** I’m missing something here. What I **did** manage to come up with is a helper class that has but one static method that does all the hard work for you. With this class in place, you can call it like this on your control’s IndexChange event:       private void listBox1\_SelectedIndexChanged(object sender, System.EventArgs e)       {             BindingManagerHelper.Synchronize(listBox1.SelectedItem,BindingContext,m\_ds,"MyParentTable","MyPKColumn");       } Here’s the code for the class: public class BindingManagerHelper {       public static void Synchronize(object CurrentRowView,                                           BindingContext bindContext,                                           object DataSource,                                           string DataMember,                                           string PrimaryKeyName)       {             //retrieve the Binding Manager that relates to this Data source and this Data member             BindingManagerBase bm = bindContext\[DataSource,DataMember\];             DataRow row =null;             //A bound listbox can hold a DataRowView object             //but sometimes you might just have a DataRow object inside             //your control's Tag property.             //this allows you to send either one.             if(CurrentRowView is DataRow)             {row = (DataRow)CurrentRowView;     }             if(CurrentRowView is DataRowView )             {row = ((DataRowView)CurrentRowView).Row;}             if(row\==null)                   throw new NotSupportedException(                               "This object is not suppoerted for this method");             //Recover the value we will look for when looping             //through the BindingContext, so we know when to stop             string WantedValue = row\[PrimaryKeyName\].ToString();             //Start looping from the first record             bm.Position\=0;             while(true)             {                   try                   {                         //Check whether the current row is the one we are looking for                         DataRow data\=((DataRowView)bm.Current).Row;                         if (data\[PrimaryKeyName\].ToString() == WantedValue)                         {                               break;                         }                   }                   catch(Exception ex){}                   //Stop looping if you get to the last record                   if(bm.Position\==bm.Count\-1)                         break;                   //Advance the BindingContext to the next record                   bm.Position++;             }       }           } If anyone has a better idea of how to overcome this problem, I’d sure like to know, because I have a distinct feeling this is not an optimal solution (especially if you consider that every time we advance the binding context by one, all the controls on the form refresh to display the new data (Consider having thousands of DataRows!). What **does** make sense here is to derive from that ListBox or that TreeView and make a Data Bindable Control. This technique is very well documented in [Dino Esposito’s MSDN column from Feb’ 2002](http://msdn.microsoft.com/msdnmag/issues/02/02/cutting/default.aspx), but unfortunately, that solution does not fit the need here. What he shows there is reacting to a _CurrentChanged_ event in a custom control, and what we are trying to do here is to **generate** such an event. Even if I did create such a control, what way would I have to know the position of the DataRow that was just clicked on my control without resorting to looping? Again – another mystery. Hopefully, I’ll get some feedback on this and have some news on the subject… ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 16, 2003 ### [Funny Behaviour](https://osherove.com/blog/2003/6/16/funny-behaviour.html) - Jun 15, 2003 ### [Data Binding Woes - A Simple Solution](https://osherove.com/blog/2003/6/15/data-binding-woes-a-simple-solution.html) - Jun 13, 2003 ### [About Reflector, Encoding, And an Article Error](https://osherove.com/blog/2003/6/13/about-reflector-encoding-and-an-article-error.html) - Jun 12, 2003 ### [AppDomains Reloaded](https://osherove.com/blog/2003/6/12/appdomains-reloaded.html) --- title: "Ouch!" url: "https://osherove.com/blog/2003/6/13/ouch.md" canonical: "https://osherove.com/blog/2003/6/13/ouch.html" published: "2003-06-13T21:50:00" updated: "2003-06-13T21:50:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Ouch ! I wouldn't want Scott Bellware to be annoyed with me!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ouch! By Roy Osherove June 13, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 13, 2003; technical details may be outdated. [Ouch](http://weblogs.asp.net/sbellware/posts/8641.aspx)! I wouldn't want Scott Bellware to be annoyed with me!  ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 15, 2003 ### [Late In The Evening](https://osherove.com/blog/2003/6/15/late-in-the-evening.html) - Jun 14, 2003 ### [Family Vs. Technology](https://osherove.com/blog/2003/6/14/family-vs-technology.html) - Jun 12, 2003 ### [Coolest Birthday Ever](https://osherove.com/blog/2003/6/12/coolest-birthday-ever.html) - Jun 12, 2003 ### [BillG Joke](https://osherove.com/blog/2003/6/12/billg-joke.html) --- title: "About Reflector, Encoding, And an Article Error" url: "https://osherove.com/blog/2003/6/13/about-reflector-encoding-and-an-article-error.md" canonical: "https://osherove.com/blog/2003/6/13/about-reflector-encoding-and-an-article-error.html" published: "2003-06-13T21:27:00" updated: "2003-06-13T21:27:00" tags: [".Net Original"] author: "Roy Osherove" description: "Yes. Lutz Roeder's Reflector is one cool tool. I just found out using it that my latest article has some bad code in it because of reflector. The article mentions that in order to write to a memory buffer instead f a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About Reflector, Encoding, And an Article Error By Roy Osherove June 13, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 13, 2003; technical details may be outdated. Yes. Lutz Roeder's [Reflector](http://www.aisto.com/roeder/dotnet/) is one cool tool. I just found out using it that my [latest article](http://www.ondotnet.com/pub/a/dotnet/2003/06/09/parsinglogs.html) has some bad code in it because of reflector. The article mentions that in order to write to a memory buffer instead f a file you can initialize a new _XMLTextWriter_ object using a _StringWriter_ object(which writes to a _StringBuilder_ object in turn). In the article ,I discovered a problem that when writing to a string buffer using the _StringWriter object initializer_, the XML document that is created always turns out with an Encoding header of **UTF-16** at the top. I couldn't figure out why. I assumed it was something on my own system's configuration , so I pointed to a workaround for the problem - make the _XMLTextWriter_ write directly to a file using a different constructor. That constructor allows you to specify the desired _Encoding_ for that file, thus allowing you to specify **UTF-8**. I then wrote in the article that "You _**might**_ get a UTF-16 encoding header" but I was wrong. A quick peek inside the _StringWriter_'s constructor using [Reflector](http://www.aisto.com/roeder/dotnet/) revealed the awful truth - The _StringWriter_ initializes itself with a new _UnicodeEncoding_ object by default, with no constructor available to change this decision. More so, the Encoding property of the _StringWriter_ is read-only, thus you can't change it after creation. So, this means (or am I way off base here) that whenever you'd use a _StringWriter_ for an _XMLTextWriter_ ctor, you would get a **UTF-16** XML header. **Always**. No way to change that. That means you can't write an XML Document to a memory buffer  as a UTF-8 encoded XML without going through some hoops. Sure, I could use other classes in the framework but I shouldn't have to. Why should the Encoding property of the StringWriter be Read-Only? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 15, 2003 ### [Data Binding Woes - A Simple Solution](https://osherove.com/blog/2003/6/15/data-binding-woes-a-simple-solution.html) - Jun 14, 2003 ### [Winforms Data Binding Woes](https://osherove.com/blog/2003/6/14/winforms-data-binding-woes.html) - Jun 12, 2003 ### [AppDomains Reloaded](https://osherove.com/blog/2003/6/12/appdomains-reloaded.html) - Jun 12, 2003 ### [.Net Debugging Resources Grows](https://osherove.com/blog/2003/6/12/net-debugging-resources-grows.html) --- title: "Yet Another Book Chapter" url: "https://osherove.com/blog/2003/6/13/yet-another-book-chapter.md" canonical: "https://osherove.com/blog/2003/6/13/yet-another-book-chapter.html" published: "2003-06-13T20:32:00" updated: "2003-06-13T20:32:00" tags: [".Net Quotations", "Free book chapters"] author: "Roy Osherove" description: "Since I'm currently in the process of learning/revisiting a bunch of .Net subjects, I keep fininding free book chapters all over the place. The latest chapter I've (just) found, is called \" Windows Forms Data Binding \"…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Yet Another Book Chapter By Roy Osherove June 13, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published June 13, 2003; technical details may be outdated. Since I'm currently in the process of learning/revisiting a bunch of .Net subjects, I keep fininding free book chapters all over the place. The latest chapter I've (just) found, is called "[Windows Forms Data Binding](http://www.dnzone.com/ShowDetail.asp?NewsId=155)" from the book "[Developing .NET Custom Controls and Designers using C#](https://www.amazon.com/exec/obidos/ASIN/0972317910/qid=1055547073/sr=8-1/ref=sr_8_1/iserializable-20)". It's all about ContextBinding,PropertyManager and the rest of the gang. Seems promising. I'll read it overnight and if I totally hate/love it, you'll know :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 18, 2003 ### [Very Good Winforms FAQ](https://osherove.com/blog/2003/6/18/very-good-winforms-faq.html) - Jun 17, 2003 ### [.Net Shortcuts + Automate GAC and COM operations using this Cool Add-in](https://osherove.com/blog/2003/6/17/net-shortcuts-automate-gac-and-com-operations-using-this-coo.html) - Jun 12, 2003 ### [Some Good Book Recommendations From the Experts](https://osherove.com/blog/2003/6/12/some-good-book-recommendations-from-the-experts.html) - Jun 12, 2003 ### [Free ADO.NET book chapter](https://osherove.com/blog/2003/6/12/free-adonet-book-chapter.html) --- title: "Some Good Book Recommendations From the Experts" url: "https://osherove.com/blog/2003/6/12/some-good-book-recommendations-from-the-experts.md" canonical: "https://osherove.com/blog/2003/6/12/some-good-book-recommendations-from-the-experts.html" published: "2003-06-12T19:49:00" updated: "2003-06-12T19:49:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "When in need of a good book, it's always best to ask the experts which book is best. I just saw on GotDotNet that the Wintellect folks posted a whole section of recommended reading , both about .Net development and on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Some Good Book Recommendations From the Experts By Roy Osherove June 12, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published June 12, 2003; technical details may be outdated. When in need of a good book, it's always best to ask the experts which book is best. I just saw on [GotDotNet](http://www.gotdotnet.com/) that the **Wintellect** folks posted [a whole section of recommended reading](http://www.gotdotnet.com/utility/tracking/tracklink.aspx?url=http%3a%2f%2fwww.wintellect.com%2fresources%2frecommendedreading.aspx), both about .Net development and on general development topics. Some of these books are already in [my recommended reading list](http://dotnetweblogs.com/rosherove/story/6802.aspx), but some aren't. Not to worry, I'll add them soon :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 17, 2003 ### [.Net Shortcuts + Automate GAC and COM operations using this Cool Add-in](https://osherove.com/blog/2003/6/17/net-shortcuts-automate-gac-and-com-operations-using-this-coo.html) - Jun 13, 2003 ### [Yet Another Book Chapter](https://osherove.com/blog/2003/6/13/yet-another-book-chapter.html) - Jun 12, 2003 ### [Free ADO.NET book chapter](https://osherove.com/blog/2003/6/12/free-adonet-book-chapter.html) - Jun 12, 2003 ### [101 Microsoft Visual Basic .NET Applications](https://osherove.com/blog/2003/6/12/101-microsoft-visual-basic-net-applications.html) --- title: "AppDomains Reloaded" url: "https://osherove.com/blog/2003/6/12/appdomains-reloaded.md" canonical: "https://osherove.com/blog/2003/6/12/appdomains-reloaded.html" published: "2003-06-12T19:22:00" updated: "2003-06-12T19:22:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "Oh man . Reading Chris Brumme’s Post/Book Chapter about AppDomains was a bit like the first Matrix Movie. I figured I was in for a ride, but I never knew just how in-depth it was going to be. After the beginning, I kept…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # AppDomains Reloaded By Roy Osherove June 12, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published June 12, 2003; technical details may be outdated. **Oh man**. Reading Chris Brumme’s [Post/Book Chapter about AppDomains](http://blogs.gotdotnet.com/cbrumme/PermaLink.aspx/56dd7611-a199-4a1f-adae-6fac4019f11b) was a bit like the first _Matrix_ Movie. - I figured I was in for a ride, but I never knew just how in-depth it was going to be. - After the beginning, I kept wondering “How the hell did he know/do that?” - Mid-way through it, I started to “get” it - by the end I was saying “**Cool**! This explains so much!”. - I had to re-read some of the material to get all the finer points - There are some things about it I know I’ll figure only a few months from now (Well, that’s  a little less like the matrix, but what the hey) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 14, 2003 ### [Winforms Data Binding Woes](https://osherove.com/blog/2003/6/14/winforms-data-binding-woes.html) - Jun 13, 2003 ### [About Reflector, Encoding, And an Article Error](https://osherove.com/blog/2003/6/13/about-reflector-encoding-and-an-article-error.html) - Jun 12, 2003 ### [.Net Debugging Resources Grows](https://osherove.com/blog/2003/6/12/net-debugging-resources-grows.html) - Jun 10, 2003 ### [Nice DataBinding In Winforms Article](https://osherove.com/blog/2003/6/10/nice-databinding-in-winforms-article.html) --- title: "Free ADO.NET book chapter" url: "https://osherove.com/blog/2003/6/12/free-adonet-book-chapter.md" canonical: "https://osherove.com/blog/2003/6/12/free-adonet-book-chapter.html" published: "2003-06-12T18:30:00" updated: "2003-06-12T18:30:00" tags: [".Net Quotations", "Free book chapters"] author: "Roy Osherove" description: "FTPOnline.com has a link to a free chapter download from the book Murach's VB.NET Database Programming with ADO.NET download the PDF file here . About the chapter: \" How to use Data Views You'll learn how to create and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free ADO.NET book chapter By Roy Osherove June 12, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published June 12, 2003; technical details may be outdated. [FTPOnline.com](http://www.ftponline.com/) has a link to a free chapter download from the book [Murach's VB.NET Database Programming with ADO.NET](https://www.amazon.com/exec/obidos/ASIN/1890774197/qid=1055453215/sr=8-1/ref=sr_8_1/iserializable-20) download the PDF file [here](http://www.ftponline.com/books/chapters/1890774197.pdf). About the chapter: "**_How to use Data Views_** _You'll learn how to create and work with data views, how to code sort and filter expressions, how to work with the rows in a data view, and more._ " ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 13, 2003 ### [Yet Another Book Chapter](https://osherove.com/blog/2003/6/13/yet-another-book-chapter.html) - Jun 12, 2003 ### [Some Good Book Recommendations From the Experts](https://osherove.com/blog/2003/6/12/some-good-book-recommendations-from-the-experts.html) - Jun 12, 2003 ### [101 Microsoft Visual Basic .NET Applications](https://osherove.com/blog/2003/6/12/101-microsoft-visual-basic-net-applications.html) - Jun 8, 2003 ### [.Net Thread Pool Article](https://osherove.com/blog/2003/6/8/net-thread-pool-article.html) --- title: "Coolest Birthday Ever" url: "https://osherove.com/blog/2003/6/12/coolest-birthday-ever.md" canonical: "https://osherove.com/blog/2003/6/12/coolest-birthday-ever.html" published: "2003-06-12T06:44:00" updated: "2003-06-12T06:44:00" tags: ["Off Topic"] author: "Roy Osherove" description: "\" To celebrate the night before your birthday I re-installed my windows box, played with Norton Ghost to keep my pristine and newly installed system safe, and discovered the joy of a system that has a hard drive that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Coolest Birthday Ever By Roy Osherove June 12, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 12, 2003; technical details may be outdated. "_To celebrate the night before your birthday I re-installed my windows box, played with_ [_Norton Ghost_](http://www.symantec.com/sabu/ghost/) _to keep my pristine and newly installed system safe, and discovered the joy of a system that has a hard drive that isn't fragmented three ways to sunday_" \[[Alan](http://pnavy.com/royo/desktops/Alan) from [The ArcterJournal](http://arcterex.net/blog/) celebrates his mom's birthday in the geekiest way possible\] OK. I give up. You win. You **are** supergeek. :) Also, he's got the most innovative Post category I've seen : "_Dreams About Other Bloggers_". Coolness. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 14, 2003 ### [Family Vs. Technology](https://osherove.com/blog/2003/6/14/family-vs-technology.html) - Jun 13, 2003 ### [Ouch!](https://osherove.com/blog/2003/6/13/ouch.html) - Jun 12, 2003 ### [BillG Joke](https://osherove.com/blog/2003/6/12/billg-joke.html) - Jun 11, 2003 ### [Geek News](https://osherove.com/blog/2003/6/11/geek-news.html) --- title: "Google Is Blog-Crazed" url: "https://osherove.com/blog/2003/6/12/google-is-blog-crazed.md" canonical: "https://osherove.com/blog/2003/6/12/google-is-blog-crazed.html" published: "2003-06-12T06:35:00" updated: "2003-06-12T06:35:00" tags: ["Blogging"] author: "Roy Osherove" description: "You know google has gone crazy over weblogs when: Searching for ' ISerializable ' ,the first result is not related to the Iserializable Interface, but to a weblog Searching for 'IUnknown ' ,the first result is not…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Google Is Blog-Crazed By Roy Osherove June 12, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 12, 2003; technical details may be outdated. You **know** google has gone crazy over weblogs when: - Searching for '**ISerializable**' ,the first result is not related to the Iserializable Interface, but to a weblog - Searching for **'IUnknown**' ,the first result is not related to the IUnknown Interface, but to a weblog ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 17, 2003 ### [Scoble, Come Back!](https://osherove.com/blog/2003/6/17/scoble-come-back.html) - Jun 17, 2003 ### [Oy Vey](https://osherove.com/blog/2003/6/17/oy-vey.html) - Jun 11, 2003 ### [Living in a Bubble](https://osherove.com/blog/2003/6/11/living-in-a-bubble.html) - Jun 4, 2003 ### [About Blogging Patterns](https://osherove.com/blog/2003/6/4/about-blogging-patterns.html) --- title: "BillG Joke" url: "https://osherove.com/blog/2003/6/12/billg-joke.md" canonical: "https://osherove.com/blog/2003/6/12/billg-joke.html" published: "2003-06-12T05:15:00" updated: "2003-06-12T05:15:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Here's a good one I heared: Bill Gates goes fishing. Suddently he notices he catches somehting. When he rolls in his catch, he sees a gold fish on the hook. The fish suddenly opens its mouth and says \" Hey bill, how…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BillG Joke By Roy Osherove June 12, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 12, 2003; technical details may be outdated. Here's a good one I heared: Bill Gates goes fishing. Suddently he notices he catches somehting. When he rolls in his catch, he sees a gold fish on the hook. The fish suddenly opens its mouth and says "_Hey bill, how about making a wish?_" Bill thinks for a minute and replies "_OK. But you get only one._" ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 13, 2003 ### [Ouch!](https://osherove.com/blog/2003/6/13/ouch.html) - Jun 12, 2003 ### [Coolest Birthday Ever](https://osherove.com/blog/2003/6/12/coolest-birthday-ever.html) - Jun 11, 2003 ### [Geek News](https://osherove.com/blog/2003/6/11/geek-news.html) - Jun 11, 2003 ### [Women Rule](https://osherove.com/blog/2003/6/11/women-rule.html) --- title: "101 Microsoft Visual Basic .NET Applications" url: "https://osherove.com/blog/2003/6/12/101-microsoft-visual-basic-net-applications.md" canonical: "https://osherove.com/blog/2003/6/12/101-microsoft-visual-basic-net-applications.html" published: "2003-06-12T05:05:00" updated: "2003-06-12T05:05:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Oh man. I've got to get me Early & Adopter's new book. Even though it's in VB.NET, it's all about the framework, remember? Once you know the framework classes and how to use them , all the rest is just syntax... This…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 101 Microsoft Visual Basic .NET Applications By Roy Osherove June 12, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published June 12, 2003; technical details may be outdated. Oh man. I've **got** to get me Early & Adopter's [new book.](https://www.amazon.com/exec/obidos/ASIN/0735618917/ref%3Dnosim/addallbooksearch/iserializable-20)  Even though it's in VB.NET, it's all about the framework, remember? Once you know the framework classes and how to use them , all the rest is just syntax... This one **definitely** goes into my [wanted books](http://dotnetweblogs.com/rosherove/story/6802.aspx) list. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 12, 2003 ### [Some Good Book Recommendations From the Experts](https://osherove.com/blog/2003/6/12/some-good-book-recommendations-from-the-experts.html) - Jun 12, 2003 ### [Free ADO.NET book chapter](https://osherove.com/blog/2003/6/12/free-adonet-book-chapter.html) - Jun 8, 2003 ### [.Net Thread Pool Article](https://osherove.com/blog/2003/6/8/net-thread-pool-article.html) - Jun 4, 2003 ### [A Big Mistake](https://osherove.com/blog/2003/6/4/a-big-mistake.html) --- title: ".Net Debugging Resources Grows" url: "https://osherove.com/blog/2003/6/12/net-debugging-resources-grows.md" canonical: "https://osherove.com/blog/2003/6/12/net-debugging-resources-grows.html" published: "2003-06-12T03:25:00" updated: "2003-06-12T03:25:00" tags: [".Net Original"] author: "Roy Osherove" description: "Thanks to Julia's latest post , my .Net Debugging Resources page is now a little bit bigger. If you know of something missing in there, contribute!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Debugging Resources Grows By Roy Osherove June 12, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 12, 2003; technical details may be outdated. Thanks to Julia's [latest post](http://weblogs.asp.net/jlerman/posts/8556.aspx), my [.Net Debugging Resources](http://dotnetweblogs.com/rosherove/story/7573.aspx) page is now a little bit bigger. If you know of something missing in there, contribute! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 13, 2003 ### [About Reflector, Encoding, And an Article Error](https://osherove.com/blog/2003/6/13/about-reflector-encoding-and-an-article-error.html) - Jun 12, 2003 ### [AppDomains Reloaded](https://osherove.com/blog/2003/6/12/appdomains-reloaded.html) - Jun 10, 2003 ### [Nice DataBinding In Winforms Article](https://osherove.com/blog/2003/6/10/nice-databinding-in-winforms-article.html) - Jun 10, 2003 ### [Article Source now Online](https://osherove.com/blog/2003/6/10/article-source-now-online.html) --- title: "Geek News" url: "https://osherove.com/blog/2003/6/11/geek-news.md" canonical: "https://osherove.com/blog/2003/6/11/geek-news.html" published: "2003-06-11T16:35:00" updated: "2003-06-11T16:35:00" tags: ["Off Topic"] author: "Roy Osherove" description: "If you've put your screenshot up on the gallery , I'll let you in on a little secret - people can comment on your screenshot.You can tell by the little \"*\" at the end of the picture caption. Some of you already have a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Geek News By Roy Osherove June 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 11, 2003; technical details may be outdated. - If you've put your screenshot up on the [gallery](http://pnavy.com/royo/desktops), I'll let you in on a little secret - people can comment on your screenshot.You can tell by the little "\*" at the end of the picture caption. Some of you already have a comment or two, so check them out. - Another thing- that site contains a cool "slidshow" feature, with nice effects. - I've just printed Chris Brumme's Post/[Article](http://blogs.gotdotnet.com/cbrumme/PermaLink.aspx/56dd7611-a199-4a1f-adae-6fac4019f11b) on AppDomains to read in bed. How geeky am I?? - Hey, I'm still [hunting for a new job](http://dotnetweblogs.com/rosherove/story/6870.aspx). Got one? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 12, 2003 ### [Coolest Birthday Ever](https://osherove.com/blog/2003/6/12/coolest-birthday-ever.html) - Jun 12, 2003 ### [BillG Joke](https://osherove.com/blog/2003/6/12/billg-joke.html) - Jun 11, 2003 ### [Women Rule](https://osherove.com/blog/2003/6/11/women-rule.html) - Jun 11, 2003 ### [Joseph Has a Point](https://osherove.com/blog/2003/6/11/joseph-has-a-point.html) --- title: "Living in a Bubble" url: "https://osherove.com/blog/2003/6/11/living-in-a-bubble.md" canonical: "https://osherove.com/blog/2003/6/11/living-in-a-bubble.html" published: "2003-06-11T14:31:00" updated: "2003-06-11T14:31:00" tags: ["Blogging"] author: "Roy Osherove" description: "Sometimes, I can see myself living in a sort of bubble. Not just me, actually, but all the other programmers around me, at my job. It’s like we’re living in a cocoon. Nothing can touch us. The day’s events usually all…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Living in a Bubble By Roy Osherove June 11, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 11, 2003; technical details may be outdated. Sometimes, I can see myself living in a sort of bubble. Not just me, actually, but all the other programmers around me, at my job. It’s like we’re living in a cocoon. Nothing can touch us. The day’s events usually all occur far away from us, on the internet. Even the ones that occur very near, like today, in Jerusalem; 16 people were murdered, and dozes more severely injured in a suicide bombing inside the No. 14 bus. Now, Israel’s citizens are used to hearing the news on the radio every half hour. We **know** that everything can change in the blink of an eye. Peace turns to war, Good intentions turn to revenge. Love becomes hate. All these things have been a part of our daily lives for the past few years. When it comes to the people in the IT industry ,though, it’s like a big bubble. When we heard the news of the bombing, everyone just kept working, almost like nothing had happened. Here and there people were calling their families to check whether everything was fine and if no one that they knew was hurt, but work kept on like usual. Like it all happened far far away. I cried a bit on the drive home. If I were a cheap psychiatrist I’d say that perhaps it’s just an emotional line of defense so that people don’t break up. Closing yourself to feelings so as to not tear apart on a daily basis. I guess that’s true. I find myself even more immersed in programming tasks after such things, maybe just trying to “move on”. I don’t want to get into the politics of all this. I’m smart enough to know that I’m not smart enough about the subject to have a good enough argument for all the reasoning of each side. Fact is, people here get killed daily, people there get killed daily, and it’s only going to get worse. It makes me sometimes feel like I want to pack up all my stuff and go live in another country, far from all this.  This feeling is getting pretty common among a lot of people I know- “Getting away from it all”. I’m starting to feel like the Bagdad Blogger, reporting from the scene on the “Native’s feelings”. I’ve noticed, that in the IT world, on the net, I seem to get along just fine with people who’s name would usually make the shopping mall guards where I live pretty nervous if they saw them walking in. It’s just natural. Fear and disbelief are starting to rule here. But on the net, like a true bubble, there almost is no “other”. We are all “together” in this stuff. We are all working towards a common cause (be it as small and insignificant as it may), and we consult each other, share with each other. Utopia -  it’s not. But it’s a hell of a lot better than what’s out here. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 17, 2003 ### [Oy Vey](https://osherove.com/blog/2003/6/17/oy-vey.html) - Jun 12, 2003 ### [Google Is Blog-Crazed](https://osherove.com/blog/2003/6/12/google-is-blog-crazed.html) - Jun 4, 2003 ### [About Blogging Patterns](https://osherove.com/blog/2003/6/4/about-blogging-patterns.html) - Jun 2, 2003 ### [Medieval Times](https://osherove.com/blog/2003/6/2/medieval-times.html) --- title: "Women Rule" url: "https://osherove.com/blog/2003/6/11/women-rule.md" canonical: "https://osherove.com/blog/2003/6/11/women-rule.html" published: "2003-06-11T11:55:00" updated: "2003-06-11T11:55:00" tags: ["Off Topic"] author: "Roy Osherove" description: "In Respose to Julie's post about women in tech, I must say that in Israel, I think the situation is better, although not by much. I think about 30% or a bit more of the software developers I know are women. I (again!)…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Women Rule By Roy Osherove June 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 11, 2003; technical details may be outdated. In Respose to [Julie's post](http://weblogs.asp.net/jlerman/posts/8526.aspx) about women in tech, I must say that in Israel, I think the situation is better, although not by much. I think about 30% or a bit more of the software developers I know are women. I (again!) think it's because women here are expected to serve mandatory time in the military, and thus are considered more "equal" in some ways, and are also less shy about clawing their way into male society. Personally, I think women are better thinkers than men ever will be. It's a biological thing ;) My wife is able to watch TV,listen to the radio, talk to her friends on the phone and play with the cat all at once. I can't even watch TV and chew gum without special assistance. (Oops!, there goes my shot at a Microsoft job...) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 12, 2003 ### [BillG Joke](https://osherove.com/blog/2003/6/12/billg-joke.html) - Jun 11, 2003 ### [Geek News](https://osherove.com/blog/2003/6/11/geek-news.html) - Jun 11, 2003 ### [Joseph Has a Point](https://osherove.com/blog/2003/6/11/joseph-has-a-point.html) - Jun 11, 2003 ### [Disappointment](https://osherove.com/blog/2003/6/11/disappointment.html) --- title: "Announcing: .Net Desktops Contest" url: "https://osherove.com/blog/2003/6/11/announcing-net-desktops-contest.md" canonical: "https://osherove.com/blog/2003/6/11/announcing-net-desktops-contest.html" published: "2003-06-11T08:37:00" updated: "2003-06-11T08:37:00" tags: ["Other"] author: "Roy Osherove" description: "OK. Here's a cool idea. A \" Coolest Desktop \" gallery. Whoever wants, sends me a screenshot of their desktop ,either at home or at work, in a zip file, to [email removed] - make sure its a jpg or gif, not a bmp -put…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Announcing: .Net Desktops Contest By Roy Osherove June 11, 2003 In [Other](https://osherove.com/blog/category/other) **Historical article** · Originally published June 11, 2003; technical details may be outdated. OK. Here's a cool idea. A "_Coolest Desktop_" gallery. Whoever wants, sends me a screenshot of their desktop ,either at home or at work, in a zip file, to **\[email removed\]** \- make sure its a jpg or gif, not a bmp \-put "\[contest\]" in the subject or body, and a link to your blog/site(if you have one) \- 1 pic per person \- send in a ZIP file only! I'll put the screenshots up in the [photo gallery](http://pnavy.com/royo/desktops) for everyone to watch. [http://pnavy.com/royo/desktops](http://pnavy.com/royo/desktops) Let's see what we can come up with. I was a witness to such a contest about 2-3 years ago, and people came up with some amazing desktops. p.s It can take about 12 hours until you start seeing the shots I got by mail,so be patient... ## More in Other [All posts in Other](https://osherove.com/blog/category/other) - Oct 30, 2003 ### [Easy Proxy handling through the ProxyFactory and ProxyInfo classes](https://osherove.com/blog/2003/10/30/easy-proxy-handling-through-the-proxyfactory-and-proxyinfo-c.html) - Sep 9, 2003 ### [My favorites in OPML](https://osherove.com/blog/2003/9/9/my-favorites-in-opml.html) - May 26, 2003 ### [.Net Debugging Resources](https://osherove.com/blog/2003/5/26/net-debugging-resources.html) - May 9, 2003 ### [My Bookshelf](https://osherove.com/blog/2003/5/9/my-bookshelf.html) --- title: "Joseph Has a Point" url: "https://osherove.com/blog/2003/6/11/joseph-has-a-point.md" canonical: "https://osherove.com/blog/2003/6/11/joseph-has-a-point.html" published: "2003-06-11T04:48:00" updated: "2003-06-11T04:48:00" tags: ["Off Topic"] author: "Roy Osherove" description: "OK, I think Joseph Cooney has a point on my last post.. Everyone should be able to participate, so from now on, everyone can send me their desktop screenshot. See this post for details." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Joseph Has a Point By Roy Osherove June 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 11, 2003; technical details may be outdated. OK, I think Joseph Cooney has a point on my last post.. Everyone should be able to participate, so from now on, everyone can send me their desktop screenshot. See [this post](http://weblogs.asp.net/rosherove/posts/8498.aspx) for details. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 11, 2003 ### [Geek News](https://osherove.com/blog/2003/6/11/geek-news.html) - Jun 11, 2003 ### [Women Rule](https://osherove.com/blog/2003/6/11/women-rule.html) - Jun 11, 2003 ### [Disappointment](https://osherove.com/blog/2003/6/11/disappointment.html) - Jun 10, 2003 ### [Announcing: .Net Desktops Contest](https://osherove.com/blog/2003/6/10/announcing-net-desktops-contest.html) --- title: "Disappointment" url: "https://osherove.com/blog/2003/6/11/disappointment.md" canonical: "https://osherove.com/blog/2003/6/11/disappointment.html" published: "2003-06-11T03:28:00" updated: "2003-06-11T03:28:00" tags: ["Off Topic"] author: "Roy Osherove" description: "OK. I'm totally disappointed . I've recieved almost no screenshots of desktops.How busy are you guys? So, I'll urge again, and if in the next 24 hours I don't get a meaningful amount, this won't really be a contest…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Disappointment By Roy Osherove June 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 11, 2003; technical details may be outdated. OK. I'm totally [disappointed](http://weblogs.asp.net/rosherove/posts/8498.aspx). I've recieved almost no screenshots of desktops.How busy are you guys?  So, I'll urge again, and if in the next 24 hours I don't get a meaningful amount, this won't really be a contest anymore. I actually thought this was a cool idea. I mean, I'd love to see what [Chris Sell's](http://www.sellsbrothers.com/) desktop looks like, or [Don Box's](http://www.gotdotnet.com/team/dbox/), or [Chris Brumme's](http://blogs.gotdotnet.com/cbrumme/), Or [Scoble's](http://radio.weblogs.com/0001011/2003/06/10.html#a3287) don't you? What programs are lurking in **your** taskbar? send 'em to me([Rules](http://weblogs.asp.net/rosherove/posts/8498.aspx)). Here's [the gallery](http://pnavy.com/royo/desktops) Even if this thing goes south, I will keep holding on to the gallery, so anyone who wants can still send me their desktop screenshot. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 11, 2003 ### [Women Rule](https://osherove.com/blog/2003/6/11/women-rule.html) - Jun 11, 2003 ### [Joseph Has a Point](https://osherove.com/blog/2003/6/11/joseph-has-a-point.html) - Jun 10, 2003 ### [Announcing: .Net Desktops Contest](https://osherove.com/blog/2003/6/10/announcing-net-desktops-contest.html) - Jun 10, 2003 ### [The Google King](https://osherove.com/blog/2003/6/10/the-google-king.html) --- title: "Announcing: .Net Desktops Contest" url: "https://osherove.com/blog/2003/6/10/announcing-net-desktops-contest.md" canonical: "https://osherove.com/blog/2003/6/10/announcing-net-desktops-contest.html" published: "2003-06-10T19:15:00" updated: "2003-06-10T19:15:00" tags: ["Off Topic"] author: "Roy Osherove" description: "OK. Here's a cool idea. A \" Coolest Desktop \" contest. Whoever wants, sends me a screenshot of their desktop ,either at home or at work, in a zip file, to [email removed] - make sure its a jpg or gif,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Announcing: .Net Desktops Contest By Roy Osherove June 10, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 10, 2003; technical details may be outdated. OK. Here's a cool idea. A "_Coolest Desktop_" contest. Whoever wants, sends me a screenshot of their desktop ,either at home or at work, in a zip file, to **\[email removed\]** \- make sure its a jpg or gif, not a bmp \-put "\[contest\]" in the subject or body, and a link to your blog/site(if you have one) \- 1 pic per person \- send in a ZIP file only! I'll put the screenshots up in the contest photo gallery for everyone to watch.  Then we'll somehow have to decide of a winner, but we'll cross that bridge when we get to it.(Hey, maybe we can get one of the MSFT folks to arrange for a cool prize?) I've already put mine up. The album is located here: [http://pnavy.com/royo/desktops](http://pnavy.com/royo/desktops) Let's see what we can come up with. I was a witness to such a contest about 2-3 years ago, and people came up with some amazing desktops. Mine is pretty boring, but I'll try to put my work desktop instead... <table><tbody><tr><td><a href="http://pnavy.com/royo/desktops/homedesk"><img alt="" decoding="async" height="113" loading="lazy" src="https://osherove.com/img/wb/089ad396_pnavy.com_royo_albums_desktops_homedesk.thumb.jpg" width="150"></a></td><td width="1"></td></tr><tr><td colspan="3" height="1"></td></tr></tbody></table> p.s It will take about 12 hours until you start seeing the shots I got by mail,so be patient... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 11, 2003 ### [Joseph Has a Point](https://osherove.com/blog/2003/6/11/joseph-has-a-point.html) - Jun 11, 2003 ### [Disappointment](https://osherove.com/blog/2003/6/11/disappointment.html) - Jun 10, 2003 ### [The Google King](https://osherove.com/blog/2003/6/10/the-google-king.html) - Jun 10, 2003 ### [Cool Photo Hosting](https://osherove.com/blog/2003/6/10/cool-photo-hosting.html) --- title: "The Google King" url: "https://osherove.com/blog/2003/6/10/the-google-king.md" canonical: "https://osherove.com/blog/2003/6/10/the-google-king.html" published: "2003-06-10T17:54:00" updated: "2003-06-10T17:54:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Heh. You know you've made it when you come up first in google for searching DB_SEC_E_AUTH_FAILED Yey!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Google King By Roy Osherove June 10, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 10, 2003; technical details may be outdated. Heh. You know you've made it when you come up first in google for searching DB\_SEC\_E\_AUTH\_FAILED Yey! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 11, 2003 ### [Disappointment](https://osherove.com/blog/2003/6/11/disappointment.html) - Jun 10, 2003 ### [Announcing: .Net Desktops Contest](https://osherove.com/blog/2003/6/10/announcing-net-desktops-contest.html) - Jun 10, 2003 ### [Cool Photo Hosting](https://osherove.com/blog/2003/6/10/cool-photo-hosting.html) - Jun 10, 2003 ### [Here I Am](https://osherove.com/blog/2003/6/10/here-i-am.html) --- title: "Nice DataBinding In Winforms Article" url: "https://osherove.com/blog/2003/6/10/nice-databinding-in-winforms-article.md" canonical: "https://osherove.com/blog/2003/6/10/nice-databinding-in-winforms-article.html" published: "2003-06-10T17:41:00" updated: "2003-06-10T17:41:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "A nice article about Data-Binding in Winforms: http://www.akadia.com/services/dotnet_databinding.html Among other things, it explains about the Currency Manager, BindingContext,Master-Detail displays - all the stuff…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice DataBinding In Winforms Article By Roy Osherove June 10, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published June 10, 2003; technical details may be outdated. A nice article about Data-Binding in Winforms: [http://www.akadia.com/services/dotnet\_databinding.html](http://www.akadia.com/services/dotnet_databinding.html) Among other things, it explains about the Currency Manager, BindingContext,Master-Detail displays - all the stuff you'll actually **need** to use in the real world. If you just played around with binding, but havent really explored it up until now, this is a good start. Update: Looking more into the root of this site, it looks like they have a pretty nice bunch of small articles/tips ranging from .Net winforms to Oracle 9i installation. [Read some](http://www.akadia.com/) good stuff. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 12, 2003 ### [AppDomains Reloaded](https://osherove.com/blog/2003/6/12/appdomains-reloaded.html) - Jun 12, 2003 ### [.Net Debugging Resources Grows](https://osherove.com/blog/2003/6/12/net-debugging-resources-grows.html) - Jun 10, 2003 ### [Article Source now Online](https://osherove.com/blog/2003/6/10/article-source-now-online.html) - Jun 10, 2003 ### [.Net Rocks Show Do's And Don't's](https://osherove.com/blog/2003/6/10/net-rocks-show-dos-and-donts.html) --- title: "Article Source now Online" url: "https://osherove.com/blog/2003/6/10/article-source-now-online.md" canonical: "https://osherove.com/blog/2003/6/10/article-source-now-online.html" published: "2003-06-10T15:52:00" updated: "2003-06-10T15:52:00" tags: [".Net Original"] author: "Roy Osherove" description: "I've just put the source code that goes along with my Regex, XML and Log Parsing Article online. It shows a very simple, yet pretty cool example of loading a log file, and searching through it using a small GUI. Grab it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Article Source now Online By Roy Osherove June 10, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 10, 2003; technical details may be outdated. I've just put the source code that goes along with my [Regex, XML and Log Parsing](http://www.oreillynet.com/pub/a/dotnet/2003/06/09/parsinglogs.html) Article online. It shows a very simple, yet pretty cool example of loading a log file, and searching through it using a small GUI. Grab it here: [http://royo.bravepages.com/L2X\_with\_src.zip](http://royo.bravepages.com/L2X_with_src.zip) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 12, 2003 ### [.Net Debugging Resources Grows](https://osherove.com/blog/2003/6/12/net-debugging-resources-grows.html) - Jun 10, 2003 ### [Nice DataBinding In Winforms Article](https://osherove.com/blog/2003/6/10/nice-databinding-in-winforms-article.html) - Jun 10, 2003 ### [.Net Rocks Show Do's And Don't's](https://osherove.com/blog/2003/6/10/net-rocks-show-dos-and-donts.html) - Jun 10, 2003 ### [\[New Article\] Using Regex and The XML Classes To Parse Your Log Files](https://osherove.com/blog/2003/6/10/new-article-using-regex-and-the-xml-classes-to-parse-your-lo.html) --- title: "Cool Photo Hosting" url: "https://osherove.com/blog/2003/6/10/cool-photo-hosting.md" canonical: "https://osherove.com/blog/2003/6/10/cool-photo-hosting.html" published: "2003-06-10T15:10:00" updated: "2003-06-10T15:10:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Just discovered pnavy.com . They let you host your own photo gallery(or weblog, or even a full community website) for free. Its all based on open-source too. Coolness. Here's mine . Nothing much there yet, but I'll up…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool Photo Hosting By Roy Osherove June 10, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 10, 2003; technical details may be outdated. Just discovered [pnavy.com](http://pnavy.com/). They let you host your own photo gallery(or weblog, or even a full community website) for free. Its all based on open-source too. Coolness.[Here's mine](http://pnavy.com/royo/). Nothing much there yet, but I'll up some cool screenshots of stuff I've made over the past few years. Now I just need to find a place to host my various ZIP files so I can link to cool sources and stuff. Anyone know any? (must be free though) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 10, 2003 ### [Announcing: .Net Desktops Contest](https://osherove.com/blog/2003/6/10/announcing-net-desktops-contest.html) - Jun 10, 2003 ### [The Google King](https://osherove.com/blog/2003/6/10/the-google-king.html) - Jun 10, 2003 ### [Here I Am](https://osherove.com/blog/2003/6/10/here-i-am.html) - Jun 6, 2003 ### [Phew... Free Time, At Last.](https://osherove.com/blog/2003/6/6/phew-free-time-at-last.html) --- title: "Here I Am" url: "https://osherove.com/blog/2003/6/10/here-i-am.md" canonical: "https://osherove.com/blog/2003/6/10/here-i-am.html" published: "2003-06-10T09:33:00" updated: "2003-06-10T09:33:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Me Playing Stupid Me at my desktop OK. You asked for it (no you didn't, but I went ahead anyway...) so I found a place to upload my images to. This is me at the office. making an ass of myself, as usual :) Can you see…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Here I Am By Roy Osherove June 10, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 10, 2003; technical details may be outdated. [Me Playing Stupid](http://www.pbase.com/image/17670624) [Me at my desktop](http://www.pbase.com/image/17670833) OK. You asked for it (no you didn't, but I went ahead anyway...) so I found a place to upload my images to. This is me at the office. making an ass of myself, as usual :) Can you see the matrix reloaded desktop? how geeky am I?? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 10, 2003 ### [The Google King](https://osherove.com/blog/2003/6/10/the-google-king.html) - Jun 10, 2003 ### [Cool Photo Hosting](https://osherove.com/blog/2003/6/10/cool-photo-hosting.html) - Jun 6, 2003 ### [Phew... Free Time, At Last.](https://osherove.com/blog/2003/6/6/phew-free-time-at-last.html) - Jun 4, 2003 ### [IVBUG meeting went well](https://osherove.com/blog/2003/6/4/ivbug-meeting-went-well.html) --- title: ".Net Rocks Show Do's And Don't's" url: "https://osherove.com/blog/2003/6/10/net-rocks-show-dos-and-donts.md" canonical: "https://osherove.com/blog/2003/6/10/net-rocks-show-dos-and-donts.html" published: "2003-06-10T05:25:00" updated: "2003-06-10T05:25:00" tags: [".Net Original"] author: "Roy Osherove" description: "cool. Chris Sells is on .Net Rocks : \" Chris talks with Carl and Mark about Longhorn, Working at Microsoft, his book with Don Box, his new Windows Forms book, dealing with Printer Margins, passing command-line arguments…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Rocks Show Do's And Don't's By Roy Osherove June 10, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 10, 2003; technical details may be outdated. cool. Chris Sells is on [.Net Rocks](http://www.franklins.net/dotnetrocks.asp): "_Chris talks with Carl and Mark about Longhorn, Working at Microsoft, his book with Don Box, his new Windows Forms book, dealing with Printer Margins, passing command-line arguments to auto-deployed applications, linking assemblies, the new Matrix movie, what's new in Ghengis, and answers the age old question "to GAC or not to GAC?"_" I must admit that the last .Net rocks show did not rock at all. Unfortunately, I couldn't understand much of what was being said and the conversation did not flow at all. Perhaps this should be a lesson in "how to plan for a good rasio interview": -  Get people that can be understood by your audience -  Make sure you have something to speak with them about, other than playing bass guitar -  Make sure that after your guest talks long and hard about something with a very bad accent, that you don't just pause, and say "Interesting." and move right along to the next subject. This may sound a bit harsh, but this is a listening show, and one of the few traits people talking on it should have is...well,  understandability. Update: I should just mention that I'm a big fan of the show, this is all out of love. really. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 10, 2003 ### [Nice DataBinding In Winforms Article](https://osherove.com/blog/2003/6/10/nice-databinding-in-winforms-article.html) - Jun 10, 2003 ### [Article Source now Online](https://osherove.com/blog/2003/6/10/article-source-now-online.html) - Jun 10, 2003 ### [\[New Article\] Using Regex and The XML Classes To Parse Your Log Files](https://osherove.com/blog/2003/6/10/new-article-using-regex-and-the-xml-classes-to-parse-your-lo.html) - Jun 9, 2003 ### [Free Chapter From ADO.NET- Core Reference](https://osherove.com/blog/2003/6/9/free-chapter-from-adonet-core-reference.html) --- title: "[New Article] Using Regex and The XML Classes To Parse Your Log Files" url: "https://osherove.com/blog/2003/6/10/new-article-using-regex-and-the-xml-classes-to-parse-your-lo.md" canonical: "https://osherove.com/blog/2003/6/10/new-article-using-regex-and-the-xml-classes-to-parse-your-lo.html" published: "2003-06-10T01:50:00" updated: "2003-06-10T01:50:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "Phew. My new article is up. It's my first one for the O'Reilly network, and my first \"real\" article ever. You could say I'm a bit excited :) \" Summery : Most systems these days can generate log files to store data about…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[New Article\] Using Regex and The XML Classes To Parse Your Log Files By Roy Osherove June 10, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published June 10, 2003; technical details may be outdated. Phew. My new article is up. It's my first one for the O'Reilly network, and my first "real" article ever. You could say I'm a bit excited :) "**Summery**: _Most systems these days can generate log files to store data about the activity of the system. What about when you are asked to transform all of that data into usable information? I will show you how to use regular expressions and .NET's XML classes to turn your log files into a dataset to allow you to search, sort, and report on your data._" For now, it's on the top of the page over at [OnDotNet.Com](http://www.ondotnet.com/) with a cool graphic and everything. Here's the permalink to [article itself](http://www.ondotnet.com/pub/a/dotnet/2003/06/09/parsinglogs.html). Have fun :) p.s: I'd love to hear constructive criticism, if you have any. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 10, 2003 ### [Article Source now Online](https://osherove.com/blog/2003/6/10/article-source-now-online.html) - Jun 10, 2003 ### [.Net Rocks Show Do's And Don't's](https://osherove.com/blog/2003/6/10/net-rocks-show-dos-and-donts.html) - Jun 9, 2003 ### [Free Chapter From ADO.NET- Core Reference](https://osherove.com/blog/2003/6/9/free-chapter-from-adonet-core-reference.html) - Jun 8, 2003 ### [Amazon .Net books Feed](https://osherove.com/blog/2003/6/8/amazon-net-books-feed.html) --- title: "Free Chapter From ADO.NET- Core Reference" url: "https://osherove.com/blog/2003/6/9/free-chapter-from-adonet-core-reference.md" canonical: "https://osherove.com/blog/2003/6/9/free-chapter-from-adonet-core-reference.html" published: "2003-06-09T18:19:00" updated: "2003-06-09T18:19:00" tags: [".Net Original", "Free book chapters"] author: "Roy Osherove" description: "Here's a free chapter I found from ADO.NET - Core Reference,Microsoft : Chapter 10: Submitting Updates to Your Database coolness. UPDATE: boy, this chapter rocks ! it's more advanced than I first thought. here's an…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free Chapter From ADO.NET- Core Reference By Roy Osherove June 9, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published June 9, 2003; technical details may be outdated. Here's a free chapter I found from [ADO.NET - Core Reference,Microsoft](https://www.amazon.com/exec/obidos/ASIN/0735614237/qid%3D1055193359/iserializable-20): [Chapter 10: Submitting Updates to Your Database](http://www.microsoft.com/mspress/books/sampchap/5354.asp) coolness. UPDATE: boy, this chapter **rocks**! it's more advanced than I first thought. here's an excerpt: "_You now know the basics of updating a database with the changes stored in a DataSet. If you’re generating your own updating logic—whether in the form of INSERT, UPDATE, and DELETE queries or stored procedure calls—you’ll need to know more than just the basics._ _ For example, how do you handle concurrency so that you don’t accidentally overwrite another user’s changes? How do you handle null values in your concurrency checks? How do you submit updates in a transaction? What part does the TableMappings collection for a DataAdapter play when submitting updates? Would you like to know how to accomplish these tasks? Read on. _" ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 10, 2003 ### [.Net Rocks Show Do's And Don't's](https://osherove.com/blog/2003/6/10/net-rocks-show-dos-and-donts.html) - Jun 10, 2003 ### [\[New Article\] Using Regex and The XML Classes To Parse Your Log Files](https://osherove.com/blog/2003/6/10/new-article-using-regex-and-the-xml-classes-to-parse-your-lo.html) - Jun 8, 2003 ### [Amazon .Net books Feed](https://osherove.com/blog/2003/6/8/amazon-net-books-feed.html) - May 30, 2003 ### [\[New Article\] Support Application Plugins 2 - Dynamic Plugin Search](https://osherove.com/blog/2003/5/30/new-article-support-application-plugins-2-dynamic-plugin-sea.html) --- title: ".Net Thread Pool Article" url: "https://osherove.com/blog/2003/6/8/net-thread-pool-article.md" canonical: "https://osherove.com/blog/2003/6/8/net-thread-pool-article.html" published: "2003-06-08T15:32:00" updated: "2003-06-08T15:32:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Jeffrey Richter has an interesting article about the .Net Thread Pool." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Thread Pool Article By Roy Osherove June 8, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published June 8, 2003; technical details may be outdated.  Jeffrey Richter has an interesting [article](http://msdn.microsoft.com/msdnmag/issues/03/06/NET/default.aspx) about the .Net Thread Pool. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 12, 2003 ### [Free ADO.NET book chapter](https://osherove.com/blog/2003/6/12/free-adonet-book-chapter.html) - Jun 12, 2003 ### [101 Microsoft Visual Basic .NET Applications](https://osherove.com/blog/2003/6/12/101-microsoft-visual-basic-net-applications.html) - Jun 4, 2003 ### [A Big Mistake](https://osherove.com/blog/2003/6/4/a-big-mistake.html) - May 31, 2003 ### [SxS War Story](https://osherove.com/blog/2003/5/31/sxs-war-story.html) --- title: "Amazon .Net books Feed" url: "https://osherove.com/blog/2003/6/8/amazon-net-books-feed.md" canonical: "https://osherove.com/blog/2003/6/8/amazon-net-books-feed.html" published: "2003-06-08T09:50:00" updated: "2003-06-08T09:50:00" tags: [".Net Original"] author: "Roy Osherove" description: "Want to know of all the cool .Net books that arrive at Amazon's door? Inside your favorite RSS reader? http://www.yaywastaken.com/amazon/amazon-rss.asp?keywords=.Net" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Amazon .Net books Feed By Roy Osherove June 8, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published June 8, 2003; technical details may be outdated. Want to know of all the cool .Net books that arrive at Amazon's door? Inside your favorite RSS reader? [http://www.yaywastaken.com/amazon/amazon-rss.asp?keywords=.Net](http://www.yaywastaken.com/amazon/amazon-rss.asp?keywords=.Net) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 10, 2003 ### [\[New Article\] Using Regex and The XML Classes To Parse Your Log Files](https://osherove.com/blog/2003/6/10/new-article-using-regex-and-the-xml-classes-to-parse-your-lo.html) - Jun 9, 2003 ### [Free Chapter From ADO.NET- Core Reference](https://osherove.com/blog/2003/6/9/free-chapter-from-adonet-core-reference.html) - May 30, 2003 ### [\[New Article\] Support Application Plugins 2 - Dynamic Plugin Search](https://osherove.com/blog/2003/5/30/new-article-support-application-plugins-2-dynamic-plugin-sea.html) - May 30, 2003 ### [Improving Typed Datasets](https://osherove.com/blog/2003/5/30/improving-typed-datasets.html) --- title: "Phew... Free Time, At Last." url: "https://osherove.com/blog/2003/6/6/phew-free-time-at-last.md" canonical: "https://osherove.com/blog/2003/6/6/phew-free-time-at-last.html" published: "2003-06-06T14:01:00" updated: "2003-06-06T14:01:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Just a couple of quick words: * My mom told me she's reading my blog now(Hi Mom!). isn't that cool? She claims its the only way she knows when I go to sleep at night... you know you've made it when your mom reads you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Phew... Free Time, At Last. By Roy Osherove June 6, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 6, 2003; technical details may be outdated. Just a couple of quick words: \* **My mom told me she's reading my blog** now(Hi Mom!). isn't that cool? She claims its the only way she knows when  I go to sleep at night... you **know** you've made it when your mom reads you blog :) \* **The weekend has finally arrived...** Now I can relax, unwind, sleep those 14 hours I've been missing, and continue writing. I'll try to finish my article this weekend (about making your log files searchable using regex and xml writers). \* **I've been missing lots of great posts lately**, but I was soo busy. Lots of enviable posts about meeting cool people at teched..  I totally want to be there.. \* **My** [.Net Debugging resources](http://dotnetweblogs.com/rosherove/story/7573.aspx) **page is coming along** slowly but surely. Please feel free to contribute anything you can think of that people would like to have in this kind of page. \* is it just me, or has [dotnetwire.com](http://www.dotnetwire.com/) not updated in like 2 weeks now? I posted my lates article there, but they don't seem to update it... arrgh ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 10, 2003 ### [Cool Photo Hosting](https://osherove.com/blog/2003/6/10/cool-photo-hosting.html) - Jun 10, 2003 ### [Here I Am](https://osherove.com/blog/2003/6/10/here-i-am.html) - Jun 4, 2003 ### [IVBUG meeting went well](https://osherove.com/blog/2003/6/4/ivbug-meeting-went-well.html) - Jun 3, 2003 ### [Overworked](https://osherove.com/blog/2003/6/3/overworked.html) --- title: "IVBUG meeting went well" url: "https://osherove.com/blog/2003/6/4/ivbug-meeting-went-well.md" canonical: "https://osherove.com/blog/2003/6/4/ivbug-meeting-went-well.html" published: "2003-06-04T15:29:00" updated: "2003-06-04T15:29:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Went to my user group meeting today. Was kinda funny. We had no electricity for some reason, so the group leader decided to take us all out and have a “Help” session, in which everyone with a problem raises it to the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # IVBUG meeting went well By Roy Osherove June 4, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 4, 2003; technical details may be outdated. Went to my user group meeting today. Was kinda funny. We had no electricity for some reason, so the group leader decided to take us all out and have a “Help” session, in which everyone with a problem raises it to the group and people try to answer him. It was one of the best meetings I’ve attended. People actually took part. I also got up and recommended .NetWeblogs as a good resource site. I also got the chance to help out a guy who was there. I overheard him talk about needing a job, so I handed him my email and told him to email me his resume. I wasn’t promising anything, but, what’s the harm in trying right? Made me feel good and hopefully, he’d do the same for me. Then I got two possible job leads from two other people in the group, which I will be trying out in the next week or so. Sometimes sociability is a good thing. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 10, 2003 ### [Here I Am](https://osherove.com/blog/2003/6/10/here-i-am.html) - Jun 6, 2003 ### [Phew... Free Time, At Last.](https://osherove.com/blog/2003/6/6/phew-free-time-at-last.html) - Jun 3, 2003 ### [Overworked](https://osherove.com/blog/2003/6/3/overworked.html) - Jun 2, 2003 ### [In-Your-Face](https://osherove.com/blog/2003/6/2/in-your-face.html) --- title: "About Blogging Patterns" url: "https://osherove.com/blog/2003/6/4/about-blogging-patterns.md" canonical: "https://osherove.com/blog/2003/6/4/about-blogging-patterns.html" published: "2003-06-04T09:09:00" updated: "2003-06-04T09:09:00" tags: ["Blogging"] author: "Roy Osherove" description: "When I drive back home from work, I'm usually pretty beat. It feels good to sit back, relax, crack open the radio on some smooth jazz, and cruise on home, letting the whole day drain out. Sometimes, though, I'll tune in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About Blogging Patterns By Roy Osherove June 4, 2003 In [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published June 4, 2003; technical details may be outdated. When I drive back home from work, I'm usually pretty beat. It feels good to sit back, relax, crack open the radio on some smooth jazz, and cruise on home, letting the whole day drain out. Sometimes, though, I'll tune in to stations on the radio that, had my wife caught me listening to them, she would beat me up pretty badly. These are mostly talk radio shows. The "Jerry Springer"s of radio land if you will. I tune in and listen to all the loonies. I find it interesting… in a pathological kind of way. Anyway, one of the shows there is totally based on listener contributions. What they do, is they let people call in to a voice mail box, and leave a message about pretty much anything they want – politics, football or how the traffic lights are too damn short these days. Then, they collect all the people that were recorded and pack whatever they can get into a one hour show, in which they play them one after the other. The catch is: each caller has only 1 minute to complete what they were talking about. 60 seconds, and the line hangs up.   They play the messages with small beeps between them, like when you listen to your phone messages when you get home. The effect, to me, is pretty darn interesting. You get to hear 4-6 major issues that repeat themselves, with some minor stuff you never though about scattered in between. Lots of calls are about the economic state and political issues, but what I usually listen to is the people, and I try to think why they are talking.. You'll hear old people, and young people alike, calling in and telling it like they think it is. It might be stupid, it might not make a lot of sense, but it's **real.** It occurred to me that what they are doing is actually a kind of  **voice-blogging**. Or – it might be that Blogging is part of whatever category this show belongs to as well – expressing yourself through potential mass publication. Like in the blog world, lots of people are return-recorders. They usually record a message once-twice a week. Now, they also **respond** to other recorders(I'll just call them 'VBloggers' from now on) that put messages on the show. They basically – leave voice comments on other voice blogs. Then they come back to hear the replies, then they reply again. Actually, an analogous structure to the blogging world would be that each caller had their own talk show in which they would voice out their opinions, and there would be a main talkshow that would voice out all the opinions from the other shows, aggregated into one feed. Taking it further – you could have a Feed-listener that would somehow collect voice blog posts from feeds and aggregate them in an easy manner – much like today's aggregators, only instead of reading, you'd be listening to MP3 posts. What am I getting at here? I'm trying to see if this whole thing, much like a lot of things in our world, is a **pattern**. It repeats itself in many forms, but the idea stays the same. Where else can you see the "**blogging**" pattern? How about News Articles, Weekend and daily columns in the newspaper, Graffity, Mailing Lists, Forums. What's the pattern here? ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 12, 2003 ### [Google Is Blog-Crazed](https://osherove.com/blog/2003/6/12/google-is-blog-crazed.html) - Jun 11, 2003 ### [Living in a Bubble](https://osherove.com/blog/2003/6/11/living-in-a-bubble.html) - Jun 2, 2003 ### [Medieval Times](https://osherove.com/blog/2003/6/2/medieval-times.html) - May 30, 2003 ### [About "Personal" Blogging](https://osherove.com/blog/2003/5/30/about-quotpersonalquot-blogging.html) --- title: "A Big Mistake" url: "https://osherove.com/blog/2003/6/4/a-big-mistake.md" canonical: "https://osherove.com/blog/2003/6/4/a-big-mistake.html" published: "2003-06-04T08:20:00" updated: "2003-06-04T08:20:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "wew. Have a few spare minutes. So I started reading Chris Brumme's Latest post about AppDomains. It was a mistake. It was a hell of an interesting post, but the mistake was reading it on the job. It contains 5299 words…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Big Mistake By Roy Osherove June 4, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published June 4, 2003; technical details may be outdated. wew. Have a few spare minutes. So I started reading [Chris Brumme's](http://blogs.gotdotnet.com/cbrumme/) Latest post about AppDomains. It was a mistake. It was a hell of an interesting post, but the mistake was reading it on the job. It contains **5299 words**. The last eleven of them are: "But even I think this blog is getting way too long." Heh. I'm not sure I can continue working for the rest of the day, as my head will simply burst. The guy writes a book chapter for a post. Gotta love that kind of dedication..  ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 12, 2003 ### [101 Microsoft Visual Basic .NET Applications](https://osherove.com/blog/2003/6/12/101-microsoft-visual-basic-net-applications.html) - Jun 8, 2003 ### [.Net Thread Pool Article](https://osherove.com/blog/2003/6/8/net-thread-pool-article.html) - May 31, 2003 ### [SxS War Story](https://osherove.com/blog/2003/5/31/sxs-war-story.html) - May 31, 2003 ### [Another Cool Dynamic Loading Article](https://osherove.com/blog/2003/5/31/another-cool-dynamic-loading-article.html) --- title: "Overworked" url: "https://osherove.com/blog/2003/6/3/overworked.md" canonical: "https://osherove.com/blog/2003/6/3/overworked.html" published: "2003-06-03T09:34:00" updated: "2003-06-03T09:34:00" tags: ["Off Topic"] author: "Roy Osherove" description: "If you're wondering why I'm being so skimpy on the posts lately(all 3 of you), its because I'm going through a pretty rough week - A tight schedule, some very long Job interviews and coding challenges , and lack of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Overworked By Roy Osherove June 3, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 3, 2003; technical details may be outdated. If you're wondering why I'm being so skimpy on the posts lately(all 3 of you), its because I'm going through a pretty rough week - A tight schedule, some very long Job interviews and coding challenges , and lack of sleep  . all these things take their toll. Plus, I'm trying to finish an article - my first "real" article (i.e - $$) so I'm pretty stressed out. I worry that the more I'll post, the more rants you'll hear, which is not why you came here, right? Anyway, Hopefully I'll have something to contribute in the next couple of days. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 6, 2003 ### [Phew... Free Time, At Last.](https://osherove.com/blog/2003/6/6/phew-free-time-at-last.html) - Jun 4, 2003 ### [IVBUG meeting went well](https://osherove.com/blog/2003/6/4/ivbug-meeting-went-well.html) - Jun 2, 2003 ### [In-Your-Face](https://osherove.com/blog/2003/6/2/in-your-face.html) - Jun 2, 2003 ### [Medieval Times](https://osherove.com/blog/2003/6/2/medieval-times.html) --- title: "In-Your-Face" url: "https://osherove.com/blog/2003/6/2/in-your-face.md" canonical: "https://osherove.com/blog/2003/6/2/in-your-face.html" published: "2003-06-02T11:45:00" updated: "2003-06-02T11:45:00" tags: ["Off Topic"] author: "Roy Osherove" description: "\" I'm sitting here in a basement room in the Hyatt Recency right now listening to the inimitable Don Box talk about _______ and ________ (can't tell you about them yet...wait about 6 months. In a nutshell, we're making…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # In-Your-Face By Roy Osherove June 2, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 2, 2003; technical details may be outdated. " <table><tbody><tr><td><p><em>I'm sitting here in a basement room in the Hyatt Recency right now listening to the inimitable Don Box talk about _______ and ________  (can't tell you about them yet...wait about 6 months.  In a nutshell, we're making the "X" in </em><a href="http://www.w3.org/TR/REC-xml"><em>XML</em></a><em> much bigger :-). "</em></p></td></tr></tbody></table> " \[[InkBlog](http://www.inkblog.com/2003/06/01.html#a43)\] Ugh. Why is it that people have to write it in-your-face? Hint - If you can't tell us, please don't start telling. Really. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 4, 2003 ### [IVBUG meeting went well](https://osherove.com/blog/2003/6/4/ivbug-meeting-went-well.html) - Jun 3, 2003 ### [Overworked](https://osherove.com/blog/2003/6/3/overworked.html) - Jun 2, 2003 ### [Medieval Times](https://osherove.com/blog/2003/6/2/medieval-times.html) - Jun 1, 2003 ### [I'm a Configuration Manager... I Think.](https://osherove.com/blog/2003/6/1/im-a-configuration-manager-i-think.html) --- title: "Medieval Times" url: "https://osherove.com/blog/2003/6/2/medieval-times.md" canonical: "https://osherove.com/blog/2003/6/2/medieval-times.html" published: "2003-06-02T04:00:00" updated: "2003-06-02T04:00:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Is it just me, or does every developer sometimes feel like life is passing by and you aren’t doing a damn thing to do something useful about it Is it just me, or does every developer sometimes feel like life is passing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Medieval Times By Roy Osherove June 2, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 2, 2003; technical details may be outdated. Is it just me, or does every developer sometimes feel like life is passing by and you aren’t doing a damn thing to do something useful about it Is it just me, or does every developer sometimes feel like life is passing by and you aren’t doing a damn thing about it? All these recent posts about [Tech-Ed](http://weblogs.asp.net/jlerman/posts/8125.aspx), .Net bloggers [getting together](http://weblogs.asp.net/duncanma/posts/8124.aspx), the [parties](http://weblogs.asp.net/jtucker/posts/8121.aspx) and basically, the whole .Net "scene" in the U.S make me feel like I'm trapped in a medieval dungeon, where your only option lately is to code VB 6.0 and the user group meeting you attend each month is comprised of mostly shallow talk about non-interesting stuff. I guess you could say that the "coolness factor" is not as dominant as I'd like it to be. Even though much effort is being taken by me to make my life more interesting (Writing whatever I can in C#, learn like there's no tomorrow) I still can’t help but feel that: 1. Companies in Israel spend less time helping their employees "grow" 2. Lot's of developers in Israel simply don't want or don't like learning new stuff. 3. The ones that do enjoy learning are a relative few 4. .Net User Groups in Israel make little to no effort to attract new developers. ###### As for point number 4: The User groups in Israel rely on the developers pushing the whole thing forward. The reality is that in order "heard cats" into a user group you need to do some real work. It's not that developers don't **want** to go; it's just that they have so much to do. They need to be reminded constantly. They need to be wooed and looked after. I don’t know of a single User group site in Israel that would even come close to giving the amount of information that [Juila Lerman's](http://weblogs.asp.net/jlerman/) User Group [Site](http://www.vtdotnet.org/) does. That's a damn shame! You'd expect that at some point the group leader would decide "_hey, we need to do something with ASP.NET. Let's eat our own dog food! Let's build a community site!!_". Given the latest MSFT [Community Starter Kit](http://www.asp.net/Default.aspx?tabindex=9&tabid=47), this should be a breeze. But all you get now is a very small, very minimalist site, almost like the old internet days. That site usually only contains the group name, location and next meeting. If you're lucky, you'll get a list of past presentations, but that's it. Medieval, right? I actually contacted our [user group's](http://www.renaissance.co.il/ivbug/) manager and asked him if I could contribute in any way, even suggested a community site using the starter kit. God knows that would be great practice. His first reaction was "_we don't need that, but thanks_". I offered to help in any way I can with anything he could think of – "_OK, I'll keep you in mind_" was the reply. It was like staring at a big white wall. **What's next?** I don’t mean to rant; I just care about the whole issue. If you've been reading my blog, you should already know that I like taking things personal. I **like** doing development, I **like** getting involved, I **like** helping others, and when I don’t do any of the mentioned above, I feel trapped. I bet some of you (if not most) know what I mean. People who subscribe to .NetWeblogs(I'll still call this site with this name, as this is the best name for it..) are probably a lot like me in that way. The desire to learn and expand is not a hobby, it's a life commitment. I guess this blog is my way out of this. I've been feeling a lot more relaxed since I started it, and the feeling that somebody reads it (hopefully) makes me feel in-touch with the outside world. **About Commitment** Here's a great example of a developer I got to know through the blog. He's actually in a worst state than I am, since he's got no internet connection at home. So what [he](http://cengizhan.com/ "Watch out, the site's in turkish.. :)") does, is each day , he goes to an internet café, goes online, reads blogs, downloads articles and saves it all to a USB-drive. Then he goes home and studies what he got. That's pretty darn cool if you ask me. If I were at a position to hire this guy, I'd probably do it; even if he possessed only half of what I needed. I'll know he'd be one of my best developers. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 11, 2003 ### [Living in a Bubble](https://osherove.com/blog/2003/6/11/living-in-a-bubble.html) - Jun 4, 2003 ### [About Blogging Patterns](https://osherove.com/blog/2003/6/4/about-blogging-patterns.html) - May 30, 2003 ### [About "Personal" Blogging](https://osherove.com/blog/2003/5/30/about-quotpersonalquot-blogging.html) - May 27, 2003 ### [BlogWear](https://osherove.com/blog/2003/5/27/blogwear.html) --- title: "I'm a Configuration Manager... I Think." url: "https://osherove.com/blog/2003/6/1/im-a-configuration-manager-i-think.md" canonical: "https://osherove.com/blog/2003/6/1/im-a-configuration-manager-i-think.html" published: "2003-06-01T12:09:00" updated: "2003-06-01T12:09:00" tags: ["Off Topic"] author: "Roy Osherove" description: "My company is now trying to employ a major shift in our working process. One of the new roles that were introduced in this process is \" The person who makes sure that no double-coding takes place among separate projects…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm a Configuration Manager... I Think. By Roy Osherove June 1, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published June 1, 2003; technical details may be outdated. My company is now trying to employ a major shift in our working process. One of the new roles that were introduced in this process is "_The person who makes sure that no double-coding takes place among separate projects_"(We couldn’t come up with a better name...). I'm not really sure what's the person's job called, but I'm guessing it's called "Software Configuration Manager". And I got that job, among other stuff. We have several projects that use one major product (an engine written in C++) and each project customizes it to their own needs. Now, a problem has been gradually growing in the past several months - Projects were basically writing the same code twice for a lot of tasks. Instead of spreading the wheel, they re-invented it each time. So now, I have to learn a whole new area. I need to start coordinating the different projects in my company, making sure no one re-invents anything, and basically be the "know-it dude". My job would be organize status meetings for common project problems, bother the project managers about running tasks, and basically be pain in everyone's neck. I'm not sure I'm going to like doing this, but I can tell one thing for sure – for the next couple of weeks I'm going to be learning a lot – Which I always enjoy doing J  I was thinking that I could really use a book about software configuration. Specifically, I was checking out this book: [**Software Configuration Management Patterns: Effective Teamwork, Practical Integration**](https://www.amazon.com/exec/obidos/ASIN/0201741172/qid=1054478091/sr=1-1/ref=sr_1_1/iserializable-20) . It seems to cover mostly stuff related to build management, though. The basic premise is that I will be dealing only with the 'features', not their implementation. Do you know this book? Can anyone offer up a better book, or another resource for learning best practices when it comes to this subject?  Is this really what I need to learn? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 2, 2003 ### [In-Your-Face](https://osherove.com/blog/2003/6/2/in-your-face.html) - Jun 2, 2003 ### [Medieval Times](https://osherove.com/blog/2003/6/2/medieval-times.html) - May 30, 2003 ### [About "Personal" Blogging](https://osherove.com/blog/2003/5/30/about-quotpersonalquot-blogging.html) - May 30, 2003 ### [Rent My ... What??](https://osherove.com/blog/2003/5/30/rent-my-what.html) --- title: "SxS War Story" url: "https://osherove.com/blog/2003/5/31/sxs-war-story.md" canonical: "https://osherove.com/blog/2003/5/31/sxs-war-story.html" published: "2003-05-31T13:57:00" updated: "2003-05-31T13:57:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Dan posts a useful SxS story, involving Stored Procedures, ApplicationBlocks.Data and a totally obscure error. I'll need to pay attention to this stuff when the time comes *shiver*" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SxS War Story By Roy Osherove May 31, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 31, 2003; technical details may be outdated. [Dan](http://www.bleedingego.co.uk/) [posts](http://www.bleedingego.co.uk/index.php?i=133) a useful **SxS** story, involving Stored Procedures, ApplicationBlocks.Data and a totally obscure error. I'll need to pay attention to this stuff when the time comes \*shiver\* ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 8, 2003 ### [.Net Thread Pool Article](https://osherove.com/blog/2003/6/8/net-thread-pool-article.html) - Jun 4, 2003 ### [A Big Mistake](https://osherove.com/blog/2003/6/4/a-big-mistake.html) - May 31, 2003 ### [Another Cool Dynamic Loading Article](https://osherove.com/blog/2003/5/31/another-cool-dynamic-loading-article.html) - May 30, 2003 ### [Remoting Events May Break in V1.1](https://osherove.com/blog/2003/5/30/remoting-events-may-break-in-v11.html) --- title: "Another Cool Dynamic Loading Article" url: "https://osherove.com/blog/2003/5/31/another-cool-dynamic-loading-article.md" canonical: "https://osherove.com/blog/2003/5/31/another-cool-dynamic-loading-article.html" published: "2003-05-31T10:13:00" updated: "2003-05-31T10:13:00" tags: [".Net Quotations", "Cool Articles"] author: "Roy Osherove" description: "Following my two plug-in articles( this , that ) , I found another interesting article that deals with the subject of dynamically loading stuff from unreferenced assemblies: Loading Classes On The Fly It shows some more…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another Cool Dynamic Loading Article By Roy Osherove May 31, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published May 31, 2003; technical details may be outdated. Following my two plug-in articles([this](http://dotnetweblogs.com/rosherove/story/7610.aspx),[that](http://weblogs.asp.net/rosherove/story/8048.aspx)) , I found another interesting article that deals with the subject of dynamically loading stuff from unreferenced assemblies: [Loading Classes On The Fly](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadvnet/html/vbnet10082002.asp) It shows some more cool uses for this technique such as loading dynamic User Forms, Datasets and so on... Thanks to [Robert](http://weblogs.asp.net/rmclaws/posts/8071.aspx) for pointing this out. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Jun 4, 2003 ### [A Big Mistake](https://osherove.com/blog/2003/6/4/a-big-mistake.html) - May 31, 2003 ### [SxS War Story](https://osherove.com/blog/2003/5/31/sxs-war-story.html) - May 30, 2003 ### [Remoting Events May Break in V1.1](https://osherove.com/blog/2003/5/30/remoting-events-may-break-in-v11.html) - May 28, 2003 ### [Paper Prototyping](https://osherove.com/blog/2003/5/28/paper-prototyping.html) --- title: "Remoting Events May Break in V1.1" url: "https://osherove.com/blog/2003/5/30/remoting-events-may-break-in-v11.md" canonical: "https://osherove.com/blog/2003/5/30/remoting-events-may-break-in-v11.html" published: "2003-05-30T22:31:00" updated: "2003-05-30T22:31:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Russ Nemhauser over at DotNetJunkies wrote a solid piece about working with events through remoting (Hmm, I should write something about my experiences with that ..). Worth a read if you never done it before, since it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Remoting Events May Break in V1.1 By Roy Osherove May 30, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 30, 2003; technical details may be outdated. [Russ Nemhauser](http://www.dotnetjunkies.com/Authors.aspx?authorid=259)  over at DotNetJunkies wrote a solid piece about [working with events through remoting](http://www.dotnetjunkies.com/Tutorial/ShowContent.aspx?cg=BFB598D4-0CC8-4392-893D-30252E2B3283&forumid=4262)(Hmm, I should write something about my experiences with that ..). Worth a read if you never done it before, since it can get a little tricky. A very interesting thing I've seen in this article, though. Russ mentions in a comment to that article, that in Net 1.1, the scenario described there **will not work**! He goes on to describe the reasons [here](http://www.dotnetjunkies.com/Forums/ShowPost.aspx?PostID=39), and points [here](http://www.gotdotnet.com/team/changeinfo/Backwards1.0to1.1/default.aspx#00000153) for more information. If you work with remoting events - I suggest reading both the article and the associated links. just in case, you know. I'll admit first that I havn't yet read it all, just browsed through it(4.29 am - Oy Vey!), but i'll look into it tommorow and if I come up with new conclusions, I'll write. Funny thing is I didn't see this mentioned at [Ingo's site](http://www.ingorammer.com/) either - weird.. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 31, 2003 ### [SxS War Story](https://osherove.com/blog/2003/5/31/sxs-war-story.html) - May 31, 2003 ### [Another Cool Dynamic Loading Article](https://osherove.com/blog/2003/5/31/another-cool-dynamic-loading-article.html) - May 28, 2003 ### [Paper Prototyping](https://osherove.com/blog/2003/5/28/paper-prototyping.html) - May 28, 2003 ### [SP/Invoke -- Stored Procedure Invocation Code Generator for VB, C# and JScript.NET](https://osherove.com/blog/2003/5/28/spinvoke-stored-procedure-invocation-code-generator-for-vb-c.html) --- title: "New Skin, New Host..." url: "https://osherove.com/blog/2003/5/30/new-skin-new-host.md" canonical: "https://osherove.com/blog/2003/5/30/new-skin-new-host.html" published: "2003-05-30T22:10:00" updated: "2003-05-30T22:10:00" tags: [".NetWeblogs Site"] author: "Roy Osherove" description: "OK. I've put in Jesse's Skin into my blog. Hope this works out OK, I like the way it looks. If anyone has a problem reading my blog because of this, please tell me. Until I hear otherwise, I'm keeping it. Thanks, Jesse…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Skin, New Host... By Roy Osherove May 30, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) **Historical article** · Originally published May 30, 2003; technical details may be outdated. OK. I've put in Jesse's [Skin](http://weblogs.asp.net/jezell/posts/8032.aspx) into my blog. Hope this works out OK, I like the way it looks. If anyone has a problem reading my blog because of this, please tell me. Until I hear otherwise, I'm keeping it. Thanks, [Jesse](http://weblogs.asp.net/jezell/). :) **p.s** - my new RSS feed is now located at - http:/weblogs.asp.net/rosherove/rss.aspx so update those bookmarks. The blog link is also changed (But I bet you guessed that already..) - http:/weblogs.asp.net/rosherove/ ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - Sep 2, 2003 ### [.NetWeblogs chosen for site of the week on ASPExperts](https://osherove.com/blog/2003/9/2/netweblogs-chosen-for-site-of-the-week-on-aspexperts.html) - Jul 29, 2003 ### [.NetWeblogs coolness achieved](https://osherove.com/blog/2003/7/29/netweblogs-coolness-achieved.html) - May 30, 2003 ### [Scott Branches](https://osherove.com/blog/2003/5/30/scott-branches.html) - May 30, 2003 ### [Congratulations ScottW](https://osherove.com/blog/2003/5/30/congratulations-scottw.html) --- title: "[New Article] Support Application Plugins 2 - Dynamic Plugin Search" url: "https://osherove.com/blog/2003/5/30/new-article-support-application-plugins-2-dynamic-plugin-sea.md" canonical: "https://osherove.com/blog/2003/5/30/new-article-support-application-plugins-2-dynamic-plugin-sea.html" published: "2003-05-30T21:44:00" updated: "2003-05-30T21:44:00" tags: [".Net Original"] author: "Roy Osherove" description: "\" Summery : This article is an extension to my previous article about plugins . The last article showed how one can create a plug-in architecture for the application. One of the comments I got on that article mentioned…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # \[New Article\] Support Application Plugins 2 - Dynamic Plugin Search By Roy Osherove May 30, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 30, 2003; technical details may be outdated. _"**Summery**:_ _This article is an extension to_ [**_my previous article about plugins_**](http://dotnetweblogs.com/rosherove/story/7610.aspx)_._ _The last article showed how one can create a plug-in architecture for the application. One of the comments I got on that article mentioned that it should be possible to rid the user of the need to register any custom plugins inside the host Application’s **config** file._ _That comment also mentioned how one would go about this. Reading this, I’ve decided to take the challenge and extend my previous demonstration and make the example application search dynamically for plugins within its own directory."_ The article is [here](http://weblogs.asp.net/rosherove/story/8048.aspx). I'd appreciate any comments you may have. Enjoy :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 9, 2003 ### [Free Chapter From ADO.NET- Core Reference](https://osherove.com/blog/2003/6/9/free-chapter-from-adonet-core-reference.html) - Jun 8, 2003 ### [Amazon .Net books Feed](https://osherove.com/blog/2003/6/8/amazon-net-books-feed.html) - May 30, 2003 ### [Improving Typed Datasets](https://osherove.com/blog/2003/5/30/improving-typed-datasets.html) - May 28, 2003 ### [Performance Tuning and Optimizing ASP.NET Application](https://osherove.com/blog/2003/5/28/performance-tuning-and-optimizing-aspnet-application.html) --- title: "Add Plugins to Your App 2: Search dynamically for plugins without Config Files" url: "https://osherove.com/blog/2003/5/30/add-plugins-to-your-app-2-search-dynamically-for-plugins-wit.md" canonical: "https://osherove.com/blog/2003/5/30/add-plugins-to-your-app-2-search-dynamically-for-plugins-wit.html" published: "2003-05-30T20:32:00" updated: "2003-05-30T20:32:00" tags: ["Reflection"] author: "Roy Osherove" description: "This article is an extension to my previous article about plugins . Update: I've made the downloads for both articles available from my server: For this article: http://files.osherove.com/Plugins_Dynamic_src.zip for the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Add Plugins to Your App 2: Search dynamically for plugins without Config Files By Roy Osherove May 30, 2003 In [Reflection](https://osherove.com/blog/category/reflection) **Historical article** · Originally published May 30, 2003; technical details may be outdated. ## This article is an extension to [my previous article about plugins](http://dotnetweblogs.com/rosherove/story/7610.aspx). **Update:** I've made the downloads for both articles available from my server: For this article: [http://files.osherove.com/Plugins\_Dynamic\_src.zip](http://files.osherove.com/Plugins_Dynamic_src.zip) for the previous article: [http://files.osherove.com/Plugins\_demo.zip](http://files.osherove.com/Plugins_demo.zip) [http://files.osherove.com/Plugins\_src.zip](http://files.osherove.com/Plugins_src.zip) The last article showed how one can create a plug-in architecture for the application. One of the comments I got on that article mentioned that it should be possible to rid the user of the need to register any custom plugins inside the host Application’s **config** file. That comment also mentioned how one would go about this. Reading this, I’ve decided to take the challenge and extend my previous demonstration and make the example application search dynamically for plugins within its own directory. ### The Game Plan OK. Our main goal here is basically to rid the user of config files. We want to make sure that when our app loads, it can look through the ‘dll’ files in its directory, find the ones that contain types that support the **IPlugin** interface and instantiate those plugins. No user intervention should be required, other than copying the DLL file into the application’s directory. ### System.Reflection to the rescue One of the most powerful namespaces in the .Net framework is System.Reflction. As its name implies,  it allows the code to “reflect” upon itself, exposing any properties, members (both public and private), methods, interfaces, inheritance chains – practically “_Anything you wanted to know about Type ‘X’ but never dared ask_”. Using this powerful namespace, we will go over each file, discovering all of the types that reside inside it, and, for each type, find out whether it supports the IPlugin interface. The class we need to use to get all the types out of a .Net Assembly is called **System.Reflection.Assembly**.  Here’s a simple method that uses this class for exactly what we discussed: --- ---             private void TryLoadingPlugin(string path)             {                Assembly asm\= AppDomain.CurrentDomain.Load(path);                   foreach(Type t in  asm.GetTypes())                   {                    foreach(Type iface in  t.GetInterfaces())                               {                               if(iface.Equals(typeof(IPlugin)))                               {                                     AddToGoodTypesCollection(t);                                     break;                               }                         }                   }             } --- ---  As you can see, it’s a fairly easy process to retrieve lots of information about any given assembly file, simply by using the Reflection Namespace. In the method above, We call the **GetInterfaces()** method for each **Type** that exists in the given file. We then check whether any of the interfaces for that type are an **IPlugin** interface. If so, it means we can load it into our application, so we put it in an Array List for safe keeping. We can later return to that ArrayList and use **Activator.CreateInstance(Type)** on those types and thus instantiate any plugins that we’ve found. ### Oops! A small Problem Using this code would definitely work, and would be totally acceptable if it wasn’t for one, small tiny problem. To explain this problem, you’ll need to know about **AppDomain**. I’ll spare you my whimpy little explanation about what AppDomains are. Instead, I’ll quote the documentation on this one: “_Application domains, which are represented by **AppDomain** objects, provide isolation, unloading, and security boundaries for executing managed code._ _Multiple application domains can run in a single process; however, there is not a one-to-one correlation between application domains and threads. Several threads can belong to a single application domain, and while a given thread is not confined to a single application domain, at any given time, a thread executes in a single application domain._ _Application domains are created using the CreateDomain method. **AppDomain** instances are used to load and execute assemblies (Assembly). When an **AppDomain** is no longer in use, it can be unloaded._” I’ll add the following, which is relevant to our issue:  Any assembly that is loaded in the application, is loaded by default into the Application’s AppDomain. That’s not a bad thing in itself, until you consider the following fact: **You can’t directly unload an Assembly one you’ve loaded it into an AppDomain. The only way to unload it is to unload the AppDomain itself.** Several implications can be reasoned from this: 1)      Any DLL file that is checked for IPlugin conformance , will , from that moment on, be loaded in our application for the rest of the current AppDomain’s life (i.e. the application terminates) 2)      If there are lots of DLL files to go through this could mean some serious memory overhead for our application So the problem we face now is how to go through all the files in the directory, load assemblies, but still be able to unload them. The solution to this is pretty much what you’d expect: ·        We’ll create a new AppDomain, and load all the assemblies we are currently checking into **that**  AppDomain ·        Once we finished checking and found only those types that can be instantiated, we’ll dump the separate AppDomain ·        We’ll then load all the “good” types into our own AppDomain, thus saving ourselves from having to store ‘garbage’ in our application’s memory The way to create a new AppDomain is pretty simple: --- AppDomain domain = AppDomain.CreateDomain("PluginLoader");       PluginFinder finder =  (PluginFinder)domain.CreateInstanceFromAndUnwrap( Application.ExecutablePath,"Royo.PluggableApp.PluginFinder");       ArrayList FoundPluginTypes = finder.SearchPath(Environment.CurrentDirectory);       AppDomain.Unload(domain); --- --- ·        we instantiate as new **AppDomain** object using a static method on **AppDomain**. We pass in a user friendly name for this new AppDomain. ·        We create an instance of the **PluginFinder** class(which holds a method call ‘**SearchPath**()’) on the AppDomain. To do this we pass in (much like when using **Activator**) the name of the assembly in which the class resides, and the full name of the Class to instantiate. ·        What we get back from the last operation, is actually a **Proxy** that looks and behaves like our **PluginLoader** class, but is actually a mediator between our Application’s AppDomain and the new AppDomain we have just created. Now, From the discussion above, we know that from this moment on, any assemblies that are loaded by **PluginLoader** will actually be loaded inside our **new** AppDomain and not in our Application’s AppDomain. This means that after this class has done its job, we will be able to unload the new AppDomain, thus getting rid of the ‘garbage’ memory. ·        We call the ‘**SearchPath**()’ method on the **Proxy** to our real **PluginLoader** class over at the other AppDomain. We get back an ArrayList containing only those Types which conform to the IPlugin Interface. ·        We **Unload** the other AppDomain, since we have no more use for it. ·        Now we can move on and create those instances of the plugins just like in the previous article, using Activator. One of the cool things you'll get to see when you load and unload APpDomains is in the Output window of VS.NET (CTRL+ALT+O). You'll see this message: --- 'Domain71': Loaded 'c:\\windows\\microsoft.net\\framework\\v1.1.4322\\mscorlib.dll', No symbols loaded. 'PluginLoader': Loaded 'c:\\documents and settings\\roy\\my documents\\visual studio projects\\plugins\\pluggableapp\\bin\\debug\\pluggableapp.exe', Symbols loaded. The program '\[2408\] PluggableApp.exe: PluginLoader' has exited with code 0 (0x0). --- #### Important! Because we use a **Proxy** when we ‘talk’ between AppDomains, any object that will be instantiated into this proxy (in our case – **PluginLoader**) will have to be **serializable**. You must either make PluginLoader inherit from **MarshalByRefObject** or put the **\[Serializable\]** Attribute on that class. If you don’t you’ll get an exception: --- “Additional information: The type Royo.PluggableApp.PluginFinder in Assembly PluggableApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null is not marked as serializable.” --- --- #### A Helpful Debugging Tool Working with AppDomains and debugging exceptions that can arise from loading and unloading them can be a pretty error-prone task. A very helpful tool and is almost undocumented is the **fuslogvw.exe** tool – or “**Fusion Log Viewer**”. Fusion is the name of the loading subsystem. You can tell the tool to log Failures. If you get errors while loading Assemblies – refresh the view on this tool and you should get a specific log of the exception. ### Summery OK. So using AppDomains is not a walk in the park, but it’s fairly workable once you understand why everything works like it does. It is a **must** however, if you’re going to need to unload an assembly at run-time. One of the most frustrating things about this approach for me was that the first time I tested my plugin loader, running **without** loading and unloading AppDomains seemed to actually take **less** memory! It took  me some time to realize where the true power lies here: If your application will be re-loading and searching for plugins many times at runtime  - then the results are more acceptable. even though the AppDomain approach initially takes about 1MB more memory, it returns that investment over time (When the GC collects garbage), leaving your memory on pretty-much the same level(Assembly-wise), while the standard approach will increase your memory amount no matter what. For a more in-depth article about AppDomains Loading and Unloading – see the following article on MSDN(Which is where I got most of my material): [AppDomains and Dynamic Loading](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp05162002.asp?fram) – by Eric Gunnerson [Download the code for this article here](http://msdnaa.net/Legacy/Download.asp?Filename=Plugins_Dynamic_srcII.zip&ResID=2197&FileID=585). [This article has also been published on MSDNAA along with some other articles you might be interested in](http://msdnaa.net/search.aspx?SearchText=Roy&ResourceTypes=all&Mode=Search&Archives=False). ## More in Reflection [All posts in Reflection](https://osherove.com/blog/category/reflection) - Feb 24, 2007 ### [Writing real unit tests for your custom FxCop rules](https://osherove.com/blog/2007/2/24/writing-real-unit-tests-for-your-custom-fxcop-rules.html) - May 27, 2003 ### [Add run-time functionality to your application by providing a plug-in mechanism](https://osherove.com/blog/2003/5/27/add-run-time-functionality-to-your-application-by-providing.html) --- title: "About \"Personal\" Blogging" url: "https://osherove.com/blog/2003/5/30/about-quotpersonalquot-blogging.md" canonical: "https://osherove.com/blog/2003/5/30/about-quotpersonalquot-blogging.html" published: "2003-05-30T11:39:00" updated: "2003-05-30T11:39:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Scoble writes about repressing his writing urges in the face of corporate assimilation (How's that for a headline?). I must say that, although much differently then Scoble, I feel the same way about writing to my weblog…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About "Personal" Blogging By Roy Osherove May 30, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 30, 2003; technical details may be outdated. Scoble [writes](http://radio.weblogs.com/0001011/2003/05/29.html#a3139) about repressing his writing urges in the face of corporate assimilation (How's that for a headline?). I must say that, although much differently then Scoble, I feel the same way about writing to my weblog recently. My concerns span different aspects of life though. I‘m currently on the lookout for a job. That means before I write **anything** that could sound bad about my current job, or complain about stuff concerning my current job, I’ll think long and hard about it. Even though this is a “personal” blog, I can’t really write anything terribly personal. Sure, everyone has skeletons in their closets, and everyone would like to complain about their jobs every once in a while. But I can’t I fear my next employer would seek me out in **Google** and see stuff I’ve written about today’s job, and ask himself “Hmm_, Why didn’t he say that at the interview..??_”.  Of course, this is the sort of stuff you just don’t say at interviews, and the sort of stuff that shouldn’t even matter in interviews. If you have a bad day, that doesn’t have to ruin your chance at the next gig. Everyone goes through that. But I can’t bring myself to write about stuff like that. Not every potential employer would see it that way, either. It seems to me that in order to write truly personal blogs, you have to accept the fact that these can hurt you just as much as help you in the future. You’re basically exposing yourself, and are left out in the open for everyone to see (yes, even if it’s a .Net Weblog). The closer you work with people who will read your blog, the more distant you have to become when writing about stuff that concerns them in **any** way. Believe me, even when writing this post, I’m reading it through and through 3-4 times, and censoring myself. That sucks. But that’s life. Just like in real life, you can’t go to work and say anything that’s on your mind. You’d be fired before the day ends. Just like real life, you can't just talk about anyone to anyone about whatever you like. It seems that the more blogs will get mainstream and accepted as a means to find out information about people, the less “personal”( or more “fake”) they will become. Yep. I think we’re heading down a road which leads to the opposite of what blogs were all about when they started. At least for me. Scoble, I think that means you too.. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 4, 2003 ### [About Blogging Patterns](https://osherove.com/blog/2003/6/4/about-blogging-patterns.html) - Jun 2, 2003 ### [Medieval Times](https://osherove.com/blog/2003/6/2/medieval-times.html) - May 27, 2003 ### [BlogWear](https://osherove.com/blog/2003/5/27/blogwear.html) - May 18, 2003 ### [When Blogs Go Commercial](https://osherove.com/blog/2003/5/18/when-blogs-go-commercial.html) --- title: "Rent My ... What??" url: "https://osherove.com/blog/2003/5/30/rent-my-what.md" canonical: "https://osherove.com/blog/2003/5/30/rent-my-what.html" published: "2003-05-30T09:44:00" updated: "2003-05-30T09:44:00" tags: ["Off Topic"] author: "Roy Osherove" description: "What the hell..?? Am I mistaken or is that Chris Pirillo?? That's the most innovative money making scheme I've see so far (Although a blonde cheer leader could probably do even better..;)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Rent My ... What?? By Roy Osherove May 30, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 30, 2003; technical details may be outdated. What the hell..?? Am I mistaken or is [that](http://www.rentmychest.com/) Chris Pirillo?? That's the most innovative money making scheme I've see so far (Although a blonde cheer leader could probably do even better..;) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Jun 1, 2003 ### [I'm a Configuration Manager... I Think.](https://osherove.com/blog/2003/6/1/im-a-configuration-manager-i-think.html) - May 30, 2003 ### [About "Personal" Blogging](https://osherove.com/blog/2003/5/30/about-quotpersonalquot-blogging.html) - May 30, 2003 ### [404 Hall of Fame](https://osherove.com/blog/2003/5/30/404-hall-of-fame.html) - May 30, 2003 ### [Donny Mack Reveals Hidden Developer Secrets](https://osherove.com/blog/2003/5/30/donny-mack-reveals-hidden-developer-secrets.html) --- title: "404 Hall of Fame" url: "https://osherove.com/blog/2003/5/30/404-hall-of-fame.md" canonical: "https://osherove.com/blog/2003/5/30/404-hall-of-fame.html" published: "2003-05-30T08:02:00" updated: "2003-05-30T08:02:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Have you ever thought of giving your 404 (Page not Foud) page a different theme? browse the 404 hall of fame for some neat ideas.. I liked this one and this one :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 404 Hall of Fame By Roy Osherove May 30, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 30, 2003; technical details may be outdated. Have you ever thought of giving your 404 (Page not Foud) page a different theme? browse the [404 hall of fame](http://www.mindspring.com/~isixtyfive/404page/404_fame.html) for some neat ideas.. I liked [this one](http://www.spacegirl.org/fjkdjfkd.html) and [this one](http://cold-dead-fish.com/404.asp) :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 30, 2003 ### [About "Personal" Blogging](https://osherove.com/blog/2003/5/30/about-quotpersonalquot-blogging.html) - May 30, 2003 ### [Rent My ... What??](https://osherove.com/blog/2003/5/30/rent-my-what.html) - May 30, 2003 ### [Donny Mack Reveals Hidden Developer Secrets](https://osherove.com/blog/2003/5/30/donny-mack-reveals-hidden-developer-secrets.html) - May 29, 2003 ### [About Knowledge Blocks](https://osherove.com/blog/2003/5/29/about-knowledge-blocks.html) --- title: "Improving Typed Datasets" url: "https://osherove.com/blog/2003/5/30/improving-typed-datasets.md" canonical: "https://osherove.com/blog/2003/5/30/improving-typed-datasets.html" published: "2003-05-30T04:23:00" updated: "2003-05-30T04:23:00" tags: [".Net Original"] author: "Roy Osherove" description: "Shawn Wildermuth has an article over at OnDotNet which further illuminates some of the problems with Typed Datasets, and some of the solutions to those problems. It focuses mainly on several annotations in the XSD…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Improving Typed Datasets By Roy Osherove May 30, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 30, 2003; technical details may be outdated. [Shawn Wildermuth](http://www.ondotnet.com/pub/au/1048) has an [article](http://www.ondotnet.com/pub/a/dotnet/2003/03/31/typeddatasetannotations.html) over at [OnDotNet](http://www.ondotnet.com/) which further illuminates some of the problems with Typed Datasets, and some of the solutions to those problems. It focuses mainly on several annotations in the XSD schemas . If you read [my posts](http://weblogs.asp.net/rosherove/stories/956.aspx) about Typed Datasets, [Shawn's article](http://www.ondotnet.com/pub/a/dotnet/2003/03/31/typeddatasetannotations.html) is a good continuum for the series. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Jun 8, 2003 ### [Amazon .Net books Feed](https://osherove.com/blog/2003/6/8/amazon-net-books-feed.html) - May 30, 2003 ### [\[New Article\] Support Application Plugins 2 - Dynamic Plugin Search](https://osherove.com/blog/2003/5/30/new-article-support-application-plugins-2-dynamic-plugin-sea.html) - May 28, 2003 ### [Performance Tuning and Optimizing ASP.NET Application](https://osherove.com/blog/2003/5/28/performance-tuning-and-optimizing-aspnet-application.html) - May 28, 2003 ### [Create More Readable Code By Interface Prefixes](https://osherove.com/blog/2003/5/28/create-more-readable-code-by-interface-prefixes.html) --- title: "Scott Branches" url: "https://osherove.com/blog/2003/5/30/scott-branches.md" canonical: "https://osherove.com/blog/2003/5/30/scott-branches.html" published: "2003-05-30T04:03:00" updated: "2003-05-30T04:03:00" tags: [".NetWeblogs Site"] author: "Roy Osherove" description: "doh! How did I not notice this before? at the bottom of dotNetJunkies Blogs you'll see this litlle icon: Powered by: Wow Scott. When you said you were branching out, You could have mentioned this little tidbit :) (Again…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scott Branches By Roy Osherove May 30, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) **Historical article** · Originally published May 30, 2003; technical details may be outdated. doh!  How did  I not notice this before? at the bottom of dotNetJunkies Blogs you'll see this litlle icon: _Powered by: _[_![](https://osherove.com/img/wb/3cb9beb0_www.dotnetjunkies.com_webLog_images_100x30_Logo.gif)_](http://aspnetweblog.com/)  Wow Scott. When you [said](http://aspnetweblog.com/posts/7773.aspx) you were branching out, You could have mentioned this little tidbit :) (Again - If this is old news - sorry.) ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - Jul 29, 2003 ### [.NetWeblogs coolness achieved](https://osherove.com/blog/2003/7/29/netweblogs-coolness-achieved.html) - May 30, 2003 ### [New Skin, New Host...](https://osherove.com/blog/2003/5/30/new-skin-new-host.html) - May 30, 2003 ### [Congratulations ScottW](https://osherove.com/blog/2003/5/30/congratulations-scottw.html) - May 15, 2003 ### [Blog style change](https://osherove.com/blog/2003/5/15/blog-style-change.html) --- title: "Donny Mack Reveals Hidden Developer Secrets" url: "https://osherove.com/blog/2003/5/30/donny-mack-reveals-hidden-developer-secrets.md" canonical: "https://osherove.com/blog/2003/5/30/donny-mack-reveals-hidden-developer-secrets.html" published: "2003-05-30T03:57:00" updated: "2003-05-30T03:57:00" tags: ["Off Topic"] author: "Roy Osherove" description: "\" Posted By: Donny Mack on 5/29/2003 6:58:00 AM Ok, we just launched (finally) version 3.0 of dotnetjunkies. It is past 5am my time, and I've found lots of buts, but screw it - we're beta testing this baby live. Ok, off…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Donny Mack Reveals Hidden Developer Secrets By Roy Osherove May 30, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 30, 2003; technical details may be outdated. "_**Posted By: Donny Mack **on 5/29/2003 6:58:00 AMOk, we just launched (finally) version 3.0 of dotnetjunkies. It is past 5am my time, and I've found lots of buts, but screw it - we're beta testing this baby live. Ok, off to bed. More tomorrow._ " \[via [DotNetJunkies Weblog](http://dotnetjunkies.com/weblog/donnymack/posts/147.aspx)\] Spoken like a true developer... ;) **p.s** The new dotnetJunkis site looks great! I have to wonder if I'd want to join it though. I think I should concentrate only on one blog per human brain. othertise the outcome might not be satisfactory.... **p.s 2** Is there an HTML editing control that performs Spell checking? writing in WORD and pating into the browser seems a bit cumbersome to me when dealing with short posts (that means this post was not spell checked, so be gentle :) **p.s 3** Have you noticed? Now that Sam Gentile has his weblog [elsewhere](http://samgentile.com/blog/default.aspx), I am currently the most active blogger on the list in the main .NetWeblogs [Page](http://weblogs.asp.net/). **Problem**: I have no idea if that's a good thing or a bad thing ;) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 30, 2003 ### [Rent My ... What??](https://osherove.com/blog/2003/5/30/rent-my-what.html) - May 30, 2003 ### [404 Hall of Fame](https://osherove.com/blog/2003/5/30/404-hall-of-fame.html) - May 29, 2003 ### [About Knowledge Blocks](https://osherove.com/blog/2003/5/29/about-knowledge-blocks.html) - May 29, 2003 ### [About Blogging Etiquette and Inline Product Promotions](https://osherove.com/blog/2003/5/29/about-blogging-etiquette-and-inline-product-promotions.html) --- title: "Congratulations ScottW" url: "https://osherove.com/blog/2003/5/30/congratulations-scottw.md" canonical: "https://osherove.com/blog/2003/5/30/congratulations-scottw.html" published: "2003-05-30T03:36:00" updated: "2003-05-30T03:36:00" tags: [".NetWeblogs Site"] author: "Roy Osherove" description: "Congratulations to ScottW for making this place what it is :). I wake up this morning (and of course, the first thing I do is iopen up the computer - GEEK) and see that .NetWeblogs moved to a different address!?! So,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Congratulations ScottW By Roy Osherove May 30, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) **Historical article** · Originally published May 30, 2003; technical details may be outdated. Congratulations to [ScottW](http://aspnetweblog.com/posts/7773.aspx) for making this place what it is :). I wake up this morning (and of course, the first thing I do is iopen up the computer - GEEK) and see that .NetWeblogs moved to a different address!?! So, now that we are hosted at Microsoft, does this mean soon we'll all be assimilated? ;) Another thing - How come ScottW is not an MVP?(Or he is and I'm just not connected to the planet..) ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - May 30, 2003 ### [New Skin, New Host...](https://osherove.com/blog/2003/5/30/new-skin-new-host.html) - May 30, 2003 ### [Scott Branches](https://osherove.com/blog/2003/5/30/scott-branches.html) - May 15, 2003 ### [Blog style change](https://osherove.com/blog/2003/5/15/blog-style-change.html) - May 10, 2003 ### [Mort Banner - Revised](https://osherove.com/blog/2003/5/10/mort-banner-revised.html) --- title: "About Knowledge Blocks" url: "https://osherove.com/blog/2003/5/29/about-knowledge-blocks.md" canonical: "https://osherove.com/blog/2003/5/29/about-knowledge-blocks.html" published: "2003-05-29T12:38:00" updated: "2003-05-29T12:38:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I don't know about you, but whenever I see a technology book lying in front of me, I feel, well, almost like butterflies are playing soccer in my stomach. Really! This may turn out the geekiest post I've written so far,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About Knowledge Blocks By Roy Osherove May 29, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 29, 2003; technical details may be outdated. I don't know about you, but whenever I see a technology book lying in front of me, I feel, well, almost like butterflies are playing soccer in my stomach. Really! This may turn out the geekiest post I've written so far, but I feel like rambling about love of technology, and this seems like the place ;) Looking at a book that I haven't  yet read, I always feel like there's this small(yet sometimes heavy) block of pure knowledge lying on the table in front of me, and all I have to do is **read** it, and then I'll **know** it. Something like in the matrix where the girl says "_Tank, I need to learn how to fly a helicopter_" and then she squints a bit, and \*_wham_\*. She knows it. Well, kinda like that, only a slower process. **But really**. Looking at a book and the thought that I can just read it and learn more cool stuff, enrich my knowledge, that almost makes me feel invincible (in a geeky developer sort of way).  Granted, I sometimes take on more than I can chew, but the good thing is that you keep the book and then digest it over time. Ingo Rammer's "**Advanced .Net Remoting**" book, is one of those for me. It's divided into two parts, one tells you how to do remoting, and do it good, in-depth. The second part tells you how to **extend** remoting. It's all about Sinks, contexts, formatters and configuration. Definitely a tough read. Even though I bought it more then 4 months ago, I;ve read the first half in about a week, and paused. Yeah, I'm only half way through it. Just in the last couple of days am I starting to show some progress. I feel more "ready" for these subjects, having worked with the .Net framework from a deeper prospective. All this excitement about technology books leads to the fact that I can never just "walk into" a book store that contains tech books, buy something, and get the hell out. No sir. I do try, but the moment I lay my eyes on those bookshelves, oh man – I'm gone J I can just browse through them for hours on end, looking at this, looking at that. A kid in a candy store. Hmm.. Now that I think about it, I'm the same way about DVD libraries! I always get to the point the sellers start looking at me funny, but I'll take my time. Having to pick just one movie out of all the cool titles available,  and making sure its just right for both my wife and me to watch together - \*shiver\*. Hmm.. Now that I think about it some more, I'm the same way about computer shops, TV shops, Stereo and home cinema shops. Gosh. It seems like I'm a totally annoying person to be with around anything that has to do with technology and gadgets...;) Fortunately, I have a friend or two who are exactly the same way. Heh. The fact that we can go to any store that has something concerning technology in it, and just spend there hours, together, without exchanging more than 10 words between us says it all J Its amazing how guys get together and can just shut-up for three hours. Watching a game, having a bud – you know the drill. In my case though, it's watching a **video** game, having some diet coke.  **You** know the drill .. And just so this post will have something to do with .Net: **.Net rocks ;)** ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 30, 2003 ### [404 Hall of Fame](https://osherove.com/blog/2003/5/30/404-hall-of-fame.html) - May 30, 2003 ### [Donny Mack Reveals Hidden Developer Secrets](https://osherove.com/blog/2003/5/30/donny-mack-reveals-hidden-developer-secrets.html) - May 29, 2003 ### [About Blogging Etiquette and Inline Product Promotions](https://osherove.com/blog/2003/5/29/about-blogging-etiquette-and-inline-product-promotions.html) - May 27, 2003 ### [PeopleWare](https://osherove.com/blog/2003/5/27/peopleware.html) --- title: "About Blogging Etiquette and Inline Product Promotions" url: "https://osherove.com/blog/2003/5/29/about-blogging-etiquette-and-inline-product-promotions.md" canonical: "https://osherove.com/blog/2003/5/29/about-blogging-etiquette-and-inline-product-promotions.html" published: "2003-05-29T05:30:00" updated: "2003-05-29T05:30:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Last night I got a comment on one of my posts . My post basically pointed to a rant by Joel on Software about prototyping habits, and also points out the book he recommends. Here is the comment I got: \" Richard Posted @…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About Blogging Etiquette and Inline Product Promotions By Roy Osherove May 29, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 29, 2003; technical details may be outdated. Last night I got a comment on [one of my posts](http://dotnetweblogs.com/rosherove/posts/7702.aspx). My post basically pointed to a [rant](http://www.joelonsoftware.com/news/20030516.html) by _[Joel on Software](http://www.joelonsoftware.com/)_ about prototyping habits, and also points out the book he recommends. Here is the comment I got: _"__Richard Posted @ 5/28/2003 1:17 PM I really like some of the things you have to say in your blog, but why bother putting references to stuff Joel recommends in yours (other than to get the Amazon commission). If I want to know what Joel recommends, I'll subscribe to his blog (which I do)?"_ Although I've answered Richard's question as an inline comment, I felt the need to discuss this in a separate post, since I've been thinking about this thing for the past night or so.   My reply to Richard was composed of several points: - Not all the people who read my blog read Joel's (I know of at least two) - I only recommend books I would buy myself, hence I feel I lose no credibility when I get commissions from books I refer to - I would rather have a book recommendation by a developer like me than from a commercial book site. I don’t mind that developer getting commission for my purchase as long as I know the recommendation is legit These points bring on a much broader point to me: 1. Does the fact that I, as a personal blogger, promote books for commission, hurt my credibility? 2. Should personal bloggers never promote stuff for profit? 3. If so, what are the ethics for this process? Here's what I think: 1.      Only when certain conditions are met: a.       It is likely that a certain promotion is based solely on profit, and not on personal choice of favorite b.      Or, Promotion, even though for profit, is represented as a "personal recommendation" and not as a "on the side" ad 2.      No. Bloggers should be able to make a profit on their efforts, as long as it stands to a certain ethical code of conduct 3.      I can see several points here: a.       Any promotion that is not a personal recommendation should be displayed in a separate part of the display area – A banner on top,bottom or side, but not as inline text where it could be perceived as a personal recommendation b.      If a promotion is a personal recommendation then there has to be a way for the reader to know that this link is somehow sponsored is commissioned. This should be an easy to see text or banner saying that "I am an affiliate of X" or "All book recommendations here are part of an affiliate program" c.       Never hide the fact that you are promoting **anything**. Distrust is a deadly and infectious disease There are probably more. Perhaps we should start making out a draft for a "blogger code of conduct" of some sort. Sort of amendments for the blogging community. What do you think? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 30, 2003 ### [Donny Mack Reveals Hidden Developer Secrets](https://osherove.com/blog/2003/5/30/donny-mack-reveals-hidden-developer-secrets.html) - May 29, 2003 ### [About Knowledge Blocks](https://osherove.com/blog/2003/5/29/about-knowledge-blocks.html) - May 27, 2003 ### [PeopleWare](https://osherove.com/blog/2003/5/27/peopleware.html) - May 27, 2003 ### [BlogWear](https://osherove.com/blog/2003/5/27/blogwear.html) --- title: "Lots of shell shortcuts" url: "https://osherove.com/blog/2003/5/29/lots-of-shell-shortcuts.md" canonical: "https://osherove.com/blog/2003/5/29/lots-of-shell-shortcuts.html" published: "2003-05-29T04:51:00" updated: "2003-05-29T04:51:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "Lots of Shell shortcuts (definitive guide?) can be found here: http://orbital.encapsule.com/resources/howto/windows-howto/cellitemwrapper0001.htm Keyboard junkie - yes I am." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Lots of shell shortcuts By Roy Osherove May 29, 2003 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published May 29, 2003; technical details may be outdated. Lots of Shell shortcuts (definitive guide?) can be found here: [http://orbital.encapsule.com/resources/howto/windows-howto/cellitemwrapper0001.htm](http://orbital.encapsule.com/resources/howto/windows-howto/cellitemwrapper0001.htm) Keyboard junkie - yes I am. ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - Jun 22, 2003 ### [A Little Macro To Automate Creating Connection Strings](https://osherove.com/blog/2003/6/22/a-little-macro-to-automate-creating-connection-strings.html) - Jun 17, 2003 ### [.Net Shortcuts + Automate GAC and COM operations using this Cool Add-in](https://osherove.com/blog/2003/6/17/net-shortcuts-automate-gac-and-com-operations-using-this-coo.html) - May 20, 2003 ### [UI Threading - A Very Simple Solution](https://osherove.com/blog/2003/5/20/ui-threading-a-very-simple-solution.html) - May 19, 2003 ### [About Productivity](https://osherove.com/blog/2003/5/19/about-productivity.html) --- title: "Paper Prototyping" url: "https://osherove.com/blog/2003/5/28/paper-prototyping.md" canonical: "https://osherove.com/blog/2003/5/28/paper-prototyping.html" published: "2003-05-28T15:25:00" updated: "2003-05-28T15:25:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Joel On Software rants about prototypes , and recommeds this book: Paper Prototyping" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Paper Prototyping By Roy Osherove May 28, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 28, 2003; technical details may be outdated. Joel On Software [rants about prototypes](http://www.joelonsoftware.com/news/20030516.html), and recommeds this book: [Paper Prototyping](https://www.amazon.com/exec/obidos/ASIN/1558608702/iserializable-20) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 31, 2003 ### [Another Cool Dynamic Loading Article](https://osherove.com/blog/2003/5/31/another-cool-dynamic-loading-article.html) - May 30, 2003 ### [Remoting Events May Break in V1.1](https://osherove.com/blog/2003/5/30/remoting-events-may-break-in-v11.html) - May 28, 2003 ### [SP/Invoke -- Stored Procedure Invocation Code Generator for VB, C# and JScript.NET](https://osherove.com/blog/2003/5/28/spinvoke-stored-procedure-invocation-code-generator-for-vb-c.html) - May 27, 2003 ### [Good Stuff](https://osherove.com/blog/2003/5/27/good-stuff.html) --- title: "SP/Invoke -- Stored Procedure Invocation Code Generator for VB, C# and JScript.NET" url: "https://osherove.com/blog/2003/5/28/spinvoke-stored-procedure-invocation-code-generator-for-vb-c.md" canonical: "https://osherove.com/blog/2003/5/28/spinvoke-stored-procedure-invocation-code-generator-for-vb-c.html" published: "2003-05-28T14:55:00" updated: "2003-05-28T14:55:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "\" SP/Invoke generates code to allow C#, VB or JScript.NET programmers to invoke SQL Server stored procedures as if they were static methods on CLR classes. Posted on the Code Project. Created by Simon Wilson.\" [via…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SP/Invoke -- Stored Procedure Invocation Code Generator for VB, C\# and JScript.NET By Roy Osherove May 28, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 28, 2003; technical details may be outdated. > "[_SP/Invoke_](http://www.codeproject.com/dotnet/spinvoke.asp) _generates code to allow C#, VB or JScript.NET programmers to invoke SQL Server stored procedures as if they were static methods on CLR classes._ _Posted on the Code Project. Created by Simon Wilson."_ \[via [Sanjay's Coding Tips](http://sastools.com/b2)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 30, 2003 ### [Remoting Events May Break in V1.1](https://osherove.com/blog/2003/5/30/remoting-events-may-break-in-v11.html) - May 28, 2003 ### [Paper Prototyping](https://osherove.com/blog/2003/5/28/paper-prototyping.html) - May 27, 2003 ### [Good Stuff](https://osherove.com/blog/2003/5/27/good-stuff.html) - May 26, 2003 ### [Dynamic Invocation with Reflection.Emit](https://osherove.com/blog/2003/5/26/dynamic-invocation-with-reflectionemit.html) --- title: "Performance Tuning and Optimizing ASP.NET Application" url: "https://osherove.com/blog/2003/5/28/performance-tuning-and-optimizing-aspnet-application.md" canonical: "https://osherove.com/blog/2003/5/28/performance-tuning-and-optimizing-aspnet-application.html" published: "2003-05-28T09:44:00" updated: "2003-05-28T09:44:00" tags: [".Net Original"] author: "Roy Osherove" description: "Just found out this book was recently published: Performance Tuning and Optimizing ASP.NET Application I know my wife, Tal, could use it in her project...." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Performance Tuning and Optimizing ASP.NET Application By Roy Osherove May 28, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 28, 2003; technical details may be outdated. Just found out this book was recently published: [Performance Tuning and Optimizing ASP.NET Application](https://www.amazon.com/exec/obidos/ASIN/1590590724/iserializable-20) I know my wife, Tal, could use it in her project.... ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 30, 2003 ### [\[New Article\] Support Application Plugins 2 - Dynamic Plugin Search](https://osherove.com/blog/2003/5/30/new-article-support-application-plugins-2-dynamic-plugin-sea.html) - May 30, 2003 ### [Improving Typed Datasets](https://osherove.com/blog/2003/5/30/improving-typed-datasets.html) - May 28, 2003 ### [Create More Readable Code By Interface Prefixes](https://osherove.com/blog/2003/5/28/create-more-readable-code-by-interface-prefixes.html) - May 28, 2003 ### [.Net Developer Journal May Issue PDF download](https://osherove.com/blog/2003/5/28/net-developer-journal-may-issue-pdf-download.html) --- title: "Create More Readable Code By Interface Prefixes" url: "https://osherove.com/blog/2003/5/28/create-more-readable-code-by-interface-prefixes.md" canonical: "https://osherove.com/blog/2003/5/28/create-more-readable-code-by-interface-prefixes.html" published: "2003-05-28T08:17:00" updated: "2003-05-28T08:17:00" tags: [".Net Original"] author: "Roy Osherove" description: "Here's something that might help write more readable code: When defining a class that implements an interface, instead of just declaring the interface overrides like so: public class MyCustomHandler :…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Create More Readable Code By Interface Prefixes By Roy Osherove May 28, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 28, 2003; technical details may be outdated. Here's something that might help write more readable code: When defining a class that implements an interface, instead of just declaring the interface overrides like so:       public class MyCustomHandler:IConfigurationSectionHandler       {                       public object Create(object parent, object configContext, System.Xml.XmlNode section)             {return null;}       } you can explicitly prefix the name of the method with the name of the interface and a dot, and removing "public" modifiers from the signature, thus making it look like this:       public class MyCustomHandler:IConfigurationSectionHandler       {                       object IConfigurationSectionHandler.Create(object parent, object configContext, System.Xml.XmlNode section)             {                   return null;             }       } This makes for a more readable and explicit code, and states exactly which methods belong to what interface. It also saves writing comments for when their really needed. Could be a great way to show coding examples that do not use #region fields (not to mention that some coders don't use VS.NET, and their IDE does not recognize #region fields - this makes the code \*tons\* more readable) another thing about this: If I write object IConfigurationSectionHandler. in this class I'll automatically get a drop-down of the methods of IConfigurationSectionHandler. This **works in VS.Net 2002(!).** unfortunatly, it does not stuf out the methods parameters as well, but it's a nice tidbit to know...  ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 30, 2003 ### [Improving Typed Datasets](https://osherove.com/blog/2003/5/30/improving-typed-datasets.html) - May 28, 2003 ### [Performance Tuning and Optimizing ASP.NET Application](https://osherove.com/blog/2003/5/28/performance-tuning-and-optimizing-aspnet-application.html) - May 28, 2003 ### [.Net Developer Journal May Issue PDF download](https://osherove.com/blog/2003/5/28/net-developer-journal-may-issue-pdf-download.html) - May 28, 2003 ### [About Dynamic Plug-in Discovery And AppDomains](https://osherove.com/blog/2003/5/28/about-dynamic-plug-in-discovery-and-appdomains.html) --- title: ".Net Developer Journal May Issue PDF download" url: "https://osherove.com/blog/2003/5/28/net-developer-journal-may-issue-pdf-download.md" canonical: "https://osherove.com/blog/2003/5/28/net-developer-journal-may-issue-pdf-download.html" published: "2003-05-28T08:07:00" updated: "2003-05-28T08:07:00" tags: [".Net Original"] author: "Roy Osherove" description: "The May Issue of .Net Developer Journal is here , and you can download the whole paper in PDF (5.x Megs) right here . (Free) Coolness... I don't know how it is in your company, but in mine we have almost no magazine…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Developer Journal May Issue PDF download By Roy Osherove May 28, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 28, 2003; technical details may be outdated. The May Issue of .Net Developer Journal is [here](http://www.sys-con.com/dotnet/archivesc.cfm?volume=01&Issue=05), and you can download the whole paper in PDF (5.x Megs) [right here](http://www.sys-con.com/dotnet/pdf/mind.pdf). (Free) Coolness... I don't know how it is in your company, but in mine we have almost no magazine subscriptions (no money..) so one has to scrape whatever he can from the web. Enter [MSDN magazine](http://msdn.microsoft.com/msdnmag) \- just read the whole thing online. Free! Now .Net Dev Journal is added to my list as well... ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 28, 2003 ### [Performance Tuning and Optimizing ASP.NET Application](https://osherove.com/blog/2003/5/28/performance-tuning-and-optimizing-aspnet-application.html) - May 28, 2003 ### [Create More Readable Code By Interface Prefixes](https://osherove.com/blog/2003/5/28/create-more-readable-code-by-interface-prefixes.html) - May 28, 2003 ### [About Dynamic Plug-in Discovery And AppDomains](https://osherove.com/blog/2003/5/28/about-dynamic-plug-in-discovery-and-appdomains.html) - May 27, 2003 ### [New Article: Extend Your Application With Custom Plugins](https://osherove.com/blog/2003/5/27/new-article-extend-your-application-with-custom-plugins.html) --- title: "About Dynamic Plug-in Discovery And AppDomains" url: "https://osherove.com/blog/2003/5/28/about-dynamic-plug-in-discovery-and-appdomains.md" canonical: "https://osherove.com/blog/2003/5/28/about-dynamic-plug-in-discovery-and-appdomains.html" published: "2003-05-28T04:18:00" updated: "2003-05-28T04:18:00" tags: [".Net Original"] author: "Roy Osherove" description: "I've gotten several comments on my Plug-ins article which was published both here and on CodeProject . One of them mentions the obvious missing feature for a plugin architecture - Dynamically discovering plugins without…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About Dynamic Plug-in Discovery And AppDomains By Roy Osherove May 28, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 28, 2003; technical details may be outdated. I've gotten several comments on my [Plug-ins article](http://dotnetweblogs.com/rosherove/story/7610.aspx) which was published both [here](http://dotnetweblogs.com/rosherove/story/7610.aspx) and on [CodeProject](http://www.codeproject.com/csharp/Plugins.asp). One of them mentions the obvious missing feature for a plugin architecture - Dynamically discovering plugins without the need for configuration files. In essence, what you would do is go through the folder in which application is located, and search for assemblies with types that implement the "IPlugin" interface. One problem here - In order to check an assembly, you must load it; assemblies can't be unloaded without unloading the whole AppDomain in which they reside .If you unload your own appDomain - you're basically shutting down you application. problem. A way to resolve this would be to load a separate AppDomain and load the searched assemblies into that one. Then make a separate list of the assemblies that match your criteria and only load those into a seperate AppDomain. This gives you 2 advantages: 1.  You can dynamically search for added or changed plugins at runtime 2.  You don't save 'garbage' assemblies at run-time. I'll try to implement this solution in the coming days. Meanwhile, here's a good MSDN article about loading and unloading AppDomains. # [AppDomains and Dynamic Loading](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp05162002.asp?fram) I'm also thinking of purchasing this book: [C# Threading Handbook](https://www.amazon.com/exec/obidos/ASIN/1861008295/qid%3D1054106350/sr%3D11-1/ref%3Dsr%5F11%5F1/iserializable-20) Anyone know about it? Other recommendations? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 28, 2003 ### [Create More Readable Code By Interface Prefixes](https://osherove.com/blog/2003/5/28/create-more-readable-code-by-interface-prefixes.html) - May 28, 2003 ### [.Net Developer Journal May Issue PDF download](https://osherove.com/blog/2003/5/28/net-developer-journal-may-issue-pdf-download.html) - May 27, 2003 ### [New Article: Extend Your Application With Custom Plugins](https://osherove.com/blog/2003/5/27/new-article-extend-your-application-with-custom-plugins.html) - May 26, 2003 ### [.Net Debugging Resources](https://osherove.com/blog/2003/5/26/net-debugging-resources-1.html) --- title: "PeopleWare" url: "https://osherove.com/blog/2003/5/27/peopleware.md" canonical: "https://osherove.com/blog/2003/5/27/peopleware.html" published: "2003-05-27T15:03:00" updated: "2003-05-27T15:03:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I've been reading Demarco and Lister's PeopleWare again. It awes me every time I read it, the amount of insight in this book. Reading it 3 years ago totally changed my point of view on a lot of things, and I never…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # PeopleWare By Roy Osherove May 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 27, 2003; technical details may be outdated. I've been reading Demarco and Lister's [PeopleWare](https://www.amazon.com/exec/obidos/ASIN/0932633439/iserializable-20) again. It awes me every time I read it, the amount of insight in this book. Reading it 3 years ago totally changed my point of view on a lot of things, and I never turned back. **Peopleware: Productive Projects and Teams**       Buy it, borrow it, whatever.  just read it if you haven't.. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 29, 2003 ### [About Knowledge Blocks](https://osherove.com/blog/2003/5/29/about-knowledge-blocks.html) - May 29, 2003 ### [About Blogging Etiquette and Inline Product Promotions](https://osherove.com/blog/2003/5/29/about-blogging-etiquette-and-inline-product-promotions.html) - May 27, 2003 ### [BlogWear](https://osherove.com/blog/2003/5/27/blogwear.html) - May 26, 2003 ### [LinkedIn](https://osherove.com/blog/2003/5/26/linkedin.html) --- title: "New Article: Extend Your Application With Custom Plugins" url: "https://osherove.com/blog/2003/5/27/new-article-extend-your-application-with-custom-plugins.md" canonical: "https://osherove.com/blog/2003/5/27/new-article-extend-your-application-with-custom-plugins.html" published: "2003-05-27T13:52:00" updated: "2003-05-27T13:52:00" tags: [".Net Original"] author: "Roy Osherove" description: "My latest article deals with the design and implementation of a simple architecture to allow creating applications that can be extended via custom plug-ins. Add run-time functionality to your application by providing a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Article: Extend Your Application With Custom Plugins By Roy Osherove May 27, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 27, 2003; technical details may be outdated. My latest article deals with the design and implementation of a simple architecture to allow creating applications that can be extended via custom plug-ins. [Add run-time functionality to your application by providing a plug-in mechanism](http://dotnetweblogs.com/rosherove/story/7610.aspx) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 28, 2003 ### [.Net Developer Journal May Issue PDF download](https://osherove.com/blog/2003/5/28/net-developer-journal-may-issue-pdf-download.html) - May 28, 2003 ### [About Dynamic Plug-in Discovery And AppDomains](https://osherove.com/blog/2003/5/28/about-dynamic-plug-in-discovery-and-appdomains.html) - May 26, 2003 ### [.Net Debugging Resources](https://osherove.com/blog/2003/5/26/net-debugging-resources-1.html) - May 26, 2003 ### [Microsoft Internet Controls Life Saver](https://osherove.com/blog/2003/5/26/microsoft-internet-controls-life-saver.html) --- title: "Add run-time functionality to your application by providing a plug-in mechanism" url: "https://osherove.com/blog/2003/5/27/add-run-time-functionality-to-your-application-by-providing.md" canonical: "https://osherove.com/blog/2003/5/27/add-run-time-functionality-to-your-application-by-providing.html" published: "2003-05-27T10:30:00" updated: "2003-05-27T10:30:00" tags: ["Reflection"] author: "Roy Osherove" description: "· Download source files - 102 Kb · Download demo project - 10 Kb Issues covered: o Using the Activator Class o Using custom configuration sections by implementing IConfigurationSectionHandler o Designing a simple…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Add run-time functionality to your application by providing a plug-in mechanism By Roy Osherove May 27, 2003 In [Reflection](https://osherove.com/blog/category/reflection) **Historical article** · Originally published May 27, 2003; technical details may be outdated. ## ·  [Download source files - 102 Kb](http://www.codeproject.com/csharp/Plugins/Plugins_src.zip) ## ·  [Download demo project - 10 Kb](http://www.codeproject.com/csharp/Plugins/Plugins_demo.zip) ### Issues covered: o       _Using the Activator Class_ o       _Using custom configuration sections by implementing **IConfigurationSectionHandler**_ o       _Designing a simple Plug-in architecture_ ### What you’ll need: ·        **VS.Net 2003** (If you have 2002, use [this utility](http://www.codeproject.com/useritems/VSConvert.asp) to convert the files to the previous format) ### Why do we need a plug-in framework for our application? People usually add plug-in support in their applications for the following reasons: ·        We want to allow our application to be extended with more functionality without the need to re-compile and distribute it to customers ·        We need to add functionality on site ·        We need to fix a bug on site ·        The business rules for the application change frequently, or new rules are added frequently ### Case Study In our case study, we will build a very simple text editor, composed of only one form. The only thing that text editor can do is display text in a single textbox in the middle of the form. Once this application is ready, we will create a simple plug-in which will be added to the application. That plug-in will be able to read the text currently in the textbox , parse it for valid email addresses, and return a string containing only those emails. We will then put this text inside the text box. As you can see, there are a number of “unknowns” in our case study: \-         How do we find the plug-in from within the application? \-         How does the plug-in know what text is in the text box? \-         How do we activate this plug-in? We will answer all of these questions when we encounter them as we build the solution. #### Step 1 – Create a simple text editor OK. I won’t bore you with the details of this. It’s all in the source code download. Just a simple form showing a lump of text. I’ll assume from this moment that you have created this simple application. #### Step 2 – Create the Plug-in SDK Now that we have an application, we want it to be able to talk with external plug-ins. How do we make this happen? The solution is for the application to work against a published interface – a set of public members and methods which will be implemented by all custom plug-ins. We’ll call this interface **IPlugin**.  From now on, any developer that would like to create a plug-in for our application will have to implement this interface. This interface will be located at a shared library, which both our application and any custom plug-ins will reference. Let’s define this interface then. We need very little data from our simple plug-in  - its name , and a method which would instruct it to perform a generic action based upon the data in our application.       public interface IPlugin       {             string Name{get;}             void PerformAction(IPluginContext context);       } The code is pretty straight forward, but I’ll explain why I’m sending an IPluginContext interface to the PerformAction. The reason I’m sending an interface rather than just a string is because I want to allow more flexibility in the matter of what object will I be able to send. Currently, this interface is very simple: public interface IPluginContext       {             string CurrentDocumentText{get;set;}       } Now, all I have to do is implement this interface in one or more objects, and send this to any plug-in to receive a result. In the future this will allow me to chane the string of not just a textbox, but any object I like. #### Step 3 – Creating our custom Plug-in All we have to do now is : ·        create a separate class library object ·        Create a class that implements the IPlugin Interface ·        Compile that class and place it in the **same folder** as out main application ##### _Here’s the EmailPlugin Class, in full:_ public class EmailPlugin:IPlugin       {             public EmailPlugin()             {             }             /// The single point of entry to our plugin             /// Acepts an IPluginContext object /// which holds the current             /// context of the running editor.             /// It then parses the text found inside the editor             /// and changes it to reflect any /// email addresses that are found.             public void PerformAction(IPluginContext context)             {                   context.CurrentDocumentText\= ParseEmails(context.CurrentDocumentText);             }             /// The name of the plugin as it will appear             /// under the editor's "Plugins" menu             public string Name             {                   get                   {                         return "Email Parsing Plugin";                   }             }             /// Parse the given string for any emails using the Regex Class             /// and return a string containing only email addresses             private string ParseEmails(string text)             {                   const string emailPattern\= @"\\w+@\\w+\\.\\w+((\\.\\w+)\*)?";                   MatchCollection emails = Regex.Matches(text,emailPattern,RegexOptions.IgnoreCase);                   StringBuilder emailString = new StringBuilder();                   foreach(Match email in emails)                                                {                         emailString.Append( email.Value + Environment.NewLine);                   }                   return emailString.ToString();             }       } #### Step 4 – Letting our application know about the new plug-in Once we have compile out plug-in, how do we let our application know about it? The solution is simple : ·        Create an application configuration file ·        Create a section in the config file that lists all the available plugins ·        Create a parser for this config section OK. To take care of step one, Just add an XML file to the Main application. **Tip**: _Name this file **App.Config**. If you do that, every time you build your application VS.NET will automatically copy this file into the build output folder and rename it to **.Config** ,saving you the hassle._ Now, We want the plug-in developer to easily add an entry in the Config file to publish each plug-in he has created. Here’s how the Config file should look: <configuration\> <configSections\>             <section name\="plugins"                         type\="Royo.PluggableApp.PluginSectionHandler, PluggableApp"                         /> configSections\>       <plugins\>             <plugin type\="Royo.Plugins.Custom.EmailPlugin, CustomPlugin" />       plugins\> <configuration\> Notice the configSections Tag. We tell the application Configuration settings that we have an unidentifies section in this config file, but that we have a parser for this section. This parser resides in the class “**Royo.PluggableApp.PluginSectionHandler”**, which which in an assembly named “**PluggableApp**”. I’ll show you the code for this class in the next. Next, we have the “Plugins” section of the config file, which lists , for every plug-in, the class name and the assembly name in which it resides. We will use this information when we instantiate the plug-in, later on. OK. Once the Config file is done, we basically have finished one end of the circle. The plug-in is ready to rock, and has published itself to all the necessary channels. All we have left to do now is to allow our application to read in this information, and instantiate the published plugins according to this info. #### Step 5 – Parse the config file using IConfigurationSectionHandler In order to parse out the plugins that are found within the Config file of our application, The framework provides a very simple mechanism that enables us to register a specific class as a "handler" for a specific portion in our config file. We must have a handler for any portion in the file that is not automatically parsed by the framework, otherwise we get a "ConfigurationException" thrown. In order to provide the class that parses the "plugins" section, all we need to do is to implement the System.Configuration.IConfigurationSectionHandler interface. The interface itself is very simple:       public interface IConfigurationSectionHandler       {                         public object Create(object parent, object configContext, System.Xml.XmlNode section);       } All we have to do is override the "create" method in our custom class,  and parse the XML node which is provided to us. This xml node, in our case, will be the "Plugins" XML node. Once we have that, we have all the information we need in order instantiate the plugins for our application. Our custom class must provide a default constructor, since it is instantiated automatically by the framework at run time, and than the "Create" method is called on it. Here's the code for the Plugins Section Handler class: public class PluginSectionHandler:IConfigurationSectionHandler       {             public PluginSectionHandler()             {             }             /// Iterate through all the child nodes             ///   of the XMLNode that was passed in and create instances             ///   of the specified Types by reading the attribite values of the nodes             ///   we use a try/Catch here because some of the nodes             ///   might contain an invalid reference to a plugin type             public object Create(object parent, object configContext, System.Xml.XmlNode section)             {                   PluginCollection plugins = new PluginCollection();                   foreach(XmlNode node in section.ChildNodes)                   {                         //Code goes here to instantiate                         //and invoke the plugins                         .                         .                         .                   }                   return plugins;             }       } } As you can see in the config file mentioned earlier, We provide the data the framework needs in order to handle the plugins section usinf the "configSection" tag prior to the actual "plugins" tags. <configuration\> <configSections\>             <section name\="plugins"                         type\="Royo.PluggableApp.PluginSectionHandler, PluggableApp"                         /> <configSections\> . . . Notice how we specify the class ; The string is composed of two sections : The full name of the class(including encapsulating namespaces), comma, The name of the Assembly in which this class is located. This is all the framework needs in order to instantiate a class, and unsurprisingly, this is exactly the information we require for any plugins to register for our application. #### Instantiating and invoking the plugins Let's see how we actually instantiate an instance of a plug-in given the following string: String ClassName = "Royo.Plugins.MyCustomPlugin, MyCustomPlugin" IPlugin plugin =  (IPlugin )Activator.CreateInstance(Type.GetType(ClassName)); Let's explain what's happening here. Since our application does not a direct reference to the assembly of the custom plug-in, we use the System.**Activator**  class . Activator is a special kind of class which is able to create instances of object given any number of  specific parameters. It can even create **Com** Instances of objects and return them. If you have ever coded in ASP or VB, you remember the "CreateObject()" function which was used to instantiate and return objects based on the CLSID of a class. **Activator** operates on the same idea, yet uses different arguments, and returns a System.Object instance, not a variant…. In this call to Activator, I pass in as a parameter the Type which I want to instantiate. I uses the Type.GetType() method to return an instance of a Type which matches the Type of the plug-in. Notice that the Type.GetType() method accepts as a parameter exactly the string which was put inside the "plugins" tag, which describes the name of the class and the assembly it resides in. Once I have an instance of the plug-in, I cast it to an IPlugin interface, and put it inside my plug-in object. An Try-Catch block must be put on this line, since we cannot be sure that the plug-in that is described there actually exists, or does in fact support the IPlugin interface we need. Once we have the instance of the plug-in, we add it to the ArrayList of our application plugins, and move on to the next XML node. Here’s the code from our application: public object Create(object parent, object configContext, System.Xml.XmlNode section)             {                   //Derived from CollectionBase                   PluginCollection plugins = new PluginCollection();                   foreach(XmlNode node in section.ChildNodes)                   {                         try                         {                               //Use the Activator class's 'CreateInstance' method                               //to try and create an instance of the plugin by                               //passing in the type name specified in the attribute value                               **object** **plugObject** **=** **Activator****.****CreateInstance****(****Type****.****GetType****(****node****.****Attributes****\[****"type"****\].****Value****));**                               //Cast this to an IPlugin interface and add to the collection                               IPlugin plugin = (IPlugin)plugObject;                               plugins.Add(plugin);                         }                         catch(Exception e)                         {                               //Catch any exceptions                               //but continue iterating for more plugins                         }                   }                   return plugins;             } #### Invoking the plugins After all this work is done, we can now use the plugins.One more thing is missing, though.  Remember that the IPlugin.PerformAction() requires an argument of type IPluginContext, which holds all the necessary data for the Plug-in to do its work. We'll implement a simple class which implements this interface, which we send to the PerformAction() method whenever we call a plug-in. Here's the code for the class:       public interface IPluginContext       {             string CurrentDocumentText{get;set;}       } public class EditorContext:IPluginContext       {             private string m\_CurrentText\= string.Empty;             public EditorContext(string CurrentEditorText)             {                   m\_CurrentText = CurrentEditorText;             }             public string CurrentDocumentText             { get{return m\_CurrentText;}                   set{m\_CurrentText = value;}             }       } Once this class is ready, we can just perform an action on the current editor text like so:             private void ExecutePlugin(IPlugin plugin)             {                   //create a context object to pass to the plugin                   EditorContext context = new EditorContext(txtText.Text);                   //The plugin Changes the Text property of the context                   plugin.PerformAction(context);                   txtText.Text\= context.CurrentDocumentText;                   }             } #### Summery We've seen that it's pretty simple to support plugins in your application. ·        Create A shared interfaces library ·        Create Custom plugins implementing the custom interfaces ·        Create Context arguments to pass to the plugins ·        Create a section in your config file to hold plug-in names ·        Instantiate plugins using an IConfigurationSectionHandler implementer class ·        Call your plugins! ·        Go home and spend some quality time away from your computer ## More in Reflection [All posts in Reflection](https://osherove.com/blog/category/reflection) - Feb 24, 2007 ### [Writing real unit tests for your custom FxCop rules](https://osherove.com/blog/2007/2/24/writing-real-unit-tests-for-your-custom-fxcop-rules.html) - May 30, 2003 ### [Add Plugins to Your App 2: Search dynamically for plugins without Config Files](https://osherove.com/blog/2003/5/30/add-plugins-to-your-app-2-search-dynamically-for-plugins-wit.html) --- title: "Good Stuff" url: "https://osherove.com/blog/2003/5/27/good-stuff.md" canonical: "https://osherove.com/blog/2003/5/27/good-stuff.html" published: "2003-05-27T09:21:00" updated: "2003-05-27T09:21:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Good stuff over at Mike Woodring's .Net Samples Page . Here are just the headlines: Remoting and Sockets Reflection Threading and Synchronization Assemblies Security Configuration Context Miscellaneous" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good Stuff By Roy Osherove May 27, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 27, 2003; technical details may be outdated. Good stuff over at Mike Woodring's [.Net Samples Page](http://staff.develop.com/woodring/dotnet/). Here are just the headlines: [Remoting and Sockets](http://staff.develop.com/woodring/dotnet/#remoting) [Reflection](http://staff.develop.com/woodring/dotnet/#reflection) [Threading and Synchronization](http://staff.develop.com/woodring/dotnet/#threading) [Assemblies](http://staff.develop.com/woodring/dotnet/#assemblies) [Security](http://staff.develop.com/woodring/dotnet/#security) [Configuration](http://staff.develop.com/woodring/dotnet/#config) [Context](http://staff.develop.com/woodring/dotnet/#context) [Miscellaneous](http://staff.develop.com/woodring/dotnet/#misc) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 28, 2003 ### [Paper Prototyping](https://osherove.com/blog/2003/5/28/paper-prototyping.html) - May 28, 2003 ### [SP/Invoke -- Stored Procedure Invocation Code Generator for VB, C# and JScript.NET](https://osherove.com/blog/2003/5/28/spinvoke-stored-procedure-invocation-code-generator-for-vb-c.html) - May 26, 2003 ### [Dynamic Invocation with Reflection.Emit](https://osherove.com/blog/2003/5/26/dynamic-invocation-with-reflectionemit.html) - May 15, 2003 ### [One Cool Menu](https://osherove.com/blog/2003/5/15/one-cool-menu.html) --- title: "BlogWear" url: "https://osherove.com/blog/2003/5/27/blogwear.md" canonical: "https://osherove.com/blog/2003/5/27/blogwear.html" published: "2003-05-27T03:46:00" updated: "2003-05-27T03:46:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "[Russell Beattie]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BlogWear By Roy Osherove May 27, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 27, 2003; technical details may be outdated. [![](https://osherove.com/img/wb/04c22bb9_www.thinkgeek.com_images_products_front_blogging.jpg)](http://www.thinkgeek.com/interests/oreilly/tshirts/5eb7/)  [\[Russell Beattie\]](http://www.russellbeattie.com/) ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - Jun 2, 2003 ### [Medieval Times](https://osherove.com/blog/2003/6/2/medieval-times.html) - May 30, 2003 ### [About "Personal" Blogging](https://osherove.com/blog/2003/5/30/about-quotpersonalquot-blogging.html) - May 18, 2003 ### [When Blogs Go Commercial](https://osherove.com/blog/2003/5/18/when-blogs-go-commercial.html) - May 11, 2003 ### [Mind Rates](https://osherove.com/blog/2003/5/11/mind-rates.html) --- title: "LinkedIn" url: "https://osherove.com/blog/2003/5/26/linkedin.md" canonical: "https://osherove.com/blog/2003/5/26/linkedin.html" published: "2003-05-26T11:29:00" updated: "2003-05-26T11:29:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I've discovered LinkedIn. Seems like a cool way to network. Since it's free Currently in Beta and thus - free, I recommend you join it. If you think I'm worthy, you can add me as a connection :) I've already sent a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # LinkedIn By Roy Osherove May 26, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 26, 2003; technical details may be outdated. I've discovered LinkedIn. Seems like a cool way to network. [![Linkedin](https://osherove.com/img/wb/018c0062_www.linkedin.com_img_logo.gif)](https://www.linkedin.com/home) Since it's ~free~ Currently in Beta and thus - free, I recommend you join it. If you think I'm worthy, you can add me as a connection :) I've already sent a couple of invitations out there. We'll see how it goes... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 27, 2003 ### [PeopleWare](https://osherove.com/blog/2003/5/27/peopleware.html) - May 27, 2003 ### [BlogWear](https://osherove.com/blog/2003/5/27/blogwear.html) - May 26, 2003 ### [UML Tutorial](https://osherove.com/blog/2003/5/26/uml-tutorial.html) - May 26, 2003 ### [Envy](https://osherove.com/blog/2003/5/26/envy.html) --- title: "UML Tutorial" url: "https://osherove.com/blog/2003/5/26/uml-tutorial.md" canonical: "https://osherove.com/blog/2003/5/26/uml-tutorial.html" published: "2003-05-26T10:17:00" updated: "2003-05-26T10:17:00" tags: ["Off Topic"] author: "Roy Osherove" description: "A friend asked for a good UML tutorial for beginners, so I pointed him to this one ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # UML Tutorial By Roy Osherove May 26, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 26, 2003; technical details may be outdated. A friend asked for a good UML tutorial for beginners, so I pointed him to [this one](http://www.sparxsystems.com.au/UML_Tutorial.htm). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 27, 2003 ### [BlogWear](https://osherove.com/blog/2003/5/27/blogwear.html) - May 26, 2003 ### [LinkedIn](https://osherove.com/blog/2003/5/26/linkedin.html) - May 26, 2003 ### [Envy](https://osherove.com/blog/2003/5/26/envy.html) - May 25, 2003 ### [Work, work, work....](https://osherove.com/blog/2003/5/25/work-work-work.html) --- title: ".Net Debugging Resources" url: "https://osherove.com/blog/2003/5/26/net-debugging-resources-1.md" canonical: "https://osherove.com/blog/2003/5/26/net-debugging-resources-1.html" published: "2003-05-26T09:51:00" updated: "2003-05-26T09:51:00" tags: [".Net Original"] author: "Roy Osherove" description: "I've put up a resource link to all things relating to .Net debugging: .Net Debugging Resources Eventually it should grow up to become something usable, but right now I only have a couple of links in there. Please…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Debugging Resources By Roy Osherove May 26, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 26, 2003; technical details may be outdated. I've put up a resource link to all things relating to .Net debugging: [.Net Debugging Resources](http://dotnetweblogs.com/rosherove/story/7573.aspx) Eventually it should grow up to become something usable, but right now I only have a couple of links in there. Please contribute anything you think is relevant by posting a comment. Thanks. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 28, 2003 ### [About Dynamic Plug-in Discovery And AppDomains](https://osherove.com/blog/2003/5/28/about-dynamic-plug-in-discovery-and-appdomains.html) - May 27, 2003 ### [New Article: Extend Your Application With Custom Plugins](https://osherove.com/blog/2003/5/27/new-article-extend-your-application-with-custom-plugins.html) - May 26, 2003 ### [Microsoft Internet Controls Life Saver](https://osherove.com/blog/2003/5/26/microsoft-internet-controls-life-saver.html) - May 26, 2003 ### [Strong Vs. Loose Typing/Loose binding](https://osherove.com/blog/2003/5/26/strong-vs-loose-typingloose-binding.html) --- title: ".Net Debugging Resources" url: "https://osherove.com/blog/2003/5/26/net-debugging-resources.md" canonical: "https://osherove.com/blog/2003/5/26/net-debugging-resources.html" published: "2003-05-26T09:42:00" updated: "2003-05-26T09:42:00" tags: ["Other"] author: "Roy Osherove" description: "Note: If you think something is missing don't hesitate and drop a comment. Articles: Debugging Articles on MSDN Debugging in Visual Basic .NET Ten Steps to Successful Debugging (in ASP.NET) How to debug script in Visual…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Debugging Resources By Roy Osherove May 26, 2003 In [Other](https://osherove.com/blog/category/other) **Historical article** · Originally published May 26, 2003; technical details may be outdated. Note: If you think something is missing don't hesitate and drop a comment. **Articles:** [Debugging Articles on MSDN](http://msdn.microsoft.com/library/en-us/dv_vstechart/html/vstchDebugging.asp) [Debugging in Visual Basic .NET](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtch_DebuggingVBNET.asp) [Ten Steps to Successful Debugging](http://www.developer.com/net/asp/print.php/10917_2176931_3)(in ASP.NET) [How to debug script in Visual Studio .NET](http://gotdotnet.com/team/csharp/learn/whitepapers/How%20to%20debug%20script%20in%20Visual%20Studio%20.Net.doc) [Instrumenting your .Net Application](http://www.ondotnet.com/pub/a/dotnet/2003/05/12/instrumenting.html)(Entrprise Application Framework) [EIF Vs. Log4Net](http://blogs.eraserver.net/blogs/pcauldweblog/default.aspx?erablogID=8092&eraCatID=8344&eraPostID=13345) [Debugging in Visual Studio .NET](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vberrDebuggingWindowsFormsControlsCreatedWithVisualBasicNETOrVisualCNET.asp) [Improve Your Understanding of .NET Internals by Building a Debugger for Managed Code](http://msdn.microsoft.com/msdnmag/issues/02/11/CLRDebugging/default.aspx) [NET CLR Profiling Services: Track Your Managed Components to Boost Application Performance](http://msdn.microsoft.com/msdnmag/issues/01/11/NetProf/default.aspx) [Solving VS.Net Debugger Problems](http://dotnetweblogs.com/Rosherove/Story/3695.aspx) [Hardcore Debugging using SOS(Son Of Strike)](http://msdn.microsoft.com/msdnmag/issues/03/06/Bugslayer/default.aspx) [Production Debugging for .NET Framework Applications](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/DBGrm.asp) [Cutting Edge - MyTracer Monitors and Traces ASP.NET Apps](http://www.wintellect.com/resources/redirect.asp?url=http://msdn.microsoft.com/msdnmag/issues/03/04/CuttingEdge/default.aspx) [Assertions and Tracing in .NET](http://msdn.microsoft.com/msdnmag/issues/01/02/Bugslayer/default.aspx) Wintellect: [Articles by John Robbins(BugSlayer)](http://www.wintellect.com/resources/articles.aspx?authorID=2) **Tools**: \- [Process Explorer](http://www.sysinternals.com/ntw2k/freeware/procexp.shtml) from GotDotNet \-  [_Developer Playground_](http://www.blunck.info/dp.html "http://www.blunck.info/dp.html") \- [Compute](http://www.iunittest.co.uk/) (Component Tester) \- [StrikeIron Web Services Analyzer](http://www.strikeiron.com/htmls/products.html) \- [ListDLLS](http://www.sysinternals.com/ntw2k/freeware/listdlls.shtml) (subset of Process Explorer) \- [.Net Memory Profiler](http://www.scitech.se/memprofiler/) \- [TraceMonitor](http://www.szurgot.net/Src/TraceMonitor.zip)([HomePage](http://www.szurgot.net/projects/)) \- [Assembly Binding Log Viewer](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrffusionlogviewerfuslogvwexe.asp) - part of .NET Framework SDK (helps identify failure's when trying to load unavailable assemblies) \- [MDAC Component Checker](http://www.microsoft.com/downloads/details.aspx?FamilyId=8F0A8DF6-4A21-4B43-BF53-14332EF092C9&displaylang=en) \- Another from Compuware: [BoundsChecker](http://www.compuware.com/products/devpartner/bounds.htm) for debugging betweeen managed and unmanaged code (not free!) \-  [Microsoft Debugging Tools](http://msdn.microsoft.com/isapi/gomscom.asp?TARGET=/whdc/ddk/debugging/default.mspx) \- [Microsoft Symbol Server](http://www.microsoft.com/whdc/ddk/debugging/symbols.mspx) \- [CLR Spy](http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=c7b955c7-231a-406c-9fa5-ad09ef3bb37f)  (Interop) \- [.Net Remote Tracing Server](http://www.devcity.net/smourier/trace_server.htm) \- [Anakrino (.Net Decompiler)](http://www.saurik.com/net/exemplar/) \- [Reflector](http://www.aisto.com/roeder/dotnet/) (Decompiler) **Books:** [Debugging Applications for Microsoft .NET and Microsoft Windows](https://www.amazon.com/exec/obidos/ASIN/0735615365/qid%3D1053952911/sr%3D11-1/ref%3Dsr%5F11%5F1/iserializable-20) [Comprehensive VB.NET Debugging](https://www.amazon.com/exec/obidos/ASIN/1590590503/iserializable-20) [Debugging Strategies For .NET Developers](https://www.amazon.com/exec/obidos/ASIN/1590590597/qid=1054492701/sr=8-1/ref=sr_8_1/iserializable-20)(Free chapter [PDF](http://www.apress.com/ApressCorporate/supplement/1/131/1590590597-927.pdf), [link](http://www.apress.com/book/supplementDownload.html?bID=131&sID=927)) [Sharpening Your C# Unit Testing and Debugging Skills](https://www.amazon.com/exec/obidos/ASIN/B000083XMJ/qid%3D1054492777/sr%3D11-1/ref%3Dsr%5F11%5F1/iserializable-20)(PDF download)  **Posts** [Debugging Assembly Loading Failures](http://blogs.gotdotnet.com/suzcook/PermaLink.aspx/f9f7be1e-ef53-453c-af11-1ad81536edeb) [Howto: Remote Debugging](http://weblogs.asp.net/yosit/posts/9024.aspx) ## More in Other [All posts in Other](https://osherove.com/blog/category/other) - Sep 9, 2003 ### [My favorites in OPML](https://osherove.com/blog/2003/9/9/my-favorites-in-opml.html) - Jun 11, 2003 ### [Announcing: .Net Desktops Contest](https://osherove.com/blog/2003/6/11/announcing-net-desktops-contest.html) - May 9, 2003 ### [My Bookshelf](https://osherove.com/blog/2003/5/9/my-bookshelf.html) --- title: "Envy" url: "https://osherove.com/blog/2003/5/26/envy.md" canonical: "https://osherove.com/blog/2003/5/26/envy.html" published: "2003-05-26T09:03:00" updated: "2003-05-26T09:03:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Chris sells writes about his first month at Microsoft and makes me envious all over again.. Among other things, he talks about the role of program managers at MS. The culture there is amazing to me." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Envy By Roy Osherove May 26, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 26, 2003; technical details may be outdated. Chris sells [writes](http://www.sellsbrothers.com/spout/#myFirstMonthAtMs) about his first month at Microsoft and makes me envious all over again.. Among other things, he talks about the role of program managers at MS. The culture there is amazing to me. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 26, 2003 ### [LinkedIn](https://osherove.com/blog/2003/5/26/linkedin.html) - May 26, 2003 ### [UML Tutorial](https://osherove.com/blog/2003/5/26/uml-tutorial.html) - May 25, 2003 ### [Work, work, work....](https://osherove.com/blog/2003/5/25/work-work-work.html) - May 24, 2003 ### [Random Thought](https://osherove.com/blog/2003/5/24/random-thought.html) --- title: "Dynamic Invocation with Reflection.Emit" url: "https://osherove.com/blog/2003/5/26/dynamic-invocation-with-reflectionemit.md" canonical: "https://osherove.com/blog/2003/5/26/dynamic-invocation-with-reflectionemit.html" published: "2003-05-26T08:19:00" updated: "2003-05-26T08:19:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Reflection is just one of the areas I'd ilke to explore more of. This article is just one of the reasons I find this area cooler than most : Dynamic Invocation with Reflection.Emit . It shows you howe to create a method…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Dynamic Invocation with Reflection.Emit By Roy Osherove May 26, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 26, 2003; technical details may be outdated. Reflection is just one of the areas I'd ilke to explore more of. This article is just one of the reasons I find this area cooler than most : [Dynamic Invocation with Reflection.Emit](http://www.ondotnet.com/pub/a/dotnet/excerpt/prog_csharp_ch18/index.html?page=9#dyn_inv_re) . It shows you howe to create a method on the fly that iterates in a loop and sums up numbers. Although it's not what I'd do every time I'll need a loop, I'll bet there are some pretty cool applications for this 'feature'. One of them is a performance increase of 3000%. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 28, 2003 ### [SP/Invoke -- Stored Procedure Invocation Code Generator for VB, C# and JScript.NET](https://osherove.com/blog/2003/5/28/spinvoke-stored-procedure-invocation-code-generator-for-vb-c.html) - May 27, 2003 ### [Good Stuff](https://osherove.com/blog/2003/5/27/good-stuff.html) - May 15, 2003 ### [One Cool Menu](https://osherove.com/blog/2003/5/15/one-cool-menu.html) - May 13, 2003 ### [MSDN Hands-On Labs](https://osherove.com/blog/2003/5/13/msdn-hands-on-labs.html) --- title: "Microsoft Internet Controls Life Saver" url: "https://osherove.com/blog/2003/5/26/microsoft-internet-controls-life-saver.md" canonical: "https://osherove.com/blog/2003/5/26/microsoft-internet-controls-life-saver.html" published: "2003-05-26T07:45:00" updated: "2003-05-26T07:45:00" tags: [".Net Original"] author: "Roy Osherove" description: "If you're going to be using the Microsoft Internet Controls (i.e. \"ShwDocVw\") in your application, this article is a life saver . Lots of hidden treasures that we absolutly needed . Cool. Gotta love Sample book chapters…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft Internet Controls Life Saver By Roy Osherove May 26, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 26, 2003; technical details may be outdated. If you're going to be using the Microsoft Internet Controls (i.e. "ShwDocVw") in your application, [this article](http://www.devcity.net/page.asp?p=chapter&f=books-wrox-vbweb) is a life saver . Lots of hidden treasures that we absolutly needed . Cool. Gotta love Sample book chapters :) Its from the book  [Professional VB6 Web Programming](https://www.amazon.com/exec/obidos/ASIN/186100222X/iserializable-20) , btw. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 27, 2003 ### [New Article: Extend Your Application With Custom Plugins](https://osherove.com/blog/2003/5/27/new-article-extend-your-application-with-custom-plugins.html) - May 26, 2003 ### [.Net Debugging Resources](https://osherove.com/blog/2003/5/26/net-debugging-resources-1.html) - May 26, 2003 ### [Strong Vs. Loose Typing/Loose binding](https://osherove.com/blog/2003/5/26/strong-vs-loose-typingloose-binding.html) - May 21, 2003 ### [The Books I Really Really Want](https://osherove.com/blog/2003/5/21/the-books-i-really-really-want.html) --- title: "Strong Vs. Loose Typing/Loose binding" url: "https://osherove.com/blog/2003/5/26/strong-vs-loose-typingloose-binding.md" canonical: "https://osherove.com/blog/2003/5/26/strong-vs-loose-typingloose-binding.html" published: "2003-05-26T06:59:00" updated: "2003-05-26T06:59:00" tags: [".Net Original"] author: "Roy Osherove" description: "Ted Neward writes about the differences between Loose-Coupling, Loose-Typing, and Loose-Binding. Well, that's just the beginning. He starts off a discussion about which might be better for which tasks, the coding of GUI…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Strong Vs. Loose Typing/Loose binding By Roy Osherove May 26, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 26, 2003; technical details may be outdated. [Ted Neward writes](http://www.neward.net/ted/weblog/index.jsp?date=20030522#1053617115876) about the differences between Loose-Coupling, Loose-Typing, and Loose-Binding. Well, that's just the beginning. He starts off a discussion about which might be better for which tasks, the coding of GUI vs. Server code using Loose-typing vs. Strong-Typing, What was so great (and bad)about VB and how Ruby.Net fits in to all this. Highly recommended. As for me, I'll just say there's some cool stuff to be done using Loose-binding(not typing). in VB6, you had the object class, on which you could instantiate anything using CreateObject, and than just call any method you liked on that object. It didn't check in compile time whether this was legal or not, it just "assumed" whatever was in your object would support this functionality when the time comes. This allowed me to do a very cool trick, where, by using the Word automation components, I would instantiate a "word.Application" object, and call methods on it via a loosly typed object. This approach allowed me to variating Office installations on the host computer(assuming they are >= Office 97). No need to reference a specific Word 9.0 or Word.80 build in my project. Since I was doing on ly the simplest of thinsg using Word's Document object model, I could get away with the same operations being on done different Office versions, since they all had support(and backawrds compatibility support) for those operations. Yes, Loose binding sure saved me a lot of coding time. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 26, 2003 ### [.Net Debugging Resources](https://osherove.com/blog/2003/5/26/net-debugging-resources-1.html) - May 26, 2003 ### [Microsoft Internet Controls Life Saver](https://osherove.com/blog/2003/5/26/microsoft-internet-controls-life-saver.html) - May 21, 2003 ### [The Books I Really Really Want](https://osherove.com/blog/2003/5/21/the-books-i-really-really-want.html) - May 20, 2003 ### [UI Threading - A Very Simple Solution](https://osherove.com/blog/2003/5/20/ui-threading-a-very-simple-solution.html) --- title: "Work, work, work...." url: "https://osherove.com/blog/2003/5/25/work-work-work.md" canonical: "https://osherove.com/blog/2003/5/25/work-work-work.html" published: "2003-05-25T11:53:00" updated: "2003-05-25T11:53:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Sorry I've been out for a few days, but work duties call, and I must finish a small project. Nevertheless, I'm working on an article concerning building applications that support custom plugins. Of course, you'll be the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Work, work, work.... By Roy Osherove May 25, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 25, 2003; technical details may be outdated. Sorry I've been out for a few days, but work duties call, and I must finish a small project. Nevertheless, I'm working on an article concerning building applications that support custom plugins. Of course, you'll be the first to know :) **p.s** Also, if you have any specific topics around this subject that you'd like me to concentrate on, feel free to drop me a line via the "contact" link. If it's feasible, I'll add the topic .. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 26, 2003 ### [UML Tutorial](https://osherove.com/blog/2003/5/26/uml-tutorial.html) - May 26, 2003 ### [Envy](https://osherove.com/blog/2003/5/26/envy.html) - May 24, 2003 ### [Random Thought](https://osherove.com/blog/2003/5/24/random-thought.html) - May 23, 2003 ### [The Right People For The Right Job](https://osherove.com/blog/2003/5/23/the-right-people-for-the-right-job.html) --- title: "Random Thought" url: "https://osherove.com/blog/2003/5/24/random-thought.md" canonical: "https://osherove.com/blog/2003/5/24/random-thought.html" published: "2003-05-24T13:26:00" updated: "2003-05-24T13:26:00" tags: ["Off Topic"] author: "Roy Osherove" description: "\"If the people in the matrix live in the future, and they have all this technology to plug in to the matrix, why do they still have to plug in those cables into the back of their heads? don't they have wireless…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Random Thought By Roy Osherove May 24, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 24, 2003; technical details may be outdated. _"If the people in the matrix live in the future, and they have all this technology to plug in to the matrix, why do they still have to plug in those cables into the back of their heads? don't they have wireless already?"_ \[Jay Leno\] ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 26, 2003 ### [Envy](https://osherove.com/blog/2003/5/26/envy.html) - May 25, 2003 ### [Work, work, work....](https://osherove.com/blog/2003/5/25/work-work-work.html) - May 23, 2003 ### [The Right People For The Right Job](https://osherove.com/blog/2003/5/23/the-right-people-for-the-right-job.html) - May 21, 2003 ### [Assorted News](https://osherove.com/blog/2003/5/21/assorted-news.html) --- title: "The Right People For The Right Job" url: "https://osherove.com/blog/2003/5/23/the-right-people-for-the-right-job.md" canonical: "https://osherove.com/blog/2003/5/23/the-right-people-for-the-right-job.html" published: "2003-05-23T12:27:00" updated: "2003-05-23T12:27:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I recently met with a friend of mine, also a programmer. After sharing the usual “war stories” he mentioned some things about his project manager/Team Leader that made us both go into a long conversation about IT roles…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Right People For The Right Job By Roy Osherove May 23, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 23, 2003; technical details may be outdated. I recently met with a friend of mine, also a programmer.  After sharing the usual “war stories” he mentioned some things about his project manager/Team Leader that made us both go into a long conversation about IT roles and the right people for the job. He kept ranting about his PM not being as qualified as he would have liked. This person was usually out of the office, unreachable. When he was in the office, he would give bad advice, or change his mind frequently. The outcome of this PM’s behaviour was that his team did not perform very well. It turns out that my friend was the “unproclaimed” leader of his team, filling in for the roles of the missing PM. **He** would be asked all the questions, **he** was the one everyone turned to when they needed anything. It occurred to me that the problem here was much deeper then just a lousy PM. The real problem here is that companies don’t (usually) put a person for a particular job because of his/her abilities (or lack there of) but because that person was just there at the right place at the right time. This is much more apparent at small companies or start-ups, in which several roles must be performed by one person. In a company I know, for example, the same people who program also do the QA’s job, since they have no QA department. This of course, sucks. No one can objectively test their own output. But they have to, so they do it. The problem gets worse when you assign a person to a role which is very far from their particular field. Putting a programmer as a marketing guy can have some horrendous results to a company, yet that same company does exactly that. That PM which my friend mentioned, seems to be the result of exactly this deadly cocktail of company needs and unprofessional task assignment. I don’t know just how prevalent this is abroad, but in Israel it seems to be a pretty common practice.  Of course, you could argue that giving a person a task with significant responsibility can motivate that person and push his/her abilities forward. Rubbish. There’s a difference between trying to push your workers towards excelling in multiple areas and between using your resources unprofessionally and hiding behind a warn-out excuse. If that worker takes that role and makes something out of it – it’s pure luck. Management had nothing to do with it. It could just as easily have gone the other way around, at which part that same worker would be accused of doing their job unprofessionally. I see companies doing this all the time. It makes me feel queasy.    ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 25, 2003 ### [Work, work, work....](https://osherove.com/blog/2003/5/25/work-work-work.html) - May 24, 2003 ### [Random Thought](https://osherove.com/blog/2003/5/24/random-thought.html) - May 21, 2003 ### [Assorted News](https://osherove.com/blog/2003/5/21/assorted-news.html) - May 20, 2003 ### [I'm In!](https://osherove.com/blog/2003/5/20/im-in.html) --- title: "VB6 is not dead, so you'll need this tool" url: "https://osherove.com/blog/2003/5/23/vb6-is-not-dead-so-youll-need-this-tool.md" canonical: "https://osherove.com/blog/2003/5/23/vb6-is-not-dead-so-youll-need-this-tool.html" published: "2003-05-23T11:59:00" updated: "2003-05-23T11:59:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "My guess is there is going to be a LOT of VB6'ers around for a long time. I know I'll be doing maintenance on my old VB6 programs for as long as needed. In case you’re in this category, I recommend using CodeSmart 2001…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VB6 is not dead, so you'll need this tool By Roy Osherove May 23, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 23, 2003; technical details may be outdated. My guess is there is going to be a LOT of VB6'ers around for a long time. I know I'll be doing maintenance on my old VB6 programs for as long as needed. In case you’re in this category, I recommend using [CodeSmart 2001](http://www.axtools.com/) from AxTools. Simply an addin I cannot do without. They also have a version for VS.NET, but the benefits there are of much less proportion. In VB6, however, they are **huge**. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - Jun 17, 2003 ### [.Net Shortcuts + Automate GAC and COM operations using this Cool Add-in](https://osherove.com/blog/2003/6/17/net-shortcuts-automate-gac-and-com-operations-using-this-coo.html) - May 28, 2003 ### [SP/Invoke -- Stored Procedure Invocation Code Generator for VB, C# and JScript.NET](https://osherove.com/blog/2003/5/28/spinvoke-stored-procedure-invocation-code-generator-for-vb-c.html) - May 23, 2003 ### [CodeSmith goes out to the wild](https://osherove.com/blog/2003/5/23/codesmith-goes-out-to-the-wild.html) - May 21, 2003 ### [Assorted News](https://osherove.com/blog/2003/5/21/assorted-news.html) --- title: "CodeSmith goes out to the wild" url: "https://osherove.com/blog/2003/5/23/codesmith-goes-out-to-the-wild.md" canonical: "https://osherove.com/blog/2003/5/23/codesmith-goes-out-to-the-wild.html" published: "2003-05-23T11:54:00" updated: "2003-05-23T11:54:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "This is great news! Codesmith is one of the coolest and most time saving tools around." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CodeSmith goes out to the wild By Roy Osherove May 23, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 23, 2003; technical details may be outdated. [This](http://dotnetweblogs.com/ericjsmith/posts/7467.aspx) is great news! Codesmith is one of the coolest and most time saving tools around. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 28, 2003 ### [SP/Invoke -- Stored Procedure Invocation Code Generator for VB, C# and JScript.NET](https://osherove.com/blog/2003/5/28/spinvoke-stored-procedure-invocation-code-generator-for-vb-c.html) - May 23, 2003 ### [VB6 is not dead, so you'll need this tool](https://osherove.com/blog/2003/5/23/vb6-is-not-dead-so-youll-need-this-tool.html) - May 21, 2003 ### [Assorted News](https://osherove.com/blog/2003/5/21/assorted-news.html) - May 19, 2003 ### [I Was Naked](https://osherove.com/blog/2003/5/19/i-was-naked.html) --- title: "The Books I Really Really Want" url: "https://osherove.com/blog/2003/5/21/the-books-i-really-really-want.md" canonical: "https://osherove.com/blog/2003/5/21/the-books-i-really-really-want.html" published: "2003-05-21T17:02:00" updated: "2003-05-21T17:02:00" tags: [".Net Original"] author: "Roy Osherove" description: "<Alert>Yes, I am an Amazon affiliate</Alert> How Would You Move Mount Fuji? Microsoft's Cult of the Puzzle - How the World's Smartest Company Selects the Most Creative Thinkers .NET Security Essential .NET, Volume I:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Books I Really Really Want By Roy Osherove May 21, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 21, 2003; technical details may be outdated. <Alert>Yes, I am an Amazon affiliate</Alert> [**How Would You Move Mount Fuji? Microsoft's Cult of the Puzzle - How the World's Smartest Company Selects the Most Creative Thinkers**](https://www.amazon.com/exec/obidos/ASIN/0316919160/iserializable-20) [**.NET Security**](https://www.amazon.com/exec/obidos/ASIN/1590590538/iserializable-20) [**Essential .NET, Volume I: The Common Language Runtime**](https://www.amazon.com/exec/obidos/ASIN/0201734117/iserializable-20) [**Google Hacks: 100 Industrial-Strength Tips & Tools**](https://www.amazon.com/exec/obidos/ASIN/0596004478/iserializable-20) [**About Face 2.0: The Essentials of Interaction Design**](https://www.amazon.com/exec/obidos/ASIN/0764526413/iserializable-20) [**Programming .NET Components**](https://www.amazon.com/exec/obidos/ASIN/0596003471/iserializable-20) [**COM and .NET Component Services (O'Reilly Windows)**](https://www.amazon.com/exec/obidos/ASIN/0596001037/iserializable-20) [**Streamlined Object Modeling: Patterns, Rules, and Implementation**](https://www.amazon.com/exec/obidos/ASIN/0130668397/iserializable-20) [**Shared Source CLI Essentials**](https://www.amazon.com/exec/obidos/ASIN/059600351X/iserializable-20) [**How to Break Software: A Practical Guide to Testing**](https://www.amazon.com/exec/obidos/ASIN/0201796198/iserializable-20) [**Pair Programming Illuminated**](https://www.amazon.com/exec/obidos/ASIN/0201745763/iserializable-20) [**Patterns of Enterprise Application Architecture**](https://www.amazon.com/exec/obidos/ASIN/0321127420/iserializable-20) [**.NET and COM: The Complete Interoperability Guide**](https://www.amazon.com/exec/obidos/ASIN/067232170X/iserializable-20) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 26, 2003 ### [Microsoft Internet Controls Life Saver](https://osherove.com/blog/2003/5/26/microsoft-internet-controls-life-saver.html) - May 26, 2003 ### [Strong Vs. Loose Typing/Loose binding](https://osherove.com/blog/2003/5/26/strong-vs-loose-typingloose-binding.html) - May 20, 2003 ### [UI Threading - A Very Simple Solution](https://osherove.com/blog/2003/5/20/ui-threading-a-very-simple-solution.html) - May 19, 2003 ### [Ingo Rocks Too](https://osherove.com/blog/2003/5/19/ingo-rocks-too.html) --- title: "Assorted News" url: "https://osherove.com/blog/2003/5/21/assorted-news.md" canonical: "https://osherove.com/blog/2003/5/21/assorted-news.html" published: "2003-05-21T15:53:00" updated: "2003-05-21T15:53:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "Comparison Tool : Beyond Compare is the comparison tool I've used. Araxis Merge 2001 is light years behind in functionality (Although has better UI) Matrix Invitations : If you still haven’t gotten those Matrix…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Assorted News By Roy Osherove May 21, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 21, 2003; technical details may be outdated. - **Comparison Tool**: [Beyond Compare](http://www.scootersoftware.com/) is **the** comparison tool I've used. [Araxis Merge 2001](http://www.araxis.com/) is light years behind in functionality (Although has better UI) - **Matrix Invitations**: If you still haven’t gotten those Matrix invitations from MSFT and feel neglected, this might help : My wife, Tal, didn’t get an invitation either, **but**, she just called up MSFT service (The phone number was written in the email invitation I received for the movie ) and asked for 5 tickets for her and her work mates. The person at the other end of the line simply said "**No problem!"** and gave her the invitation numbers over the phone. Just like that. Initiative can be a powerful thing :) - **Back from the future**: I needed to do some maintenance on a VB6 application I wrote. What can I say, I miss VS.NET already :) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 23, 2003 ### [VB6 is not dead, so you'll need this tool](https://osherove.com/blog/2003/5/23/vb6-is-not-dead-so-youll-need-this-tool.html) - May 23, 2003 ### [CodeSmith goes out to the wild](https://osherove.com/blog/2003/5/23/codesmith-goes-out-to-the-wild.html) - May 19, 2003 ### [I Was Naked](https://osherove.com/blog/2003/5/19/i-was-naked.html) - May 19, 2003 ### [About Productivity](https://osherove.com/blog/2003/5/19/about-productivity.html) --- title: "I'm In!" url: "https://osherove.com/blog/2003/5/20/im-in.md" canonical: "https://osherove.com/blog/2003/5/20/im-in.html" published: "2003-05-20T07:08:00" updated: "2003-05-20T07:08:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Woohoo! I just got an invitation to see the Matrix-Reloaded on the 27th from Microsoft :) It seems that , for some reason, I'm on their database listings.Cool! I do wonder where from... maybe a conference I attended or…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm In! By Roy Osherove May 20, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 20, 2003; technical details may be outdated. Woohoo! I just got an invitation to see the Matrix-Reloaded on the 27th from Microsoft :)  It seems that , for some reason,  I'm on their database listings.Cool! I do wonder where from... maybe a conference I attended or something... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 23, 2003 ### [The Right People For The Right Job](https://osherove.com/blog/2003/5/23/the-right-people-for-the-right-job.html) - May 21, 2003 ### [Assorted News](https://osherove.com/blog/2003/5/21/assorted-news.html) - May 19, 2003 ### [The Star Wars - Kid Gets An Upgrade](https://osherove.com/blog/2003/5/19/the-star-wars-kid-gets-an-upgrade.html) - May 19, 2003 ### [About Productivity](https://osherove.com/blog/2003/5/19/about-productivity.html) --- title: "UI Threading - A Very Simple Solution" url: "https://osherove.com/blog/2003/5/20/ui-threading-a-very-simple-solution.md" canonical: "https://osherove.com/blog/2003/5/20/ui-threading-a-very-simple-solution.html" published: "2003-05-20T06:56:00" updated: "2003-05-20T06:56:00" tags: [".Net Original", "Tips & Tricks"] author: "Roy Osherove" description: "God loves the simple solutions. It turns out that there is a really simple solution to the problem of working with UI threads.Much simpler then mine . I was given this simple pattern by a guy on the win_tech_off_topic…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # UI Threading - A Very Simple Solution By Roy Osherove May 20, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published May 20, 2003; technical details may be outdated. God loves the simple solutions. It turns out that there is a really simple solution to the [problem](http://dotnetweblogs.com/rosherove/posts/6554.aspx) of [working](http://dotnetweblogs.com/jlerman/posts/6562.aspx) with UI threads.Much simpler then [mine](http://dotnetweblogs.com/rosherove/story/7171.aspx). I was given this simple pattern by a guy on the win\_tech\_off\_topic list. Here it is: _"I've read your article, and there is a simple pattern for multi-threaded_ _UI: in your event, you check the InvokeRequired parameter._ _Eg: (this hasn't been anywhere near a compiler)_ _ protected void windowsform\_Event(object sender, EventArgs e) { if (this.InvokeRequired) { this.Invoke(new EventHandler(windowsform\_Event), new object\[\] { sender, e }); return; } // do your magic here, and it will always be on the UI thread } _ _Best wishes, James Berry"_ _Good one! I've been reading about UI threading in one of the past MSDN issues. The **InvokeRequired** Property returns true if the thread that reads it is not the UI thread of the control. Simple, elegant. What more could one ask for?_ ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 26, 2003 ### [Strong Vs. Loose Typing/Loose binding](https://osherove.com/blog/2003/5/26/strong-vs-loose-typingloose-binding.html) - May 21, 2003 ### [The Books I Really Really Want](https://osherove.com/blog/2003/5/21/the-books-i-really-really-want.html) - May 19, 2003 ### [Ingo Rocks Too](https://osherove.com/blog/2003/5/19/ingo-rocks-too.html) - May 19, 2003 ### [Articles, Articles, Articles!](https://osherove.com/blog/2003/5/19/articles-articles-articles.html) --- title: "Ingo Rocks Too" url: "https://osherove.com/blog/2003/5/19/ingo-rocks-too.md" canonical: "https://osherove.com/blog/2003/5/19/ingo-rocks-too.html" published: "2003-05-19T08:47:00" updated: "2003-05-19T08:47:00" tags: [".Net Original"] author: "Roy Osherove" description: "Ooh! Ingo Rammer is on . Net Rocks !" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ingo Rocks Too By Roy Osherove May 19, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 19, 2003; technical details may be outdated. Ooh! [Ingo Rammer](http://www.ingorammer.com/) is on .[Net Rocks](http://www.franklins.net/dotnetrocks.asp)! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 21, 2003 ### [The Books I Really Really Want](https://osherove.com/blog/2003/5/21/the-books-i-really-really-want.html) - May 20, 2003 ### [UI Threading - A Very Simple Solution](https://osherove.com/blog/2003/5/20/ui-threading-a-very-simple-solution.html) - May 19, 2003 ### [Articles, Articles, Articles!](https://osherove.com/blog/2003/5/19/articles-articles-articles.html) - May 17, 2003 ### [UI Threading Helper Classes](https://osherove.com/blog/2003/5/17/ui-threading-helper-classes-1.html) --- title: "I Was Naked" url: "https://osherove.com/blog/2003/5/19/i-was-naked.md" canonical: "https://osherove.com/blog/2003/5/19/i-was-naked.html" published: "2003-05-19T08:43:00" updated: "2003-05-19T08:43:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "SharpReader rocks! I was running naked for a while(i.e. - No RSS reader - just a browser) and putting my rss-reader back on feels nice and fuzzy." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I Was Naked By Roy Osherove May 19, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 19, 2003; technical details may be outdated. [SharpReader](http://www.hutteman.com/weblog/) rocks! I was running naked for a while(i.e. - No RSS reader - just a browser) and putting my rss-reader back on feels nice and fuzzy. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 23, 2003 ### [CodeSmith goes out to the wild](https://osherove.com/blog/2003/5/23/codesmith-goes-out-to-the-wild.html) - May 21, 2003 ### [Assorted News](https://osherove.com/blog/2003/5/21/assorted-news.html) - May 19, 2003 ### [About Productivity](https://osherove.com/blog/2003/5/19/about-productivity.html) - May 19, 2003 ### [Editor's Choice Awards](https://osherove.com/blog/2003/5/19/editors-choice-awards.html) --- title: "Articles, Articles, Articles!" url: "https://osherove.com/blog/2003/5/19/articles-articles-articles.md" canonical: "https://osherove.com/blog/2003/5/19/articles-articles-articles.html" published: "2003-05-19T08:13:00" updated: "2003-05-19T08:13:00" tags: [".Net Original", "Cool Articles"] author: "Roy Osherove" description: "Want something to read? Go here and just press the \"Go\" button." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Articles, Articles, Articles! By Roy Osherove May 19, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Articles](https://osherove.com/blog/category/cool-articles) **Historical article** · Originally published May 19, 2003; technical details may be outdated. Want something to read? Go [here](http://msdn.microsoft.com/msdnmag/find/tech.aspx) and just press the "Go" button. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 20, 2003 ### [UI Threading - A Very Simple Solution](https://osherove.com/blog/2003/5/20/ui-threading-a-very-simple-solution.html) - May 19, 2003 ### [Ingo Rocks Too](https://osherove.com/blog/2003/5/19/ingo-rocks-too.html) - May 17, 2003 ### [UI Threading Helper Classes](https://osherove.com/blog/2003/5/17/ui-threading-helper-classes-1.html) - May 15, 2003 ### [System.Text.Encoding.Tip](https://osherove.com/blog/2003/5/15/systemtextencodingtip.html) --- title: "The Star Wars - Kid Gets An Upgrade" url: "https://osherove.com/blog/2003/5/19/the-star-wars-kid-gets-an-upgrade.md" canonical: "https://osherove.com/blog/2003/5/19/the-star-wars-kid-gets-an-upgrade.html" published: "2003-05-19T07:56:00" updated: "2003-05-19T07:56:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Guilty about laughing at a geeky teenager whose private video has been downloaded millions of times off the Net, a pair of webloggers is raising money for the young man they call the 'Star Wars Kid.' By Leander Kahney.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Star Wars - Kid Gets An Upgrade By Roy Osherove May 19, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 19, 2003; technical details may be outdated. Guilty about laughing at a geeky teenager whose private video has been downloaded millions of times off the Net, a pair of webloggers is raising money for the young man they call the 'Star Wars Kid.' By Leander Kahney. \[via [Wired](http://www.wired.com/news/culture/0,1284,58881,00.html)\]   ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 21, 2003 ### [Assorted News](https://osherove.com/blog/2003/5/21/assorted-news.html) - May 20, 2003 ### [I'm In!](https://osherove.com/blog/2003/5/20/im-in.html) - May 19, 2003 ### [About Productivity](https://osherove.com/blog/2003/5/19/about-productivity.html) - May 18, 2003 ### [When Blogs Go Commercial](https://osherove.com/blog/2003/5/18/when-blogs-go-commercial.html) --- title: "About Productivity" url: "https://osherove.com/blog/2003/5/19/about-productivity.md" canonical: "https://osherove.com/blog/2003/5/19/about-productivity.html" published: "2003-05-19T07:30:00" updated: "2003-05-19T07:30:00" tags: ["Cool Tools", "Off Topic", "Tips & Tricks"] author: "Roy Osherove" description: "Although I've been working for quite some time now as a developer, with several companies and developer teams, I am still amazed at how un-productive some developers can be. As a developer, I always feel I need to know…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About Productivity By Roy Osherove May 19, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published May 19, 2003; technical details may be outdated. Although I've been working for quite some time now as a developer, with several companies and developer teams, I am still amazed at how un-productive some developers can be. As a developer, I always feel I need to know the tools I work with to the degree that I sometimes feel as though they are an extension to my fingers. It can get to a state where I can sometimes get things done almost as fast as I can think them. Whether its writing repeating code patterns, working with files or using DOS command lines – I always feel a bit naked without having a good tool that allows me to wrap things up in an easy configurable way and allows me to run tasks using shortcuts. Yes. The keyboard is my best friend, and I'm not ashamed to say it. (On another note, I'm still trying to master blind-typing using Typing tutors, but somehow, I always get distracted by things to do, people to see – you know how it is. I still type pretty damn fast, but I think I'm starting to feel the effects on my hands – I sometimes get some pains in my knuckles – That can’t be good, can it?) One of the few cons of this practice is that sometimes, when I get a task to do, I'll almost always try to find a way to do it faster and easier (i.e. "Lazy Programming"), which sometimes, ironically, makes the initial effort take a bit longer than expected. In later efforts, however, I've found this to drastically improve productivity and makes for a less daunting task analysis… **Example**: I was given a task to go over several dozen text files using some command line tools, then go over it with more command line tools and refactor the output files. Also I had to re-arrange some files, find and replace text inside them and generally have a field day with the file system… A fellow developer got the same tasks on a different group of files. To do this task, I used [Total Commander](http://www.ghisler.com/) and [UltraEdit](http://www.ultraedit.com/)  . I used TC to move files, find them and rename them (It has a fabulous Multi-Rename tool) And UltraEdit to edit files, and, most importantly, Run the command line tools against any open files. I was done with all the work in about an **hour and a half**. By that time, the other developer with the same task and same amount of files was able to handle **less then 10%** of the work assigned to them. That developer does not "like" working with anything else then Windows Explorer and Notepad. Amazingly enough, most developers I've encountered aren’t even willing to learn this basic stuff, or are deterred by it. Looking at TC for the first time can be daunting. It's not exactly beautiful. But who cares about that? **It just works.fast.** For developers, Windows applications and tools they use should not be all about beauty, but about usability and productiveness. As developers, we need to make that distinction as well, and start learning to use stuff that can sometimes be a bit crude but gets the job done. That's part of the reason some people still like working with the command line interface. It's basically easier to get things done than going through menus and sub menus with the mouse. I find that the tools in the middle – that can combine these two traits – are the ones most likely to be used by developers. Some developers may say "well, I'm not a **power user**". Well, you **should** be. **You're not a regular user**. You should know the platform you're working on like the palm of your hand. You should find tools, loopholes, shortcuts and whatever the hell will let you make things easier and faster. It's a bloody jungle out there. You can either go through the grass near the edges, and thus taking the long-long road, or you can get yourself a machete, and plow your way through in 10% of the time – leaving yourself plenty of time to play solitaire ;) ##### _Wake up!_ - If you're still using notepad, find a good editor. If you're already using an editor – find and examine all of it's options, shortcuts, macros. Everything. - If you're working with files – make sure you find a better file-manager to use. - Learn how to use the keyboard. - If you get a repetitive task – think how you can make it easier. Try to find a way to record it. - Learn scripting in windows - Find toys and gizmos to make your window experience easier –I have plenty – Just look at the links under "**In my sysTray**"  in my blog for some examples - Even a Tabbed browser instead of good ol' IE makes it easier to find information while removing lots of clutter from your desktop. [AvantBrowser](http://www.avantbrowser.com/) is a good free one. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 21, 2003 ### [Assorted News](https://osherove.com/blog/2003/5/21/assorted-news.html) - May 19, 2003 ### [I Was Naked](https://osherove.com/blog/2003/5/19/i-was-naked.html) - May 19, 2003 ### [Editor's Choice Awards](https://osherove.com/blog/2003/5/19/editors-choice-awards.html) - May 18, 2003 ### [FeedDemon](https://osherove.com/blog/2003/5/18/feeddemon.html) --- title: "Editor's Choice Awards" url: "https://osherove.com/blog/2003/5/19/editors-choice-awards.md" canonical: "https://osherove.com/blog/2003/5/19/editors-choice-awards.html" published: "2003-05-19T06:47:00" updated: "2003-05-19T06:47:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "OK, I give up. UltraEdit is the best Text editor I've used. The only thing missing from it (that exists in most other editors) is the ability to press ALT and then select text using Block mode. No.You have to enter…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Editor's Choice Awards By Roy Osherove May 19, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 19, 2003; technical details may be outdated. OK, I give up. [UltraEdit](http://www.ultraedit.com/) is **the** best Text editor I've used. The only thing missing from it (that exists in most other editors) is the ability to press ALT and then select text using Block mode. No.You have to enter block mode using a menu. that sucks. [Textpad](http://www.textpad.com/) is the next cool editor. It features 95% of UE's functionality, but with a smaller footprint and faster load times.  I've found EmEditor to be ,well, less than satisfactory to say the least. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 19, 2003 ### [I Was Naked](https://osherove.com/blog/2003/5/19/i-was-naked.html) - May 19, 2003 ### [About Productivity](https://osherove.com/blog/2003/5/19/about-productivity.html) - May 18, 2003 ### [FeedDemon](https://osherove.com/blog/2003/5/18/feeddemon.html) - May 15, 2003 ### [One Cool Menu](https://osherove.com/blog/2003/5/15/one-cool-menu.html) --- title: "When Blogs Go Commercial" url: "https://osherove.com/blog/2003/5/18/when-blogs-go-commercial.md" canonical: "https://osherove.com/blog/2003/5/18/when-blogs-go-commercial.html" published: "2003-05-18T03:58:00" updated: "2003-05-18T03:58:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Hmm.. Reading through Chris Pirillo's Brain-Trust initiative I must say - This is a pretty smart idea! However, one thing I don't understand: Here's one of the testimonials from that page: \"Just wanted to let you know…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # When Blogs Go Commercial By Roy Osherove May 18, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 18, 2003; technical details may be outdated. Hmm.. Reading through Chris Pirillo's [Brain-Trust initiative](http://www.pirillo.com/)  I must say - This is a pretty smart idea! However, one thing I don't understand:  Here's one of the testimonials from that page: _"Just wanted to let you know that you have brought OnlineHomeBase more users than any other media report about the service. 14% of my frequent users cite \[you\] as the place where they heard about OHB. The New York Times is a close second with 13.6% of frequent users citing it. So, you're more influential than the New York Times!" ~_ [_Marc Fest_](http://www.marcfest.com/)_, QuickBrowse creator_ Does this mean that you can pay chris to blog about you? It seems to me this hurts the credibility of his blog(If my assumption is correct). I'm the last person to judge, but I'd hate to see a great personal blog become a commercial-fest disguised as 'personal musings'. It could be as annoying as the "Articles" you see in the newspaper that talk about how great a new product is , but if you look closely you'll see it says "Ad" written in small letters at the top. This is more of a general issue - Personal blogs become so popular that they can become commercial-ridden animals. Should we require these blogs to note which is an ad for something and which is not? What would the ethics of this be? **Update:** [Marc fest](https://osherove.com/blog/2003/5/18/www.marcfest.com) just contacted me and wrote the following: “_Just for the record, I never paid Chris anything. When I sent him that email I didn't even know that he was going to use it as a testimonial. I sent it to him as a private note because I thought it was curious and noteworthy that a write-up on his site, Lockergnome.com, would bring me more signups than an article in the New York Times._“ _“...Oh, and now I see where some confusion may have come from. Because he quotes me in the Braintrust context, it may seem that I paid Chris to be part of his Braintrust. In fact, I never have subscribed to it and never have partaken in any of its discussions. But I understand how you came to your conclusions...”_ ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 30, 2003 ### [About "Personal" Blogging](https://osherove.com/blog/2003/5/30/about-quotpersonalquot-blogging.html) - May 27, 2003 ### [BlogWear](https://osherove.com/blog/2003/5/27/blogwear.html) - May 11, 2003 ### [Mind Rates](https://osherove.com/blog/2003/5/11/mind-rates.html) - May 9, 2003 ### [Enlightenment](https://osherove.com/blog/2003/5/9/enlightenment.html) --- title: "FeedDemon" url: "https://osherove.com/blog/2003/5/18/feeddemon.md" canonical: "https://osherove.com/blog/2003/5/18/feeddemon.html" published: "2003-05-18T03:41:00" updated: "2003-05-18T03:41:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "FeedDemon looks like a dream RSS reader. It's from the same guy who created HomeSite and TopStyle Pro, so it should be a real treat! The screenshots are mouth watering... (Thanks to Pirillo for the link)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # FeedDemon By Roy Osherove May 18, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 18, 2003; technical details may be outdated. [FeedDemon](http://www.bradsoft.com/feeddemon/) looks like a dream RSS reader. It's from the same guy who created HomeSite and TopStyle Pro, so it should be a real treat! The screenshots are mouth watering... (Thanks to [Pirillo](http://chris.pirillo.com/) for the link) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 19, 2003 ### [About Productivity](https://osherove.com/blog/2003/5/19/about-productivity.html) - May 19, 2003 ### [Editor's Choice Awards](https://osherove.com/blog/2003/5/19/editors-choice-awards.html) - May 15, 2003 ### [One Cool Menu](https://osherove.com/blog/2003/5/15/one-cool-menu.html) - May 12, 2003 ### [Blindfolded](https://osherove.com/blog/2003/5/12/blindfolded.html) --- title: "UI Threading Helper Classes" url: "https://osherove.com/blog/2003/5/17/ui-threading-helper-classes-1.md" canonical: "https://osherove.com/blog/2003/5/17/ui-threading-helper-classes-1.html" published: "2003-05-17T21:53:00" updated: "2003-05-17T21:53:00" tags: [".Net Original"] author: "Roy Osherove" description: "Following up on my post about how UI threading sucks , and Julie's post about the subject (Julie or Julia? which is it?), I've decided to create some helper classes for working with UI threads. Meet UIThreadHandler and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # UI Threading Helper Classes By Roy Osherove May 17, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 17, 2003; technical details may be outdated. Following up on my post about how [UI threading sucks](http://dotnetweblogs.com/rosherove/posts/6554.aspx) , and [Julie's post](http://dotnetweblogs.com/jlerman/posts/6562.aspx) about the subject (Julie or Julia? which is it?), I've decided to create some helper classes for working with UI threads. Meet **UIThreadHandler** and **UIThreadManager**. Basically, they save you a lot of time by saving you the trouble of creating method stubs which call Invoke() on the form (which is what you need to do when getting events from a separate thread). You can read all about them and how to use them - [here](http://dotnetweblogs.com/rosherove/story/7171.aspx), or you can just [download the code](http://www.codeproject.com/useritems/VSNetRegHelper/UIManager.zip) and look. **but here's a taste**: This is all I need to do to call events from a separate thread - no need to create a method stub   - just creating a new **UIThreadHandler** does the job: EventThrower e = new EventThrower(); UIThreadHandler h = UIManager.CreateHandler(this,new EventHandler(this.UpdateProgressBar)); e.OnEventThrow+=new MyHandler(h.BaseEventHandler); e.Start(); I think these classes could be expended much further, but for now they save me a bunch of time already. Have fun :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 19, 2003 ### [Ingo Rocks Too](https://osherove.com/blog/2003/5/19/ingo-rocks-too.html) - May 19, 2003 ### [Articles, Articles, Articles!](https://osherove.com/blog/2003/5/19/articles-articles-articles.html) - May 15, 2003 ### [System.Text.Encoding.Tip](https://osherove.com/blog/2003/5/15/systemtextencodingtip.html) - May 14, 2003 ### [A Long Day!](https://osherove.com/blog/2003/5/14/a-long-day.html) --- title: "UI Threading Helper Classes" url: "https://osherove.com/blog/2003/5/17/ui-threading-helper-classes.md" canonical: "https://osherove.com/blog/2003/5/17/ui-threading-helper-classes.html" published: "2003-05-17T21:35:00" updated: "2003-05-17T21:35:00" tags: [] author: "Roy Osherove" description: "UI Threading Helper Classes ( Download the code ) One of the most cumbersome things you will ever have to do with Winforms is updating your User interface while receiving events from another thread. For example, you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # UI Threading Helper Classes By Roy Osherove May 17, 2003 **Historical article** · Originally published May 17, 2003; technical details may be outdated. ## _UI Threading Helper Classes_ ([Download the code](http://www.codeproject.com/useritems/VSNetRegHelper/UIManager.zip)) One of the most cumbersome things you will ever have to do with Winforms is updating your User interface while receiving events from another thread. For example, you have a long-running method, but you want to show a progress bar while it runs. To make the application responsive during execution of this method, you decide to run the method in a new Thread. No problems! However, you can't just call methods on the progress bar control from the running method. The reason lies in the fact that the Progress bar is part of the Form thread, which is different from the Method thread. Calling methods on another thread can lead to application hangs and other great stuff. The only way to call methods on the progress bar control is by calling the Form.Invoke() method, which takes a delegate to a method which would perform this operation. Form.Invoke() performs the invocations using the Form's thread, which is the "good" way to perform these operations. This means that every time you want to update your UI from another thread, you'd need to create 2 separate methods and 2 separate delegates. One method and delegate to recieve the event from the thread which then "**Invoke**"s another delegate to a method on the form, whcih actually updates the UI. **Agh**. Isn't that wonderful? ## _Enter the UI Threading Helper Classes!_ Using these babies, It’s much easier to create a delegate and call it from another thread. They are comprised of two classes: **UIThreadManager**, and **UIThreadHandler**. **UIThreadHandler** is the one doing all the hard work. It works simply by holding a reference to the delegate on the form which you would like to Invoke, and a reference to the Actual form instance. What it **saves** you is from writing those most common Delegate stubs which would call Invoke on the form. To do this , it contains a public method called BaseEventHandler which is overloaded by 6 variations . The most common variations on which Event Handler methods are written.  So, it will contain the signature for the EventHandler Delegate type, and also an Empty signature, single object, 2 objects, int and string. You can also extend this functionality by either adding overloads or deriving from this class. **UIThreadManager** allows for easy creation of new UIThreadHandler instances, and holds them in memory using an ArrayList. Very simple. Here are three variations on using these classes: **1)**      **I have a long running loop in another thread which throws an EventHandler type of event. I want to receive this event and call a UI updating method:** //m\_uimgr is an instance of UIThreadManager                   EventThrower e = new EventThrower();                   e.OnEventThrow+=m\_uimgr.NewHandler(this,new EventHandler(this.UpdateProgressBar));                   e.Start();       As you can understand**, m\_uimgr** creates an instance of a new **UIThreadHandler**, loads it with the provided form and delegate, and returns a delegate to one of its stub methods which, when called, calls Invoke() on the main Form. **2)**      **I have an event other than EventHandler type, Or I have derieved from the UIThreadHandler and would like to use a different stub method of the new class as a delegate to my thread events.**                   EventThrower e = new EventThrower();                   UIThreadHandler h = m\_uimgr.CreateHandler(this,new EventHandler(this.UpdateProgressBar)); e.OnEventThrow+=new MyHandlerDelegate(h.BaseEventHandler);                   e.Start();             This technique allows you to either add more overloads to the BaseEventHandler Method, for more flexibility. **3)**      **I have derived from UIThreadHandler and created by own Delegate Handlers**                   EventThrower e = new EventThrower();                   UIThreadHandler h = new UIThreadHandler(this,new MyEventHandler(this.UpdateProgressBar));                   m\_uimgr.AddHandler(h);                   e.OnEventThrow+=new MyHandlerDelegate(h.CustomEventHandler);                   e.Start(); ### Here’s the code for these classes. Have fun. And , if you have some more ideas and suggestions – I’d like to know! ([Download the code](http://www.codeproject.com/useritems/VSNetRegHelper/UIManager.zip)) ##### _\---------Copy And Paste the following code into an empty .Cs File--------_ using System; using System.Collections; using System.Windows.Forms; namespace Royo.UIThreading {       ///       /// Manages a collection of UIThreadHandlers       /// And allows easy creation of UIThreadHandler Instances       ///       public class UIThreadManager       {             //Priate collection of Thread Handlers             protected ArrayList m\_ThreadHandlers = new ArrayList();             ///             /// All instances of UIThreadHandlers currently in memory             ///             public ArrayList ThreadHandlers             {                   get                   {                         return m\_ThreadHandlers;                   }             }             public UIThreadManager()             {             }             ///             /// Creates and instance of a UIThreadHandler class             /// and adds it to the collection of current Handlers             ///             /// The target Control on which the new handler will invoke a delegate             /// The target delegate whcih will be invoked on the Control instance             /// The created handler             public  UIThreadHandler CreateHandler(Control TargetControl,EventHandler HandlerDelegateInControl)             {                   UIThreadHandler handler = new UIThreadHandler(TargetControl,HandlerDelegateInControl);                   m\_ThreadHandlers.Add(handler);                   return handler;             }             ///             /// Creates and instance of a UIThreadHandler class             /// and adds it to the collection of current Handlers             ///             /// The target Control on which the new handler will invoke a delegate             /// The target delegate whcih will be invoked on the Control instance             /// The created handler             public UIThreadHandler CreateHandler(Control TargetControl,Delegate HandlerDelegateInControl)             {                   UIThreadHandler handler = new UIThreadHandler(TargetControl,HandlerDelegateInControl);                   m\_ThreadHandlers.Add(handler);                   return handler;             }             ///             /// Creates an instance of a new UIThreadHandler Class             /// And adds it to the collection of handlers.             /// Then returns a new delegate of type EventHandler             /// which points to a method on the new UIThreadHandler.             ///             /// The target Control on which the new handler will invoke a delegate             /// The target delegate whcih will be invoked on the Control instance             /// An EventHandler Delegate to a method on the UIThread Handler             public EventHandler NewHandler(Control TargetControl,EventHandler HandlerDelegateInControl)             {                         UIThreadHandler handler = CreateHandler(TargetControl,HandlerDelegateInControl);                         return new EventHandler(handler.BaseEventHandler);             }             ///             /// Removes a UIThreadHandler from the Collection of UIHandlers             ///             /// UIThreadHandler Instance to remove             public void RemoveHandler(UIThreadHandler handler)             {                   try                   {                         m\_ThreadHandlers.Remove(handler);                   }                   catch(Exception e){}             }             ///             /// Add a custom handler to the current collection             ///             ///             public void AddHandler(UIThreadHandler handler)             {                   try                   {                         m\_ThreadHandlers.Add(handler);                   }                   catch(Exception e){}             }       }       //////////////////////////////////////////////////////////////////       //////////////////////////////////UIThreadHandler/////////////////       //////////////////////////////////////////////////////////////////       ///       /// This class represents an instance of a UI method caller       /// Its only job is to recieve a delegate found on       /// an instance of a control(usually a form) and to invoke that delegate       /// When it recieved an event       ///       public class UIThreadHandler       {             //The delegate which is called on the UI thread using "m\_TargetControl.Invoke()"             protected System.Delegate m\_ControlHandler;             //The Control (Usualoy A Form) on which to Invoke a UI delegate             protected Control m\_TargetControl;             ///             /// Creates an instance of UIThreadHandler             /// Along with its associated Form and Delegate             /// on which to invoke UI thread-related events             ///             /// The Form instance on which UI actions are performed             /// A delegate pointing to a method on the Form instance             /// Which updates a control on the Form             ///             ///               EventThrower e = new EventThrower();             ///               e.OnEventThrow+=new EventHandler(m\_uimgr.CreateHandler(this,new ///EventHandler(Handler11)).BaseEventHandler);             ///               e.Start();             ///             public UIThreadHandler(Control TargetControl,Delegate HandlerDelegateInControl)             {                   m\_TargetControl\= TargetControl;                   m\_ControlHandler = HandlerDelegateInControl;             }             ///             /// A method which matches most basic event handlers             /// Use this to create a delegate which recieves events             /// which need to trigger UI actions in the form thread.             ///             ///             ///             public void BaseEventHandler(object source, EventArgs args)             {                   try                   {                         if(m\_ControlHandler!=null)                         {                               object\[\] arr = new object\[\]{source,args};                               m\_TargetControl.Invoke(m\_ControlHandler,arr);                         }                   }                   catch(Exception e)                   {                         string se =e.ToString();                         System.Diagnostics.Debug.WriteLine(e.ToString());                   }             }             public void BaseEventHandler(object source, object args)             {                   if(m\_ControlHandler!=null)                   {                         object\[\] arr = new object\[\]{source,args};                         m\_TargetControl.Invoke(m\_ControlHandler,arr);                   }             }             public void BaseEventHandler()             {                   if(m\_ControlHandler!=null)                   {                         m\_TargetControl.Invoke(m\_ControlHandler);                   }             }             public void BaseEventHandler(int arg)             {                   if(m\_ControlHandler!=null)                   {                         m\_TargetControl.Invoke(m\_ControlHandler,new object\[\]{arg});                   }             }             public void BaseEventHandler(long arg)             {                   if(m\_ControlHandler!=null)                   {                         m\_TargetControl.Invoke(m\_ControlHandler,new object\[\]{arg});                   }             }             public void BaseEventHandler(object arg)             {                   if(m\_ControlHandler!=null)                   {                         m\_TargetControl.Invoke(m\_ControlHandler,new object\[\]{arg});                   }             }             public void BaseEventHandler(string arg)             {                   if(m\_ControlHandler!=null)                   {                         m\_TargetControl.Invoke(m\_ControlHandler,new object\[\]{arg});                   }             }             ///             /// Explicitly Invoke the Delegate on the Form Instance             /// using the specifies parameters             ///             /// any parameters whcih need to be sent to the             /// delegate on the Form Instance             public void Invoke(params object\[\] args)             {                   m\_TargetControl.Invoke(m\_ControlHandler,args);             }       } } --- title: "Blog style change" url: "https://osherove.com/blog/2003/5/15/blog-style-change.md" canonical: "https://osherove.com/blog/2003/5/15/blog-style-change.html" published: "2003-05-15T20:38:00" updated: "2003-05-15T20:38:00" tags: [".NetWeblogs Site"] author: "Roy Osherove" description: "OK. I've changed the CSS style of the blog. Although I liked the layout of the old one, I had a real problem with its lack of seperation between different posts. The current style has HR's between them, so everything…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blog style change By Roy Osherove May 15, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) **Historical article** · Originally published May 15, 2003; technical details may be outdated. OK. I've changed the CSS style of the blog. Although I liked the layout of the old one, I had a real problem with its lack of seperation between different posts. The current style has HR's between them, so everything looks much better IMHO. If you preferred the older one, I'd like to know it, and the reason too. I might change my mind... Hopefully, we'd get some more CDD templates soon..? How about an option for a user to upload his own CSS to be used by his blog? Just need the spec for what's needed, and your set, huh? ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - May 30, 2003 ### [Scott Branches](https://osherove.com/blog/2003/5/30/scott-branches.html) - May 30, 2003 ### [Congratulations ScottW](https://osherove.com/blog/2003/5/30/congratulations-scottw.html) - May 10, 2003 ### [Mort Banner - Revised](https://osherove.com/blog/2003/5/10/mort-banner-revised.html) - May 9, 2003 ### [Enlightenment](https://osherove.com/blog/2003/5/9/enlightenment.html) --- title: "Please don't spoil it for us" url: "https://osherove.com/blog/2003/5/15/please-dont-spoil-it-for-us.md" canonical: "https://osherove.com/blog/2003/5/15/please-dont-spoil-it-for-us.html" published: "2003-05-15T10:40:00" updated: "2003-05-15T10:40:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Guys. Please don't post any spoilers about the new Matrix. It just ruins it for the rest of us who get to see it only on the 22'nd :( Once you post these things, I just can't help but reading them... c'mon. There's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Please don't spoil it for us By Roy Osherove May 15, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 15, 2003; technical details may be outdated. Guys. Please don't post any spoilers about the new Matrix. It just ruins it for the rest of us who get to see it only on the 22'nd :( Once you post these things, I just can't help but reading them... c'mon. There's plenty of info out there for anyone who wants to spoil it for himself, but if I come in to read .NetWeblogs and get a Matrix Spoiler, well, that's just wrong ,isn't it? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 19, 2003 ### [About Productivity](https://osherove.com/blog/2003/5/19/about-productivity.html) - May 18, 2003 ### [When Blogs Go Commercial](https://osherove.com/blog/2003/5/18/when-blogs-go-commercial.html) - May 15, 2003 ### [On another note...](https://osherove.com/blog/2003/5/15/on-another-note.html) - May 14, 2003 ### [About Design](https://osherove.com/blog/2003/5/14/about-design.html) --- title: "One Cool Menu" url: "https://osherove.com/blog/2003/5/15/one-cool-menu.md" canonical: "https://osherove.com/blog/2003/5/15/one-cool-menu.html" published: "2003-05-15T10:34:00" updated: "2003-05-15T10:34:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "SharpLibrary rocks. Get it here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # One Cool Menu By Roy Osherove May 15, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 15, 2003; technical details may be outdated. SharpLibrary rocks. Get it [here](http://www.sharplibrary.com/) . ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 27, 2003 ### [Good Stuff](https://osherove.com/blog/2003/5/27/good-stuff.html) - May 26, 2003 ### [Dynamic Invocation with Reflection.Emit](https://osherove.com/blog/2003/5/26/dynamic-invocation-with-reflectionemit.html) - May 13, 2003 ### [MSDN Hands-On Labs](https://osherove.com/blog/2003/5/13/msdn-hands-on-labs.html) - May 9, 2003 ### [.Net Coding Conventions](https://osherove.com/blog/2003/5/9/net-coding-conventions.html) --- title: "Shortcuts: Object Search and Toolbox Magic" url: "https://osherove.com/blog/2003/5/15/shortcuts-object-search-and-toolbox-magic.md" canonical: "https://osherove.com/blog/2003/5/15/shortcuts-object-search-and-toolbox-magic.html" published: "2003-05-15T10:23:00" updated: "2003-05-15T10:23:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "Some more shortcuts I've learned: ALT+F12 - Open the \"Object Search\" window CTRL-ALT-X - Open the Toolbox window CTRL-Up/Down - With the toolbox window open, Navigate between the different Toolbox panes (Useful for…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Shortcuts: Object Search and Toolbox Magic By Roy Osherove May 15, 2003 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published May 15, 2003; technical details may be outdated. Some more shortcuts I've learned: **ALT+F12** - Open the "Object Search" window **CTRL-ALT-X** \- Open the Toolbox window  **CTRL-Up/Down** - With the toolbox window open, Navigate between the different Toolbox panes (Useful for moving to the Multiple Copy/Paste - memories!) And of course, In any active dockable pane - **ESC** brings you back to the code window.. ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - May 20, 2003 ### [UI Threading - A Very Simple Solution](https://osherove.com/blog/2003/5/20/ui-threading-a-very-simple-solution.html) - May 19, 2003 ### [About Productivity](https://osherove.com/blog/2003/5/19/about-productivity.html) - May 8, 2003 ### [A Better RegEdit](https://osherove.com/blog/2003/5/8/a-better-regedit.html) - May 8, 2003 ### [System Tweaks & Tricks](https://osherove.com/blog/2003/5/8/system-tweaks-amp-tricks.html) --- title: "System.Text.Encoding.Tip" url: "https://osherove.com/blog/2003/5/15/systemtextencodingtip.md" canonical: "https://osherove.com/blog/2003/5/15/systemtextencodingtip.html" published: "2003-05-15T08:46:00" updated: "2003-05-15T08:46:00" tags: [".Net Original"] author: "Roy Osherove" description: "I learned this the hard way, so you don't have to. This applies to anyone who is going to be using System.IO to read ANSI files that combine Hebrew And English mixed inside. Now, when I attempted to do this, I used the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # System.Text.Encoding.Tip By Roy Osherove May 15, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 15, 2003; technical details may be outdated. I learned this the hard way, so you don't have to. This applies to anyone who is going to be using System.IO to read ANSI files that combine Hebrew **And** English mixed inside. Now, when I attempted to do this, I used the StreamReader class, which is pretty simple to use: StreamReader r = new StreamReader(myFile); string MyText = r.ReadToEnd(); r.Close(); Ah! but there's one important caveat you'll notice when you try to MyText. The hebrew string inside will vanish without a trace, leaving you with a big heart attack... To fix this problem, you'll need to specify the encoding in which the file is formatted. This is done by specifying one of the **Encoding** Classes available through **System.Text.Encoding.\***  like so: StreamReader r = new StreamReader(myFile,System.Text.Encoding.Default); What I found is that passing any other encoding type does not work for these files , and either truncates the text or displays garbage.  Since Encoding.Default automatically gets the encoding with the same codepage used by your system it saves you from the trouble of trying to figure this stuff out. I have no borderline cases to check against, but it seems to work perfectly for me. Conclusion: when  reading an ANSI file, or if you're having problem reading any text file format, first try to read it by passing in Encoding.Default, and only then all the other types. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 19, 2003 ### [Articles, Articles, Articles!](https://osherove.com/blog/2003/5/19/articles-articles-articles.html) - May 17, 2003 ### [UI Threading Helper Classes](https://osherove.com/blog/2003/5/17/ui-threading-helper-classes-1.html) - May 14, 2003 ### [A Long Day!](https://osherove.com/blog/2003/5/14/a-long-day.html) - May 13, 2003 ### [Strip HTML tags from a string using regular expressions](https://osherove.com/blog/2003/5/13/strip-html-tags-from-a-string-using-regular-expressions.html) --- title: "On another note..." url: "https://osherove.com/blog/2003/5/15/on-another-note.md" canonical: "https://osherove.com/blog/2003/5/15/on-another-note.html" published: "2003-05-15T06:04:00" updated: "2003-05-15T06:04:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Finally, a windows release that works" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # On another note... By Roy Osherove May 15, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 15, 2003; technical details may be outdated. Finally,  a [windows release that works](http://www.deanliou.com/WinRG/WinRG.htm) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 18, 2003 ### [When Blogs Go Commercial](https://osherove.com/blog/2003/5/18/when-blogs-go-commercial.html) - May 15, 2003 ### [Please don't spoil it for us](https://osherove.com/blog/2003/5/15/please-dont-spoil-it-for-us.html) - May 14, 2003 ### [About Design](https://osherove.com/blog/2003/5/14/about-design.html) - May 13, 2003 ### [Expression Boy](https://osherove.com/blog/2003/5/13/expression-boy.html) --- title: "About Design" url: "https://osherove.com/blog/2003/5/14/about-design.md" canonical: "https://osherove.com/blog/2003/5/14/about-design.html" published: "2003-05-14T19:53:00" updated: "2003-05-14T19:53:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Alan Cooper says (Among others) that good GUI design is not necessarily referring to software. A good design shows in usability and practicality. For example, Here's an alarm clock similar to the alarm clock we have…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About Design By Roy Osherove May 14, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 14, 2003; technical details may be outdated. Alan Cooper says (Among others) that good GUI design is not necessarily referring to software. A good design shows in usability and practicality. For example, Here's an alarm clock similar to the alarm clock we have near our bed. ![](https://osherove.com/img/wb/a58c5c08_secure.igia.com_products_160_AT222.jpg)Among other things, this clock has a night-light feature, meaning you can see what time it is even during night time. Cool. But here’s a design flaw: The little light bulb that lights up when you hit the magic button is located on the upper-right corner of the clock (In the picture, the little hand points directly to the bulb’s location). Why is that a bad design  decision you ask? Well, try to think about it a little. The most likely time in which I would press this button is on two occasions: ·         It’s the middle of the night and I want to see what time it is ·         I want to set the alarm when I’m already in bed (We don’t have a light switch near the heads of the bed) It’s the second purpose I’m having trouble with. You see, Most folks usually set their alarms to around 6-7 AM. Now, the little hand that points at the alarm time is rusty-copper kinda colour. The trouble is the light from the bulb is so weak, you can’t clearly see where exactly the alarm hand is pointing at. You can barely see the beginning of it, but the tip is lost. You have to twiddle and twist in your bed in funny positions in order to make out the correct time. The solution is simple: - Either put on the bulb near the lower left of the clock - Or put another bulb in there - Or Make the original bulb stronger - Or make the hand that points the alarm easier to see in the dark **On another design note**: Have you ever thought why your steering wheel has holes inside it? Think what would happen if you didn’t – You wouldn’t be able to see all the gauges and speed dials, would you? :) (Yes, I'm aware that it's also there to have a hold of the wheel, but did you think of **my** reason..?) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 15, 2003 ### [Please don't spoil it for us](https://osherove.com/blog/2003/5/15/please-dont-spoil-it-for-us.html) - May 15, 2003 ### [On another note...](https://osherove.com/blog/2003/5/15/on-another-note.html) - May 13, 2003 ### [Expression Boy](https://osherove.com/blog/2003/5/13/expression-boy.html) - May 12, 2003 ### [Spammer Tactics](https://osherove.com/blog/2003/5/12/spammer-tactics.html) --- title: "A Long Day!" url: "https://osherove.com/blog/2003/5/14/a-long-day.md" canonical: "https://osherove.com/blog/2003/5/14/a-long-day.html" published: "2003-05-14T15:20:00" updated: "2003-05-14T15:20:00" tags: [".Net Original"] author: "Roy Osherove" description: "Arrgh! It's been a hell of a long day! Imagine going 7:45 - 20:15 head to head with something that you thought you could do in an hour! I'll post heavily on it later (And a rant about .Net as well) but for now I'll just…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Long Day! By Roy Osherove May 14, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 14, 2003; technical details may be outdated. Arrgh! It's been a hell of a long day! Imagine going 7:45 - 20:15 head to head with something that you thought you could do in an hour! I'll post heavily on it later (And a rant about .Net as well) but for now I'll just say that Parsing files with VB was easier(!!) in some ways... Argh! :(  [![](https://osherove.com/img/wb/637bbf62_www.smiley-faces.com_smilies_angry.gif)](https://osherove.com/img/wb/637bbf62_www.smiley-faces.com_smilies_angry.gif) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 17, 2003 ### [UI Threading Helper Classes](https://osherove.com/blog/2003/5/17/ui-threading-helper-classes-1.html) - May 15, 2003 ### [System.Text.Encoding.Tip](https://osherove.com/blog/2003/5/15/systemtextencodingtip.html) - May 13, 2003 ### [Strip HTML tags from a string using regular expressions](https://osherove.com/blog/2003/5/13/strip-html-tags-from-a-string-using-regular-expressions.html) - May 12, 2003 ### [June Is Officially here](https://osherove.com/blog/2003/5/12/june-is-officially-here.html) --- title: "Expression Boy" url: "https://osherove.com/blog/2003/5/13/expression-boy.md" canonical: "https://osherove.com/blog/2003/5/13/expression-boy.html" published: "2003-05-13T06:49:00" updated: "2003-05-13T06:49:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Following the footsteps of DataGrid Girl, should I call myself \" Regex Roy \"..? ;) P.S Speaking of Trillian, here's my ICQ - 1782510 (If I seem offline, tell me. I've been having some problems with this lately..)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Expression Boy By Roy Osherove May 13, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 13, 2003; technical details may be outdated. Following the footsteps of DataGrid Girl, should I call myself "**_Regex Roy_**"..? ;) P.S Speaking of Trillian, here's my ICQ - 1782510 (If I seem offline, tell me. I've been having some problems with this lately..) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 15, 2003 ### [On another note...](https://osherove.com/blog/2003/5/15/on-another-note.html) - May 14, 2003 ### [About Design](https://osherove.com/blog/2003/5/14/about-design.html) - May 12, 2003 ### [Spammer Tactics](https://osherove.com/blog/2003/5/12/spammer-tactics.html) - May 12, 2003 ### [Blindfolded](https://osherove.com/blog/2003/5/12/blindfolded.html) --- title: "Strip HTML tags from a string using regular expressions" url: "https://osherove.com/blog/2003/5/13/strip-html-tags-from-a-string-using-regular-expressions.md" canonical: "https://osherove.com/blog/2003/5/13/strip-html-tags-from-a-string-using-regular-expressions.html" published: "2003-05-13T06:41:00" updated: "2003-05-13T06:41:00" tags: [".Net Original"] author: "Roy Osherove" description: "Paschal asked me to find a simple solution for stripping HTML tags from a given string using Regular expressions. The solution is quite simple: 1. Retrieve all the HTML tags using this pattern: <(.|\\n)*?> 2. Replace…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Strip HTML tags from a string using regular expressions By Roy Osherove May 13, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 13, 2003; technical details may be outdated. Paschal [asked me](http://dotnetweblogs.com/pleloup/posts/5611.aspx) to find a simple solution for stripping HTML tags from a given string using Regular expressions. The solution is quite simple: 1\. Retrieve all the HTML tags using this pattern: **<(.|\\n)\*?>** 2\. Replace them with an empty string and return the result Here's a C# function that does this: private string StripHTML(string htmlString) { //This pattern Matches everything found inside html tags; //(.|\\n) - > Look for any character or a new line // \*?  -> 0 or more occurences, and make a non-greedy search meaning //That the match will stop at the first available '>' it sees, and not at the last one //(if it stopped at the last one we could have overlooked //nested HTML tags inside a bigger HTML tag..) // Thanks to [Oisin](http://www.boardex.com/) and [Hugh Brown](http://www.iwebthereforeiam.com/) for helping on this one... string pattern = @"<(.|\\n)\*?>"; return  Regex.Replace(htmlString,pattern,string.Empty); } Or with just one line of code: string stripped = Regex.Replace(textBox1.Text,@"<(.|\\n)\*?>",string.Empty); ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 15, 2003 ### [System.Text.Encoding.Tip](https://osherove.com/blog/2003/5/15/systemtextencodingtip.html) - May 14, 2003 ### [A Long Day!](https://osherove.com/blog/2003/5/14/a-long-day.html) - May 12, 2003 ### [June Is Officially here](https://osherove.com/blog/2003/5/12/june-is-officially-here.html) - May 12, 2003 ### [New Article: Practical Parsing Using Groups in Regular Expressions](https://osherove.com/blog/2003/5/12/new-article-practical-parsing-using-groups-in-regular-expres.html) --- title: "MSDN Hands-On Labs" url: "https://osherove.com/blog/2003/5/13/msdn-hands-on-labs.md" canonical: "https://osherove.com/blog/2003/5/13/msdn-hands-on-labs.html" published: "2003-05-13T06:06:00" updated: "2003-05-13T06:06:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Introducing MSDN Online Hands-On Labs MSDN offers you new interactive content on a trial basis from May 19 to June 13. Three free labs are being made available that can help you enhance your skills with Visual Studio…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSDN Hands-On Labs By Roy Osherove May 13, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 13, 2003; technical details may be outdated. <table><tbody><tr><td><div><a href="http://msdn.microsoft.com/labs/holo/">Introducing MSDN Online Hands-On Labs</a><br><span>MSDN offers you new interactive content on a trial basis from May 19 to June 13. Three free labs are being made available that can help you enhance your skills with Visual Studio .NET 2003 tools and languages. Try them out and give us your feedback. Registration begins May 12. Limited seats are available, so sign up now. </span></div></td></tr></tbody></table> \[via [MSDN](http://msdn.microsoft.com/)\] I'm signing in as we speak... ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 26, 2003 ### [Dynamic Invocation with Reflection.Emit](https://osherove.com/blog/2003/5/26/dynamic-invocation-with-reflectionemit.html) - May 15, 2003 ### [One Cool Menu](https://osherove.com/blog/2003/5/15/one-cool-menu.html) - May 9, 2003 ### [.Net Coding Conventions](https://osherove.com/blog/2003/5/9/net-coding-conventions.html) - May 9, 2003 ### [Windows Server 2003 for Developers](https://osherove.com/blog/2003/5/9/windows-server-2003-for-developers.html) --- title: "June Is Officially here" url: "https://osherove.com/blog/2003/5/12/june-is-officially-here.md" canonical: "https://osherove.com/blog/2003/5/12/june-is-officially-here.html" published: "2003-05-12T21:24:00" updated: "2003-05-12T21:24:00" tags: [".Net Original"] author: "Roy Osherove" description: "Need I say more?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # June Is Officially here By Roy Osherove May 12, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 12, 2003; technical details may be outdated. [![June 2003](https://osherove.com/img/wb/88d357b3_msdn.microsoft.com_msdnmag_images_covers_June03cover.gif)](http://msdn.microsoft.com/msdnmag/default.aspx)  Need I say more? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 14, 2003 ### [A Long Day!](https://osherove.com/blog/2003/5/14/a-long-day.html) - May 13, 2003 ### [Strip HTML tags from a string using regular expressions](https://osherove.com/blog/2003/5/13/strip-html-tags-from-a-string-using-regular-expressions.html) - May 12, 2003 ### [New Article: Practical Parsing Using Groups in Regular Expressions](https://osherove.com/blog/2003/5/12/new-article-practical-parsing-using-groups-in-regular-expres.html) - May 12, 2003 ### [More Books On My Shelf](https://osherove.com/blog/2003/5/12/more-books-on-my-shelf.html) --- title: "New Article: Practical Parsing Using Groups in Regular Expressions" url: "https://osherove.com/blog/2003/5/12/new-article-practical-parsing-using-groups-in-regular-expres.md" canonical: "https://osherove.com/blog/2003/5/12/new-article-practical-parsing-using-groups-in-regular-expres.html" published: "2003-05-12T20:44:00" updated: "2003-05-12T20:44:00" tags: [".Net Original"] author: "Roy Osherove" description: "Hi Folks. here's my latest article: Practical Parsing Using Groups in Regular Expressions Have fun :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New Article: Practical Parsing Using Groups in Regular Expressions By Roy Osherove May 12, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 12, 2003; technical details may be outdated. Hi Folks. here's my latest article: [Practical Parsing Using Groups in Regular Expressions](http://dotnetweblogs.com/rosherove/story/6946.aspx) Have fun :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 13, 2003 ### [Strip HTML tags from a string using regular expressions](https://osherove.com/blog/2003/5/13/strip-html-tags-from-a-string-using-regular-expressions.html) - May 12, 2003 ### [June Is Officially here](https://osherove.com/blog/2003/5/12/june-is-officially-here.html) - May 12, 2003 ### [More Books On My Shelf](https://osherove.com/blog/2003/5/12/more-books-on-my-shelf.html) - May 12, 2003 ### [Implementing A Data Layer](https://osherove.com/blog/2003/5/12/implementing-a-data-layer.html) --- title: "Practical Parsing Using Groups in Regular Expressions" url: "https://osherove.com/blog/2003/5/12/practical-parsing-using-groups-in-regular-expressions.md" canonical: "https://osherove.com/blog/2003/5/12/practical-parsing-using-groups-in-regular-expressions.html" published: "2003-05-12T20:40:00" updated: "2003-05-12T20:40:00" tags: ["Regular Expressions"] author: "Roy Osherove" description: "Practical Parsing Using Groups in Regular Expressions note: This article is part 2 in a series of articles. Here are the rest: Introduction To Regular Expressions What we’ll cover: The Purpose and syntax of groups in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Practical Parsing Using Groups in Regular Expressions By Roy Osherove May 12, 2003 In [Regular Expressions](https://osherove.com/blog/category/regular-expressions) **Historical article** · Originally published May 12, 2003; technical details may be outdated. ## _Practical Parsing Using Groups in Regular Expressions_ note: This article is part 2 in a series of articles. Here are the rest: - [_Introduction To Regular Expressions_](http://dotnetweblogs.com/rosherove/story/6863.aspx) ### What we’ll cover: - [The Purpose and syntax of groups in regular expressions](http://dotnetweblogs.com/rosherove/BlogAdmin/EditStory.aspx#_What_are_regular_expression%20groups) - [A simple C# code example of parsing strings using Expression Groups](http://dotnetweblogs.com/rosherove/BlogAdmin/EditStory.aspx#_Simple_Code_Demo) - [Using Multiple Matches from a given string](http://dotnetweblogs.com/rosherove/BlogAdmin/EditStory.aspx#_Using_Multiple_Matches_from%20a%20given) ### What’s you’ll need: - If you don’t know what regular expressions are then read [this article](http://dotnetweblogs.com/rosherove/story/6863.aspx). - [eXpresso](http://www12.brinkster.com/ultrapico/Expresso.htm)  (If you are not familiar with eXpresso, See [this](http://dotnetweblogs.com/rosherove/story/6863.aspx) article) - .Net Framework SDK (Visual Studio .Net preferred) #### What are regular expression groups and why do I need them? ##### _In order to explain that, let’s take a look at a simple example._ Open eXpresso. Clear both the data pane, and the expression pane. Next, put the following string in the data pane: **My birthday is 17/05/1975. Thank you.** From this string, we would like to search and extract any dates that appear there. Try coming up with an expression that matches this by yourself. If you want it the easy way, here’s an expression that’ll work: **\\d{2}/\\d{2}/\\d{4}** This expression expects 2 digits, then a slash, then 2 more digits followed by a slash followed by 4 digits. Granted, you could make this expression a bit more flexible and efficient but let’s keep it simple for the purpose of the article. Now, when you press the “Find Matches” button, you’ll get the string that matches the specified date. Good. However, in the real world, we would use this date inside our code. Let’s say we have a function that receives this date and wants to get the **month**, **date** and **year** as separate values in order to do various tasks with it. One solution would obviously be to use the **DateTime** Class found in the framework to parse this string. However, let’s try doing it another way. Assuming we don’t have the ability to use regular expressions, we would have to use standard text parsing functionality in order to determine the location of the first and second slashes, and then retrieve the strings that exist between them. This mundane task can be avoided easily. The solution is simple, and very powerful. The **Regex** Object model allows us to define Named groups within the specified regular expression. These groups are exposed using the “**Match.Groups**” property. We can get each group by name, and get its value using the **Group.Value** property. ##### _Let’s take a look at a modified expression, which divides the parsed date into sub-groups:_ To add a group to an expression, simply enclose the part of the expression you would like to be divided with round braces. For example, In order to divide the day section of the date, we would do this: **(\\d{2})/\\d{2}/\\d{4}** Let’s take a look at the expression after we have divided all 3 desired sub-groups: **(\\d{2})/(\\d{2})/(\\d{4})** ###### Paste the last expression into eXpresso and press “Find Matches”. You’ll see that you get the same output as before, but something is different: There’s a little “+” mark on the left!. Click on the “+” to expand the result. You’ll see that there are 3 sub groups below this global result. These sub groups each represent a “**Group**” object, which is part of the received “Match” Object. This tree view represents perfectly the hierarchical relationship of the object model. Notice, though, that the groups are not currently named; we haven’t named them yet; they are indexed by numbers starting from 1 by default. This means that you can call each group in code by specifying its index. Let’s name those groups to make them easier to call in code. The syntax to name a group is simply to add the following after the opening brace of the sub group: **?** Note: The name you provide is Case-sensitive! ##### _Let’s see how the final expression looks  after naming the groups:_ **(?<Day>\\d{2})/(?<Month>\\d{2})/(?<Year>\\d{4})** Pretty easy, right? Paste this expression into eXpresso and click “Find Matches”. You’ll get an expandable result again, but this time you’ll have names instead of index numbers. Now you’ll be able to call each groups value by just using the group’s name. #### Simple Code Demo //This function will receive             //a string containing a date. It will parse the date inside             // and print the value of the Day,Month and year of that date.             private void ParseDate(string date)             {                   //this is the pattern we'll use to match the date                   //and then divide it to sub groups                   string pattern = @"(?<Day>\\d{2})/(?<Month>\\d{2})/(?<Year>\\d{4})";                   //Retrieve the Parsed Match Object Using the Regex Object                   Match DateMatch = Regex.Match(date,pattern);                   //make sure there's actually a date in the string                   //we get a Match object anyway,                   //so we have to test it's 'Success' property;                   if(!DateMatch.Success)                   {                         MessageBox.Show("Could not find a date inside the string");                         return;                   }                   //Print the value of the global match result                   listBox1.Items.Add("The Whole Date Value Is: " + DateMatch.Value);                   //Get Each sub-group by name and print it's value                   //Notice that each group is sub-member of the match we received //Notice that the Names are Case-sensitive!                       listBox1.Items.Add("Day : " + DateMatch.Groups\["Day"\].Value);                   listBox1.Items.Add("Month : " + DateMatch.Groups\["Month"\].Value);                   listBox1.Items.Add("Year: " + DateMatch.Groups\["Year"\].Value);             } As you can see, the functionality is pretty straight forward. In order to get a sub group of the match result we simply call “Match.Groups\[GroupName\].Value” to get its value. ## _Using Multiple Matches from a given string_ In order to provide you with the ability to get to all the recieved matches, the Match Object has a “NextMatch() function, which returns a new Match Object. You’ll need to test it for Success value again. All you need to do is keep going until the **Match.Sucess** value is False. ##### _The Hard Way_ Here’s the same method from before, implemented to go through all the matches:       //This function will recieve             //a string containing a date. It will parse the date inside             // and print the value of the Day,Month and year of that date.             private void ParseDate(string date)             {                   //the pattern we'll use to match the date                   //and divide it to sub groups                   string pattern = @"(?<Day>\\d{2})/(?<Month>\\d{2})/(?<Year>\\d{4})";                   //Retrieve the Parsed Match Object Using the Regex Object                   Match DateMatch = Regex.Match(date,pattern);                   //make sure there's actually a date in the string                   //we get a Match object anyway,                   //so we have to test it's 'Success' property;                   if(!DateMatch.Success)                   {                         MessageBox.Show("Could not find a date inside the string");                         return;                   }                   //Iterate through all the parsing Matches and print them                   while (DateMatch.Success)                   {                         //Print the value of the global match result                         listBox1.Items.Add("The Whole Date Value Is: " + DateMatch.Value);                         //Get Each sub-group by name and print it's value                         //Notice that each group is sub-member of the match we received //Notice that the Names are Case-sensitive!                             listBox1.Items.Add("Day : " + DateMatch.Groups\["Day"\].Value);                         listBox1.Items.Add("Month : " + DateMatch.Groups\["Month"\].Value);                         listBox1.Items.Add("Year: " + DateMatch.Groups\["Year"\].Value);                         DateMatch = DateMatch.NextMatch();                   }             } ##### _Handling multiple matches – the simple way_ The last example was a bit cumbersome. There’s another way to go through all the matches – Simply use the Regex.Matches() function instead of the Regex.Match() function. Then simply iterate over each match (You don’t even have to check for success, since you’ll only receive successful matches) //This function will recieve             //a string containing a date. It will parse the date inside             // and print the value of the Day,Month and year of that date.             private void ParseDate(string date)             {                   //the patern we'll use to match the date                   //and divide it to sub groups                   string pattern = @"(?<Day>\\d{2})/(?<Month>\\d{2})/(?<Year>\\d{4})";                   //Retrieve the Parsed Match Object Using the Regex Object                   MatchCollection DateMatches = Regex.Matches(date,pattern);                   //notice there is no need to check for success here.                   //we only get successfull matches from this function..                   //Iterate through all the parsing Matches and print them                   foreach(Match DateMatch in DateMatches)                   {                         //Print the value of the current match result                         listBox1.Items.Add("The Whole Date Value Is: " + DateMatch.Value);                         //Get Each sub-group by name and print it's value                         //Notice that each group is sub-member of the match we received //Notice that the Names are Case-sensitive!                             listBox1.Items.Add("Day : " + DateMatch.Groups\["Day"\].Value);                         listBox1.Items.Add("Month : " + DateMatch.Groups\["Month"\].Value);                         listBox1.Items.Add("Year: " + DateMatch.Groups\["Year"\].Value);                   }             } ## _Conclusion_ Using groups with regular expression is a powerful tool to add to your parsing arsenal. There are many other abilities to the Regex, but this one is probably the most important, since most of the more advanced abilities of the Regex rely on this functionality. In (perhaps) future articles, I will explain more in-depth possibilities of regular expression in the .Net Framework. ## More in Regular Expressions [All posts in Regular Expressions](https://osherove.com/blog/category/regular-expressions) - Sep 10, 2006 ### [Regulazy 1.02 is out and about](https://osherove.com/blog/2006/9/10/regulazy-102-is-out-and-about.html) - Sep 28, 2003 ### [Creating a generic Site-To-RSS tool](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html) - May 11, 2003 ### [Introduction To Regular Expressions](https://osherove.com/blog/2003/5/11/introduction-to-regular-expressions.html) --- title: "More Books On My Shelf" url: "https://osherove.com/blog/2003/5/12/more-books-on-my-shelf.md" canonical: "https://osherove.com/blog/2003/5/12/more-books-on-my-shelf.html" published: "2003-05-12T18:24:00" updated: "2003-05-12T18:24:00" tags: [".Net Original"] author: "Roy Osherove" description: "I forgot to put some books on the “ My Bookshelf ” link. Here they are: VB C++ For VB Programmers Developing COM/ActiveX Controls using Visual Basic Project Management Managing Software Requirements AntiPatterns…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More Books On My Shelf By Roy Osherove May 12, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 12, 2003; technical details may be outdated. I forgot to put some books on the “[My  Bookshelf](http://dotnetweblogs.com/rosherove/story/6802.aspx)”  link. Here they are: ## _VB_ [C++ For VB Programmers](https://www.amazon.com/exec/obidos/tg/detail/-/1893115763/qid=1052774260/sr=8-1/ref=sr_8_1/104-0728248-0448757?v=glance&s=books) [Developing COM/ActiveX Controls using Visual Basic](https://www.amazon.com/exec/obidos/tg/detail/-/1562765760/qid=1052774388/sr=8-1/ref=sr_8_1/104-0728248-0448757?v=glance&s=books&n=507846) ## _Project Management_ [Managing Software Requirements](https://www.amazon.com/exec/obidos/tg/detail/-/0201615932/qid=1052774300/sr=1-1/ref=sr_1_1/104-0728248-0448757?v=glance&s=books) [AntiPatterns](https://www.amazon.com/exec/obidos/tg/detail/-/0471197130/qid=1052774318/sr=8-1/ref=sr_8_1/104-0728248-0448757?v=glance&s=books) ## _Practices_ [Are Your Lights On?](https://www.amazon.com/exec/obidos/tg/detail/-/0932633161/qid=1052774276/sr=8-1/ref=sr_8_1/104-0728248-0448757?v=glance&s=books) [101 creative problem solving ways](https://www.amazon.com/exec/obidos/tg/detail/-/1883629004/qid=1052774422/sr=8-1/ref=sr_8_1/104-0728248-0448757?v=glance&s=books) [Lateral Thinking](https://www.amazon.com/exec/obidos/tg/detail/-/0060903252/qid=1052774502/sr=8-1/ref=sr_8_1/104-0728248-0448757?v=glance&s=books) ## _Other_ [Graph Drawing](https://www.amazon.com/exec/obidos/tg/detail/-/0133016153/qid=1052774407/sr=8-1/ref=sr_8_1/104-0728248-0448757?v=glance&s=books) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 12, 2003 ### [June Is Officially here](https://osherove.com/blog/2003/5/12/june-is-officially-here.html) - May 12, 2003 ### [New Article: Practical Parsing Using Groups in Regular Expressions](https://osherove.com/blog/2003/5/12/new-article-practical-parsing-using-groups-in-regular-expres.html) - May 12, 2003 ### [Implementing A Data Layer](https://osherove.com/blog/2003/5/12/implementing-a-data-layer.html) - May 12, 2003 ### [About Design Patterns](https://osherove.com/blog/2003/5/12/about-design-patterns.html) --- title: "Implementing A Data Layer" url: "https://osherove.com/blog/2003/5/12/implementing-a-data-layer.md" canonical: "https://osherove.com/blog/2003/5/12/implementing-a-data-layer.html" published: "2003-05-12T17:25:00" updated: "2003-05-12T17:25:00" tags: [".Net Original"] author: "Roy Osherove" description: "Ted Posts about ways to implement a Data Layer. I never liked Data Layer generators myself. They never actually did a good job. I fear I've become a sort of \"Generator-Bigot\" because of my past experiences with them. In…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Implementing A Data Layer By Roy Osherove May 12, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 12, 2003; technical details may be outdated. Ted [Posts](http://dotnetweblogs.com/tgraham/posts/6923.aspx%5d) about ways to implement a Data Layer. I never liked Data Layer generators myself. They never actually did a good job. I fear I've become a sort of "Generator-Bigot" because of my past experiences with them. In my solutions (as well as some other solutions I know of) I use the Microsoft Application Blocks Data Layer Block. It is not a perfect piece of code, since it is fitted for the sqlClicent Namespace, but after refactoring it for an hour, I managed ,without too much fuss, to make it use strictly Interface based approach meaning it can now, beneath, use any compliant data source. (This is something I've learned from [Addy Santo's](http://dotnetweblogs.com/ASanto/) previous team - they use the same type of solution in their data layer) A great benefit you get with that, is a very handy helper class, that actually does dynamic filling of parameters, but then it goes further - it **caches** them for re-use. the result is you pay the penalty of round-trip generation only once per stored procedure. the next time you call it - you're all set to go. As for generating the stored procedures - What I do is create a throwaway project, and start dragging data adapters from the Server explorer onto the design surface. You can then tell the wizard to automatically generate Create,Insert,Update and Delete stored procedures for you. then you just throw away the project, and you get to keep the automatically generated procedures! The larger up side to not using Automatic generators is that you keep control of what's happening. It scares me (Maybe I shouldn't but I am) to think of using such a generator, and then one day , for some reason (And they occur, don't they..) , I'll  need to do something in the data layer, something that is not supported by the generator. Now I'll need to read code generated by a machine, which is not bad by itself, except for that horrible learning curve (That's the good case - where the code is even half-readable). Perhaps I'm mistaken with the new generation of code generators that's coming out, But if I am - prove me wrong. I'll be the first to use it if I'm convinced (It's not that I'm an early adopter as much as I'm plain lazy! I want something else to do the dirty work for me just like the next guy..) I can also recommend a good book that depicts building a solid foundation for a 3-tierd application. Although it deals with building a web application - the parts about the Data Layer and the Business layer are by themselves worth more then the cost of the book . **Any developer** wanting to learn a good way of doing 3-tiers will benefit from reading it . It's called [**ASP.NET Website Programming: Problem - Design - Solution C# Edition**](https://www.amazon.com/exec/obidos/tg/detail/-/1861006934/qid=1052590666/sr=8-1/ref=sr_8_1/104-0728248-0448757?v=glance&s=books). ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 12, 2003 ### [New Article: Practical Parsing Using Groups in Regular Expressions](https://osherove.com/blog/2003/5/12/new-article-practical-parsing-using-groups-in-regular-expres.html) - May 12, 2003 ### [More Books On My Shelf](https://osherove.com/blog/2003/5/12/more-books-on-my-shelf.html) - May 12, 2003 ### [About Design Patterns](https://osherove.com/blog/2003/5/12/about-design-patterns.html) - May 11, 2003 ### [Free Book Chapters](https://osherove.com/blog/2003/5/11/free-book-chapters.html) --- title: "About Design Patterns" url: "https://osherove.com/blog/2003/5/12/about-design-patterns.md" canonical: "https://osherove.com/blog/2003/5/12/about-design-patterns.html" published: "2003-05-12T17:03:00" updated: "2003-05-12T17:03:00" tags: [".Net Original"] author: "Roy Osherove" description: "Christopher posted about \" Design Patterns Explained \". Having been down that road myself (and so has any developer that learned this stuff at one time or another) I can only congratulate you on a good decision. Some…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About Design Patterns By Roy Osherove May 12, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 12, 2003; technical details may be outdated. Christopher [posted](http://dotnetweblogs.com/cfrazier/posts/6922.aspx) about "[Design Patterns Explained](https://www.amazon.com/exec/obidos/ASIN/0201715945/qid=1052765647/sr=2-3/ref=sr_2_3/103-2227132-1011001)".  Having been down that road myself (and so has any developer that learned this stuff at one time or another) I can only congratulate you on a good decision. Some developers just don't have the will power (not that it's so hard, they are just lazy) or the motivation to open their mind to broader subjects, and would rather stay in their little cube, programming their little tasks. Taking design patterns as something to learn is one of the steps I will never regret learning. It just stays with you. To me, learning design patterns was like discovering a parallel dimension of the world we live in. gradually, I started seeing almost everything from this point of view. The view from there was that everything, somehow, was part of a grand design pattern. The way you would read you mail was a pattern, the way you build a house is a pattern (There's a great book about it, It slips my mind though), and of course, the way you build software is a pattern. Its pattern madness really… One of the things the [book](https://www.amazon.com/exec/obidos/ASIN/0201633612/qid=1052526539/sr=2-1/ref=sr_2_1/104-0728248-0448757) I read said was that **once you read it, you’ll discover that you’ve been using quite a lot of patterns for a long time, without even knowing it.** The book was right on the money – I found exactly that. What **has**  changed from that moment on, was that I tried to stay true to the design, meaning any coding changes to interfaces and such were thought of twice before being done. I loved every minute of it and I can safely say that I also used it too much. Waaay too much. That’s a common problem - **many people, once they learn about design patterns, feel the urge to use them all the time**, even when it is too cumbersome and just complicates things. If you’re going to build a single-Form application to manipulate application settings in the registry  \-  don’t start planning for a Model-View-Controller pattern – that is plain overkill. If you’re going to display a simple data grid and you need to develop this for the next day – patterns don’t fit here. Go for the brute force approach on this one. Patterns **need** to be used, although not sparingly, with thought. Like any good thing – too much will hurt you (and your boss). On the other hand, I’ll tell you that while reading the [GOF design patterns](https://www.amazon.com/exec/obidos/ASIN/0201633612/qid=1052526539/sr=2-1/ref=sr_2_1/104-0728248-0448757) book, I discovered many wonderful things. That book also comes with examples of known commercial products that use the design patterns mentioned in it – which makes the light bulbs go off in your head – “Oh! So **that’s** how they did it!”.  Really cool stuff. **It also helps you a lot when you start planning and building some serious medium-large scale applications**. These are not simple things. Building them like you built the smaller applications you’ve made so far will get you stuck pretty quickly – either because of performance issues, or you just wouldn’t know how to get a specific feature done (AKA “How the hell do they expect me to accomplish that??”) – that’s the beauty of patterns – it is very probable , **very**, that someone has done the thinking for you and solved a similar problem way before you stumbled on to the one you’re facing. The design pattern is actually a record of what design guidelines that person took in order to solve this problem.  Use this. **Don’t re-invent the wheel every time**. That’s the philosophy behind design patterns. That’s the philosophy of the “lazy programmer” too.. I’ve read another book titled  “[Anti Patterns](https://www.amazon.com/exec/obidos/tg/detail/-/0471197130/ref=pd_sbs_b_1/104-0728248-0448757?v=glance&s=books)”. It depicts several so-called problematic patterns that you might be doing. These can range from “stale code” to “company politics”. I don’t know just how useful this book is, as it does not really define patterns to be used, but rather – patterns to be avoided of. Of that – it does a fair job, but I wouldn’t recommend it unless you have some spare cash lying around. It seems to actually borrow the “pattern” term just to sell a few extra copies. It could have easily be named “Common problems with software engineering” or something of the sort. To sum all this up, here are some links to design pattern resources: [Design patterns in C#](http://www.dofactory.com/Patterns/Patterns.aspx) [Patterns Home Page](http://hillside.net/patterns/) [A good example of the Factory Pattern using C#](http://msdn.microsoft.com/msdnmag/issues/03/03/DesignPatterns/default.aspx) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 12, 2003 ### [More Books On My Shelf](https://osherove.com/blog/2003/5/12/more-books-on-my-shelf.html) - May 12, 2003 ### [Implementing A Data Layer](https://osherove.com/blog/2003/5/12/implementing-a-data-layer.html) - May 11, 2003 ### [Free Book Chapters](https://osherove.com/blog/2003/5/11/free-book-chapters.html) - May 11, 2003 ### [Introduction To Regular Expressions](https://osherove.com/blog/2003/5/11/introduction-to-regular-expressions-1.html) --- title: "Spammer Tactics" url: "https://osherove.com/blog/2003/5/12/spammer-tactics.md" canonical: "https://osherove.com/blog/2003/5/12/spammer-tactics.html" published: "2003-05-12T09:31:00" updated: "2003-05-12T09:31:00" tags: ["Off Topic"] author: "Roy Osherove" description: "A thought provoking and kinda scary post about Spam and Anti-Spam tactics and the brilliance of SpamBayes Addin for outlook and how its tactics compare with SpamAssassin. Very good stuff. One example of a deceptive spam…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Spammer Tactics By Roy Osherove May 12, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 12, 2003; technical details may be outdated. A [thought provoking and kinda scary post](http://weblog.infoworld.com/udell/2003/05/08.html#a684) about Spam and Anti-Spam tactics and the brilliance of [SpamBayes](http://starship.python.net/crew/mhammond/spambayes/) Addin for outlook and how its tactics compare with SpamAssassin. Very good stuff. One example of a deceptive spam message was a message that actually spidere'd Jon's Site and pasted in remarks taken from the web page into the message (such as "I was glad to see the link about 'bla bla' on your site..."). I had no idea the tactics were that clever! Thanks to [Paschal](http://dotnetweblogs.com/pleloup/posts/6891.aspx) for the link. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 14, 2003 ### [About Design](https://osherove.com/blog/2003/5/14/about-design.html) - May 13, 2003 ### [Expression Boy](https://osherove.com/blog/2003/5/13/expression-boy.html) - May 12, 2003 ### [Blindfolded](https://osherove.com/blog/2003/5/12/blindfolded.html) - May 12, 2003 ### [Windows Longhorn 3D UI - short videos](https://osherove.com/blog/2003/5/12/windows-longhorn-3d-ui-short-videos.html) --- title: "Blindfolded" url: "https://osherove.com/blog/2003/5/12/blindfolded.md" canonical: "https://osherove.com/blog/2003/5/12/blindfolded.html" published: "2003-05-12T08:02:00" updated: "2003-05-12T08:02:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "Here's something I couldn't figure out: Did you know that Regedit has a \"Favories\" menu? Yes. That good ol' (hateful, conniving) regedit we all \"love\". I only realized this a few days ago, thanks to a comment from David…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blindfolded By Roy Osherove May 12, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 12, 2003; technical details may be outdated. Here's something I couldn't figure out: Did you know that Regedit has a "Favories" menu? Yes. That good ol' (hateful, conniving) regedit  we all "love". I only realized this a few days ago, thanks to a comment from [**David Stone**](http://dotnetweblogs.com/dstone) about a RegEdit replacer I was recommending. I couldn't figure out  why I havn't noticed it before, although I desperately needed such a feature. I didn't even look for it! Why?  It occurs to me that sometimes we take the bad for granted and even excpected, when the stuff we "think" we are looking for is right in front of us. Makes me wonder how many more things like this I keep missing on a daily basis... ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 18, 2003 ### [FeedDemon](https://osherove.com/blog/2003/5/18/feeddemon.html) - May 15, 2003 ### [One Cool Menu](https://osherove.com/blog/2003/5/15/one-cool-menu.html) - May 11, 2003 ### [Expresso Is Coolness](https://osherove.com/blog/2003/5/11/expresso-is-coolness.html) - May 10, 2003 ### [InnovaSys SmartTasks Beta Download Available](https://osherove.com/blog/2003/5/10/innovasys-smarttasks-beta-download-available.html) --- title: "Windows Longhorn 3D UI - short videos" url: "https://osherove.com/blog/2003/5/12/windows-longhorn-3d-ui-short-videos.md" canonical: "https://osherove.com/blog/2003/5/12/windows-longhorn-3d-ui-short-videos.html" published: "2003-05-12T07:11:00" updated: "2003-05-12T07:11:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Here are some short media clips (.rm) showing the Windows Longhorn 3D UI in action. Cool stuff, though I don't know why I would still use notepad than... Thanks to Scoble for the link" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Windows Longhorn 3D UI - short videos By Roy Osherove May 12, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 12, 2003; technical details may be outdated. [Here are some short media clips](http://www.extremetech.com/article2/0,3973,1072789,00.asp) (.rm) showing the Windows Longhorn 3D UI in action. Cool stuff, though I don't  know why I would still use notepad than... Thanks to [Scoble](http://radio.weblogs.com/0001011/) for the link ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 12, 2003 ### [Spammer Tactics](https://osherove.com/blog/2003/5/12/spammer-tactics.html) - May 12, 2003 ### [Blindfolded](https://osherove.com/blog/2003/5/12/blindfolded.html) - May 12, 2003 ### [Scoble About MS Interviews](https://osherove.com/blog/2003/5/12/scoble-about-ms-interviews.html) - May 12, 2003 ### [A Spoiler](https://osherove.com/blog/2003/5/12/a-spoiler.html) --- title: "Scoble About MS Interviews" url: "https://osherove.com/blog/2003/5/12/scoble-about-ms-interviews.md" canonical: "https://osherove.com/blog/2003/5/12/scoble-about-ms-interviews.html" published: "2003-05-12T06:51:00" updated: "2003-05-12T06:51:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It's always a good idea to read Scoble Once a day. You nenver know what might happen... . In this post he talks about how he relaxed before his own interview , plus some helpful tips. This is just the state of mind I'm…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Scoble About MS Interviews By Roy Osherove May 12, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 12, 2003; technical details may be outdated. It's always a good idea to read Scoble Once a day. You nenver know what might happen... . In [this post](http://radio.weblogs.com/0001011/2003/05/11.html#a2992) he talks about how he relaxed before his own interview , plus some helpful tips. This is just the state of mind I'm in these days. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 12, 2003 ### [Blindfolded](https://osherove.com/blog/2003/5/12/blindfolded.html) - May 12, 2003 ### [Windows Longhorn 3D UI - short videos](https://osherove.com/blog/2003/5/12/windows-longhorn-3d-ui-short-videos.html) - May 12, 2003 ### [A Spoiler](https://osherove.com/blog/2003/5/12/a-spoiler.html) - May 11, 2003 ### [I'm Available](https://osherove.com/blog/2003/5/11/im-available-1.html) --- title: "A Spoiler" url: "https://osherove.com/blog/2003/5/12/a-spoiler.md" canonical: "https://osherove.com/blog/2003/5/12/a-spoiler.html" published: "2003-05-12T05:37:00" updated: "2003-05-12T05:37:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I wouldn't dream of tuning in to this before seeing the movie, but if you just can't hold yourself.... \" Not much going on today so I thought I'd bring you this piece of news that I saw on Warp2search . Countingdown.com…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Spoiler By Roy Osherove May 12, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 12, 2003; technical details may be outdated. I wouldn't dream of tuning in to this before seeing the movie, but if you just can't hold yourself.... "_Not much going on today so I thought I'd bring you this piece of news that I saw on_ [_Warp2search_](http://www.warp2search.net/)_._ [_Countingdown.com_](http://www.countingdown.com/theater/trailers_clips/detail/3047590/) _has 9 clips in various formats (Windows Media, Real, Quicktime) from the film Matrix Reloaded. **Enjoy!** each run for about 45 secs._" \[[NeoWin](http://www.neowin.net/)\] More bad news: Matrix Reloaded only releases in Israel on the 25th, 10 days after the US. Why the hell is that?? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 12, 2003 ### [Windows Longhorn 3D UI - short videos](https://osherove.com/blog/2003/5/12/windows-longhorn-3d-ui-short-videos.html) - May 12, 2003 ### [Scoble About MS Interviews](https://osherove.com/blog/2003/5/12/scoble-about-ms-interviews.html) - May 11, 2003 ### [I'm Available](https://osherove.com/blog/2003/5/11/im-available-1.html) - May 11, 2003 ### [Return of ...](https://osherove.com/blog/2003/5/11/return-of.html) --- title: "I'm Available" url: "https://osherove.com/blog/2003/5/11/im-available-1.md" canonical: "https://osherove.com/blog/2003/5/11/im-available-1.html" published: "2003-05-11T10:16:00" updated: "2003-05-11T10:16:00" tags: ["Off Topic"] author: "Roy Osherove" description: "OK. I've decided to make myself available to job offers. Here's your chance to grab me while I'm still young and underpaid... ;)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm Available By Roy Osherove May 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 11, 2003; technical details may be outdated. OK. I've decided to make myself available to job offers. [Here's your chance](http://dotnetweblogs.com/rosherove/story/6870.aspx) to grab me while I'm still young and underpaid... ;) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 12, 2003 ### [Scoble About MS Interviews](https://osherove.com/blog/2003/5/12/scoble-about-ms-interviews.html) - May 12, 2003 ### [A Spoiler](https://osherove.com/blog/2003/5/12/a-spoiler.html) - May 11, 2003 ### [Return of ...](https://osherove.com/blog/2003/5/11/return-of.html) - May 11, 2003 ### [Geek Book](https://osherove.com/blog/2003/5/11/geek-book.html) --- title: "I'm Available" url: "https://osherove.com/blog/2003/5/11/im-available.md" canonical: "https://osherove.com/blog/2003/5/11/im-available.html" published: "2003-05-11T10:08:00" updated: "2003-05-11T10:08:00" tags: [] author: "Roy Osherove" description: "I'm currently available for job offers. The job description may be any of the following: Consulting on projects Teaching Test driven development techniques Lead C# /VB.Net developer Junior C#/VB.Net developer Part/Full…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm Available By Roy Osherove May 11, 2003 **Historical article** · Originally published May 11, 2003; technical details may be outdated. I'm currently available for job offers. The job description may be any of the following: - Consulting on projects - Teaching Test driven development techniques - Lead C# /VB.Net developer Junior C#/VB.Net  developer - Part/Full time technical article writer - SD/SDE/SDET at Microsoft - Part time projects - Long-distance projects - Product reviews - Whatever you can think of - I'll consider it :) I am seeking a job either **in Israel and abroad** (preferably US/Canada/Australia). However, neither me nor my wife have a working visa for the countries mentioned above. Although we live in Israel, we are both willing to relocate. **Download my Resume :** [Hebrew](http://royo.is-a-geek.com/ISerializable/admin/Portal/LinkClick.aspx?tabid=1&table=Links&field=ItemID&id=7&link=RoyHeb.zip) [English](http://royo.is-a-geek.com/ISerializable/admin/Portal/LinkClick.aspx?tabid=1&table=Links&field=ItemID&id=6&link=royEng.zip) _(If links are down download from here: [Hebrew](http://www.larkware.com/RoyO/RoyHeb.zip), [English](http://www.larkware.com/RoyO/RoyEng.rtf))_ contact me at : **[my contact form](https://osherove.com/contact)** or through the [contact](http://dotnetweblogs.com/rosherove/contact.aspx) link on my weblog. or, my cell phone(in Israel) - 064-655388  (+972-64-655388) **A screenshot gallery from some of my previous projects can be found [here](http://pnavy.com/royo/Work).** Thanks for your time :) Roy. --- title: "Return of ..." url: "https://osherove.com/blog/2003/5/11/return-of.md" canonical: "https://osherove.com/blog/2003/5/11/return-of.html" published: "2003-05-11T07:02:00" updated: "2003-05-11T07:02:00" tags: ["Off Topic"] author: "Roy Osherove" description: "The Iraqi Blogger has started Blogging again..." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Return of ... By Roy Osherove May 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 11, 2003; technical details may be outdated. The [Iraqi Blogger](http://dear_raed.blogspot.com/) has started Blogging again... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 12, 2003 ### [A Spoiler](https://osherove.com/blog/2003/5/12/a-spoiler.html) - May 11, 2003 ### [I'm Available](https://osherove.com/blog/2003/5/11/im-available-1.html) - May 11, 2003 ### [Geek Book](https://osherove.com/blog/2003/5/11/geek-book.html) - May 11, 2003 ### [Why Good Design Comes from Bad Design](https://osherove.com/blog/2003/5/11/why-good-design-comes-from-bad-design.html) --- title: "Expresso Is Coolness" url: "https://osherove.com/blog/2003/5/11/expresso-is-coolness.md" canonical: "https://osherove.com/blog/2003/5/11/expresso-is-coolness.html" published: "2003-05-11T05:59:00" updated: "2003-05-11T05:59:00" tags: ["Cool Tools"] author: "Roy Osherove" description: "The more I play with it, the more I learn new stuff. Expresso is a really neat Regular Expression tool." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Expresso Is Coolness By Roy Osherove May 11, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 11, 2003; technical details may be outdated. The more I play with it, the more I learn new stuff. [Expresso](http://www12.brinkster.com/ultrapico/Expresso.htm) is a really neat Regular Expression tool. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 15, 2003 ### [One Cool Menu](https://osherove.com/blog/2003/5/15/one-cool-menu.html) - May 12, 2003 ### [Blindfolded](https://osherove.com/blog/2003/5/12/blindfolded.html) - May 10, 2003 ### [InnovaSys SmartTasks Beta Download Available](https://osherove.com/blog/2003/5/10/innovasys-smarttasks-beta-download-available.html) - May 10, 2003 ### [How To Lose Your Job (Unless you are Don)](https://osherove.com/blog/2003/5/10/how-to-lose-your-job-unless-you-are-don.html) --- title: "Geek Book" url: "https://osherove.com/blog/2003/5/11/geek-book.md" canonical: "https://osherove.com/blog/2003/5/11/geek-book.html" published: "2003-05-11T05:52:00" updated: "2003-05-11T05:52:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Isn't this the geekiest book cover you have ever seen? :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Geek Book By Roy Osherove May 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 11, 2003; technical details may be outdated. Isn't [this](http://www.perfectxml.com/wp/readchap.asp?CurBook=18) the geekiest book cover you have ever seen? :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 11, 2003 ### [I'm Available](https://osherove.com/blog/2003/5/11/im-available-1.html) - May 11, 2003 ### [Return of ...](https://osherove.com/blog/2003/5/11/return-of.html) - May 11, 2003 ### [Why Good Design Comes from Bad Design](https://osherove.com/blog/2003/5/11/why-good-design-comes-from-bad-design.html) - May 11, 2003 ### [Mind Rates](https://osherove.com/blog/2003/5/11/mind-rates.html) --- title: "Free Book Chapters" url: "https://osherove.com/blog/2003/5/11/free-book-chapters.md" canonical: "https://osherove.com/blog/2003/5/11/free-book-chapters.html" published: "2003-05-11T05:49:00" updated: "2003-05-11T05:49:00" tags: [".Net Original"] author: "Roy Osherove" description: "Lots of free book chapters here about All things .Net (most are beginner material, but there are some gems)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free Book Chapters By Roy Osherove May 11, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 11, 2003; technical details may be outdated. Lots of free book chapters [here](http://www.perfectxml.com/FreeLibrary2.asp?s=.NET) about All things .Net (most are beginner material, but there are some gems) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 12, 2003 ### [Implementing A Data Layer](https://osherove.com/blog/2003/5/12/implementing-a-data-layer.html) - May 12, 2003 ### [About Design Patterns](https://osherove.com/blog/2003/5/12/about-design-patterns.html) - May 11, 2003 ### [Introduction To Regular Expressions](https://osherove.com/blog/2003/5/11/introduction-to-regular-expressions-1.html) - May 10, 2003 ### [How I Learn New Technologies](https://osherove.com/blog/2003/5/10/how-i-learn-new-technologies.html) --- title: "Introduction To Regular Expressions" url: "https://osherove.com/blog/2003/5/11/introduction-to-regular-expressions-1.md" canonical: "https://osherove.com/blog/2003/5/11/introduction-to-regular-expressions-1.html" published: "2003-05-11T05:41:00" updated: "2003-05-11T05:41:00" tags: [".Net Original"] author: "Roy Osherove" description: "I just added a new article: Introduction To Regular Expressions Have fun." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introduction To Regular Expressions By Roy Osherove May 11, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 11, 2003; technical details may be outdated. I just  added a new article: [Introduction To Regular Expressions](http://dotnetweblogs.com/rosherove/story/6863.aspx) Have fun. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 12, 2003 ### [About Design Patterns](https://osherove.com/blog/2003/5/12/about-design-patterns.html) - May 11, 2003 ### [Free Book Chapters](https://osherove.com/blog/2003/5/11/free-book-chapters.html) - May 10, 2003 ### [How I Learn New Technologies](https://osherove.com/blog/2003/5/10/how-i-learn-new-technologies.html) - May 8, 2003 ### [More About Using Undocumented API's](https://osherove.com/blog/2003/5/8/more-about-using-undocumented-apis.html) --- title: "Introduction To Regular Expressions" url: "https://osherove.com/blog/2003/5/11/introduction-to-regular-expressions.md" canonical: "https://osherove.com/blog/2003/5/11/introduction-to-regular-expressions.html" published: "2003-05-11T04:25:00" updated: "2003-05-11T04:25:00" tags: ["Regular Expressions"] author: "Roy Osherove" description: "Introduction to regular expressions Note: This is part 1 of a series of articles: Part 2 - Practical Parsing Using Groups in Regular Expressions What will be covered In this article I’ll demonstrate the use of the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introduction To Regular Expressions By Roy Osherove May 11, 2003 In [Regular Expressions](https://osherove.com/blog/category/regular-expressions) **Historical article** · Originally published May 11, 2003; technical details may be outdated. ## _Introduction to regular expressions_  Note: This is part 1 of a series of articles: - Part 2 - [Practical Parsing Using Groups in Regular Expressions](http://dotnetweblogs.com/rosherove/story/6946.aspx) ### What will be covered In this article I’ll demonstrate the use of the following: ·        Using the System.Text.RegularExpressions Namespace classes for text parsing ·        Using System.IO Namespace classes to read text files ### Tools Used ·        [Expresso](http://www12.brinkster.com/ultrapico/Expresso.htm) – A tool for testing Regular Expressions ### Introduction to regular expressions Regular expressions (a.k.a “Regex”) are a very powerful text parsing language used widely in many parts of the technology industry. Their main use is to find a particular **pattern** within a given string that matches whatever rules were expressed using this language. In software applications, we will usually test whether the Regex Found a match for a **pattern** with the rules we defined, and based on the **success** of the search , perform certain actions such as validate an email address or finding HTTP link in a web page. The Regex language can be used for both simple searches as well as for more complicated patterns such as finding all words in a given string that appear more then once within all the given text. Another use for Regex is to replace the string matching the pattern with another string (for example, making all lowercase words Uppercase, or replacing all replacing all “Five” to “5”). A simple example would be to find a match for a pattern fitting an **email address**. Let’s take a look at how an email address is built. Taking \[email removed\] as an example: We know there is a pattern here, since we know there will always be at least 5 parts: \-         A string \-         A “@” character \-         A string \-         A “.” \-         Another String If you were to receive a string and determine whether it is a legitimate email address you would have several options: ·        Parse the string using cumbersome code for the existence of specific characters (which we mentioned above) o       You need to check for hardcoded characters in your given string using String.IndexOf() and that sort of thing o       You need to code lots of lines of code to perform complicated pattern searching (**email** pattern is very simple yet would take a pretty complicated “If” structure to apply correctly ·        Use the Regex Class found in the System.Text.RegularExpressions Namespace to check for an email pattern match o        2 lines of code #### A practical example to try ##### _Installing and using Expresso_ In order to practice the following example, you will need to download and install [Expresso](http://www12.brinkster.com/ultrapico/Expresso.htm) – A regular expression testing tool and much more. After you have installed it fire it up. The main screen is divided into 3 main sections : \- The Regular expression input pane(upper part)             _This is where we try out different expressions and test for the parsing outcome in the output pane_ \- The Data Input Pane(Lower Left)             _The data to be parsed and tested. This is where we enter our sample data._ \- The Output Pane (Lower right)             _The outcome of the Regex parsing engine._ **Expresso** starts up with a predefined sample expression already inside its expression pane. You can tell by the "# Dates" inside  that this expression deals with parsing for dates inside text. It already has some sample data filled in as well. To see what the parsing results look like, you can just click "Find Matches" button and see what happens. The output pane is filled with all the strings that matched the particular pattern in the expression pane. Notice that the results are also hierarchical, and can be expanded. This is another feature of Regex , which allows you to express groups to be captured and referred to by name, within an expression. But enough with this sample, since it is a bit to complicated for starters. Let's do an easier sample, and I'll explain from the start. Say we have some lines of text that we need to parse and retrieve email addresses from. _\[Paste the following into the data pane in expresso\]_ **This is a piece of text. It represents some email addresses.** **For example \[email removed\] is an email address. Another one could be** **Perhaps just \[email removed\] or maybe it's @234.34.23.com.** **For conclusion, here are some more junk email addresses. @. something@.** **@somewhere. @.com something@.com @somwehre.com** **This is the end of the text to be pasted into expresso.** Here’s a pattern to find a match for an email address using regular expressions : **\\w\*@\\w\*\\.\\w\*((\\.\\w\*)\*)?** Like almost anything in languages, this can be expressed in more then one way, since the language itself contains many possibilities, but let’s dissect this expression: **“\\w “–** An escape character meaning “Characters usually found in words”. _This means alpha numeric characters, but excludes spaces, punctuation marks and tabs._ _Basically, anything that could be considered as being a non-word character is excluded._ “**\***” – The asterisk sign means “0 or more instances of” and operates on the expression to the left of it. Thus, “**\\w\***” means “match zero or more occurrences of any word-like character” “**@**” – Match one instance of the character “@” “**\\w\***” - “match zero or more occurrences of any word-like character” “**\\.**” – Match one instance of the dot character (this requires an escape slash since “.” Is a reserved operator in the regex language) “**\\w\***” - “match zero or more occurrences of any word-like character” **“()“** – Groups what is inside the round brackets into a logical group **(\\.\\w\*)\* -** Match zero or more instances of a dot followed by a zero or more instances of any word-like character ()? – optional group – Match this if it appears in the text According to the last 3 explanations here’s an overall explanation to the last part of the expression: **((\\.\\w\*)\*)? –** means there **might** be zero or more instance of a dot followed by a word (“**.something.anotherthing.bla**” would be matched) To conclude, here’s the description of this expression in whole: _Match any word followed by an asterisk , followed by any word followed by a dot ,followed by any word. Followed by zero or more instances of a dot and a word after it._ **Paste the pattern mentioned above into the expression pane of expresso.** Once you've done that, click the "find matches" button. You can see in the output pane, that the Regex engine recovered only part of the data that appears in the data pane. It returned only strings which match the expression that was given. Can you see a problem yet? Can you find a logical problem with this expression? **These strings were matched as well, although they are not legitimate email addresses.** **@.** **something@.** **@somewhere.** **@.com** **something@.com** **@somwehre.com** The problem is we tested for **zero or more instances of** a character, so this string was accepted as well. We needed to specify “**1 or more instances of**” instead. This is easily expressed using the “+” operator instead of the "\*" operator. Try to fix the expression yourself and hit "Find Matches again".. Here’s the fixed expression to catch only valid instances **\\w+@\\w+\\.\\w+((\\.\\w+)\*)?** This will catch only the two legitimate email addresses. As you can see, It's pretty easy to work with regular expressions, once you know the syntax. A table of syntax for Regex can be found [here](http://dotnetweblogs.com/rosherove/BlogAdmin/EditStory.aspx#_Here's_a_simple_table%20displaying%20th). ### Code Demo Here's the source code listing for a simple form , which reads a text file name "data.txt" found in it's directory. Data.txt contains the same text as mentioned above , which you have put in the "data" pane of expresso. The form reads the file, then uses the Regex class to get a **MatchCollection** object, which is a collection of Match Objects. Each **Match** Object contains the value of the string that was parsed. using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; //we add the following import staements using System.Text.RegularExpressions; using System.IO; using System.Text; . . . ```             //This is the method we will call on form load ```             private void ParseData()             {                   listBox1.Items.Clear();                   //Read the data.txt file to parse for emails                   string data = GetDataFromFile();                   //the pattern used to parse for emails                   //notice the '@' at the start to avoid escape special //characters treated as escape sequences                   string expression = @"\\w+@\\w+\\.\\w+((\\.\\w+)\*)?";                   //get a collection of successfull matches                   //from Regex using the specified pattern on the input data                   MatchCollection matches = Regex.Matches(data,expression);                   //Iterate through the matches, adding them to the list box                   foreach(Match SingleMatch in matches)                   {                         listBox1.Items.Add(SingleMatch.Value);                   }             }             private string GetDataFromFile()             {                   //Use the Path Class to generate FIle paths from a given folder and a file name                   string filename = Path.Combine(Application.StartupPath,"data.txt");                   //open a text file for reading                   StreamReader reader = File.OpenText(filename);                   //get all the text in the file                   string ret = reader.ReadToEnd();                   //dismiss the file handle                   reader.Close();                   //return the text in the file                   return ret;             } ### Conclusion Using Regular expressions and the Regex object is very simple, and very powerful. Once you learn it, you'll use it all over the place – In search dialogs, Coding and sometimes even search engines. In future articles I will demonstrate more elaborate uses of regular expressions, and how they fit in an overall practical solution. #### Appendix A ### Here's a simple table displaying the syntax of a regular expression and any escape characters that can be used. (You can find more on the syntax of Regex [here](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/js56reconIntroductionToRegularExpressions.asp).) **A regular expression is a pattern of text that consists of ordinary characters (for example, letters a through z) and special characters, known as _metacharacters_. The pattern describes one or more strings to match when searching a body of text. The regular expression serves as a template for matching a character pattern to the string being searched.** **The following table contains the complete list of metacharacters and their behavior in the context of regular expressions:** <table><tbody><tr><td width="106"><p><b>Character<o:p></o:p></b></p></td><td width="518"><p><b>Description<o:p></o:p></b></p></td></tr><tr><td width="106"><p>\</p></td><td width="518"><p>Marks the next character as a special character, a literal, a backreference, or an octal escape. For example, 'n' matches the character "n". '\n' matches a newline character. The sequence '\\' matches "\" and "\(" matches "(".</p></td></tr><tr><td width="106"><p>^</p></td><td width="518"><p>Matches the position at the beginning of the input string. If the <b>RegExp</b> object's <b>Multiline</b> property is set, ^ also matches the position following '\n' or '\r'.</p></td></tr><tr><td width="106"><p>$</p></td><td width="518"><p>Matches the position at the end of the input string. If the <b>RegExp</b> object's <b>Multiline</b> property is set, $ also matches the position preceding '\n' or '\r'.</p></td></tr><tr><td width="106"><p>*</p></td><td width="518"><p>Matches the preceding character or subexpression zero or more times. For example, zo* matches "z" and "zoo". * is equivalent to {0,}.</p></td></tr><tr><td width="106"><p>+</p></td><td width="518"><p>Matches the preceding character or subexpression one or more times. For example, 'zo+' matches "zo" and "zoo", but not "z". + is equivalent to {1,}.</p></td></tr><tr><td width="106"><p>?</p></td><td width="518"><p>Matches the preceding character or subexpression zero or one time. For example, "do(es)?" matches the "do" in "do" or "does". ? is equivalent to {0,1}</p></td></tr><tr><td width="106"><p>{<i>n</i>}</p></td><td width="518"><p><i>n</i> is a nonnegative integer. Matches exactly <i>n</i> times. For example, 'o{2}' does not match the 'o' in "Bob," but matches the two o's in "food".</p></td></tr><tr><td width="106"><p>{<i>n</i>,}</p></td><td width="518"><p><i>n</i> is a nonnegative integer. Matches at least <i>n</i> times. For example, 'o{2,}' does not match the "o" in "Bob" and matches all the o's in "foooood". 'o{1,}' is equivalent to 'o+'. 'o{0,}' is equivalent to 'o*'.</p></td></tr><tr><td width="106"><p>{<i>n</i>,<i>m</i>}</p></td><td width="518"><p><i>m</i> and <i>n</i> are nonnegative integers, where <i>n</i> <= <i>m</i>. Matches at least <i>n</i> and at most <i>m</i> times. For example, "o{1,3}" matches the first three o's in "fooooood". 'o{0,1}' is equivalent to 'o?'. Note that you cannot put a space between the comma and the numbers.</p></td></tr><tr><td width="106"><p>?</p></td><td width="518"><p>When this character immediately follows any of the other quantifiers (*, +, ?, {<i>n</i>}, {<i>n</i>,}, {<i>n</i>,<i>m</i>}), the matching pattern is non-greedy. A non-greedy pattern matches as little of the searched string as possible, whereas the default greedy pattern matches as much of the searched string as possible. For example, in the string "oooo", 'o+?' matches a single "o", while 'o+' matches all 'o's.</p></td></tr><tr><td width="106"><p>.</p></td><td width="518"><p>Matches any single character except "\n". To match any character including the '\n', use a pattern such as '[\s\S].</p></td></tr><tr><td width="106"><p>(<i>pattern</i>)</p></td><td width="518"><p>Matches <i>pattern</i> and captures the match. The captured match can be retrieved from the resulting Matches collection, using the <b>SubMatches</b> collection in VBScript or the <b>$0</b>…<b>$9</b> properties in JScript. To match parentheses characters ( ), use '\(' or '\)'.</p></td></tr><tr><td width="106"><p>(?:<i>pattern</i>)</p></td><td width="518"><p>Matches <i>pattern</i> but does not capture the match, that is, it is a non-capturing match that is not stored for possible later use. This is useful for combining parts of a pattern with the "or" character (|). For example, 'industr(?:y|ies) is a more economical expression than 'industry|industries'.</p></td></tr><tr><td width="106"><p>(?=<i>pattern</i>)</p></td><td width="518"><p>Positive lookahead matches the search string at any point where a string matching <i>pattern</i> begins. This is a non-capturing match, that is, the match is not captured for possible later use. For example 'Windows (?=95|98|NT|2000)' matches "Windows" in "Windows 2000" but not "Windows" in "Windows 3.1". Lookaheads do not consume characters, that is, after a match occurs, the search for the next match begins immediately following the last match, not after the characters that comprised the lookahead.</p></td></tr><tr><td width="106"><p>(?!<i>pattern</i>)</p></td><td width="518"><p>Negative lookahead matches the search string at any point where a string not matching <i>pattern</i> begins. This is a non-capturing match, that is, the match is not captured for possible later use. For example 'Windows (?!95|98|NT|2000)' matches "Windows" in "Windows 3.1" but does not match "Windows" in "Windows 2000". Lookaheads do not consume characters, that is, after a match occurs, the search for the next match begins immediately following the last match, not after the characters that comprised the lookahead.</p></td></tr><tr><td width="106"><p><i>x</i>|<i>y</i></p></td><td width="518"><p>Matches either <i>x</i> or <i>y</i>. For example, 'z|food' matches "z" or "food". '(z|f)ood' matches "zood" or "food".</p></td></tr><tr><td width="106"><p>[<i>xyz</i>]</p></td><td width="518"><p>A character set. Matches any one of the enclosed characters. For example, '[abc]' matches the 'a' in "plain".</p></td></tr><tr><td width="106"><p>[^<i>xyz</i>]</p></td><td width="518"><p>A negative character set. Matches any character not enclosed. For example, '[^abc]' matches the 'p' in "plain".</p></td></tr><tr><td width="106"><p>[<i>a-z</i>]</p></td><td width="518"><p>A range of characters. Matches any character in the specified range. For example, '[a-z]' matches any lowercase alphabetic character in the range 'a' through 'z'.</p></td></tr><tr><td width="106"><p>[^<i>a-z</i>]</p></td><td width="518"><p>A negative range characters. Matches any character not in the specified range. For example, '[^a-z]' matches any character not in the range 'a' through 'z'.</p></td></tr><tr><td width="106"><p>\b</p></td><td width="518"><p>Matches a word boundary, that is, the position between a word and a space. For example, 'er\b' matches the 'er' in "never" but not the 'er' in "verb".</p></td></tr><tr><td width="106"><p>\B</p></td><td width="518"><p>Matches a nonword boundary. 'er\B' matches the 'er' in "verb" but not the 'er' in "never".</p></td></tr><tr><td width="106"><p>\c<i>x</i></p></td><td width="518"><p>Matches the control character indicated by <i>x</i>. For example, \cM matches a Control-M or carriage return character. The value of <i>x</i> must be in the range of A-Z or a-z. If not, c is assumed to be a literal 'c' character.</p></td></tr><tr><td width="106"><p>\d</p></td><td width="518"><p>Matches a digit character. Equivalent to [0-9].</p></td></tr><tr><td width="106"><p>\D</p></td><td width="518"><p>Matches a nondigit character. Equivalent to [^0-9].</p></td></tr><tr><td width="106"><p>\f</p></td><td width="518"><p>Matches a form-feed character. Equivalent to \x0c and \cL.</p></td></tr><tr><td width="106"><p>\n</p></td><td width="518"><p>Matches a newline character. Equivalent to \x0a and \cJ.</p></td></tr><tr><td width="106"><p>\r</p></td><td width="518"><p>Matches a carriage return character. Equivalent to \x0d and \cM.</p></td></tr><tr><td width="106"><p>\s</p></td><td width="518"><p>Matches any white space character including space, tab, form-feed, and so on. Equivalent to [ \f\n\r\t\v].</p></td></tr><tr><td width="106"><p>\S</p></td><td width="518"><p>Matches any non-white space character. Equivalent to [^ \f\n\r\t\v].</p></td></tr><tr><td width="106"><p>\t</p></td><td width="518"><p>Matches a tab character. Equivalent to \x09 and \cI.</p></td></tr><tr><td width="106"><p>\v</p></td><td width="518"><p>Matches a vertical tab character. Equivalent to \x0b and \cK.</p></td></tr><tr><td width="106"><p>\w</p></td><td width="518"><p>Matches any word character including underscore. Equivalent to '[A-Za-z0-9_]'.</p></td></tr><tr><td width="106"><p>\W</p></td><td width="518"><p>Matches any nonword character. Equivalent to '[^A-Za-z0-9_]'.</p></td></tr><tr><td width="106"><p>\x<i>n</i></p></td><td width="518"><p>Matches <i>n</i>, where <i>n</i> is a hexadecimal escape value. Hexadecimal escape values must be exactly two digits long. For example, '\x41' matches "A". '\x041' is equivalent to '\x04' & "1". Allows ASCII codes to be used in regular expressions.</p></td></tr><tr><td width="106"><p>\<i>num</i></p></td><td width="518"><p>Matches <i>num</i>, where <i>num</i> is a positive integer. A reference back to captured matches. For example, '(.)\1' matches two consecutive identical characters.</p></td></tr><tr><td width="106"><p>\<i>n</i></p></td><td width="518"><p>Identifies either an octal escape value or a backreference. If \<i>n</i> is preceded by at least <i>n</i> captured subexpressions, <i>n</i> is a backreference. Otherwise, <i>n</i> is an octal escape value if <i>n</i> is an octal digit (0-7).</p></td></tr><tr><td width="106"><p>\<i>nm</i></p></td><td width="518"><p>Identifies either an octal escape value or a backreference. If \<i>nm</i> is preceded by at least <i>nm</i> captured subexpressions, <i>nm</i> is a backreference. If \<i>nm</i> is preceded by at least <i>n</i> captures, <i>n</i> is a backreference followed by literal <i>m</i>. If neither of the preceding conditions exist, \<i>nm</i> matches octal escape value <i>nm</i> when <i>n </i>and <i>m</i> are octal digits (0-7).</p></td></tr><tr><td width="106"><p>\<i>nml</i></p></td><td width="518"><p>Matches octal escape value <i>nml </i>when <i>n</i> is an octal digit (0-3) and <i>m</i> and <i>l</i> are octal digits (0-7).</p></td></tr><tr><td width="106"><p>\u<i>n</i></p></td><td width="518"><p>Matches <i>n</i>, where <i>n</i> is a Unicode character expressed as four hexadecimal digits. For example, \u00A9 matches the copyright symbol (©).</p></td></tr></tbody></table> ## More in Regular Expressions [All posts in Regular Expressions](https://osherove.com/blog/category/regular-expressions) - Sep 28, 2003 ### [Creating a generic Site-To-RSS tool](https://osherove.com/blog/2003/9/28/creating-a-generic-site-to-rss-tool.html) - May 12, 2003 ### [Practical Parsing Using Groups in Regular Expressions](https://osherove.com/blog/2003/5/12/practical-parsing-using-groups-in-regular-expressions.html) --- title: "Why Good Design Comes from Bad Design" url: "https://osherove.com/blog/2003/5/11/why-good-design-comes-from-bad-design.md" canonical: "https://osherove.com/blog/2003/5/11/why-good-design-comes-from-bad-design.html" published: "2003-05-11T04:14:00" updated: "2003-05-11T04:14:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Found a very nice piece: Why Good Design Comes from Bad Design By Scott Berkun . Good stuff." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why Good Design Comes from Bad Design By Roy Osherove May 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 11, 2003; technical details may be outdated. Found a very nice piece: [Why Good Design Comes from Bad Design](http://www.uiweb.com/issues/issue08.htm) By [Scott Berkun](http://www.uiweb.com/about.htm). Good stuff. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 11, 2003 ### [Return of ...](https://osherove.com/blog/2003/5/11/return-of.html) - May 11, 2003 ### [Geek Book](https://osherove.com/blog/2003/5/11/geek-book.html) - May 11, 2003 ### [Mind Rates](https://osherove.com/blog/2003/5/11/mind-rates.html) - May 10, 2003 ### [InnovaSys SmartTasks Beta Download Available](https://osherove.com/blog/2003/5/10/innovasys-smarttasks-beta-download-available.html) --- title: "Mind Rates" url: "https://osherove.com/blog/2003/5/11/mind-rates.md" canonical: "https://osherove.com/blog/2003/5/11/mind-rates.html" published: "2003-05-11T03:58:00" updated: "2003-05-11T03:58:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Duncan Replies to my post about Chris Pirillo: \" I need some work done, whether that is easy or hard for the person I hire isn't relevant... and if they answer my question too quickly that certainly shouldn't be a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mind Rates By Roy Osherove May 11, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 11, 2003; technical details may be outdated. Duncan [Replies](http://dotnetweblogs.com/duncanma/posts/6859.aspx) to [my post](http://dotnetweblogs.com/rosherove/posts/6550.aspx) about Chris Pirillo: "_I need some work done, whether that is easy or hard for the person I hire isn't relevant... and if they answer my question too quickly that certainly shouldn't be a problem either._" " _if, on the other hand, you want someone to actually dig up an answer to your question (and whether that is easy or hard for them isn't relevant) then you should have to pay._" I have no problem with having to pay for work, nor with how quickly I get a reply. Chris's know-how with technology automatically makes him a tech-support guru candidate and I have no wish that he does all his answering pro-bono. What I **was** saying is that charging 27$ flat out, no matter what , is not the way to go IMHO. **Example**: If you were to go to the auto mechanic for a problem you have in your car, And you have no idea what the extent of the problem is , how easy or hard it is to fix, or what would it cost, and when you ask the mechanic for the cost he says "_that'll be 200$, no questions asked, flat rate_". You'll say "_cool! I might have a very big problem. I might save on this one!"_ and then he goes and you see him turning a small knob in your car to the right, and everything is suddenly fine. Would you feel cheated out of a 100$? Wouldnt you feel that the guy could(should) have said "look, it's a real simple thing, 10 seconds and I'm done. It'll cost you only 20$" ? I know I expect this kind of courtesy when I go to any professional.  What if the mechanic had to replace the whole engine, doing a 3-day work just on your car. Do you think he'll still charge you the flat rate? Or will he say "_Look, it was a real b\*tch to fix, it'll cost you 2000$_"? My point was that Chris should have lower rates for easier questions and higher rates for harder questions. That's all. ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 27, 2003 ### [BlogWear](https://osherove.com/blog/2003/5/27/blogwear.html) - May 18, 2003 ### [When Blogs Go Commercial](https://osherove.com/blog/2003/5/18/when-blogs-go-commercial.html) - May 9, 2003 ### [Enlightenment](https://osherove.com/blog/2003/5/9/enlightenment.html) - May 6, 2003 ### [Chris Pirillo Sells His Mind](https://osherove.com/blog/2003/5/6/chris-pirillo-sells-his-mind.html) --- title: "InnovaSys SmartTasks Beta Download Available" url: "https://osherove.com/blog/2003/5/10/innovasys-smarttasks-beta-download-available.md" canonical: "https://osherove.com/blog/2003/5/10/innovasys-smarttasks-beta-download-available.html" published: "2003-05-10T21:10:00" updated: "2003-05-10T21:10:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "I requested and got permission to post the following beta material. Being a fond user of some of their other products, I'm posting this. You are all welcome to download and try it out. have fun :) From what I've tried…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # InnovaSys SmartTasks Beta Download Available By Roy Osherove May 10, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 10, 2003; technical details may be outdated. I requested and got permission to post the following beta material. Being a fond user of some of their other products, I'm posting this. You are all welcome to download and try it out. have fun :) From what I've tried so far, it shows promise. "We are pleased to announce the beta availability of a new product, **Innovasys SmartTasks**. Innovasys SmartTasks is the first task management tool to focus on a Visual Studio / Visual Studio.NET developers needs and features innovative collaboration and 'Context Linking' technology. SmartTasks allows you to organize, share and link tasks the way you want. Using global hotkeys, automatically link tasks to specific Outlook emails, Visual Basic or Visual Studio.NET solutions, projects, files or even specific code procedures - allowing you to create and navigate links to all the code relevant to the task in hand with a single click. Also link to files and internet URLs using drag and drop. See the full product overview below for more details on SmartTasks functionality, including Instant Messenger and email collaboration features. We invite you to download and install SmartTasks Beta 1 and let us know what you think, and to help us refine the product design and feature set prior to release. We have been using SmartTasks internally for some time now and believe you will find the product both robust and feature rich. SmartTasks includes Outlook Import functionality, so if you have a Task list you manage in Outlook - give SmartTasks a try and experience the difference. The most active beta testers will receive a free license for Innovasys SmartTasks when released. Screenshot of the SmartTasks user interface: [http://www.innovasys.net/images/screenshots/smarttasks/mainscreen.gif](http://www.innovasys.net/images/screenshots/smarttasks/mainscreen.gif "http://www.innovasys.net/images/screenshots/smarttasks/mainscreen.gif") **\*\*\* IMPORTANT NOTE FOR DOCKSTUDIOXP USERS **SmartTasks uses v1.5 of the DockStudioXP toolbar control so if you are \*not\* currently using the 1.5 beta version of DockStudioXP you should not install the SmartTasks beta as it will install version 1.5 of the DockStudioXP control. **Obtaining the beta release** sign up for the beta at: [http://innovasys.net/support/betasignup.asp](http://innovasys.net/support/betasignup.asp "http://innovasys.net/support/betasignup.asp") You can then download Innovasys SmartTasks beta setup from: [http://www.innovasys.net/download/beta.asp](http://www.innovasys.net/download/beta.asp "http://www.innovasys.net/download/beta.asp") overview Innovasys SmartTasks is an information manager allowing you to create, link and organize tasks, contacts and notes in a user friendly and productive environment. **Link ** SmartTasks contains innovative Context Link technology that allows you to precisely link Tasks with relevant items (emails, procedures in Visual Basic / Visual Studio.NET projects, files). Using global hotkeys, create or link tasks from within Microsoft Outlook, Microsoft Visual Basic, Microsoft Visual Studio.NET and Innovasys HelpStudio. Use drag and drop to link files and Internet addresses with an existing task. The rich linking capabilities with Visual Basic 6.0 and Visual Studio.NET make SmartTasks the ideal task management solution for developers. **Collaborate ** Collaborate by sharing tasks with your colleagues and other contacts. SmartTasks can send and receive Tasks using your Microsoft Windows Messenger connection, using Microsoft Outlook or directly by email using your SMTP mail server. The collaboration features of SmartTasks, coupled with the rich linking capabilities with Visual Basic 6.0 and Visual Studio.NET make SmartTasks the ideal task management for development teams of all sizes. **Manage ** Track Tasks by Priority, Status, Category. Organize Tasks into hierarchical folders. Use the 'Due Items' panel to keep track of due and overdue Tasks. Sort and Group at the click of a button, and define 'Format rules' to highlight tasks in a way that makes most sense for you (e.g. highlight overdue items in Red, mark unread items in bold). **Customize ** SmartTasks supports a rich in-built set of Task information fields which can be extended through creating your own Custom Fields. Create your own Category, Priority and Status values. Using the SmartTasks SDK, you can seamlessly integrate SmartTasks by creating Add-Ins or by utilizing the SmartTasks Context Link technology in your own Applications. **Archive ** Archive items so you have a permanent record of your historical tasks. Innovasys Beta Team _You are receiving this email as you are a registered user of one or more Innovasys products, or have expressed an interest in beta testing future Innovasys products. It is not our intention to send you email you would rather not receive - if you would rather not receive emails of this kind in future, please reply to this email with a subject line of NOBETA"_ ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 12, 2003 ### [Blindfolded](https://osherove.com/blog/2003/5/12/blindfolded.html) - May 11, 2003 ### [Expresso Is Coolness](https://osherove.com/blog/2003/5/11/expresso-is-coolness.html) - May 10, 2003 ### [How To Lose Your Job (Unless you are Don)](https://osherove.com/blog/2003/5/10/how-to-lose-your-job-unless-you-are-don.html) - May 9, 2003 ### [The (Almost) Official .Net Tools List Gets An Upgrade](https://osherove.com/blog/2003/5/9/the-almost-official-net-tools-list-gets-an-upgrade.html) --- title: "Retro Games" url: "https://osherove.com/blog/2003/5/10/retro-games.md" canonical: "https://osherove.com/blog/2003/5/10/retro-games.html" published: "2003-05-10T20:42:00" updated: "2003-05-10T20:42:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Here's a retro: Tech TV's \"The Screen Savers\" have a list of their f avorite Graphically challenged games . Some good ones there, but i especially liked this [text based] one: \" The Hitchhiker's Guide to the Galaxy The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Retro Games By Roy Osherove May 10, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 10, 2003; technical details may be outdated. Here's a retro: Tech TV's "The Screen Savers" have a list of their f[avorite Graphically challenged games](http://www.techtv.com/screensavers/downloadoftheday/story/0,24330,3426372,00.html). Some good ones there, but i especially liked this \[text based\] one: "[**_The Hitchhiker's Guide to the Galaxy_**](http://www.the-underdogs.org/game.php?id=3486) _The antithesis of super-graphics gaming is -- of course -- text-based games. Of these, for my money, it doesn't get any better than Infocom's classic "The Hitchhiker's Guide to the Galaxy." Based on the infamous five-book trilogy by Douglas Adams, you begin the game as the befuddled Arthur Dent, waking one average morning and failing to notice the large, yellow bulldozer in your front yard. I grew up playing this game and the "Solid Gold" edition released in 1987 manages to improve the experience without interfering with the original. Give your trigger finger a break, put your imagination to work, and download this game immediately. You can thank me later. (Another Infocom favorite you might recall is the popular_ [_Zork_](http://www.the-underdogs.org/game.php?gameid=1311) _series)._ " ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 11, 2003 ### [Mind Rates](https://osherove.com/blog/2003/5/11/mind-rates.html) - May 10, 2003 ### [InnovaSys SmartTasks Beta Download Available](https://osherove.com/blog/2003/5/10/innovasys-smarttasks-beta-download-available.html) - May 10, 2003 ### [How I Learn New Technologies](https://osherove.com/blog/2003/5/10/how-i-learn-new-technologies.html) - May 10, 2003 ### [How To Lose Your Job (Unless you are Don)](https://osherove.com/blog/2003/5/10/how-to-lose-your-job-unless-you-are-don.html) --- title: "How I Learn New Technologies" url: "https://osherove.com/blog/2003/5/10/how-i-learn-new-technologies.md" canonical: "https://osherove.com/blog/2003/5/10/how-i-learn-new-technologies.html" published: "2003-05-10T20:13:00" updated: "2003-05-10T20:13:00" tags: [".Net Original", "Off Topic"] author: "Roy Osherove" description: "As the years go by, I seem to understand better and better how my learning process works. When it comes to new technology, I seem to be a “ circle thinker ”. When I try to learn something, I do it in stages. I don’t…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How I Learn New Technologies By Roy Osherove May 10, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 10, 2003; technical details may be outdated. As the years go by, I seem to understand better and better how my learning process works. When it comes to new technology, I seem to be a “**circle thinker**”. When I try to learn something, I do it in stages. I don’t call them “stages” or ‘circles” , though. They just “happen” all by themselves. ·        **Circle 1 – AKA  “Add data to the \[‘know where to look’\] index”** I’ll usually read about it in some magazine or post, and immediately download & install it if necessary and start playing with the new found technology. This Stage usually ends fairly quickly. My brain just tells me it’s not interesting anymore. It’s as if my brain has found a new book, and the first thing it wants to do is read its table of contents. Once it has, it no longer wants to continue reading more then chapter one, and quickly browse through the rest of the chapters. I’ll usually try something really rudimentary with the new technology, like doing a small sample or something that requires no more then 15 minutes. Once I feel that in the future I will be able to know where to look for information regarding a more serious use of stuff related to this new technology I just feel bored with it. Well, not as “bored “as “There are more important things to explore/do right now” \-          **_InfoPath_** _is a good example of a technology with which I have finished **circle 1**._ \-          **_.Net Compact Framework mobile apps_**  _is another good example of a technology with which I have finished **circle 1**._ ·        **Circle 2 – AKA “Let’s try to do something a little more in-depth with this thing”** This is the part where I try to do something a little more then a simple sample. I try to find a simple project that I can actually use. I need to have something realistic to do, otherwise I’ll lose my motivation for doing it (That’s why doing stuff with new technology as part of your job is a much more educating experience then it is if your doing it just for the sake of doing it – You have to solve it, because you owe it to someone else, no slacking around). This is an important stage: If I don’t manage to do it with relative ease, I’ll usually lose my motivation to finish it, meaning this circle can be repeated as much as 2-3 times, with (sometimes weeks) time gaps between them. If I do manage to finish it with ease, I’ll go on to the next circle. \-         **_Regular Expressions_** _are a good example of a technology that I just finished doing **Circle 2** with. Successfully._ \-         **_ASP.Net_** _is a good example of a technology which is currently **stuck** on **circle 2** with me (Trying to build a food ordering system for my company, and keep getting stuck...)_ ·        **Circle 3 – AKA “Let’s do something really cool”** This is the part where I feel confident enough about a technology to do something more advanced with it. I’ll find a cool project idea I’d like to do, and then try to do it. I expressly try to find project requirements that would make me go into the depths of the technology, and of which I only know basic stuff or from the “**Index**” mentioned in **Circle 1**. \-         **_Remoting & Tracing_** _are a good example of something currently in **circle 3**. I am developing a tracing solution that allows a user to receive traces from both “legacy” (VB,C++) applications and COM components and from .Net, all combined with Remoting solutions, allowing the user to see the traces from any remote computer in real-time._ \-         **_Typed Datasets_** _are another example of **circle 3** technology with which I have just finished putting together a solution for my company. It involved exposing all the company’s proprietary log files as searchable datasets, using regular expressions, XML classes and ADO.NET._ ·        **Circle 4 - AKA “What’s next?”** This stage is usually optional, and is basically more of a rehash of **circle 3**, only on a more in-depth scale. It is usually achieved quite some time after the other circles have finished. It involves much more research and playing stuff. \-         There currently is not example of circle 4 technologies involving .Net \-         Plenty of VB6 technologies can be used as an example here. ## _The Problem(is it really?)_ The big problem with this learning process model is that there are (sometimes) large gaps of time between circles, could be just a day, but sometimes even weeks or a month.  When I come back to the subject, I usually feel more energized about learning it in the new level, or, if I feel the previous circle failed, I’ll redo it, but with more confidence. Another factor here is that over this period of time, I do absorb more material in about that particular subject, but in a much less structured way (the occasional internet article or web log entry). It sinks in over time, though, which gives me more confidence at later stages. However, this leads to learning new stuff in-depth, a pretty slow process. Yes, I can get a task at work that makes me go out and learn all I can about a particular feature I need to work with, and I’ll do it with flying colors, but when studying **alone**, without the push of a job, I can get distracted. Perhaps this whole process actually contributes to a higher level of expertise in the end. Who knows (?). ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 11, 2003 ### [Free Book Chapters](https://osherove.com/blog/2003/5/11/free-book-chapters.html) - May 11, 2003 ### [Introduction To Regular Expressions](https://osherove.com/blog/2003/5/11/introduction-to-regular-expressions-1.html) - May 8, 2003 ### [More About Using Undocumented API's](https://osherove.com/blog/2003/5/8/more-about-using-undocumented-apis.html) - May 8, 2003 ### [How Access 2003 Helped Me Out](https://osherove.com/blog/2003/5/8/how-access-2003-helped-me-out.html) --- title: "How To Lose Your Job (Unless you are Don)" url: "https://osherove.com/blog/2003/5/10/how-to-lose-your-job-unless-you-are-don.md" canonical: "https://osherove.com/blog/2003/5/10/how-to-lose-your-job-unless-you-are-don.html" published: "2003-05-10T18:47:00" updated: "2003-05-10T18:47:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "Don points to the Microsoft Reaserch Downloads site . Now here's a place to spend a week or two...." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How To Lose Your Job (Unless you are Don) By Roy Osherove May 10, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 10, 2003; technical details may be outdated. Don [points](http://www.gotdotnet.com/team/dbox/spoutletex.aspx?key=2003-05-10T06:06:32Z) to the [Microsoft Reaserch Downloads site](http://research.microsoft.com/research/downloads/). Now here's a place to spend a week or two.... ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 11, 2003 ### [Expresso Is Coolness](https://osherove.com/blog/2003/5/11/expresso-is-coolness.html) - May 10, 2003 ### [InnovaSys SmartTasks Beta Download Available](https://osherove.com/blog/2003/5/10/innovasys-smarttasks-beta-download-available.html) - May 9, 2003 ### [The (Almost) Official .Net Tools List Gets An Upgrade](https://osherove.com/blog/2003/5/9/the-almost-official-net-tools-list-gets-an-upgrade.html) - May 8, 2003 ### [A Better RegEdit](https://osherove.com/blog/2003/5/8/a-better-regedit.html) --- title: "Writing Articles Is Hard!" url: "https://osherove.com/blog/2003/5/10/writing-articles-is-hard.md" canonical: "https://osherove.com/blog/2003/5/10/writing-articles-is-hard.html" published: "2003-05-10T14:07:00" updated: "2003-05-10T14:07:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I'm currently in the process of trying to write an article to be posted on my blog. Its on a bigger scale than the others I already have posted before, and I must admint it's a bigger task than I imagined. One of the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Writing Articles Is Hard! By Roy Osherove May 10, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 10, 2003; technical details may be outdated. I'm currently in the process of trying to write an article to be posted on my blog. Its on a bigger scale than the others I already have posted before, and I must admint it's a bigger task than I imagined. One of the things I am confronted with is explaining basic concepts in a way that someone who does not know them already can learn and understand them . It's pretty darn hard putting myself in that place, since writing about things that seem trivial to me makes me keep skipping stuff, and then having to go back and add it. I salute those who write these things. I never knew it's such a pain. I would gladly like to read any advice you may have on the subject and how to approach this in a more structured manner. Any tips,tricks or otherwise - I promise to listen! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 10, 2003 ### [How I Learn New Technologies](https://osherove.com/blog/2003/5/10/how-i-learn-new-technologies.html) - May 10, 2003 ### [How To Lose Your Job (Unless you are Don)](https://osherove.com/blog/2003/5/10/how-to-lose-your-job-unless-you-are-don.html) - May 10, 2003 ### [Blog Junkie](https://osherove.com/blog/2003/5/10/blog-junkie.html) - May 10, 2003 ### [Weird](https://osherove.com/blog/2003/5/10/weird.html) --- title: "Blog Junkie" url: "https://osherove.com/blog/2003/5/10/blog-junkie.md" canonical: "https://osherove.com/blog/2003/5/10/blog-junkie.html" published: "2003-05-10T12:37:00" updated: "2003-05-10T12:37:00" tags: ["Off Topic"] author: "Roy Osherove" description: "How's this for a blog junkie's start page? He also has an interesting blog . Another thing : This guy gives a very good example of how to expose your portfolio to potential employers . Here . Very slick." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blog Junkie By Roy Osherove May 10, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 10, 2003; technical details may be outdated. How's [this](http://woodster.com/rss/microsoft.aspx) for a blog junkie's start page? He also has an interesting  [blog](http://woodster.com/soapbox/). Another thing : This guy gives a very good example of how to expose your portfolio to potential employers . [Here](http://woodster.com/portfolio/). Very slick. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 10, 2003 ### [How To Lose Your Job (Unless you are Don)](https://osherove.com/blog/2003/5/10/how-to-lose-your-job-unless-you-are-don.html) - May 10, 2003 ### [Writing Articles Is Hard!](https://osherove.com/blog/2003/5/10/writing-articles-is-hard.html) - May 10, 2003 ### [Weird](https://osherove.com/blog/2003/5/10/weird.html) - May 9, 2003 ### [What's On My Bookshelf](https://osherove.com/blog/2003/5/9/whats-on-my-bookshelf.html) --- title: "Weird" url: "https://osherove.com/blog/2003/5/10/weird.md" canonical: "https://osherove.com/blog/2003/5/10/weird.html" published: "2003-05-10T12:35:00" updated: "2003-05-10T12:35:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I have no idea why this site exists" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Weird By Roy Osherove May 10, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 10, 2003; technical details may be outdated. I have no idea why [this site](http://www.royo.net/) exists ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 10, 2003 ### [Writing Articles Is Hard!](https://osherove.com/blog/2003/5/10/writing-articles-is-hard.html) - May 10, 2003 ### [Blog Junkie](https://osherove.com/blog/2003/5/10/blog-junkie.html) - May 9, 2003 ### [What's On My Bookshelf](https://osherove.com/blog/2003/5/9/whats-on-my-bookshelf.html) - May 8, 2003 ### [The Unofficial "Mort" Logo Is Available](https://osherove.com/blog/2003/5/8/the-unofficial-quotmortquot-logo-is-available.html) --- title: "Mort Banner - Revised" url: "https://osherove.com/blog/2003/5/10/mort-banner-revised.md" canonical: "https://osherove.com/blog/2003/5/10/mort-banner-revised.html" published: "2003-05-10T03:48:00" updated: "2003-05-10T03:48:00" tags: [".NetWeblogs Site"] author: "Roy Osherove" description: "OK. Here's the new Mort Banner, courtesy of Dan . (Click on the banner to learn what's a mort) Hey, maybe now people will actally use it! :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mort Banner - Revised By Roy Osherove May 10, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) **Historical article** · Originally published May 10, 2003; technical details may be outdated. OK. Here's the new Mort Banner, courtesy of [Dan](http://aigee.org/).  (Click on the banner to learn what's a mort) Hey, maybe now people will actally use it! :) ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - May 30, 2003 ### [Congratulations ScottW](https://osherove.com/blog/2003/5/30/congratulations-scottw.html) - May 15, 2003 ### [Blog style change](https://osherove.com/blog/2003/5/15/blog-style-change.html) - May 9, 2003 ### [Enlightenment](https://osherove.com/blog/2003/5/9/enlightenment.html) - May 9, 2003 ### [Welcome Philip , Interviews, "as" Vs. Casting](https://osherove.com/blog/2003/5/9/welcome-philip-interviews-quotasquot-vs-casting.html) --- title: ".Net Coding Conventions" url: "https://osherove.com/blog/2003/5/9/net-coding-conventions.md" canonical: "https://osherove.com/blog/2003/5/9/net-coding-conventions.html" published: "2003-05-09T21:54:00" updated: "2003-05-09T21:54:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "A friend asked me some time ago whether I have any good document regarding coding conventions and guidlines for C# and overall .Net programming. I didn't have an answer then so I handed them the document I compiled from…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Coding Conventions By Roy Osherove May 9, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 9, 2003; technical details may be outdated. A friend asked me some time ago whether I have any good document regarding coding conventions and guidlines for C# and overall .Net programming. I didn't have an answer then so I handed them the document I compiled from my old VB days as a team leader regarding code conventions. It would at least be a blueprint as to what was needed. However, I found a useful resource on this today (courtesy of [Ed Kaim](http://blogs.gotdotnet.com/edkaim/commentview.aspx/81edb4ee-c24f-4f01-a605-21e42068e765)). [This link](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconnetframeworkdesignguidelines.asp) in MSDN contains just about anything one could ask for (A little bit too much actually) in terms of guidelines, ranging from naming conventions through Error and Exception handling and forwarding and up to "Guidelines for Exposing Functionality to COM". Pretty darn thorough, I'd say. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 15, 2003 ### [One Cool Menu](https://osherove.com/blog/2003/5/15/one-cool-menu.html) - May 13, 2003 ### [MSDN Hands-On Labs](https://osherove.com/blog/2003/5/13/msdn-hands-on-labs.html) - May 9, 2003 ### [Windows Server 2003 for Developers](https://osherove.com/blog/2003/5/9/windows-server-2003-for-developers.html) - May 9, 2003 ### [Production Debugging for .NET Framework Applications](https://osherove.com/blog/2003/5/9/production-debugging-for-net-framework-applications.html) --- title: "My Bookshelf" url: "https://osherove.com/blog/2003/5/9/my-bookshelf.md" canonical: "https://osherove.com/blog/2003/5/9/my-bookshelf.html" published: "2003-05-09T21:37:00" updated: "2003-05-09T21:37:00" tags: ["Other"] author: "Roy Osherove" description: "Books I want//Book of the month : .NET Framework Standard Library Annotated Reference, Volume 1: Base Class Library and Extended Numerics Library, 1/e Test-Driven Development in Microsoft .NET Writing Secure Code,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My Bookshelf By Roy Osherove May 9, 2003 In [Other](https://osherove.com/blog/category/other) **Historical article** · Originally published May 9, 2003; technical details may be outdated. **Books I want//Book of the month**: ### **[.NET Framework Standard Library Annotated Reference, Volume 1: Base Class Library and Extended Numerics Library, 1/e](https://www.amazon.com/exec/obidos/ASIN/0321154894/iserializable-20)** ### **[Test-Driven Development in Microsoft .NET](https://www.amazon.com/exec/obidos/ASIN/0735619484/iserializable-20)** [Writing Secure Code, Second Edition](https://www.amazon.com/exec/obidos/ASIN/0735617228/iserializable-20) [.NET Security](https://www.amazon.com/exec/obidos/ASIN/1590590538/iserializable-20) [101 Microsoft Visual Basic .NET Applications](https://www.amazon.com/exec/obidos/ASIN/0735618917/ref%3Dnosim/addallbooksearch/iserializable-20/iserializable-20) [Essential .NET, Volume I: The Common Language Runtime](https://www.amazon.com/exec/obidos/ASIN/0201734117/iserializable-20) [Google Hacks: 100 Industrial-Strength Tips & Tools](https://www.amazon.com/exec/obidos/ASIN/0596004478/iserializable-20) [About Face 2.0: The Essentials of Interaction Design](https://www.amazon.com/exec/obidos/ASIN/0764526413/iserializable-20) [Programming .NET Components](https://www.amazon.com/exec/obidos/ASIN/0596003471/iserializable-20) [Streamlined Object Modeling: Patterns, Rules, and Implementation](https://www.amazon.com/exec/obidos/ASIN/0130668397/iserializable-20) [Shared Source CLI Essentials](https://www.amazon.com/exec/obidos/ASIN/059600351X/iserializable-20) [How to Break Software: A Practical Guide to Testing](https://www.amazon.com/exec/obidos/ASIN/0201796198/iserializable-20) [Pair Programming Illuminated](https://www.amazon.com/exec/obidos/ASIN/0201745763/iserializable-20) **Book I own** ### **.Net** ### **[.NET Framework Standard Library Annotated Reference, Volume 1: Base Class Library and Extended Numerics Library, 1/e](https://www.amazon.com/exec/obidos/ASIN/0321154894/iserializable-20)** ### **[Test-Driven Development in Microsoft .NET](https://www.amazon.com/exec/obidos/ASIN/0735619484/iserializable-20)** [Patterns of Enterprise Application Architecture](https://www.amazon.com/exec/obidos/ASIN/0321127420/iserializable-20) [.NET and COM: The Complete Interoperability Guide](https://www.amazon.com/exec/obidos/ASIN/067232170X/iserializable-20) [COM and .NET Component Services (O'Reilly Windows)](https://www.amazon.com/exec/obidos/ASIN/0596001037/iserializable-20) [Advanced .Net Remoting](https://www.amazon.com/exec/obidos/ASIN/1590590252/iserializable-20) [ASP.NET Website Programming: Problem - Design - Solution C# Edition](https://www.amazon.com/exec/obidos/ASIN/1861006934/iserializable-20) [Applied Microsoft .Net Framework Programming](https://www.amazon.com/exec/obidos/ASIN/0735614229/iserializable-20) [Programming Windows with C#](https://www.amazon.com/exec/obidos/ASIN/0735613702/iserializable-20) [Inside C#](https://www.amazon.com/exec/obidos/ASIN/0735616485/iserializable-20) [MCAD/MCSD Training Guide (70-315): Developing and Implementing Web Applications with Visual C# and Visual Studio.NET](https://www.amazon.com/exec/obidos/ASIN/0789728222/iserializable-20) [MCAD/MCSD Visual Basic(r) .NET(tm) Windows(r) Applications Study Guide (Exam 70-306)](https://www.amazon.com/exec/obidos/ASIN/0072125837/iserializable-20) ### **VB** [VB Programmer’s Guide to the Win32API](https://www.amazon.com/exec/obidos/ASIN/0672315904/iserializable-20) [Advanced Visual Basic 6.0](https://www.amazon.com/exec/obidos/ASIN/B00006L568/iserializable-20) [Ready To Run Visual Basic Algorithms](https://www.amazon.com/exec/obidos/ASIN/0471242683/iserializable-20) [C++ For VB Programmers](https://www.amazon.com/exec/obidos/ASIN/1893115763/iserializable-20) [Developing COM/ActiveX Controls using Visual Basic](https://www.amazon.com/exec/obidos/ASIN/1562765760/iserializable-20) ### **Practices & "Zen"** [Code Complete](https://www.amazon.com/exec/obidos/ASIN/1556154844/iserializable-20) [The Pragmatic Programmer](https://www.amazon.com/exec/obidos/ASIN/020161622X/iserializable-20) [Are Your Lights On?](https://www.amazon.com/exec/obidos/ASIN/0932633161/iserializable-20) [101 creative problem solving ways](https://www.amazon.com/exec/obidos/ASIN/1883629004/iserializable-20) [Lateral Thinking](https://www.amazon.com/exec/obidos/ASIN/0060903252/iserializable-20) ### **XP** [Extreme Programming Applied](https://www.amazon.com/exec/obidos/ASIN/0201616408/iserializable-20) [Extreme Programming explained](https://www.amazon.com/exec/obidos/ASIN/0201616416/iserializable-20) ### **Interaction Design** [The Design of Everyday Things](https://www.amazon.com/exec/obidos/ASIN/0465067107/iserializable-20) [The inmates are running the asylum](https://www.amazon.com/exec/obidos/ASIN/0672316498/iserializable-20) [GUI Bloopers](https://www.amazon.com/exec/obidos/ASIN/1558605827/iserializable-20) ### **Project Management** [Design Patterns](https://www.amazon.com/exec/obidos/ASIN/0201633612/iserializable-20) [Rapid Development](https://www.amazon.com/exec/obidos/ASIN/1556159005/iserializable-20) [That Mythical Man-Month](https://www.amazon.com/exec/obidos/ASIN/0201835959/iserializable-20) [The Deadline](https://www.amazon.com/exec/obidos/ASIN/0932633390/iserializable-20) [PeopleWare](https://www.amazon.com/exec/obidos/ASIN/0932633439/iserializable-20) [Managing Software Requirements](https://www.amazon.com/exec/obidos/ASIN/0201615932/iserializable-20) [AntiPatterns](https://www.amazon.com/exec/obidos/ASIN/0471197130/iserializable-20) ### **Other** [The man who loved only numbers](https://www.amazon.com/exec/obidos/ASIN/0786884061/iserializable-20) [Graph Drawing](https://www.amazon.com/exec/obidos/ASIN/0133016153/iserializable-20) [How Would You Move Mount Fuji? Microsoft's Cult of the Puzzle - How the World's Smartest Company Selects the Most Creative Thinkers](https://www.amazon.com/exec/obidos/ASIN/0316919160/iserializable-20) ## More in Other [All posts in Other](https://osherove.com/blog/category/other) - Jun 11, 2003 ### [Announcing: .Net Desktops Contest](https://osherove.com/blog/2003/6/11/announcing-net-desktops-contest.html) - May 26, 2003 ### [.Net Debugging Resources](https://osherove.com/blog/2003/5/26/net-debugging-resources.html) --- title: "What's On My Bookshelf" url: "https://osherove.com/blog/2003/5/9/whats-on-my-bookshelf.md" canonical: "https://osherove.com/blog/2003/5/9/whats-on-my-bookshelf.html" published: "2003-05-09T21:36:00" updated: "2003-05-09T21:36:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I always like to see what other people are reading so I'll share my own list. I'm probably missing a few, but I'll update as needed. I'll also put this on my \"about\" zone as a story. .Net Advanced .Net Remoting ASP.NET…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What's On My Bookshelf By Roy Osherove May 9, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 9, 2003; technical details may be outdated. I always like to see what other people are reading so I'll share my own list. I'm probably missing a few, but I'll update as needed. I'll also put this on my "about" zone as a story. ### .Net [Advanced .Net Remoting](https://www.amazon.com/exec/obidos/tg/detail/-/1590590252/qid=1052526257/sr=8-1/ref=sr_8_1/104-0728248-0448757?v=glance&s=books) [ASP.NET Website Programming: Problem - Design - Solution C# Edition](https://www.amazon.com/exec/obidos/tg/detail/-/1861006934/qid=1052590666/sr=8-1/ref=sr_8_1/104-0728248-0448757?v=glance&s=books) [Applied Microsoft .Net Framework Programming](https://www.amazon.com/exec/obidos/tg/detail/-/0735614229/qid=1052526287/sr=8-1/ref=sr_8_1/104-0728248-0448757?v=glance&s=books) [Programming Windows with C#](https://www.amazon.com/exec/obidos/tg/detail/-/0735613702/qid=1052526311/sr=8-1/ref=sr_8_1/104-0728248-0448757?v=glance&s=books) [Inside C#](https://www.amazon.com/exec/obidos/tg/detail/-/0735616485/qid=1052526349/sr=1-1/ref=sr_1_1/104-0728248-0448757?v=glance&s=books) [MCAD/MCSD Training Guide (70-315): Developing and Implementing Web Applications with Visual C# and Visual Studio.NET](https://www.amazon.com/exec/obidos/ASIN/0789728222/qid=1052527001/104-0728248-0448757) [MCAD/MCSD Visual Basic(r) .NET(tm) Windows(r) Applications Study Guide (Exam 70-306)](https://www.amazon.com/exec/obidos/ASIN/0072125837/qid=1052527106/sr=11-1/ref=sr_11_1/104-0728248-0448757)   ### VB [VB Programmer’s Guide to the Win32API](https://www.amazon.com/exec/obidos/tg/detail/-/0672315904/qid=1052526398/sr=1-1/ref=sr_1_1/104-0728248-0448757?v=glance&s=books) [Advanced Visual Basic 6.0](https://www.amazon.com/exec/obidos/tg/detail/-/B00006L568/qid=1052526423/sr=1-2/ref=sr_1_2/104-0728248-0448757?v=glance&s=books) [Ready To Run Visual Basic Algorithms](https://www.amazon.com/exec/obidos/tg/detail/-/0471242683/qid=1052526458/sr=1-1/ref=sr_1_1/104-0728248-0448757?v=glance&s=books) ### Coding Practices [Code Complete](https://www.amazon.com/exec/obidos/ASIN/1556154844/qid=1052526522/sr=2-1/ref=sr_2_1/104-0728248-0448757) [The Pragmatic Programmer](https://www.amazon.com/exec/obidos/tg/detail/-/020161622X/qid=1052526572/sr=1-1/ref=sr_1_1/104-0728248-0448757?v=glance&s=books) ### XP [Extreme Programming Applied](https://www.amazon.com/exec/obidos/tg/detail/-/0201616408/qid=1052526175/sr=8-1/ref=sr_8_1/104-0728248-0448757?v=glance&s=books) [Extreme Programming explained](https://www.amazon.com/exec/obidos/tg/detail/-/0201616416/qid=1052526214/sr=8-1/ref=sr_8_1/104-0728248-0448757?v=glance&s=books) ### Interaction Design [The Design of Everyday Things](https://www.amazon.com/exec/obidos/ASIN/0465067107/qid=1052526474/sr=2-1/ref=sr_2_1/104-0728248-0448757) [The inmates are running the asylum](https://www.amazon.com/exec/obidos/tg/detail/-/0672316498/qid=1052526491/sr=1-1/ref=sr_1_1/104-0728248-0448757?v=glance&s=books) [GUI Bloopers](https://www.amazon.com/exec/obidos/ASIN/1558605827/qid=1052526509/sr=11-1/ref=sr_11_1/104-0728248-0448757) ### Project Management [Design Patterns](https://www.amazon.com/exec/obidos/ASIN/0201633612/qid=1052526539/sr=2-1/ref=sr_2_1/104-0728248-0448757) [Rapid Development](https://www.amazon.com/exec/obidos/ASIN/1556159005/qid=1052526553/sr=2-1/ref=sr_2_1/104-0728248-0448757) [That Mythical Man-Month](https://www.amazon.com/exec/obidos/tg/detail/-/0201835959/qid=1052526594/sr=2-1/104-0728248-0448757?v=glance&s=books) [The Deadline](https://www.amazon.com/exec/obidos/ASIN/0932633390/qid=1052526610/sr=2-2/ref=sr_2_2/104-0728248-0448757) [PeopleWare](https://www.amazon.com/exec/obidos/tg/detail/-/0932633439/qid=1052526629/sr=1-1/ref=sr_1_1/104-0728248-0448757?v=glance&s=books) ### Other [The man who loved only numbers](https://www.amazon.com/exec/obidos/tg/detail/-/0786884061/qid=1052526147/sr=8-1/ref=sr_8_1/104-0728248-0448757?v=glance&s=books) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 10, 2003 ### [Blog Junkie](https://osherove.com/blog/2003/5/10/blog-junkie.html) - May 10, 2003 ### [Weird](https://osherove.com/blog/2003/5/10/weird.html) - May 8, 2003 ### [The Unofficial "Mort" Logo Is Available](https://osherove.com/blog/2003/5/8/the-unofficial-quotmortquot-logo-is-available.html) - May 8, 2003 ### [Serious Hotmail Vulnerability: Easily Reset Anyone's Password](https://osherove.com/blog/2003/5/8/serious-hotmail-vulnerability-easily-reset-anyones-password.html) --- title: "Enlightenment" url: "https://osherove.com/blog/2003/5/9/enlightenment.md" canonical: "https://osherove.com/blog/2003/5/9/enlightenment.html" published: "2003-05-09T20:42:00" updated: "2003-05-09T20:42:00" tags: [".NetWeblogs Site", "Blogging"] author: "Roy Osherove" description: "If your blog doesn't have a page piews counter yet, I suggest getting one.At least until we get page view statistics from Scott(hopefully, RSS feed statistics as well). It's a masochistic an addictively enlightening…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Enlightenment By Roy Osherove May 9, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site), [Blogging](https://osherove.com/blog/category/blogging) **Historical article** · Originally published May 9, 2003; technical details may be outdated. If your blog doesn't have a  [page piews counter](http://www.nedstatbasic.net/) yet, I suggest getting one.At least until we get page view statistics from Scott(hopefully, RSS feed statistics as well). It's ~a masochistic~ an addictively enlightening experience. ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - May 15, 2003 ### [Blog style change](https://osherove.com/blog/2003/5/15/blog-style-change.html) - May 10, 2003 ### [Mort Banner - Revised](https://osherove.com/blog/2003/5/10/mort-banner-revised.html) - May 9, 2003 ### [Welcome Philip , Interviews, "as" Vs. Casting](https://osherove.com/blog/2003/5/9/welcome-philip-interviews-quotasquot-vs-casting.html) - May 8, 2003 ### [The Unofficial "Mort" Logo Is Available](https://osherove.com/blog/2003/5/8/the-unofficial-quotmortquot-logo-is-available.html) --- title: "Windows Server 2003 for Developers" url: "https://osherove.com/blog/2003/5/9/windows-server-2003-for-developers.md" canonical: "https://osherove.com/blog/2003/5/9/windows-server-2003-for-developers.html" published: "2003-05-09T19:12:00" updated: "2003-05-09T19:12:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "A little slow to catch up, but here's a must-read for any .Net developer: Windows Server 2003 for Developers By Early & Adoper" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Windows Server 2003 for Developers By Roy Osherove May 9, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 9, 2003; technical details may be outdated. A little slow to catch up, but here's a must-read for any .Net developer: [Windows Server 2003 for Developers](http://www.3leaf.com/default/Articles/EA/W2K3.aspx) By [Early & Adoper](http://www.3leaf.com/default/home.aspx) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 13, 2003 ### [MSDN Hands-On Labs](https://osherove.com/blog/2003/5/13/msdn-hands-on-labs.html) - May 9, 2003 ### [.Net Coding Conventions](https://osherove.com/blog/2003/5/9/net-coding-conventions.html) - May 9, 2003 ### [Production Debugging for .NET Framework Applications](https://osherove.com/blog/2003/5/9/production-debugging-for-net-framework-applications.html) - May 9, 2003 ### [The (Almost) Official .Net Tools List Gets An Upgrade](https://osherove.com/blog/2003/5/9/the-almost-official-net-tools-list-gets-an-upgrade.html) --- title: "Production Debugging for .NET Framework Applications" url: "https://osherove.com/blog/2003/5/9/production-debugging-for-net-framework-applications.md" canonical: "https://osherove.com/blog/2003/5/9/production-debugging-for-net-framework-applications.html" published: "2003-05-09T18:25:00" updated: "2003-05-09T18:25:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "If you'd like to know the \"why\" as well as the\"how\" to fix debugging VS.NET debugging problems this MSDN Patterns & Practices book chapter makes for an interesting read: Production Debugging for .NET Framework…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Production Debugging for .NET Framework Applications By Roy Osherove May 9, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 9, 2003; technical details may be outdated. If you'd like to know the "why" as well as the"how" to fix debugging VS.NET debugging problems this MSDN Patterns & Practices book chapter makes for an interesting read: [Production Debugging for .NET Framework Applications](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/DBGch03.asp) _"**Summary:** This chapter describes how to approach debugging when ASP.NET fails to respond to browser requests. Causes may include a long-running request, or threads that deadlock or contend for a resource. Focusing on the latter, a walkthrough shows how to debug in a scenario with some controls that wait on a shared event. To set the scene, "ASP.NET Thread Pools" discusses .NET threading, the common language runtime thread pool, and how ASP.NET uses the thread pool. After the WinDbg walkthrough, there is an example that uses the Microsoft® Visual Studio® .NET debugger. For information about using CorDbg, see the Appendix."_ Thanks to [Yosi](http://dotnetweblogs.com/yosit/) for the link. Another, more "practical" guide to common VS.NET debugger problems can be found [here](http://dotnetweblogs.com/Rosherove/Story/3695.aspx). ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 9, 2003 ### [.Net Coding Conventions](https://osherove.com/blog/2003/5/9/net-coding-conventions.html) - May 9, 2003 ### [Windows Server 2003 for Developers](https://osherove.com/blog/2003/5/9/windows-server-2003-for-developers.html) - May 9, 2003 ### [The (Almost) Official .Net Tools List Gets An Upgrade](https://osherove.com/blog/2003/5/9/the-almost-official-net-tools-list-gets-an-upgrade.html) - May 9, 2003 ### [Welcome Philip , Interviews, "as" Vs. Casting](https://osherove.com/blog/2003/5/9/welcome-philip-interviews-quotasquot-vs-casting.html) --- title: "The (Almost) Official .Net Tools List Gets An Upgrade" url: "https://osherove.com/blog/2003/5/9/the-almost-official-net-tools-list-gets-an-upgrade.md" canonical: "https://osherove.com/blog/2003/5/9/the-almost-official-net-tools-list-gets-an-upgrade.html" published: "2003-05-09T18:02:00" updated: "2003-05-09T18:02:00" tags: [".Net Quotations", "Cool Tools"] author: "Roy Osherove" description: "If you haven't checked it out yet, Fabrice's list of .Net companion tools is starting to achive its status as the \"Download.Com\" of .Net developers. Now you can get updates on it via these RSS feeds . Way to go!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The (Almost) Official .Net Tools List Gets An Upgrade By Roy Osherove May 9, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published May 9, 2003; technical details may be outdated. If you haven't checked it out yet, [Fabrice's list of .Net companion tools](http://dotnetweblogs.com/FMARGUERIE/Story/4139.aspx) is starting to achive its status as the "Download.Com" of .Net developers. Now you can get updates on it via [these RSS feeds](http://dotnetweblogs.com/fmarguerie/posts/6787.aspx). Way to go! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 9, 2003 ### [Windows Server 2003 for Developers](https://osherove.com/blog/2003/5/9/windows-server-2003-for-developers.html) - May 9, 2003 ### [Production Debugging for .NET Framework Applications](https://osherove.com/blog/2003/5/9/production-debugging-for-net-framework-applications.html) - May 9, 2003 ### [Welcome Philip , Interviews, "as" Vs. Casting](https://osherove.com/blog/2003/5/9/welcome-philip-interviews-quotasquot-vs-casting.html) - May 9, 2003 ### [Something to keep your mind busy on the weekend](https://osherove.com/blog/2003/5/9/something-to-keep-your-mind-busy-on-the-weekend.html) --- title: "Welcome Philip , Interviews, \"as\" Vs. Casting" url: "https://osherove.com/blog/2003/5/9/welcome-philip-interviews-quotasquot-vs-casting.md" canonical: "https://osherove.com/blog/2003/5/9/welcome-philip-interviews-quotasquot-vs-casting.html" published: "2003-05-09T11:55:00" updated: "2003-05-09T11:55:00" tags: [".Net Quotations", ".NetWeblogs Site"] author: "Roy Osherove" description: "Philip Rieck has joined our ranks. Welcome,Philip! I don't know him personally, but his first post here pointed to his previous blog, in which I've found a nice post . It talks about interviewing programmers, and has a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Welcome Philip , Interviews, "as" Vs. Casting By Roy Osherove May 9, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) **Historical article** · Originally published May 9, 2003; technical details may be outdated. [Philip Rieck](http://dotnetweblogs.com/prieck/) has joined our ranks. Welcome,Philip! I don't know him personally, but his [first post](http://dotnetweblogs.com/prieck/posts/6749.aspx) here pointed to his previous blog, in which I've found a [nice post](http://www.nfission.net/weblog/PermaLink.aspx/591dd14c-1e8b-42b7-8ba4-e1ae62f31f4e) . It talks about interviewing programmers, and has a little tidbit about using the "as" keyword and the difference between "as" and using a specific Cast. I must admit that although I did know about the "as" keyword, I didn't know the difference between using it or using a cast (or maybe I've read it somewhere and forgot..). Anyway, It's a nice read . I'll be keeping an eye on his posts... Update: I can be reached either through the "contact" link on the weblog, or at this address: \[email removed\] P.S Hey Philip, have you noticed how the link to your blog reads..? [http://dotnetweblogs.com/prieck/](http://dotnetweblogs.com/prieck/)  ;) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 9, 2003 ### [Production Debugging for .NET Framework Applications](https://osherove.com/blog/2003/5/9/production-debugging-for-net-framework-applications.html) - May 9, 2003 ### [The (Almost) Official .Net Tools List Gets An Upgrade](https://osherove.com/blog/2003/5/9/the-almost-official-net-tools-list-gets-an-upgrade.html) - May 9, 2003 ### [Something to keep your mind busy on the weekend](https://osherove.com/blog/2003/5/9/something-to-keep-your-mind-busy-on-the-weekend.html) - May 8, 2003 ### [Dr. GUI Has A Blog (E-I-E-I-O)](https://osherove.com/blog/2003/5/8/dr-gui-has-a-blog-e-i-e-i-o.html) --- title: "Something to keep your mind busy on the weekend" url: "https://osherove.com/blog/2003/5/9/something-to-keep-your-mind-busy-on-the-weekend.md" canonical: "https://osherove.com/blog/2003/5/9/something-to-keep-your-mind-busy-on-the-weekend.html" published: "2003-05-09T11:32:00" updated: "2003-05-09T11:32:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Frans posts an interesting observation on the current problems with relational database, and possible futuristic ways of dealing with them. A tough read, but insightful. Some of the things I've always taken for granted…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Something to keep your mind busy on the weekend By Roy Osherove May 9, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 9, 2003; technical details may be outdated. [Frans](http://dotnetweblogs.com/fbouma/) posts an [interesting observation](http://dotnetweblogs.com/fbouma/posts/6767.aspx) on the current problems with relational database, and possible futuristic ways of dealing with them. A tough read, but insightful. Some of the things I've always taken for granted in relational DB development are brought to question here and really make you think about alternative ways of working with data. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 9, 2003 ### [The (Almost) Official .Net Tools List Gets An Upgrade](https://osherove.com/blog/2003/5/9/the-almost-official-net-tools-list-gets-an-upgrade.html) - May 9, 2003 ### [Welcome Philip , Interviews, "as" Vs. Casting](https://osherove.com/blog/2003/5/9/welcome-philip-interviews-quotasquot-vs-casting.html) - May 8, 2003 ### [Dr. GUI Has A Blog (E-I-E-I-O)](https://osherove.com/blog/2003/5/8/dr-gui-has-a-blog-e-i-e-i-o.html) - May 8, 2003 ### [TechEd Israel Report](https://osherove.com/blog/2003/5/8/teched-israel-report.html) --- title: "The Unofficial \"Mort\" Logo Is Available" url: "https://osherove.com/blog/2003/5/8/the-unofficial-quotmortquot-logo-is-available.md" canonical: "https://osherove.com/blog/2003/5/8/the-unofficial-quotmortquot-logo-is-available.html" published: "2003-05-08T19:09:00" updated: "2003-05-08T19:09:00" tags: [".NetWeblogs Site", "Off Topic"] author: "Roy Osherove" description: "OK. It might be ugly, but here is my logo for being a \"Mort\": . I've put it in my \"News\" category. If you think you can do better at the graphics side, send it to me and I'll change it. It is linked to a story that…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Unofficial "Mort" Logo Is Available By Roy Osherove May 8, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 8, 2003; technical details may be outdated. OK. It might be ugly, but here is my logo for being a "Mort": . I've put it in my "News" category. If you think you can do better at the graphics side, send it to me and I'll change it. It is linked to a story that explains what exactly is a mort (I would use some help with the phrasing...) and some links to posts about it (again - could use more reference info). **Use it proudly in your weblogs, Morts!  :)** ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - May 9, 2003 ### [Enlightenment](https://osherove.com/blog/2003/5/9/enlightenment.html) - May 9, 2003 ### [Welcome Philip , Interviews, "as" Vs. Casting](https://osherove.com/blog/2003/5/9/welcome-philip-interviews-quotasquot-vs-casting.html) - May 8, 2003 ### [.NetWebLogs Forums](https://osherove.com/blog/2003/5/8/netweblogs-forums.html) - May 6, 2003 ### [Hacking My Blog](https://osherove.com/blog/2003/5/6/hacking-my-blog.html) --- title: "Mort: Definition" url: "https://osherove.com/blog/2003/5/8/mort-definition.md" canonical: "https://osherove.com/blog/2003/5/8/mort-definition.html" published: "2003-05-08T19:02:00" updated: "2003-05-08T19:02:00" tags: [] author: "Roy Osherove" description: "\" Mort \" is the nickname that C++,C# and MC++ developers at Microsoft gave to Visual Basic 6.0 developers who intend to move into .Net development using VB.NET. See this , and that . Some more info will be posted as…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mort: Definition By Roy Osherove May 8, 2003 **Historical article** · Originally published May 8, 2003; technical details may be outdated. "**Mort**" is the nickname that C++,C# and MC++ developers at Microsoft gave to Visual Basic 6.0 developers who intend to move into .Net development using VB.NET. See [this](http://dotnetweblogs.com/mharsh/posts/4974.aspx), and [that](http://dotnetweblogs.com/kpleas/posts/5096.aspx) . Some more info will be posted as needed. --- title: "A Better RegEdit" url: "https://osherove.com/blog/2003/5/8/a-better-regedit.md" canonical: "https://osherove.com/blog/2003/5/8/a-better-regedit.html" published: "2003-05-08T17:06:00" updated: "2003-05-08T17:06:00" tags: ["Cool Tools", "Tips & Tricks"] author: "Roy Osherove" description: "Here's a cool freeware that made my life easier: Registry Explorer If the link doeasn't work for ya, Here's the D/L link at download.com Just install it and voila! you get a \"registry\" root inside windows explorer and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Better RegEdit By Roy Osherove May 8, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published May 8, 2003; technical details may be outdated. Here's a cool freeware that made my life easier: [Registry Explorer](http://www.regxplor.com/index.html) If the link doeasn't work for ya, Here's the [D/L link](http://download.com.com/3000-2094-10124995.html?tag=lst-0-1) at download.com Just install it and voila! you get a "registry" root inside windows explorer and you browse the registry just like a regular folder including "Find" and , most importantly, "Favorites"! Yay! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 10, 2003 ### [How To Lose Your Job (Unless you are Don)](https://osherove.com/blog/2003/5/10/how-to-lose-your-job-unless-you-are-don.html) - May 9, 2003 ### [The (Almost) Official .Net Tools List Gets An Upgrade](https://osherove.com/blog/2003/5/9/the-almost-official-net-tools-list-gets-an-upgrade.html) - May 6, 2003 ### [A Solid Text Editor](https://osherove.com/blog/2003/5/6/a-solid-text-editor.html) - May 6, 2003 ### [KlipFolio](https://osherove.com/blog/2003/5/6/klipfolio.html) --- title: "System Tweaks & Tricks" url: "https://osherove.com/blog/2003/5/8/system-tweaks-amp-tricks.md" canonical: "https://osherove.com/blog/2003/5/8/system-tweaks-amp-tricks.html" published: "2003-05-08T17:03:00" updated: "2003-05-08T17:03:00" tags: ["Tips & Tricks"] author: "Roy Osherove" description: "Some cool system tweaks and tricks can be found here . Here's the list: (I've highlighted the ones I liked) Unschedule a chkdsk Open Registry Explorer with a folder tree by default Customize shell icons Disable all…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # System Tweaks & Tricks By Roy Osherove May 8, 2003 In [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published May 8, 2003; technical details may be outdated. Some cool system tweaks and tricks can be found [here](http://www.regxplor.com/tweak_all.html). Here's the list: (I've **highlighted** the ones I liked) Unschedule a chkdsk Open Registry Explorer with a folder tree by default Customize shell icons Disable all shutdown options Make My Computer useful Some Morpheus settings Boot faster Make your caret bigger Add extra elements to Add/Remove Windows Components Disable balloon tips in Windows XP **Optimize NTFS performance** **Change the Internet Explorer search engine to Google **Open all folders in explore mode as default Add "Explore from here" to a folder's context menu Enable full privilege auditing Protect your Event Log Start your desktop as a separate process Kill hung processes when logging off Disable ICQ Auto Update Give Windows a totally different look Transform bitmap icons into thumbnails Iconize your taskbar Restrict access to Internet Explorer options (Part 2) Restrict access to Internet Explorer options Control the recent documents menu Prevent changing file associations in Explorer Automatically clear Internet Explorer Cache on close **Speed up Internet Explorer** Enable AutoCompletion in Command Prompt Disable automatic sharing of hard disks on NT/2000 Clear the Start / Run history Add options to the Start Menu Properties dialog Add options to the Folder Options dialog Open unknown filetypes with notepad as default Put History on your desktop Show extensions of .lnk and .pif files Enable emergency reboot on NT/2k **Add command prompt in every folder's context menu** ## More in Tips & Tricks [All posts in Tips & Tricks](https://osherove.com/blog/category/tips-tricks) - May 15, 2003 ### [Shortcuts: Object Search and Toolbox Magic](https://osherove.com/blog/2003/5/15/shortcuts-object-search-and-toolbox-magic.html) - May 8, 2003 ### [A Better RegEdit](https://osherove.com/blog/2003/5/8/a-better-regedit.html) - May 8, 2003 ### [How Access 2003 Helped Me Out](https://osherove.com/blog/2003/5/8/how-access-2003-helped-me-out.html) - May 1, 2003 ### [More VS.NET Tips & Tricks](https://osherove.com/blog/2003/5/1/more-vsnet-tips-amp-tricks.html) --- title: ".NetWebLogs Forums" url: "https://osherove.com/blog/2003/5/8/netweblogs-forums.md" canonical: "https://osherove.com/blog/2003/5/8/netweblogs-forums.html" published: "2003-05-08T15:47:00" updated: "2003-05-08T15:47:00" tags: [".NetWeblogs Site"] author: "Roy Osherove" description: "Scott Posted that we now have Forums here on .NetWeblogs. That is so cool. This place is really starting to feel like a real community. I personally feel much more \"a part of something\" and am happy to interact with the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .NetWebLogs Forums By Roy Osherove May 8, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) **Historical article** · Originally published May 8, 2003; technical details may be outdated. Scott [Posted](http://aspnetweblog.com/posts/6676.aspx) that we now have [Forums](http://forums.aspnetweblog.com/) here on .NetWeblogs. That is so cool. This place is  really starting to feel like a real community. I personally feel much more "a part of something" and am happy to interact with the people here and offline. Great job, Scott! ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - May 9, 2003 ### [Welcome Philip , Interviews, "as" Vs. Casting](https://osherove.com/blog/2003/5/9/welcome-philip-interviews-quotasquot-vs-casting.html) - May 8, 2003 ### [The Unofficial "Mort" Logo Is Available](https://osherove.com/blog/2003/5/8/the-unofficial-quotmortquot-logo-is-available.html) - May 6, 2003 ### [Hacking My Blog](https://osherove.com/blog/2003/5/6/hacking-my-blog.html) - May 5, 2003 ### [Enough with the w.blogger garbage posts already](https://osherove.com/blog/2003/5/5/enough-with-the-wblogger-garbage-posts-already.html) --- title: "Dr. GUI Has A Blog (E-I-E-I-O)" url: "https://osherove.com/blog/2003/5/8/dr-gui-has-a-blog-e-i-e-i-o.md" canonical: "https://osherove.com/blog/2003/5/8/dr-gui-has-a-blog-e-i-e-i-o.html" published: "2003-05-08T15:02:00" updated: "2003-05-08T15:02:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Dr. GUI (From MSDN) now has a Blog . Should be quite a treat. Gotta love a blogger that talks about himself in Third Person... ;) Thanks For the info, Chris." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Dr. GUI Has A Blog (E-I-E-I-O) By Roy Osherove May 8, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 8, 2003; technical details may be outdated. Dr. GUI (From MSDN) now [has a Blog](http://blogs.gotdotnet.com/drgui/). Should be quite a treat. Gotta love a blogger that talks about himself in Third Person... ;) Thanks For the info, [Chris.](http://www.sellsbrothers.com/) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 9, 2003 ### [Welcome Philip , Interviews, "as" Vs. Casting](https://osherove.com/blog/2003/5/9/welcome-philip-interviews-quotasquot-vs-casting.html) - May 9, 2003 ### [Something to keep your mind busy on the weekend](https://osherove.com/blog/2003/5/9/something-to-keep-your-mind-busy-on-the-weekend.html) - May 8, 2003 ### [TechEd Israel Report](https://osherove.com/blog/2003/5/8/teched-israel-report.html) - May 8, 2003 ### [Geeky .NET Desktop Wallpapers](https://osherove.com/blog/2003/5/8/geeky-net-desktop-wallpapers.html) --- title: "More About Using Undocumented API's" url: "https://osherove.com/blog/2003/5/8/more-about-using-undocumented-apis.md" canonical: "https://osherove.com/blog/2003/5/8/more-about-using-undocumented-apis.html" published: "2003-05-08T12:52:00" updated: "2003-05-08T12:52:00" tags: [".Net Original"] author: "Roy Osherove" description: "Jimski Replied to my Post which discourages the use of undocumented API's. Among other things he mentions that if you test it thoroughly enough , You can get away with it and it will be just like you use regular API's.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More About Using Undocumented API's By Roy Osherove May 8, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 8, 2003; technical details may be outdated. Jimski [Replied](http://dotnetweblogs.com/JArnold/posts/6705.aspx) to [my Post](http://dotnetweblogs.com/rosherove/posts/6690.aspx) which discourages the use of undocumented API's.  Among other things he mentions that if you test it thoroughly enough , You can get away with it and it will be just like you use regular API's. I do not agree that testing it makes it OK. Once you publish code that uses undocumented API's you take the risk of your code breaking unexpectadly, because of API changes (This is something I havn't thought about but is a damn good reason not to practice this habit. Thanks to [**Frans Bouma**](http://dotnetweblogs.com/fbouma) for contributing this comment to Jimski's Post.) that MS would make to the undeliying system. Another thing he mentions is that there are a multitude of tools that use this undocumented functionality which we couldn't live without. I would ,however, agree that it's fine to create tools such as Refelector or others that use this functionality, since they are flexible enough to provide quick updates and changes according to API changes. They are also used for pretty advanced stuff, by people who don't mind if they break once in a while. This is not the case for commercial apps who will be used by 'regular' users. Also, Today, for business applications, the need to use undocumented API's is growing very small. Since we are using a much more detailed framework, designed much better, we get so much functionality , that, coupled with COM Interop and IJW, shoudl provide pretty much anything you'll ever need. Leaving these bounds seems almost irresponsible.. Jim Talks of "pioneers" that use these Undocumented features. In my view, a pioneer is not necessarily  one who uses what is hidden, but rather, one who uses what is out in the open to create wondeful things other epople hadn't thought about.  Now ,that's a trick I'd like to see. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 11, 2003 ### [Introduction To Regular Expressions](https://osherove.com/blog/2003/5/11/introduction-to-regular-expressions-1.html) - May 10, 2003 ### [How I Learn New Technologies](https://osherove.com/blog/2003/5/10/how-i-learn-new-technologies.html) - May 8, 2003 ### [How Access 2003 Helped Me Out](https://osherove.com/blog/2003/5/8/how-access-2003-helped-me-out.html) - May 6, 2003 ### [UI Threading \*Might\* Suck](https://osherove.com/blog/2003/5/6/ui-threading-might-suck.html) --- title: "Serious Hotmail Vulnerability: Easily Reset Anyone's Password" url: "https://osherove.com/blog/2003/5/8/serious-hotmail-vulnerability-easily-reset-anyones-password.md" canonical: "https://osherove.com/blog/2003/5/8/serious-hotmail-vulnerability-easily-reset-anyones-password.html" published: "2003-05-08T11:57:00" updated: "2003-05-08T11:57:00" tags: ["Off Topic"] author: "Roy Osherove" description: "If you havn't heard yet, A 'bug' was discovered in Microsoft's Hotmail service which would basically allow you, using a simple typing of a URL to your explorer bar, to reset the password of any HotMail User you'd like.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Serious Hotmail Vulnerability: Easily Reset Anyone's Password By Roy Osherove May 8, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 8, 2003; technical details may be outdated. If you havn't heard yet, A 'bug' was discovered in Microsoft's Hotmail service which would basically allow you, using a simple typing of a URL to your explorer bar, to reset the password of any HotMail User you'd like. **Any user**. No hacking needed. You can read all about it in [This Post](http://dotnetweblogs.com/pscott/posts/6707.aspx) By Phil Scott. There will probably be a lot of babble about it, and the sensless bug that is exposed there and how MSFT's "Safe Computing" initiative is a joke and what not. I'd just like to say this: Whatever MSFT did or did not do, this is some major screw-up. It is one of those bugs that  is sooo simple to find and repair, it's a shame it had to come out like this. It does not have anything to do with anything else MSFT's been up to. It was just an honest, very stupid, mistake. And MS should pay for it big time if any damage was done. It will ,with all the media hype anyway. I'm saying this because I feel compelled to say that the media frenzy (or "BullSh\*t Storm" as some call it) that is about to go into circulation about this will, no doubt, be  (partly) misleading, Panicky, and gloating about this more then it should be. The only thing that should be spoken of is: The amount of damage that was done, How to repair it, MSFT's press releases about this and any other "to-the-point" matters. I wonder what would have happened if something like this was discovered in another company's ultra-secure system. Would they hype be just as big? would it go laregly unnoticed, or fade in 2 days? I wonder. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 9, 2003 ### [What's On My Bookshelf](https://osherove.com/blog/2003/5/9/whats-on-my-bookshelf.html) - May 8, 2003 ### [The Unofficial "Mort" Logo Is Available](https://osherove.com/blog/2003/5/8/the-unofficial-quotmortquot-logo-is-available.html) - May 8, 2003 ### [Geeky .NET Desktop Wallpapers](https://osherove.com/blog/2003/5/8/geeky-net-desktop-wallpapers.html) - May 6, 2003 ### [A Solid Text Editor](https://osherove.com/blog/2003/5/6/a-solid-text-editor.html) --- title: "TechEd Israel Report" url: "https://osherove.com/blog/2003/5/8/teched-israel-report.md" canonical: "https://osherove.com/blog/2003/5/8/teched-israel-report.html" published: "2003-05-08T09:33:00" updated: "2003-05-08T09:33:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Yosi Taguri Was one of the speakers in TechEd Israel that just closed these days. He posted a report about all 3 days of the conference, including an 'intersting' take on the what it takes to calm down before a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TechEd Israel Report By Roy Osherove May 8, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 8, 2003; technical details may be outdated. [Yosi Taguri](http://dotnetweblogs.com/yosit/) Was one of the speakers in TechEd Israel that just closed these days. He posted a report about all 3 days of the conference, including an 'intersting' take on the what it takes to calm down before a presentation. [Day 1](http://dotnetweblogs.com/yosit/story/6182.aspx) [Day 2](http://dotnetweblogs.com/yosit/story/6560.aspx) (Most intersting) [Day 3](http://dotnetweblogs.com/yosit/story/6698.aspx) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 9, 2003 ### [Something to keep your mind busy on the weekend](https://osherove.com/blog/2003/5/9/something-to-keep-your-mind-busy-on-the-weekend.html) - May 8, 2003 ### [Dr. GUI Has A Blog (E-I-E-I-O)](https://osherove.com/blog/2003/5/8/dr-gui-has-a-blog-e-i-e-i-o.html) - May 8, 2003 ### [Geeky .NET Desktop Wallpapers](https://osherove.com/blog/2003/5/8/geeky-net-desktop-wallpapers.html) - May 8, 2003 ### [Dan Appleman Has A New EBook (With A Warning)](https://osherove.com/blog/2003/5/8/dan-appleman-has-a-new-ebook-with-a-warning.html) --- title: "Geeky .NET Desktop Wallpapers" url: "https://osherove.com/blog/2003/5/8/geeky-net-desktop-wallpapers.md" canonical: "https://osherove.com/blog/2003/5/8/geeky-net-desktop-wallpapers.html" published: "2003-05-08T09:13:00" updated: "2003-05-08T09:13:00" tags: [".Net Quotations", "Off Topic"] author: "Roy Osherove" description: "Let everyone know what a geek you are. http://www.irritatedvowel.com/Wallpaper/Thumbnails.aspx?Category=57ff92e3-b57d-438a-b3ba-1d9d2fe5ec66 [via James Avery ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Geeky .NET Desktop Wallpapers By Roy Osherove May 8, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 8, 2003; technical details may be outdated. _Let everyone know what a geek you are._ [_http://www.irritatedvowel.com/Wallpaper/Thumbnails.aspx?Category=57ff92e3-b57d-438a-b3ba-1d9d2fe5ec66_](http://www.irritatedvowel.com/Wallpaper/Thumbnails.aspx?Category=57ff92e3-b57d-438a-b3ba-1d9d2fe5ec66) \[via [James Avery](http://www.dotnetweblogs.com/javery/posts/6659.aspx)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 8, 2003 ### [Dr. GUI Has A Blog (E-I-E-I-O)](https://osherove.com/blog/2003/5/8/dr-gui-has-a-blog-e-i-e-i-o.html) - May 8, 2003 ### [TechEd Israel Report](https://osherove.com/blog/2003/5/8/teched-israel-report.html) - May 8, 2003 ### [Dan Appleman Has A New EBook (With A Warning)](https://osherove.com/blog/2003/5/8/dan-appleman-has-a-new-ebook-with-a-warning.html) - May 8, 2003 ### [3D Cynicism](https://osherove.com/blog/2003/5/8/3d-cynicism.html) --- title: "Dan Appleman Has A New EBook (With A Warning)" url: "https://osherove.com/blog/2003/5/8/dan-appleman-has-a-new-ebook-with-a-warning.md" canonical: "https://osherove.com/blog/2003/5/8/dan-appleman-has-a-new-ebook-with-a-warning.html" published: "2003-05-08T05:46:00" updated: "2003-05-08T05:46:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "\" Hijacking .NET Vol 1: Role Based Security by Dan Appleman Hijacking .NET is today's equivalent of using undocumented Windows API functions. Except that not only are the functions under discussion undocumented, they…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Dan Appleman Has A New EBook (With A Warning) By Roy Osherove May 8, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 8, 2003; technical details may be outdated. "[_Hijacking .NET Vol 1: Role Based Security by Dan Appleman_](http://www.dotnetwire.com/redirect.asp?newsid=4587) _Hijacking .NET is today's equivalent of using undocumented Windows API functions. Except that not only are the functions under discussion undocumented, they are actually private functions internal to the .NET framework that were never intended to be used from outside. In this Ebook, Dan will teach you how to find these hidden functions, how to use disassembly and common sense to figure out what they do, and how to implement code that uses"_ \[via [.NetWire](http://www.dotnetwire.com/)\] \[Diclamair: The Next lines talk about the Dangers that lie in these kinds of books if used for production code. For any other purpose this is  probably a 'run-to-get-it' kind of book. \] Here we go again. Why on **earth** would anyone want to do this? This isn't VB6 we're talking about, where you miss some functionality and you can't get it in another way.  Don't get me wrong, it's interesting. But this is just the kind of stuff people use for 'evil' and not for good. Don't people get that if you use something the way it wasnt supposed to be used, you can get unexpected results, not to mention crashing and other stuff. this is just the kind of stuff VB6 developers were afarid of when trying to do multithreading using API calls. You just can't trust it enough to put it in production. This book should come with a big red bold warning: "For Educational Purposes Only!". Update: Reading Over this post I feel complled to further state my views on this, as they seem unclear. I do NOT recommend that you do not buy this book. On the contrary, I think it is very important. However, the main problem with these kinds of books is that people tend to take them too far (mainly newbies) and make production code that takes extensive use of undocumented (and thus unsupported) functionality. Anyone who knows better would read this book carefully and 'use' it as a stepping stone to undestanding the source of problems and of solutions for those problems. This is just the sort of thing that begs the saying "With Power Comes Responsibilty". That's why my first reaction to seeing this book was "oh no, now again" .I've seen way too many VB6 programms that use Dan Appleman's VB6 API book and make it into the VB6 reference book instead of coming up with creative (and documented) ways of doing things. I Can think of a very good example here from my VB6 days:  VB6 has very poor string handling functions (performance wise) mainly ,string concatanation was a real bitch to deal with. This led to all sorts of classes being published on web sites that took extensive use of Win32 API's (i.e "CopyMemory" and sorts) that made string concatanation faster. Much Like today's StringBuilder Class.  Then I came accross a string concatanation class that does the same job, but outperforms all the other API based class modules. It used a simple "String(\*)" buffer function (with some logic and some arrays) that is part of the VB6 language. Not a single API inside. How's that for advocating use of documented only functionality? ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 8, 2003 ### [TechEd Israel Report](https://osherove.com/blog/2003/5/8/teched-israel-report.html) - May 8, 2003 ### [Geeky .NET Desktop Wallpapers](https://osherove.com/blog/2003/5/8/geeky-net-desktop-wallpapers.html) - May 8, 2003 ### [3D Cynicism](https://osherove.com/blog/2003/5/8/3d-cynicism.html) - May 7, 2003 ### [Another Free Book](https://osherove.com/blog/2003/5/7/another-free-book.html) --- title: "3D Cynicism" url: "https://osherove.com/blog/2003/5/8/3d-cynicism.md" canonical: "https://osherove.com/blog/2003/5/8/3d-cynicism.html" published: "2003-05-08T05:29:00" updated: "2003-05-08T05:29:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "\"(Not that databases aren't interesting of course. Nothing beats violating a FK-constraint at 9:00 AM)\" [ Frans Bouma 's post about C# and OpenGL]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 3D Cynicism By Roy Osherove May 8, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 8, 2003; technical details may be outdated. _"(Not that databases aren't interesting of course. Nothing beats violating a FK-constraint at 9:00 AM)"_ \[[Frans Bouma](http://dotnetweblogs.com/fbouma/posts/6686.aspx)'s post about C# and OpenGL\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 8, 2003 ### [Geeky .NET Desktop Wallpapers](https://osherove.com/blog/2003/5/8/geeky-net-desktop-wallpapers.html) - May 8, 2003 ### [Dan Appleman Has A New EBook (With A Warning)](https://osherove.com/blog/2003/5/8/dan-appleman-has-a-new-ebook-with-a-warning.html) - May 7, 2003 ### [Another Free Book](https://osherove.com/blog/2003/5/7/another-free-book.html) - May 5, 2003 ### [More On UIP Blue Bricks](https://osherove.com/blog/2003/5/5/more-on-uip-blue-bricks.html) --- title: "How Access 2003 Helped Me Out" url: "https://osherove.com/blog/2003/5/8/how-access-2003-helped-me-out.md" canonical: "https://osherove.com/blog/2003/5/8/how-access-2003-helped-me-out.html" published: "2003-05-08T05:15:00" updated: "2003-05-08T05:15:00" tags: [".Net Original", "Tips & Tricks"] author: "Roy Osherove" description: "Kudos to MSFT for the latest installation of Office. Overall, Office 2003 beta is one great product. Outlook , being the main attraction for me for office use, is much more usable then it was before, with numerous…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How Access 2003 Helped Me Out By Roy Osherove May 8, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published May 8, 2003; technical details may be outdated. Kudos to MSFT for the latest installation of Office. Overall, Office 2003 beta is one great product. Outlook , being the main attraction for me for office use, is much more usable then it was before, with numerous usability enhancements. There are a lot of new goodies to play with in all the office applications but perhaps the **biggest** change for me is the new found support for **XML**. And when I say support I mean an all out, no bars held, unconditional love, "When we say XML we mean it" kind of support. The kind that makes you giddy as much as I was when it helped me out just when I needed it most(I'll get to it, don't worry). A small example of a cool XML support feature comes from Word. You can actually save a word document ("Save As...") in XML format. This means that every text, line formatting option and binary data is saved into a readable XML file to be consumed by any XML reader .Imagine Searching a word document using XPath! Anyway, The thing I was most excited about that saved me hours of work is part of this XML revolution. It seems small. So small, infect, you'd wonder why it's not already there. Here's the story: I'm currently working on a small project which involves converting proprietary format log files in my company into searchable data. My first goal was converting them to XML (Using Regex and XMLWriters - something which I will write an article about when I get some time). From that XML data, I could now load it into a Dataset and from there - Using the "Select" Statement of the DataTable Class - everything is much easier. However, the Dataset holds some unexpected limitations: You can't do a Select on a specific field in a table, for one thing. Another biggie is that You can't execute Selects On multiple tables (Or any Database query for that matter).  I can see how letting Update's and Insert's into the Dataset object model can be a problem, since this violates the purpose of the Dataset of just 'holding' data, But issuing simple selects on multiple tables seems logical. These limitations (Mainly the Multi table select) made me think about how I can import this XML data into an ACCESS database. This task seems very legitimate – I want my XML data to reside in an ACCESS database to provide me with better searching capabilities (Not to mention reporting and others..) Amazingly  enough, all versions of Access prior to Access 2003 have no "Import XML" option!. Really. None. Nada. Zip. Zilch. It seems someone at MSFT just overlooked it , since it is such a legitimate feature. Access 2003 ,on the other hand, handles this import easily, with no problems. It was a breeze to do and saved me the hours of coding a custom transformation and import tool (Not to mention more hours to come when the requirements or XML schema would change and so on..) I can only wonder as to how this never existed in a prior version of Access. It seems so trivial. Admittedly, I never had this need before so I **assumed** it exists. I can only imagine the painstaking efforts and man hours others had to do before this. I even bet there's a small market of tool vendors just for this missing feature! (Do you know of any tools to do this ?). Anyway, Kudos to MSFT, Better late then never. **P.S** **Here's a quick one for you:**  Try creating a word document as XML and then try importing it into ACCESS. It doesn't work very good in this case! You get some funky  "ImportErrors" table entries  on truncation and stuff. Oh well. Hopefully it will work until Office 2004 ;) **P.S. 2** **Anyone know of a good MDB comparison tool?** I want to discover all the changes between two MDB files. I could not locate anything that can satisfy this seemingly simple request (Probably was not looking in the right places…) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 10, 2003 ### [How I Learn New Technologies](https://osherove.com/blog/2003/5/10/how-i-learn-new-technologies.html) - May 8, 2003 ### [More About Using Undocumented API's](https://osherove.com/blog/2003/5/8/more-about-using-undocumented-apis.html) - May 6, 2003 ### [UI Threading \*Might\* Suck](https://osherove.com/blog/2003/5/6/ui-threading-might-suck.html) - May 6, 2003 ### [Regular Expression Library](https://osherove.com/blog/2003/5/6/regular-expression-library.html) --- title: "Another Free Book" url: "https://osherove.com/blog/2003/5/7/another-free-book.md" canonical: "https://osherove.com/blog/2003/5/7/another-free-book.html" published: "2003-05-07T17:33:00" updated: "2003-05-07T17:33:00" tags: [".Net Quotations", "Free book chapters"] author: "Roy Osherove" description: "Microsoft offers a free book here : Application Architecture for .NET: Designing Applications and Services . [Thanks to Samer Ibrahim for the link] Unfortunately, Only US addresses are allowed, so me being in Israel is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Another Free Book By Roy Osherove May 7, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Free book chapters](https://osherove.com/blog/category/free-book-chapters) **Historical article** · Originally published May 7, 2003; technical details may be outdated. Microsoft offers a free book [here](http://www.replycard.com/patternsbook/): **Application Architecture for .NET: Designing Applications and Services .** \[Thanks to [Samer Ibrahim](http://dotnetweblogs.com/sibrahim/posts/6635.aspx) for the link\] Unfortunately,  Only US addresses are allowed, so me being in Israel is kind of a problem :(. **Rant:** Why don't MSFT allow sending books outside the US as well? I don't mind paying for the extra shipment costs. It's just not fair. Update: I got the Book in PDF format from [Jan](http://dotnetweblogs.com/Jan) . However , If you find an extra print copy lying around then I'd be happy to pay the shipment costs if you sent it over to Israel for me. Contact me here in that case. Thanks in advance :) ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 8, 2003 ### [Dan Appleman Has A New EBook (With A Warning)](https://osherove.com/blog/2003/5/8/dan-appleman-has-a-new-ebook-with-a-warning.html) - May 8, 2003 ### [3D Cynicism](https://osherove.com/blog/2003/5/8/3d-cynicism.html) - May 5, 2003 ### [More On UIP Blue Bricks](https://osherove.com/blog/2003/5/5/more-on-uip-blue-bricks.html) - May 1, 2003 ### [Shared Memory Wrapper](https://osherove.com/blog/2003/5/1/shared-memory-wrapper.html) --- title: "A Solid Text Editor" url: "https://osherove.com/blog/2003/5/6/a-solid-text-editor.md" canonical: "https://osherove.com/blog/2003/5/6/a-solid-text-editor.html" published: "2003-05-06T10:42:00" updated: "2003-05-06T10:42:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "After playing with it myself a bit, this text editor seems to have everything I ever wanted in a text editor (And some stuff I didn't think I needed, but did!) including all the keyboard junkie options I dig. Everything…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Solid Text Editor By Roy Osherove May 6, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 6, 2003; technical details may be outdated. After playing with it myself a bit, [this text editor](http://www.emurasoft.com/emeditor3/index.htm) seems to have everything I ever wanted in a text editor (And some stuff I didn't think I needed, but did!) including all the keyboard junkie options I dig. **Everything** is customizable.   The only thing I didnt see here (that exists in UltraEdit) is IntelliSense style listbox on CTRL+SPACE. But This one is much better then the compatition IMHO for its UI and its cool tray icon option. ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 9, 2003 ### [The (Almost) Official .Net Tools List Gets An Upgrade](https://osherove.com/blog/2003/5/9/the-almost-official-net-tools-list-gets-an-upgrade.html) - May 8, 2003 ### [A Better RegEdit](https://osherove.com/blog/2003/5/8/a-better-regedit.html) - May 6, 2003 ### [KlipFolio](https://osherove.com/blog/2003/5/6/klipfolio.html) - Mar 31, 2003 ### [Bloody cool: Share Keyboard/Mouse between computers](https://osherove.com/blog/2003/3/31/bloody-cool-share-keyboardmouse-between-computers.html) --- title: "UI Threading *Might* Suck" url: "https://osherove.com/blog/2003/5/6/ui-threading-might-suck.md" canonical: "https://osherove.com/blog/2003/5/6/ui-threading-might-suck.html" published: "2003-05-06T07:06:00" updated: "2003-05-06T07:06:00" tags: [".Net Original"] author: "Roy Osherove" description: "This article clearly explains the troubles needed to go through in order to interact with a Winforms UI from a background thread. I found it when I started stumbling around with my own UI, having long operations…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # UI Threading \*Might\* Suck By Roy Osherove May 6, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 6, 2003; technical details may be outdated. [This article](http://www.thecodeproject.com/csharp/winformsthreading.asp) clearly explains the troubles needed to go through in order to interact with a Winforms UI from a background thread. I found it when I started stumbling around with my own UI, having long operations processing in the background. It helped, but why the hell must it be this cumbersome? Basically you need a delegate and a handler method for every UI related function you'd call from your back-thread. That's amazingly tedious. I wonder how this process can be made shorter (and/or easier). Back to digging I guess.. Until I figure this one out - the title holds :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 8, 2003 ### [More About Using Undocumented API's](https://osherove.com/blog/2003/5/8/more-about-using-undocumented-apis.html) - May 8, 2003 ### [How Access 2003 Helped Me Out](https://osherove.com/blog/2003/5/8/how-access-2003-helped-me-out.html) - May 6, 2003 ### [Regular Expression Library](https://osherove.com/blog/2003/5/6/regular-expression-library.html) - May 5, 2003 ### [Oops! Typed Datasets ARE scalable!](https://osherove.com/blog/2003/5/5/oops-typed-datasets-are-scalable.html) --- title: "Chris Pirillo Sells His Mind" url: "https://osherove.com/blog/2003/5/6/chris-pirillo-sells-his-mind.md" canonical: "https://osherove.com/blog/2003/5/6/chris-pirillo-sells-his-mind.html" published: "2003-05-06T06:33:00" updated: "2003-05-06T06:33:00" tags: ["Blogging", "Off Topic"] author: "Roy Osherove" description: "Chris Pirillo annonced he will now charge you for his tech expertise in answering tech support questions . Since Chris is quite the Tech guru on such a vast number of subjects I can definitely see that happening, but…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Chris Pirillo Sells His Mind By Roy Osherove May 6, 2003 In [Blogging](https://osherove.com/blog/category/blogging), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 6, 2003; technical details may be outdated. Chris Pirillo [annonced](http://chris.pirillo.com/archives/2003_05.html#000929) he will now [charge you for his tech expertise](http://chris.pirillo.com/ask/) in answering tech support questions . Since Chris is quite the Tech guru on such a vast number of subjects I can definitely see that happening, but not at 27$ a pop. The way I see it, Either charge a small fee per question (3$-8$) on a permanent basis,  or charge a very small fee per question as a base price which then changes per question difficulty. Then, the scenraio would go like this:  upon recievieng the question chris would contact the question owner and tell him '_OK, This is a tough one, it'll cost more then 3$ to answer this one. I'll have to do some major researching_" or  _'Easy one! you owe me just one dollar for that one_!" In any case, this will not scare off those folks out there with really minute problems (i.e "_Outlook blocked my email attachment!_") . Paying 27$ for that one and getting an answer 3 minutes later with 4 sentences - I'd feel cheated. I've been watching Chris on TechLive's "[Call For Help](http://www.techtv.com/callforhelp/?nav)" show for quite a while now and I can honestly say they lost a good one when he left. I really like his non-condescending  attitude toward newbie questions. It really shows personality. I wonder what he'll do next (I'll admit I'm not an avid reader of his blog - That font drives me nuts!). ## More in Blogging [All posts in Blogging](https://osherove.com/blog/category/blogging) - May 11, 2003 ### [Mind Rates](https://osherove.com/blog/2003/5/11/mind-rates.html) - May 9, 2003 ### [Enlightenment](https://osherove.com/blog/2003/5/9/enlightenment.html) --- title: "KlipFolio" url: "https://osherove.com/blog/2003/5/6/klipfolio.md" canonical: "https://osherove.com/blog/2003/5/6/klipfolio.html" published: "2003-05-06T05:16:00" updated: "2003-05-06T05:16:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "This has a high 'cool' potential Even more so when you consider it has its own RSS/RDF Feed plugin available. (Thanks Scoble )" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # KlipFolio By Roy Osherove May 6, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 6, 2003; technical details may be outdated. [This](http://www.serence.com/site.php?action=ser_products,prod_klipfolio) has a high 'cool' potential Even more so when you consider it has its own [RSS/RDF Feed plugin](http://www.klipfarm.com/farm.php?page=info&klip=916) available. (Thanks [Scoble](http://radio.weblogs.com/0001011/)) ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 8, 2003 ### [A Better RegEdit](https://osherove.com/blog/2003/5/8/a-better-regedit.html) - May 6, 2003 ### [A Solid Text Editor](https://osherove.com/blog/2003/5/6/a-solid-text-editor.html) - Mar 31, 2003 ### [Bloody cool: Share Keyboard/Mouse between computers](https://osherove.com/blog/2003/3/31/bloody-cool-share-keyboardmouse-between-computers.html) - Mar 13, 2003 ### [Free GUI component for VS .NET users](https://osherove.com/blog/2003/3/13/free-gui-component-for-vs-net-users.html) --- title: "Hacking My Blog" url: "https://osherove.com/blog/2003/5/6/hacking-my-blog.md" canonical: "https://osherove.com/blog/2003/5/6/hacking-my-blog.html" published: "2003-05-06T04:46:00" updated: "2003-05-06T04:46:00" tags: [".NetWeblogs Site"] author: "Roy Osherove" description: "I just realized that I can put pure HTML inside my link names and story names, meaning I can now decorate my blog with some small icons and IMG stuff. Check it out and tell me what you think" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hacking My Blog By Roy Osherove May 6, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) **Historical article** · Originally published May 6, 2003; technical details may be outdated. I just realized that I can put pure HTML inside my link names and story names, meaning I can now decorate my blog with some small icons and IMG stuff. Check it out and tell me what you think ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - May 8, 2003 ### [The Unofficial "Mort" Logo Is Available](https://osherove.com/blog/2003/5/8/the-unofficial-quotmortquot-logo-is-available.html) - May 8, 2003 ### [.NetWebLogs Forums](https://osherove.com/blog/2003/5/8/netweblogs-forums.html) - May 5, 2003 ### [Enough with the w.blogger garbage posts already](https://osherove.com/blog/2003/5/5/enough-with-the-wblogger-garbage-posts-already.html) - May 4, 2003 ### [Wow](https://osherove.com/blog/2003/5/4/wow.html) --- title: "Regular Expression Library" url: "https://osherove.com/blog/2003/5/6/regular-expression-library.md" canonical: "https://osherove.com/blog/2003/5/6/regular-expression-library.html" published: "2003-05-06T03:11:00" updated: "2003-05-06T03:11:00" tags: [".Net Original"] author: "Roy Osherove" description: "This looks like a very good regular expression repository Update: Darren Neimke Says: \" Check out the new CheatSheet that Steve added last night --> get to it via the CheatSheet link on the side menu. \" I agree. It's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Regular Expression Library By Roy Osherove May 6, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 6, 2003; technical details may be outdated. [This](http://regexlib.com/) looks like a very good regular expression repository Update: [**Darren Neimke**](http://dotnetweblogs.com/DNeimke) Says: "_Check out the new CheatSheet that Steve added last night --> get to it via the CheatSheet link on the side menu._" I agree. It's very nice. Still, I'd like to see there some stuff that was **not** copy-paste from MSDN. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 8, 2003 ### [How Access 2003 Helped Me Out](https://osherove.com/blog/2003/5/8/how-access-2003-helped-me-out.html) - May 6, 2003 ### [UI Threading \*Might\* Suck](https://osherove.com/blog/2003/5/6/ui-threading-might-suck.html) - May 5, 2003 ### [Oops! Typed Datasets ARE scalable!](https://osherove.com/blog/2003/5/5/oops-typed-datasets-are-scalable.html) - May 5, 2003 ### [DataSets, Web Services, DiffGrams, Arrays, and Interoperability](https://osherove.com/blog/2003/5/5/datasets-web-services-diffgrams-arrays-and-interoperability.html) --- title: "Free Book: Software Testing and Internationalization" url: "https://osherove.com/blog/2003/5/6/free-book-software-testing-and-internationalization.md" canonical: "https://osherove.com/blog/2003/5/6/free-book-software-testing-and-internationalization.html" published: "2003-05-06T02:51:00" updated: "2003-05-06T02:51:00" tags: ["Off Topic"] author: "Roy Osherove" description: "\"Dear colleague, LISA, in collaboration with Lemoine International has made \"Software Testing and Internationalization\" by Galileo Computing freely available for download. This book will transform how you view testing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free Book: Software Testing and Internationalization By Roy Osherove May 6, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 6, 2003; technical details may be outdated. _"Dear colleague,_ _LISA, in collaboration with Lemoine International has made "Software Testing and Internationalization" by Galileo Computing freely available for download._ _This book will transform how you view testing methodologies and procedures. It introduces the reader to essential concepts and approaches used by practitioners in the software testing arena, while also taking into account the realities of low budgets and real schedule deadlines. It is in this context that the specific needs of small, agile project teams are covered in detail._ _Topics covered:_ _\* New approaches to quality_ _\* Risk analysis and evaluation_ _\* Risk-based testing_ _\* Exploratory testing_ _\* Testing and tuning_ _\* Testing by using_ _\* Use cases, requirements, and test cases_ _\* Debugging_ _\* Myths and realities of Automated Testing_ _\* Windows scripting_ _\* Test frameworks_ _\* Testing-based application development_ _\* Tools for developers and testers_ _\* Agile test management_ _\* International planning and architecture_ _\* International development issues_ _\* Internationalization testing_ _To download a copy, please visit_ [_http://www.lisa.org/interact/2003/swtestregister.html_](http://www.lisa.org/interact/2003/swtestregister.html)_"_ If you don't want to be spammed, This is the Email you recieve after registration: "_Thank you for your interest in receiving Galileo Computing Software Testing and Internationalization by Manfred Rätzmann and Clinton De Young. You may download your copy at_ [_http://www.lisa.org/interact/2003/SoftwareTesting.zip_](http://www.lisa.org/interact/2003/SoftwareTesting.zip) _Please note that this book is formatted in PDF and is provided free of charge by Lemoine International and LISA. It is a full version of the book and there are no limits on your use of the PDF, but it may not be printed._ _If you are interested in obtaining a hard copy of the book, please e-mail \[email removed\]_ _LISA/Lemoine International"_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 6, 2003 ### [Chris Pirillo Sells His Mind](https://osherove.com/blog/2003/5/6/chris-pirillo-sells-his-mind.html) - May 6, 2003 ### [KlipFolio](https://osherove.com/blog/2003/5/6/klipfolio.html) - May 5, 2003 ### [Gotta Love BlogShares FAQ](https://osherove.com/blog/2003/5/5/gotta-love-blogshares-faq.html) - May 5, 2003 ### [Nice \[Off Topic\] Article](https://osherove.com/blog/2003/5/5/nice-off-topic-article.html) --- title: "More On UIP Blue Bricks" url: "https://osherove.com/blog/2003/5/5/more-on-uip-blue-bricks.md" canonical: "https://osherove.com/blog/2003/5/5/more-on-uip-blue-bricks.html" published: "2003-05-05T20:14:00" updated: "2003-05-05T20:14:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "After his interview , Michael Stuart (Senior Consultant with Microsoft Consulting Services and responsible for the Microsoft Application Blocks) has released more information about UIP (User Interface Process). A…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More On UIP Blue Bricks By Roy Osherove May 5, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 5, 2003; technical details may be outdated. _After his_ [_interview_](http://dotnetweblogs.com/fmarguerie/posts/6201.aspx)_, Michael Stuart (Senior Consultant with Microsoft Consulting Services and responsible for the Microsoft Application Blocks) has released more information about UIP (User Interface Process). A_ [_Powerpoint presentation_](http://www.dotnetguru.org/articles/WebFormsAndStruts/uip/UIP_Overview.ppt) _is available on_ [_DotNetGuru_](http://www.dotnetguru.org/article.php?sid=161) _(french site)._ \[Posted By [Fabrice MARGUERIE](http://dotnetweblogs.com/fmarguerie/) \] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 8, 2003 ### [3D Cynicism](https://osherove.com/blog/2003/5/8/3d-cynicism.html) - May 7, 2003 ### [Another Free Book](https://osherove.com/blog/2003/5/7/another-free-book.html) - May 1, 2003 ### [Shared Memory Wrapper](https://osherove.com/blog/2003/5/1/shared-memory-wrapper.html) - May 1, 2003 ### [NUnitASP](https://osherove.com/blog/2003/5/1/nunitasp.html) --- title: "Oops! Typed Datasets ARE scalable!" url: "https://osherove.com/blog/2003/5/5/oops-typed-datasets-are-scalable-1.md" canonical: "https://osherove.com/blog/2003/5/5/oops-typed-datasets-are-scalable-1.html" published: "2003-05-05T13:20:00" updated: "2003-05-05T13:20:00" tags: ["Typed Datasets"] author: "Roy Osherove" description: "Note: This is part 3 of 3 articles on this subject: Part 1 - Introduction to Typed Datasets Part 2 - Typed Datasets Are Not Always The Answer Part 3 - Oops! Typed Datasets ARE scalable! I was wrong about typed datasets.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Oops! Typed Datasets ARE scalable! By Roy Osherove May 5, 2003 In [Typed Datasets](https://osherove.com/blog/category/typed-datasets) **Historical article** · Originally published May 5, 2003; technical details may be outdated. _Note: This is part 3 of 3 articles on this subject:_ - _Part 1 -_ [_Introduction to Typed Datasets_](http://dotnetweblogs.com/rosherove/story/5517.aspx) - _Part 2 -_ [Typed Datasets Are Not Always The Answer](http://dotnetweblogs.com/rosherove/story/6434.aspx) - Part 3 - [Oops! Typed Datasets ARE scalable!](http://dotnetweblogs.com/rosherove/story/6489.aspx) I was wrong about typed datasets. I see the light now, but i was wrong [before](http://dotnetweblogs.com/rosherove/posts/6432.aspx). The conclusion I came to was that Typed Datasets **can** be used in an enterprise application. The reason I thought this was a problem had to do with one missing link. An important link.  The Problem I had with datasets performing as business objects was that I thought that once you create a typed dataset, every layer that wants to use this dataset must have a direct reference to the assembly in which the DataSet resided in. I didn't  know of another way one would go about doing this. [Addy Santo](http://dotnetweblogs.com/ASanto/Default.aspx) wrote in a comment to the last article ("[TD's are not always the answer](http://dotnetweblogs.com/rosherove/posts/6432.aspx)"): "_I'm currently working on a large enterprise app which is heavily based on typed-datasets. I used to be from the "typed-datasets-are-for-newbies-only" camp but I must admit that \*when used correctly\* they are an incredibly powerful tool. Several key things to keep in mind when architecturing around typed datasets:_ _1\. Equating TDSes to the data layer is like limiting XSLT to the presentation layer - that is only one use among the many existing possibilities._ _2\. Since TDSes are based on XSD schemas, you can load any arbitrary XML block (which matches your schema) and programmatically work against it with a HIGHLY-PERFORMANT object model. XPath queries over the same XML aren't even in the same ballpark._  _3. Since TDSes are typed, you get compile time validation, as compared to XML/XPath which is a pain to debug._ _4\. TDSes come with built-in serialization capabilities and funky webservice related optimizations. I don't have the bandwidth to describe my architecture in detail, but I am using datasets in several different capacities in my app and in every case they improved performance, reduced the amount of hand-written code and simplified the data structures._ " This comment contradicted my immediate sense of N-Tier design. How could one both use TD's in the scenarios Addy described **and** not break the abstraction layers?  I Started thinking on one of the things I'm working on right now. It involves loading a dataset dynamically from an XML file. In some debugging scnarios I made the Dataset (which is untyped) generate its XSD file for me, so that i could load it up in VS.NET and see the structure of the data as it is represented in the dataset. I started thinking, "_how can two different clients share the same typed dataset from a data source, of which they know nothing about, let alone have references to its DLL's?_" I guessed the XSD had **something** to do with this, since it is the way to pass around the schema of the data. I continued the out loud discussion with myself (with everyone in the room watching): "_OK. Suppose the Data source exposed the XSD schema to its clients. How would that help them?_ " The answer popped in right away: "_A client should be able to generate a TD using the XSD schema as a blueprint._". Typing out one small [line](http://www.google.com/search?q=generate+a+typed+dataset+from+an+xsd+file) in Google brought on [This Link](http://www.adoguy.com/book/SampleChapter4.aspx) . voila. To the rescue comes **XSD.Exe** which automatically generates Class code from an Xsd schema. **The missing link was found**. Now, all a client needs to do to be able to use typed datasets on data is to generate them from an XSD file the server exposes. Simple and easy. Now you get all the power of TD's but **without** the handicap of references. TD's are not limited to Data Layers. That's definitely good news (And I learned a lot!) ## More in Typed Datasets [All posts in Typed Datasets](https://osherove.com/blog/category/typed-datasets) - May 4, 2003 ### [Typed Datasets Are Not Always The Answer](https://osherove.com/blog/2003/5/4/typed-datasets-are-not-always-the-answer-1.html) - Apr 12, 2003 ### [Introduction to Typed Datasets](https://osherove.com/blog/2003/4/12/introduction-to-typed-datasets.html) --- title: "Oops! Typed Datasets ARE scalable!" url: "https://osherove.com/blog/2003/5/5/oops-typed-datasets-are-scalable.md" canonical: "https://osherove.com/blog/2003/5/5/oops-typed-datasets-are-scalable.html" published: "2003-05-05T13:12:00" updated: "2003-05-05T13:12:00" tags: [".Net Original"] author: "Roy Osherove" description: "I was wrong about typed datasets. I see the light now, but i was wrong before . The conclusion I came to was that Typed Datasets can be used in an enterprise application. The reason I thought this was a problem had to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Oops! Typed Datasets ARE scalable! By Roy Osherove May 5, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 5, 2003; technical details may be outdated. I was wrong about typed datasets. I see the light now, but i was wrong [before](http://dotnetweblogs.com/rosherove/posts/6432.aspx). The conclusion I came to was that Typed Datasets **can** be used in an enterprise application. The reason I thought this was a problem had to do with one missing link. An important link.  The Problem I had with datasets performing as business objects was that I thought that once you create a typed dataset, every layer that wants to use this dataset must have a direct reference to the assembly in which the DataSet resided in. I didn't  know of another way one would go about doing this. [Addy Santo](http://dotnetweblogs.com/ASanto/Default.aspx) wrote in a comment to the last article ("[TD's are not always the answer](http://dotnetweblogs.com/rosherove/posts/6432.aspx)"): "_I'm currently working on a large enterprise app which is heavily based on typed-datasets. I used to be from the "typed-datasets-are-for-newbies-only" camp but I must admit that \*when used correctly\* they are an incredibly powerful tool. Several key things to keep in mind when architecturing around typed datasets:_ _1\. Equating TDSes to the data layer is like limiting XSLT to the presentation layer - that is only one use among the many existing possibilities._ _2\. Since TDSes are based on XSD schemas, you can load any arbitrary XML block (which matches your schema) and programmatically work against it with a HIGHLY-PERFORMANT object model. XPath queries over the same XML aren't even in the same ballpark._  _3. Since TDSes are typed, you get compile time validation, as compared to XML/XPath which is a pain to debug._ _4\. TDSes come with built-in serialization capabilities and funky webservice related optimizations. I don't have the bandwidth to describe my architecture in detail, but I am using datasets in several different capacities in my app and in every case they improved performance, reduced the amount of hand-written code and simplified the data structures._ " This comment contradicted my immediate sense of N-Tier design. How could one both use TD's in the scenarios Addy described **and** not break the abstraction layers?  I Started thinking on one of the things I'm working on right now. It involves loading a dataset dynamically from an XML file. In some debugging scnarios I made the Dataset (which is untyped) generate its XSD file for me, so that i could load it up in VS.NET and see the structure of the data as it is represented in the dataset. I started thinking, "_how can two different clients share the same typed dataset from a data source, of which they know nothing about, let alone have references to its DLL's?_" I guessed the XSD had **something** to do with this, since it is the way to pass around the schema of the data. I continued the out loud discussion with myself (with everyone in the room watching): "_OK. Suppose the Data source exposed the XSD schema to its clients. How would that help them?_ " The answer popped in right away: "_A client should be able to generate a TD using the XSD schema as a blueprint._". Typing out one small [line](http://www.google.com/search?q=generate+a+typed+dataset+from+an+xsd+file) in Google brought on [This Link](http://www.adoguy.com/book/SampleChapter4.aspx) . voila. To the rescue comes **XSD.Exe** which automatically generates Class code from an Xsd schema. **The missing link was found**. Now, all a client needs to do to be able to use typed datasets on data is to generate them from an XSD file the server exposes. Simple and easy. Now you get all the power of TD's but **without** the handicap of references. TD's are not limited to Data Layers. That's definitely good news (And I learned a lot!) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 6, 2003 ### [UI Threading \*Might\* Suck](https://osherove.com/blog/2003/5/6/ui-threading-might-suck.html) - May 6, 2003 ### [Regular Expression Library](https://osherove.com/blog/2003/5/6/regular-expression-library.html) - May 5, 2003 ### [DataSets, Web Services, DiffGrams, Arrays, and Interoperability](https://osherove.com/blog/2003/5/5/datasets-web-services-diffgrams-arrays-and-interoperability.html) - May 4, 2003 ### [Blue Bricks](https://osherove.com/blog/2003/5/4/blue-bricks-1.html) --- title: "Gotta Love BlogShares FAQ" url: "https://osherove.com/blog/2003/5/5/gotta-love-blogshares-faq.md" canonical: "https://osherove.com/blog/2003/5/5/gotta-love-blogshares-faq.html" published: "2003-05-05T06:27:00" updated: "2003-05-05T06:27:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I like the idea of BlogShares . I'm even listed. But you gotta love their FAQ : \" 1. Isn't this just a popularity contest where the people with the popular blogs win? No answer has been given to this question. 2. What…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Gotta Love BlogShares FAQ By Roy Osherove May 5, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 5, 2003; technical details may be outdated. I like the idea of [BlogShares](http://www.blogshares.com/). I'm even listed. But you gotta **love** their [FAQ](http://www.blogshares.com/faq.php?cat=1#1): "_1\. Isn't this just a popularity contest where the people with the popular blogs win?_ _No answer has been given to this question._ <table width="100%"><tbody><tr><td><em><hr width="100%"></em></td></tr></tbody></table> _2\. What makes a good tech support post?_ _No answer has been given to this question._ <table width="100%"><tbody><tr><td><em><hr width="100%"></em></td></tr></tbody></table> _3\. I have a problem. Who do I contact?_ _No answer has been given to this question._ <table width="100%"><tbody><tr><td><em><hr width="100%"></em></td></tr></tbody></table> _4\. How do I suggest a feature?_ _No answer has been given to this question._ <table width="100%"><tbody><tr><td><em><hr width="100%"></em></td></tr></tbody></table> _5\. I love BlogShares! How do I support the site?_ _No answer has been given to this question._ <table width="100%"><tbody><tr><td><em><hr width="100%"></em></td></tr></tbody></table> _6\. Why is my site listed? I did not sign up!_ _No answer has been given to this question.__"_ ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 6, 2003 ### [KlipFolio](https://osherove.com/blog/2003/5/6/klipfolio.html) - May 6, 2003 ### [Free Book: Software Testing and Internationalization](https://osherove.com/blog/2003/5/6/free-book-software-testing-and-internationalization.html) - May 5, 2003 ### [Nice \[Off Topic\] Article](https://osherove.com/blog/2003/5/5/nice-off-topic-article.html) - May 5, 2003 ### [VS.Net Tips & Tricks Category Is Up](https://osherove.com/blog/2003/5/5/vsnet-tips-amp-tricks-category-is-up.html) --- title: "Nice [Off Topic] Article" url: "https://osherove.com/blog/2003/5/5/nice-off-topic-article.md" canonical: "https://osherove.com/blog/2003/5/5/nice-off-topic-article.html" published: "2003-05-05T05:36:00" updated: "2003-05-05T05:36:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Neo's just an early adopter . I wonder if he's tried out Windows Server 2003 yet. [Posted By Robert McLaws ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice \[Off Topic\] Article By Roy Osherove May 5, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 5, 2003; technical details may be outdated.  _[Neo's just an early adopter](http://slate.msn.com/id/2082400/). I wonder if he's tried out Windows Server 2003 yet._\[Posted By [Robert McLaws](http://dotnetweblogs.com/rmclaws/)\] ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 6, 2003 ### [Free Book: Software Testing and Internationalization](https://osherove.com/blog/2003/5/6/free-book-software-testing-and-internationalization.html) - May 5, 2003 ### [Gotta Love BlogShares FAQ](https://osherove.com/blog/2003/5/5/gotta-love-blogshares-faq.html) - May 5, 2003 ### [VS.Net Tips & Tricks Category Is Up](https://osherove.com/blog/2003/5/5/vsnet-tips-amp-tricks-category-is-up.html) - May 5, 2003 ### [MSDN staff](https://osherove.com/blog/2003/5/5/msdn-staff.html) --- title: "VS.Net Tips & Tricks Category Is Up" url: "https://osherove.com/blog/2003/5/5/vsnet-tips-amp-tricks-category-is-up.md" canonical: "https://osherove.com/blog/2003/5/5/vsnet-tips-amp-tricks-category-is-up.html" published: "2003-05-05T05:21:00" updated: "2003-05-05T05:21:00" tags: ["Off Topic"] author: "Roy Osherove" description: "OK. I just put up a post category for \"VS.Net Tips & Tricks\" so you keyboard junkies out there can save yourself some time looking. Here's the door . Contributions are more then welcome." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VS.Net Tips & Tricks Category Is Up By Roy Osherove May 5, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 5, 2003; technical details may be outdated. OK. I just put up a post category for "VS.Net Tips & Tricks" so you keyboard junkies out there can save yourself some time looking. Here's the [door](http://dotnetweblogs.com/rosherove/Category/906.aspx). Contributions  are **more** then welcome. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 5, 2003 ### [Gotta Love BlogShares FAQ](https://osherove.com/blog/2003/5/5/gotta-love-blogshares-faq.html) - May 5, 2003 ### [Nice \[Off Topic\] Article](https://osherove.com/blog/2003/5/5/nice-off-topic-article.html) - May 5, 2003 ### [MSDN staff](https://osherove.com/blog/2003/5/5/msdn-staff.html) - May 5, 2003 ### [OneNote Is Cool But...](https://osherove.com/blog/2003/5/5/onenote-is-cool-but.html) --- title: "Enough with the w.blogger garbage posts already" url: "https://osherove.com/blog/2003/5/5/enough-with-the-wblogger-garbage-posts-already.md" canonical: "https://osherove.com/blog/2003/5/5/enough-with-the-wblogger-garbage-posts-already.html" published: "2003-05-05T04:21:00" updated: "2003-05-05T04:21:00" tags: [".NetWeblogs Site"] author: "Roy Osherove" description: "Ahhrgh! Enough w.Blogger Testing :( Use something meaningful for testing purposes. Write down the post you want to write in notepad or something, and then copy and paste it into w.blogger. This way , if the test works ,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Enough with the w.blogger garbage posts already By Roy Osherove May 5, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) **Historical article** · Originally published May 5, 2003; technical details may be outdated. Ahhrgh!  Enough w.Blogger Testing :( Use something **meaningful** for testing purposes. Write down the post you want to write in notepad or something, and then copy and paste it into w.blogger. This way , if the test works , you have a good post up and not garbage. if it don't you lose nothing and are free to try again. But enough with the garbage posts on the main DNWL feed. Please. Sorry If I sound upset, but the main DNWL rss feed is a plethora of useless crap for the last couple of days....  Also, finding useful posts is becoming pretty damn hard if you look at the main page every so often and not **all the time**. ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - May 8, 2003 ### [.NetWebLogs Forums](https://osherove.com/blog/2003/5/8/netweblogs-forums.html) - May 6, 2003 ### [Hacking My Blog](https://osherove.com/blog/2003/5/6/hacking-my-blog.html) - May 4, 2003 ### [Wow](https://osherove.com/blog/2003/5/4/wow.html) - Apr 28, 2003 ### [Kudos for Scott](https://osherove.com/blog/2003/4/28/kudos-for-scott.html) --- title: "MSDN staff" url: "https://osherove.com/blog/2003/5/5/msdn-staff.md" canonical: "https://osherove.com/blog/2003/5/5/msdn-staff.html" published: "2003-05-05T04:12:00" updated: "2003-05-05T04:12:00" tags: ["Off Topic"] author: "Roy Osherove" description: "\" Matt Powell is the lead Content Strategist for the MSDN XML Web Services Developer Center . Besides writing numerous articles for MSDN, various magazines, and co-authoring Running Microsoft Internet Information Server…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSDN staff By Roy Osherove May 5, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 5, 2003; technical details may be outdated. **"_Matt Powell_** _is the lead Content Strategist for the_ [_MSDN XML Web Services Developer Center_](http://msdn.microsoft.com/webservices/)_. Besides writing numerous articles for MSDN, various magazines, and co-authoring Running Microsoft Internet Information Server from Microsoft Press, Matt also helped develop the groundbreaking SOAP Toolkit 1.0._ _When he is not delving into the depths of Web services, Matt helps his wife chase their kids around the greater Seattle area_." gotta love MSDN... ;) Apperarenly this kind of humor is pretty common among MSDN articles... ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 5, 2003 ### [Nice \[Off Topic\] Article](https://osherove.com/blog/2003/5/5/nice-off-topic-article.html) - May 5, 2003 ### [VS.Net Tips & Tricks Category Is Up](https://osherove.com/blog/2003/5/5/vsnet-tips-amp-tricks-category-is-up.html) - May 5, 2003 ### [OneNote Is Cool But...](https://osherove.com/blog/2003/5/5/onenote-is-cool-but.html) - May 1, 2003 ### [What Am I Missing?](https://osherove.com/blog/2003/5/1/what-am-i-missing.html) --- title: "DataSets, Web Services, DiffGrams, Arrays, and Interoperability" url: "https://osherove.com/blog/2003/5/5/datasets-web-services-diffgrams-arrays-and-interoperability.md" canonical: "https://osherove.com/blog/2003/5/5/datasets-web-services-diffgrams-arrays-and-interoperability.html" published: "2003-05-05T03:27:00" updated: "2003-05-05T03:27:00" tags: [".Net Original"] author: "Roy Osherove" description: "Here's a good article on MSDN : DataSets, Web Services, DiffGrams, Arrays, and Interoperability . \"Summary: Matt Powell examines the issues involved in deciding whether to send DataSets to and from Web services, while…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # DataSets, Web Services, DiffGrams, Arrays, and Interoperability By Roy Osherove May 5, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 5, 2003; technical details may be outdated. Here's a good article on MSDN : [DataSets, Web Services, DiffGrams, Arrays, and Interoperability](http://msdn.microsoft.com/webservices/building/default.aspx?pull=/library/en-us/dnservice/html/service02112003.asp) . _**"Summary:** Matt Powell examines the issues involved in deciding whether to send DataSets to and from Web services, while also showing you all your options"_ This extends the [discussion](http://radio.weblogs.com/0108971/2003/05/04.html) I had with Clemens regarding Exposing Datasets to outside resources . Thanks to [Andres](http://dotnetweblogs.com/aaguiar/posts/6449.aspx) for the link. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 6, 2003 ### [Regular Expression Library](https://osherove.com/blog/2003/5/6/regular-expression-library.html) - May 5, 2003 ### [Oops! Typed Datasets ARE scalable!](https://osherove.com/blog/2003/5/5/oops-typed-datasets-are-scalable.html) - May 4, 2003 ### [Blue Bricks](https://osherove.com/blog/2003/5/4/blue-bricks-1.html) - May 4, 2003 ### [Blue Bricks](https://osherove.com/blog/2003/5/4/blue-bricks.html) --- title: "OneNote Is Cool But..." url: "https://osherove.com/blog/2003/5/5/onenote-is-cool-but.md" canonical: "https://osherove.com/blog/2003/5/5/onenote-is-cool-but.html" published: "2003-05-05T03:03:00" updated: "2003-05-05T03:03:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I've been trying out OneNote (And the whole Office 2003 Packge for that matter) for the last couple of days. It's cool. It's Hip. It.... can't share notes with outlook. The only way to do this is by enailing the notes…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # OneNote Is Cool But... By Roy Osherove May 5, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 5, 2003; technical details may be outdated. I've been trying out OneNote (And the whole Office 2003 Packge for that matter) for the last couple of days. It's cool. It's Hip. It.... can't share notes with outlook. The only way to do this is by enailing the notes to outlook.   Now it's worthless to me . I don't have a tablet PC. I just use my Workstation. I thought I could use it for the quicknotes feature, but I want to share this throughout my office applicationa. Emailing the notes seems just a little too cumbersome, sorry. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 5, 2003 ### [VS.Net Tips & Tricks Category Is Up](https://osherove.com/blog/2003/5/5/vsnet-tips-amp-tricks-category-is-up.html) - May 5, 2003 ### [MSDN staff](https://osherove.com/blog/2003/5/5/msdn-staff.html) - May 1, 2003 ### [What Am I Missing?](https://osherove.com/blog/2003/5/1/what-am-i-missing.html) - May 1, 2003 ### [The Mouse I Want(And So Will You)](https://osherove.com/blog/2003/5/1/the-mouse-i-wantand-so-will-you.html) --- title: "Blue Bricks" url: "https://osherove.com/blog/2003/5/4/blue-bricks-1.md" canonical: "https://osherove.com/blog/2003/5/4/blue-bricks-1.html" published: "2003-05-04T05:47:00" updated: "2003-05-04T05:47:00" tags: [".Net Original"] author: "Roy Osherove" description: "Great Interview with Michael Stuart on .Net Rocks Show . He's the main guy behind the Microsoft Application Blocks (Data Access, Exception Managent) and he talks about the future blocks (named 'blue bricks') that will…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blue Bricks By Roy Osherove May 4, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 4, 2003; technical details may be outdated. Great Interview with Michael Stuart on [.Net Rocks Show](http://www.franklins.net/dotnetrocks.asp). He's the main guy behind the [Microsoft Application Blocks](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp) (Data Access, Exception Managent) and he talks about the future blocks (named 'blue bricks') that will arrive. Some cool stuff is on the way: \- **UIP** (User Interface Process) which encompasses the model-view-controller pattern \- **Caching** : Not just in ASP.NET anymore \- **Updated Data Access Blocks** - Now the data layer is completely decoupled of the database type. You can now choose Providers to be used with the blocks \- **Secure Configuration Blocks** .Save settings securely to config files and even using the safe storage facility in windows \- **Application updater** (using BITS protocol!) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 5, 2003 ### [Oops! Typed Datasets ARE scalable!](https://osherove.com/blog/2003/5/5/oops-typed-datasets-are-scalable.html) - May 5, 2003 ### [DataSets, Web Services, DiffGrams, Arrays, and Interoperability](https://osherove.com/blog/2003/5/5/datasets-web-services-diffgrams-arrays-and-interoperability.html) - May 4, 2003 ### [Blue Bricks](https://osherove.com/blog/2003/5/4/blue-bricks.html) - May 4, 2003 ### [Typed Datasets Are Not Always The Answer](https://osherove.com/blog/2003/5/4/typed-datasets-are-not-always-the-answer.html) --- title: "Blue Bricks" url: "https://osherove.com/blog/2003/5/4/blue-bricks.md" canonical: "https://osherove.com/blog/2003/5/4/blue-bricks.html" published: "2003-05-04T05:47:00" updated: "2003-05-04T05:47:00" tags: [".Net Original"] author: "Roy Osherove" description: "Great Interview with Michael Stuart on .Net Rocks Show . He's the main guy behind the Microsoft Application Blocks (Data Access, Exception Managent) and he talks about the future blocks (named 'blue bricks') that will…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blue Bricks By Roy Osherove May 4, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 4, 2003; technical details may be outdated. Great Interview with Michael Stuart on [.Net Rocks Show](http://www.franklins.net/dotnetrocks.asp). He's the main guy behind the [Microsoft Application Blocks](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp) (Data Access, Exception Managent) and he talks about the future blocks (named 'blue bricks') that will arrive. Some cool stuff is on the way: \- **UIP** (User Interface Process) which encompasses the model-view-controller pattern \- **Caching** : Not just in ASP.NET anymore \- **Updated Data Access Blocks** - Now the data layer is completely decoupled of the database type. You can now choose Providers to be used with the blocks \- **Secure Configuration Blocks** .Save settings securely to config files and even using the safe storage facility in windows \- **Application updater** (using BITS protocol!) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 5, 2003 ### [DataSets, Web Services, DiffGrams, Arrays, and Interoperability](https://osherove.com/blog/2003/5/5/datasets-web-services-diffgrams-arrays-and-interoperability.html) - May 4, 2003 ### [Blue Bricks](https://osherove.com/blog/2003/5/4/blue-bricks-1.html) - May 4, 2003 ### [Typed Datasets Are Not Always The Answer](https://osherove.com/blog/2003/5/4/typed-datasets-are-not-always-the-answer.html) - May 1, 2003 ### [EchoStream Class](https://osherove.com/blog/2003/5/1/echostream-class.html) --- title: "Typed Datasets Are Not Always The Answer" url: "https://osherove.com/blog/2003/5/4/typed-datasets-are-not-always-the-answer-1.md" canonical: "https://osherove.com/blog/2003/5/4/typed-datasets-are-not-always-the-answer-1.html" published: "2003-05-04T05:00:00" updated: "2003-05-04T05:00:00" tags: ["Typed Datasets"] author: "Roy Osherove" description: "Note: This is part 2 of 3 articles on this subject: Part 1 - Introduction to Typed Datasets Part 3 - Oops! Typed Datasets ARE scalable! I've recently recieved an email regarding my article about typed-datasets . It…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Typed Datasets Are Not Always The Answer By Roy Osherove May 4, 2003 In [Typed Datasets](https://osherove.com/blog/category/typed-datasets) **Historical article** · Originally published May 4, 2003; technical details may be outdated.   _Note: This is part 2 of 3 articles on this subject:_ - _Part 1 -_ [_Introduction to Typed Datasets_](http://dotnetweblogs.com/rosherove/story/5517.aspx) - _Part 3 -_ [_Oops! Typed Datasets ARE scalable!_](http://dotnetweblogs.com/rosherove/story/6489.aspx) I've recently recieved an email regarding my [article about typed-datasets](http://dotnetweblogs.com/Rosherove/Story/5517.aspx). It posed an intersting question as to _when_ one would use typed datasets and on what types of projects. I'm posting it and my reply. _Hi Roy,_ _I subscribe to your RSS feed and have noticed that you seem to be a supporter of using strongly typed datasets in applications. If you wouldn't mind, I'd be grateful if you could share some of your thoughts on your position a bit further._ _On my current project our technical lead has advocated the use of custom business entity objects instead that expose typed properties which internally contains a datatable. The custom entity class would also have other methods to get/set data plus know how to load data from the database and persist it back again._ _One of the main arguments our lead is advocating is that the entities that contain the data we use in the application become smart_ _entities that know how to handle their data, as opposed to the dataset which is just a container for data and which requires a separate class to handle calls against the database. Our lead also maintains that he has read in several newsgroups that typed datasets tend to be for “newbies” and that they are good for learning how to get started in .NET but have limited benefit for advanced application design._ _What are your thoughts on these ideas? Thanks a lot for your time and opinions!_ _\-_ --- **My Answer** Hi **Typed Datasets are not the answer to everything.** Your boss may be right in this case. Typed datasets are mainly for use in small , simple projects, which require fast time-to-market with a database that changes rarely. They are not a good replacement for a business layer in a complex application, since they are typed ,which has several disadvantages: 1) **Any assembly that uses the typed datasets must have a reference to the assembly in which they reside.** Since typed datasets usually reside directly in the data-oriented layer, this would mean using typed datasets from you GUI would eliminate the decoupling between the GUI and the data layer, thus removing all abstractions needed. **2) They do not hold specific business-rules.** So in order to preserve ,say, a bank account balance in a certain minimum, you have 2 choices: \-Write the code inside the typed dataset class to handle this (cumbersome at best) \-Make the database tables contain these rules (which is pretty limited , and makes your data layer And Data holder hold business rules 3) **Any changes to the database schema mean re-generation of the typed datasets, meaning re-referencing and compilation of all layers that reference it.(Plus any code changes you would make to the classes would be overwritten)** These 3 disadvantages give you a clear picture of what applications SHOULD use typed datasets: 1) They would have a maximum of 2-tier approach , meaning simple business rules or rules that are kept in the GUI 2) They should be small enough to be manageable when changes to requirements occur As you can see, complex N-Tier Applications are better off with a solution other then typed datasets, or they would become unmanageable. The beauty of a business layer is that it abstracts the data layer into a logical entity, thus , if database changes occur or even if the database type itself changes, there should be no changes to the presentation tier, only to the data layer. The business layer would then go about retrieved the data needed and presenting it to the presentation layer how it sees fit. **Stateful business objects are not always the answer either** The Dataset object was specifically designed to be transported between layers. Its only purpose is to contain data, and its schema. Thus you could have a data layer pass a dataset to the business layer which forwards it to the presentation layer, and no reference to the data layer should be created by the presentation layer. This allows you , instead of always returning large sets of stateful objects, to return datasets from logical objects in your business layer, making your business layer hold mainly objects that abstract you business rules and return results. It also saves you time and money that would be spent on reproducing logical relationships of the data in your database using custom classes. **Typed Datasets are NOT for newbies** It's a technology that allows creating fast time-to-market applications. It's use should be deliberated beforehand, but when applied correctly it can yield amazing results. **One more thing** Your Lead mentions that a Class is needed ABOVE the typed datasets in order to work with it. That is correct for abstracting the way the business logics behaves. You would call an object's method, and internally it uses the typed dataset to make database changes. This approach can be used in a 3-tier application to simplify coding against the database for the data layer objects. In this design you create a logical object for each table, and this object ,internally, uses a typed dataset to manage the table. This might be overkill in some situations, and all of the drawbacks I mention above apply here as well. But is you manage to keep the typed dataset to be used solely by the data layer or business object and not by the GUI ,you might be able to create easier to manage database operations. Regards, Roy Osherove ## More in Typed Datasets [All posts in Typed Datasets](https://osherove.com/blog/category/typed-datasets) - May 5, 2003 ### [Oops! Typed Datasets ARE scalable!](https://osherove.com/blog/2003/5/5/oops-typed-datasets-are-scalable-1.html) - Apr 12, 2003 ### [Introduction to Typed Datasets](https://osherove.com/blog/2003/4/12/introduction-to-typed-datasets.html) --- title: "Wow" url: "https://osherove.com/blog/2003/5/4/wow.md" canonical: "https://osherove.com/blog/2003/5/4/wow.html" published: "2003-05-04T04:58:00" updated: "2003-05-04T04:58:00" tags: [".NetWeblogs Site"] author: "Roy Osherove" description: "The New Administration Page looks Great!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Wow By Roy Osherove May 4, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) **Historical article** · Originally published May 4, 2003; technical details may be outdated. The New Administration Page looks Great! ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - May 6, 2003 ### [Hacking My Blog](https://osherove.com/blog/2003/5/6/hacking-my-blog.html) - May 5, 2003 ### [Enough with the w.blogger garbage posts already](https://osherove.com/blog/2003/5/5/enough-with-the-wblogger-garbage-posts-already.html) - Apr 28, 2003 ### [Kudos for Scott](https://osherove.com/blog/2003/4/28/kudos-for-scott.html) - Apr 28, 2003 ### [Testing from w.blogger](https://osherove.com/blog/2003/4/28/testing-from-wblogger.html) --- title: "Typed Datasets Are Not Always The Answer" url: "https://osherove.com/blog/2003/5/4/typed-datasets-are-not-always-the-answer.md" canonical: "https://osherove.com/blog/2003/5/4/typed-datasets-are-not-always-the-answer.html" published: "2003-05-04T04:55:00" updated: "2003-05-04T04:55:00" tags: [".Net Original"] author: "Roy Osherove" description: "I've recently recieved an enail regarding my article about typed-datasets . It posed an interesting question as to when one would use typed datasets and on what types of projects. I'm posting it and my reply. Hi Roy, I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Typed Datasets Are Not Always The Answer By Roy Osherove May 4, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 4, 2003; technical details may be outdated. I've recently recieved an enail regarding my [article about typed-datasets](http://dotnetweblogs.com/Rosherove/Story/5517.aspx). It posed an interesting question as to _when_ one would use typed datasets and on what types of projects. I'm posting it and my reply. --- _Hi Roy,_ _I subscribe to your RSS feed and have noticed that you seem to be a supporter of using strongly typed datasets in applications. If you wouldn't mind, I'd be grateful if you could share some of your thoughts on your position a bit further._ _On my current project our technical lead has advocated the use of custom business entity objects instead that expose typed properties which internally contains a datatable. The custom entity class would also have other methods to get/set data plus know how to load data from the database and persist it back again._ _One of the main arguments our lead is advocating is that the entities that contain the data we use in the application become smart_ _entities that know how to handle their data, as opposed to the dataset which is just a container for data and which requires a separate class to handle calls against the database. Our lead also maintains that he has read in several newsgroups that typed datasets tend to be for “newbies” and that they are good for learning how to get started in .NET but have limited benefit for advanced application design._ _What are your thoughts on these ideas? Thanks a lot for your time and opinions!_ --- **My Answer** Hi. **Typed Datasets are not the answer to everything.** Your boss may be right in this case. Typed datasets are mainly for use in small , simple projects, which require fast time-to-market with a database that changes rarely. They are not a good replacement for a business layer in a complex application, since they are typed ,which has several disadvantages: 1) **Any assembly that uses the typed datasets must have a reference to the assembly in which they reside.** Since typed datasets usually reside directly in the data-oriented layer, this would mean using typed datasets from you GUI would eliminate the decoupling between the GUI and the data layer, thus removing all abstractions needed. **2) They do not hold specific business-rules.** So in order to preserve ,say, a bank account balance in a certain minimum, you have 2 choices: \-Write the code inside the typed dataset class to handle this (cumbersome at best) \-Make the database tables contain these rules (which is pretty limited , and makes your data layer And Data holder hold business rules 3) **Any changes to the database schema mean re-generation of the typed datasets, meaning re-referencing and compilation of all layers that reference it.(Plus any code changes you would make to the classes would be overwritten)** These 3 disadvantages give you a clear picture of what applications SHOULD use typed datasets: 1) They would have a maximum of 2-tier approach , meaning simple business rules or rules that are kept in the GUI 2) They should be small enough to be manageable when changes to requirements occur As you can see, complex N-Tier Applications are better off with a solution other then typed datasets, or they would become unmanageable. The beauty of a business layer is that it abstracts the data layer into a logical entity, thus , if database changes occur or even if the database type itself changes, there should be no changes to the presentation tier, only to the data layer. The business layer would then go about retrieved the data needed and presenting it to the presentation layer how it sees fit. **Stateful business objects are not always the answer either** The Dataset object was specifically designed to be transported between layers. Its only purpose is to contain data, and its schema. Thus you could have a data layer pass a dataset to the business layer which forwards it to the presentation layer, and no reference to the data layer should be created by the presentation layer. This allows you , instead of always returning large sets of stateful objects, to return datasets from logical objects in your business layer, making your business layer hold mainly objects that abstract you business rules and return results. It also saves you time and money that would be spent on reproducing logical relationships of the data in your database using custom classes. **Typed Datasets are NOT for newbies** It's a technology that allows creating fast time-to-market applications. It's use should be deliberated beforehand, but when applied correctly it can yield amazing results. **One more thing** Your Lead mentions that a Class is needed ABOVE the typed datasets in order to work with it. That is correct for abstracting the way the business logics behaves. You would call an object's method, and internally it uses the typed dataset to make database changes. This approach can be used in a 3-tier application to simplify coding against the database for the data layer objects. In this design you create a logical object for each table, and this object ,internally, uses a typed dataset to manage the table. This might be overkill in some situations, and all of the drawbacks I mention above apply here as well. But is you manage to keep the typed dataset to be used solely by the data layer or business object and not by the GUI ,you might be able to create easier to manage database operations. Regards, Roy Osherove ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 4, 2003 ### [Blue Bricks](https://osherove.com/blog/2003/5/4/blue-bricks-1.html) - May 4, 2003 ### [Blue Bricks](https://osherove.com/blog/2003/5/4/blue-bricks.html) - May 1, 2003 ### [EchoStream Class](https://osherove.com/blog/2003/5/1/echostream-class.html) - May 1, 2003 ### [More VS.NET Tips & Tricks](https://osherove.com/blog/2003/5/1/more-vsnet-tips-amp-tricks.html) --- title: "Books I Own" url: "https://osherove.com/blog/2003/5/3/books-i-own.md" canonical: "https://osherove.com/blog/2003/5/3/books-i-own.html" published: "2003-05-03T12:21:00" updated: "2003-05-03T12:21:00" tags: [] author: "Roy Osherove" description: "Here are the technology books I currently own: .Net: Design: VB: Ready to tun VB Algorithms Programming: Code Complete" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Books I Own By Roy Osherove May 3, 2003 **Historical article** · Originally published May 3, 2003; technical details may be outdated. Here are the technology books I currently own: **.Net:** **Design:** **VB:** Ready to tun VB Algorithms **Programming:** Code Complete --- title: "What Am I Missing?" url: "https://osherove.com/blog/2003/5/1/what-am-i-missing.md" canonical: "https://osherove.com/blog/2003/5/1/what-am-i-missing.html" published: "2003-05-01T15:45:00" updated: "2003-05-01T15:45:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Is it just me , or does the Windows Media Player 9 Fun Pack not install on windows server 2003 claiming it \"Requires Windows XP\" to install??" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What Am I Missing? By Roy Osherove May 1, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 1, 2003; technical details may be outdated. Is it just me , or does the Windows Media Player 9 Fun Pack **not install on windows server 2003** claiming it "Requires Windows XP" to install?? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 5, 2003 ### [MSDN staff](https://osherove.com/blog/2003/5/5/msdn-staff.html) - May 5, 2003 ### [OneNote Is Cool But...](https://osherove.com/blog/2003/5/5/onenote-is-cool-but.html) - May 1, 2003 ### [The Mouse I Want(And So Will You)](https://osherove.com/blog/2003/5/1/the-mouse-i-wantand-so-will-you.html) - May 1, 2003 ### [I Couldn't Help Myself](https://osherove.com/blog/2003/5/1/i-couldnt-help-myself.html) --- title: "The Mouse I Want(And So Will You)" url: "https://osherove.com/blog/2003/5/1/the-mouse-i-wantand-so-will-you.md" canonical: "https://osherove.com/blog/2003/5/1/the-mouse-i-wantand-so-will-you.html" published: "2003-05-01T11:37:00" updated: "2003-05-01T11:37:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This looks cool and I want one. [via Craig ] This is one of the coolest things i have ever seen!!! Take a look: [From the site:] The iGesture Pad is an ultra-thin, large-area, superduper touchpad that is both mouse and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Mouse I Want(And So Will You) By Roy Osherove May 1, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 1, 2003; technical details may be outdated. [This](http://www.fingerworks.com/igesture.html) looks cool and I want one. \[via [Craig](http://staff.develop.com/candera/weblog/)\] This is one of the coolest things i have ever seen!!! Take a look: \[From the site:\] The iGesture Pad is an ultra-thin, large-area, superduper touchpad that is both mouse and powerful multi-finger gesture input interface. Mouse operations like point, click, drag, scroll, and zoom are combined seamlessly with multi-finger gesture in the same overlapping area of the iGesture Pad's surface. The iGesture Pad gives you unprecedented control of graphical objects using gestures, and it works equally well with either hand. Anyone can learn the basic gestures in a few minutes! Slips easily into your travel bag as the perfect external USB mouse/gesture interface for your laptop. <table width="100%"><tbody><tr><td><a href="http://www.fingerworks.com/gesture_guide_editing.html"><img alt="" decoding="async" height="50" loading="lazy" src="https://osherove.com/img/wb/69df67bb_www.fingerworks.com_images_wow_editing_wow.gif" width="100"></a></td><td><a href="http://www.fingerworks.com/gesture_guide_mouse.html"><img alt="" decoding="async" height="50" loading="lazy" src="https://osherove.com/img/wb/407ca9e2_www.fingerworks.com_images_wow_point_click_wow.gif" width="100"></a></td><td><a href="http://www.fingerworks.com/gesture_guide_web.html"><img alt="" decoding="async" height="50" loading="lazy" src="https://osherove.com/img/wb/08923f89_www.fingerworks.com_images_wow_browser_wow.gif" width="100"></a></td></tr></tbody></table> Plugs and plays with Macs, Windows, and Linux. <table width="100%"><tbody><tr><td><a href="http://www.fingerworks.com/gesture_guide_files.html"><img alt="" decoding="async" height="50" loading="lazy" src="https://osherove.com/img/wb/f00ff3a2_www.fingerworks.com_images_wow_file_ops_wow.gif" width="100"></a></td><td><a href="http://www.fingerworks.com/gesture_guide_text_manip.html"><img alt="" decoding="async" height="50" loading="lazy" src="https://osherove.com/img/wb/20428555_www.fingerworks.com_images_wow_text_cursor_wow.gif" width="100"></a></td><td><p><a href="http://www.fingerworks.com/gesture_guide_apps.html"><img alt="" decoding="async" height="50" loading="lazy" src="https://osherove.com/img/wb/94bb9c09_www.fingerworks.com_images_wow_next_app_wow.gif" width="100"></a></p></td></tr></tbody></table> **Update:** Appearently, The next step would be [this](http://www.research.microsoft.com/displayArticle.aspx?id=395). Thanks to [Lance Hunt](http://dotnetweblogs.com/lhunt/) For the link. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 5, 2003 ### [OneNote Is Cool But...](https://osherove.com/blog/2003/5/5/onenote-is-cool-but.html) - May 1, 2003 ### [What Am I Missing?](https://osherove.com/blog/2003/5/1/what-am-i-missing.html) - May 1, 2003 ### [I Couldn't Help Myself](https://osherove.com/blog/2003/5/1/i-couldnt-help-myself.html) - May 1, 2003 ### [How to Pass A Microsoft Interview - SDE/T Edition](https://osherove.com/blog/2003/5/1/how-to-pass-a-microsoft-interview-sdet-edition.html) --- title: "Shared Memory Wrapper" url: "https://osherove.com/blog/2003/5/1/shared-memory-wrapper.md" canonical: "https://osherove.com/blog/2003/5/1/shared-memory-wrapper.html" published: "2003-05-01T11:28:00" updated: "2003-05-01T11:28:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Rich has written a shared memory wrapper for .NET. It looks pretty handy. Here's his description : I've created a wrapper for named shared memory that was part of a larger project. It basically allows serialized types…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Shared Memory Wrapper By Roy Osherove May 1, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 1, 2003; technical details may be outdated. <table width="100%"><tbody><tr><td><div><p><a href="http://staff.develop.com/richardb/weblog/">Rich</a> has written a shared memory wrapper for .NET. It looks pretty handy. Here's <a href="http://staff.develop.com/richardb/weblog/permalink.aspx/32c3abfb-bac9-4e19-bbc5-39ca338d906d">his description</a>:</p></div><blockquote dir="ltr"><p><em>I've created a wrapper for named shared memory that was part of a larger project. It basically allows serialized types and object graphs to be stored in and retrieved from shared memory (including as you'd expect cross process). Whether the larger project ever gets completed is another matter ;-). You can find the zip </em><a href="http://staff.develop.com/richardb/dotnet/sharedmemory.zip" title="http://staff.develop.com/richardb/dotnet/sharedmemory.zip"><em>here</em></a><em>.</em></p></blockquote></td></tr></tbody></table> \[via [Craig](http://staff.develop.com/candera/weblog/)\] ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 7, 2003 ### [Another Free Book](https://osherove.com/blog/2003/5/7/another-free-book.html) - May 5, 2003 ### [More On UIP Blue Bricks](https://osherove.com/blog/2003/5/5/more-on-uip-blue-bricks.html) - May 1, 2003 ### [NUnitASP](https://osherove.com/blog/2003/5/1/nunitasp.html) - May 1, 2003 ### [More About Yukon?](https://osherove.com/blog/2003/5/1/more-about-yukon.html) --- title: "EchoStream Class" url: "https://osherove.com/blog/2003/5/1/echostream-class.md" canonical: "https://osherove.com/blog/2003/5/1/echostream-class.html" published: "2003-05-01T11:01:00" updated: "2003-05-01T11:01:00" tags: [".Net Original"] author: "Roy Osherove" description: "This Very nice EchoStream class that lets you map two stream object in which you read into one stream, and the input to that stream is automatically written to the other. It can also do the same for writing - Writing to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # EchoStream Class By Roy Osherove May 1, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published May 1, 2003; technical details may be outdated. This Very nice [EchoStream class](http://www.codeproject.com/useritems/echostream.asp) that lets you map two stream object in which you read into one stream, and the input to that stream is automatically written to the other. It can also do the same for writing - Writing to one stream writes the same to the other stream. basic T-stream functionality. very nice and elegant. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 4, 2003 ### [Blue Bricks](https://osherove.com/blog/2003/5/4/blue-bricks.html) - May 4, 2003 ### [Typed Datasets Are Not Always The Answer](https://osherove.com/blog/2003/5/4/typed-datasets-are-not-always-the-answer.html) - May 1, 2003 ### [More VS.NET Tips & Tricks](https://osherove.com/blog/2003/5/1/more-vsnet-tips-amp-tricks.html) - Apr 30, 2003 ### [A VS.NET 2003 Registry Tweaker Don Could Use](https://osherove.com/blog/2003/4/30/a-vsnet-2003-registry-tweaker-don-could-use.html) --- title: "NUnitASP" url: "https://osherove.com/blog/2003/5/1/nunitasp.md" canonical: "https://osherove.com/blog/2003/5/1/nunitasp.html" published: "2003-05-01T10:24:00" updated: "2003-05-01T10:24:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Got this also from the win_tech_off_topic list: Here's something that looks really promising: NUnitASP . Since i'm currently not doing ASP.NET development, I can't really test it thoroughly, But if it's half as…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NUnitASP By Roy Osherove May 1, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 1, 2003; technical details may be outdated. Got this also from the win\_tech\_off\_topic list: Here's something that looks really promising: [NUnitASP](http://nunitasp.sourceforge.net/). Since i'm currently not doing ASP.NET development, I can't really test it thoroughly, But if it's half as productive as NUnit(And NUnitAddin 2.0combined) I bet it's gonna help someone(lots of someone's!) with their ASP.NET development. I'll put it in my XP/Unit Testing Links collection for safe keeping. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 5, 2003 ### [More On UIP Blue Bricks](https://osherove.com/blog/2003/5/5/more-on-uip-blue-bricks.html) - May 1, 2003 ### [Shared Memory Wrapper](https://osherove.com/blog/2003/5/1/shared-memory-wrapper.html) - May 1, 2003 ### [More About Yukon?](https://osherove.com/blog/2003/5/1/more-about-yukon.html) - Apr 29, 2003 ### [A Quick VS.NET Tweak](https://osherove.com/blog/2003/4/29/a-quick-vsnet-tweak.html) --- title: "More About Yukon?" url: "https://osherove.com/blog/2003/5/1/more-about-yukon.md" canonical: "https://osherove.com/blog/2003/5/1/more-about-yukon.html" published: "2003-05-01T10:13:00" updated: "2003-05-01T10:13:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Some amazing stuff can be found in this pdf article . I wonder when we'll see them come to life. From what I can tell/heared the Yukon release would integrate some if not all of this stuff in one way or another. I did…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More About Yukon? By Roy Osherove May 1, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published May 1, 2003; technical details may be outdated. Some amazing stuff can be found in [this pdf article](http://www.research.microsoft.com/~emeijer/Papers/oopsla.pdf) . I wonder when we'll see them come to life. From what I can tell/heared the Yukon release would integrate some if not all of this stuff in one way or another. I did hear some stuff during User Group meetings about returning File System Objects such as files or directories from stored procedures and other stuff, but reading this makes it all  look much more real. Since Don Box is mentioned in the Thank you notes, perhpas he could shed more light on this if possible...) btw, I came across this while reading the win\_tech\_off\_topic mailing list. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 1, 2003 ### [Shared Memory Wrapper](https://osherove.com/blog/2003/5/1/shared-memory-wrapper.html) - May 1, 2003 ### [NUnitASP](https://osherove.com/blog/2003/5/1/nunitasp.html) - Apr 29, 2003 ### [A Quick VS.NET Tweak](https://osherove.com/blog/2003/4/29/a-quick-vsnet-tweak.html) - Apr 29, 2003 ### [Enterprise Instrumentation Framework Released](https://osherove.com/blog/2003/4/29/enterprise-instrumentation-framework-released.html) --- title: "I Couldn't Help Myself" url: "https://osherove.com/blog/2003/5/1/i-couldnt-help-myself.md" canonical: "https://osherove.com/blog/2003/5/1/i-couldnt-help-myself.html" published: "2003-05-01T09:41:00" updated: "2003-05-01T09:41:00" tags: ["Off Topic"] author: "Roy Osherove" description: "A 'bit' off topic, but I could not help myself : Here's the SellsBrothers team looking more natural. Beaverton, OR Saturday, April 12, 2003 [via Chris Sells ] I see now why he has been assimilated : You don't let go of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I Couldn't Help Myself By Roy Osherove May 1, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 1, 2003; technical details may be outdated. A 'bit' off topic, but I could not help myself :![](https://osherove.com/img/ext/www.sellsbrothers.com_fun_2003bball3small.JPG) _Here's the SellsBrothers team looking more natural._ _Beaverton, OR Saturday, April 12, 2003_ \[via [Chris Sells](http://www.sellsbrothers.com/fun/)\] I see now why he has been assimilated : You don't let go of a team leader like this one ;) He makes sure his team has fun! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 1, 2003 ### [What Am I Missing?](https://osherove.com/blog/2003/5/1/what-am-i-missing.html) - May 1, 2003 ### [The Mouse I Want(And So Will You)](https://osherove.com/blog/2003/5/1/the-mouse-i-wantand-so-will-you.html) - May 1, 2003 ### [How to Pass A Microsoft Interview - SDE/T Edition](https://osherove.com/blog/2003/5/1/how-to-pass-a-microsoft-interview-sdet-edition.html) - Apr 29, 2003 ### [Build Your Own Research Library with Office 2003 and the Google Web Service API](https://osherove.com/blog/2003/4/29/build-your-own-research-library-with-office-2003-and-the-goo.html) --- title: "How to Pass A Microsoft Interview - SDE/T Edition" url: "https://osherove.com/blog/2003/5/1/how-to-pass-a-microsoft-interview-sdet-edition.md" canonical: "https://osherove.com/blog/2003/5/1/how-to-pass-a-microsoft-interview-sdet-edition.html" published: "2003-05-01T09:11:00" updated: "2003-05-01T09:11:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I was going through Chris Sell's Posts about Microsoft interviews and was amazed at the amount of interest these have generated. Quite frankly, I was intrigued as well. I do wonder what its like - being there. Those…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to Pass A Microsoft Interview - SDE/T Edition By Roy Osherove May 1, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published May 1, 2003; technical details may be outdated. I was going through [Chris Sell's Posts about Microsoft interviews](http://www.sellsbrothers.com/fun/msiview/) and was amazed at the amount of interest these have generated. Quite frankly, I was intrigued as well. I do wonder what its like - being there. Those posts provide a window to the world of 'how  its done with the big boys' in a sort of way. I wouldn't be surprised if a 'How **to pass A Microsoft interview**' Book were to be written in the near future. (I can even go as far as seeing editions - 'Passing MSFT Interview - QA Edition' or 'SDE/T Edition','Evangelist Edition'... you get the drift. **Update:** Perhaps [stories like this one](http://www.tashian.com/microsoft.html) are another reason these books are just a matter of time... **Yet Another Update:** **Well, I knew it!**. [Samer Ibrahim](http://dotnetweblogs.com/SIbrahim) pointed me in the direction of just the book I was speaking of -  [How Would You Move Mount Fuji?: Microsoft's Cult of the Puzzle -- How the World's Smartest Companies Select the Most Creative Thinkers ](http://www.twbookmark.com/books/36/0316919160/index.html)by [William Poundstone](http://www.twbookmark.com/authors/48/2721/index.html) (Now I feel like I must have it!) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - May 1, 2003 ### [The Mouse I Want(And So Will You)](https://osherove.com/blog/2003/5/1/the-mouse-i-wantand-so-will-you.html) - May 1, 2003 ### [I Couldn't Help Myself](https://osherove.com/blog/2003/5/1/i-couldnt-help-myself.html) - Apr 29, 2003 ### [Build Your Own Research Library with Office 2003 and the Google Web Service API](https://osherove.com/blog/2003/4/29/build-your-own-research-library-with-office-2003-and-the-goo.html) - Apr 28, 2003 ### [Kudos for Scott](https://osherove.com/blog/2003/4/28/kudos-for-scott.html) --- title: "More VS.NET Tips & Tricks" url: "https://osherove.com/blog/2003/5/1/more-vsnet-tips-amp-tricks.md" canonical: "https://osherove.com/blog/2003/5/1/more-vsnet-tips-amp-tricks.html" published: "2003-05-01T08:35:00" updated: "2003-05-01T08:35:00" tags: [".Net Original", "Tips & Tricks"] author: "Roy Osherove" description: "For you keyboard junkies out there: Cut the current line - CTRL+L (Saves you that 'long' HOME,SHIFT+END,CTRL+X) Delete the current line - CTRL+SHIFT+L (Saves you that 'long' HOME,SHIFT+END,DEL) Move to the closing or…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More VS.NET Tips & Tricks By Roy Osherove May 1, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published May 1, 2003; technical details may be outdated. **For you keyboard junkies out there:** - **Cut** the current line - **CTRL+L** (Saves you that 'long' HOME,SHIFT+END,CTRL+X) - **Delete** the current line - **CTRL+SHIFT+L** (Saves you that 'long' HOME,SHIFT+END,DEL) - Move to the closing or opening of the current block - **CTRL+\[** - Here's a nice little macro to turn your selection into a region: Sub OutlineSelection() Dim objTextDoc As TextDocument Dim title As String = InputBox("Enter the title for the outline", "Outline code") objTextDoc = DTE.ActiveDocument.Object("TextDocument") objTextDoc.Selection.Insert("#region " & title & vbNewLine, vsInsertFlags.vsInsertFlagsInsertAtStart) objTextDoc.Selection.Insert(vbNewLine & "#endregion ", vsInsertFlags.vsInsertFlagsInsertAtEnd) objTextDoc.Selection.SmartFormat() End Sub Save it in you macro-editor(ALT+F8) . then go to tools-options->environment-keyboard and find that macro. Highlight it and select the shortcut youd like to run it from(I use CTRL+M,CTRL+N). - Outline a text selection for a **Standard Non-Code file** (My favorite) sometimes your opening files in the VS.NET editor that are not code files. You have no outlining support in these files... or do you? Select some text in the open editor and press **CTRL+M,CTRL+H**. tada! your selection is now collapsed. Press **CTRL+M,CTRL+U** to stop the outlining ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 4, 2003 ### [Typed Datasets Are Not Always The Answer](https://osherove.com/blog/2003/5/4/typed-datasets-are-not-always-the-answer.html) - May 1, 2003 ### [EchoStream Class](https://osherove.com/blog/2003/5/1/echostream-class.html) - Apr 30, 2003 ### [A VS.NET 2003 Registry Tweaker Don Could Use](https://osherove.com/blog/2003/4/30/a-vsnet-2003-registry-tweaker-don-could-use.html) - Apr 30, 2003 ### [Advanced Dataset Helper Classes](https://osherove.com/blog/2003/4/30/advanced-dataset-helper-classes.html) --- title: "A VS.NET 2003 Registry Tweaker Don Could Use" url: "https://osherove.com/blog/2003/4/30/a-vsnet-2003-registry-tweaker-don-could-use.md" canonical: "https://osherove.com/blog/2003/4/30/a-vsnet-2003-registry-tweaker-don-could-use.html" published: "2003-04-30T15:48:00" updated: "2003-04-30T15:48:00" tags: [".Net Original", "Tips & Tricks"] author: "Roy Osherove" description: "Since Don was writing on how you can tweak the registry in order to be able to ShellExecute VS.NET associated files into an open instance of VS.NET(instead of a new one each time), I decided to take the 'challenge' and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A VS.NET 2003 Registry Tweaker Don Could Use By Roy Osherove April 30, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published April 30, 2003; technical details may be outdated. Since Don was writing on [how you can tweak the registry](http://www.gotdotnet.com/team/dbox/spoutletex.aspx?key=2003-04-25T06:03:43Z) in order to be able to ShellExecute VS.NET associated files into an open instance of VS.NET(instead of a new one each time), I decided to take the 'challenge' and came up with this: [](http://www.codeproject.com/useritems/VSNetRegHelper.asp) - [Download source files - 74 Kb](http://www.codeproject.com/useritems/VSNetRegHelper/VSNetRegHelper_src.zip) - [Download demo project - 8 Kb](http://www.codeproject.com/useritems/VSNetRegHelper/VSNetHelper_Demo.zip) ## "Introduction Don Box [Commented](http://www.gotdotnet.com/team/dbox/spoutletex.aspx?key=2003-04-25T06:03:43Z) about the fact that when he double clicks VS.NET associated files in his explorer, Those files are opened using a new instance of VS.NET, even though there is an existing instance of the editor. He also pointed out a way in which to make those files load within the active instance of the VS.NET. It is done by adding a simple suffix to the value of registry keys associated with those files in the registry. However, This process is very cumbersome. So I decided to make a program solely for this purpose. This program can be customized to change a user defined registry key, and an xml list of files that will be changed. The user can also revert this process. . ." You can download the program and the code from [CodeProject.](http://www.codeproject.com/useritems/VSNetRegHelper.asp) (No warrenty! This is just a simple utility - nothing more) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 1, 2003 ### [EchoStream Class](https://osherove.com/blog/2003/5/1/echostream-class.html) - May 1, 2003 ### [More VS.NET Tips & Tricks](https://osherove.com/blog/2003/5/1/more-vsnet-tips-amp-tricks.html) - Apr 30, 2003 ### [Advanced Dataset Helper Classes](https://osherove.com/blog/2003/4/30/advanced-dataset-helper-classes.html) - Apr 28, 2003 ### [ASP.NET Authentication Question + Answer](https://osherove.com/blog/2003/4/28/aspnet-authentication-question-answer.html) --- title: "Advanced Dataset Helper Classes" url: "https://osherove.com/blog/2003/4/30/advanced-dataset-helper-classes.md" canonical: "https://osherove.com/blog/2003/4/30/advanced-dataset-helper-classes.html" published: "2003-04-30T09:34:00" updated: "2003-04-30T09:34:00" tags: [".Net Original"] author: "Roy Osherove" description: "While Trying to help my wife find material regarding dynamically creating tables at runtime, I stumbled across a very nice group of articles , All about Dataset helper Classes doinf various cool things with the dataset.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Advanced Dataset Helper Classes By Roy Osherove April 30, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 30, 2003; technical details may be outdated. While Trying to help my wife find material regarding dynamically creating tables at runtime, I stumbled across a [very nice group of articles](http://support.microsoft.com/common/canned.aspx?R=d&H=ADO.NET%20DataSetHelper%20Articles&LL=kbadonet&Sz=kbhowto%20and%20datasethelper%20and%20kbadonet), All about Dataset helper Classes doinf various cool things with the dataset. I heartly recommend reading this and getting some ideas. I Havn't really combed through all of it but it looks promising. (btw, they all have a VB.NET example as well) Here's a snip of it. " <table dir="ltr"><tbody><tr><td width="20"><img alt="" decoding="async" loading="lazy" src="https://osherove.com/img/wb/a1928ae7_support.microsoft.com_library_images_support_blue_bullet.gif"></td><td width="100%"><a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;326176"><em>HOW TO: Implement a DataSet SELECT DISTINCT Helper Class in Visual C# .NET</em></a></td></tr><tr><td width="20"><em><img alt="" decoding="async" loading="lazy" src="https://osherove.com/img/wb/875e43fe_support.microsoft.com_library_images_support_1ptrans.gif"></em></td><td width="100%"><div id="srchdesc" name="srchdesc"><em>This step-by-step article illustrates how to implement and how to use a DataSetHelper class that includes sample code to create a DataTable object that contains the unique values of a column of another DataTable object. To do this, you use the...</em></div></td></tr><tr><td width="20"><em><img alt="" decoding="async" loading="lazy" src="https://osherove.com/img/wb/a1928ae7_support.microsoft.com_library_images_support_blue_bullet.gif"></em></td><td width="100%"><a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;325938"><em>HOW TO: Implement a DataSet CREATE TABLE Helper Class in Visual C# .NET</em></a></td></tr><tr><td width="20"><em><img alt="" decoding="async" loading="lazy" src="https://osherove.com/img/wb/875e43fe_support.microsoft.com_library_images_support_1ptrans.gif"></em></td><td width="100%"><div id="srchdesc" name="srchdesc"><em>This step-by-step article describes how to implement and how to use a DataSetHelper class that includes sample code to create a table from a comma-delimited list of field names and data types. This article includes a second method so that you can also...</em></div></td></tr><tr><td width="20"><em><img alt="" decoding="async" loading="lazy" src="https://osherove.com/img/wb/a1928ae7_support.microsoft.com_library_images_support_blue_bullet.gif"></em></td><td width="100%"><a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;326009"><em>HOW TO: Implement a DataSet SELECT INTO Helper Class in Visual C# .NET</em></a></td></tr><tr><td width="20"><em><img alt="" decoding="async" loading="lazy" src="https://osherove.com/img/wb/875e43fe_support.microsoft.com_library_images_support_1ptrans.gif"></em></td><td width="100%"><div id="srchdesc" name="srchdesc"><em>This step-by-step article describes how to implement and how to use a DataSetHelper class that includes sample code to create a DataTable object from an existing DataTable definition and to copy records that are sorted and filtered from the source...</em></div></td></tr><tr><td width="20"><em><img alt="" decoding="async" loading="lazy" src="https://osherove.com/img/wb/a1928ae7_support.microsoft.com_library_images_support_blue_bullet.gif"></em></td><td width="100%"><a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;326080"><em>HOW TO: Implement a DataSet JOIN helper class in Visual C# .NET</em></a></td></tr><tr><td width="20"><em><img alt="" decoding="async" loading="lazy" src="https://osherove.com/img/wb/875e43fe_support.microsoft.com_library_images_support_1ptrans.gif"></em></td><td width="100%"><div id="srchdesc" name="srchdesc"><em>This step-by-step article describes how to implement and how use a DataSetHelper class that includes sample code to create a DataTable object from two or more related DataTable definitions and to copy records that are sorted and filtered from the...</em></div></td></tr></tbody></table> " ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - May 1, 2003 ### [More VS.NET Tips & Tricks](https://osherove.com/blog/2003/5/1/more-vsnet-tips-amp-tricks.html) - Apr 30, 2003 ### [A VS.NET 2003 Registry Tweaker Don Could Use](https://osherove.com/blog/2003/4/30/a-vsnet-2003-registry-tweaker-don-could-use.html) - Apr 28, 2003 ### [ASP.NET Authentication Question + Answer](https://osherove.com/blog/2003/4/28/aspnet-authentication-question-answer.html) - Apr 27, 2003 ### [More Debugger Problems: aspnet\_regiis does not work on Windows 2003 Server](https://osherove.com/blog/2003/4/27/more-debugger-problems-aspnet_regiis-does-not-work-on-window.html) --- title: "A Quick VS.NET Tweak" url: "https://osherove.com/blog/2003/4/29/a-quick-vsnet-tweak.md" canonical: "https://osherove.com/blog/2003/4/29/a-quick-vsnet-tweak.html" published: "2003-04-29T20:14:00" updated: "2003-04-29T20:14:00" tags: [".Net Quotations", "Tips & Tricks"] author: "Roy Osherove" description: "Don points a way to make VS.NET associated files load into the open instance of VS.NET instead of spawning a new instance every time thus saving precious load times. Sweet. Cumbersome, but sweet :) I should figure out a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Quick VS.NET Tweak By Roy Osherove April 29, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published April 29, 2003; technical details may be outdated. Don [points a way](http://www.gotdotnet.com/team/dbox/spoutletex.aspx?key=2003-04-25T06:03:43Z) to make VS.NET associated files load into the open instance of VS.NET instead of spawning a new instance every time thus saving precious load times. Sweet. Cumbersome, but sweet :) I should figure out a small GUI to handle these small changes... shouldn't I? ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 1, 2003 ### [NUnitASP](https://osherove.com/blog/2003/5/1/nunitasp.html) - May 1, 2003 ### [More About Yukon?](https://osherove.com/blog/2003/5/1/more-about-yukon.html) - Apr 29, 2003 ### [Enterprise Instrumentation Framework Released](https://osherove.com/blog/2003/4/29/enterprise-instrumentation-framework-released.html) - Apr 29, 2003 ### [Build Your Own Research Library with Office 2003 and the Google Web Service API](https://osherove.com/blog/2003/4/29/build-your-own-research-library-with-office-2003-and-the-goo.html) --- title: "Enterprise Instrumentation Framework Released" url: "https://osherove.com/blog/2003/4/29/enterprise-instrumentation-framework-released.md" canonical: "https://osherove.com/blog/2003/4/29/enterprise-instrumentation-framework-released.html" published: "2003-04-29T19:59:00" updated: "2003-04-29T19:59:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "\" With absolutely no fanfare, Enterprise Instrumentation Framework has released. EIF lets you instrument your applications with tracing information that's meant to be left in while the application is in production.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Enterprise Instrumentation Framework Released By Roy Osherove April 29, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 29, 2003; technical details may be outdated. "_With absolutely no fanfare, Enterprise Instrumentation Framework has released.  EIF lets you instrument your applications with tracing information that's meant to be left in while the application is in production.  Tracing can be turned on and off, and directed to various sinks, simply by modifying a configuration file at run time.  You can trace user operations, class operations, requests as they travel through a distributed application, or just about anything else you can imagine._ _Check it out._ [_MSDN Subscriber Downloads_](https://msdn.one.microsoft.com/Subscriber/1033/Default.asp) _| Content | Developer Tools | Enterprise Instrumentation Framework."_ \[via [Early Adopter](http://radio.weblogs.com/0117167/2003/04/29.html#a271)\] Yey! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - May 1, 2003 ### [More About Yukon?](https://osherove.com/blog/2003/5/1/more-about-yukon.html) - Apr 29, 2003 ### [A Quick VS.NET Tweak](https://osherove.com/blog/2003/4/29/a-quick-vsnet-tweak.html) - Apr 29, 2003 ### [Build Your Own Research Library with Office 2003 and the Google Web Service API](https://osherove.com/blog/2003/4/29/build-your-own-research-library-with-office-2003-and-the-goo.html) - Apr 27, 2003 ### [Microsoft's Smart Devices Developer Community](https://osherove.com/blog/2003/4/27/microsofts-smart-devices-developer-community.html) --- title: "Build Your Own Research Library with Office 2003 and the Google Web Service API" url: "https://osherove.com/blog/2003/4/29/build-your-own-research-library-with-office-2003-and-the-goo.md" canonical: "https://osherove.com/blog/2003/4/29/build-your-own-research-library-with-office-2003-and-the-goo.html" published: "2003-04-29T19:49:00" updated: "2003-04-29T19:49:00" tags: [".Net Quotations", "Off Topic"] author: "Roy Osherove" description: "\"An article just popped up on the main msdn page, \"Build Your Own Research Library with Office 2003 and the Google Web Service API\" . The Office beta gets more interesting every day . Basically, its possible to consume…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Build Your Own Research Library with Office 2003 and the Google Web Service API By Roy Osherove April 29, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 29, 2003; technical details may be outdated. _"An article just popped up on the main msdn page,_ [_"Build Your Own Research Library with Office 2003 and the Google Web Service API"_](http://www.msdn.microsoft.com/library/default.asp?url=/library/en-us/dnofftalk/html/office03062003.asp)_.  The Office beta gets more interesting every day.  Basically, its possible to consume a web service from the research task pane in an office app.  Well, kind of, it can only consume a web service following a strict schema.  The article details how it works.."_ \[via [Ali's Blog](http://radio.weblogs.com/0120671/2003/04/01.html#a17)\] Me like!! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 29, 2003 ### [A Quick VS.NET Tweak](https://osherove.com/blog/2003/4/29/a-quick-vsnet-tweak.html) - Apr 29, 2003 ### [Enterprise Instrumentation Framework Released](https://osherove.com/blog/2003/4/29/enterprise-instrumentation-framework-released.html) - Apr 27, 2003 ### [Microsoft's Smart Devices Developer Community](https://osherove.com/blog/2003/4/27/microsofts-smart-devices-developer-community.html) - Apr 16, 2003 ### [CLR tips gold mine detected](https://osherove.com/blog/2003/4/16/clr-tips-gold-mine-detected.html) --- title: "ASP.NET Authentication Question + Answer" url: "https://osherove.com/blog/2003/4/28/aspnet-authentication-question-answer.md" canonical: "https://osherove.com/blog/2003/4/28/aspnet-authentication-question-answer.html" published: "2003-04-28T11:41:00" updated: "2003-04-28T11:41:00" tags: [".Net Original"] author: "Roy Osherove" description: "I can't seem to find an answer to this: Is it possible to use the tag in web.config to allow some of the pages in your site to be non-secure, meaning users can browse them without being redirected to the login page?…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ASP.NET Authentication Question + Answer By Roy Osherove April 28, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 28, 2003; technical details may be outdated. I can't seem to find an answer to this: Is it possible to use the tag in web.config to allow some of the pages in your site to be non-secure, meaning users can browse them without being redirected to the login page? Update: Well, It didn't take very long for the answers to arrive! Thanks to [Fabrice](http://dotnetweblogs.com/fmarguerie/posts/6123.aspx) And [hElp Blog](http://dotnetweblogs.com/pleloup/posts/6121.aspx) For providing me with ways to achieve this :) Here are the replies: **Fabrice:** Sure, after protecting your pages with the following configuration:  < authentication mode="Forms"> <forms     name=".ASPMyApp"     loginUrl="Security/Login.aspx"     protection="All"     timeout="25" /> authentication> <authorization>   <deny users="?" /> authorization> you can authorize access to the Errors folder (for example) by adding this to the same web.config file. <location pah="Errors">   <system.web>     <auhorization>       <allow users="\*" />     auhorization>   system.web> location> You could also do the same by adding a web.config file in the Errors folder, which content would be: xml version="1.0" encoding="utf-8"?> <configuration>   <system.web>     < auhorization>       <allow users="\*" />     auhorization>   system.web> configuration> [**hElp Blog**](http://dotnetweblogs.com/pleloup/posts/6121.aspx) Roy what I do myself is to put everything to be secure in a folder, duplicate the web config in this folder and modify the tags. The main web config of your application has to allow everybody. It works for me ! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 30, 2003 ### [A VS.NET 2003 Registry Tweaker Don Could Use](https://osherove.com/blog/2003/4/30/a-vsnet-2003-registry-tweaker-don-could-use.html) - Apr 30, 2003 ### [Advanced Dataset Helper Classes](https://osherove.com/blog/2003/4/30/advanced-dataset-helper-classes.html) - Apr 27, 2003 ### [More Debugger Problems: aspnet\_regiis does not work on Windows 2003 Server](https://osherove.com/blog/2003/4/27/more-debugger-problems-aspnet_regiis-does-not-work-on-window.html) - Apr 27, 2003 ### [Regular Expressions And Log Parsing](https://osherove.com/blog/2003/4/27/regular-expressions-and-log-parsing.html) --- title: "Kudos for Scott" url: "https://osherove.com/blog/2003/4/28/kudos-for-scott.md" canonical: "https://osherove.com/blog/2003/4/28/kudos-for-scott.html" published: "2003-04-28T10:43:00" updated: "2003-04-28T10:43:00" tags: [".NetWeblogs Site", "Off Topic"] author: "Roy Osherove" description: "Kudos for Scott for all the wonderful new additions to the site. The new Post Editor is real slick (no more scrolling for formatting - woohoo!) The new MetaWeblog feature is pretty darn cool (I know, I know - i use way…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Kudos for Scott By Roy Osherove April 28, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 28, 2003; technical details may be outdated. **Kudos for Scott for all the wonderful new additions to the site.** -  The new Post Editor is real slick (no more scrolling for formatting - woohoo!) -  The new MetaWeblog feature is pretty darn cool (I know, I know - i use way too much 'cool' and 'coolness' in my posts , but hey , the world is full of coolness ;)  I can't wait for category support! - The new Blog Admin Page is much easier to manage now. - The CSS sheets - oh well ;) - The web service extentions seems not be not working for me. Hope this is fixed soon :) - Update:I like the "News/Updates" Feature! This is cool if I'll be away for a while or anouncing the next big convention I'll be speaking at (yeah right..) A few points and requests: -   When editing an entry, I'd like the "Categores" checkboxes always visible, since I sometimes forget to mark the appropriate ones and have to re-open a post. -  ~There is no direct link to enter /BlogAdmin.index.aspx from the main page. This was there before the changes. could this be returned? erm. sorry.~   oops sorry ;) didn't see that the "admin" and "logout" are two different links ;) -  Is there a way for the user to provide their own CSS sheets? -  Real time stats about page views -  I Don't get an email any time i get a comment about a post. Was that feature dropped? Hope i'm not bugging too much about these things. I'd love to help if I get the chance :) **Overall** \- I really love (and proud) being a part of this. Great going! ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - May 5, 2003 ### [Enough with the w.blogger garbage posts already](https://osherove.com/blog/2003/5/5/enough-with-the-wblogger-garbage-posts-already.html) - May 4, 2003 ### [Wow](https://osherove.com/blog/2003/5/4/wow.html) - Apr 28, 2003 ### [Testing from w.blogger](https://osherove.com/blog/2003/4/28/testing-from-wblogger.html) - Apr 28, 2003 ### [MetaWebLog API rules](https://osherove.com/blog/2003/4/28/metaweblog-api-rules.html) --- title: "Testing from w.blogger" url: "https://osherove.com/blog/2003/4/28/testing-from-wblogger.md" canonical: "https://osherove.com/blog/2003/4/28/testing-from-wblogger.html" published: "2003-04-28T09:54:00" updated: "2003-04-28T09:54:00" tags: [".NetWeblogs Site", "Off Topic"] author: "Roy Osherove" description: "Hmm - I like w.blogger - it's pretty cool. Can;t seem to get the Category thing working though.. any thoughts?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Testing from w.blogger By Roy Osherove April 28, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 28, 2003; technical details may be outdated. Hmm - I like w.blogger - it's pretty cool. Can;t seem to get the Category thing working though.. any thoughts? ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - May 4, 2003 ### [Wow](https://osherove.com/blog/2003/5/4/wow.html) - Apr 28, 2003 ### [Kudos for Scott](https://osherove.com/blog/2003/4/28/kudos-for-scott.html) - Apr 28, 2003 ### [MetaWebLog API rules](https://osherove.com/blog/2003/4/28/metaweblog-api-rules.html) --- title: "MetaWebLog API rules" url: "https://osherove.com/blog/2003/4/28/metaweblog-api-rules.md" canonical: "https://osherove.com/blog/2003/4/28/metaweblog-api-rules.html" published: "2003-04-28T08:54:00" updated: "2003-04-28T08:54:00" tags: [".NetWeblogs Site", "Off Topic"] author: "Roy Osherove" description: "Coolness!! i like blogging from newzcrawler! -- Composed with Newz Crawler 1.4 http://www.newzcrawler.com/" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MetaWebLog API rules By Roy Osherove April 28, 2003 In [.NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 28, 2003; technical details may be outdated. Coolness!! i like blogging from newzcrawler! \-- Composed with Newz Crawler 1.4 http://www.newzcrawler.com/ ## More in .NetWeblogs Site [All posts in .NetWeblogs Site](https://osherove.com/blog/category/netweblogs-site) - Apr 28, 2003 ### [Kudos for Scott](https://osherove.com/blog/2003/4/28/kudos-for-scott.html) - Apr 28, 2003 ### [Testing from w.blogger](https://osherove.com/blog/2003/4/28/testing-from-wblogger.html) --- title: "How to convert your Windows Server 2003 to a..." url: "https://osherove.com/blog/2003/4/27/how-to-convert-your-windows-server-2003-to-a.md" canonical: "https://osherove.com/blog/2003/4/27/how-to-convert-your-windows-server-2003-to-a.html" published: "2003-04-27T20:30:00" updated: "2003-04-27T20:30:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This Page has a very complete guide on tweaking Windows Server 2003 into excactly what you want it to be. Very nice! Thanks to Marc LaFleur for this link." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How to convert your Windows Server 2003 to a... By Roy Osherove April 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 27, 2003; technical details may be outdated. [This Page](http://www.msfn.org/win2k3/) has a very complete guide on tweaking Windows Server 2003 into excactly what you want it to be. Very nice! Thanks to  [**Marc LaFleur**](http://dotnetweblogs.com/MLafleur)  for this link. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 28, 2003 ### [Testing from w.blogger](https://osherove.com/blog/2003/4/28/testing-from-wblogger.html) - Apr 28, 2003 ### [MetaWebLog API rules](https://osherove.com/blog/2003/4/28/metaweblog-api-rules.html) - Apr 27, 2003 ### [Not Your Father's Peer Review](https://osherove.com/blog/2003/4/27/not-your-fathers-peer-review.html) - Apr 27, 2003 ### [Windows Server 2003 Editions Compared](https://osherove.com/blog/2003/4/27/windows-server-2003-editions-compared.html) --- title: "Not Your Father's Peer Review" url: "https://osherove.com/blog/2003/4/27/not-your-fathers-peer-review.md" canonical: "https://osherove.com/blog/2003/4/27/not-your-fathers-peer-review.html" published: "2003-04-27T20:24:00" updated: "2003-04-27T20:24:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Tomorrow we're reviewing our progress with Bill Gates in what's known (and feared/dreaded by some) as a 'BillG Review'. A BillG review usually consists of 2 hours with the top executives from various teams, e.g.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Not Your Father's Peer Review By Roy Osherove April 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 27, 2003; technical details may be outdated. _Tomorrow we're reviewing our progress with Bill Gates in what's known (and feared/dreaded by some) as a 'BillG Review'. A BillG review usually consists of 2 hours with the top executives from various teams, e.g. Developer tools, Windows, and/or SQL Server where you get to present work that they are interested in. Usually this is either new projects or projects that affect many other teams across the company, such as caching._ \[via [Rob](http://dotnetweblogs.com/RHoward/posts/5946.aspx)\] I'd be Shaking and excited all at once. But it seems as though Rob is living my dream job. Speaking of Reviews: When i stood up in front of our 20 developers and introduced a new version of a product my team was working on - one that affected all the other developers - I was pretty excited (and a bit scared). It was a very nice feeling. Now I just have to multiply this a few thousand times and see what it feels like.... nah, I just can't imagine it.. :) Here's a different angle on this: How Is BillG able to critique your work? Is he technically involved so much that he can comment on your area of knowledge to the degree that it actually gives constructive criticism, or is it just for show? I would imagine if he did know what he was talking about to the degree needed for a peer review it would be pretty amazing, since yours is probably not the only review he attends , which forces him to know in-depth the technical stuff that a dedicated team like yours is working on - only for a large number of subjects. Is he really that knowledgeable? Is it all just for show, as if to say , "Hey, I am part of this company and i interact with my developers and I help make important decisions"? Does he just sit there and let all the other program managers do all the talking? I'd really like to know How a man of this magnitude is able to focus on such minutia (minutia  to **him** not to us. when dealing with multi million dollar deals and lawsuits and companies and technologies and marketing  - learning exactly how caching in .Net 2.0 works is minutia ). If he is that much into it - I applaud him (And I keep my fingers crossed for you ;) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 28, 2003 ### [MetaWebLog API rules](https://osherove.com/blog/2003/4/28/metaweblog-api-rules.html) - Apr 27, 2003 ### [How to convert your Windows Server 2003 to a...](https://osherove.com/blog/2003/4/27/how-to-convert-your-windows-server-2003-to-a.html) - Apr 27, 2003 ### [Windows Server 2003 Editions Compared](https://osherove.com/blog/2003/4/27/windows-server-2003-editions-compared.html) - Apr 27, 2003 ### [Document: Threats and Countermeasures for Windows Server 2003](https://osherove.com/blog/2003/4/27/document-threats-and-countermeasures-for-windows-server-2003.html) --- title: "Microsoft's Smart Devices Developer Community" url: "https://osherove.com/blog/2003/4/27/microsofts-smart-devices-developer-community.md" canonical: "https://osherove.com/blog/2003/4/27/microsofts-smart-devices-developer-community.html" published: "2003-04-27T20:03:00" updated: "2003-04-27T20:03:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "Microsoft's Smart Devices Developer Community There hasn't been a lot of information posted about the new Smart Devices Developer Community yet, so I thought I'd see how well the word spreads if I mention it here.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft's Smart Devices Developer Community By Roy Osherove April 27, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 27, 2003; technical details may be outdated. ###  [_![\[permalink\]](https://osherove.com/img/wb/74688a85_headblender.com_images_permalink.png)_](http://headblender.com/joe/blog/archives/microsoft/001138.html#001138)_Microsoft's Smart Devices Developer Community_ _There hasn't been a lot of information posted about the new_ [_Smart Devices Developer Community_](http://smartdevices.microsoftdev.com/) _yet, so I thought I'd see how well the word spreads if I mention it here. There's already a good amount of content in the form of_ [_articles_](http://smartdevices.microsoftdev.com/Learn/Articles/default.aspx)_,_ [_code samples_](http://smartdevices.microsoftdev.com/Learn/Code+Samples/default.aspx)_,_ [_multimedia_](http://smartdevices.microsoftdev.com/Learn/Multimedia/default.aspx)_, and_ [_FAQs_](http://smartdevices.microsoftdev.com/Learn/FAQ/default.aspx) _available. The URL is:_ > **[_http://smartdevices.microsoftdev.com/_](http://smartdevices.microsoftdev.com/)** _We already have plenty of new articles and other content on its way. In the very near future, there will be a whole collection of new online forums available, where you can ask questions about Smart Device development and communicate with Microsoft MVPs and people from the product teams. The community covers the whole range of smart device development -- native code, managed code and the Compact Framework, VS.NET 2003 device programmability, SQL CE, and everything in between. (I've heard a rumor that RSS feeds similar to those_ [_offered by MSDN_](http://msdn.microsoft.com/aboutmsdn/rss.asp) _are also in the works.)_ _The community site is definitely worth checking out -- register yourself there today!_ \[via [Joe](http://headblender.com/joe/blog/)\] Coolness. This is an area i'd like to explore more in depth. ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 29, 2003 ### [Enterprise Instrumentation Framework Released](https://osherove.com/blog/2003/4/29/enterprise-instrumentation-framework-released.html) - Apr 29, 2003 ### [Build Your Own Research Library with Office 2003 and the Google Web Service API](https://osherove.com/blog/2003/4/29/build-your-own-research-library-with-office-2003-and-the-goo.html) - Apr 16, 2003 ### [CLR tips gold mine detected](https://osherove.com/blog/2003/4/16/clr-tips-gold-mine-detected.html) - Apr 11, 2003 ### [ASP.NET Encoding Tip from Scott Hanselman](https://osherove.com/blog/2003/4/11/aspnet-encoding-tip-from-scott-hanselman.html) --- title: "More Debugger Problems: aspnet_regiis does not work on Windows 2003 Server" url: "https://osherove.com/blog/2003/4/27/more-debugger-problems-aspnet_regiis-does-not-work-on-window.md" canonical: "https://osherove.com/blog/2003/4/27/more-debugger-problems-aspnet_regiis-does-not-work-on-window.html" published: "2003-04-27T19:44:00" updated: "2003-04-27T19:44:00" tags: [".Net Original"] author: "Roy Osherove" description: "I've added the following solution to the Resolving Debugger Problems Article: aspnet_regiis does not work on windows 2003 server: Solution: \"you can work around it by setting the identity of the application pool (app…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More Debugger Problems: aspnet\_regiis does not work on Windows 2003 Server By Roy Osherove April 27, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 27, 2003; technical details may be outdated. I've added the following solution to the [Resolving Debugger Problems](http://dotnetweblogs.com/Rosherove/Story/3695.aspx) Article: **aspnet\_regiis does not work on windows 2003 server:** **Solution:** "you can work around it by setting the identity of the application pool (app pools rock), and this might be a much better overall solution for W2K3 anyways." \[via [Early&Adopter](http://radio.weblogs.com/0117167/2003/04/23.html#a259)\] If you have stuff you'd like to contribute to this article - Please email me. From the referrer list it seems it is quite popular so you will actually be helping people :) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 30, 2003 ### [Advanced Dataset Helper Classes](https://osherove.com/blog/2003/4/30/advanced-dataset-helper-classes.html) - Apr 28, 2003 ### [ASP.NET Authentication Question + Answer](https://osherove.com/blog/2003/4/28/aspnet-authentication-question-answer.html) - Apr 27, 2003 ### [Regular Expressions And Log Parsing](https://osherove.com/blog/2003/4/27/regular-expressions-and-log-parsing.html) - Apr 16, 2003 ### [File I/O Support In Transactions](https://osherove.com/blog/2003/4/16/file-io-support-in-transactions.html) --- title: "Windows Server 2003 Editions Compared" url: "https://osherove.com/blog/2003/4/27/windows-server-2003-editions-compared.md" canonical: "https://osherove.com/blog/2003/4/27/windows-server-2003-editions-compared.html" published: "2003-04-27T18:52:00" updated: "2003-04-27T18:52:00" tags: ["Off Topic"] author: "Roy Osherove" description: "This Page contains a very good table of differences between Windows 2003 Server editions. Very nice! I was wondering about some of this stuff.. Thanks to Early&Adopter for the link." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Windows Server 2003 Editions Compared By Roy Osherove April 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 27, 2003; technical details may be outdated. [This Page](http://www.winsupersite.com/showcase/winserver2003_editions.asp) contains a very good table of differences between Windows 2003 Server editions. Very nice! I was wondering about some of this stuff.. Thanks to [Early&Adopter](http://radio.weblogs.com/0117167/2003/04/23.html#a260) for the link. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 27, 2003 ### [How to convert your Windows Server 2003 to a...](https://osherove.com/blog/2003/4/27/how-to-convert-your-windows-server-2003-to-a.html) - Apr 27, 2003 ### [Not Your Father's Peer Review](https://osherove.com/blog/2003/4/27/not-your-fathers-peer-review.html) - Apr 27, 2003 ### [Document: Threats and Countermeasures for Windows Server 2003](https://osherove.com/blog/2003/4/27/document-threats-and-countermeasures-for-windows-server-2003.html) - Apr 27, 2003 ### [Envy - Cursed be thy name!](https://osherove.com/blog/2003/4/27/envy-cursed-be-thy-name.html) --- title: "Document: Threats and Countermeasures for Windows Server 2003" url: "https://osherove.com/blog/2003/4/27/document-threats-and-countermeasures-for-windows-server-2003.md" canonical: "https://osherove.com/blog/2003/4/27/document-threats-and-countermeasures-for-windows-server-2003.html" published: "2003-04-27T18:38:00" updated: "2003-04-27T18:38:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Microsoft just release a killer doc on Threats and Countermeasures for Windows Server 2003 . [via Early&Adopter ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Document: Threats and Countermeasures for Windows Server 2003 By Roy Osherove April 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 27, 2003; technical details may be outdated. _Microsoft just release a killer doc on_ [_Threats and Countermeasures for Windows Server 2003_](http://www.microsoft.com/downloads/details.aspx?familyid=1b6acf93-147a-4481-9346-f93a4081eea8&displaylang=en#filelist)_._ \[via [Early&Adopter](http://radio.weblogs.com/0117167/2003/04/25.html#a265)\] ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 27, 2003 ### [Not Your Father's Peer Review](https://osherove.com/blog/2003/4/27/not-your-fathers-peer-review.html) - Apr 27, 2003 ### [Windows Server 2003 Editions Compared](https://osherove.com/blog/2003/4/27/windows-server-2003-editions-compared.html) - Apr 27, 2003 ### [Envy - Cursed be thy name!](https://osherove.com/blog/2003/4/27/envy-cursed-be-thy-name.html) - Apr 27, 2003 ### [Windows Server 2003 Rocks](https://osherove.com/blog/2003/4/27/windows-server-2003-rocks.html) --- title: "Envy - Cursed be thy name!" url: "https://osherove.com/blog/2003/4/27/envy-cursed-be-thy-name.md" canonical: "https://osherove.com/blog/2003/4/27/envy-cursed-be-thy-name.html" published: "2003-04-27T18:23:00" updated: "2003-04-27T18:23:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Is it okay to envy Chris Sells on his post ? It should be. Would anyone not want to work for a company that cherishes its employees as much as MSFT? Hell - I'd work there as QA just to get started (Although i hear…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Envy - Cursed be thy name! By Roy Osherove April 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 27, 2003; technical details may be outdated. Is it okay to envy [Chris Sells on his post](http://www.sellsbrothers.com/spout/#myFirstWeekAtMs)? It should be. Would anyone **not** want to work for a company that cherishes its employees as much as MSFT? Hell - I'd work there as QA just to get started (Although i hear QA'ing there is also pretty darn cool too!) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 27, 2003 ### [Windows Server 2003 Editions Compared](https://osherove.com/blog/2003/4/27/windows-server-2003-editions-compared.html) - Apr 27, 2003 ### [Document: Threats and Countermeasures for Windows Server 2003](https://osherove.com/blog/2003/4/27/document-threats-and-countermeasures-for-windows-server-2003.html) - Apr 27, 2003 ### [Windows Server 2003 Rocks](https://osherove.com/blog/2003/4/27/windows-server-2003-rocks.html) - Apr 27, 2003 ### [I Got It!](https://osherove.com/blog/2003/4/27/i-got-it.html) --- title: "Regular Expressions And Log Parsing" url: "https://osherove.com/blog/2003/4/27/regular-expressions-and-log-parsing.md" canonical: "https://osherove.com/blog/2003/4/27/regular-expressions-and-log-parsing.html" published: "2003-04-27T18:12:00" updated: "2003-04-27T18:12:00" tags: [".Net Original"] author: "Roy Osherove" description: "My company needs a small utility to parse log files generated by some of the speech engines we are using in our products. They generate old-style ASCII log files that are easy to read but cumbersome to parse. I started…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Regular Expressions And Log Parsing By Roy Osherove April 27, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 27, 2003; technical details may be outdated. My company needs a small utility to parse log files generated by some of the speech engines we are using in our products. They generate old-style ASCII log files that are easy to read but cumbersome to parse. I started playing around with regular expressions ,  and found a treasure! Boy was i missing out on something really powerful or what? Using Regex I was able to create a small LogToXML converter class in just under 2 hours (with almost no prior experience with regular expressions before!). it is amazing. I'm currently trying to write this whole experience out as an article to CodeProject. Hopefully out in the next couple of days. Using [Expresso](http://www12.brinkster.com/ultrapico/Expresso.htm) really teaches you stuff about the possibilities just by poking around on all the optin tabs. The thing i love about this the most is that i keep finding out cooler stuff about Regex. For instance - I can create named groups to use for my parsing. As an example i'll show you a line from my Babylon -Pro translator and Thesaurus Log file: It contains this line: **26/4/03 23:43:52 4.0.2.3:Roy:3004984200 - warning 998: Error opening file 'C:\\Program Files\\Babylon\\ocr\_data' "rb" - (Path not found)** using this (kinda scary) regular expression, i can parse this into names fields and go over them using the Match Object provided by the .Net Framework: **(?<Date>(?<Month>\\d{1,2})/(?<Day>\\d{1,2})/(?<Year>(?:\\d{4}|\\d{2}))(?x))\\s(?<Time>(?<Hour>\\d{1,2}):(?<Minute>\\d{1,2}):(?<Seconds>\\d{1,2}))\\s(?<Version>\\d.\\d.\\d.\\d):(?<User>\\w\*):(?<SomeNumber>\\d\*)\\s-\\s(?<StatusLevel>\\w\*)\\s(?<MessageID>\\d\*):\\s(?<Message>.\*)** What i get in Expresso is hierarchical Tree view of the results for this line. \- 26/4/03 23:43:52 4.0.2.3:Roy:3004984200 - warning 998: Error opening file 'C:\\Program Files\\Babylon\\ocr\_data' "rb" - (Path not found)         -Date\[26/4/03\]         -Day\[26\]         -Month\[4\]         -Year\[03\]         -Time\[23:43:52\]         -Hour\[23\]         -Minute\[43\]         -Seconds\[52\]         -Version\[4.0.2.3\]         -User\[Roy\]         -SomeNumber\[3004984200\]         -StatusLevel\[warning\]         -MessageID\[998\]         -\[Message\[Error opening file 'C:\\Program Files\\Babylon\\ocr\_data' "rb" - (Path not found)\] Isn't that beautiful? The possibilities after transforming this to XML are endless: \- Use XPath to query the XML - allowing your user to execute queries on your log file \- Use XSLT to create an HTML report of the Log file \- Load this into a dataset ,make it write it's schema and voila - you have a typed dataset of the log file. You can execute queries on it (although i havnt figured out a way yet to execute global queries on a dataset with some tables. the only select i can do is using the DataTable.Select Function - which only allows me to put in a filter from it. Is there no other way?) \-many many more.... Did i mention that to create the XML file while parsing I use the XMLTextWrite Class? Yet another cool little class! :) p.s: Nice collection of Regular expression links lies [here](http://dotnetweblogs.com/Jtobler/posts/2637.aspx). ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 28, 2003 ### [ASP.NET Authentication Question + Answer](https://osherove.com/blog/2003/4/28/aspnet-authentication-question-answer.html) - Apr 27, 2003 ### [More Debugger Problems: aspnet\_regiis does not work on Windows 2003 Server](https://osherove.com/blog/2003/4/27/more-debugger-problems-aspnet_regiis-does-not-work-on-window.html) - Apr 16, 2003 ### [File I/O Support In Transactions](https://osherove.com/blog/2003/4/16/file-io-support-in-transactions.html) - Apr 15, 2003 ### [Debugging Problem](https://osherove.com/blog/2003/4/15/debugging-problem.html) --- title: "Windows Server 2003 Rocks" url: "https://osherove.com/blog/2003/4/27/windows-server-2003-rocks.md" canonical: "https://osherove.com/blog/2003/4/27/windows-server-2003-rocks.html" published: "2003-04-27T17:48:00" updated: "2003-04-27T17:48:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I've installed on my new machine Windows Server 2003 Enterprise Edition. It totally rocks. The interface is great and it runs faster then XP! I can't seem to get my Direct3D on the dxdiag console to work though...(so…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Windows Server 2003 Rocks By Roy Osherove April 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 27, 2003; technical details may be outdated. I've installed on my new machine Windows Server 2003 Enterprise Edition. It totally rocks. The interface is great and it runs faster then XP! I can't seem to get my Direct3D on the dxdiag console to work though...(so much for unreal 2003!) You can tell they had some major work done on designing the usability interface. Having a "roles" wizard for the server totally makes sense. It makes you wonder why hasnt this been done before(or has it??) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 27, 2003 ### [Document: Threats and Countermeasures for Windows Server 2003](https://osherove.com/blog/2003/4/27/document-threats-and-countermeasures-for-windows-server-2003.html) - Apr 27, 2003 ### [Envy - Cursed be thy name!](https://osherove.com/blog/2003/4/27/envy-cursed-be-thy-name.html) - Apr 27, 2003 ### [I Got It!](https://osherove.com/blog/2003/4/27/i-got-it.html) - Apr 27, 2003 ### [Where was I?](https://osherove.com/blog/2003/4/27/where-was-i.html) --- title: "I Got It!" url: "https://osherove.com/blog/2003/4/27/i-got-it.md" canonical: "https://osherove.com/blog/2003/4/27/i-got-it.html" published: "2003-04-27T16:39:00" updated: "2003-04-27T16:39:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Woohoo! Guess what I found in my mailbox today? I'll give you a hint: Thanks Keith :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I Got It! By Roy Osherove April 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 27, 2003; technical details may be outdated. Woohoo! Guess what I found in my mailbox today? I'll give you a hint: ![](https://osherove.com/img/ext/www.keithpleas.com_dawgs.jpg) Thanks [Keith](http://dotnetweblogs.com/kpleas/) :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 27, 2003 ### [Envy - Cursed be thy name!](https://osherove.com/blog/2003/4/27/envy-cursed-be-thy-name.html) - Apr 27, 2003 ### [Windows Server 2003 Rocks](https://osherove.com/blog/2003/4/27/windows-server-2003-rocks.html) - Apr 27, 2003 ### [Where was I?](https://osherove.com/blog/2003/4/27/where-was-i.html) - Apr 17, 2003 ### [Accented Blogging](https://osherove.com/blog/2003/4/17/accented-blogging.html) --- title: "Where was I?" url: "https://osherove.com/blog/2003/4/27/where-was-i.md" canonical: "https://osherove.com/blog/2003/4/27/where-was-i.html" published: "2003-04-27T14:06:00" updated: "2003-04-27T14:06:00" tags: ["Off Topic"] author: "Roy Osherove" description: "OK. Havn't been here a while due to some pressure at work. Hopefully i'll have more time now." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Where was I? By Roy Osherove April 27, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 27, 2003; technical details may be outdated. OK. Havn't been here a while due to some pressure at work. Hopefully i'll have more time now. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 27, 2003 ### [Windows Server 2003 Rocks](https://osherove.com/blog/2003/4/27/windows-server-2003-rocks.html) - Apr 27, 2003 ### [I Got It!](https://osherove.com/blog/2003/4/27/i-got-it.html) - Apr 17, 2003 ### [Accented Blogging](https://osherove.com/blog/2003/4/17/accented-blogging.html) - Apr 17, 2003 ### [Mean Machine](https://osherove.com/blog/2003/4/17/mean-machine.html) --- title: "Accented Blogging" url: "https://osherove.com/blog/2003/4/17/accented-blogging.md" canonical: "https://osherove.com/blog/2003/4/17/accented-blogging.html" published: "2003-04-17T21:19:00" updated: "2003-04-17T21:19:00" tags: ["Off Topic"] author: "Roy Osherove" description: "I was having this thought as i was going through some blog. As I was reading it, in my head i kept picturing the guy that was writing this, speaking out the words i was reading. He Had an amarican accent. Actually,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Accented Blogging By Roy Osherove April 17, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 17, 2003; technical details may be outdated. I was having this thought as i was going through some blog. As I was reading it, in my head i kept picturing the guy that was writing this, speaking out the words i was reading. He Had an amarican accent. Actually, after some thought, All the blogs and articles i read are precieved as American accented in my head. why? because that's what i'm used to. I stopped to think what if the guy actually has a british accent, or Russian? The whole article or post would be a different experience and would be read differently (regardless of the content). Having the right accent to go along with the words makes it all the more personal when reading the blog. If i go to a blog and there is a "**Accent: British**" I'd be able to read it more as the writer intended . That's why on some blogs you see a "Currently playing" note and "current mood". it makes it more personal. Since this area of blogs (.net) is more of a preofessional nature, i don;t exepct to see "mood" and "playing" entries anytime soon, but having an accent to go with the words actually would be nice. What do you think? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 27, 2003 ### [I Got It!](https://osherove.com/blog/2003/4/27/i-got-it.html) - Apr 27, 2003 ### [Where was I?](https://osherove.com/blog/2003/4/27/where-was-i.html) - Apr 17, 2003 ### [Mean Machine](https://osherove.com/blog/2003/4/17/mean-machine.html) - Apr 15, 2003 ### [Categories](https://osherove.com/blog/2003/4/15/categories.html) --- title: "Mean Machine" url: "https://osherove.com/blog/2003/4/17/mean-machine.md" canonical: "https://osherove.com/blog/2003/4/17/mean-machine.html" published: "2003-04-17T21:04:00" updated: "2003-04-17T21:04:00" tags: ["Off Topic"] author: "Roy Osherove" description: "It's been a couple of days without blogging. I got my new machine into the house and was waaay to busy at work to install everything properly and moving stuff from the old machine. It's a beauty : 2.2 AMD Athelon XP…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Mean Machine By Roy Osherove April 17, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 17, 2003; technical details may be outdated. It's been a couple of days without blogging. I got  my new machine into the house and was waaay to busy at work to install everything properly and moving stuff from the old machine. **It's a beauty** : 2.2 AMD Athelon XP with 512 MB RAM, DVD and CDR  And an NVidia GForce 64 Megs with TV OUT just for the heck of it. So after a hefty day of putting all the stuff i need in (Everett runs like a babe!) i'll go sleep a little and be back blogging again in the morning. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 27, 2003 ### [Where was I?](https://osherove.com/blog/2003/4/27/where-was-i.html) - Apr 17, 2003 ### [Accented Blogging](https://osherove.com/blog/2003/4/17/accented-blogging.html) - Apr 15, 2003 ### [Categories](https://osherove.com/blog/2003/4/15/categories.html) - Apr 15, 2003 ### [Need a bigger wallet (+stuffing)](https://osherove.com/blog/2003/4/15/need-a-bigger-wallet-stuffing.html) --- title: "Why do I state my accent?" url: "https://osherove.com/blog/2003/4/17/why-do-i-state-my-accent.md" canonical: "https://osherove.com/blog/2003/4/17/why-do-i-state-my-accent.html" published: "2003-04-17T11:38:00" updated: "2003-04-17T11:38:00" tags: [] author: "Roy Osherove" description: "I was having this thought as i was going through some blog. As I was reading it, in my head i kept picturing the guy that was writing this, speaking out the words i was reading. He Had an amarican accent. Actually,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why do I state my accent? By Roy Osherove April 17, 2003 **Historical article** · Originally published April 17, 2003; technical details may be outdated. I was having this thought as i was going through some blog. As I was reading it, in my head i kept picturing the guy that was writing this, speaking out the words i was reading. He Had an amarican accent. Actually, after some thought, All the blogs and articles i read are precieved as American accented in my head. why? because that's what i'm used to. I stopped to think what if the guy actually has a british accent, or Russian? The whole article or post would be a different experience and would be read differently (regardless of the content). Having the right accent to go along with the words makes it all the more personal when reading the blog. If i go to a blog and there is a "**Accent: British**" I'd be able to read it more as the writer intended . That's why on some blogs you see a "Currently playing" note and "current mood". it makes it more personal. Since this area of blogs (.net) is more of a preofessional nature, i don;t exepct to see "mood" and "playing" entries anytime soon, but having an accent to go with the words actually would be nice. That's why I highlight my accent on the blog title, If you really must know ;) --- title: "CLR tips gold mine detected" url: "https://osherove.com/blog/2003/4/16/clr-tips-gold-mine-detected.md" canonical: "https://osherove.com/blog/2003/4/16/clr-tips-gold-mine-detected.html" published: "2003-04-16T04:55:00" updated: "2003-04-16T04:55:00" tags: [".Net Quotations"] author: "Roy Osherove" description: "I just saw Chris Brumme's blog . Wow! Judging by the timestamps on the entries, he's either got a voice interface for dictating posts into his blog or he was sitting on a gold mine of CLR tips waiting for an outlet. I'm…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CLR tips gold mine detected By Roy Osherove April 16, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations) **Historical article** · Originally published April 16, 2003; technical details may be outdated. _I just saw [Chris Brumme's blog](http://blogs.gotdotnet.com/cbrumme/). Wow! Judging by the timestamps on the entries, he's either got a voice interface for dictating posts into his blog or he was sitting on a gold mine of CLR tips waiting for an outlet. I'm guessing the latter :-)_ Posted By [Yasser Shohoud](http://dotnetweblogs.com/Yassers/) at 4/15/2003 9:47 PM Indeed! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 29, 2003 ### [Build Your Own Research Library with Office 2003 and the Google Web Service API](https://osherove.com/blog/2003/4/29/build-your-own-research-library-with-office-2003-and-the-goo.html) - Apr 27, 2003 ### [Microsoft's Smart Devices Developer Community](https://osherove.com/blog/2003/4/27/microsofts-smart-devices-developer-community.html) - Apr 11, 2003 ### [ASP.NET Encoding Tip from Scott Hanselman](https://osherove.com/blog/2003/4/11/aspnet-encoding-tip-from-scott-hanselman.html) - Mar 9, 2003 ### [A cool macro to ease your NUnit boilerplate woes](https://osherove.com/blog/2003/3/9/a-cool-macro-to-ease-your-nunit-boilerplate-woes.html) --- title: "File I/O Support In Transactions" url: "https://osherove.com/blog/2003/4/16/file-io-support-in-transactions.md" canonical: "https://osherove.com/blog/2003/4/16/file-io-support-in-transactions.html" published: "2003-04-16T03:52:00" updated: "2003-04-16T03:52:00" tags: [".Net Original"] author: "Roy Osherove" description: "I was recently at a lecture concerning .Net and COM+. Wow. COM+ is really powerful. I never got the chance to work with it on any of the projects I have created, but I did play with it here and there. I never knew there…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # File I/O Support In Transactions By Roy Osherove April 16, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 16, 2003; technical details may be outdated. I was recently at a lecture concerning .Net and COM+. Wow. COM+ is really powerful. I never got the chance to work with it on any of the projects I have created, but I did play with it here and there. I never knew there was so much it provided, though. I only knew about connection pooling and object pooling, and Distributed transaction support. One of the things mentioned with regards to transaction processing was this: Suppose you have a set of actions which also needs to update an external file on success. Encompassing this in a transaction is pretty simple, until we come to the file processing. this cannot be encompassed with transactions since it's not a database related action. However, COM+ support what is called "[Compensating Resource Manager](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/pgservices_crm_9yr6.asp)". this allows you to basically add your own support for the transaction, and perform custom actions that support transactions. This is not trivial, however and not very well known. This whole concept brings to mind something I have heard about the upcoming version of "Yukon". This version is supposed to be integrated with the file system itself . Now, The next logical step would be to ask "Will transactions now support file system operations as well - natively - , now that there is generic support for File System types?" My guess is that its pretty reasonable, but who do I ask? ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 27, 2003 ### [More Debugger Problems: aspnet\_regiis does not work on Windows 2003 Server](https://osherove.com/blog/2003/4/27/more-debugger-problems-aspnet_regiis-does-not-work-on-window.html) - Apr 27, 2003 ### [Regular Expressions And Log Parsing](https://osherove.com/blog/2003/4/27/regular-expressions-and-log-parsing.html) - Apr 15, 2003 ### [Debugging Problem](https://osherove.com/blog/2003/4/15/debugging-problem.html) - Apr 11, 2003 ### [Typed Datasets - Can You Get Much Cooler?](https://osherove.com/blog/2003/4/11/typed-datasets-can-you-get-much-cooler.html) --- title: "Categories" url: "https://osherove.com/blog/2003/4/15/categories.md" canonical: "https://osherove.com/blog/2003/4/15/categories.html" published: "2003-04-15T05:17:00" updated: "2003-04-15T05:17:00" tags: ["Off Topic"] author: "Roy Osherove" description: "OK. I've decided to create categories for my posts. Hopefully this should help out abit in ScottW's Great cause to help bring down the Noise Ratio. I'll probably play around with the categoy names for a while and add…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Categories By Roy Osherove April 15, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 15, 2003; technical details may be outdated. OK. I've decided to create categories for my posts. Hopefully this should help out abit in ScottW's Great cause to help bring down the Noise Ratio. I'll probably play around with the categoy names for a while and add some new ones, but i guess i'll have 3 basic ones: \- Original content about .Net \- Quoted content about .Net \- Misc content ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 17, 2003 ### [Accented Blogging](https://osherove.com/blog/2003/4/17/accented-blogging.html) - Apr 17, 2003 ### [Mean Machine](https://osherove.com/blog/2003/4/17/mean-machine.html) - Apr 15, 2003 ### [Need a bigger wallet (+stuffing)](https://osherove.com/blog/2003/4/15/need-a-bigger-wallet-stuffing.html) - Apr 14, 2003 ### [Enter the Matrix](https://osherove.com/blog/2003/4/14/enter-the-matrix.html) --- title: "Debugging Problem" url: "https://osherove.com/blog/2003/4/15/debugging-problem.md" canonical: "https://osherove.com/blog/2003/4/15/debugging-problem.html" published: "2003-04-15T04:53:00" updated: "2003-04-15T04:53:00" tags: [".Net Original"] author: "Roy Osherove" description: "I got this comment about debugging Web Services: \" I am trying to debug a C# application and when I step into a web serivce all of the breakpoints stop working. Can you help? Scott \" I can't. can you? I'll post the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Debugging Problem By Roy Osherove April 15, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 15, 2003; technical details may be outdated. I got this comment about debugging Web Services: "_I am trying to debug a C# application and when I step into a web serivce all of the breakpoints stop working. Can you help? Scott_ " I can't. can you? I'll post the answer as an addition to the [**Resolving debugger problems**](http://dotnetweblogs.com/Rosherove/Story/3695.aspx) Article. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 27, 2003 ### [Regular Expressions And Log Parsing](https://osherove.com/blog/2003/4/27/regular-expressions-and-log-parsing.html) - Apr 16, 2003 ### [File I/O Support In Transactions](https://osherove.com/blog/2003/4/16/file-io-support-in-transactions.html) - Apr 11, 2003 ### [Typed Datasets - Can You Get Much Cooler?](https://osherove.com/blog/2003/4/11/typed-datasets-can-you-get-much-cooler.html) - Apr 11, 2003 ### [Resolving Debugger Problems in VS.NET](https://osherove.com/blog/2003/4/11/resolving-debugger-problems-in-vsnet.html) --- title: "Need a bigger wallet (+stuffing)" url: "https://osherove.com/blog/2003/4/15/need-a-bigger-wallet-stuffing.md" canonical: "https://osherove.com/blog/2003/4/15/need-a-bigger-wallet-stuffing.html" published: "2003-04-15T04:49:00" updated: "2003-04-15T04:49:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Man,I need more money. My wish list is just gettting bigger and bigger! Any more suggestions to it will be welcome!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Need a bigger wallet (+stuffing) By Roy Osherove April 15, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 15, 2003; technical details may be outdated. Man,I need more money. My [wish list](https://osherove.com/blog/2003/4/15/www.amazon.com/o/registry/11BSEKXP1ENS) is just gettting bigger and bigger! Any more suggestions to it will be welcome! ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 17, 2003 ### [Mean Machine](https://osherove.com/blog/2003/4/17/mean-machine.html) - Apr 15, 2003 ### [Categories](https://osherove.com/blog/2003/4/15/categories.html) - Apr 14, 2003 ### [Enter the Matrix](https://osherove.com/blog/2003/4/14/enter-the-matrix.html) - Apr 12, 2003 ### [DNWL future continued](https://osherove.com/blog/2003/4/12/dnwl-future-continued.html) --- title: "Enter the Matrix" url: "https://osherove.com/blog/2003/4/14/enter-the-matrix.md" canonical: "https://osherove.com/blog/2003/4/14/enter-the-matrix.html" published: "2003-04-14T06:56:00" updated: "2003-04-14T06:56:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Check out the review and the making of the Matrix Reloaded Special effects. http://www.wired.com/wired/archive/11.05/matrix2_pr.html" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Enter the Matrix By Roy Osherove April 14, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 14, 2003; technical details may be outdated. Check out the review and the making of the Matrix Reloaded Special effects. [http://www.wired.com/wired/archive/11.05/matrix2\_pr.html](http://www.wired.com/wired/archive/11.05/matrix2_pr.html) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 15, 2003 ### [Categories](https://osherove.com/blog/2003/4/15/categories.html) - Apr 15, 2003 ### [Need a bigger wallet (+stuffing)](https://osherove.com/blog/2003/4/15/need-a-bigger-wallet-stuffing.html) - Apr 12, 2003 ### [DNWL future continued](https://osherove.com/blog/2003/4/12/dnwl-future-continued.html) - Apr 11, 2003 ### [Tech Interview Puzzle Solutions](https://osherove.com/blog/2003/4/11/tech-interview-puzzle-solutions.html) --- title: "Article: Introduction to Typed Datasets" url: "https://osherove.com/blog/2003/4/12/article-introduction-to-typed-datasets.md" canonical: "https://osherove.com/blog/2003/4/12/article-introduction-to-typed-datasets.html" published: "2003-04-12T15:29:00" updated: "2003-04-12T15:29:00" tags: [] author: "Roy Osherove" description: "I put my post on Introduction to Typed Datasets as a story . Thought it can be of help." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Article: Introduction to Typed Datasets By Roy Osherove April 12, 2003 **Historical article** · Originally published April 12, 2003; technical details may be outdated. I put my post on [Introduction to Typed Datasets](http://dotnetweblogs.com/Rosherove/Story/5517.aspx) as a story . Thought it can be of help. --- title: "DNWL future continued" url: "https://osherove.com/blog/2003/4/12/dnwl-future-continued.md" canonical: "https://osherove.com/blog/2003/4/12/dnwl-future-continued.html" published: "2003-04-12T13:05:00" updated: "2003-04-12T13:05:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Scott cleared up some stuff about his last post regarding the future of DNWL. I agree with everything he says in there. I still think you should read my worries and considerations in an earlier post here . As before - I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # DNWL future continued By Roy Osherove April 12, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 12, 2003; technical details may be outdated. Scott [cleared up some stuff](http://aspnetweblog.com/posts/5492.aspx) about his [last post](http://aspnetweblog.com/posts/5476.aspx) regarding the future of DNWL. I agree with everything he says in there. I still think you should read my worries and considerations in an earlier post [here](http://dotnetweblogs.com/Rosherove/posts/5481.aspx). As before - I volunteer myself to help with anything you'll need :) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 15, 2003 ### [Need a bigger wallet (+stuffing)](https://osherove.com/blog/2003/4/15/need-a-bigger-wallet-stuffing.html) - Apr 14, 2003 ### [Enter the Matrix](https://osherove.com/blog/2003/4/14/enter-the-matrix.html) - Apr 11, 2003 ### [Tech Interview Puzzle Solutions](https://osherove.com/blog/2003/4/11/tech-interview-puzzle-solutions.html) - Apr 11, 2003 ### [.NetWeblogs home page ratings](https://osherove.com/blog/2003/4/11/netweblogs-home-page-ratings.html) --- title: "Introduction to Typed Datasets" url: "https://osherove.com/blog/2003/4/12/introduction-to-typed-datasets.md" canonical: "https://osherove.com/blog/2003/4/12/introduction-to-typed-datasets.html" published: "2003-04-12T05:43:00" updated: "2003-04-12T05:43:00" tags: ["Typed Datasets"] author: "Roy Osherove" description: "Note: This is part 1 of 3 articles on this subject: Part 2 - Typed Datasets Are Not Always The Answer Part 3 - Oops! Typed Datasets ARE scalable! I'm currently developing a small winforms application for my company.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Introduction to Typed Datasets By Roy Osherove April 12, 2003 In [Typed Datasets](https://osherove.com/blog/category/typed-datasets) **Historical article** · Originally published April 12, 2003; technical details may be outdated. _Note: This is part 1 of 3 articles on this subject:_ - _Part 2 -_ [Typed Datasets Are Not Always The Answer](http://dotnetweblogs.com/rosherove/story/6434.aspx) - Part 3 - [Oops! Typed Datasets ARE scalable!](http://dotnetweblogs.com/rosherove/story/6489.aspx) I'm currently developing a small winforms application for my company. It's really nothing fancy - just a data entry system connected to an Access database. In the old days, using VB6 i would have the following options as to how to implement this: 1) Create a 3-tiered application with an always-connected data layer, Business objects to handle logical Add/remove/update/Select functionality and properties, and a UI that uses the business layer 2) Create a 2-tiered application with an always-connected data layer, and a UI that uses the data layer directly and has lots of plumbing code when handling user actions 3) Create a Fully Databaound UI for the database   **Option No. 1** Has the benefit of easily changing the way the application handles data logically without too much messing around, and scaling up is easy. Its main caveats are: \- Longer time to implement then the other 2 \- Adding functionality entails adding the functionality in 3 different layers, meaning more overhead and more chances of errors \- It all seems very redundant for an application this small **Option No. 2** Has the benefit of less Time-To-Market coupled with, although less robust, some of the merits of option No.1. But it still requires writing plumbing code and data access code. **Option No. 3** Has the benefit of speed - but that's about it. No scalability, Changing functionality is a bitch in some cases and don't get me started on the level of UI controls that use Data binding (excluding the expensive well-known ones).Plus - It's much harder to override default binding behavior or change minutia - stuff that really matter to every user. Enter ADO.NET The introduction of the Dataset Object now allows me to change the way I design N-Tier applications without having to worry too much about the amount of boiler plate code for in-memory data editing. Hell, it was designed to be passed through logical and phisycal tiers - providing disconnected data and it's schema! pure (geeky) love man. Enter the Typed DataSet To me- typed datasets bring wealth of usability with minimal expense. It combines the ability of in-memory databases coupled with object oriented and IntelliSens'ed approached. It is arguable just how effective it is in enterprise systems (A whole different discussion) but its value is immense when it comes to create small applications like the one I mention above. I just dragged and dropped Tables from the Server Explorer onto a form or a component class - and start using data adapters to generate a typed data set. What I get in return to this 10 minute process is a full schema of the database I'm to work with -with classes that match every table, column and relationship in it. Everything is typed and in memory. Amazing. For example - I have 2 tables Named Messages and Users which are connected by UserID and MessageID (Each user can send multiple messages).A user has ID and Name  and a Message as a UserID And text . What will be generated from the schema will be a class named by me ("MsgDataSet") which has lots of properties, but 2 of them will be MsgDataSet.Messages (of type MessagesTable)  and MsgDataSet.Users (of type UsersTable). UsersTable class will containn lots of useful functions, but it is mainly comprised os UsersRow class objects. Each UsersRow object will also have properties to reflect the Table columns. So UsersRow will have an ID property of type int and a Name proeprty of type string. To Delete a User Row i'll have a UsersRow.Delete() Function. To Add a UsersRow I'll have a UsersTable.AddUsersRow() Function (with several overloads to allow adding using only property values of a new user). One of the best parts is that if a I have a UsersRow object and i want to get all the messages for this User - I only need to write "UsersRow.GetMessageRow() and I'll get All the Messages in Messages Table owned by the UserID in question. No Selects, no nothing. Pure Generated Code - automatically! The Same Goes for a MessagesRow Object. I can call its "GetUsersRow() function to retrive its parent Row object. All this is done using Relations that were visually defined in the Dataset schema designer, which comes with .Net. This is only a tip of the iceberg. You can do Select on Tables object, Create View of the data (just like Views in SQL server) and do filtering, sorting -whatever you like.  More coolness - If you design the schema file generated (XSD file which is pure xml but has a visual designer), you can have the Table class guard you from database issues such as preserving primary keys - duplicates - default values of records - all in memory of course. Now you can work with the data in memory. change, add, update. When you need to update the real database - just use the appropriate data adapter to Update(Dataset). If you have conflicts with the database you can see all the changed rows and accept or reject changes and re-update. **Conclusion:** The Typed Dataset that can be generated by VS.NET allows the developer to use an object oriented approach that simplifies data in-memory data management, and allows transferring logical data along with it's schema through physical and logical layers. It also allows working in a disconnected manner much more easily. On the other hand - it is fully customizable and manageable, allowing the developer to tinker with the data with a level of abstraction as deep or as shallow as desirable. **See Related Articles:** [Typed Datasets Are Not Always The Answer](http://dotnetweblogs.com/rosherove/story/6434.aspx) [Oops! Typed Datasets ARE scalable!](http://dotnetweblogs.com/rosherove/story/6489.aspx) Read more on typed datasets: **DotNetJunkies**: [Using Typed Datasets](http://www.dotnetjunkies.com/tutorials.aspx?tutorialid=301) - Very in-depth article **MSDN Intro**: [Creating Typed Datasets with the Component Designer](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbtskcreatingadonetdatasets.asp) **MSDN Sample** : [Visual Basic .NET Code Sample: Typed Datasets](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvssamp/html/vbcs_UsingTypedDatasets.asp) ## More in Typed Datasets [All posts in Typed Datasets](https://osherove.com/blog/category/typed-datasets) - May 5, 2003 ### [Oops! Typed Datasets ARE scalable!](https://osherove.com/blog/2003/5/5/oops-typed-datasets-are-scalable-1.html) - May 4, 2003 ### [Typed Datasets Are Not Always The Answer](https://osherove.com/blog/2003/5/4/typed-datasets-are-not-always-the-answer-1.html) --- title: "Tech Interview Puzzle Solutions" url: "https://osherove.com/blog/2003/4/11/tech-interview-puzzle-solutions.md" canonical: "https://osherove.com/blog/2003/4/11/tech-interview-puzzle-solutions.html" published: "2003-04-11T23:49:00" updated: "2003-04-11T23:49:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Ever had technical interview for a job and you were asked to solve a puzzle or write an algorithm? Did you fail? Here's a cool site with answers to the most common tech interview questions - contributed by the public.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tech Interview Puzzle Solutions By Roy Osherove April 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 11, 2003; technical details may be outdated. Ever had technical interview for a job and you were asked to solve a puzzle or write an algorithm? Did you fail? Here's a cool site with answers to the most common tech interview questions - contributed by the public. very cool! : [http://www.techinterview.org/](http://www.techinterview.org/) Thanks for the link, [Joel](http://www.joelonsoftware.com/news/20030328.html). ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 14, 2003 ### [Enter the Matrix](https://osherove.com/blog/2003/4/14/enter-the-matrix.html) - Apr 12, 2003 ### [DNWL future continued](https://osherove.com/blog/2003/4/12/dnwl-future-continued.html) - Apr 11, 2003 ### [.NetWeblogs home page ratings](https://osherove.com/blog/2003/4/11/netweblogs-home-page-ratings.html) - Apr 11, 2003 ### [The Future of .NetWeblogs](https://osherove.com/blog/2003/4/11/the-future-of-netweblogs.html) --- title: ".NetWeblogs home page ratings" url: "https://osherove.com/blog/2003/4/11/netweblogs-home-page-ratings.md" canonical: "https://osherove.com/blog/2003/4/11/netweblogs-home-page-ratings.html" published: "2003-04-11T23:26:00" updated: "2003-04-11T23:26:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Scott also wonders why the main RSS feed gets less ratings then some other blogs. I think if you make each blog template have a link to the main .NetWeblogs page (somewhere in the top left..?) it would be a big help.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .NetWeblogs home page ratings By Roy Osherove April 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 11, 2003; technical details may be outdated. Scott also [wonders](http://aspnetweblog.com/posts/5476.aspx) why the main RSS feed gets less ratings then some other blogs. I think if you make each blog template have a link to the main .NetWeblogs page (somewhere in the top left..?) it would be a big help. Sometimes people will get to a post from somewhere on the net and if they wanted to know more about who hosts this blog or specific post they could go directly to the main page. right now you have to guess how to get to the 'mother of all .net feeds' . ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 12, 2003 ### [DNWL future continued](https://osherove.com/blog/2003/4/12/dnwl-future-continued.html) - Apr 11, 2003 ### [Tech Interview Puzzle Solutions](https://osherove.com/blog/2003/4/11/tech-interview-puzzle-solutions.html) - Apr 11, 2003 ### [The Future of .NetWeblogs](https://osherove.com/blog/2003/4/11/the-future-of-netweblogs.html) - Apr 11, 2003 ### [Developer Dawg](https://osherove.com/blog/2003/4/11/developer-dawg.html) --- title: "The Future of .NetWeblogs" url: "https://osherove.com/blog/2003/4/11/the-future-of-netweblogs.md" canonical: "https://osherove.com/blog/2003/4/11/the-future-of-netweblogs.html" published: "2003-04-11T23:16:00" updated: "2003-04-11T23:16:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Scott Posts a big dilemma about the future eco-system of .NetWeblogs. Here's what i think. The Editor idea sounds good . I'd register for the feed if it dealt solely with specifit .Net News. In fact, count me in as a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Future of .NetWeblogs By Roy Osherove April 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 11, 2003; technical details may be outdated. [Scott Posts a big dilemma](http://aspnetweblog.com/posts/5476.aspx) about the future eco-system of .NetWeblogs. Here's what i think. **The Editor idea sounds good**. I'd register for the feed if it dealt solely with specifit .Net News. In fact, count me in as a volunteer if you need me. I'd consider it an honor.I do think some stuff needs to be considered beforehand - see below. **I'd skip the "MSFT Bloggers" category** though. It seems a bit condescending in a way..? plus you might have MSFT bloggers who wouldnt want to be affiliated with MSFT in their blog - or would post on non-MSFT things. It would miss the mark i think. Also, the thought of people tuning in to the MS bloggers RSS feed seems a bit like inviting people to watch a zoo or circus show -" no matter what they say, we just want to see them because their from MS!"  - reminds me of the [Microsoft Bloggers Watch](http://www.microsoft-watch.com/article2/0,4248,852932,00.asp) Website . **About the noisiness of the main RSS feed**: I never looked at it like that. I really like reading through the assortment of posts about everything from the main RSS feed. I can see the value of low Signal-to-Noise ratio when it comes to .Net related stuff but i think the personal angle is imperative as well.  If we look at SlashDot, you'll see that the main page actually shows Several different post categories at once - kinda like what you see today on the main RSS feed of .NetWeblogs(only the latter isnt categorized yet. but the effect is the same) and you can choose to see the main categories each in a different page. I don't know the ratings of the main page of SlashDot Vs. the Category Related pages in there, but i guess it's high. And i like it. **My point is** - If wer'e going to make a Dedicated feed - we must make a counter dedicated feed for 'other' stuff. What that stuff should be exactly - that is to be decided(maybe more then one feed ...?) I'm not sure what your final goal about the .NetWebLogs community is : Is it to build a community dedicated solely to .Net? or is it about other stuff as well? I think one without the other wouldnt work. It wouldnt be a community in a real sense. What i see from other bloggers , And i'll take the MS bloggers as an example here, I can see some MS bloggers that even though are affiliated with MSFT - want their blog to be about themselves - their lives, problems,joys and of course technical stuff.  the point is - A blog is a way to express oneself  and that invariably entails personal stuff. Making that 'banned' or 'prohibited' would kind of miss the point of why people hold their weblog here. I know when I started this blog I did it mainly to express myself. to be known. to speak out and be heard .I do this by writing about .Net but not solely about it. One of the reasons i like this community is that **everyone gets a fair share of the main feed**. so a person coming in who knows nothing about us will have an equal oppertunity to see any post currently in the 'recent' history. If you cut that, many blogs will go unread, and may not even get the chance to be heard. Suppose I, as a programmer , write about something concerning some new thing Iv'e found. I'll post it. But before me, some other blogger posts about it, or an editor thinks it is of no importance for the main feed. So now, even though i write on related .net stuff - i dont get a chance to be heard. To get it i'll need to do something extraordinary, discover something or write a whole article. I also think that **'celberity' bloggers** **will get more screen time then others** out of mostly popularity considerations. That means fairness is out of the game. Today I can post something and 2 minutes later Scott guthrie can read it and go to my blog just because at that specific moment in time it was interesting to him. If we change that it's back to zero visibility for non celebs or professional writers. You would lose many of the bloggers visibility simply because they would have less to offer in terms of popularity or importance of posts. Take a look at SlashDot today. It's a very big community - but that means that everyone's voice is heard much more quitely accross distances. You lose you edge of having fresh posts from the field - from the smaller people who did not write books, who do not speak at conferences. To be slashdotted you need to find something that appeals to the lowest common denominator(in this case - juicy news) and that means you will rearly be seen by others unless you find other means on showing yourself besides slashdot. This place is about a community that is around one big thing - .Net. But I think it's bigger then that. It's about **people who love technology and really like .Net** . That's why you'll see posts about people moving offices or memories of the old computer game days right next to posts about the lates fad in WS-I (btw, the posts on moving offices got quite a large number of hits and they weren't .net related) . Right now this community is kind of socialist - everyone's post  bears the same weight. It is on the road to becoming something else- you will only see the posts chosen for you by their relevance. It has a good and bad. I think it can survive the change. but people will need to know that their voices will still be heard when they speak. It reminds me of the saying "If a tree falls in the forest and no one hears it, does it really make a sound?" I guess the same goes for Blogs as well.. ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 11, 2003 ### [Tech Interview Puzzle Solutions](https://osherove.com/blog/2003/4/11/tech-interview-puzzle-solutions.html) - Apr 11, 2003 ### [.NetWeblogs home page ratings](https://osherove.com/blog/2003/4/11/netweblogs-home-page-ratings.html) - Apr 11, 2003 ### [Developer Dawg](https://osherove.com/blog/2003/4/11/developer-dawg.html) - Apr 11, 2003 ### [I'm A Mort!](https://osherove.com/blog/2003/4/11/im-a-mort.html) --- title: "Developer Dawg" url: "https://osherove.com/blog/2003/4/11/developer-dawg.md" canonical: "https://osherove.com/blog/2003/4/11/developer-dawg.html" published: "2003-04-11T22:19:00" updated: "2003-04-11T22:19:00" tags: ["Off Topic"] author: "Roy Osherove" description: "Woohoo ! Can you say \"I Ported from VB6 to VB.Net And All I Got Was This Lousy Poster\" ? p.s I'm kidding . it's not at all lousy. I'm proud( in a very geeky sort of way)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Developer Dawg By Roy Osherove April 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 11, 2003; technical details may be outdated. [Woohoo](http://dotnetweblogs.com/kpleas/posts/5457.aspx)! Can you say  "I Ported from VB6 to VB.Net And All I Got Was This Lousy Poster" ? ![](https://osherove.com/img/ext/www.keithpleas.com_dawgs.jpg) p.s I'm **kidding**. it's not at all lousy. I'm proud( in a very geeky sort of way) ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 11, 2003 ### [.NetWeblogs home page ratings](https://osherove.com/blog/2003/4/11/netweblogs-home-page-ratings.html) - Apr 11, 2003 ### [The Future of .NetWeblogs](https://osherove.com/blog/2003/4/11/the-future-of-netweblogs.html) - Apr 11, 2003 ### [I'm A Mort!](https://osherove.com/blog/2003/4/11/im-a-mort.html) - Mar 31, 2003 ### [Bloody cool: Share Keyboard/Mouse between computers](https://osherove.com/blog/2003/3/31/bloody-cool-share-keyboardmouse-between-computers.html) --- title: "I'm A Mort!" url: "https://osherove.com/blog/2003/4/11/im-a-mort.md" canonical: "https://osherove.com/blog/2003/4/11/im-a-mort.html" published: "2003-04-11T20:13:00" updated: "2003-04-11T20:13:00" tags: ["Off Topic"] author: "Roy Osherove" description: "How's that ?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm A Mort! By Roy Osherove April 11, 2003 In [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published April 11, 2003; technical details may be outdated. How's [that](http://dotnetweblogs.com/kpleas/posts/5457.aspx)? ## More in Off Topic [All posts in Off Topic](https://osherove.com/blog/category/off-topic) - Apr 11, 2003 ### [The Future of .NetWeblogs](https://osherove.com/blog/2003/4/11/the-future-of-netweblogs.html) - Apr 11, 2003 ### [Developer Dawg](https://osherove.com/blog/2003/4/11/developer-dawg.html) - Mar 31, 2003 ### [Bloody cool: Share Keyboard/Mouse between computers](https://osherove.com/blog/2003/3/31/bloody-cool-share-keyboardmouse-between-computers.html) --- title: "Typed Datasets - Can You Get Much Cooler?" url: "https://osherove.com/blog/2003/4/11/typed-datasets-can-you-get-much-cooler.md" canonical: "https://osherove.com/blog/2003/4/11/typed-datasets-can-you-get-much-cooler.html" published: "2003-04-11T20:07:00" updated: "2003-04-11T20:07:00" tags: [".Net Original"] author: "Roy Osherove" description: "I'm currently developing a small winforms application for my company. It's really nothing fancy - just a data entry system connected to an Access database. In the old days, using VB6 i would have the following options…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Typed Datasets - Can You Get Much Cooler? By Roy Osherove April 11, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 11, 2003; technical details may be outdated.  I'm currently developing a small winforms application for my company. It's really nothing fancy - just a data entry system connected to an Access database. In the old days, using VB6 i would have the following options as to how to implement this: 1) Create a 3-tiered application with an always-connected data layer, Business objects to handle logical Add/remove/update/Select functionality and properties, and a UI that uses the business layer 2) Create a 2-tiered application with an always-connected data layer, and a UI that uses the data layer directly and has lots of plumbing code when handling user actions 3) Create a Fully Databaound UI for the database   **Option No. 1** Has the benefit of easily changing the way the application handles data logically without too much messing around, and scaling up is easy. Its main caveats are: \- Longer time to implement then the other 2 \- Adding functionality entails adding the functionality in 3 different layers, meaning more overhead and more chances of errors \- It all seems very redundant for an application this small **Option No. 2** Has the benefit of less Time-To-Market coupled with, although less robust, some of the merits of option No.1. But it still requires writing plumbing code and data access code. **Option No. 3** Has the benefit of speed - but that's about it. No scalability, Changing functionality is a bitch in some cases and don't get me started on the level of UI controls that use Data binding (excluding the expensive well-known ones).Plus - It's much harder to override default binding behavior or change minutia - stuff that really matter to every user. Enter ADO.NET The introduction of the Dataset Object now allows me to change the way I design N-Tier applications without having to worry too much about the amount of boiler plate code for in-memory data editing. Hell, it was designed to be passed through logical and phisycal tiers - providing disconnected data and it's schema! pure (geeky) love man. Enter the Typed DataSet To me- typed datasets bring wealth of usability with minimal expense. It combines the ability of in-memory databases coupled with object oriented and IntelliSens'ed approached. It is arguable just how effective it is in enterprise systems (A whole different discussion) but its value is immense when it comes to create small applications like the one I mention above. I just dragged and dropped Tables from the Server Explorer onto a form or a component class - and start using data adapters to generate a typed data set. What I get in return to this 10 minute process is a full schema of the database I'm to work with -with classes that match every table, column and relationship in it. Everything is typed and in memory. Amazing. For example - I have 2 tables Named Messages and Users which are connected by UserID and MessageID (Each user can send multiple messages).A user has ID and Name  and a Message as a UserID And text . What will be generated from the schema will be a class named by me ("MsgDataSet") which has lots of properties, but 2 of them will be MsgDataSet.Messages (of type MessagesTable)  and MsgDataSet.Users (of type UsersTable). UsersTable class will containn lots of useful functions, but it is mainly comprised os UsersRow class objects. Each UsersRow object will also have properties to reflect the Table columns. So UsersRow will have an ID property of type int and a Name proeprty of type string. To Delete a User Row i'll have a UsersRow.Delete() Function. To Add a UsersRow I'll have a UsersTable.AddUsersRow() Function (with several overloads to allow adding using only property values of a new user). One of the best parts is that if a I have a UsersRow object and i want to get all the messages for this User - I only need to write "UsersRow.GetMessageRow() and I'll get All the Messages in Messages Table owned by the UserID in question. No Selects, no nothing. Pure Generated Code - automatically! The Same Goes for a MessagesRow Object. I can call its "GetUsersRow() function to retrive its parent Row object. All this is done using Relations that were visually defined in the Dataset schema designer, which comes with .Net. This is only a tip of the iceberg. You can do Select on Tables object, Create View of the data (just like Views in SQL server) and do filtering, sorting -whatever you like.  More coolness - If you design the schema file generated (XSD file which is pure xml but has a visual designer), you can have the Table class guard you from database issues such as preserving primary keys - duplicates - default values of records - all in memory of course. Now you can work with the data in memory. change, add, update. When you need to update the real database - just use the appropriate data adapter to Update(Dataset). If you have conflicts with the database you can see all the changed rows and accept or reject changes and re-update. **Conclusion:** The Typed Dataset that can be generated by VS.NET allows the developer to use an object oriented approach that simplifies data in-memory data management, and allows transferring logical data along with it's schema through physical and logical layers. It also allows working in a disconnected manner much more easily. On the other hand - it is fully customizable and manageable, allowing the developer to tinker with the data with a level of abstraction as deep or as shallow as desirable. Read more on typed datasets: **DotNetJunkies**: [Using Typed Datasets](http://www.dotnetjunkies.com/tutorials.aspx?tutorialid=301) - Very in-depth article **MSDN Intro**: [Creating Typed Datasets with the Component Designer](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbtskcreatingadonetdatasets.asp) **MSDN Sample** : [Visual Basic .NET Code Sample: Typed Datasets](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvssamp/html/vbcs_UsingTypedDatasets.asp) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 16, 2003 ### [File I/O Support In Transactions](https://osherove.com/blog/2003/4/16/file-io-support-in-transactions.html) - Apr 15, 2003 ### [Debugging Problem](https://osherove.com/blog/2003/4/15/debugging-problem.html) - Apr 11, 2003 ### [Resolving Debugger Problems in VS.NET](https://osherove.com/blog/2003/4/11/resolving-debugger-problems-in-vsnet.html) - Mar 31, 2003 ### [ASP.NET is cool + DataGrid Designer Tips](https://osherove.com/blog/2003/3/31/aspnet-is-cool-datagrid-designer-tips.html) --- title: "Resolving Debugger Problems in VS.NET" url: "https://osherove.com/blog/2003/4/11/resolving-debugger-problems-in-vsnet.md" canonical: "https://osherove.com/blog/2003/4/11/resolving-debugger-problems-in-vsnet.html" published: "2003-04-11T19:03:00" updated: "2003-04-11T19:03:00" tags: [".Net Original"] author: "Roy Osherove" description: "The Article I posted about resolving debugger problems in VS.NET seems to be quite popular. Ive been getting hits from all over. Just in case you missed it and are stuck on something - Here's the link to it . Of course,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Resolving Debugger Problems in VS.NET By Roy Osherove April 11, 2003 In [.Net Original](https://osherove.com/blog/category/net-original) **Historical article** · Originally published April 11, 2003; technical details may be outdated. The Article I posted about resolving debugger problems in VS.NET seems to be quite popular. Ive been getting hits from all over. Just in case you missed it and are stuck on something - [Here's the link to it](http://dotnetweblogs.com/Rosherove/Story/3695.aspx). Of course, I didn't write this. I came accross it in a word document that was floating around somewhere in our mail server. But it's just a life saver. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 15, 2003 ### [Debugging Problem](https://osherove.com/blog/2003/4/15/debugging-problem.html) - Apr 11, 2003 ### [Typed Datasets - Can You Get Much Cooler?](https://osherove.com/blog/2003/4/11/typed-datasets-can-you-get-much-cooler.html) - Mar 31, 2003 ### [ASP.NET is cool + DataGrid Designer Tips](https://osherove.com/blog/2003/3/31/aspnet-is-cool-datagrid-designer-tips.html) - Mar 13, 2003 ### [Free GUI component for VS .NET users](https://osherove.com/blog/2003/3/13/free-gui-component-for-vs-net-users.html) --- title: "ASP.NET Encoding Tip from Scott Hanselman" url: "https://osherove.com/blog/2003/4/11/aspnet-encoding-tip-from-scott-hanselman.md" canonical: "https://osherove.com/blog/2003/4/11/aspnet-encoding-tip-from-scott-hanselman.html" published: "2003-04-11T18:55:00" updated: "2003-04-11T18:55:00" tags: [".Net Quotations", "Tips & Tricks"] author: "Roy Osherove" description: "Tip from Scott Hanselman If your life sucks so badly that you have to support Netscape 4.x, you might want to remember that Netscape 4 never handled Unicode/UTF-8 very well. Since UTF-8 is ASP.NET's default Response…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ASP.NET Encoding Tip from Scott Hanselman By Roy Osherove April 11, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published April 11, 2003; technical details may be outdated. **_Tip from Scott Hanselman_** _If your life sucks so badly that you have to support Netscape 4.x, you might want to remember that Netscape 4 never handled Unicode/UTF-8 very well.  Since UTF-8 is ASP.NET's default Response Encoding, you'll often see the Evil Black Squares  "" ©2003 displayed instead of your text._   _Easily fixed though, change the following line in the Web.config file from_ _to:_ \[via [Wagner Blog](http://radio.weblogs.com/0101986/)\] cool! ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 27, 2003 ### [Microsoft's Smart Devices Developer Community](https://osherove.com/blog/2003/4/27/microsofts-smart-devices-developer-community.html) - Apr 16, 2003 ### [CLR tips gold mine detected](https://osherove.com/blog/2003/4/16/clr-tips-gold-mine-detected.html) - Mar 9, 2003 ### [A cool macro to ease your NUnit boilerplate woes](https://osherove.com/blog/2003/3/9/a-cool-macro-to-ease-your-nunit-boilerplate-woes.html) - Mar 5, 2003 ### [Explorer Tips and tricks for the keyboard junkie](https://osherove.com/blog/2003/3/5/explorer-tips-and-tricks-for-the-keyboard-junkie.html) --- title: "Hell Shmell" url: "https://osherove.com/blog/2003/4/10/hell-shmell.md" canonical: "https://osherove.com/blog/2003/4/10/hell-shmell.html" published: "2003-04-10T22:22:00" updated: "2003-04-10T22:22:00" tags: [] author: "Roy Osherove" description: "Santo Replied on Config Hell : \"My take on this issue is that config files are used by .NET for .NET - they threw us developers a bone with the appsettings, but that's about it. I totally understand the .NET designer's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hell Shmell By Roy Osherove April 10, 2003 **Historical article** · Originally published April 10, 2003; technical details may be outdated. _Santo Replied on [Config Hell](http://dotnetweblogs.com/Rosherove/posts/4973.aspx):_ _"My take on this issue is that config files are used by .NET  for .NET - they threw us developers a bone with the appsettings, but that's about it.  I totally understand the .NET designer's worries about allowing programmatic write access to the config files - corrupting them could easily bring down the whole box, not to mention that the same file also holds security settings. If you want something which you have complete control over, do it yourself. It would have been nice to have gotten some basic tools for that, but hey- If BillG let me manage their development team for a day, that feature probably wouldn't have been high on my list._ " \[[Addy Santo](http://dotnetweblogs.com/ASanto/posts/5092.aspx)\] Hmm. Yep. I'll bite. But you have to wonder "Was it so hard to implement the appSettings tag to be used in a non-secured secondary config file? one that could be written to. This one can hold all your basic run of the mill settings. I'd hate to go back to the registry (unless I have to. Stil looking for a solution to manage multiple users easily without it) just because it's very easy to work with. I like my program keeping it's setting neat and tight - close to home and not creating garbage on the user's registry... --- title: "Suggestion" url: "https://osherove.com/blog/2003/4/10/suggestion.md" canonical: "https://osherove.com/blog/2003/4/10/suggestion.html" published: "2003-04-10T20:12:00" updated: "2003-04-10T20:12:00" tags: [] author: "Roy Osherove" description: "First - The site is becoming better and better(I didn;t even know until a few minutes ago i can now delete my posts..!) Way to go! Here's something i think would be nice to have: On the DotNetWeblog.com site - For each…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Suggestion By Roy Osherove April 10, 2003 **Historical article** · Originally published April 10, 2003; technical details may be outdated. First - The site is becoming better and better(I didn;t even know until a few minutes ago i can now delete my posts..!) Way to go! Here's something i think would be nice to have: On the DotNetWeblog.com site  - For each Post shown - show the number of comments and referrals as well (just like in a regular weblog view). --- title: "The Next Best Thing After a User-Group: .Net WebCasts" url: "https://osherove.com/blog/2003/4/10/the-next-best-thing-after-a-user-group-net-webcasts.md" canonical: "https://osherove.com/blog/2003/4/10/the-next-best-thing-after-a-user-group-net-webcasts.html" published: "2003-04-10T19:25:00" updated: "2003-04-10T19:25:00" tags: [] author: "Roy Osherove" description: "Ever since i discovered WebCasts I have been a big fan. Microsoft has been doing Webcasts teaching pretty much anything about Microsoft Technology and specifically on .Net related issues for some time now, and they have…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Next Best Thing After a User-Group: .Net WebCasts By Roy Osherove April 10, 2003 **Historical article** · Originally published April 10, 2003; technical details may be outdated. Ever since i discovered WebCasts  I have been a big fan. Microsoft has been doing Webcasts teaching pretty much anything about Microsoft Technology and specifically on .Net related issues for some time now, and they have quite a collection of previous webcasts that you can download and view. I recommend these heartedly. It's the next best thing after live UserGroup Meetings or other live lectures. The webcasts are brodcast using Interwise's E-Learning tool (Another Israeli company - Yey!), and ,Assuming you'r watching a live web cast, let you participate on an interactive level - ask questions, answer polls and small tests live and basically act like a student for 70 mins. or so... There are sessions in there ranging from Developing On Windows Server 2003 - to HyperThreading-oriented C# programming - to Mobile solutions for SmartPhone - to Project Management and SharePoint Portal server stuff. You name it, it's probably there or will be. The software is freely available - You can intsall it right from Microsoft's webcast site. just follow the instructions. very easy. Just one caveat : The webcast client uses Internet explorer for some streaming and stuff So if you are using another browser as the default browser, there's a setting in the WebCast client that lets you determine what browser to use. I found this out after an hour or so of the client Hanging - No warning no nothing. Oh well. I guess it's beta or something... Anyway - Go [Here](http://www.microsoft.com/usa/webcasts/ondemand/default.asp) and start learning! --- title: "Config Hell - continued" url: "https://osherove.com/blog/2003/4/7/config-hell-continued.md" canonical: "https://osherove.com/blog/2003/4/7/config-hell-continued.html" published: "2003-04-07T19:21:00" updated: "2003-04-07T19:21:00" tags: [] author: "Roy Osherove" description: "OK. I got several comments regarding the reasons for Config Files to be Read-Only. \" The main reason for having config files read only, IMHO, is due to permissions issues. Applications are typically installed to Program…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Config Hell - continued By Roy Osherove April 7, 2003 **Historical article** · Originally published April 7, 2003; technical details may be outdated. OK. I got several comments regarding the reasons for Config Files to be Read-Only. _"__The main reason for having config files read only, IMHO, is due to permissions issues. Applications are typically installed to Program Files/\*. On a locked down system, its very possible for a user not to have rights to that directory. http://staff.develop.com/candera/weblog/2003/02/06.html_ " \[[Matt Berther](http://www.mattberther.com/)\] That's a very good argument - for why you wouldnt want to implement read-write options in a **specific software you are building**. but definitely not for **all** software products. Since when should something like this not even give you the option to write to the file? let me worry about when i should write to it. hell, most of the stuff i write now uses config files in a very closed and specific environment - where read-write permissions are needed where these files reside. but now i have to implement more code, or serialize my own stuff. point is - you give us something - don't cripple it. 'Write' functionality on config files is just as logical as reading from them. If you want us to steer away from ini files, or registery values - give us something that replaces this functionality at the simplest level. When i first saw the appSettings thing- i was pretty excited (even though its a small thing). "Yoohoo! No need to write plumbing to save and read simple settings anymore!" . **wrong**. you can read - but **not write**. c'mon! give me a break! --- title: "Joining The BCL Types Wagon + Confession" url: "https://osherove.com/blog/2003/4/7/joining-the-bcl-types-wagon-confession.md" canonical: "https://osherove.com/blog/2003/4/7/joining-the-bcl-types-wagon-confession.html" published: "2003-04-07T19:07:00" updated: "2003-04-07T19:07:00" tags: [] author: "Roy Osherove" description: "Hmm. Ive been reading some of the latest posts discussing using BCL type names and not intrinsic language type name (i.e 'System.String' vs. 'string' etc.). I'll admit that up until now i have not used that philosophy…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Joining The BCL Types Wagon + Confession By Roy Osherove April 7, 2003 **Historical article** · Originally published April 7, 2003; technical details may be outdated. Hmm. Ive been reading some of the [latest posts discussing](http://blogs.gotdotnet.com/BradA/permalink.aspx/957e1038-3a55-4504-805f-f7203c85c2cd) using BCL type names and not intrinsic language type name (i.e 'System.String' vs. 'string' etc.). I'll admit that up until now i have not used that philosophy in my \*ahem\* writing, Yet i totally see the rational behind it and will start using it consistently. Some of the main reasons for not adopting it up until now have been few and petty. For example - I saw mucho ugliness in writing 'Int32' instead of 'int'. Somehow , this always (still does) seemed LPCSTR'ish to me. I've been programming in VB6 for most of my career and even though ive been using Win32 API's and getting into a little C++ here and there - I never liked its cumbersome notations  and ugly coding style. As the guys over at .[Net Rocks](http://www.franklins.net/dotnetrocks.asp) love to say - "**C++ is a Write-Only language**, **C# is a read-Only Language** and **VB.NET is a Read-Write Language**." I agree with the first part. Thats exactly the reason my puny mind sees anything that looks C++'ish and begins to rant on and on... and Int32 is a classic candidate for this kind of ranting. Thinking about using this type name all over my code gives me the creeps. Looking at a full blown source code written by somebody else, with Int32's spread all over the place - in first glimpse - has the "shadow of the pointer" in it - meaning I start wondering "OK, Where are the pointers in this code? It sure **looks** like C++.." "Enough! it's only Int32 for god's sake!" you say. Yes. But there's more (prepare - more stupid reasons ahead). Another reason i never even tried using BCL type names in my code was that the first examples and source code I've read that utilizes .Net code used BCL type names in **full notation**  meaning 'System.String' and 'System.Int32' instead of just String and Int32. Now that's scary. I thought to myself "Hmm, I have the choice of either writing these long-winded type declarations, or just writing 'int' or 'string'. hmmm... yah. I'll use the latter!" .  Later , When it was already evident that you needn't write these verbose declarations as long as you wrote your little 'using System;' at the top of the file, it was too late. The habit had already stuck with me. I think there were more reasons, but i can't remember any (+ fear of looking really stupid and petty). I wonder - 1) Are there others who felt(or still do) the same way? 2) Should a person really spend 20 minutes writing about using or not using BCL types ? Is everything else in the world dead? 3) How many people read this? --- title: "Config Hell" url: "https://osherove.com/blog/2003/4/7/config-hell.md" canonical: "https://osherove.com/blog/2003/4/7/config-hell.html" published: "2003-04-07T03:56:00" updated: "2003-04-07T03:56:00" tags: [] author: "Roy Osherove" description: "I really don't see the reason for .config files to be read only at run time. Why should i have to create my own class to persist to the XML file, or worst, have a copy in memory of the values, since any changes I would…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Config Hell By Roy Osherove April 7, 2003 **Historical article** · Originally published April 7, 2003; technical details may be outdated. I really don't see the reason for .config files to be read only at run time. Why should i have to create my own class to persist to the XML file, or worst, have a copy in memory of the values, since any changes I would make to the config file at runtime will only be live after application restart (This is ofcourse only regarding winform apps. web.config behaves differently).The point is, How is that not a part of the system? It seems very easy to implement, and its just another step in the config direction anyway. One more thing: Unlike INI files, i see no way to use multiple values per config value. I'd have to implement IConfigHandler and all sorts of other adventures for that to happen. Now, Are those things really asking too much? --- title: "Common uses for Regex parsing" url: "https://osherove.com/blog/2003/4/6/common-uses-for-regex-parsing.md" canonical: "https://osherove.com/blog/2003/4/6/common-uses-for-regex-parsing.html" published: "2003-04-06T03:04:00" updated: "2003-04-06T03:04:00" tags: [] author: "Roy Osherove" description: "Got this in my email today... Here are some nice examples of of parsing using Regex for some commonly used cases * IsValidEmail - Validating an E-mail Address http://archive.devx.com/devxpress/gurl.asp?i=1X2694710X75356…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Common uses for Regex parsing By Roy Osherove April 6, 2003 **Historical article** · Originally published April 6, 2003; technical details may be outdated. **Got this in my email today...** **Here are some nice examples of of parsing using Regex for some commonly used cases** \* IsValidEmail - Validating an E-mail Address [http://archive.devx.com/devxpress/gurl.asp?i=1X2694710X75356](http://archive.devx.com/devxpress/gurl.asp?i=1X2694710X75356) \* IsValidUrl - Validating a URL [http://archive.devx.com/devxpress/gurl.asp?i=1X2694710X75357](http://archive.devx.com/devxpress/gurl.asp?i=1X2694710X75357) \* IsValidUsPhoneNumber - Validating a US Phone Number [http://archive.devx.com/devxpress/gurl.asp?i=1X2694710X75358](http://archive.devx.com/devxpress/gurl.asp?i=1X2694710X75358) \* IsValidUsZip - Validating a US ZIP Code [http://archive.devx.com/devxpress/gurl.asp?i=1X2694710X75359](http://archive.devx.com/devxpress/gurl.asp?i=1X2694710X75359) \* IsValidUsSSN - Validating a US Social Security Number (SSN) [http://archive.devx.com/devxpress/gurl.asp?i=1X2694710X75360](http://archive.devx.com/devxpress/gurl.asp?i=1X2694710X75360) \* IsValidPath - Validating a System Path [http://archive.devx.com/devxpress/gurl.asp?i=1X2694710X75361](http://archive.devx.com/devxpress/gurl.asp?i=1X2694710X75361) \* IsValidIP - Validating an IP Address [http://archive.devx.com/devxpress/gurl.asp?i=1X2694710X75362](http://archive.devx.com/devxpress/gurl.asp?i=1X2694710X75362) --- title: "A Star Is Born (Emotional - That's me!)" url: "https://osherove.com/blog/2003/4/5/a-star-is-born-emotional-thats-me.md" canonical: "https://osherove.com/blog/2003/4/5/a-star-is-born-emotional-thats-me.html" published: "2003-04-05T19:42:00" updated: "2003-04-05T19:42:00" tags: [] author: "Roy Osherove" description: "I did it! My first print article has been published! I go down to B&N today and there is my article listed on the cover of . NET Developer's Journal . Sure enough, I turn to page 26 and after getting past my picture,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A Star Is Born (Emotional - That's me!) By Roy Osherove April 5, 2003 **Historical article** · Originally published April 5, 2003; technical details may be outdated. _I did it! My first print article has been published! I go down to B&N today and there is my article listed on the cover of ._[_NET Developer's Journal_](http://www.sys-con.com/dotnet/)_. Sure enough, I turn to page 26 and after getting past my picture, there it is-) Developing GUI Applications Using MC++. Check it out! This is a_ [_great issue_](http://www.sys-con.com/dotnet/) _:_ \[[Sam Gentile](http://dotnetweblogs.com/sgentile/)\] **Congratulations**! I'll be sure to browse through this ASAP :) Note: Albeit The title of this post might suggest otherwise, I only know sam from his blog. That said, I'm still excited for him. It's great to see someone's first steps into a new territory, or to a new level. Having that someone be part of this little community we (are starting to)have here, well, that just makes it all the more exciting :) --- title: "Oops!" url: "https://osherove.com/blog/2003/4/5/oops.md" canonical: "https://osherove.com/blog/2003/4/5/oops.html" published: "2003-04-05T19:06:00" updated: "2003-04-05T19:06:00" tags: [] author: "Roy Osherove" description: ".net Weblogs Archive I missed a post for the last time... Ever saw a post about a day ago on the dotnetweblogs.com home page and then it dissapears and you have no idea who posted it? Wish that other bloggers showed on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Oops! By Roy Osherove April 5, 2003 **Historical article** · Originally published April 5, 2003; technical details may be outdated. [_.net Weblogs Archive_](http://dotnetweblogs.com/Jezell/posts/4891.aspx) _I missed a post for the last time... Ever saw a post about a day ago on the dotnetweblogs.com home page and then it dissapears and you have no idea who posted it? Wish that other bloggers showed on that page too (like_ [_Don_](http://www.gotdotnet.com/team/dbox/) _or_ [_Clemens_](http://radio.weblogs.com/0108971)_)? Well, I did and I do and rather than dreaming of what could be, I decided to do something about it. Here is the result of a few hours of early morning work:_ [_http://www.activehead.com/DotNetWeblogs_](http://www.activehead.com/DotNetWeblogs) _Some cool features behind the scenese, like adding metadata to the RSS that I am getting. Had to put in some special cases for bloggers like Don that don't use a pubDate tag (luckily, the guid tag the gotdotnet guys are using contains a date, so I can parse out that and move it into the pubDate tag) and those that don't have a dc:creator tag._ _If you just want the feed, you can get it at_ [_http://www.activehead.com/DotNetWeblogs/rss/rss.xml_](http://www.activehead.com/DotNetWeblogs/rss/rss.xml) _If I am missing some of your favorite .NET feeds (which I know is the case), feel free to add them to the feed list!_ Posted By [Jesse Ezell](http://dotnetweblogs.com/Jezell/) at 4/5/2003 9:40 PM Great idea, although i don't see a 'search' link up there? is that the general idea? Plus - I stupidly added a link to this blog on there - and not to the RSS link either - to the actual web site of the blog . I know, stupid me. So i went ahhead a posted this blog with its RSS link. Only then do i discover that Feeds on DotNetWeblogs are automatically archived." erm. **oops**! **sorry**. So now i have two links up there ;) \*shy smile\*.Guess I should have RTFM..... sorry about that. --- title: "BBS, Telix And World Domination" url: "https://osherove.com/blog/2003/4/5/bbs-telix-and-world-domination.md" canonical: "https://osherove.com/blog/2003/4/5/bbs-telix-and-world-domination.html" published: "2003-04-05T18:53:00" updated: "2003-04-05T18:53:00" tags: [] author: "Roy Osherove" description: "I still remember the good ol' days when i used to sneak in to my step father's study in the middle of the night and use TELIX and connect to BBS's all over Israel. I was about 10 or 13..?. I rememebr the first time i…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BBS, Telix And World Domination By Roy Osherove April 5, 2003 **Historical article** · Originally published April 5, 2003; technical details may be outdated. I still remember the good ol' days when i used to sneak in to my step father's study in the middle of the night and use [TELIX](http://www.telix.com/delta/deltacom/tfd/index.html) and connect to BBS's all over Israel. I was about 10 or 13..?. I rememebr the first time i saw a live chat . man , it was amazing. The most amazing thing was that you could see the characters typed out as the person on the other end was typing, including typos, backspaces and everything. Suddenly the computer looked so human to me.  From that moment on, i snuck almost nightly into the study, and tried to silently connect using the 9600 baud modem to somewhere in israel. I say 'tried' because Telix had a 'feature' that made it beep insanely with loud up and down sirens when it successfully connected to another computer. That means that 1 out of three times i missed the mark and my parents woke up and sent me to bed, having this being a school night. Even then i had a list of a few hundred BBS's all over the country, so i guess it wasnt as big a discovery as i thought it was. I didn't really know what i was doing, or was going for . I just had fun with the ability to be connected and talk and share with other people . That  was the first time i discovered the ability to find solutions to console games i was playing. I remember having a game on my SEGA machine that was an RPG game. i was going all over the place with my pack, hunting and gathering. It was a blast. It went on for a couple of months, until i got up to a point where i was pretty much as powerful as one can get at this game (Darn , i can't remember its name!). There was an object in the game to search for magical keys hidden within the game map, in caves of some sort. I could find only one of five or seven. it was the most frustrating thing ever!. One day i dicovered a whole section of cheat files that can be downloaded from some BBS. I blissfully downloaded what was then a huge download(probably several Kb's...?).  reading through the downloaded text files, i saw a detailed description on how to get to each key. Without words, I  quickly  ran up to my room and started exploring the territories mentioned by the files. **Bingo**! the first key was found! i was as happy as  monika lewinsky under the presidential desk! Now, only to find the next missing keys. I looked and looked, and followed the text to the letter. nothing. nada. zip. ziltch. zero. I couldnt believe it! I was as stumped as george bush when asked the name of the hungarian prime minister(I will stop with the analogies now, don;t worry).Hhow am i to finish this game? I never did. the game went on to survive in another boy's game box, having foolishly lent it to someone i can't remember up until  this day... Never again will i be confronted with these troubling and mysterious issues. I can find no real joy in today's RPG games. somehow, they just don't cut it for me. Every now and then i fondly remember the eagerness with which I hacked, slashed and captured monsters,gold and clothing, but for the life of me, I cannot recreate that feeling. Many a good bucks were spent on trying, though... Anyway, returning to BBSing... Ah, never mind. Guess i'll go to sleep now :) --- title: "Avoiding DB_SEC_E_AUTH_FAILED exception on connection string" url: "https://osherove.com/blog/2003/4/3/avoiding-db_sec_e_auth_failed-exception-on-connection-string.md" canonical: "https://osherove.com/blog/2003/4/3/avoiding-db_sec_e_auth_failed-exception-on-connection-string.html" published: "2003-04-03T10:18:00" updated: "2003-04-03T10:18:00" tags: [] author: "Roy Osherove" description: "Thought I should share, since i could find almost no reference to this on the web... I came accross this weird message when trying to set the connection string on the connection object to point to an MDB file on my…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Avoiding DB\_SEC\_E\_AUTH\_FAILED exception on connection string By Roy Osherove April 3, 2003 **Historical article** · Originally published April 3, 2003; technical details may be outdated. Thought I should share, since i could find almost no reference to this on the web... I came accross this weird message when trying to set the connection string on the connection object to point to an MDB file on my drive, using this connection string: @"Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source=C:\\Documents and Settings\\royo\\My Documents\\WOZ.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" The way to repair it is pretty simple: Notice that I put a '@' at the start to format the string correctly, since it contains double quotes and stuff. Appearently, this is not enough. to fix this you need to replace each pair of double quotes to 2 pairs of double quotes like so: **Password="";**   turns into **Password="""";** repeat this for all values containing double quote pairs in the string and your done. and that should fix it Replace all double --- title: "MSFT to compete with Google" url: "https://osherove.com/blog/2003/4/3/msft-to-compete-with-google.md" canonical: "https://osherove.com/blog/2003/4/3/msft-to-compete-with-google.html" published: "2003-04-03T10:10:00" updated: "2003-04-03T10:10:00" tags: [] author: "Roy Osherove" description: "\"We do view Google more and more as a competitor. We believe that we can provide consumers with a better product and a better user experience. That's something that we're actively looking at doing,\" Bob Visse, director…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSFT to compete with Google By Roy Osherove April 3, 2003 **Historical article** · Originally published April 3, 2003; technical details may be outdated. _"We do view Google more and more as a competitor. We believe that we can provide consumers with a better product and a better user experience. That's something that we're actively looking at doing," Bob Visse, director of marketing for Microsoft's MSN Internet services division, said._ _Visse said the company was making some significant investments in developing a better search engine. But the company has not offered specific plans._ \[via [reuters](http://www.reuters.com/newsArticle.jhtml?type=internetNews&storyID=2497128)\] Yikes! Google beware! We all know what happens when Bill sets his mind on something.... --- title: "An amazing Winforms FAQ" url: "https://osherove.com/blog/2003/4/2/an-amazing-winforms-faq.md" canonical: "https://osherove.com/blog/2003/4/2/an-amazing-winforms-faq.html" published: "2003-04-02T08:14:00" updated: "2003-04-02T08:14:00" tags: [] author: "Roy Osherove" description: "I just discovered this site, and plan to use it often! http://www.syncfusion.com/FAQ/WinForms/default.asp great job! Check out the very thorough DataGrid FAQ here: http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # An amazing Winforms FAQ By Roy Osherove April 2, 2003 **Historical article** · Originally published April 2, 2003; technical details may be outdated. I just discovered this site, and plan to use it often! [http://www.syncfusion.com/FAQ/WinForms/default.asp](http://www.syncfusion.com/FAQ/WinForms/default.asp) great job! Check out the very thorough DataGrid FAQ here: [http://www.syncfusion.com/FAQ/WinForms/FAQ\_c44c.asp](http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp) --- title: "Googlism" url: "https://osherove.com/blog/2003/4/2/googlism.md" canonical: "https://osherove.com/blog/2003/4/2/googlism.html" published: "2003-04-02T07:19:00" updated: "2003-04-02T07:19:00" tags: [] author: "Roy Osherove" description: "bill gates is satan' page bill gates is satan conspiracy theory bill gates is a satanic worshiper who uses microsoft to gain bill gates is richer than bill gates is the anti bill gates is getting bill gates is the anti…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Googlism By Roy Osherove April 2, 2003 **Historical article** · Originally published April 2, 2003; technical details may be outdated. bill gates is satan' page bill gates is satan conspiracy theory bill gates is a satanic worshiper who uses microsoft to gain bill gates is richer than bill gates is the anti bill gates is getting bill gates is the anti christ bill gates is a theif bill gates is on the bus bill gates is a hero bill gates is darth vader bill gates is opening windows on world health bill gates is mr bill gates is rich bill gates is right bill gates is the pope bill gates is the devil bill gates is "biggest bill gates is killed in 1999 bill gates is evil bill gates is not the bill gates is committed to the macintosh bill gates is a racist bill gates is scheduled to testify in antitrust bill gates is right? bill gates is a wanker bill gates is scheduled to testify in ant bill gates is 666 bill gates is richer than you by philip greenspun mon oct 7 02 bill gates is satan page" goes international bill gates is the antichrist bill gates is richer than you by philip greenspun bill gates is the devil himself bill gates is an american unoriginal bill gates is a satanic worshiper who uses microsoft to gain satanic control of the world bill gates is smiling bill gates is not richer than god bill gates is an arrogant bill gates is a genius bill gates is a wimp bill gates is number one and worth 110 billion dollars bill gates is symbolic bill gates is bill gates is satan bill gates is getting there by david rothman bill gates is sharing his fortune bill gates is a bleeding heart do bill gates is very busy taking over the world bill gates is my hero bill gates is a hero anthony donadio bill gates is a target in europe bill gates is not the sort to allow a rival like steve case to get an edge on him bill gates is in his early forties and will probably live another 35 years based on today's life expectancies for males bill gates is still rich by glenn curtis columnist 11/26/2001 04 bill gates is richer than you by philip greenspun sun oct 6 12 bill gates is richer than you bill gates is the pope of the personal computer industry bill gates is william bill gates is "biggest mac supporter at microsoft" by bryan chaffin bill gates is the co bill gates is william henry gates iii bill gates is ceo of microsoft corporation and author of the road ahead bill gates is not the only one who needs to think about antitrust bill gates is the chairman and ceo of microsoft corporation bill gates is going to have to physically come over to my house and lobotomize me before i believe that ie is not just an application bill gates is a nice man really bill gates is dead bill gates is still rich bill gates is a big enough devil to justify the government in coercively putting him down bill gates is a racist i play windows solitaire alot bill gates is thinking along the same lines bill gates is known mostly for his founding of microsoft he also has done a number of programming jobs before becoming the bill gates is right? to bill gates is scheduled to testify in antitrust case in dc bill gates is having a mid bill gates is richer than all african countries put together bill gates is so powerful that microsoft has just declared itself a nuclear state bill gates is the richest man in the world \[via [Googlism](http://www.googlism.com/who_is/b/bill_gates/)\] --- title: "Bloody cool: Share Keyboard/Mouse between computers" url: "https://osherove.com/blog/2003/3/31/bloody-cool-share-keyboardmouse-between-computers.md" canonical: "https://osherove.com/blog/2003/3/31/bloody-cool-share-keyboardmouse-between-computers.html" published: "2003-03-31T18:34:00" updated: "2003-03-31T18:34:00" tags: ["Cool Tools", "Off Topic"] author: "Roy Osherove" description: "Synergy -- Share Keyboard/Mouse between computers [Cool Tools] - Posted @ 12:39 pm : PermLink Synergy (GPL) With synergy, all the computers on your desktop form a single virtual screen. You use the mouse and keyboard of…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Bloody cool: Share Keyboard/Mouse between computers By Roy Osherove March 31, 2003 In [Cool Tools](https://osherove.com/blog/category/cool-tools), [Off Topic](https://osherove.com/blog/category/off-topic) **Historical article** · Originally published March 31, 2003; technical details may be outdated. _Synergy -- Share Keyboard/Mouse between computers_ [_\[Cool Tools\]_](http://sastools.com/b2/category/CoolTools "category: Cool Tools") _-  Posted @ 12:39 pm: [PermLink](http://sastools.com/b2/post/79394117)_ [**_Synergy_**](http://synergy2.sourceforge.net/about.html) _(GPL)_ > _With synergy, all the computers on your desktop form a single virtual screen. You use the mouse and keyboard of only one of the computers while you use all of the monitors on all of the computers. You tell synergy how many screens you have and their positions relative to one another. Synergy then detects when the mouse moves off the edge of a screen and jumps it instantly to the neighboring screen. The keyboard works normally on each screen; input goes to whichever screen has the cursor._ _(via_ [**_LarkWare_**](http://larkware.com/Articles/TheDailyGrind35.html)_)_ \[via Sanjay's Coding Tips \] wow. that looks totally awsome! ## More in Cool Tools [All posts in Cool Tools](https://osherove.com/blog/category/cool-tools) - May 6, 2003 ### [A Solid Text Editor](https://osherove.com/blog/2003/5/6/a-solid-text-editor.html) - May 6, 2003 ### [KlipFolio](https://osherove.com/blog/2003/5/6/klipfolio.html) - Mar 13, 2003 ### [Free GUI component for VS .NET users](https://osherove.com/blog/2003/3/13/free-gui-component-for-vs-net-users.html) --- title: "Err.. Is there a way to put custom HTML in the Blog Header" url: "https://osherove.com/blog/2003/3/31/err-is-there-a-way-to-put-custom-html-in-the-blog-header.md" canonical: "https://osherove.com/blog/2003/3/31/err-is-there-a-way-to-put-custom-html-in-the-blog-header.html" published: "2003-03-31T18:27:00" updated: "2003-03-31T18:27:00" tags: [] author: "Roy Osherove" description: "Just got this email: Dear Roy Osherove, You have laid a claim for ISerializable <http://www.blogshares.com/blogs.php?blog=http://dotnetweblogs.com/Rosherove/> To complete your claim you need to display the following…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Err.. Is there a way to put custom HTML in the Blog Header By Roy Osherove March 31, 2003 **Historical article** · Originally published March 31, 2003; technical details may be outdated. Just got this email: _Dear Roy Osherove,_ _You have laid a claim for ISerializable <http://www.blogshares.com/blogs.php?blog=http://dotnetweblogs.com/Rosherove/>_ _To complete your claim you need to display the following HTML on your blog's front page:_ _<a href="http://www.blogshares.com/blogs.php?blog=http%3A%2F%2Fdotnetweblogs.com%2FRosherove%2F&user=1681"><img src="http://www.blogshares.com/images/blogshares.jpg" alt="Listed on BlogShares" border="0" width="117" height="23"/></a>_ _Cheers,_ _Seyed Razavi <\[email removed\]>_ _BlogShares [http://www.blogshares.com/](http://www.blogshares.com/)_ Is there any way i can can make this happen? --- title: "BlogShares.... rules..??" url: "https://osherove.com/blog/2003/3/31/blogshares-rules-1.md" canonical: "https://osherove.com/blog/2003/3/31/blogshares-rules-1.html" published: "2003-03-31T18:17:00" updated: "2003-03-31T18:17:00" tags: [] author: "Roy Osherove" description: "just found out i'm on BlogShares . and i'm valued at 206$. is that a good thing?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BlogShares.... rules..?? By Roy Osherove March 31, 2003 **Historical article** · Originally published March 31, 2003; technical details may be outdated. just found out i'm on [BlogShares](http://www.blogshares.com/blogs.php?blog=http://dotnetweblogs.com/Rosherove/). and i'm valued at 206$. is that a good thing? [![Listed on BlogShares](https://osherove.com/img/wb/ba2b8ee0_www.blogshares.com_images_blogshares.jpg)](http://www.blogshares.com/blogs.php?blog=http%3A%2F%2Fdotnetweblogs.com%2FRosherove%2F&user=1681) --- title: "BlogShares.... rules..??" url: "https://osherove.com/blog/2003/3/31/blogshares-rules.md" canonical: "https://osherove.com/blog/2003/3/31/blogshares-rules.html" published: "2003-03-31T18:17:00" updated: "2003-03-31T18:17:00" tags: [] author: "Roy Osherove" description: "just found out i'm on BlogShares . and i'm valued at 206$. is that a good thing?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # BlogShares.... rules..?? By Roy Osherove March 31, 2003 **Historical article** · Originally published March 31, 2003; technical details may be outdated. just found out i'm on [BlogShares](http://www.blogshares.com/blogs.php?blog=http://dotnetweblogs.com/Rosherove/). and i'm valued at 206$. is that a good thing? [![Listed on BlogShares](https://osherove.com/img/wb/ba2b8ee0_www.blogshares.com_images_blogshares.jpg)](http://www.blogshares.com/blogs.php?blog=http%3A%2F%2Fdotnetweblogs.com%2FRosherove%2F&user=1681) --- title: "ASP.NET is cool + DataGrid Designer Tips" url: "https://osherove.com/blog/2003/3/31/aspnet-is-cool-datagrid-designer-tips.md" canonical: "https://osherove.com/blog/2003/3/31/aspnet-is-cool-datagrid-designer-tips.html" published: "2003-03-31T17:12:00" updated: "2003-03-31T17:12:00" tags: [".Net Original", "Tips & Tricks"] author: "Roy Osherove" description: "Forget my previous rants about ASP.NET. I was plain wrong. This stuff is cool ! I gave myself a little project : create a food ordering site for my company's intranet. Nothing fancy. but it should put me through all the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ASP.NET is cool + DataGrid Designer Tips By Roy Osherove March 31, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published March 31, 2003; technical details may be outdated. Forget my previous rants about ASP.NET. I was plain wrong. This stuff is **cool**! I gave myself a little project : create a food ordering site for my company's intranet. Nothing fancy. but it should put me through all the basics: 1\. Creating a data tier 2\. creating a business tier 3\. using the ASP.NET UI to do CRUD work. 4\. manage users using Forms Authentication 5\. Create a Web.UI.Page framework : page class inherited by all the site's pages 6\. create custom Web User Controls to serve as headers,footers, menu's etc.. and so on... So far i've managed to get through 1,2,3,5 abd 6. created 2 pages so far using the data grid and the Repeater control to update and delete user's and restaurants. I must say that ASP.NET is pretty darn cool - once you get into it's Zen. Once you do that - everything starts falling into place. There are a lot of quirks in this story. Being a Windows dev  guy practically my whole career - I shouldnt really be that excited about putting a grid on a page, filling it out and using its events to update and retrieve data. but i am. because i totally see how ASP programmers had to battle this thing is the "old" days (a few months ago...?) plus now i can see me writing my own website (soon... grasshopper!) I've also enlisted the help of a very helpful book : [ASP.NET WebSite Programming - Problem-Design-Solution](https://www.amazon.com/exec/obidos/tg/detail/-/1861006934/qid=1049143139/sr=8-1/ref=sr_8_1/104-4032469-8221526?v=glance&s=books&n=507846) By Marco Bellinaso and Kevin Hoffman - the C# edition. This book is NOT for the ASP.NET beginner. When i picked it up at first, i was totally blown away by the amount of knowledge that was assumed. but the steep learning cure paid off!  Once i got through the initial hurdles - the book totally makes sense. It describes a community website from bottom to top - 3- tiered architecture - with all the explantions i wanted. This was good for me having done 3-tiered winform and VB6 apps in the past, so i totally got the Data Layer and the Business layer design. th UI was a pure bonus. The thing that bothered me the most before reading this book was not the small stuff - how to do datagrids and so on - that's peanuts. What i was worried about was not having a "pattern" in my head for creating tiered applications in the .NET framework. I was not really sure how i should handle the ADO.NET change from ADO in VB6. Should i bubble up datasets? How should i implement Classes representing tables? Does the framework provide a better way (through the newly found OO features) to expose a data layer to the business layer? At first i was running on full gas - trying out typed datasets, designer produced Data adapters and CodeBehind and all that stuff. i soon realised I must get away from all that crap. It turns out that the basic design patterns I have used and learned in VB6 still apply in 98%  of the design in .NET. There were a few small imporvements, but the real pattern logic stayed the same for me - \* Build Data layer with Classes to represent Tables and Stored procedure calls on them, \* Build business objects representing logical objects that use the Table objects in the data layer and finally - \* build a UI that uses the Business objects framework. Some design changes from VB; \* In VB I Used the "Facade" design pattern using a global object that represents the database, with properies that are objects representing the tables in it. Now i use just classes that can be used both as logical objects and , using static methods, can also do some helper functions that i would use a different object for in VB 6 \* I now return Datasets from the business logic - which i wouldn't do in VB 6. in VB6 i would only contact the UI using objects, never recordsets. but the diconnected nature of ADO.NET lets me do this. hey, thats exactly what the dataset class was made for , right? There are probably more, smaller , design changes i'm not mentioning. Turning back to ASP,NET - i'll just say this about the data grid:   At first i was a bit intimidated by the amount of code required to use template columns and template items, but then i discovered something wonderful (yes i know this will sound geeky!) : You can **totally design the Column and item templaes visually using drag and drop**!. really. to do this: 1\. **create some template columns** (empty columns). either write them down in the HTML, or use the "property builder" in the context menu of the DataGrid designer. 2\. once you have those columns, **turn back to the datagrid in the designer**( not in html mode), and then right click on it. you'll see and "Edit Template" sub menu on the Context menu, which allows you to select which template column you'd like to visually design. just select one of the columns, and **voila**! you can just drag and drop into that template whatever you like - textboxes, lables etc.. it's just a like another web page design surface. hack, you can drag whole tables inside there. imagine writing that manually. The nice this is that in the visual designer of the Template column, you can design both the ItemTemplate and the EditItemTemplate columns, allowing you to work really really fast! 3\. **Setting the Bound properties of the visual objects in the designer**:   - select the textbox or label or whatever and open the propeties window \- select the top property - "DataBindings" and click the button \- Selected the property from the list you wich to bind, and on the right select "custom binding expression" \- write the expression as you would in the HTML :  "**DataBinder.Eval(Container.DataItem,"MyProperty")"** \-voila - you have a bound object in the datagrid without writing asingle line of HTML. \-you can open the HTML designer and see that the generated code is exactly as you would write it (except the newline formatting..) p.s I know i probably have lots of typos in this post, but i was in rush  and just had to spit it out. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 11, 2003 ### [Typed Datasets - Can You Get Much Cooler?](https://osherove.com/blog/2003/4/11/typed-datasets-can-you-get-much-cooler.html) - Apr 11, 2003 ### [Resolving Debugger Problems in VS.NET](https://osherove.com/blog/2003/4/11/resolving-debugger-problems-in-vsnet.html) - Mar 13, 2003 ### [Free GUI component for VS .NET users](https://osherove.com/blog/2003/3/13/free-gui-component-for-vs-net-users.html) - Mar 5, 2003 ### [Explorer Tips and tricks for the keyboard junkie](https://osherove.com/blog/2003/3/5/explorer-tips-and-tricks-for-the-keyboard-junkie.html) --- title: "back" url: "https://osherove.com/blog/2003/3/31/back.md" canonical: "https://osherove.com/blog/2003/3/31/back.html" published: "2003-03-31T17:12:00" updated: "2003-03-31T17:12:00" tags: [] author: "Roy Osherove" description: "Sorry i havn't written in a while. Had lots to learn. will post shortly.." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # back By Roy Osherove March 31, 2003 **Historical article** · Originally published March 31, 2003; technical details may be outdated. Sorry i havn't written in a while. Had lots  to learn. will post shortly.. --- title: "Code Express - Freeware code sharing client" url: "https://osherove.com/blog/2003/3/30/code-express-freeware-code-sharing-client.md" canonical: "https://osherove.com/blog/2003/3/30/code-express-freeware-code-sharing-client.html" published: "2003-03-30T02:20:00" updated: "2003-03-30T02:20:00" tags: [] author: "Roy Osherove" description: "Code-Express released to the public! beta Code-Express has officially been released to the public. Code-Express is a service to help software developers go beyond their limits, and deliver a high-quality product to…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Code Express - Freeware code sharing client By Roy Osherove March 30, 2003 **Historical article** · Originally published March 30, 2003; technical details may be outdated. _**Code-Express released to the public!**_ _**beta** Code-Express has officially been released to the public. Code-Express is a service to help software developers go beyond their limits, and deliver a high-quality product to their clients ahead of schedule. The Code-Express client (v1.0.x) is offered as a freeware product._ From the site: _**What does Code-Express do?**_ - _Code-Express allows you to view and share, components, source code, tools, code-snippets, and more, written by literally thousands of other developers - including you! The Code-Express client can run as a stand-alone executable, but it also has the ability to act as a plug-in for Microsoft Visual Basic 6. Additional effort is being put in to port Code-Express to Visual Studio.NET, so you will be able to access this great tool from within your .NET IDE as well!_ \[via [VBWire](http://www.vbwire.com/) \] --- title: "A thought" url: "https://osherove.com/blog/2003/3/27/a-thought.md" canonical: "https://osherove.com/blog/2003/3/27/a-thought.html" published: "2003-03-27T20:44:00" updated: "2003-03-27T20:44:00" tags: [] author: "Roy Osherove" description: "Is XML to applications (or distributed applications) like paper is to people??" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A thought By Roy Osherove March 27, 2003 **Historical article** · Originally published March 27, 2003; technical details may be outdated. Is XML to applications (or distributed applications) like paper is to people?? --- title: "Hit Count" url: "https://osherove.com/blog/2003/3/27/hit-count.md" canonical: "https://osherove.com/blog/2003/3/27/hit-count.html" published: "2003-03-27T20:27:00" updated: "2003-03-27T20:27:00" tags: [] author: "Roy Osherove" description: "I do wonder when will we be able to see the hit count for the blog(or for each post fo that matter..) although what we have so far is cool in it's own right ;) god speed, scott!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Hit Count By Roy Osherove March 27, 2003 **Historical article** · Originally published March 27, 2003; technical details may be outdated. I do wonder when will we be able to see the hit count for the blog(or for each post fo that matter..) although what we have so far is cool in it's own right ;)  god speed, scott! --- title: "ASP.NET + good news" url: "https://osherove.com/blog/2003/3/27/aspnet-good-news.md" canonical: "https://osherove.com/blog/2003/3/27/aspnet-good-news.html" published: "2003-03-27T20:08:00" updated: "2003-03-27T20:08:00" tags: [] author: "Roy Osherove" description: "Good news and bad news. the good news are that i got another 2 job interviews for next week. One on sunday for a small company for a position of a C# Team Leader on windows applications. The second one is next thursday…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ASP.NET + good news By Roy Osherove March 27, 2003 **Historical article** · Originally published March 27, 2003; technical details may be outdated. Good news and bad news. the good news are that i got another 2 job interviews for next week. One on sunday for a small company for a position of a C# Team Leader on windows applications. The second one is next thursday (a week from now) and it is for a company (rather large) that needs an ASP.NET programmer to create and manage it's corporate portal (intranet). just one person. both jobs sound great --- title: "Design Patterns in C#" url: "https://osherove.com/blog/2003/3/27/design-patterns-in-c.md" canonical: "https://osherove.com/blog/2003/3/27/design-patterns-in-c.html" published: "2003-03-27T09:27:00" updated: "2003-03-27T09:27:00" tags: [] author: "Roy Osherove" description: "The data & object factory folks have a pretty cool list of design patterns all in C#. It looks like a comprehensive list drawn from the Gang of Four book . [ StronglyTyped ] Cool! The actual source for each pattern is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Design Patterns in C\# By Roy Osherove March 27, 2003 **Historical article** · Originally published March 27, 2003; technical details may be outdated. The [data & object factory](http://www.dofactory.com/default.aspx) folks have a pretty cool list of [](http://www.dofactory.com/Patterns/Patterns.aspx#list)design patterns all in C#. It looks like a comprehensive list drawn from the [Gang of Four book](http://hillside.net/patterns/DPBook/DPBook.html). \[[StronglyTyped](http://www.stronglytyped.com/#200053397)\] Cool! The actual source for each pattern is located [here](http://www.dofactory.com/Patterns/Patterns.aspx). Would it be naughty of me to just paste the whole thing..? for the actual links you'll need to go to their site though :) <table width="100%"><tbody><tr><td colspan="2" height="14">  <b>Creational Patterns</b></td></tr><tr><td width="120">  Abstract Factory</td><td height="14">  Creates an instance of several families of classes</td></tr><tr><td width="120">  Builder</td><td height="14">  Separates object construction from its representation</td></tr><tr><td width="120">  Factory Method</td><td height="14">  Creates an instance of several derived classes</td></tr><tr><td width="120">  Prototype</td><td height="14">  A fully initialized instance to be copied or cloned</td></tr><tr><td width="120">  Singleton</td><td height="14">  A class of which only a single instance can exist</td></tr></tbody></table> <table width="100%"><tbody><tr><td colspan="2" height="14">  <b>Structural Patterns</b></td></tr><tr><td width="120">  Adapter</td><td height="14">  Match interfaces of different classes</td></tr><tr><td width="120">  Bridge</td><td height="14">  Separates an object’s interface from its implementation</td></tr><tr><td width="120">  Composite</td><td height="14">  A tree structure of simple and composite objects</td></tr><tr><td width="120">  Decorator</td><td height="14">  Add responsibilities to objects dynamically</td></tr><tr><td width="120">  Façade</td><td height="14">  A single class that represents an entire subsystem</td></tr><tr><td width="120">  Flyweight</td><td height="14">  A fine-grained instance used for efficient sharing</td></tr><tr><td width="120">  Proxy</td><td height="14">  An object representing another object</td></tr></tbody></table> <table width="100%"><tbody><tr><td colspan="2" height="14">  <b>Behavioral Patterns</b></td></tr><tr><td width="120">  Chain of Resp.</td><td height="14">  A way of passing a request between a chain of objects</td></tr><tr><td width="120">  Command</td><td height="14">  Encapsulate a command request as an object</td></tr><tr><td width="120">  Interpreter</td><td height="14">  A way to include language elements in a program</td></tr><tr><td width="120">  Iterator</td><td height="14">  Sequentially access the elements of a collection</td></tr><tr><td width="120">  Mediator</td><td height="14">  Defines simplified communication between classes</td></tr><tr><td width="120">  Memento</td><td height="14">  Capture and restore an object's internal state</td></tr><tr><td width="120">  Observer</td><td height="14">  A way of notifying change to a number of classes</td></tr><tr><td width="120">  State</td><td height="14">  Alter an object's behavior when its state changes</td></tr><tr><td width="120">  Strategy</td><td height="14">  Encapsulates an algorithm inside a class</td></tr><tr><td width="120">  Template Method</td><td height="14">  Defer the exact steps of an algorithm to a subclass</td></tr><tr><td width="120">  Visitor</td><td height="14">  Defines a new operation to a class without change</td></tr></tbody></table> --- title: "MSDN TV: AppSettings in ASP.NET" url: "https://osherove.com/blog/2003/3/27/msdn-tv-appsettings-in-aspnet.md" canonical: "https://osherove.com/blog/2003/3/27/msdn-tv-appsettings-in-aspnet.html" published: "2003-03-27T08:45:00" updated: "2003-03-27T08:45:00" tags: [] author: "Roy Osherove" description: "MSDN TV: AppSettings in ASP.NET ASP.NET provides an easy way to store common, global strings such as database connection strings. Quick Info File Name: 20030213ASPNETRH.EXE Download Size: 17233 KB Date Published:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MSDN TV: AppSettings in ASP.NET By Roy Osherove March 27, 2003 **Historical article** · Originally published March 27, 2003; technical details may be outdated. # MSDN TV: AppSettings in ASP.NET ASP.NET provides an easy way to store common, global strings such as database connection strings. <table><tbody><tr><td><table><tbody><tr><td colspan="2"><br><b>Quick Info</b></td></tr><tr><td><p><b>File Name:</b></p></td><td><p>20030213ASPNETRH.EXE</p></td></tr><tr><td><p><b>Download Size:</b></p></td><td><p>17233 KB</p></td></tr><tr><td><p><b>Date Published:</b></p></td><td><p>3/26/2003</p></td></tr><tr><td><p><b>Version:</b></p></td><td><p>1</p></td></tr></tbody></table><h2>Overview</h2><p>ASP.NET provides an easy way to store common, global strings such as database connection strings. Rather than scattering connection strings thoughout your applications we'll look at how you can use ASP.NET's AppSettings configuration settings.</p><p>[<a href="http://www.microsoft.com/downloads/details.aspx?familyid=dcca821c-b7c7-4e71-b391-16fdb68ef9ec&displaylang=en">MSFT Download Center</a>]</p></td><td></td><td><table width="175"><tbody><tr><td><table width="165"><tbody><tr><td colspan="2"></td><td></td><td colspan="2"></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td><b>AppSettings in ASP.NET</b><br>English<br><table width="100%"><tbody><tr><td><a href="http://download.microsoft.com/download/c/7/9/c79c786a-92e9-42ed-8274-5a08f2d478cb/20030213ASPNETRH.EXE">Download</a></td></tr></tbody></table></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td colspan="2" height="3" width="7"></td><td></td><td colspan="2" height="3" width="7"></td></tr><tr><td colspan="5"></td></tr></tbody></table><table width="165"><tbody><tr><td colspan="2"></td><td><b>Related Resources</b></td><td colspan="2"></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td><ul><li><a href="http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20030213ASPNETRH/manifest.xml">MSDN TV</a></li></ul></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td></tr><tr><td colspan="5"></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table> --- title: "Outlook bugs me" url: "https://osherove.com/blog/2003/3/26/outlook-bugs-me.md" canonical: "https://osherove.com/blog/2003/3/26/outlook-bugs-me.html" published: "2003-03-26T09:40:00" updated: "2003-03-26T09:40:00" tags: [] author: "Roy Osherove" description: "I find Outlook XP very annoying. Some of the Rules just don't work on arrived messages!! Most do, but some rules, especially ones applied on messages from a mailing list, just don't get moved to the specified folder.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Outlook bugs me By Roy Osherove March 26, 2003 **Historical article** · Originally published March 26, 2003; technical details may be outdated. I find Outlook XP very annoying. Some of the Rules just don't work on arrived messages!! Most do, but some rules, especially ones applied on messages from a mailing list, just don't get moved to the specified folder. funny thing is if i click on "Run Now" in the Rules Dialog and run that rule manually, it works just fine. What the hell is going on?? --- title: "I'm a Copy Cat" url: "https://osherove.com/blog/2003/3/26/im-a-copy-cat.md" canonical: "https://osherove.com/blog/2003/3/26/im-a-copy-cat.html" published: "2003-03-26T08:56:00" updated: "2003-03-26T08:56:00" tags: [] author: "Roy Osherove" description: "Just wanted to share this : I got the idea for the name of this blog by totally copying the cool idea of using the name of an interface . I got the idea from the naming of IUnknown . But I like the name. It pretty much…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I'm a Copy Cat By Roy Osherove March 26, 2003 **Historical article** · Originally published March 26, 2003; technical details may be outdated. Just wanted to share this : I got the idea for the name of this blog by totally copying the cool idea of using the name of an interface . I got the idea from the naming of  [IUnknown](http://www.iunknown.com/). But I like the name. It pretty much sums up the purpose of a blog using RSS feeds , don't it? --- title: "HOWTO: Create an XMLSerializer from a given XML string" url: "https://osherove.com/blog/2003/3/26/howto-create-an-xmlserializer-from-a-given-xml-string.md" canonical: "https://osherove.com/blog/2003/3/26/howto-create-an-xmlserializer-from-a-given-xml-string.html" published: "2003-03-26T07:32:00" updated: "2003-03-26T07:32:00" tags: [] author: "Roy Osherove" description: "Well, I got some great replies on my appearently rookie question..;) .I'll post them here for others to learn from. that's what it's all about , isn't it? The Problem : Given an XML string, create an instance of the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # HOWTO: Create an XMLSerializer from a given XML string By Roy Osherove March 26, 2003 **Historical article** · Originally published March 26, 2003; technical details may be outdated. Well, I got some great replies on my appearently rookie question..;) .I'll post them here for others to learn from. that's what it's all about , isn't it? **The Problem**: Given an XML string, create an instance of the XMLSerializer class, allowing you to construct or serialize an object of a specific type. There were two solutions right away. They both seem pretty darn obvious - once you read them :) thanks folks! ** **Solution 1: Use a stringBuilder Object to create a stream** <table width="100%"><tbody><tr><td>By : <a href="http://dotnetweblogs.com/Jan" id="_ctl0__ctl1_CommentList__ctl0_NameLink">Jan Tielens</a></td></tr><tr><td></td></tr><tr><td><span id="_ctl0__ctl1_CommentList__ctl0_PostText"><table width="100%"><tbody><tr><td></td></tr><tr><td></td></tr><tr><td><span id="_ctl0__ctl1_CommentList__ctl0_PostText">You can use the StringBuilder to create a stream.<br><br>I use it with CodeDom too, like this:<br>Private Function GetVBCode(ByVal code As CodeTypeDeclaration) As String<br>Dim gen As New VBCodeProvider<br><br>Dim sb As New System.Text.StringBuilder<br>Dim stream As New IO.StringWriter(sb)<br>gen.CreateGenerator().GenerateCodeFromType(code, stream, Nothing)<br>stream.Close()<br><br>Return sb.ToString<br>End Function<br></span></td></tr></tbody></table><br><br></span></td></tr></tbody></table> Solution 2:  Use a MemoryStream Object to translate the string into a stream, which is needed to intialize the XMLSerializer ** <table width="100%"><tbody><tr><td>By <a href="http://dotnetweblogs.com/Cweyer" id="_ctl0__ctl1_CommentList__ctl2_NameLink">Christian Weyer</a></td></tr><tr><td></td></tr><tr><td><span id="_ctl0__ctl1_CommentList__ctl2_PostText"><p><br><br>[...]<br>string xmlString = @"<?xml version='1.0' encoding='utf-8' ?><TestType><Number>42</Number><Value>Christian</Value></TestType>";<br><br>System.IO.MemoryStream ms = new System.IO.MemoryStream();<br>System.IO.TextWriter writer = new System.IO.StreamWriter( ms );<br>writer.Write(xmlString);<br>writer.Flush();<br><br>ms.Seek(0, System.IO.SeekOrigin.Begin);<br>XmlSerializer serializer = new XmlSerializer(typeof(TestType));<br>TestType tt = (TestType)serializer.Deserialize(ms);<br>[...]<br><br>public class TestType<br>{<br>public int Number;<br>public string Value;<br>}<br></p></span></td></tr></tbody></table> --- title: "CodeDOM is missing some stuff" url: "https://osherove.com/blog/2003/3/26/codedom-is-missing-some-stuff.md" canonical: "https://osherove.com/blog/2003/3/26/codedom-is-missing-some-stuff.html" published: "2003-03-26T07:02:00" updated: "2003-03-26T07:02:00" tags: [] author: "Roy Osherove" description: "Browsing through Managed space blog, Interesting insights into the CodeDOM found here . Mainly, what it can't do." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CodeDOM is missing some stuff By Roy Osherove March 26, 2003 **Historical article** · Originally published March 26, 2003; technical details may be outdated. Browsing through [Managed space](http://staff.develop.com/jasonw/weblog/) blog,  Interesting insights into the CodeDOM found [here](http://staff.develop.com/jasonw/weblog/2003/03/04.html#a162). Mainly, what it **can't**do. --- title: "ArrrrgggH!" url: "https://osherove.com/blog/2003/3/26/arrrrgggh.md" canonical: "https://osherove.com/blog/2003/3/26/arrrrgggh.html" published: "2003-03-26T06:47:00" updated: "2003-03-26T06:47:00" tags: [] author: "Roy Osherove" description: "How the hell do I initialize an XML serializer instance, given an XML string (not a file name) ? ARRGGHH I shouldnt have to Persist the XML string to a file and then read it back using an XMLReader, should I? that would…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ArrrrgggH! By Roy Osherove March 26, 2003 **Historical article** · Originally published March 26, 2003; technical details may be outdated. How the **hell** do I initialize an XML serializer instance, given an XML string (not a file name) ? ARRGGHH I shouldnt have to Persist the XML string to a file and then read it back using an XMLReader, should I? that would be ridiculous!! This is probably one of those "well, i could have done that" things that you are just to blind to see since they are right in front of you! --- title: "SQL injection explained in depth" url: "https://osherove.com/blog/2003/3/26/sql-injection-explained-in-depth.md" canonical: "https://osherove.com/blog/2003/3/26/sql-injection-explained-in-depth.html" published: "2003-03-26T06:28:00" updated: "2003-03-26T06:28:00" tags: [] author: "Roy Osherove" description: "Two more nice articles posted regarding SQL injection. A bit late, but here they are: Sounds like an explanation on how .NET can mitigate it... For more background, check out Advanced SQL Injection and More Advanced SQL…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SQL injection explained in depth By Roy Osherove March 26, 2003 **Historical article** · Originally published March 26, 2003; technical details may be outdated. Two more nice articles posted regarding SQL injection. A bit late, but here they are: _Sounds like an explanation on how .NET can mitigate it... For more background, check out_ [_Advanced SQL Injection_](http://www.nextgenss.com/papers/advanced_sql_injection.pdf) _and_ [_More Advanced SQL Injection_](http://www.nextgenss.com/papers/more_advanced_sql_injection.pdf)_; they're excellent._ \[[John Lambert](http://radio.weblogs.com/0106756/2003/03/24.html#a633)\] \[via [Incessant Ramblings](http://headblender.com/joe/blog/archives/geekness/001002.html#001002)\] --- title: "Shared Source CLI Essentials Book is out + more about specialization" url: "https://osherove.com/blog/2003/3/26/shared-source-cli-essentials-book-is-out-more-about-speciali.md" canonical: "https://osherove.com/blog/2003/3/26/shared-source-cli-essentials-book-is-out-more-about-speciali.html" published: "2003-03-26T05:56:00" updated: "2003-03-26T05:56:00" tags: [] author: "Roy Osherove" description: "According to O'Reilly the book Shared Source CLI Essentials by Stutz, Neward and Shilling is available as of today. Congratulations to David, Ted & Geoff on this major achievement! [ All Things Distributed ] Wow. That…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Shared Source CLI Essentials Book is out + more about specialization By Roy Osherove March 26, 2003 **Historical article** · Originally published March 26, 2003; technical details may be outdated. _According to_ [_O'Reilly_](http://www.oreilly.com/catalog/) _the book_ [_Shared Source CLI Essentials_](http://www.oreilly.com/catalog/sscliess/) _by Stutz, Neward and Shilling is available as of today. Congratulations to David, Ted & Geoff on this major achievement!_ \[[All Things Distributed](http://weblogs.cs.cornell.edu/AllThingsDistributed/archives/000039.html)\] Wow. That looks like something to sink your teeth in! I'll just add this book to my amazon Wish List and keep wishing.... ;) **p.s** This makes another good point to my [previous post](http://dotnetweblogs.com/Rosherove/posts/4292.aspx)  in reply to [DataGrid Girl's post](http://dotnetweblogs.com/DatagridGirl/posts/4253.aspx) about specialization and generality: Even though i know that today and in the near future touching ROTOR will be only a side hobby and nothing close to work related, I'd still want to look at it, browse through the book and get a better understanding of the thoughts and processes behind this huge thing. I know i probably wont get very indepth in to the book, but i'll know i have learnt enough to add some richness and background to my .Net knwoledge and expertise.  **Another example** : A couple of times a month i get hit with questions (usually **I** ask myself these questions...) about some stuff that i don't know how to do. It is **then** that the stuff i have browsed through over the years really comes in to play. I can usually faintly remember something i played with a few months ago, or an article i read somewhere about something related to the issue at hand. the _important_ thing is that i am not in a bubble. I am  usually just a few clicks away from the information that i need to find and where to find it ( and sometimes **where** to find it is just as important, or you can get lost in mountains of unrelated information..). --- title: "Specialization reviewed" url: "https://osherove.com/blog/2003/3/26/specialization-reviewed.md" canonical: "https://osherove.com/blog/2003/3/26/specialization-reviewed.html" published: "2003-03-26T04:33:00" updated: "2003-03-26T04:33:00" tags: [] author: "Roy Osherove" description: "OK, Sorry I havn't yet responded to DataGridGirl's Post about focusing on one thing and getting really good at it. I was actually thinking about that quite a lot. She sure makes a good point: \"it's a lot easier to be…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Specialization reviewed By Roy Osherove March 26, 2003 **Historical article** · Originally published March 26, 2003; technical details may be outdated. OK, Sorry I havn't yet responded to [DataGridGirl's Post](http://dotnetweblogs.com/DatagridGirl/posts/4253.aspx) about focusing on one thing and getting really good at it. I was actually thinking about that quite a lot. She sure makes a good point: _"it's a lot easier to be really good at something when you're focused on one thing, rather than doing a little bit of everything.  When I have extra coding time, I usually work on an experiment that's Datagrid-related, rather than just any interesting area that strikes my fancy.  This means I've done more interesting things with Datagrids than most people out there, because I focus on it.  If you're only doing one thing, you have a better chance at doing it well._" \[Color preserved for authenticity ;)\] But i do tend to lean towards the "know a lot of things in general, a few more in depth and one or two very much in depth". This allows you to "know where to look for answers" when needed. Later, you slowly sink into more and more details. sort of like a map in which you stare from a far, looking at the whole picture of where you are, then slowly zooming in and out of different places. when you need to know how to get somewhere, you'll know the major roads and be able to follow them. Oddly enough, I take the same approach in day to day life. when the weekend newspaper arrives, I tend to browse through everything very lightly, marking in my mind any special points of interest to go back to. then I slowly begin a re-read - this time a little more in-depth browsing - of the paper.  then I actually do **another** re-read, reading totally into the sections i liked. One rational behind this approach is very simple - I don't read the paper alone, and i don't have much time to read it all. so this lets me pinpoint the areas that are most in need of a good read.. ;) Call me crazy, but this way I feel like i don't miss out on anything important... Sure, I won't get a following out of this, but i feel that in the end I'll be able to do different stuff. I think versatilty is key in our chosen profession. **plus**, If i see something new and really cool - I just can't help but play with it mercilessly ;) That said, Specialization is very **very** important. infact, if it wouldn't exist - people would invent it :) .  but seriously - All the lecturers,writers and .Net celebrities (and not just in our area) out there - they are all invited and interviewed because of specialization in their area. But did they focus on one specific thing from the start on? i don't think they did. I think they played around with LOTS of stuff, and decided to take on one or two of these. yet they have a broad shallow (sometimes in depth too) knowledge of lots of other stuff.. So  - my point - if there was one , was to just make it clear that i totally support specialization, but i don't think i have gotten to a stage where i can safely say that i will focus on one thing.I still need to do some soul searching in a way, which would allow me to say "yes, ive pretty much covered the big topics, and now i can focus on something smaller". --- title: "Acceptance Test" url: "https://osherove.com/blog/2003/3/26/acceptance-test.md" canonical: "https://osherove.com/blog/2003/3/26/acceptance-test.html" published: "2003-03-26T03:47:00" updated: "2003-03-26T03:47:00" tags: [] author: "Roy Osherove" description: "A few new blogs I've taken a liking to: ISerializable : Roy Osherove's persistent thoughts Chris Pirillo : Getting Screwed While Everybody Else is Getting Laid SCOTUSblog : All about the Supreme Court of the United…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Acceptance Test By Roy Osherove March 26, 2003 **Historical article** · Originally published March 26, 2003; technical details may be outdated. _A few new blogs I've taken a liking to:_ - [_ISerializable_](http://dotnetweblogs.com/Rosherove/)_: Roy Osherove's persistent thoughts_ - [_Chris Pirillo_](http://chris.pirillo.com/)_: Getting Screwed While Everybody Else is Getting Laid_ - [_SCOTUSblog_](http://www.goldsteinhowe.com/blog/index.cfm)_: All about the Supreme Court of the United States_ _As John would say, "RSS subscribed and whatnot."_ \[[Incessant Ramblings](http://headblender.com/joe/blog/archives/weblogs/001016.html)\] Thanks! I'm flattered. I'm also flattered to be in the same group as Chris Pirillo, which i watch almost daily on TechTV (Yes, our little province has cable!). Need I mention that I read Joe's Blog on a regular basis? --- title: "Kubi client is pretty cool" url: "https://osherove.com/blog/2003/3/25/kubi-client-is-pretty-cool.md" canonical: "https://osherove.com/blog/2003/3/25/kubi-client-is-pretty-cool.html" published: "2003-03-25T09:22:00" updated: "2003-03-25T09:22:00" tags: [] author: "Roy Osherove" description: "Just playing around with the Kubi Client beta for Outlook . very nice. Integrates within outlook to manage projects and tasks. kinda like PlanPlus for outlook, but different. I suggest you try it yourself ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Kubi client is pretty cool By Roy Osherove March 25, 2003 **Historical article** · Originally published March 25, 2003; technical details may be outdated. Just playing around with the Kubi Client beta for Outlook . very nice. Integrates within outlook to manage projects and tasks. kinda like PlanPlus for outlook, but different. I suggest you [try it yourself](http://www.kubisoftware.com/). --- title: "DataGrid Girl rules" url: "https://osherove.com/blog/2003/3/24/datagrid-girl-rules.md" canonical: "https://osherove.com/blog/2003/3/24/datagrid-girl-rules.html" published: "2003-03-24T20:07:00" updated: "2003-03-24T20:07:00" tags: [] author: "Roy Osherove" description: "The DataGrid Girl just stopped by and gave a useful peice of advice about my User Group dilemma . Thanks. I think i'll do just that. By the way - i heard you on the last .Net Rocks show! You sound even cuter then your…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # DataGrid Girl rules By Roy Osherove March 24, 2003 **Historical article** · Originally published March 24, 2003; technical details may be outdated. The DataGrid Girl just stopped by and gave a useful peice of advice about my [User Group dilemma](http://dotnetweblogs.com/Rosherove/posts/4230.aspx). Thanks. I think i'll do just that. By the way - i heard you on the last [.Net Rocks](http://www.franklins.net/dotnetrocks.asp) show! You sound even cuter then your [website](http://www.datagridgirl.com/)   - which I found pretty helpful a few weeks ago ;) I should focus on a particular area of .Net and create a following too ;) --- title: "C# Team Chat - was i blind??" url: "https://osherove.com/blog/2003/3/24/c-team-chat-was-i-blind.md" canonical: "https://osherove.com/blog/2003/3/24/c-team-chat-was-i-blind.html" published: "2003-03-24T19:50:00" updated: "2003-03-24T19:50:00" tags: [] author: "Roy Osherove" description: "I just found through jesse ezell that chats are happening quite often with MSFT members and teams about very cool stuff. How did i miss that? Find all chat related stuff here . the last chat he mentioned was with the C#…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # C\# Team Chat - was i blind?? By Roy Osherove March 24, 2003 **Historical article** · Originally published March 24, 2003; technical details may be outdated. I just found through [jesse ezell](http://dotnetweblogs.com/Jezell/posts/4219.aspx) that chats are happening quite often with MSFT members and teams about very cool stuff. How did i miss that?  Find all chat related stuff [here](http://msdn.microsoft.com/chats/) . the last chat he mentioned was with the C# team about the future featrues. pretty darn interesting [transcript](http://msdn.microsoft.com/chats/vstudio/vstudio_032103.asp) :) --- title: "Job Interviews" url: "https://osherove.com/blog/2003/3/24/job-interviews.md" canonical: "https://osherove.com/blog/2003/3/24/job-interviews.html" published: "2003-03-24T19:34:00" updated: "2003-03-24T19:34:00" tags: [] author: "Roy Osherove" description: "<plug> 1st : Yes, I am looking for a new job and we are willing to relocate to the US *hint* ;)<plug> I had 2 job interviews today and one yesterday. Yesterday was for a large corporate type company for a .Net/VB6…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Job Interviews By Roy Osherove March 24, 2003 **Historical article** · Originally published March 24, 2003; technical details may be outdated. <plug>**1st**: Yes, I am looking for a new job and we are willing to relocate to the US \*hint\* ;)<plug> I had 2 job interviews today and one yesterday. Yesterday was for a large corporate type company for a .Net/VB6 development role. Today one was for a local internet applications company for web developer using asp/asp.net and later i got into an interesting interview with a small startup company that ,of course, claims to have the next big thing on their hands. what i saw was quite impressive. The main feeling though is first "Man, is great to be wanted again!". Ive been hunting job ads in the paper for the last 3-4 months and the dry spell i was having was amazing. It totally got me down. But now i feel much more confident about my future. **The first company** (corporate b0rg type) seemed really nice. I have never worked for a company this size before. The biggest place i worked in had 80 people working there. this one has a thousand. Hell, i'm excited to think we'd have our own dining hall! . plus, i think it would be a good experience for me to discover corporate life. perhaps fooling around with small startups with no job security was good for a while (but i still got a spark out of the last job interview  in that startup..) but now it's time to try and be useful for a change(my wife and I want to buy a house and later have some kids - i can't d that if i'm unemployed..). who knows. I am looking for a company that would take care of me just as i would take care of it - send me to courses, help me learn new things and generally [appreciate what i do](http://dotnetweblogs.com/Rosherove/Story/4192.aspx). That company looked like it provides those things. so that is something i would have to think long and hard about (provided , of course, that i would pass the next two interviews with them..). **The second company** wanted a web developer - which i am **not** at this time. however, they were impressed with my current skill set and did not reject me right away. tommorow i am having a conversation with one of their tech guys to see just how much effort and time would it be on my part to learn the web technology stuff. I never had any problem learning new stuff. I actually thrive on it so hopefully that door will not be shut to me. **The third company** - A startup - interview was held at the CEO's house. actually, his basement!. What he showed me there was quite an amazing piece of software (sorry, can't tell you) and i can definatly see a future for that product. They just got invested in and are looking for a few good people. I was one of the 20 they picked out. The company should be up and running in all new offices by April 1st and i got an offer to join - provided i pass the next interview. no talk of slary just yet. but it looked very interesting. One thing though - do i REALLY want to get mixed up in another startup affair? hell, i barely lived the current one (it isn't over yet - i'll shut up about it..). should i believe all the promises and sweet talk? god knows ive heard all this before (actually - some of the words were EXACTLY the same) and that didn't turn out very well. So . in the end i am left with 3 very different paths to take (well - none of them is a sure thing yet. actually the second one is almost a definite closed door..) : **1 - Corporate life (med-large size company - 1000 emp.)**\- more then fair salary/smaller mind/job security 2 - **Web developer life(small size company - 50 emp.)** - a smaller salary then today/fair amount of creativity allowed/job security not so good - maybe 1-3 years 3 - **Startup life** **(10 people and a dog)-** a much higher salary then today/very big mind and creativity allowed/No job security for more then a year Man. I wish i get to ponder which to choose. that would be a great feeling! But what do you think is the best course of action for me? **p.s** I just dicovered the [Microsoft Careers](http://dotnetweblogs.com/Rosherove/Story/4192.aspx) site, thanks to [Dev Hawk](http://devhawk.net/). Looks like i will be spending some time in the resume section over there .... --- title: "Yikes! people sure have problems debugging!" url: "https://osherove.com/blog/2003/3/24/yikes-people-sure-have-problems-debugging.md" canonical: "https://osherove.com/blog/2003/3/24/yikes-people-sure-have-problems-debugging.html" published: "2003-03-24T18:58:00" updated: "2003-03-24T18:58:00" tags: [] author: "Roy Osherove" description: "OMG! The amount of referrer links i get from google on the article i pasted in regarding resolving debugeer problems is quite large! I guess the there are still a few more bugs to sort out for the Everett release... It…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Yikes! people sure have problems debugging! By Roy Osherove March 24, 2003 **Historical article** · Originally published March 24, 2003; technical details may be outdated. OMG! The amount of referrer links i get from google on the article i pasted in regarding [resolving debugeer problems](http://dotnetweblogs.com/Rosherove/Story/3695.aspx) is quite large! I guess the there are still a few more bugs to sort out for the Everett release... It feels great though. I feel like i'm actually helping someone out ;) --- title: "My own user group & INETA - the next generation" url: "https://osherove.com/blog/2003/3/24/my-own-user-group-amp-ineta-the-next-generation.md" canonical: "https://osherove.com/blog/2003/3/24/my-own-user-group-amp-ineta-the-next-generation.html" published: "2003-03-24T18:55:00" updated: "2003-03-24T18:55:00" tags: [] author: "Roy Osherove" description: "INETA finally set the link streight to register a new User Group. Great. But i'm still holding. I keep getting second thoughts. Julia Lerman Posted a nice message about how great things are going for her with the user…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My own user group & INETA - the next generation By Roy Osherove March 24, 2003 **Historical article** · Originally published March 24, 2003; technical details may be outdated. [INETA](http://www.ineta.org/) finally set the link streight to register a new User Group. Great. But i'm still holding. I keep getting second thoughts.[Julia Lerman](http://dotnetweblogs.com/JLerman) Posted a nice message about [how great things are going for her](http://dotnetweblogs.com/jlerman/posts/4217.aspx) with the user group and what great speakers they're getting.She also referred to my [previous post](http://dotnetweblogs.com/rosherove/posts/4114.aspx) and offered a helping hand.  That's great Julie, and thanks for the offer to help. But. I really should think about joining in the VB User Group, which has some great sessions from time to time. however,  both the VB and the VC user groups have something in common - they both appeal to an audience that comes from languages **prior** to .Net. My vision is a group that is soley based on .Net languages which would focus on all things not Webby (since there is already a .net web developers UG here..) I think i'm getting cold feet , but i feel like i want to lead something like this (yes, this is motivated partly by personal ambition - believe it or not!) . Would it be a good idea to register a group, try to get the thing rollin and then stop if it does not work out? My first instinct says "no, don't start something you're only half sure about". but  then again - arn't all the great things achieved with a grain of fear of the unknown? If i were reading my own post i would probably comment something like this: " I would suggest, Roy, That you first try to contact the VB UG manager and ask about options on how you can help manage the group. If you like what you hear, start helping out, see if you like it. If you do and you feel like something is missing that cannot be filled with in this group - then would be your time to make your move. That would also allow you to be in good standing with the UG management community and there probably won't be any hard feelings if you left for your own endeavors. " err. must...stop...pondering... what do you think? p.s - Would it be concievable to bring some of the famous names like don box or Ken Getz to israel to lecture? I ponder whether the language barrier would be too high. on the other hand - people who go to these things probably have their necks burried in english texts anyway. But the speed of the talk from a native english speaker  - I could see how that could be a problem in certain scenarios.... I know that if they came here (there is a Tech-Ed here in about a month and a half or so \*hint\*) that would be a blast. Ive been listening to a lot of the talks on [.Net Rocks](http://www.franklins.net/dotnetrocks.asp) radio and i wish i could be there and talk to these guys in person. --- title: "CommandBuilder Internals and alternatives" url: "https://osherove.com/blog/2003/3/24/commandbuilder-internals-and-alternatives.md" canonical: "https://osherove.com/blog/2003/3/24/commandbuilder-internals-and-alternatives.html" published: "2003-03-24T10:48:00" updated: "2003-03-24T10:48:00" tags: [] author: "Roy Osherove" description: "I spent last week developing our data management layer. Most of my testing was done with the CommandBuilder. Although it is a handy type, I found some limitations, so I developed our own custom model. I wish Bill's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CommandBuilder Internals and alternatives By Roy Osherove March 24, 2003 **Historical article** · Originally published March 24, 2003; technical details may be outdated. _I spent last week developing our data management layer.  Most of my testing was done with the CommandBuilder.  Although it is a handy type, I found some limitations, so I developed our own custom model.  I wish Bill's article would have come out a week sooner:_ [_http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadonet/html/CommandBuilder.asp_](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadonet/html/CommandBuilder.asp) \[[Greg Robinson](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadonet/html/CommandBuilder.asp)\] Great article. I Especially liked this remark from the article: "_Let's lay a little foundation first, for those getting started with Microsoft® ADO.NET. ADO.NET uses new technology to expose updatable rowsets. Well, it's not all that new if you're familiar with the Microsoft® Visual Basic 6.0 Data Object Wizard. (Homer Simpson would pronounce it, "D'Oh!")_" D'OH indeed!!. I never knew about the data object wizard. Man this could have saved me some very precious hours along the way......... **D'OH**! --- title: "Free Crystal Reports ebook" url: "https://osherove.com/blog/2003/3/24/free-crystal-reports-ebook.md" canonical: "https://osherove.com/blog/2003/3/24/free-crystal-reports-ebook.html" published: "2003-03-24T10:22:00" updated: "2003-03-24T10:22:00" tags: [] author: "Roy Osherove" description: "Free Crystal Reports ebook The first Crystal Reports .NET book for programmers. * Covers ASP.NET and Windows Forms * Teaches all phases of development * Alerts you to the bugs and how to get around them * Maps out the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free Crystal Reports ebook By Roy Osherove March 24, 2003 **Historical article** · Originally published March 24, 2003; technical details may be outdated. [_Free Crystal Reports ebook_](https://osherove.com/redirect.asp?newsid=4424) _The first Crystal Reports .NET book for programmers. \* Covers ASP.NET and Windows Forms \* Teaches all phases of development \* Alerts you to the bugs and how to get around them \* Maps out the ReportDocument object \* Shows runtime customization \* Demonstrates connecting with ADO.NET \* Complete code listings._ \[[DotNetWire](http://www.dotnetwire.com/)\] Direct link to the book chapter list  is [here](http://www.crystalreportsbook.com/Chapters.asp) --- title: "Windows CE.NET Device Emulator Samples" url: "https://osherove.com/blog/2003/3/24/windows-cenet-device-emulator-samples.md" canonical: "https://osherove.com/blog/2003/3/24/windows-cenet-device-emulator-samples.html" published: "2003-03-24T07:54:00" updated: "2003-03-24T07:54:00" tags: [] author: "Roy Osherove" description: "These Emulation Kit Projects are for use with the Microsoft® Windows® CE .NET Device Emulator. They are sample platforms, each with a custom skin to showcase some of the capabilities of Windows CE .NET.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Windows CE.NET Device Emulator Samples By Roy Osherove March 24, 2003 **Historical article** · Originally published March 24, 2003; technical details may be outdated. _These Emulation Kit Projects are for use with the Microsoft® Windows® CE .NET Device Emulator. They are sample platforms, each with a custom skin to showcase some of the capabilities of Windows CE .NET._ [http://www.microsoft.com/downloads/details.aspx?familyid=77c223ab-b01f-4173-bebf-b0d24d0f0606](http://www.microsoft.com/downloads/details.aspx?familyid=77c223ab-b01f-4173-bebf-b0d24d0f0606) \[MSFT download center\] --- title: "w00t???!!" url: "https://osherove.com/blog/2003/3/24/w00t.md" canonical: "https://osherove.com/blog/2003/3/24/w00t.html" published: "2003-03-24T04:47:00" updated: "2003-03-24T04:47:00" tags: [] author: "Roy Osherove" description: "Who the hell invented 'w00t' ?? it's the most stupid sounding word i have ever heard!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # w00t???!! By Roy Osherove March 24, 2003 **Historical article** · Originally published March 24, 2003; technical details may be outdated. Who the hell invented ['w00t'](http://www.geocities.com/hydranoda/sg/dictionary.html)?? it's the most stupid sounding word i have ever heard! --- title: "The letter you wanted to write" url: "https://osherove.com/blog/2003/3/23/the-letter-you-wanted-to-write.md" canonical: "https://osherove.com/blog/2003/3/23/the-letter-you-wanted-to-write.html" published: "2003-03-23T17:44:00" updated: "2003-03-23T17:44:00" tags: [] author: "Roy Osherove" description: "I know plenty of people who would write something like this: \"Hi there boss. You probably don't know me. I work in your company. *Your company* which you have founded .You walk past by me when you enter the company at…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The letter you wanted to write By Roy Osherove March 23, 2003 **Historical article** · Originally published March 23, 2003; technical details may be outdated. I know plenty of people who would write something like this: "Hi there boss. You probably don't know me. I work in your company. \*Your company\* which you have founded .You walk past by me when you enter the company at mid-noon, not even sending a glance or a smile or a small "hey". You walk past us like we were ghosts. We are your developers. We created all this "stuff" that you are desperately trying to sell to other companies. We have to answer to those claims, you know. We work hard. The situation is bad. We work harder, yet you can't even bring yourself to say "good morning" to us, who have worked for you for several years now. Some of us gave up better paying offers because of false promises you have made. We worked like dogs for nights on end in more then one occasion. Never once did you decide to stop and say "good job" or "Keep going. You just go on, with your sealed face and you astronomical salary, leaving us behind, trying to wonder what the hell is going to happen next. In my opinion It's customary to gather the employees once a \* your time frame of choice\* or so and explain the current road map, where we are headed, what is expected, what are the difficulties.  Just to keep people in the loop. Instead, you break off these meetings each and every time, disappearing into the 5.30 shadows as if all is well. Well it's not. We are tired. Tired of this abuse. We won't stand for this much longer. You must understand that people are your most precious asset, and their loyalty is what will help you stay alive. Do you know what is the first thing to happen once the market situation calms down and things will be a little bit more normal? You'll be left with an empty company. Please read this and understand that we both want to succeed. I want to be a good programmer and do the stuff you pay me for, but I also want to advance myself, learn new things, and most importantly, like any person, be appreciated for my efforts. Sincerely, Joe programmer." --- title: "Russel Beattie Turned down an offer from MSFT" url: "https://osherove.com/blog/2003/3/23/russel-beattie-turned-down-an-offer-from-msft.md" canonical: "https://osherove.com/blog/2003/3/23/russel-beattie-turned-down-an-offer-from-msft.html" published: "2003-03-23T11:07:00" updated: "2003-03-23T11:07:00" tags: [] author: "Roy Osherove" description: "Russel Beattie Turned down an offer from MSFT to attend and influence a microsoft Mobius Conference on the claim that he is usually Anti-MSFT in life and work, but \"thanks, i'm flattered\". I do believe this is a grave…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Russel Beattie Turned down an offer from MSFT By Roy Osherove March 23, 2003 **Historical article** · Originally published March 23, 2003; technical details may be outdated. Russel Beattie [Turned down](http://www.russellbeattie.com/notebook/20030322.html#031611) an offer from MSFT to attend and influence a microsoft Mobius Conference on the claim that he is usually Anti-MSFT in life and work, but "thanks, i'm flattered". I do believe this is a grave mistake.  If you intened to be anti-something, wouldnt you like to know it from within? Plus, it might seem a bit patronizing and silly to divert your looks from the so called "enemy". It's like your almost **afraid** youll learn something that will change your views about them. I think in a good argument you must give the opponent a chance to speak - and what better chance to hear him then that conference? Also, I don't think you would have lost the credibility of your peers, plus if you would have kept it streight, telling pros and cons like the usual, there would be no reason to think that you drank the kool-aid . The ones that would think so would be totally wrong. As long as you keep it streight. Just because you go to a MSFT convention doasn't mean you are one with the b0rg. hell , some would call it "open minded". Iv'e read what you answered to the comments on that post, and i do understand the "what would i look like if my trip was paid for my MSFT?" attitude. but look at this this way: there are plenty (of thousands) of indipendent newspapers and journalists that get invited to show opening, tech previews, movie openings, new car displays  and so on - all at the expense of the one who invited them. These are usually well respected journalists who come to report on the new stuff they see, and still manage to keep their credibility even though they didnt pay for a dime. I think this is a big **big** loss, and a missed opertunity. --- title: "A letter" url: "https://osherove.com/blog/2003/3/23/a-letter.md" canonical: "https://osherove.com/blog/2003/3/23/a-letter.html" published: "2003-03-23T09:58:00" updated: "2003-03-23T09:58:00" tags: [] author: "Roy Osherove" description: "OK. I've decided to censor myself for once. And i hate every second of it! but The comments ive recieved sure have a point, which ive taken into consideration.Ive written a little Story that depicts a letter that a lot…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A letter By Roy Osherove March 23, 2003 **Historical article** · Originally published March 23, 2003; technical details may be outdated. OK. I've decided to censor myself for once. And i **hate** every second of it!  but The comments ive recieved sure have a point, which ive taken into consideration.Ive written a [little Story](http://dotnetweblogs.com/Rosherove/Story/4192.aspx) that depicts a letter that a lot of employees could write to their boss these days...  Now if only i could erase the incriminating comments ..;) --- title: "The Kool-Aid FAQ" url: "https://osherove.com/blog/2003/3/23/the-kool-aid-faq.md" canonical: "https://osherove.com/blog/2003/3/23/the-kool-aid-faq.html" published: "2003-03-23T09:21:00" updated: "2003-03-23T09:21:00" tags: [] author: "Roy Osherove" description: "The Kool-Aid FAQ - totally bizarre" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Kool-Aid FAQ By Roy Osherove March 23, 2003 **Historical article** · Originally published March 23, 2003; technical details may be outdated. The [Kool-Aid FAQ](http://www.cs.uu.nl/wais/html/na-dir/food/kool-aid-faq.html) \- totally bizarre --- title: "Writing Managed Sinks for SMTP and Transport Events" url: "https://osherove.com/blog/2003/3/23/writing-managed-sinks-for-smtp-and-transport-events.md" canonical: "https://osherove.com/blog/2003/3/23/writing-managed-sinks-for-smtp-and-transport-events.html" published: "2003-03-23T04:30:00" updated: "2003-03-23T04:30:00" tags: [] author: "Roy Osherove" description: "This technical article and sample event sinks assist developers in creating SMTP and Transport event sinks using Microsoft Visual Stuidio .NET and the .NET Framework.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Writing Managed Sinks for SMTP and Transport Events By Roy Osherove March 23, 2003 **Historical article** · Originally published March 23, 2003; technical details may be outdated. _This technical article and sample event sinks assist developers in creating SMTP and Transport event sinks using Microsoft Visual Stuidio .NET and the .NET Framework._ [http://www.microsoft.com/downloads/details.aspx?familyid=0cd7f344-cad6-416e-9bc1-0d7c214e1d0b](http://www.microsoft.com/downloads/details.aspx?familyid=0cd7f344-cad6-416e-9bc1-0d7c214e1d0b) \[MSFT download center\] --- title: "My own user group & INETA - continued" url: "https://osherove.com/blog/2003/3/20/my-own-user-group-amp-ineta-continued.md" canonical: "https://osherove.com/blog/2003/3/20/my-own-user-group-amp-ineta-continued.html" published: "2003-03-20T20:01:00" updated: "2003-03-20T20:01:00" tags: [] author: "Roy Osherove" description: "I tried all day to find the link to apply for a new user group . no luck. i finally got a call from one of the community relations liaison folks saying that they too cannot find the link. it was probably due to the site…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # My own user group & INETA - continued By Roy Osherove March 20, 2003 **Historical article** · Originally published March 20, 2003; technical details may be outdated. I tried all day to find the link to [apply for a new user group](http://www.ineta.org/). no luck. i finally got a call from one of the community relations liaison folks saying that they too cannot find the link. it was probably due to the site be repaved with new features (like forums..). anyway, the situation is still the same. guess i'll have to wait a day with the whole thing. Anyway, this whole **forced pause** got me thinking. perhaps the current groups existing today in israel (all 4 of them)  already cover all the bases for a user group on .NET? are we out of topics to concentrate on? And what if i wanted to start a user group just because i wanted to create one ,even if it already overlaps some of the issues. isn't this the kind of thing where "the more the marrier" is a rule? I am trying to think about the pros and cons of creating a User group in this case : **cons** : \* You might sweep away some people from other user groups (fix: use a non-overlapping meeting time thus actually allowing people to be in more the one user group at a time thus learning more..) \* You might not sweep enough people since they already have their source for learning what you teach (fix : Don;t overlap everything , and what you do overlap with - teach more hardcore and advanced material of) \* Other user groups managers would possibly be offended or thing i am invading their own space..? (not sure if this is possible since we are all here to learn arn't we? fix: talk to the other user groups founders before setting this whole thing up) **pros**: \* You spread the word of .NET even more \* You might teach materials and expand on others thus being productive, not recycled.. \* I get to run the show and get the lecturers i want to see (not enough foreign lectures in IMHO) What do you think? what am i missing here? --- title: "Are you into YOYOing?" url: "https://osherove.com/blog/2003/3/20/are-you-into-yoyoing.md" canonical: "https://osherove.com/blog/2003/3/20/are-you-into-yoyoing.html" published: "2003-03-20T14:21:00" updated: "2003-03-20T14:21:00" tags: [] author: "Roy Osherove" description: "So i got this cool little Yoyo/Something else hybrid thingie, and it totally rocks! It's called AstroJax" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Are you into YOYOing? By Roy Osherove March 20, 2003 **Historical article** · Originally published March 20, 2003; technical details may be outdated. So i got this cool little Yoyo/Something else hybrid thingie, and it totally rocks! It's called [AstroJax](http://www.astrojax.com/) --- title: "Free Goodies" url: "https://osherove.com/blog/2003/3/20/free-goodies.md" canonical: "https://osherove.com/blog/2003/3/20/free-goodies.html" published: "2003-03-20T09:06:00" updated: "2003-03-20T09:06:00" tags: [] author: "Roy Osherove" description: "The complete code for controls in Developing Microsoft ASP.NET Server Controls and Components can be downloaded from MSDN . Too bad I already wrote the DatePicker about an hour ago... this ListView control might be…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free Goodies By Roy Osherove March 20, 2003 **Historical article** · Originally published March 20, 2003; technical details may be outdated. _The complete code for controls in Developing Microsoft ASP.NET Server Controls and Components can be downloaded from_ [_MSDN_](http://www.microsoft.com/downloads/details.aspx?FamilyID=f6ec1d69-f4ea-4567-86e1-99f8949fa7e5&DisplayLang=en)_. Too bad I already wrote the DatePicker about an hour ago... this ListView control might be useful though. Lots of interesting goodies here that you might find a place for (HtmlEditor, ScrollablePanel, etc.). Admittedly, it might not take more than a few minutes to create some of these yourself, but I'm sure you have better things to do than write custom controls all day long :-)._ \[via [Jezzel](http://dotnetweblogs.com/Jezell/posts/4067.aspx)\] cool. --- title: "NET Compact Framework 1.0 Redistributable" url: "https://osherove.com/blog/2003/3/20/net-compact-framework-10-redistributable.md" canonical: "https://osherove.com/blog/2003/3/20/net-compact-framework-10-redistributable.html" published: "2003-03-20T08:58:00" updated: "2003-03-20T08:58:00" tags: [] author: "Roy Osherove" description: "The Microsoft® .NET Compact Framework 1.0 Redistributable includes everything you need to run .NET Compact Framework applications, including the Common Language Runtime and the .NET Compact Framework class library.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NET Compact Framework 1.0 Redistributable By Roy Osherove March 20, 2003 **Historical article** · Originally published March 20, 2003; technical details may be outdated. The Microsoft® .NET Compact Framework 1.0 Redistributable includes everything you need to run .NET Compact Framework applications, including the Common Language Runtime and the .NET Compact Framework class library. [http://www.microsoft.com/downloads/details.aspx?familyid=78974b4d-1bc6-4f29-8bd5-5ad5a37c7408](http://www.microsoft.com/downloads/details.aspx?familyid=78974b4d-1bc6-4f29-8bd5-5ad5a37c7408) \[MSFT Download Center\] --- title: "I want to start a .Net user group" url: "https://osherove.com/blog/2003/3/20/i-want-to-start-a-net-user-group.md" canonical: "https://osherove.com/blog/2003/3/20/i-want-to-start-a-net-user-group.html" published: "2003-03-20T07:45:00" updated: "2003-03-20T07:45:00" tags: [] author: "Roy Osherove" description: "I want to start a User group in israel for .Net stuff. There are already several groups in Israel : * IVBUG : Israeli VB User group i regularly go to this one, but it has content mainly for VB programmers, and i use C#…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I want to start a .Net user group By Roy Osherove March 20, 2003 **Historical article** · Originally published March 20, 2003; technical details may be outdated. I want to start a User group in israel for .Net stuff. There are already several groups in Israel : \* [IVBUG](http://www.ineta.org/GroupDetail.aspx?GroupID=126&tabindex=1) : Israeli VB User group i regularly go to this one, but it has content mainly for VB programmers, and i use C# as my main language. \*[IVCBUG](http://www.ineta.org/GroupDetail.aspx?GroupID=173&tabindex=1) \- Like the first but for C/C++ programmer. deals with C# but with C++ as well (not for me..) \*[Junior developers Group](http://www.ineta.org/GroupDetail.aspx?GroupID=472&tabindex=1) \- The one that microsoft adopted and will be re-creating in redmond (recieved award from Bill Gates(TM))   15-18 crowd only.. \*.[NET Web Developers](http://www.ineta.org/GroupDetail.aspx?GroupID=419&tabindex=1)     Lead and support web development technologies. target ASP.NET and Mobile development as well.   i wanted to focus first on Winforms and remoting stuff - rich applications ,sockets and GUI design, basically, anything that falls between the seats of the other user groups. I heared that [INETA](http://www.ineta.org/) supports new user groups and helps them out by contacting lecturers around the world and other useful things. Their website has a "Create a user group" part which tells you what you need to register a user group there and among other things it says "Fill out On line registration form" but alas, none is to be found. so i contacted one of the User Group Relations Committee liaisons to ask. we'll see what happens next... btw, [INETA](http://www.ineta.org/) looks to have some pretty cool resources and the new forums look really helpful. --- title: "Sun Plans VB-Like Tools For Java" url: "https://osherove.com/blog/2003/3/18/sun-plans-vb-like-tools-for-java.md" canonical: "https://osherove.com/blog/2003/3/18/sun-plans-vb-like-tools-for-java.html" published: "2003-03-18T07:38:00" updated: "2003-03-18T07:38:00" tags: [] author: "Roy Osherove" description: "Sun Plans VB-Like Tools For Java Posted by timothy on Monday March 17, @03:51PM from the click-move-done dept. CokoBWare writes \"Sun apparently is trying to create a more VB-like experience for developer. This article…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Sun Plans VB-Like Tools For Java By Roy Osherove March 18, 2003 **Historical article** · Originally published March 18, 2003; technical details may be outdated. **[Sun Plans VB-Like Tools For Java](http://developers.slashdot.org/developers/03/03/17/2033222.shtml?tid=102&tid=108&tid=156)** **Posted by** [**timothy**](http://www.monkey.org/~timothy/) **on Monday March 17, @03:51PM** **from the click-move-done dept.** CokoBWare writes _"Sun apparently is trying to create a more VB-like experience for developer. This article from E-Week explains [Sun's strategy in providing more VBesque](http://www.eweek.com/article2/0,3959,935909,00.asp) tools for the Java developer. Can anyone say "Good luck Sun, and all the best"?"_ \[via [SlashDot](http://developers.slashdot.org/developers/03/03/17/2033222.shtml?tid=102&tid=108&tid=156)\] interseting.... --- title: "Empty your recycle bin to shutdown faster" url: "https://osherove.com/blog/2003/3/18/empty-your-recycle-bin-to-shutdown-faster.md" canonical: "https://osherove.com/blog/2003/3/18/empty-your-recycle-bin-to-shutdown-faster.html" published: "2003-03-18T07:24:00" updated: "2003-03-18T07:24:00" tags: [] author: "Roy Osherove" description: "The incomparable Ian Griffiths wrote on the WinTech Off Topic mailing list today: When I try to shut down, reboot, suspend, or hibernate my laptop, it sits and thrashes, often for minutes, before giving me the \"Turn Off…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Empty your recycle bin to shutdown faster By Roy Osherove March 18, 2003 **Historical article** · Originally published March 18, 2003; technical details may be outdated. _The incomparable_ [_Ian Griffiths_](https://www.amazon.com/exec/obidos/tg/detail/-/0596003382/qid=1047953999/sr=8-8/ref=sr_8_8/102-3270984-0097702?v=glance&s=books&n=507846) _wrote on the_ [_WinTech Off Topic_](http://groups.yahoo.com/group/win_tech_off_topic/message/16193) _mailing list today:_ > _When I try to shut down, reboot, suspend, or hibernate my laptop, it sits and thrashes, often for minutes, before giving me the "Turn Off Computer" window. (I'm running Windows XP Pro, and I'm referring to the window that pops up when you do Start Menu -> Turn Off Computer.)...It turns out that the thing that was causing the thrashing pre shutdown was that Windows was scanning my whole recycling bin before showing me the window. I'm not quite sure why - I guess there are certain events that cause it to go and check that the recycle bin isn't occupying more space than it should, and shutdown is one of those._ _I've often noticed a considerable delay between picking "Shut down" off the menu and actually seeing the damn menu appear. Really annoying. So today I tried emptying my Recycle Bin, and sure enough, the response became almost instantaneous. Sweet!_ \[via [CraigBlog](http://groups.yahoo.com/group/win_tech_off_topic/message/16193)\] Great advice! --- title: "Campus Enterprise Architect" url: "https://osherove.com/blog/2003/3/17/campus-enterprise-architect.md" canonical: "https://osherove.com/blog/2003/3/17/campus-enterprise-architect.html" published: "2003-03-17T07:23:00" updated: "2003-03-17T07:23:00" tags: [] author: "Roy Osherove" description: "ScottGu's Post on the Redmond campus buildings was intriguing in a weird sort of way, wasn't it?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Campus Enterprise Architect By Roy Osherove March 17, 2003 **Historical article** · Originally published March 17, 2003; technical details may be outdated. ScottGu's [Post](http://dotnetweblogs.com/ScottGu/posts/3872.aspx) on the Redmond campus buildings was intriguing in a weird sort of way, wasn't it? --- title: "Coding into the night" url: "https://osherove.com/blog/2003/3/16/coding-into-the-night.md" canonical: "https://osherove.com/blog/2003/3/16/coding-into-the-night.html" published: "2003-03-16T18:35:00" updated: "2003-03-16T18:35:00" tags: [] author: "Roy Osherove" description: "You all know these moments. You worked on something really hard for a serious amount of time, hacking away, discovering errors, finxing bugs, implementing pure cool stuff and then, finally, after all this time, you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Coding into the night By Roy Osherove March 16, 2003 **Historical article** · Originally published March 16, 2003; technical details may be outdated. You all know these moments. You worked on something really hard for a serious amount of time, hacking away, discovering errors, finxing bugs, implementing pure cool stuff and then, finally, after all this time, you press "play" and it just runs. Just like you thought it would look at the end. Your vision has come true. You thought of, designed ,investigated and implemented a cool piece of software, and it just runs. I really love these moments. I even cought myself raising my arms in the air and whispering a quiet "yahhh!" (don't wake the wife...) There is still lots to do, but from what it looks now my little project is really coming along. I don't wanna give away the ending, as i will be releasing my code as GPL, but just a taste would suffice: When what i wrote ran, i could write a .Net assembly which does Interop with a VB COM dll and a C++ COM dll, and i could trace through **all** the code (.Net-to-VB-to-C++-to-.Net again) using a simple "Trace.Write" call whenever i needed to and everything showed up on one specific place. But that's only the beginning of what i have planned.... --- title: "HREF EXEs are cool." url: "https://osherove.com/blog/2003/3/16/href-exes-are-cool.md" canonical: "https://osherove.com/blog/2003/3/16/href-exes-are-cool.html" published: "2003-03-16T09:36:00" updated: "2003-03-16T09:36:00" tags: [] author: "Roy Osherove" description: "Now, if I build a new version and copy those files to the appropriate web server directory... bang , everyone is running the new version the next time they launch the app. No update, no need to send out a \"new version\"…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # HREF EXEs are cool. By Roy Osherove March 16, 2003 **Historical article** · Originally published March 16, 2003; technical details may be outdated. _Now, if I build a new version and copy those files to the appropriate web server directory... **bang**, everyone is running the new version the next time they launch the app. No update, no need to send out a "new version" email, unless I just want to let the users know what is new... it is a good thing._ \[via [Duncan](http://dotnetweblogs.com/duncanma)'s blog\] That's definatly cool! i'll try it the next time i get the chance... --- title: "Using Memory Errors to Attack a Virtual Machine" url: "https://osherove.com/blog/2003/3/16/using-memory-errors-to-attack-a-virtual-machine.md" canonical: "https://osherove.com/blog/2003/3/16/using-memory-errors-to-attack-a-virtual-machine.html" published: "2003-03-16T06:25:00" updated: "2003-03-16T06:25:00" tags: [] author: "Roy Osherove" description: "Using Memory Errors to Attack a Virtual Machine Posted by michael on Saturday March 15, @03:03AM from the no-one-is-safe dept. gillus writes \"A very cool scientific paper from Appel and Govindavajhala that explains how…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Using Memory Errors to Attack a Virtual Machine By Roy Osherove March 16, 2003 **Historical article** · Originally published March 16, 2003; technical details may be outdated. <table width="100%"><tbody><tr><td><img alt="" decoding="async" height="16" loading="lazy" src="https://osherove.com/img/ext/images.slashdot.org_slc.gif" width="13"><b>Using Memory Errors to Attack a Virtual Machine</b></td></tr></tbody></table> [![Security](https://osherove.com/img/ext/images.slashdot.org_topics_topicsecurity.gif)](http://developers.slashdot.org/search.pl?topic=172)**Posted by michael on Saturday March 15, @03:03AM** **from the no-one-is-safe dept.** gillus writes _"A very cool [scientific paper](http://www.cs.princeton.edu/~sudhakar/papers/memerr.pdf) from Appel and Govindavajhala that explains how virtual machines like java or .Net can be exploited. How? Quite simple, bomb your DRAM chip with X-rays... or more simply with 50-watt spotlight, as the authors [demonstrate](http://www.cs.princeton.edu/~sudhakar/talks/memerr.ppt). Definitively worth a read!"_ **(** [**Read More...**](http://developers.slashdot.org/developers/03/03/14/214257.shtml?tid=172) | **[151](http://developers.slashdot.org/developers/03/03/14/214257.shtml?tid=172) of [223](http://developers.slashdot.org/article.pl?sid=03/03/14/214257&mode=thread&tid=172&threshold=-1)** comments **)** **\[via [SlashDot](http://slashdot.org/developers/)\]** **hmmm... interesting.....** --- title: ".Net Resources" url: "https://osherove.com/blog/2003/3/16/net-resources.md" canonical: "https://osherove.com/blog/2003/3/16/net-resources.html" published: "2003-03-16T04:52:00" updated: "2003-03-16T04:52:00" tags: [] author: "Roy Osherove" description: "Just found this Great .Net Resources link on Robert McLaws Blog . Lots 'o goodies in there!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Resources By Roy Osherove March 16, 2003 **Historical article** · Originally published March 16, 2003; technical details may be outdated. Just found this Great [.Net Resources](http://www.cetus-links.org/oo_dotnet.html) link on [Robert McLaws Blog](http://dotnetweblogs.com/RMcLaws). Lots 'o goodies in there! --- title: "SQL Injection prevented using OO techniqes" url: "https://osherove.com/blog/2003/3/16/sql-injection-prevented-using-oo-techniqes.md" canonical: "https://osherove.com/blog/2003/3/16/sql-injection-prevented-using-oo-techniqes.html" published: "2003-03-16T03:45:00" updated: "2003-03-16T03:45:00" tags: [] author: "Roy Osherove" description: "Here's a nice little article about a more OO way of handling SQL injection." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SQL Injection prevented using OO techniqes By Roy Osherove March 16, 2003 **Historical article** · Originally published March 16, 2003; technical details may be outdated. Here's [a nice little article](http://www.reflectionit.nl/SqlInsert.aspx) about a more OO way of handling SQL injection. --- title: "VB6 Common tasks translated to VB.Net" url: "https://osherove.com/blog/2003/3/15/vb6-common-tasks-translated-to-vbnet.md" canonical: "https://osherove.com/blog/2003/3/15/vb6-common-tasks-translated-to-vbnet.html" published: "2003-03-15T17:46:00" updated: "2003-03-15T17:46:00" tags: [] author: "Roy Osherove" description: "Found a nice little article that translates a few of the common VB6 tasks to VB.Net. It's right here ." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # VB6 Common tasks translated to VB.Net By Roy Osherove March 15, 2003 **Historical article** · Originally published March 15, 2003; technical details may be outdated. Found a nice little article that translates a few of the common VB6 tasks to VB.Net. It's right [here](http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=205&lngWId=10). --- title: "Remoting Life Saver" url: "https://osherove.com/blog/2003/3/15/remoting-life-saver.md" canonical: "https://osherove.com/blog/2003/3/15/remoting-life-saver.html" published: "2003-03-15T16:46:00" updated: "2003-03-15T16:46:00" tags: [] author: "Roy Osherove" description: "Ive run in to trouble with my .Config file exposing types that were written with typos and such. The remoting framework will not tell you it could not load the file, unless you explicitly tell it to: just before closing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Remoting Life Saver By Roy Osherove March 15, 2003 **Historical article** · Originally published March 15, 2003; technical details may be outdated. Ive run in to trouble with my .Config file exposing types that were written with typos and such. The remoting framework **will not tell you** it could not load the file, unless you explicitly tell it to: just before closing the "system.runtime.remoting" xml node, add this node: </ application> **<debug loadTypes="true"/>** </system.runtime.remoting> now you'll get an exception the next time the remoting service could not expose your type for whatever reason... --- title: "Drag 'n Drop Performance Counters!" url: "https://osherove.com/blog/2003/3/13/drag-n-drop-performance-counters.md" canonical: "https://osherove.com/blog/2003/3/13/drag-n-drop-performance-counters.html" published: "2003-03-13T21:13:00" updated: "2003-03-13T21:13:00" tags: [] author: "Roy Osherove" description: "Well, this is just cool. To use a performance counter, simply open the Server Explorer (CTRL+ALT+S) and open up the Performance counters node in the tree. select the counter you would like to use and... guess what? just…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Drag 'n Drop Performance Counters! By Roy Osherove March 13, 2003 **Historical article** · Originally published March 13, 2003; technical details may be outdated. Well, this is just cool. To use a performance counter, simply open the Server Explorer (CTRL+ALT+S) and open up the Performance counters node in the tree. select the counter you would like to use and... guess what? just drag and drop it onto a form or any component and use it like you would use a standard control! Now **that's** usability enhancement! Update: Well well! you get Drag 'n Drop with the **Message Queues** and **Event Logs**  nodes as well !! Way to go MSFT! --- title: ".Net Rocks Rocks!" url: "https://osherove.com/blog/2003/3/13/net-rocks-rocks.md" canonical: "https://osherove.com/blog/2003/3/13/net-rocks-rocks.html" published: "2003-03-13T21:02:00" updated: "2003-03-13T21:02:00" tags: [] author: "Roy Osherove" description: "I think i've written about this already, but i would like to stress the coolness and the sheer joy of listening to the insightful interviews that are broadcast on . Net Rocks radio show . Listen to Dan Appleman (My API…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Rocks Rocks! By Roy Osherove March 13, 2003 **Historical article** · Originally published March 13, 2003; technical details may be outdated. I think i've written about this already, but i would like to stress the coolness and the sheer joy of listening to the insightful interviews that are broadcast on .[Net Rocks radio show](http://www.franklins.net/dotnetrocks.asp). Listen to [Dan Appleman](http://www.desaware.com/)(My API Guru) , [Alan Cooper](http://www.cooper.com/)(My Interaction Design Guru), Mark Andres(My ASP.Net Guru-God-Creator-with-[Scott-Guthrie](http://dotnetweblogs.com/ScottGu/)), [Chris Sells](http://www.sellsbrothers.com/)(My new found .Net Guru) and lots of others talk about the insides of interesting stuff concerning the technology we work with, the attitudes we use, the psychology behind many things, how some things came to be as they are today .. It's like having the conversation you always wanted with your Guru of choice :).  I burn CD's of the Mp3 shows(most fit perfectly on an 80/700MB CD) and listen to them on my way to and from work. **Totally Recommended!** \[From the [.Net Rocks](http://www.franklins.net/dotnetrocks.asp) site\] [_Carl Franklin_](http://www.franklins.net/aboutcarl.asp) _and_ [_Mark Dunn_](http://www.franklins.net/markdunn.asp) _interview .NET experts and other industry movers and shakers, and answer your .NET questions on the air, all for the purpose of bringing you insights into .NET technology, the marketplace, and the state of software development in general._ [](http://www.bestbuy.com/Detail.asp?m=58&cat=63&scat=&e=11167170)_You can download the shows in **MP3** format or listen to a **Windows Media** audio stream._ --- title: "The equivalent of a VB6 ActiveX Exe using .Net would be..?" url: "https://osherove.com/blog/2003/3/13/the-equivalent-of-a-vb6-activex-exe-using-net-would-be.md" canonical: "https://osherove.com/blog/2003/3/13/the-equivalent-of-a-vb6-activex-exe-using-net-would-be.html" published: "2003-03-13T18:02:00" updated: "2003-03-13T18:02:00" tags: [] author: "Roy Osherove" description: "Does anyone know how to implement a public object that can be shared among different applications? In VB6 you could just implement a public object in a module inside an ActiveX EXE and expose it's instance when needed.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The equivalent of a VB6 ActiveX Exe using .Net would be..? By Roy Osherove March 13, 2003 **Historical article** · Originally published March 13, 2003; technical details may be outdated. Does anyone know how to implement a public object that can be shared among different applications? In VB6 you could just implement a public object in a module inside an ActiveX EXE and expose it's instance when needed. How do you do this in .NET? **Update**: Never mind . It just hit me that the way to do this in .NET is using remoting. A remoted Singleton object would act just the same as an Out-of-proc server ActiveX Exe in VB6. --- title: "Free GUI component for VS .NET users" url: "https://osherove.com/blog/2003/3/13/free-gui-component-for-vs-net-users.md" canonical: "https://osherove.com/blog/2003/3/13/free-gui-component-for-vs-net-users.html" published: "2003-03-13T12:53:00" updated: "2003-03-13T12:53:00" tags: [".Net Original", "Cool Tools"] author: "Roy Osherove" description: "Developer Express have released a cool GUI component XtraNavBar and it's completely FREE if you use VS.NET (You don't need to prove that you use it though.. :) ) It sure looks nice, don't it? Thanks, Dev Express! Get it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Free GUI component for VS .NET users By Roy Osherove March 13, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Cool Tools](https://osherove.com/blog/category/cool-tools) **Historical article** · Originally published March 13, 2003; technical details may be outdated. Developer Express have released a cool GUI component [XtraNavBar](http://www.devexpress.com/products/net/xtranavbar/msdn/index.asp) and it's completely FREE if you use VS.NET (You don't need to prove that you use it though.. :) ) It sure looks nice, don't it? Thanks, Dev Express! Get it [Here](http://www.devexpress.com/downloads/net/msdn/xtranavbar/index.asp): [![](https://osherove.com/img/wb/ac9d4180_www.devexpress.com_products_net_xtranavbar_msdn_images_collage3.jpg)](http://www.devexpress.com/downloads/net/msdn/xtranavbar/index.asp) ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Apr 11, 2003 ### [Resolving Debugger Problems in VS.NET](https://osherove.com/blog/2003/4/11/resolving-debugger-problems-in-vsnet.html) - Mar 31, 2003 ### [ASP.NET is cool + DataGrid Designer Tips](https://osherove.com/blog/2003/3/31/aspnet-is-cool-datagrid-designer-tips.html) - Mar 5, 2003 ### [Explorer Tips and tricks for the keyboard junkie](https://osherove.com/blog/2003/3/5/explorer-tips-and-tricks-for-the-keyboard-junkie.html) - Feb 22, 2003 ### [App.Config Magic](https://osherove.com/blog/2003/2/22/appconfig-magic.html) --- title: "Is there a big \"Escape\" button somewhere?" url: "https://osherove.com/blog/2003/3/13/is-there-a-big-quotescapequot-button-somewhere.md" canonical: "https://osherove.com/blog/2003/3/13/is-there-a-big-quotescapequot-button-somewhere.html" published: "2003-03-13T08:42:00" updated: "2003-03-13T08:42:00" tags: [] author: "Roy Osherove" description: "Working at a startup holds many wonderful benefits : 1) You create and edit powerpoint presentations - this of course takes all your day since the boss wants \"that line to be a little closer to that line\" and \"can you…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Is there a big "Escape" button somewhere? By Roy Osherove March 13, 2003 **Historical article** · Originally published March 13, 2003; technical details may be outdated. **Working at a startup holds many wonderful benefits :** 1) You create and edit powerpoint presentations  - this of course takes all your day since the boss wants "that line to be a little closer to that line" and "can you make it a big circle instead?" 2) You install new and exciting hardware on the companie's old NT 4.0 box 3) You are asked to "Burn some children games CDs" for your boss's kids 4) You will never EVER get a raise 5) You might get a pay cut 6) You may not mutter a word about it because you will lose your job 7) You do every thing that is not even remotly related to programming(And forget about .Net) 8) You forget how your wife looks and need a map to find your way back home (You havnt been there in a long time!) 9) Your boss lets himself treat his employees like C\*\*P Sorry. Did that sound bitter? Am i the only one who feels like this? btw, anyone looking for a skilled  .Net programmer who is willing to just sit, code and learn the hard stuff  (already with an MCP in C# winforms) - drop me a line --- title: "Helpful .Net Common tasks \"Howto\" page" url: "https://osherove.com/blog/2003/3/13/helpful-net-common-tasks-quothowtoquot-page.md" canonical: "https://osherove.com/blog/2003/3/13/helpful-net-common-tasks-quothowtoquot-page.html" published: "2003-03-13T05:47:00" updated: "2003-03-13T05:47:00" tags: [] author: "Roy Osherove" description: "The Big .Net Common Tasks HowTo page on DotNetJunkies is a very helpful aid to have around" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Helpful .Net Common tasks "Howto" page By Roy Osherove March 13, 2003 **Historical article** · Originally published March 13, 2003; technical details may be outdated. The Big [.Net Common Tasks HowTo page](http://www.dotnetjunkies.com/quickstart/howto/) on [DotNetJunkies](http://www.dotnetjunkies.com/) is a very helpful aid to have around --- title: "Serialization articles" url: "https://osherove.com/blog/2003/3/13/serialization-articles.md" canonical: "https://osherove.com/blog/2003/3/13/serialization-articles.html" published: "2003-03-13T03:48:00" updated: "2003-03-13T03:48:00" tags: [] author: "Roy Osherove" description: "Chris Sells is beginning to be ,it seems, one of my favorite .NET gurus. I seem to be checking out his site at least once a day and am tuned to any new stuff he writes there (at least on the RSS feed ). Also, Ive…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Serialization articles By Roy Osherove March 13, 2003 **Historical article** · Originally published March 13, 2003; technical details may be outdated. [Chris Sells](http://www.sellsbrothers.com/) is beginning to be ,it seems, one of my favorite .NET gurus. I seem to be checking out his site at least once a day and am tuned to any new stuff he writes there (at least on the [RSS feed](http://www.sellsbrothers.com/news/rss.aspx)). Also, Ive downloaded and burned several .[NET rocks radio shows](http://www.franklins.net/dotnetrocks.asp), one of which has him as a guest , and i found myself driving around, listening to the show and even waiting in my car in front of my house for the show to end before I can get out and continue with my life.  Now he's come up with a series of articles on serialization basics (in 3 parts), and although i know the very basics of the thing, i'll be sure to check out the little more advanced material presented there.  Here they are: **Note**: You will need to register with the site in order to be able to read them. ## [Serialization Basics, Part 1 of 3](http://www.windevnet.com/documents/s=7481/win1044571786904/) > This is the first of a 3 part series I wrote as an appendix to my WinForms book because I couldn't find the topic of object serialization covered adequately elsewhere in any of the popular texts. > > This part covers the basics of text and binary serialization for simple types. ## [Serialization Basics, Part 2 of 3](http://www.windevnet.com/documents/s=7481/win1045093344162/) > Continuing the discussion of serialization in .NET using formatters for custom types. ## [Serialization Basics, Part 3 of 3](http://www.windevnet.com/documents/s=7481/win1046801931106/) > My 3rd installment of the basics of serialization, this time covering how to customize the serialization process. --- title: "System.Windows.Forms.PropertyGrid 2" url: "https://osherove.com/blog/2003/3/12/systemwindowsformspropertygrid-2.md" canonical: "https://osherove.com/blog/2003/3/12/systemwindowsformspropertygrid-2.html" published: "2003-03-12T17:58:00" updated: "2003-03-12T17:58:00" tags: [] author: "Roy Osherove" description: "Following my previous post about the PropertyGrid control that comes out of the box with VS.NET, Here's some more. The Grid is very nice, but in order to bend it to your rules you need plenty of work. I found This…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # System.Windows.Forms.PropertyGrid 2 By Roy Osherove March 12, 2003 **Historical article** · Originally published March 12, 2003; technical details may be outdated. Following my [previous post](http://dotnetweblogs.com/Rosherove/posts/3714.aspx) about the PropertyGrid control that comes out of the box with VS.NET, Here's some more. The Grid is very nice, but in order to bend it to **your** rules you need plenty of work. I found [This Article](http://www.codeproject.com/cs/miscctrl/bending_property.asp) that explains everything you ever wanted to know about bending the PropertyGrid to work your way , elegantly. --- title: "Yey!" url: "https://osherove.com/blog/2003/3/12/yey.md" canonical: "https://osherove.com/blog/2003/3/12/yey.html" published: "2003-03-12T13:47:00" updated: "2003-03-12T13:47:00" tags: [] author: "Roy Osherove" description: "100 posts and counting..... Am i chatty or what??" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Yey! By Roy Osherove March 12, 2003 **Historical article** · Originally published March 12, 2003; technical details may be outdated. 100 posts and counting..... Am i chatty or what?? --- title: "System.Windows.Forms.PropertyGrid coolness" url: "https://osherove.com/blog/2003/3/12/systemwindowsformspropertygrid-coolness.md" canonical: "https://osherove.com/blog/2003/3/12/systemwindowsformspropertygrid-coolness.html" published: "2003-03-12T13:38:00" updated: "2003-03-12T13:38:00" tags: [] author: "Roy Osherove" description: "OK. maybe I'm a little slow, but has anyone else tried using the System.Windows.Forms.PropertyGrid control ? It needs to be referenced from the \"Customize toolbox\" menu of the \"tools\" tool window. I'm impressed.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # System.Windows.Forms.PropertyGrid coolness By Roy Osherove March 12, 2003 **Historical article** · Originally published March 12, 2003; technical details may be outdated. OK. maybe I'm a little slow, but has anyone else tried using the System.Windows.Forms.PropertyGrid  control ? It needs to be referenced from the "Customize toolbox" menu of the "tools" tool window. I'm impressed. Basically, it has the same functionality as the property Grid of the VS.NET IDE. You Assign the **.SelectedObject** property of the grid to any of your objects, and it uses **reflection** to display it's properties. It even lets you manage public collections exposed by the object using a seperate window (just like the VS.NET property grid..) and it's all out of the box functionality. One line of code gets you there and it's pretty customizable as well.  coolness. One quirk i came across: If you want it to manage your object's public collection of other objects, The object that is added to the collection must expose a default constructor(no params) which allows the default grid designer to create "new" items in the collection and then let you set properties for new items at run time visually. update: err. did that make any sense at all? what i meant in the last paragraph was this: Say you have an object of type "Bank" which has a public collection of "Client" objects named "BankClients". Once you set the "SelectedObject" property of the propertygrid, In the property grid you would see a "BankClients" entry which is described as "collection" and has a little button with 3 dots on it.  if you **click** that button, another dialog opens up and lets you manage the clients collection at run time, letting you add, update and remove client objects from the collection.  The **quirk** above means a Client object must have a default contructor, since in the dialog you get a "Add" button which is supposed to instansiate a new Client object and add it to the collection and then show it visually. then you can set the new objects properties in a property grid that appears in the dialog next to the object's name. However, since the dialog does not know(or does not care) of any non-default contructors, it will try to always call a default contructor of the object you want to add. if it has none, you get a nice little message box stating that the "Client() contructor has no implementation" or something of the sort.... phew. now i hope **that** made sense. --- title: "Article: Resolving Debugger problems" url: "https://osherove.com/blog/2003/3/12/article-resolving-debugger-problems.md" canonical: "https://osherove.com/blog/2003/3/12/article-resolving-debugger-problems.html" published: "2003-03-12T04:06:00" updated: "2003-03-12T04:06:00" tags: [] author: "Roy Osherove" description: "I've Added the article \" Resolving Debugger Problems \" to my blog. It is a document that I got from someone a few months ago which helped me a lot with many debugging problems i encountered (Especially ASP.NET…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Article: Resolving Debugger problems By Roy Osherove March 12, 2003 **Historical article** · Originally published March 12, 2003; technical details may be outdated. I've Added the article "[Resolving Debugger Problems](http://dotnetweblogs.com/Rosherove/Story/3695.aspx)" to my blog. It is a document  that I got from someone a few months ago which helped me a lot with many debugging problems i encountered (Especially ASP.NET debugging) and i thought I'd Have fun. --- title: "The VS7 Debugger doesn’t work. What can I do?" url: "https://osherove.com/blog/2003/3/11/the-vs7-debugger-doesnt-work-what-can-i-do.md" canonical: "https://osherove.com/blog/2003/3/11/the-vs7-debugger-doesnt-work-what-can-i-do.html" published: "2003-03-11T18:13:00" updated: "2003-03-11T18:13:00" tags: [] author: "Roy Osherove" description: "Note: This article can also be found in word format here . It was originally published on this site . Also, for you early adopters out there: Known debugger issues with VS8 beta1 The VS7 Debugger doesn’t work. What can…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The VS7 Debugger doesn’t work. What can I do? By Roy Osherove March 11, 2003 **Historical article** · Originally published March 11, 2003; technical details may be outdated. **Note: This article can also be found in word format [here](http://www.gotdotnet.com/team/csharp/learn/whitepapers/howtosolvedebuggerproblems.doc).** **It was originally published on [this site](http://www.gotdotnet.com/team/csharp/).** **Also, for you early adopters out there: [Known debugger issues with VS8 beta1](https://osherove.com/mkpark/articles/200151.aspx)** **The VS7 Debugger doesn’t work. What can I do?** By \[email removed\] (Visual CSharp Debugger QA team) **NOTE: Look for Additions at the end of the page!** Introduction. 1 ASP.NET Debugging. 2 Message: Unable to start debugging on the web server 2 Message: You do not have permission to debug the server 2 Message: Server side-error occurred on sending debug HTTP request. 3 Message: The project is not configured to be debugged. 4 Can start debugging without error message, but breakpoints are not hit. 5 Message: The debugger is not properly installed. 6 Message : The server does not support debugging of ASP.NET or ATL server applications. 6 Message: Access is denied. Verify that you are an administrator or a member of …... 6 Message: Could not start ASP.NET or ATL server debugging. 7 Message: Access is denied. 7 Can’t debug with an included File. 8 General Debugging. 8 Message: Unable to start debugging.  Unable to start program …... 8 Message: Unable to start debugging. Access is denied. 8 Can start Managed debugging, but PDB is not loaded. So, can’t hit any Breakpoints at all. 8 Managed debugging is not working. 9 Managed debugger doesn’t respond. 9 Stepping with C# code is not correct…... 9 Causality debugging: Stepping between web service client and web service. 10 Can’t set from web service client into web service. 10 After enabling impersonation of web service, can’t do causality stepping. 10 Debugger hangs. 11 Remote debugging. 11 Can’t see any processes on a remote machine. 11 Can’t connect to a remote machine because of RPC issue. 11 Remote debugging fails with machines on a work group. 12 **Windows Server 2003 problems**      aspnet\_regiis does not work on windows 2003 server  12 # Introduction During the last several months, I have dealt with many users from both inside and outside of Microsoft who have debugging issues. I noticed that there are many common mistakes and problems that can be solved, if users are provided with proper diagnosis. Hence, I’ve written this document to provide you with this information which will help you if you run into any issues while using the debugger. This document contains: - Error message dialog or description of error situation - The causes for error - How to fix the problem. And I especially thanks to VCS debugger team and other people who helped me to complete this document with various feed back. **Debugging issues** # ASP.NET Debugging             **\*If you can’t find the error message that you’re looking for in this section, please check the section which deals with general debugging issues or remote debugging issues.** ## _Message: Unable to start debugging on the web server_ Your IIS application of IIS is not configured to use “integrated Windows authentication”. Please make sure that the “integrated windows authentication” checkbox on the “authentication method” dialog box is checked. ## _Message: You do not have permission to debug the server_ - Cause 1: Make sure that “Integrated Windows Authentication” is enabled. Probably, you enabled only “Basic authentication” for Directory security of IIS.  - Cause 2: If you are using “Integrated Windows authentication”, you need to make sure that your user account has full control on the directory of the IIS. - Cause 3: If you created the web project with a full machine name (like “machinename.domainname.something”), the web site is recognized as “Internet” site. So the default setting of IE will impact on the behavior of log on. In this case, you need to enable logging on with your current user account in “Internet” area with IE setting. But it is not the default setting of IE, so you’d be better off if you create project with only the machine name. ## _Message: Server side-error occurred on sending debug HTTP request._ Cause 1: Your web application doesn’t have an Application name. Please check the properties of the web project using the IIS MMC to ensure that your web project has an application name You need to create an application name for debugging. Cause 2: If you are using the NTFS file format, please make sure that “aspnet” has proper privilege on “wwwroot” or your folder for virtual directory to access and write on the folders. ## _Message: The project is not configured to be debugged._ You need to make sure that your web is configured for debugging. To do this, you need set “debug = true” in the “web.config” file. You may find this file in your web project folder. ## _Can start debugging without error message, but breakpoints are not hit._ You started debugging with “F5” and it looks like debugging is started properly, and IE is launched properly. But you can’t hit a breakpoint on my code behind code. Cause 1: Please make sure that “asp.net debugging” is enabled in the properties of project. In the case of VB project, the UI is different. But you can recognize the equivalent one easily. Cause 2:  Please make sure that the expected DLL is loaded with matched debug symbol file. You can check it with “Modules” window. ## _Message: The debugger is not properly installed._ If you see this problem, please check debugging with console application project. And if the console application project shows the error message like It means that your .Net framework is not installed properly. So you need to register “mscordbi.dll” manually by executing “regsvr32 mscordbi.dll”.   ## _Message : The server does not support debugging of ASP.NET or ATL server applications._ If you have an XP Pro or W2K Pro machine, you may need to think about the order of installation between VS7 and IIS. If you install IIS after VS7, you will get this error. In this case, please register “aspnet\_isapi.dll” with “aspnet\_regiis.exe –i”. ## _Message: Access is denied. Verify that you are an administrator or a member of …_ You may not be the member of “Debugger users” group on the machine. Please add your user account into “Debugger users” group on the machine. To add your user account into “Debugger users” group, you need to do the following: 1.      Log in as “Administrator” 2.      Run  “Computer management” in “Administrator tools” 3.      Choose “Local users and groups\\groups” node 4.      Double-click “Debugger users” group on right pane. 5.      Click “Add” button on “Debugger users properties” dialog box. 6.      Type your user account and click “Ok” button. ## _Message: Could not start ASP.NET or ATL server debugging._ You may have installed “IIS Lockdown” tool. If so, Please find “urlscan.ini” file, and add “DEBUG”(case sensitive) into “\[allowverbs\]” section in “urlscan.ini” file. ## _Message: Access is denied._ You may be the member of “Debugger users” group, but you don’t have the right to debug the aspnet worker process, because you are not the “aspnet” user account or the member of “Administrators” group. Please add your user account to the “Administrators” group on the machine. ## _Can’t debug with an included File_ Inside of ASPX, you can't debug with an included file. It may easily happen, when you convert old ASP project to ASPX. If you include file with "", you may not be able to debug the include file properly. In this case, you need to use "". # General Debugging **These cases are based on “Console application” project type.** ## _Message: Unable to start debugging.  Unable to start program …_ You can’t start debugging because “mscordbi.dll” is not registered properly. Please register it manually. ## _Message: Unable to start debugging. Access is denied_ Please make sure that “Machine Debugger Manager” service is started properly. Please check that you are the member of “Debugger users” group or “administrators” group. ## _Can start Managed debugging, but PDB is not loaded. So, can’t hit any Breakpoints at all._ If you can start debugging and debuggee is launched properly, but you couldn’t hit any BP, you may need to check the installation of “diasymreader.dll”. The file may not be registered. So you need to register it manually. To register it, you need to do 1. find out “diasymreader.dll” 2. regsvr32 diasymreader.dll ## _Managed debugging is not working_ You attach to native process in CLR mode before the process creates the CLR object. Managed debugging is not working. Solution 1: Attach to the process after CLR code is used in the process. Solution 2: Attach to the process in InterOp mode. In this case, you don’t have to attach to the process after CLR code is invoked. ## _Managed debugger doesn’t respond_ When you start debugging with managed code, the debugger doesn’t respond at all. Please make sure that the “.Net framework support” service is stopped and disabled forever. (just stopping the service is not enough.) If you don’t have “.Net framework support” service, Please disable “IIS admin” service. It may help you. ## _Stepping with C# code is not correct…_ Consider the following code string someStr; someStr = "SomeValue"; if(someStr == null)     Console.WriteLine("what's up?"); try { } catch(Exception e) { } If you step through this code, you will see that when you step into the "if" statment, the instruction pointer is moved to the body("Console.WriteLine("what's up?");") of the "if" statement. This is not debugger bug, it is known issue with try catch block debug information. See the followingdisasembled code if(someStr == null) 0000002a  cmp         dword ptr \[ebp-18h\],0 0000002e  jne         0000003C Console.WriteLine("what's up?"); 00000030  mov         ecx,dword ptr ds:\[01C50070h\] 00000036  call        dword ptr ds:\[02F0257Ch\] 0000003c  jmp         00000048 catch(Exception e) 0000003e  mov         dword ptr \[ebp-1Ch\],eax 00000041  call        762C0846 00000046  jmp         00000048 } 00000048  nop       When the value is not matched, the instruction pointer is moved to "3c" line, but the line is mistakenly matched with the body of "if" statement. While the code functions correctly, the appearance is incorrect. # Causality debugging: Stepping between web service client and web service. ## _Can’t set from web service client into web service_ With the default settings, you can’t step from web service client into a web service. It works like step-over. The ASPNET worker process (aspnet\_wp.exe or w3wp.exe) is running under the “aspnet” or “network service” user accounts, and these accounts don’t have privilege to access MDM via DCOM. So you need to add these accounts into the “Debugger users” group. ## _After enabling impersonation of web service, can’t do causality stepping._ When impersonation is enabled for the web service with “web.config”, stepping into from web service client code to web service code is not working. So it works like step over. You need to do these things for correct stepping between client and service. \- turn off "Anonymous access" in IIS. \- change your clinet code to set credential to webservice like   Service1 obj = new Service1();   obj.Credentials =  System.Net.CredentialCache.DefaultCredentials; After this, you will be able to step into the web service from client. These are needed, because when you step into web service, some framework components need to use the system level debugger component (MDM) to cocreate it. If you don't give your proper credentials, it just fails to do the "cocreation". Without these the proper credentials, "step into" works like "step over" ## _Debugger hangs_ If your web service client code is running in STA(Single thread Apartment) model, and it is waiting for an async call completion like: Service1 obj = new Service1(); System.IAsyncResult ar = obj.BeginHelloWorld(new System.AsyncCallback(Class1.Handle),obj); while(ar.IsCompleted != true) {     System.Threading.Thread.Sleep(1000); } The debugger will hang. This hang occurs because one debugger component is locked by your code inside of debugger Solution 1: Change your code to use thread sync with event or mutext. Solution 2: Unregister “csm.dll”. In this solution, it will disable causality stepping (stepping from web service client code to web service method). You may need to attach to “aspnet\_wp.exe” manually for debugging web service. # Remote debugging ## _Can’t see any processes on a remote machine_ Can’t see any processes on a remote machine. Please make sure that you installed “Remote full debug” setup on the remote machine, and that you are a member of “debugger users” group. ## _Can’t connect to a remote machine because of RPC issue_ \* this information is from one of KB articles. Thanks for “Mike Clay” who wrote this KB. If you see the below error messages while you are connecting to remote machine with “Processes” dialog.    Error while trying to run project: Unable to start debugging on the web    server. Not enough storage is available to complete this operation. Or, you see the below, during ASP.NET debugging.    Error while trying to run project: Unable to start debugging on the web    server. Unable to map the debug start page URL to a machine name. Please make sure that RPC is working properly between your machine and the remote machine. the reason of RPC issue can be from 1\. Debugging through a firewall. Microsoft does not recommend or support remote    ASP.Net debugging through a firewall. The best way to do overcome this is use    Terminal Services to log into the remote server and debug locally. 2\. One common failure for RPC is the inability to resolve the remote machine    name. RPC relies on name resolution for communication between machines. If    you are unable to resolve the remote servers machine name to the correct IP    address errors may occur. 3\. RPC Traffic can flow in one direction but not the other. RPC traffic must be    able to go from the machine used to do the debugging to the remote server and    from the remote server back to the machine used to do the debugging in order    to successfully debug remotely. Make sure that RPC communication is enabled    in both directions. To analyze your RPC, you can use “RPCPing” tool. ## _Remote debugging fails with machines on a work group_ You have two XP Pro machines that are not on a domain, but on a work group. When you do remote debugging between them, you can’t access remote machine at all. What’s wrong with it? In the work group environment, you need to make sure that you have the same named user account on both machines with the same password. If not, DCOM will fail to authenticate you. There is one more consideration: On XP Pro, because of the default security setting for "sharing and security model for local accounts", this remote debugging is not allowed by default.  Below are the steps to change this setting:      1.       Run "Local Security Settings" in Administrator tools. 2.              Select "Security settings\\Local policies\\Security options. 3.              Change "Network access : Sharing and Security model for local accounts" from "Guest only - local users authenticate as Guest" to "Classic - local users authenticate as themselves". 4.              After this, you need to reboot the machine.  This change should be applied onto both machines for remote debugging. After you make the setting change, you will be able to do remote debugging with the same name user account on both machines. However, \*\*\*there is a concern with security with this change\*\*\*.  Because you changed default settings of the security model, it can expose: - Unexpected file sharing - Unexpected DCOM components sharing. Before you make this change, any kind of connection from remote machine to your machine was guaranteed as "Guest", but after this change, he/she could  be authenticated with your local user account. So, like the case of  debugging, if you are sharing out a folder or DCOM object, there is a  possibility that any matched user (same user name and same password) on other machine could access your shared objects. I strongly recommend that, if you want to use this work-around, you make sure that all user accounts have strong passwords, or should setup network-Island for the debugging machines to prevent any malicious attack. **Windows Server 2003 Problems** **\* aspnet\_regiis does not work on windows 2003 server** **Solution:** "you can work around it by setting the identity of the application pool (app pools rock), and this might be a much better overall solution for W2K3 anyways." \[via [Early&Adopter](http://radio.weblogs.com/0117167/2003/04/23.html#a259)\] --- title: "Try this in google :)" url: "https://osherove.com/blog/2003/3/11/try-this-in-google.md" canonical: "https://osherove.com/blog/2003/3/11/try-this-in-google.html" published: "2003-03-11T12:05:00" updated: "2003-03-11T12:05:00" tags: [] author: "Roy Osherove" description: "open Google, write \"French military victories\" and press \"I'm feeling lucky\"" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Try this in google :) By Roy Osherove March 11, 2003 **Historical article** · Originally published March 11, 2003; technical details may be outdated. open Google, write "French military victories" and press "I'm feeling lucky" --- title: ".NET show: \"Tell us about yourself, because we Care(TM)\"" url: "https://osherove.com/blog/2003/3/10/net-show-quottell-us-about-yourself-because-we-caretmquot.md" canonical: "https://osherove.com/blog/2003/3/10/net-show-quottell-us-about-yourself-because-we-caretmquot.html" published: "2003-03-10T12:25:00" updated: "2003-03-10T12:25:00" tags: [] author: "Roy Osherove" description: "Watching the .NET Show from MSDN brought mixed feelings. The show was about the .NET compact framework and had a nice little demo of using web services on Pocket PC apps. very nice. i was impressed. That was the good…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .NET show: "Tell us about yourself, because we Care(TM)" By Roy Osherove March 10, 2003 **Historical article** · Originally published March 10, 2003; technical details may be outdated. Watching the [.NET Show](http://msdn.microsoft.com/theshow/Episode029/default.asp) from MSDN brought mixed feelings. The show was about the .NET compact framework and had a nice little demo of using web services on Pocket PC apps. very nice. i was impressed. That was the good feeeling part. The MIXED feeling part was brought on when i saw the setion in the show known as \[email removed\].: Erika Wiechers interviews David Weise, Distinguished Engineer, Microsoft Corporation. Appearently, someone thought it would be a good idea to bring in every show someone who works for MSFT and just interview them. not just tech questions, the poor person is then asked personal questions about his hobbies by the interviewer (who looked like she could care less) and it all looked so "big brother wants to meet you , little man". If Saddam hussein would hold a talk show about working in his military and would ask the officier that was interviewed personal questions, this is what it would have looked like. At the end of the show the poor sap even sang some programmer "slavery" song and it all felt a bit like watching an accident. I could understand if the conversation was held by seleval programming peers or people who knew each other, but the following is just absurd: _Q: "I understand you like to go to the theater"_ _A: "Yes"_ _Q: "So whats ort of productions are going on right now in seattlle?"_ Huh? What is this? the national theater knowladge queeze? Does he get fired if his answer is not complete? Get real ,people. We want Tech related shows, not "Tell us about your self so we can appear to care about you" BS. --- title: "Compact framework resources needed" url: "https://osherove.com/blog/2003/3/10/compact-framework-resources-needed.md" canonical: "https://osherove.com/blog/2003/3/10/compact-framework-resources-needed.html" published: "2003-03-10T08:22:00" updated: "2003-03-10T08:22:00" tags: [] author: "Roy Osherove" description: "A friend asked me for reasons why he should consider creating mobile applications using compact framework. since this is not my \"thing\" for now, I could not give him good reasons or resources. Perhaps you can help me…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Compact framework resources needed By Roy Osherove March 10, 2003 **Historical article** · Originally published March 10, 2003; technical details may be outdated. A friend asked me for reasons why he should consider creating mobile applications using compact framework. since this is not my "thing" for now, I could not give him good reasons or resources. Perhaps you can help me compile a list of bonafied resources for compact framework. here are the resources i came up with: 1) [http://samples.gotdotnet.com/quickstart/CompactFramework/](http://samples.gotdotnet.com/quickstart/CompactFramework/) ... doh.... gotta go to lunch... ;) --- title: "Word 2003 CodeBehind using VS.NET sample video" url: "https://osherove.com/blog/2003/3/10/word-2003-codebehind-using-vsnet-sample-video.md" canonical: "https://osherove.com/blog/2003/3/10/word-2003-codebehind-using-vsnet-sample-video.html" published: "2003-03-10T07:59:00" updated: "2003-03-10T07:59:00" tags: [] author: "Roy Osherove" description: "Discover Visual Studio Tools for Office behind a Word document http://www.microsoft.com/downloads/details.aspx?familyid=4146be10-493f-4b2d-b324-084f9ead8164 [MSFT Download center RSS feed ] Damn! me LIKE what me sees :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Word 2003 CodeBehind using VS.NET sample video By Roy Osherove March 10, 2003 **Historical article** · Originally published March 10, 2003; technical details may be outdated. _Discover Visual Studio Tools for Office behind a Word document_ [_http://www.microsoft.com/downloads/details.aspx?familyid=4146be10-493f-4b2d-b324-084f9ead8164_](http://www.microsoft.com/downloads/details.aspx?familyid=4146be10-493f-4b2d-b324-084f9ead8164) \[MSFT Download center [RSS feed](http://www.thundermain.com/rss/)\] Damn!  me LIKE what me sees :) --- title: "InfoPath download link (and a lawsuit waiting to happen)" url: "https://osherove.com/blog/2003/3/10/infopath-download-link-and-a-lawsuit-waiting-to-happen.md" canonical: "https://osherove.com/blog/2003/3/10/infopath-download-link-and-a-lawsuit-waiting-to-happen.html" published: "2003-03-10T07:34:00" updated: "2003-03-10T07:34:00" tags: [] author: "Roy Osherove" description: "Appearently you can now download InfoPath Here . However, MSFT are yet to release their own version of it ;)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # InfoPath download link (and a lawsuit waiting to happen) By Roy Osherove March 10, 2003 **Historical article** · Originally published March 10, 2003; technical details may be outdated. Appearently you can now download InfoPath [Here](http://www.silicon-alley.com/cat/ipexe.html). However, MSFT are yet to release their own version of it ;) --- title: "Search in RSS feeds - ROOGLE" url: "https://osherove.com/blog/2003/3/10/search-in-rss-feeds-roogle.md" canonical: "https://osherove.com/blog/2003/3/10/search-in-rss-feeds-roogle.html" published: "2003-03-10T07:23:00" updated: "2003-03-10T07:23:00" tags: [] author: "Roy Osherove" description: "[ The FuzzyBlog ] What 10 odd Hours of Hacking Can Produce: An RSS Search Engine [via FurryGoat ] most excellent. this goes into my Favorites." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Search in RSS feeds - ROOGLE By Roy Osherove March 10, 2003 **Historical article** · Originally published March 10, 2003; technical details may be outdated. \[[The FuzzyBlog](http://radio.weblogs.com/0103807/2003/03/07.html#a1434)\] _What 10 odd Hours of Hacking Can Produce: An RSS Search Engine_ \[via [FurryGoat](http://www.furrygoat.com/archives/000292.html)\] most excellent. this goes into my Favorites. --- title: "Custom Attributes are goodness" url: "https://osherove.com/blog/2003/3/9/custom-attributes-are-goodness.md" canonical: "https://osherove.com/blog/2003/3/9/custom-attributes-are-goodness.html" published: "2003-03-09T13:46:00" updated: "2003-03-09T13:46:00" tags: [] author: "Roy Osherove" description: "Well, Iv'e been generating some code for a nice little project ive been working on, and one of the features of the product (I hope to talk about this in a future post) is that it allows plugins to generate custom trace…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Custom Attributes are goodness By Roy Osherove March 9, 2003 **Historical article** · Originally published March 9, 2003; technical details may be outdated. Well, Iv'e been generating some code for a nice little project ive been working on, and one of the features of the product (I hope to talk about this in a future post) is that it allows plugins to generate custom trace messages to be used in a client. The client uses and processes the trace messages using reflection (i.e Each message can have totally different properties, and it's up to the client to handle the changes).  I wanted to allow the plugin creator to mark some or all of the public properties of a message as invisible. So i went ahead and created a "VisiblePropertyAttribute"  class, which marks if a field should be explicitly processed by the client. The client then recieves the message object and uses Type.GetCustomAttributes() to loop though all the attributes on a property and check whether it needs processing. What can i say. I love this. this is soo elegant. I wonder if there is  such a feature in other languages. --- title: "A cool macro to ease your NUnit boilerplate woes" url: "https://osherove.com/blog/2003/3/9/a-cool-macro-to-ease-your-nunit-boilerplate-woes.md" canonical: "https://osherove.com/blog/2003/3/9/a-cool-macro-to-ease-your-nunit-boilerplate-woes.html" published: "2003-03-09T13:37:00" updated: "2003-03-09T13:37:00" tags: [".Net Quotations", "Tips & Tricks"] author: "Roy Osherove" description: "Havn't checked this out myself yet, but it seems like something to write home about. Very nice macro was posted that makes NUnit boilerplate code creation faster, and i've just discovered it: I've created a Visual…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A cool macro to ease your NUnit boilerplate woes By Roy Osherove March 9, 2003 In [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published March 9, 2003; technical details may be outdated. Havn't checked this out myself yet, but it seems like something to write home about. Very nice macro was [posted](http://www.pcisys.net/~gweakliem/Gordon/UnitTesting.html) that makes NUnit boilerplate code creation faster, and i've just discovered it: _I've created a Visual Studio.NET macro for creating_ [**_NUnit_**](http://nunit.sourceforge.net/) _tests, in_ [**_vsmacros format_**](http://www.pcisys.net/~gweakliem/Gordon/UnitTest.vsmacros) _and exported to_ [**_VB_**](http://www.pcisys.net/~gweakliem/Gordon/UnitTestGeneration.vb)_.  The nice thing about the macro is that it's easier to preserve existing code and it also integrates well with the VS.Net project and solution files.  The macro creates unit test shells for the active file in the IDE as follows:_ 1. _It creates a subproject "UnitTests" under your main solution._ 2. _For each class declared in the file, the macro creates a file and namespace based upon the full name of the class being tested.  For example, if the class you're creating tests for is called "MyCo.MyLib", then the macro will generate a file named "MyCo.MyLib\_UnitTests.cs" containing a namespace named "MyCo.MyLib\_UnitTests".  Test cases aren't generated for abstract classes or classes that otherwise can't be instantiated, or that have no public members._ 3. _For each method, property, event and field in the class, the macro generates a test case in the test namespace based on the member name.  For example, a method Foo gets a TestCase named "TestFoo".  The macro also generates some boilerplate setup and teardown code and a class member of the type of the object being tested that gets initialized in setup.  If the object being tested implements IDisposable, then TearDown will contain a call to Dispose()._  4. _The macro is compatible with NUnit 2.0 and backwards compatible with NUnit 1.0.  If you're still using NUnit 1.0, edit the macro and find the line that says_ ``` #Const NUNIT2 = True ``` ``` ... This macro is licensed under the same license as NUnit 2.0. [via Gordon & Karyn Weakliem's home page] ``` ``` Looks great! Here's the direct link to the actual macro : Get it here Iv'e dicovered this through one of links on .Net Rocks. which i will hopefully write about in a later post..     ``` ## More in .Net Quotations [All posts in .Net Quotations](https://osherove.com/blog/category/net-quotations) - Apr 16, 2003 ### [CLR tips gold mine detected](https://osherove.com/blog/2003/4/16/clr-tips-gold-mine-detected.html) - Apr 11, 2003 ### [ASP.NET Encoding Tip from Scott Hanselman](https://osherove.com/blog/2003/4/11/aspnet-encoding-tip-from-scott-hanselman.html) - Mar 5, 2003 ### [Explorer Tips and tricks for the keyboard junkie](https://osherove.com/blog/2003/3/5/explorer-tips-and-tricks-for-the-keyboard-junkie.html) --- title: "Joke" url: "https://osherove.com/blog/2003/3/9/joke.md" canonical: "https://osherove.com/blog/2003/3/9/joke.html" published: "2003-03-09T08:59:00" updated: "2003-03-09T08:59:00" tags: [] author: "Roy Osherove" description: "A guy walks into a bar. Guy : I need a stiff drink Bartender : How about a nice stiff shot of taquila? b: No i realy can't do taquila Bartender : Well everyone Has a bad night once in a while. Cmon i'll make you a nice…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Joke By Roy Osherove March 9, 2003 **Historical article** · Originally published March 9, 2003; technical details may be outdated. _A guy walks into a bar._ _**Guy** : I need a stiff drink_ _**Bartender**: How about a nice stiff shot of taquila?_ _b: No i realy can't do taquila_ _**Bartender**: Well everyone Has a bad night once in a while. Cmon i'll make you a nice shot_ _**Guy**: No really. Last time i did taquila i had a rought night_ _**Bartender**: Cmon, Everyone sometimes a little gets too hammered, how bdad could it have been?_ _**Guy**: well the night i did taquila i blew chunks_ _**Bartender**: well tha's not that unusual_ _**Guy**: Chunks is my dog_ \[Mich?le Leroux Bustamante Tells a joke on the [.NET Rocks](http://www.franklins.net/dotnetrocks.asp) radio show\] --- title: "New \".NET show\" episode" url: "https://osherove.com/blog/2003/3/6/new-quotnet-showquot-episode.md" canonical: "https://osherove.com/blog/2003/3/6/new-quotnet-showquot-episode.html" published: "2003-03-06T05:04:00" updated: "2003-03-06T05:04:00" tags: [] author: "Roy Osherove" description: "In this episode of \"The .NET Show\", we will be talking with Erik Olson and Mike Kass from the .NET Team. They will show us some of the code that was used in Microsoft's entry into the OpenHack competition.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # New ".NET show" episode By Roy Osherove March 6, 2003 **Historical article** · Originally published March 6, 2003; technical details may be outdated. In this episode of "The .NET Show", we will be talking with Erik Olson and Mike Kass from the .NET Team. They will show us some of the code that was used in Microsoft's entry into the OpenHack competition. [http://www.microsoft.com/downloads/details.aspx?familyid=ca4822a9-fa9f-4f95-bc31-aae1a5f81ca9](http://www.microsoft.com/downloads/details.aspx?familyid=ca4822a9-fa9f-4f95-bc31-aae1a5f81ca9) \[via [MSFT downloads RSS feed](http://www.thundermain.com/rss/)\] --- title: "Explorer Tips and tricks for the keyboard junkie" url: "https://osherove.com/blog/2003/3/5/explorer-tips-and-tricks-for-the-keyboard-junkie.md" canonical: "https://osherove.com/blog/2003/3/5/explorer-tips-and-tricks-for-the-keyboard-junkie.html" published: "2003-03-05T11:50:00" updated: "2003-03-05T11:50:00" tags: [".Net Original", ".Net Quotations", "Tips & Tricks"] author: "Roy Osherove" description: "Windows Trick o' the Day I knew this trick existed, but I couldn't remember it. If you to drill down through your directory structure all the time, this is a real time saver. In Windows Explorer, you can highlight a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Explorer Tips and tricks for the keyboard junkie By Roy Osherove March 5, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [.Net Quotations](https://osherove.com/blog/category/net-quotations), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published March 5, 2003; technical details may be outdated. > [_Windows Trick o' the Day_](http://www.raibledesigns.com/page/rd/20030227#windows_trick_o_the_day) > > _I knew this trick existed, but I couldn't remember it. If you to drill down through your directory structure all the time, this is a real time saver. In Windows Explorer, you can highlight a folder and full expand it (and it's children) using the \* key on your far right keypad. Using the - key will contract all folders. Other good Windows tricks I know are using the Win Key (that's the one with the Windows logo on it). Win+r = run, Win+e = explorer and Win+d = desktop. And last but not least, in Win2K+ right-click >> Properties on My Computer will get you to System Properties. If you have other good tips for Red Hat 8, OS X or Windows - please share!_ > > _\[via_ [_Raible_](http://www.raibledesigns.com/page/rd/20030227#windows_trick_o_the_day)_\]_ > > Here are some more: > > \* **Win+m** = see desktop > > \* **CTRL-Shift+Esc** : Open the win task manager > > \* **Alt+Space**: Open the window system menu (Top left corner menu) > > (I use a combination of the **upper two + 'n'** to quickly open and minimize my Task manager. I like to keep an eye on the CPU as i work.I  Just choose Options-Hide when minimized to see it only in the tray area...) > > \* **Alt+PrintScreen** : Capture the Active window not the whole screen > > \* here's a neat little one : When you are typing a URL (or any address) in the explorer window,use **CTRL+BackSpace** to Delete the last hirarchy word(up until the previous slash.. > > \* **Alt+Down** : Open the active combo dropdown > > \* How to email a document through explorer without using the mouse: > > There is a "**context menu" key** on most new keyboard which is usually to the right of the right-side windows key(with a small arrow and menu picture on it". this does a right-click on the active document in explorer. > > \* If your really into working exclusivley with the keyboard, i recomment [Hot Keyboard Pro](http://www.hot-keyboard.com/) (There is also a light version free) that can automate practically anything, including mouse and keytrokes... > > \* About using Explorer: I've long stopped using windows explorer and am using [Total Commander](http://www.ghisler.com/). A relic of the old DOS days, this is a two-paned file manager that was ported to windows(A-la Norton commander style) and is one of the best selling file managers out there. Granted - it's not pretty, but it is a keyboard junkie's heaven , and there is practically nothing you can't do with it. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 31, 2003 ### [ASP.NET is cool + DataGrid Designer Tips](https://osherove.com/blog/2003/3/31/aspnet-is-cool-datagrid-designer-tips.html) - Mar 13, 2003 ### [Free GUI component for VS .NET users](https://osherove.com/blog/2003/3/13/free-gui-component-for-vs-net-users.html) - Feb 22, 2003 ### [App.Config Magic](https://osherove.com/blog/2003/2/22/appconfig-magic.html) - Feb 22, 2003 ### [Cool IDE Shortcut](https://osherove.com/blog/2003/2/22/cool-ide-shortcut.html) --- title: "Intel: Open runtime os for Java/CLI on Win/Linux" url: "https://osherove.com/blog/2003/3/5/intel-open-runtime-os-for-javacli-on-winlinux.md" canonical: "https://osherove.com/blog/2003/3/5/intel-open-runtime-os-for-javacli-on-winlinux.html" published: "2003-03-05T06:21:00" updated: "2003-03-05T06:21:00" tags: [] author: "Roy Osherove" description: "Posted by timothy on Sunday March 02, @06:59PM from the ac-dc dept. prostoalex writes \"The new issue of Intel Technology Journal has a lengthy article on a new platform, developed in Intel labs. The Open Runtime…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Intel: Open runtime os for Java/CLI on Win/Linux By Roy Osherove March 5, 2003 **Historical article** · Originally published March 5, 2003; technical details may be outdated. **Posted by** [**timothy**](http://www.monkey.org/~timothy/) **on Sunday March 02, @06:59PM from the ac-dc dept.** [prostoalex](http://moskalyuk.com/deals/) writes _"The new issue of [Intel Technology Journal](http://www.intel.com/technology/itj/) has a lengthy article on a new platform, developed in Intel labs. [The Open Runtime Platform: A Flexible High-Performance Managed Runtime Environment](http://www.intel.com/technology/itj/2003/volume07issue01/art01_orp/p01_abstract.htm) describes the platform that is capable of running both Java VM and Microsoft's CLI, on both Windows and Linux platforms. [Full PDF version](http://www.intel.com/technology/itj/2003/volume07issue01/art01_orp/vol7iss1_art01.pdf) is also available."_ \[via [Slashdot](http://slashdot.org/developers/)\] --- title: "Extensible .NET SQL code generator" url: "https://osherove.com/blog/2003/3/5/extensible-net-sql-code-generator.md" canonical: "https://osherove.com/blog/2003/3/5/extensible-net-sql-code-generator.html" published: "2003-03-05T05:53:00" updated: "2003-03-05T05:53:00" tags: [] author: "Roy Osherove" description: "One of the cool things about Microsoft is that there's a boatload of smart people in it. More to the point, many of those smart people are building wicked cool pieces of software that are available to you for free (and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Extensible .NET SQL code generator By Roy Osherove March 5, 2003 **Historical article** · Originally published March 5, 2003; technical details may be outdated. _One of the cool things about Microsoft is that there's a boatload of smart people in it.  More to the point, many of those smart people are building wicked cool pieces of software that are available to you for free (and in many cases, with source code included!).  So, here's your link to one of Microsoft's better-kept secrets (we're working on changing that):_  [_OLYMARS_](http://www.microsoft.fr/olymars/webupdate.xml) _(the interesting name comes from a shortened version of the creator's favorite soccer/football team,_ [_Olympique de Marseilles_](http://www.olympiquedemarseille.com/Accueil/index.asp)_).  What is so special about this utility?  Well, to put it simply, it's a SQL Server .NET code generator.  And not just some cheezy tossed-together thing, this one has several superb charactaristics:_ - _It's highly customizable_ - _It supports both 2- and 3-tier models_ - _It's VERY fast_ - _**and** It generates production quality code_ _Currently, the site is hosted at the microsoft.fr location, but we're going to try to make it a little more "English friendly" in the future.  If you're writing code in .NET (or, frankly, just a beginner that wants to turn a 12-week project into a 2-day project), this is definitely worth looking at!_ \[vial [InkBlog](http://www.inkblog.com/2003/03/02.html#a31)\] Seems totally cool. --- title: "When Unix Ports Attack" url: "https://osherove.com/blog/2003/3/5/when-unix-ports-attack.md" canonical: "https://osherove.com/blog/2003/3/5/when-unix-ports-attack.html" published: "2003-03-05T05:30:00" updated: "2003-03-05T05:30:00" tags: [] author: "Roy Osherove" description: "I've been pretty busy the last few days. My job has just let me in on a speech project that uses \"periphonics\" - a a tool that has been around for a while (can you say \"COBOL is my friend\"?) and ive been immersed in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # When Unix Ports Attack By Roy Osherove March 5, 2003 **Historical article** · Originally published March 5, 2003; technical details may be outdated. I've been pretty busy the last few days. My job has just let me in on a speech project that uses "periphonics" - a a tool that has been around for a while (can you say "COBOL is my friend"?) and ive been immersed in studying it's quirks. I must say that Tools ported from Unix to Windows have a , how should i say it nicely, "distinct" look and feel. The interface is horrible and working with it is a nightmare (no matter how strong it's features are). Imagine not being able to type in a single word, and always using your mouse's right button to open menus and select things. Dialog windows open seperatly (a-la ALT-F4 to close them...) and some checkboxes seem to be there just for dress-up. No scroll bars, no paste or copy... anyway ,it is a new technology, and learning how to integrate this with our current tools is not as boring as i thought. So hopefully i will have more time the next few days to post more interesting stuff... --- title: "NewsAggregator sample code on .NetWire" url: "https://osherove.com/blog/2003/3/3/newsaggregator-sample-code-on-netwire.md" canonical: "https://osherove.com/blog/2003/3/3/newsaggregator-sample-code-on-netwire.html" published: "2003-03-03T11:12:00" updated: "2003-03-03T11:12:00" tags: [] author: "Roy Osherove" description: "Building a Desktop News Aggregator The author builds a C# application that retrieves and displays news feeds from various Web sites. The application utilizes XPath, XSLT, XML Schema, the DOM, and XML Serialization in…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # NewsAggregator sample code on .NetWire By Roy Osherove March 3, 2003 **Historical article** · Originally published March 3, 2003; technical details may be outdated. [Building a Desktop News Aggregator](https://osherove.com/redirect.asp?newsid=4342) The author builds a C# application that retrieves and displays news feeds from various Web sites. The application utilizes XPath, XSLT, XML Schema, the DOM, and XML Serialization in the .NET Framework. \[via .[NETWire](http://www.dotnetwire.com/)\] --- title: "C# Future features" url: "https://osherove.com/blog/2003/3/1/c-future-features.md" canonical: "https://osherove.com/blog/2003/3/1/c-future-features.html" published: "2003-03-01T12:15:00" updated: "2003-03-01T12:15:00" tags: [] author: "Roy Osherove" description: "this was a cool read. i can't wait for VS.NET for yukon already... \" C# Futures The C# Programming Language Future Features \" [via Early&Adopter ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # C\# Future features By Roy Osherove March 1, 2003 **Historical article** · Originally published March 1, 2003; technical details may be outdated.  <table width="100%"><tbody><tr><td><p>this was a cool read. i can't wait for VS.NET for yukon already...</p><p><b>"<a href="http://radio.weblogs.com/0117167/2003/02/28.html#a155">C# Futures</a></b></p><p> <a href="http://www.gotdotnet.com/team/csharp/learn/Future/VCS%20Language%20Changes.aspx"><strong>The C# Programming Language Future Features</strong></a> "</p><p>[via <a href="http://radio.weblogs.com/0117167/"><strong>Early&Adopter</strong></a>]</p></td></tr></tbody></table> --- title: "How do we call this technology?" url: "https://osherove.com/blog/2003/3/1/how-do-we-call-this-technology.md" canonical: "https://osherove.com/blog/2003/3/1/how-do-we-call-this-technology.html" published: "2003-03-01T08:47:00" updated: "2003-03-01T08:47:00" tags: [] author: "Roy Osherove" description: "OK. I'll admit there are more then enough acronyms in the tech world already, but maybe this technology needs one as well.. ? just something that one can refer to when speaking about it. someting that is easy to say and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # How do we call this technology? By Roy Osherove March 1, 2003 **Historical article** · Originally published March 1, 2003; technical details may be outdated. OK. I'll admit there are more then enough acronyms in the tech world already, but maybe this technology needs one as well.. ? just something that one can refer to when speaking about it. someting that is easy to say and easy to undersatand... That name meaning the technology behind bloggins. It should encompass RSS, XML RPC, Web Services and al the other things that drive this whole big "thing we are all chattering about... Is "Semantic web" it? i don't think so. that is what gets created byt the use of this technology. how about "Interactive Net API's" - INA...? do you have a better name, or am i just missing it somewhere in my ignorance..? --- title: "RSS is not mature - continued" url: "https://osherove.com/blog/2003/3/1/rss-is-not-mature-continued.md" canonical: "https://osherove.com/blog/2003/3/1/rss-is-not-mature-continued.html" published: "2003-03-01T08:40:00" updated: "2003-03-01T08:40:00" tags: [] author: "Roy Osherove" description: "OK. Phil scott wrote back his thoughts on this and i must say i just did not get it. I guess this whole technology is a bit overwhelming, and considering i am only involved in this in the last 2 months or so, i would…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # RSS is not mature - continued By Roy Osherove March 1, 2003 **Historical article** · Originally published March 1, 2003; technical details may be outdated. OK. Phil scott wrote back [his thoughts on this](http://dotnetweblogs.com/pscott/posts/3254.aspx) and i must say i just did not get it. I guess this whole technology is a bit overwhelming, and considering i am only involved in this in the last 2 months or so, i would guess my knowledge about how it came to be and how long it is really around is pertty minimal. However, Phil  says,if  i undersand correctly, that he sees it mainly as a tool for personal use and it's not big hoo-haa. It's just around like web services. it helps. I tend to think so too, for **today**. but for **tommorow** i think it could evolve into something really different. and it's the future that [Addy Santo was talking](http://dotnetweblogs.com/ASanto/posts/3198.aspx) about when he ranted about the lack of advancment in today's current tools and standards and in his way, he was right. But he simply has much higher expectations from this technology ,unlike most bloggers. This is what sometimes makes one go out and create and advance things. this is the "juice" that drives new developments. Seeing not how it just is, but what it isnt and could be. Weblogs are not the point here, RSS, XML RPC and and speration between data and UI are at heart of what i am saying and what santo is ranting about. These are the heart of the ability to use aggregators and future tools. I think Blogging is simply a side effect of this technology,even if this side effect was the trigger for it's creation. It's like the Water wheels using water for electricity. One is just one small part of the big picture with amazing possibilities... So yes, i do think is sort of the wave of the future, although just a small part of it. the wave of the future should bring with it better info management, and RSS (or its decendants) will help make that happen. --- title: "From Pingback/Trackback to automatic feed error notifiers" url: "https://osherove.com/blog/2003/3/1/from-pingbacktrackback-to-automatic-feed-error-notifiers.md" canonical: "https://osherove.com/blog/2003/3/1/from-pingbacktrackback-to-automatic-feed-error-notifiers.html" published: "2003-03-01T08:18:00" updated: "2003-03-01T08:18:00" tags: [] author: "Roy Osherove" description: "Ziv Caspi's Post got me thinking about how Aggeregators should handle broken feeds. Perhaps a standard needs to be created in which a broken feed's author could be notified automatically whenervr an aggregator or any…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # From Pingback/Trackback to automatic feed error notifiers By Roy Osherove March 1, 2003 **Historical article** · Originally published March 1, 2003; technical details may be outdated. [Ziv Caspi's Post](http://radio.weblogs.com/0106548/2003/01/25.html#a103) got me thinking about how Aggeregators should handle broken feeds. Perhaps a standard needs to be created in which a broken feed's author could be notified automatically whenervr an aggregator or any other client could read it. perhaps it should provide a link in the RSS itself (dah - what's if that is broken as well..?) or maybe there should be a mechanism similar to pingback/trackbak that instead of notifying linkage, notifies about feed errors... Any volunteers..? As a matter of fact, If i wanted to do this myself, how would i go about suggesting additions to the standard? --- title: "Chris Anderson's new thriller" url: "https://osherove.com/blog/2003/2/28/chris-andersons-new-thriller.md" canonical: "https://osherove.com/blog/2003/2/28/chris-andersons-new-thriller.html" published: "2003-02-28T22:29:00" updated: "2003-02-28T22:29:00" tags: [] author: "Roy Osherove" description: "Reading Chirs's post almost made me reach for some popcorn. it reads like a thriller. C'mon. Tell us what your up to!!!!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Chris Anderson's new thriller By Roy Osherove February 28, 2003 **Historical article** · Originally published February 28, 2003; technical details may be outdated. [Reading Chirs's post](http://www.simplegeek.com/PermaLink.aspx/d0db3cd3-704c-447e-b5ab-a2ea29d5fb7b) almost made me reach for some popcorn. it reads like a thriller. C'mon. Tell us what your up to!!!! --- title: "RSS is not mature" url: "https://osherove.com/blog/2003/2/28/rss-is-not-mature.md" canonical: "https://osherove.com/blog/2003/2/28/rss-is-not-mature.html" published: "2003-02-28T22:15:00" updated: "2003-02-28T22:15:00" tags: [] author: "Roy Osherove" description: "First : When i came to name this post, i wanted to come up with a name for the whole technology encompassing RSS, XML RPC and all that other stuff related to blogging and intraction. Is there such a term? Second : Addy…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # RSS is not mature By Roy Osherove February 28, 2003 **Historical article** · Originally published February 28, 2003; technical details may be outdated. **First**: When i came to name this post, i wanted to come up with a name for the whole technology encompassing RSS, XML RPC and all that other stuff related to blogging and intraction. Is there such a term? **Second**: [Addy Santos post](http://dotnetweblogs.com/ASanto/posts/3198.aspx) makes some strong points about the current technology of RSS feeds and blogs, or more in the lines of  where it isn't. I (technically) agree with him of the finer points, but i disagree with him about the global purpose of the technology. Blogs in general are not a bad thing, nor are they a waste of time for picking up information you are seeking. Simply put, the technology is still growing and the benefits from it ,along with any far reaching ideas of how it could help mankind, are still a mystery. granted, there are a lot of possiblities which could already have been implemented, but you are expecting it to be a 40 year old man with a familiy,house and a dog, when it is still about 2 years old, just learnining it's first moves and testing what it can do and how it can extened itself. every day is a new start and brings new discoveries. The blogging tools are not still suited for this and right now are more for personal use rather then business or anything else (at least for me and  i would guess many others..). "_Maybe I'll bake my own XML-RPC protocol handler and RSS ifilter for Sharepoint. Has anyone done an RSS-NNTP-SMTP gateway yet?  How about discovery services? Or maybe it is best to start with a P2P based RSS implementation? (Who needs web servers for RSS anyway....)  "_ Go ahead! this is what it's all about. discovering and developing new things.  Now is the time. I believe that people who mess with this technology today, will be recognized as the pioneers of it in the future. I think we stand on the brink of another (although smaller) data mining revolution, and just like the last one, we stand wondering "what the hell can we do with this? it looks pretty cool and i bet it could be used to this or that.. lets see if it fits.. lets develop more standards..." etc. Mainly, I use the Blogs part of this technology for my personal thoughts and to connect to a community i can relate to. It is better then forums or newsgroups. it's my own space(or home) that just so happens to heavily interact with other spaces. but the incarnation of the digital me in this space is much more personal and is much more descriptive of me and my stuff. Using the RSS part of this technology without the blogs is something that is just starting to catch on i think, and it's uses are limitless. I think some of your ideas are worth checking out, as are tons of others. These are truly exciting times. Hopefully, the coming months will bring with them an advance in Aggregators (along with that much needed full text indexing..). --- title: "Sample chapter from \"Inside Microsoft® Visual Studio® .NET 2003 \"" url: "https://osherove.com/blog/2003/2/28/sample-chapter-from-quotinside-microsoft174-visual-studio174.md" canonical: "https://osherove.com/blog/2003/2/28/sample-chapter-from-quotinside-microsoft174-visual-studio174.html" published: "2003-02-28T21:39:00" updated: "2003-02-28T21:39:00" tags: [] author: "Roy Osherove" description: "Basically : the code modell is the macro writer's programmer heaven. and it looks pretty darn cool! \" The Code Model Here's some info about the .net code module. Chapter 12: The Code Model The idea is simple—define a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Sample chapter from "Inside Microsoft® Visual Studio® .NET 2003 " By Roy Osherove February 28, 2003 **Historical article** · Originally published February 28, 2003; technical details may be outdated. Basically : the code modell is the macro writer's programmer heaven. and it looks pretty darn cool! "[The Code Model](http://dotnetweblogs.com/MScilipoti/posts/3246.aspx) Here's some info about the .net code module. [Chapter 12: The Code Model](http://www.microsoft.com/mspress/books/sampchap/6425.asp#SampleChapter) The idea is simple—define a single API that captures the essence of the most common programming constructs, and have each of the languages in Visual Studio .NET implement that API in its native tongue. The result is a single set of objects—the code model—that a programmer can use to read or write code in any of the languages in Visual Studio .NET." Posted By [Matt Scilipoti](http://dotnetweblogs.com/MScilipoti/) at 2/28/2003 5:56 PM --- title: "What the hell...?" url: "https://osherove.com/blog/2003/2/27/what-the-hell.md" canonical: "https://osherove.com/blog/2003/2/27/what-the-hell.html" published: "2003-02-27T21:07:00" updated: "2003-02-27T21:07:00" tags: [] author: "Roy Osherove" description: "Yikes! What the hell does this mean? The word \"BEGIN\" is nowhere in my files.. Update: Ok. I don't know how to upload the picture, so heres the error message i got from VS.NET c# compiler last night: \"Internal compiler…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # What the hell...? By Roy Osherove February 27, 2003 **Historical article** · Originally published February 27, 2003; technical details may be outdated. Yikes! What the hell does this mean? The word "BEGIN" is nowhere in my files.. Update: Ok. I don't know how to upload the picture, so heres  the error message i got from VS.NET c# compiler last night: "Internal compiler error(0xc00000005 at address 531550F0): likely culprit is 'BEGIN'. An internal error has occured in the compiler. To Work around this problem, try simplifying or changing the program near the locations listed below. Locations at the top of the list are closer to the point at which the internal error occured." And underneath this was "BEGIN". Selecting that message highlited nothing. I think it was referring to the IL code that was generated somehow.... \--------------------- Update 2: OK. The wierd problem went away after i remarked the last few lines of code that i added, rebuilt, unmarked and rebuilt again. it totally went away. Definatly weird.. Thanks for your comments people. but just to enlighten everyone I'm quoting this comment: " <table width="100%"><tbody><tr><td><em>Name: </em><a id="_ctl0__ctl1_CommentList__ctl4_NameLink"><strong><em>Paul Laudeman</em></strong></a><em></em></td></tr><tr><td><em>Posted Date: <span id="_ctl0__ctl1_CommentList__ctl4_PostDate">2/28/2003 8:34 AM</span></em></td></tr><tr><td><p><em><span id="_ctl0__ctl1_CommentList__ctl4_PostText">This is a bug within the IDE that we've come across many times. The fix that has worked for us in most cases was to simply select all the code, cut it, save the file, and paste it back in and recompile. Odd, eh?</span> </em>"</p></td></tr></tbody></table> --- title: "The mystery that is Russell" url: "https://osherove.com/blog/2003/2/26/the-mystery-that-is-russell.md" canonical: "https://osherove.com/blog/2003/2/26/the-mystery-that-is-russell.html" published: "2003-02-26T14:04:00" updated: "2003-02-26T14:04:00" tags: [] author: "Roy Osherove" description: "Funny post from Russell Beattie. Something about valentine's day and a heating laptop..? ah, just read it. ;)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The mystery that is Russell By Roy Osherove February 26, 2003 **Historical article** · Originally published February 26, 2003; technical details may be outdated. Funny [post](http://www.russellbeattie.com/notebook/20030226.html#001726) from Russell Beattie. Something about valentine's day and a heating laptop..? ah, just read it. ;) --- title: "Welcome, Santo!" url: "https://osherove.com/blog/2003/2/26/welcome-santo.md" canonical: "https://osherove.com/blog/2003/2/26/welcome-santo.html" published: "2003-02-26T12:59:00" updated: "2003-02-26T12:59:00" tags: [] author: "Roy Osherove" description: "\" Well, Here I am. Yet another speck of sand on the beaches of the infinite Blogging sea... Who knows, this may one day contain some sort of useful content.\" [via SantoMania ] Yey! Addy Santo - a friend and a former…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Welcome, Santo! By Roy Osherove February 26, 2003 **Historical article** · Originally published February 26, 2003; technical details may be outdated. " _Well,_ _Here I am. Yet another speck of sand on the beaches of the infinite Blogging sea...  Who knows, this may one day contain some sort of useful content."_ \[via [SantoMania](http://dotnetweblogs.com/ASanto/Default.aspx)\] Yey! Addy Santo - a friend and a former colleague, Has joind the ranks of .NetWeblogs! This should be a treat. Addy has been the MSFT Regional director of SharePoint in israel and is one of the most talented people i know. Welcome :) --- title: "If GOD were a computer programmer" url: "https://osherove.com/blog/2003/2/26/if-god-were-a-computer-programmer.md" canonical: "https://osherove.com/blog/2003/2/26/if-god-were-a-computer-programmer.html" published: "2003-02-26T09:55:00" updated: "2003-02-26T09:55:00" tags: [] author: "Roy Osherove" description: "This cool post just passed before me, and i thought i'd share: [via WinTec-OffTopic Mailing list]: \"Hi All: I found this and thought I'd share: If God were a computer programmer... The following was stolen from JINX:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # If GOD were a computer programmer By Roy Osherove February 26, 2003 **Historical article** · Originally published February 26, 2003; technical details may be outdated. **This cool post just passed before me, and i thought i'd share:** **\[via** [**WinTec-OffTopic**](http://groups.yahoo.com/group/win_tech_off_topic/) **Mailing list\]: ** "Hi All: I found this and thought I'd share: If God were a computer programmer... The following was stolen from JINX: The World's Weirdest eZine. Send 'Jinx me' to \[email removed\] for inclusion, subscription, and delight. -- ...you know, many important theological questions are answered if we think of God as a Computer Programmer: Q: Does God control everything that happens in my life? A: He could, if he used the debugger, but it's tedious to step through all those variables. Q: Why does God allow evil to happen? A: God thought he eliminated evil in one of the earlier versions. Q: What causes God to intervene in earthly affairs? A: If a critical error occurs, the system pages him automatically and he logs on from home to try to bring it up. Otherwise things can wait until tomorrow. Q: Did God really create the world in seven days? A: He did it in six days and nights while living on cola and candy bars. On the seventh day he went home and found out his girlfriend had left him. Q: How come the Age of Miracles Ended? A: That was the development phase of the project, now we are in the maintenance phase. Q: Who is Satan? A: Satan is a MIS director who takes credit for more powers than he actually possesses, so people who aren't programmers are scared of him. God thinks of him as irritating but irrelevant. Q: What is the role of sinners? A: Sinners are the people who find new an imaginative ways to mess up the system when God has made it idiot-proof. Q: Where will I go after I die? A: Onto a DAT tape. Q: Will I be reincarnated? A: Not unless there is a special need to recreate you. And searching those tar files is a major hassle, so if there is a request for you, God will just say that the tape has been lost. Q: Am I unique and special in the universe? A: There are over 10,000 major university and corporate sites running exact duplicates of you in the present release version. Q: What is the purpose of the universe? A: God created it because he values elegance and simplicity, but then the users and managers demanded he tack all this senseless stuff onto it and now everything is more complicated and expensive than ever. Q: If I pray to God, will he listen? A: You can waste his time telling him what to do, or you can just get off his back and let him program. Q: What is the one true religion? A: All systems have their advantages and disadvantages, so just pick the one that best suits your needs and don't let anyone put you down. Q: How can I protect myself from evil? A: Change your password every month and don't make it a name, a common word, or a date like your birthday. Q: Some people claim they hear the voice of God. Is this true? A: They are much more likely to receive email." --- title: "Wow!" url: "https://osherove.com/blog/2003/2/25/wow.md" canonical: "https://osherove.com/blog/2003/2/25/wow.html" published: "2003-02-25T15:06:00" updated: "2003-02-25T15:06:00" tags: [] author: "Roy Osherove" description: "Wow! Chris is really talented ! You draw absolutely marvelous cartoons , although i didn't quite get the Cat on the computer one.. ;)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Wow! By Roy Osherove February 25, 2003 **Historical article** · Originally published February 25, 2003; technical details may be outdated. Wow! [Chris is really talented](http://chrisg.com/chrisg/DesktopDefault.aspx?tabindex=1&tabid=21)! You draw absolutely marvelous cartoons , although i didn't quite get the Cat on the computer one.. ;) --- title: "XML web services articles galore" url: "https://osherove.com/blog/2003/2/25/xml-web-services-articles-galore.md" canonical: "https://osherove.com/blog/2003/2/25/xml-web-services-articles-galore.html" published: "2003-02-25T14:40:00" updated: "2003-02-25T14:40:00" tags: [] author: "Roy Osherove" description: "\" I decided to write up some articles about the XML Web Services capabilities in the .NET Framework (ASP.NET and .NET Remoting). The technical difficulty ranges from beginner-level to in-depth discussion. Time will show…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # XML web services articles galore By Roy Osherove February 25, 2003 **Historical article** · Originally published February 25, 2003; technical details may be outdated. "_I decided to write up some articles about the XML Web Services capabilities in the .NET Framework (ASP.NET and .NET Remoting). The technical difficulty ranges from beginner-level to in-depth discussion. Time will show how deep I can get ;-)"_ \[via  [Christian Weyer](http://dotnetweblogs.com/Cweyer/posts/2946.aspx)\] Great! That is one area that i know i am having a hard time with (the fact that i have not yet spent 10 minutes to learn it might have something to do with that...). Good luck, and may we all learn a bit from someone else's mistakes... ;) --- title: "The predictable history of a programmer" url: "https://osherove.com/blog/2003/2/25/the-predictable-history-of-a-programmer.md" canonical: "https://osherove.com/blog/2003/2/25/the-predictable-history-of-a-programmer.html" published: "2003-02-25T14:35:00" updated: "2003-02-25T14:35:00" tags: [] author: "Roy Osherove" description: "\"Chris started his obsession with programming when at around the age of ten he started learning BASIC on his Commodore VIC-20 (3.5kb of raw power!). The addiction has never been kicked and since 1994 has concentrated on…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The predictable history of a programmer By Roy Osherove February 25, 2003 **Historical article** · Originally published February 25, 2003; technical details may be outdated. _"Chris started his obsession with programming when at around the age of ten he started learning BASIC on his Commodore VIC-20 (3.5kb of raw power!). The addiction has never been kicked and since 1994 has concentrated on the Internet. "_ \[via [Chrisg.Com](http://chrisg.com/chrisg/DesktopDefault.aspx?tabindex=1&tabid=8)\] How many of us can say these things on their own "about" page? Probably most , with minor modification. I suggest a global "About me" page, something like the following: **The history of** : \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ \_\_\_\_\_\_\_   started his/her obsession with programming when at around the age of \_\_\_\_\_ he/she started learning BASIC on his/her computer of type  \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_(\_.\_kb of raw power!). The addiction has never been kicked and since \_\_\_\_\_\_ has concentrated on \_\_\_\_\_\_\_\_\_\_\_. When the technology of \_\_\_\_\_\_\_\_ by \_\_\_\_\_\_\_ first came out, he/she decided that that is the direction they want to follow, and have learned for their \_\_\_\_\_ title and are now \_\_\_\_\_\_ at \_\_\_\_\_\_\_ for the past \_\_\_ years. --- title: "More Israeli snow photos" url: "https://osherove.com/blog/2003/2/25/more-israeli-snow-photos.md" canonical: "https://osherove.com/blog/2003/2/25/more-israeli-snow-photos.html" published: "2003-02-25T11:42:00" updated: "2003-02-25T11:42:00" tags: [] author: "Roy Osherove" description: "Ynet - internet newspaper in israel published more photos of the snow here: http://www.ynet.co.il/Ext/App/Thumbnails/CdaAlbumPic/0,9790,L-226,00.html" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More Israeli snow photos By Roy Osherove February 25, 2003 **Historical article** · Originally published February 25, 2003; technical details may be outdated. Ynet - internet newspaper in israel published more photos of the snow here: [http://www.ynet.co.il/Ext/App/Thumbnails/CdaAlbumPic/0,9790,L-226,00.html](http://www.ynet.co.il/Ext/App/Thumbnails/CdaAlbumPic/0,9790,L-226,00.html) --- title: "About me" url: "https://osherove.com/blog/2003/2/25/about-me.md" canonical: "https://osherove.com/blog/2003/2/25/about-me.html" published: "2003-02-25T11:26:00" updated: "2003-02-25T11:26:00" tags: [] author: "Roy Osherove" description: "I have decided to put the inevitable \"About me\" page right here . There was a blog somewhere that posted the ten most hated things about a blogger(Can't find it though, but in involved the word \"FontBitch\"..), and not…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About me By Roy Osherove February 25, 2003 **Historical article** · Originally published February 25, 2003; technical details may be outdated. I have decided to put the inevitable "About me" page right [here](http://dotnetweblogs.com/Rosherove/Story/2929.aspx). There was a blog somewhere that posted the ten most hated things about a blogger(Can't find it though, but in involved the word "FontBitch"..), and not having an "about me" page was one of them. well -1 on that... --- title: "Snow in Jerusalem - Beautiful pictures" url: "https://osherove.com/blog/2003/2/25/snow-in-jerusalem-beautiful-pictures.md" canonical: "https://osherove.com/blog/2003/2/25/snow-in-jerusalem-beautiful-pictures.html" published: "2003-02-25T10:08:00" updated: "2003-02-25T10:08:00" tags: [] author: "Roy Osherove" description: "It Has been snowing all night in Jerusalem and up north of israel, and this is an email going around with how jerusalem looks this morning. Pretty big excitment by the media here about this. All the news start with…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Snow in Jerusalem - Beautiful pictures By Roy Osherove February 25, 2003 **Historical article** · Originally published February 25, 2003; technical details may be outdated.  It Has been snowing all night in Jerusalem and up north of israel, and this is an email going around with how jerusalem looks this morning. Pretty big excitment by the media here about this. All the news start with this, and with reason. Its usually pretty hard to see snow in central israel due to reletavly warm climate. usually only the far and high north is coverd with it, and only for short periods of time at very strong winters . Yey! Jerusalem      25/02/2003 ![](https://osherove.com/img/ext/www.ynet.co.il_PicServer_02202003_244858_snow3_wh.jpg)   ![](https://osherove.com/img/ext/www.ynet.co.il_PicServer_02202003_244862_snow1_wh.jpg) ![](https://osherove.com/img/ext/www.ynet.co.il_PicServer_02202003_244864_10_wh.jpg)   ![](https://osherove.com/img/ext/www.ynet.co.il_PicServer_02202003_244868_snow4_wh.jpg) --- title: "ADO.NET tips" url: "https://osherove.com/blog/2003/2/25/adonet-tips.md" canonical: "https://osherove.com/blog/2003/2/25/adonet-tips.html" published: "2003-02-25T07:12:00" updated: "2003-02-25T07:12:00" tags: [] author: "Roy Osherove" description: "ADO.NET tips Top 10 ADO.NET tips from Visual Studio.NET magazine. Posted By Ben Richardson at 2/25/2003 3:08 PM" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ADO.NET tips By Roy Osherove February 25, 2003 **Historical article** · Originally published February 25, 2003; technical details may be outdated. [_ADO.NET tips_](http://dotnetweblogs.com/BRichardson/posts/2915.aspx) [_Top 10 ADO.NET tips_](http://www.fawcette.com/vsm/2003_04/magazine/features/esposito/default.asp) _from Visual Studio.NET magazine._ _Posted By_ [_Ben Richardson_](http://dotnetweblogs.com/BRichardson/) _at 2/25/2003 3:08 PM_ --- title: "Unemployment" url: "https://osherove.com/blog/2003/2/25/unemployment.md" canonical: "https://osherove.com/blog/2003/2/25/unemployment.html" published: "2003-02-25T07:02:00" updated: "2003-02-25T07:02:00" tags: [] author: "Roy Osherove" description: "\"started unpacking my box from the office i used to have. funny all of the things you seem to accumulate. cdr's with no labels. folders full of papers you have no idea why you kept them. frequent eater cards to places…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unemployment By Roy Osherove February 25, 2003 **Historical article** · Originally published February 25, 2003; technical details may be outdated. _"started unpacking my box from the office i used to have. funny all of the things you seem to accumulate. cdr's with no labels. folders full of papers you have no idea why you kept them. frequent eater cards to places you haven't been to in years. a coffee mug that fell behind your monitor. pencils, pens, post-it's, folders, binders, paper pads, tacks, glue, staples, sugar packets, odd computer parts... "_ \[via [Thom Allen's DotNet WebLog](https://osherove.com/tallen)\] **I hear you man**, i totally do. Ive been there and my current concern is that i COULD be there within a matter of months. being employed by a Start-Up company has it's drawbacks (lately, mostly drawbacks..) and one of the biggest is the uncertainty of survival. The market in israel is in pretty bad shape. I, as a programmer with 5+ Years exp. mainly in windows development using VB and lately C#, have a very slim chance of finding work that can both financially support me and my wife (who is also a VB6 programmer turned ASP.NET ) and in which i will not be creating crystal reports all day, but doing actual programming work. It's hard. There are a LOT of compromises one has to deal with when working in a strtup today: Salary cuts, benefit cuts ,moving to a smaller location, and dealing with an annoying boss whom you KNOW you have no choice but to tolerate, since no other jobs are just lying around waiting for you. And yes, Ive been looking for about 3-4 months now for an alternative, but there just wasn't one that fitted me (and i was NOT looking for great benefits or salary, i even agreed going with what i have now and even less. I do NOT make alot of money, i make much less then avarage for my credentials). phew, where did all that come out from? i guess i needed to share it. My point is i know where you are and I too have considered finding other form of employment area if I don't find anything in my area. I guess "Eye-opener" is a small word.  perhaps "A\*\*  opener" would fit better. My boss knows that in the state of todays economy, he could literally bully the employs and do practically what he wants, and he won't even hear a squeak coming from us (the 10 that are left). We just can't afford to lose our jobs. Thus, many of the programmers find themselves doing stuff on the job they never thought they would do : Fixing Servers, creating PowerPoint presentations, writing Marketing documents, editing Video files for marketing and basically everthing they SHOULD do. This of course affects out ability to do actual work and lowers motivation to amazing depths. Everyone promises in their hearts that the day the situation is better, the boss will be amazed at how fast the company cleans out. And they are probably right. people have long memories, and they won't put up with something for nothing. eventually what goes around comes around. And i'm afraid that this is the situation today with many companies that are taking advatange of the situation. They will get what is soming to them BIG time. I agree, cutbacks are sometimes required, but a company must also nurture it's working staff and inhouse knowladge. in fact, that is the most important thing i believe. preserving knowladge in your company builds strong companies. Treating your employees like handymen **just because** **you can** leads to disaster. You are not alone Thom. The thin red line between Employment and unemployement just keeps getting thinner. everyone knows it could be them next. Stay strong and know that all over the world, there are people that feel just like you. --- title: "Quickly and easily searilize almost any object" url: "https://osherove.com/blog/2003/2/25/quickly-and-easily-searilize-almost-any-object.md" canonical: "https://osherove.com/blog/2003/2/25/quickly-and-easily-searilize-almost-any-object.html" published: "2003-02-25T06:38:00" updated: "2003-02-25T06:38:00" tags: [] author: "Roy Osherove" description: "\" It you want to quickly and easily searilize almost any object, just derive your class from the Selfserializer class here and you will be on your way. \" [via ScottW ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Quickly and easily searilize almost any object By Roy Osherove February 25, 2003 **Historical article** · Originally published February 25, 2003; technical details may be outdated. "_It you want to quickly and easily searilize almost any object, just derive your class from the Selfserializer class_ [_here_](http://aspnetweblog.com/Story/2907.aspx) _and you will be on your way._" \[via [ScottW](http://aspnetweblog.com/posts/2908.aspx)\] --- title: "3Degrees looks cool" url: "https://osherove.com/blog/2003/2/25/3degrees-looks-cool.md" canonical: "https://osherove.com/blog/2003/2/25/3degrees-looks-cool.html" published: "2003-02-25T06:22:00" updated: "2003-02-25T06:22:00" tags: [] author: "Roy Osherove" description: "Following up on last week's posting , the ThreeDegrees software is now available in beta form. I just finished the product tour and am dl'ing as we speak. Looks pretty cool/fun, but I don't know if it's going to be…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # 3Degrees looks cool By Roy Osherove February 25, 2003 **Historical article** · Originally published February 25, 2003; technical details may be outdated. _Following up on_ [_last week's posting_](http://dotnetweblogs.com/dmarsh/posts/2510.aspx)_, the_ [_ThreeDegrees_](http://www.threedegrees.com/) _software is now available in beta form. I just finished the product tour and am dl'ing as we speak. Looks pretty cool/fun, but I don't know if it's going to be revolutionary._ \[via [Drew Marsh](http://dotnetweblogs.com/dmarsh/archive/02242003.aspx#2889)\] looking at the download page: _"_ <table><tbody><tr><td>Software Requirements</td></tr><tr><td></td><td><ul><li>Windows XP Home Edition or Professional with Windows XP Service Pack 1 (English OS Only)</li><li>MSN® Messenger for Windows version 5.0 or higher</li><li>Windows XP Peer-to-Peer Update (Q810007)</li></ul></td></tr></tbody></table> " **I wonder if that means that This uses the recently releases** [**Peer-to-peer SDK**](http://www.microsoft.com/downloads/details.aspx?familyid=c3056f5a-f6ee-4147-b7c1-146064710f22) **from MSFT..** --- title: "Attack of the certified" url: "https://osherove.com/blog/2003/2/25/attack-of-the-certified.md" canonical: "https://osherove.com/blog/2003/2/25/attack-of-the-certified.html" published: "2003-02-25T06:04:00" updated: "2003-02-25T06:04:00" tags: [] author: "Roy Osherove" description: "\"Oh, this exam makes me an MCAD. So right now I'm an MCT, MCSD for VB6, MCAD for Microsoft .NET. By wednesday I hope to have MCSD for Microsoft .NET, and by friday perhaps I'll be ready for the Win2k Server exam so I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Attack of the certified By Roy Osherove February 25, 2003 **Historical article** · Originally published February 25, 2003; technical details may be outdated. _"Oh, this exam makes me an MCAD.  So right now I'm an MCT, MCSD for VB6, MCAD for Microsoft .NET.  By wednesday I hope to have MCSD for Microsoft .NET, and by friday perhaps I'll be ready for the Win2k Server exam so I can get my MCDBA.  "_ _\[via [Phil Scott](http://dotnetweblogs.com/pscott/posts/2894.aspx)\]_ I feel so small and uncertified ... :( perhaps some day i could be a TitleBitch too.. ;)  ( no offense intended - just a thought about a new slang word for Title throwing...) don't you mean _"Oh, this exam makes me an MCSD", btw?_ P.S - that XML web services exam sounds like a bitch. I am currently studying for the Winforms exam, but it looks to be much easier.. --- title: "GooglFight" url: "https://osherove.com/blog/2003/2/25/googlfight.md" canonical: "https://osherove.com/blog/2003/2/25/googlfight.html" published: "2003-02-25T05:54:00" updated: "2003-02-25T05:54:00" tags: [] author: "Roy Osherove" description: "\"Hehe I found this very distracting: Imagine you type two words in the search boxes and you'll see which one has the most results in Goolge. Try for yourself ! Googlefight \" [via heLP .Net Blog ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # GooglFight By Roy Osherove February 25, 2003 **Historical article** · Originally published February 25, 2003; technical details may be outdated. _"Hehe I found this very distracting: Imagine you type two words in the search boxes and you'll see which one has the most results in Goolge. Try for yourself ! _[_Googlefight_](http://www.googlefight.com/cgi-bin/compare.pl?q1=.Net&q2=Java&B1=Make+a+fight%21&compare=1&langue=us)" \[via [heLP .Net Blog](http://dotnetweblogs.com/Pleloup/posts/2892.aspx) \] --- title: "About Roy Osherove" url: "https://osherove.com/blog/2003/2/25/about-roy-osherove.md" canonical: "https://osherove.com/blog/2003/2/25/about-roy-osherove.html" published: "2003-02-25T01:15:00" updated: "2003-02-25T01:15:00" tags: [] author: "Roy Osherove" description: "Name : Roy Osherove Date of Birth : 17/08/1975 Family Status : Married to a beautiful wife named Tal . Were married 2 days after the 9-11 at NYC. (Must be a good sign, right ...?). My wife Tal is a SP.NET/Win forms…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About Roy Osherove By Roy Osherove February 25, 2003 **Historical article** · Originally published February 25, 2003; technical details may be outdated. **Name**: Roy Osherove **Date of Birth**: 17/08/1975 **Family Status**: Married to a beautiful wife named **Tal**. Were married 2 days after the 9-11 at NYC. (Must be a good sign, right ...?). **My wife Tal** is a SP.NET/Win forms  programmer for the past 5 years. We also have a Cat named "**Zion**" (pronounced "Tzi-yon"). It was named so because when Tal Found it on the street she said "Zion" and he Meowed (which, apparently, is a very big sign of trust in the cat world..). We all live together at a city called “Petah-Tikva“ near tel-aviv, Israel **Occupation**: Developer/Team leader/Methodologist/speaker/architect and so on and so forth.... I am a Microsoft **MVP**. I Currently hold three **MCP** titles :  - _**Developing Applications with Visual Basic 6.0**_  - _**Developing Distributed Applications with VB 6.0**_  - _**Developing Windows Applications with C#**_ My short bio: Roy Osherove has spent the past 7+ years developing data driven applications for various companies in Israel. He's a Microsoft MVP, holds several MCP titles, written various .NET related articles, some of them published on MSDN, and most of which can be found on his [weblog](https://osherove.com/rosherove "http://weblogs.asp.net/rosherove"). Roy is also the author of the now famous free regular expression tool, [The Regulator](http://regulator.sourceforge.net/ "http://regulator.sourceforge.net/"), and speaks in various community groups and conferences on topics such as Test Driven Development, Agile methodologies, Regular Expressions and extensible .Net applications. Roy works as a senior consultant at [Magen](http://www.magen.com/ "http://www.magen.com/"), a Microsoft Technology Center in Israel and his main passion is community and discovering new and wonderful things in the world of technology and methodology ![](https://osherove.com/img/wb/edda0eaa_www.mvpaward.com_assets_mvplogo.gif) --- title: "Missing C# feature ? - Totally hiding derived members" url: "https://osherove.com/blog/2003/2/24/missing-c-feature-totally-hiding-derived-members.md" canonical: "https://osherove.com/blog/2003/2/24/missing-c-feature-totally-hiding-derived-members.html" published: "2003-02-24T17:39:00" updated: "2003-02-24T17:39:00" tags: [] author: "Roy Osherove" description: "So here's my problem. I have class Foo: public class Foo{ public void DoStuff() { ... } } and i have class Bar derived from it. I want class Bar to Hide the \"DoStuff\" and expose it's own implementation of \"DoStuff()\".…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Missing C\# feature ? - Totally hiding derived members By Roy Osherove February 24, 2003 **Historical article** · Originally published February 24, 2003; technical details may be outdated. So here's my problem. I have class Foo: public class Foo{ public void DoStuff() { ... } } and i have class Bar derived from it. I want class Bar to Hide the "DoStuff" and expose it's own implementation of "DoStuff()". Simple, right? public class Bar:Foo { //Hide the default memebr new private void DoStuff(){ } public void DoStuff(int argument){} } Ok. Done. But watch this: writing the following line in VS.NET: Bar b = new Bar(); b.    ///->>>>You get both the Bar.DoStuff AND the Foo.DoStuff in the Tooltips. meaning : you cannot hide inharited members totally. you must implement them to hide the default functionality. I looked it up on MSDN and found [this article](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csspec/html/vclrfcsharpspec_3_7_1_2.asp) which states so clearly: _"A declaration of a new member hides an inherited member only within the scope of the new member._ ``` class Base { public static void F() {} } class Derived: Base { new private static void F() {} // Hides Base.F in Derived only } class MoreDerived: Derived { static void G() { F(); } // Invokes Base.F } ``` _In the example above, the declaration of `F` in `Derived` hides the `F` that was inherited from `Base`, but since the new `F` in `Derived` has private access, its scope does not extend to `MoreDerived`. Thus, the call `F()` in `MoreDerived.G` is valid and will invoke `Base.F`."_ How is that not possible? you'd think it's a pretty legitimate programming way, wouldn;t you? I can;t think of any situation where having this as a possibility is a bad thing... --- title: "Open Source Vs. Commercial Aggregators - The NewsGator Dillema" url: "https://osherove.com/blog/2003/2/24/open-source-vs-commercial-aggregators-the-newsgator-dillema.md" canonical: "https://osherove.com/blog/2003/2/24/open-source-vs-commercial-aggregators-the-newsgator-dillema.html" published: "2003-02-24T14:33:00" updated: "2003-02-24T14:33:00" tags: [] author: "Roy Osherove" description: "In response to my post about NewsGator , Fleh comments: \" Isn't this where open source is going? i.e. how does one make a living if nobody is willing to pay for anything? \" That depends a lot on the benefits you get…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Open Source Vs. Commercial Aggregators - The NewsGator Dillema By Roy Osherove February 24, 2003 **Historical article** · Originally published February 24, 2003; technical details may be outdated. In response to [my post about NewsGator](http://dotnetweblogs.com/Rosherove/posts/2847.aspx), Fleh comments: "_Isn't this where open source is going?_ _i.e. how does one make a living if nobody is willing to pay for anything?_ " That depends a lot on the benefits you get from Open source Vs. commerical software. Just look at the Windows operating system Vs. Open source Distro's. Sure, some poeple rather have their linux's and other techie stuff, but the commercial windows software, being backed up by huge money, is much more motivated to keep up with the user needs and ease of use, there by giving added value by providing more products for their system and so on, which leads one to BUY their stuff for pure Added value, or for lack of supprt in the non commercial stuff. So, I kind of agree , and kind of don't. I agree from the pure business sense- man cannot live on code alone, (he needs some pepsi to go with it.. and pepsi costs money..) but on the other hand, i just don't see Open source disappearing in the near or far future. It's just so human nature, that for every open source product gone commercial, 3 new open source products come out. Is it "not nice" to just leap from one free product to another? perhaps, in a moral sense, but in a business sense it is perfectly legitimate. and we, as consumers, like it or not ,do business when we purchase or not purchase something. Should I buy a product just because i LIKE the guy who made it, maybe, if i were RELATED to him, and that too depends on the amount of money etc... but it all comes down to (again) what you get from it Vs. what you can get for free, and today, those are pretty much even. I would consider buying Newsgator, since it is the only Aggregator i know that integrates with outlook. again, pure cost-benefit issue. where is Open source going? It's going to stay here with us for a long time, until another way for people to express themselves opens up, and still it will stay, perhaps shrink, but never, ever go away. --- title: "Including/excluding files in Visual Studio .NET" url: "https://osherove.com/blog/2003/2/24/includingexcluding-files-in-visual-studio-net.md" canonical: "https://osherove.com/blog/2003/2/24/includingexcluding-files-in-visual-studio-net.html" published: "2003-02-24T09:19:00" updated: "2003-02-24T09:19:00" tags: [] author: "Roy Osherove" description: "Including/excluding files in Visual Studio .NET Date: 2/17/2003 Versions: VS7 Level: Beginner Author: The VB2TheMax Team Say that that you have an existing Visual Studio .NET project, and that you copy a lot of new…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Including/excluding files in Visual Studio .NET By Roy Osherove February 24, 2003 **Historical article** · Originally published February 24, 2003; technical details may be outdated. <table width="100%"><tbody><tr><td width="100%"><strong><a href="http://www.vb2themax.com/Item.asp?PageID=TipBank&ID=620">Including/excluding files in Visual Studio .NET</a></strong></td></tr><tr><td width="100%"><i><strong>Date:</strong> 2/17/2003<br><strong>Versions: </strong>VS7 <strong>Level: </strong>Beginner<br><strong>Author: </strong>The VB2TheMax Team</i><p>Say that that you have an existing Visual Studio .NET project, and that you copy a lot of new source code files, images and other stuff from another project (maybe you're merging two projects, or a colleague wrote and passed those files to you). One approach to include the new files is to use the <i>Project | Add Existing Item…</i> command and select all the files you want to include in the current project. Unfortunately this is quite long if the files are organized in a lot of sub-directories, and even more if you want to first check the content of the file, and eventually add the ones you need. A much simpler approach is the following: by clicking the <i>Project | Show all files</i> command the Solution Explorer will be filled with all the files and directories located under the project's main directory, allowing to easily browse the sub-directories, and to open the source code files to read their content, without actually adding them to the project. When you find the files you need, simply right click on them in the Solution Explorer, and select <i>Include In Project</i>. If you later want to remove a file from the project, without physically deleting it, right click on the file and select <i>Exclude From Project</i>.</p></td></tr></tbody></table> \[via [VB2TheMax](http://www.vb2themax.com/)\] --- title: "Funny Web page" url: "https://osherove.com/blog/2003/2/24/funny-web-page.md" canonical: "https://osherove.com/blog/2003/2/24/funny-web-page.html" published: "2003-02-24T09:04:00" updated: "2003-02-24T09:04:00" tags: [] author: "Roy Osherove" description: "http://www.next-in.com/kickers.html" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Funny Web page By Roy Osherove February 24, 2003 **Historical article** · Originally published February 24, 2003; technical details may be outdated. [http://www.next-in.com/kickers.html](http://www.next-in.com/kickers.html) --- title: "A lesson in usability" url: "https://osherove.com/blog/2003/2/24/a-lesson-in-usability.md" canonical: "https://osherove.com/blog/2003/2/24/a-lesson-in-usability.html" published: "2003-02-24T08:07:00" updated: "2003-02-24T08:07:00" tags: [] author: "Roy Osherove" description: "Delete a bookmark On the Insert menu, click Bookmark . Click the name of the bookmark you want to delete, and then click Delete . Note To delete both the bookmark and the bookmarked item, select the item, and then press…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # A lesson in usability By Roy Osherove February 24, 2003 **Historical article** · Originally published February 24, 2003; technical details may be outdated. # _Delete a bookmark_ 1. _On the **Insert** menu, click **Bookmark**._ 2. _Click the name of the bookmark you want to delete, and then click **Delete**._ _**Note**   To delete both the bookmark and the bookmarked item, select the item, and then press DELETE._ **\[From Word 2002 manual\]** crap. just wanted to create a template .Doc object with bookmarks to work with from COM automation, but once you get into these bookmark adventures, you never know how your gonna come out... so i got this text that is part of a bigger bookmark, but i just want to clip the last word from the bookmark field, but i **bloody can't**! i have to delete the whole goddamn thing and reapply it... **Update: Just thought i'd clarify what bothers me:** 1) you have to press "Insert" to "Delete" something. that is one of the pourest usablity designs i have ever seen.. 2) Deleting a bookmarked item automatically deletes the bookmark. Word shoud tell you that you just deleted or about to delete a bookmark 3) It's hard to work with bookmarks which are invisible. word provides no means of working with an invisible bookmark to edit a template. you have to have text items that are bookmarks to easily design template documents. why is that so hard to accomplish?  Last i saw, using Bookmarks in template documents was one of the most commonly used ways to create a word document with data inserted through automation. Yes, You could use Mail Merge, but this way is much simpler (or am i wrong..?) --- title: "The Last Configuration Handler I'll Ever Need - the next generation" url: "https://osherove.com/blog/2003/2/24/the-last-configuration-handler-ill-ever-need-the-next-genera.md" canonical: "https://osherove.com/blog/2003/2/24/the-last-configuration-handler-ill-ever-need-the-next-genera.html" published: "2003-02-24T06:35:00" updated: "2003-02-24T06:35:00" tags: [] author: "Roy Osherove" description: "I seem to be the last to notice Chris Sells post on types configuration object using serialization. Well, i just add that it's pretty darn cool. But one can take this further : 1) create a full serializable database and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The Last Configuration Handler I'll Ever Need - the next generation By Roy Osherove February 24, 2003 **Historical article** · Originally published February 24, 2003; technical details may be outdated. I seem to be the last to notice [Chris Sells post](http://staff.develop.com/candera/weblog/stories/2003/02/20/theLastConfigurationSectionHandlerIllEverNeed.html) on types configuration object using serialization. Well, i just add that it's pretty darn cool. But one can take this further : 1) create a full serializable **database** and just keep it in your config files 2)Create dynamic runtime **Template collection Objects**(like the future generics) that can be configured from the config file there must more more that can be done... --- title: "Microsoft Download Center RSS feed" url: "https://osherove.com/blog/2003/2/24/microsoft-download-center-rss-feed.md" canonical: "https://osherove.com/blog/2003/2/24/microsoft-download-center-rss-feed.html" published: "2003-02-24T06:18:00" updated: "2003-02-24T06:18:00" tags: [] author: "Roy Osherove" description: "Here's the RSS feed of new download from MSFT download center. very insightful, and contantly updated. http://www.thundermain.com/rss/ . Sorry i don't rememeber how i found it, so i can't give the honor, but isn't it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft Download Center RSS feed By Roy Osherove February 24, 2003 **Historical article** · Originally published February 24, 2003; technical details may be outdated. Here's the RSS feed of new download from MSFT download center. very insightful, and contantly updated. [http://www.thundermain.com/rss/](http://www.thundermain.com/rss/). Sorry i don't rememeber how i found it, so i can't give the honor, but isn't it cool? Have fun... Update: Got this comment, and am posting it, giving credit about this fine and much needed RSS feed: "_Hi, The RSS aggregator was written by myself and John Bristowe. It uses Chris Lovett's excellent SGMLReader from gotdotnet to do the HTML parsing. The ASP.Net cache is set to 1 hour to keep processing overhead low. Richard \[email removed\]_" Thanks for this fine peace of work guys :) --- title: "Blogoholic" url: "https://osherove.com/blog/2003/2/24/blogoholic.md" canonical: "https://osherove.com/blog/2003/2/24/blogoholic.html" published: "2003-02-24T06:12:00" updated: "2003-02-24T06:12:00" tags: [] author: "Roy Osherove" description: "very funny post by Russel Beattie, which reminds me of myself pretty much..: \"I was just not going to connect all day - having brought my PC across the room from my DSL connection (without WiFi card) and was working…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Blogoholic By Roy Osherove February 24, 2003 **Historical article** · Originally published February 24, 2003; technical details may be outdated. very funny [post](http://www.russellbeattie.com/notebook/20030223.html#155926) by Russel Beattie, which reminds me of myself pretty much..: _"I was just not going to connect all day - having brought my PC across the room from my DSL connection (without WiFi card) and was working there. But we ate lunch and I plugged my computer back in to juice up the batteries and thought - like an addict - "I'll just connect for a minute. Just to read my mail..." and as you can see I'm now blogging. I may need help. Is there a 12 step program for bloggers? ..._ _..._ _Wait... Am I blogging again instead of being productive? Why, yes I am... I started an outline of ideas for things I want to blog about but don't have time yet. I'll never catch up at this rate... maybe I need to learn to type faster? ..."_ --- title: "About Syndirella" url: "https://osherove.com/blog/2003/2/24/about-syndirella.md" canonical: "https://osherove.com/blog/2003/2/24/about-syndirella.html" published: "2003-02-24T06:01:00" updated: "2003-02-24T06:01:00" tags: [] author: "Roy Osherove" description: "Sadly, I learned that NewsGator now costs money :) On one hand, this is a good thing for the creator, and it's agood product( my favorite aggregator), on the other hand i can't see myself paying 30 bucks for an…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # About Syndirella By Roy Osherove February 24, 2003 **Historical article** · Originally published February 24, 2003; technical details may be outdated. Sadly, I learned that [NewsGator](http://www.newsgator.com/) now costs money :) On one hand, this is a good thing for the creator, and it's agood product( my favorite aggregator), on the other hand i can't see myself paying 30 bucks for an aggregator when i can get one that is almost as good for free. So i tried, and am currently writing this post from within Syndirella. and what can i say. it **rocks**! <SuckingUp> Scott is doing a great job keeping both this site and Synderella great products. I do see great thing and a great community building up here, and i love it. It's my own little Conference on my computer. Iget to listen and respond to people i respect and appreciate (mainly listen though..) and learn a lot just by browsing. </SuckingUp> Anyway, that's my 2 cents worth. --- title: ".NetWeblog Update -Woohoo!" url: "https://osherove.com/blog/2003/2/24/netweblog-update-woohoo.md" canonical: "https://osherove.com/blog/2003/2/24/netweblog-update-woohoo.html" published: "2003-02-24T05:38:00" updated: "2003-02-24T05:38:00" tags: [] author: "Roy Osherove" description: "Hello Everyone, OK, just pushed a new (and I hope improved) version of the Blog Application to the live server. I guess I am going to call this Beta 2.5 since I did not get all of the features I wanted to in this build,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .NetWeblog Update -Woohoo! By Roy Osherove February 24, 2003 **Historical article** · Originally published February 24, 2003; technical details may be outdated. _Hello Everyone,_ _OK, just pushed a new (and I hope improved) version of the Blog Application to the live server. I guess I am going to call this Beta 2.5 since I did not get all of the features I wanted to in this build, but one of the most important features, PingBacks/Trackbacks did make it, so I wanted to make sure these features where now available to everyone._ _\[via Email from [Scott](http://aspnetweblog.com/)\]_ Woohoo! This site is quickly becoming my little blogging heaven. Just wanted to say "Great job" to you, and keep up the good work. Update: Although i have put a short description in the Description box, the RSS feed shows me the whole post, not the description.. --- title: "Nunit Addin bliss" url: "https://osherove.com/blog/2003/2/23/nunit-addin-bliss.md" canonical: "https://osherove.com/blog/2003/2/23/nunit-addin-bliss.html" published: "2003-02-23T16:15:00" updated: "2003-02-23T16:15:00" tags: [] author: "Roy Osherove" description: "So i decided to take my first steps as a Test-First programmer today. I downloaded NUnit 2.0 , and after that - NUnit Addin , and after 5 minutes of \"readme\", i was ready to go. I opened up the current project i am…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nunit Addin bliss By Roy Osherove February 23, 2003 **Historical article** · Originally published February 23, 2003; technical details may be outdated. So i decided to take my first steps as a Test-First programmer today. I downloaded [NUnit 2.0](http://nunit.org/), and after that - [NUnit Addin](http://www.mutantdesign.co.uk/nunit-addin/), and after 5 minutes of "readme", i was ready to go. I opened up the current project i am working on, added the reference, enabled the Nunit Addin, and after 7 minutes more i had my first test class **ready and running**, passing all the tests. now **THIS** is productive. Simply right clicking on the Code section and selecting "Run Test" is my **little point of bliss** for today. Way to go. Keep on the great work. I hope to contribute someday to either of these projects, only first i'll need to dive in to the whole IDE extensibilty features, which ,i admit, is far on my study wish list currently. --- title: "More bug tracking software" url: "https://osherove.com/blog/2003/2/23/more-bug-tracking-software.md" canonical: "https://osherove.com/blog/2003/2/23/more-bug-tracking-software.html" published: "2003-02-23T06:20:00" updated: "2003-02-23T06:20:00" tags: [] author: "Roy Osherove" description: "Chris wrote: Bug Tracking Alex is looking for bug tracking software. I have never used this (use a spreadsheet - the shame!) but fogbugz is supposed to be good.. You can find an exhaustive list of Bug Tracking…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # More bug tracking software By Roy Osherove February 23, 2003 **Historical article** · Originally published February 23, 2003; technical details may be outdated. [_Chris_](http://dotnetweblogs.com/Cgarrett/) _wrote:_ [_Bug Tracking_](http://dotnetweblogs.com/Cgarrett/archive/02212003.aspx#2739) _[Alex](http://dotnetweblogs.com/alowe/) is looking for bug tracking software. I have never used this (use a spreadsheet - the shame!) but [fogbugz](http://www.fogcreek.com/FogBUGZ/) is supposed to be good.. You can find an exhaustive list of Bug Tracking applications here:_ [_http://www.aptest.com/resources.html#bug_](http://www.aptest.com/resources.html#bug) ... \[via [heLP .NET](http://dotnetweblogs.com/Pleloup/archive/02212003.aspx#2765)\] I know of anohter windows based simple bug tracking solution: [AdminLog](http://www.chouglesoft.com/index_al.htm) **Freeware** for SQL server - very nice and easy - works with SQL server. however, security and permissions are not implemented, yet its just what our small dev team (4 people) needed... --- title: "Code monkeys are people too" url: "https://osherove.com/blog/2003/2/23/code-monkeys-are-people-too.md" canonical: "https://osherove.com/blog/2003/2/23/code-monkeys-are-people-too.html" published: "2003-02-23T05:50:00" updated: "2003-02-23T05:50:00" tags: [] author: "Roy Osherove" description: "\"Computer programming is taught in courses. The excellent books: The Pragmatic Programmer[8], Code Complete[3], Rapid Development[2], and Extreme Programming Explained[4] all teach computer programming and the larger…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Code monkeys are people too By Roy Osherove February 23, 2003 **Historical article** · Originally published February 23, 2003; technical details may be outdated. _"Computer programming is taught in courses. The excellent books:_ _The Pragmatic Programmer\[8\], Code Complete\[3\], Rapid Development\[2\], and_ _Extreme Programming Explained\[4\] all teach computer programming and the_ _larger issues of being a good programmer."_ \[from :  [How to be a Programmer](http://samizdat.mines.edu/howto/HowToBeAProgrammer.pdf): A Short, Comprehensive, and Personal Summary Robert L. Read <\[email removed\]>\] Finally, I feel as part of a group, having read all the aforementioned books. I must admit that Code Complete and Rapid Development were a bit on the cumbersome and dull side, however, they all have been a big help in maturing as a ~code moneky~ programmer and seeing the big picture. --- title: "The big picture" url: "https://osherove.com/blog/2003/2/23/the-big-picture.md" canonical: "https://osherove.com/blog/2003/2/23/the-big-picture.html" published: "2003-02-23T05:02:00" updated: "2003-02-23T05:02:00" tags: [] author: "Roy Osherove" description: "The Code Explorer The CodeSMART Code Explorer is a navigational and management tool that integrates features from both the standard Solution Explorer and the standard Class View . For a solution and its projects, it…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The big picture By Roy Osherove February 23, 2003 **Historical article** · Originally published February 23, 2003; technical details may be outdated. ##### _The Code Explorer_ _The **CodeSMART Code Explorer** is a **navigational and management tool** that integrates features from both the standard **Solution Explorer** and the standard **Class View**. For a solution and its projects, it displays a single hierarchical list with all the contained items, from files and folders down to functions and variables._ ![](https://osherove.com/img/wb/d54cb9b2_www.axtools.com_products_showcs2k3net_CodeExplorer1.gif) \[via [CodeSmart.NET Screenshots page](http://www.axtools.com/products/cs2k3net_screenshots.htm#T21)\] again, coolness. --- title: "CodeSmart.NET productivity Addin announced" url: "https://osherove.com/blog/2003/2/23/codesmartnet-productivity-addin-announced.md" canonical: "https://osherove.com/blog/2003/2/23/codesmartnet-productivity-addin-announced.html" published: "2003-02-23T04:52:00" updated: "2003-02-23T04:52:00" tags: [] author: "Roy Osherove" description: "AxTools are coming out with CodeSmart.NET . I have been an avid user of their CodeSmart for VB, which ,in my opinion, is one of the most productive and comprehensve addins on the market for VB (And ive used most if not…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # CodeSmart.NET productivity Addin announced By Roy Osherove February 23, 2003 **Historical article** · Originally published February 23, 2003; technical details may be outdated. [AxTools](http://www.axtools.com/) are coming out with [CodeSmart.NET](http://www.axtools.com/products/cs2k3net_screenshots.htm). I have been an avid user of their CodeSmart for VB, which ,in my opinion, is one of the most productive and comprehensve addins on the market for VB (And ive used most if not all of those that matter). This release is  ,to me, just a natural step forward. What they are adding (which surprisingly, VS.NET doe NOT have!) among other things is "auto-text" which expands your keystrokes to code fragments (ie: typing 'sc' pastes in a preformatted 'select case' clause and so on..). this is an amazing feature, which MSFT have yet grasped for some reason. anyway, i heartedly recommend checking it out I know i will), even if i do think that someof the features presented by CodeSmart.NET maybe a little shadowed by the fact that some of them are possible by doing Macros. Here'spart of  the email i got from them with some info and [screenshots](http://www.axtools.com/products/cs2k3net_screenshots.htm) page. _\----------------------------------------------------_ _Dear Roy,_ _We are pleased to announce that we have just released CodeSMART 2003 for VS .NET. Packed with many features and valuable tools, it currently represents the most advanced collection of utilities for Visual Basic .NET and C# developers._ _\============================================================================_ _\=_ _1\. 'CodeSMART 2003 for VS .NET' Features_ _2\. 'CodeSMART 2003 for VS .NET' Price List ============================================================================_ _\=_ _1\. 'CodeSMART 2003 for VS .NET' Features_ _\=====================================_ _1\. Advanced Code Builders (implement complex code constructs like interfaces,_ _custom exception and formatter classes, C# event definition code, object_ _construction and destruction code)_ _2\. AutoText (MsWord-like AutoText alias-based automated code replacement for_ _VB .NET and C#)_ _3\. Code Explorer (enhanced project management and navigation tool. See the code_ _behind your components in a Solution Explorer-like view, with custom tree_ _sorting)_ _4\. Code Formatter (smart format code documents, perform blank lines management_ _and long lines wrapping, split methods definition line by arguments)_ _5\. Code Outlining (create and collapse regions and zone, outline definition_ _blocks)_ _6\. Code Snippets Databases (team-enabled code repository for VB .NET and C#,_ _search capabilities, drag & drop from code support)_ _7\. Code Statistics (get statistic information on VB .NET or C# code at any_ _scope within your applications)_ _8\. Custom Code (for example insert and remove tracing instructions on the_ _fly)_ _9\. Designer Tools (Tab Order Designer, change the name and the text properties_ _of your controls on the fly, control identification support)_ _10\. Exception Handling (exception handling engine based on custom templates,_ _automatically insert and remove exception handling code)_ _11\. Extended Clipboard (10 supplementary copy-and-paste buffers, persistent_ _between sessions)_ _12\. Extended Find and Replace (powerful search and replace engine, single and_ _multiline support with wildcards and regular expression, comprehensive_ _results lists)_ _13\. Find References (identify all the places were a certain type is used)_ _15\. Review Strings (easily view and modify all string constants used in_ _code)_ _16\. Save and Backup (save the modified components at specific time intervals_ _using the AutoSave feature, create backup copies every time you save a_ _component with AutoBackup)_ _17\. Simple Code Builders (Class Builder, Property Builder, Method Builder,_ _Switch Assignment Values)_ _18\. Sort Procedures (rearrange the code in a more logical and intelligible_ _manner by scope, type and signature)_ _19\. Spelling Checker (check comments, strings and control text properties_ _for spelling errors)_ _20\. Standard Comments (insert descriptive and inline comments)_ _21\. Workbench (create persistent shortcuts and focus only on a limited number_ _of components and code elements, restore your working environment between_ _sessions)_ _22\. XML Comments (benefit of XML comments support for VB .NET and add_ _consistency with the XML comment templates available for VB .NET and C#)_ _A comprehensive screenshots page with extensive descriptions is available at the_ [_http://www.axtools.com/products/cs2k3net\_screenshots.htm_](http://www.axtools.com/products/cs2k3net_screenshots.htm) _address. Also, a 14-day limited trial version of 'CodeSMART 2003 for VS .NET' is available for download from_ [_http://www.axtools.com/products/cs2k3net\_download.htm_](http://www.axtools.com/products/cs2k3net_download.htm)_._ _For more details on this product, please do not hesitate to visit our home site at_ [_http://www.axtools.com_](http://www.axtools.com/) \--------------CUT-------------------- --- title: "AppSettings Coolness" url: "https://osherove.com/blog/2003/2/22/appsettings-coolness.md" canonical: "https://osherove.com/blog/2003/2/22/appsettings-coolness.html" published: "2003-02-22T20:45:00" updated: "2003-02-22T20:45:00" tags: [] author: "Roy Osherove" description: "Say you want to store a setting in an XML config file: <?xml version=\"1.0\" encoding=\"utf-8\" ?> <configuration> <appSettings> <add key=\"WebServiceUrl\" value=\"http://mypublicserver/smartclientservice.asmx?wsdl\" />…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # AppSettings Coolness By Roy Osherove February 22, 2003 **Historical article** · Originally published February 22, 2003; technical details may be outdated. _Say you want to store a setting in an XML config file: __<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> **<add key="WebServiceUrl" value="http://mypublicserver/smartclientservice.asmx?wsdl" /> **</appSettings> </configuration>_ _To access the setting from within your app use the ConfigurationSettings class: **\_service.Url = ConfigurationSettings.AppSettings\["WebServiceUrl"\].ToString(); **_\[via [StronglyTyped](http://www.stronglytyped.com/#90357538)\] heh! That is pure coolness (as geeky as i might seem..) --- title: "HOWTO: Let the user Filter object property values dynamically" url: "https://osherove.com/blog/2003/2/22/howto-let-the-user-filter-object-property-values-dynamically.md" canonical: "https://osherove.com/blog/2003/2/22/howto-let-the-user-filter-object-property-values-dynamically.html" published: "2003-02-22T20:07:00" updated: "2003-02-22T20:07:00" tags: [] author: "Roy Osherove" description: "I am currently creating a project where a user can see trace messages from older applications written in VB 6.0. we have a trace utility that throws traces using COM . iIdecided i would try to write a client in C#. the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # HOWTO: Let the user Filter object property values dynamically By Roy Osherove February 22, 2003 **Historical article** · Originally published February 22, 2003; technical details may be outdated. I am currently creating a project where a user can see trace messages from older applications written in VB 6.0. we have a trace utility that throws traces using **COM**.  iIdecided i would try to write a client in C#. the user should have the ability to filter the traces that he sees, based on regular expressions. So i have my TraceMessage Objects with their properties and stuff, and i created a FILTER object that decides whether a certain message passes the filter. however, i **DID NOT** want the filter to be built Hard coded to the properties of the Message, as the Message could take many shapes and can (in the future) come from many sources and have different properties. **Reflection to the rescue** - I created a small function that uses reflection and lets the user decide for each filter, what property he wants to check, and the needed value it should have. it turned out pretty easy, and pretty cool. My FINAL goal i think would be to let the user use not only regular expression since those need learning and not everyone knows them ,but to let the user write "AND (X OR Y) OR Z..." etc... still have no idea how to do that though. there must be a way to evaluate expressions in .NET, shouldnt there... if anyone knows how, please notify me. Thanks. Anyway, heres the code:   //the actual work: Public bool Passes(TraceMessage msg)   {    try    {     Type t  = msg.GetType();     PropertyInfo pinfo = t.GetProperty(m\_NeededName);     if (pinfo==null)      return false;     if (pinfo.CanRead )     {      string val =  (string)pinfo.GetValue(msg,null).ToString();      if (Regex.IsMatch(val,m\_NeededValue))      {       return true;      }     }     return false;    }    catch(Exception e)    {     throw e;    }       } //How to use this: private void OnTrace(TraceListener listener,ArrayList traces)   {    Filter f = new Filter("Message","=");    foreach(TraceMessage msg in traces)    {     if (f.Passes(msg))      WriteTrace(msg);    }   } --- title: "App.Config Magic" url: "https://osherove.com/blog/2003/2/22/appconfig-magic.md" canonical: "https://osherove.com/blog/2003/2/22/appconfig-magic.html" published: "2003-02-22T18:55:00" updated: "2003-02-22T18:55:00" tags: [".Net Original", "Tips & Tricks"] author: "Roy Osherove" description: "Here's another tidbit i found: If i want my application to have a config file, i need to create a file named .config in the output directory. but here's a nice touch you can do with VS.NET: click \" Add Item \" button,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # App.Config Magic By Roy Osherove February 22, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published February 22, 2003; technical details may be outdated. Here's another tidbit i found: If i want my application to have a **config** file, i need to create a file named **.config** in the output directory. but here's a nice touch you can do with VS.NET: click "**Add Item**" button, and select "**XML File**". Make you sure you name the new file "**App.Config**". The item will be placed in your project directory. But now, when you **build** the application, VS.NET will automatically **copy the file with the appropriate name** to where it's supposed to be (your debug or release directory) without you having to worry about it anymore. grand. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 13, 2003 ### [Free GUI component for VS .NET users](https://osherove.com/blog/2003/3/13/free-gui-component-for-vs-net-users.html) - Mar 5, 2003 ### [Explorer Tips and tricks for the keyboard junkie](https://osherove.com/blog/2003/3/5/explorer-tips-and-tricks-for-the-keyboard-junkie.html) - Feb 22, 2003 ### [Cool IDE Shortcut](https://osherove.com/blog/2003/2/22/cool-ide-shortcut.html) - Feb 10, 2003 ### [Killer IDE macro](https://osherove.com/blog/2003/2/10/killer-ide-macro.html) --- title: "Cool IDE Shortcut" url: "https://osherove.com/blog/2003/2/22/cool-ide-shortcut.md" canonical: "https://osherove.com/blog/2003/2/22/cool-ide-shortcut.html" published: "2003-02-22T15:19:00" updated: "2003-02-22T15:19:00" tags: [".Net Original", "Tips & Tricks"] author: "Roy Osherove" description: "here's something i just found out: Select some text in the ide and press CTRL+SHIFT+U - and the selection becomes UPPERCASE . Use CTRL+U to make it lowercase .. tada!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool IDE Shortcut By Roy Osherove February 22, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published February 22, 2003; technical details may be outdated. here's something i just found out: Select some text in the ide and press CTRL+SHIFT+U - and the selection becomes **UPPERCASE**. Use CTRL+U to make it **lowercase**.. tada! ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Mar 5, 2003 ### [Explorer Tips and tricks for the keyboard junkie](https://osherove.com/blog/2003/3/5/explorer-tips-and-tricks-for-the-keyboard-junkie.html) - Feb 22, 2003 ### [App.Config Magic](https://osherove.com/blog/2003/2/22/appconfig-magic.html) - Feb 10, 2003 ### [Killer IDE macro](https://osherove.com/blog/2003/2/10/killer-ide-macro.html) --- title: "Late bound wrapper to MS Word object" url: "https://osherove.com/blog/2003/2/19/late-bound-wrapper-to-ms-word-object.md" canonical: "https://osherove.com/blog/2003/2/19/late-bound-wrapper-to-ms-word-object.html" published: "2003-02-19T18:25:00" updated: "2003-02-19T18:25:00" tags: [] author: "Roy Osherove" description: "Here is a simple wrapper object that shows you how to late bind to Microsoft Word's spell checker from .net. Use it like this: MSWord word = new MSWord(); assert( word.CheckSpelling(\"antidisestablishmentarianism\") );…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Late bound wrapper to MS Word object By Roy Osherove February 19, 2003 **Historical article** · Originally published February 19, 2003; technical details may be outdated. [_Here_](http://www.dotnetdog.com/archives/MSWordWrapper.zip) _is a simple wrapper object that shows you how to late bind to Microsoft Word's spell checker from .net._ _Use it like this: __MSWord word = new MSWord(); assert( word.CheckSpelling("antidisestablishmentarianism") ); _ _Late binding from .net in C# to COM is not very straightforward, or documented...._ _[Posted by nick](http://www.dotnetdog.com/archives/000002.html) at December 2, 2002 11:03 PM _ Looking at the wrapper code, you gotta wonder why doing LateBound COM manipulation is so darn clumsy and wordy. it looks like it could be much more elegant.... --- title: "ASP.NET Utilities" url: "https://osherove.com/blog/2003/2/19/aspnet-utilities.md" canonical: "https://osherove.com/blog/2003/2/19/aspnet-utilities.html" published: "2003-02-19T10:49:00" updated: "2003-02-19T10:49:00" tags: [] author: "Roy Osherove" description: "Scott Guthrie has further information about the tools and utilities to diagnose ASP.NET issues, that come with the MSDN article I posted a link to yesterday. [via Sam ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # ASP.NET Utilities By Roy Osherove February 19, 2003 **Historical article** · Originally published February 19, 2003; technical details may be outdated. [_Scott Guthrie has further information_](http://dotnetweblogs.com/ScottGu/archive/02172003.aspx#2551) _about the tools and utilities to diagnose ASP.NET issues, that come with the_ [_MSDN article_](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/monitor_perf.asp?frame=true) _I posted a link to yesterday._ \[via [Sam](http://dotnetweblogs.com/sgentile)\] --- title: "Article: Five Considerations for Writing Large-Scale Systems" url: "https://osherove.com/blog/2003/2/19/article-five-considerations-for-writing-large-scale-systems.md" canonical: "https://osherove.com/blog/2003/2/19/article-five-considerations-for-writing-large-scale-systems.html" published: "2003-02-19T07:43:00" updated: "2003-02-19T07:43:00" tags: [] author: "Roy Osherove" description: "A while back, I realized that you can break down the requirements for writing a large-scale system into five areas: scalability, availability, security, managability, and everything else. I often use this breakdown when…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Article: Five Considerations for Writing Large-Scale Systems By Roy Osherove February 19, 2003 **Historical article** · Originally published February 19, 2003; technical details may be outdated. _A while back, I realized that you can break down the requirements for writing a large-scale system into five areas: scalability, availability, security, managability, and everything else. I often use this breakdown when consulting, and you'd be surprised to see how obvious it makes what people are missing._ _I wrote up my results in a little whitepaper a while back, which I've since updated with some refinements around security. I've converted it to HTML and put it_ [_here_](http://staff.develop.com/candera/weblog/stories/2003/02/18/fiveConsiderationsForBuildingLargescaleSystems.html)_._ \[via [CragBlog](http://staff.develop.com/candera/weblog/)\] Looks really interesting.Ii can't wait to **delve** in to this. right after work that is.. --- title: "I got my own domain!" url: "https://osherove.com/blog/2003/2/19/i-got-my-own-domain.md" canonical: "https://osherove.com/blog/2003/2/19/i-got-my-own-domain.html" published: "2003-02-19T05:34:00" updated: "2003-02-19T05:34:00" tags: [] author: "Roy Osherove" description: "Finally. It seems as though no one had thought of this (IMHO) cool domain name: ISerializable.Com . I have made it forward to this blog URL so now my blog is much more easily accessible. cheers." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I got my own domain! By Roy Osherove February 19, 2003 **Historical article** · Originally published February 19, 2003; technical details may be outdated. Finally. It seems as though no one had thought of this (IMHO) cool domain name: **ISerializable.Com**. I have made it forward to this blog URL so now my blog is much more easily accessible. cheers. --- title: "Super Blogger" url: "https://osherove.com/blog/2003/2/18/super-blogger.md" canonical: "https://osherove.com/blog/2003/2/18/super-blogger.html" published: "2003-02-18T19:11:00" updated: "2003-02-18T19:11:00" tags: [] author: "Roy Osherove" description: "here is the top of the bloggers list from http://dotnetweblogs.com/ . something seems a bit odd, don't it? ;) ---------SNIP--------------- Bloggers (posts, last update) Sam Gentile ( 1353 , 2/18/2003 12:50 PM ) Drew…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Super Blogger By Roy Osherove February 18, 2003 **Historical article** · Originally published February 18, 2003; technical details may be outdated. <table id="Table1" width="80%"><tbody><tr><td></td></tr><tr><td><table id="Table2" width="100%"><tbody><tr><td width="300"><p>here is the top of the bloggers list from <a href="http://dotnetweblogs.com/">http://dotnetweblogs.com/</a>. something seems a bit odd, don't it? ;)</p><p>---------SNIP---------------</p><p><em>Bloggers (posts, last update)</em></p><p><em></em> </p><table width="100%"><tbody><tr><td><a href="http://dotnetweblogs.com/sgentile/" id="Bloggers__ctl1_Hyperlink1" name="Hyperlink1"><em>Sam Gentile</em></a><em>  (<span id="Bloggers__ctl1_Label2">1353</span>, <span id="Bloggers__ctl1_Label1">2/18/2003 12:50 PM</span>)</em></td></tr><tr><td><a href="http://dotnetweblogs.com/dmarsh/" id="Bloggers__ctl2_Hyperlink1" name="Hyperlink1"><em>Drew Marsh</em></a><em>  (<span id="Bloggers__ctl2_Label2">223</span>, <span id="Bloggers__ctl2_Label1">2/17/2003 1:39 PM</span>)</em></td></tr><tr><td><a href="http://aspnetweblog.com/" id="Bloggers__ctl3_Hyperlink1" name="Hyperlink1"><em>Scott Watermasysk</em></a><em>  (<span id="Bloggers__ctl3_Label2">136</span>, <span id="Bloggers__ctl3_Label1">2/17/2003 8:48 PM</span>)</em></td></tr><tr><td><a href="http://dotnetweblogs.com/Pleloup/" id="Bloggers__ctl4_Hyperlink1" name="Hyperlink1"><em>Pascal Leloup</em></a><em>  (<span id="Bloggers__ctl4_Label2">42</span>, <span id="Bloggers__ctl4_Label1">2/18/2003 6:44 PM</span>)</em></td></tr><tr><td><a href="http://dotnetweblogs.com/SIbrahim/" id="Bloggers__ctl5_Hyperlink1" name="Hyperlink1"><em>Samer Ibrahim</em></a><em>  (<span id="Bloggers__ctl5_Label2">40</span>, <span id="Bloggers__ctl5_Label1">2/17/2003 11:29 PM</span>)</em></td></tr><tr><td><a href="http://dotnetweblogs.com/pscott/" id="Bloggers__ctl6_Hyperlink1" name="Hyperlink1"><em>Phil Scott</em></a><em>  (<span id="Bloggers__ctl6_Label2">38</span>, <span id="Bloggers__ctl6_Label1">2/18/2003 2:44 PM</span>)</em></td></tr><tr><td><p><a href="http://dotnetweblogs.com/ROsehrove/" id="Bloggers__ctl7_Hyperlink1" name="Hyperlink1"><em>Roy Osehrove</em></a><em>  (<span id="Bloggers__ctl7_Label2">36</span>, <span id="Bloggers__ctl7_Label1">2/18/2003 10:57 PM</span>)</em></p><p><em>...</em></p><p><em>-------------SNIP-----------------------</em></p><p>looking at these numbers - can you spot the different? who is the super poster?</p><p><strong>Go Sam</strong>! - <strong>1353</strong> posts. i believe that is a record. :)</p><p>(i, on the other hand, have some catching up to do.. )</p></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table> --- title: "Killer bookmark" url: "https://osherove.com/blog/2003/2/18/killer-bookmark.md" canonical: "https://osherove.com/blog/2003/2/18/killer-bookmark.html" published: "2003-02-18T18:57:00" updated: "2003-02-18T18:57:00" tags: [] author: "Roy Osherove" description: "I don't use it often - but when I need it - it always saves the day. I am talking about Connectionstrings.com . [via Mike Roselius ] This one's a definite keeper!" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Killer bookmark By Roy Osherove February 18, 2003 **Historical article** · Originally published February 18, 2003; technical details may be outdated. _I don't use it often - but when I need it - it always saves the day.  I am talking about_ [_Connectionstrings.com_](http://www.connectionstrings.com/) _._ \[via [Mike Roselius](http://dotnetweblogs.com/Mroselius/)\] This one's a definite keeper! --- title: "MCAD / MCSD most Helpful exam study links" url: "https://osherove.com/blog/2003/2/18/mcad-mcsd-most-helpful-exam-study-links.md" canonical: "https://osherove.com/blog/2003/2/18/mcad-mcsd-most-helpful-exam-study-links.html" published: "2003-02-18T18:52:00" updated: "2003-02-18T18:52:00" tags: [] author: "Roy Osherove" description: "Not sure if anyone is looking to get their MCAD / MCSD for Microsoft .NET out there, but a couple of links that I've found treemendously helpful are Tim's Exam Links . What he's basically done is taken Microsoft's list…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # MCAD / MCSD most Helpful exam study links By Roy Osherove February 18, 2003 **Historical article** · Originally published February 18, 2003; technical details may be outdated. _Not sure if anyone is looking to get their MCAD / MCSD for Microsoft .NET out there, but a couple of links that I've found treemendously helpful are_ [_Tim's Exam Links_](http://www.codeclinic.com/certification.htm)_. What he's basically done is taken Microsoft's list of skills you need to pass the exam, and provides links to MSDN or other websites where you can pick up the skill._  _..._ \[via [Phil Scott](http://dotnetweblogs.com/pscott/archive/02122003.aspx#2301)\] Thanks for the info Phil! Since i am currently studying for MCAD/MCSD myself, these should prove pretty helpful. --- title: "Code analysis tool for your .NET needs" url: "https://osherove.com/blog/2003/2/18/code-analysis-tool-for-your-net-needs.md" canonical: "https://osherove.com/blog/2003/2/18/code-analysis-tool-for-your-net-needs.html" published: "2003-02-18T15:05:00" updated: "2003-02-18T15:05:00" tags: [] author: "Roy Osherove" description: "FxCop version 1.074 FxCop is a code analysis tool that checks your .NET assemblies for conformance to the .NET Framework Design Guidelines . It uses reflection, MSIL parsing, and callgraph analysis to inspect your…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Code analysis tool for your .NET needs By Roy Osherove February 18, 2003 **Historical article** · Originally published February 18, 2003; technical details may be outdated. ##### _FxCop version 1.074_ _FxCop is a code analysis tool that checks your .NET assemblies for conformance to the_ [_.NET Framework Design Guidelines_](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconnetframeworkdesignguidelines.asp) _![](https://osherove.com/img/wb/0377aaa4_www.gotdotnet.com_images_leaving_gdn.gif). It uses reflection, MSIL parsing, and callgraph analysis to inspect your assemblies for more than 175 defects in the following areas: naming conventions, library design, localization, security, and performance (see_ [_rule descriptions_](http://www.gotdotnet.com/team/libraries/FxCopRules/default.aspx)_). The package includes both GUI and command line versions of the tool, as well as the SDK to create your own rules. Post your comments in the_ [_FxCop message board_](http://www.gotdotnet.com/community/messageboard/MessageBoard.aspx?ID=234)_._ **_![](https://osherove.com/img/wb/1c346a44_www.gotdotnet.com_images_new_gdn.gif)_[_Download FxCop version 1.074 here_](http://www.gotdotnet.com/team/libraries/FxCopInstall.EXE)** _(4395k) ![](https://osherove.com/img/wb/c4fef3f4_www.gotdotnet.com_images_download_gdn.gif)_ via \[[GotDotNet libraries page](http://www.gotdotnet.com/team/libraries/)\] Thanks to \[[Incessant Ramblings](http://headblender.com/joe/blog/)\] for [pointing](http://headblender.com/joe/blog/archives/personal/000945.html) me to this tool --- title: "how do you make your .NET application scriptable?" url: "https://osherove.com/blog/2003/2/18/how-do-you-make-your-net-application-scriptable.md" canonical: "https://osherove.com/blog/2003/2/18/how-do-you-make-your-net-application-scriptable.html" published: "2003-02-18T14:11:00" updated: "2003-02-18T14:11:00" tags: [] author: "Roy Osherove" description: "One of the last big projects i have done in VB 6.0 was creating an inhouse system that was also totally scriptable, using MS Script control. the user could react to ecents raised by the aplication, and interact and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # how do you make your .NET application scriptable? By Roy Osherove February 18, 2003 **Historical article** · Originally published February 18, 2003; technical details may be outdated. One of the last big projects i have done in **VB 6.0** was creating an inhouse system that was also totally scriptable, using MS Script control. the user could react to ecents raised by the aplication, and interact and write whole scripts using it's rich object model. it was quite powerful. It used the very cool and free [CodeSense syntax editor control](http://www.ticz.com/homes/users/nlewis/), and was my pride and joy. The question arises whether this possibility remains in managed languages. What is the way to develop scriptable applications using **C#?** are there any scripting libraries? or perhaps i should investigate the whole **reflection** or **compilerServices** namespaces.. My guess is it is probably harder to implement such functionality then it was using MSSCRIPT, although not impossible. I think that there is probably more internal support for this and one can do much more then VBScript style scripting, one can do full managed scripting (probably) with type checking and everything. How to do this without building your own little C# compiler still remains to be seen for me. will keep you updated as to developments... Update: _Title: Check out this article Name:_ [**_Jason_**](http://www.dotnetweblogs.com/jtucker)_ Posted Date: 2/18/2003 10:02 AM __There was an article in the August issue of MSDN Mag, actually written by Chris Sells.. check it out here. [http://msdn.microsoft.com/msdnmag/issues/02/08/VisualStudioforApplications/default.aspx](http://msdn.microsoft.com/msdnmag/issues/02/08/VisualStudioforApplications/default.aspx)_ _I am diving in as we speak! thanks!_ --- title: "Why is this missing from C#?" url: "https://osherove.com/blog/2003/2/18/why-is-this-missing-from-c.md" canonical: "https://osherove.com/blog/2003/2/18/why-is-this-missing-from-c.html" published: "2003-02-18T13:23:00" updated: "2003-02-18T13:23:00" tags: [] author: "Roy Osherove" description: "Found out about a cool feature in VB.NET, but i can't seem to find something similar inC#. In VB.NET you can create a Catch block that only catches the execption depending on a boolean statement. the syntax for this is…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Why is this missing from C\#? By Roy Osherove February 18, 2003 **Historical article** · Originally published February 18, 2003; technical details may be outdated. Found out about a cool feature in VB.NET, but i can't seem to find something similar inC#. In VB.NET you can create a Catch block that only catches the execption depending on a boolean statement. the syntax for this is pretty elegant: just write: Catch ex as Exception When x>1 now why don't C# developers have this? i can see a lot of elegant possibilities with this feature.. --- title: "Ink-based designer - Now that's cool!" url: "https://osherove.com/blog/2003/2/18/ink-based-designer-now-thats-cool.md" canonical: "https://osherove.com/blog/2003/2/18/ink-based-designer-now-thats-cool.html" published: "2003-02-18T10:32:00" updated: "2003-02-18T10:32:00" tags: [] author: "Roy Osherove" description: "This is so cool, a pen-based forms design tool for Visual Studio.Net. This was demo'ed in VSLive! and Shawn writes that they wowed a late-evening tired crowd. I ask who won't get wowed by such a tool, the dead ones are…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ink-based designer - Now that's cool! By Roy Osherove February 18, 2003 **Historical article** · Originally published February 18, 2003; technical details may be outdated. _This is so cool, a_ [_pen-based forms design tool_](http://www.leszynski.com/popVSLive0302.htm) _for Visual Studio.Net. This was demo'ed in VSLive! and_ [_Shawn_](http://dotnetweblogs.com/SAVanNess/) _writes that they wowed a late-evening tired crowd. I ask who won't get wowed by such a tool, the dead ones are already turning up in their graves....:)_ _\[via_ [_Shawn A. Van Ness's Blog_](http://dotnetweblogs.com/SAVanNess/)_\]_ _\[via_ [_Deepak Sharma's .Net WebLog_](http://dotnetweblogs.com/DSharma/archive/02182003.aspx#2549)_\]_ I just had to paste the Screenshot here as well, it is so darn cool. ![Leszynski Group VS Live Presentation](https://osherove.com/img/wb/a2766f20_www.leszynski.com_images_news_VSLive0302.jpg) --- title: "Use VB.NET functionality from within C#" url: "https://osherove.com/blog/2003/2/18/use-vbnet-functionality-from-within-c.md" canonical: "https://osherove.com/blog/2003/2/18/use-vbnet-functionality-from-within-c.html" published: "2003-02-18T08:54:00" updated: "2003-02-18T08:54:00" tags: [] author: "Roy Osherove" description: "How: 1) Add a reference to Microsoft.VisualBasic Runtime frim the \".NET\" references menu 2) Add a Using directive : \"using Microsoft.VisualBasic;\" Voila! you have access to all of VB.NET's functionality, including…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Use VB.NET functionality from within C\# By Roy Osherove February 18, 2003 **Historical article** · Originally published February 18, 2003; technical details may be outdated. How: 1) Add a reference to Microsoft.VisualBasic Runtime frim the ".NET" references menu 2) Add a Using directive : "using Microsoft.VisualBasic;" Voila! you have access to all of VB.NET's functionality, including 'Interaction.Inputbox()' and so on. Being a VB programmer at heart, this is great news, although i suspect i will want to really get to know all of C# dialects for doing things before i use these shortcuts. however, it is nice to know that instead of creating a form that accepts user text as input and returns a dialogresult, i can just use good ol' "InputBox()" and save the trouble... Another nice part is, that since you the VB.NET runtime is already a part of the Core Framework, there is no overhead in referencing this library. you get it for free! --- title: "Good news from Sam Gentile" url: "https://osherove.com/blog/2003/2/16/good-news-from-sam-gentile.md" canonical: "https://osherove.com/blog/2003/2/16/good-news-from-sam-gentile.html" published: "2003-02-16T05:12:00" updated: "2003-02-16T05:12:00" tags: [] author: "Roy Osherove" description: "Good news! Heather's Home! [via Sam Gentile] I'm glad to hear it! *sigh of relief*." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Good news from Sam Gentile By Roy Osherove February 16, 2003 **Historical article** · Originally published February 16, 2003; technical details may be outdated. _[Good news! Heather's Home!](http://dotnetweblogs.com/sgentile/archive/02152003.aspx#2460)_ _\[via Sam Gentile\]_ I'm glad to hear it! \*sigh of relief\*. --- title: "Inside the Windows Deveopment Process" url: "https://osherove.com/blog/2003/2/15/inside-the-windows-deveopment-process.md" canonical: "https://osherove.com/blog/2003/2/15/inside-the-windows-deveopment-process.html" published: "2003-02-15T19:01:00" updated: "2003-02-15T19:01:00" tags: [] author: "Roy Osherove" description: "Inside the Windows Deveopment Process A look at how Microsoft develops and maintains the Windows operating system. Fascinating reading for developers! Mike Johnson, Thursday, February 13, 2003 [via Chris Sells ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Inside the Windows Deveopment Process By Roy Osherove February 15, 2003 **Historical article** · Originally published February 15, 2003; technical details may be outdated. ## [_Inside the Windows Deveopment Process_](http://www.winsupersite.com/reviews/winserver2k3_gold2.asp) > _A look at how Microsoft develops and maintains the Windows operating system. Fascinating reading for developers!_ _Mike Johnson, Thursday, February 13, 2003_  \[via [Chris Sells](http://www.sellsbrothers.com/)\] --- title: "Nice XProgramming retort" url: "https://osherove.com/blog/2003/2/15/nice-xprogramming-retort.md" canonical: "https://osherove.com/blog/2003/2/15/nice-xprogramming-retort.html" published: "2003-02-15T16:32:00" updated: "2003-02-15T16:32:00" tags: [] author: "Roy Osherove" description: "Reading this Blog entry from CrazyBob brought a mixed feeling. The entry is an answer for a previous entry by Chiara and talks about why XProgramming is not totally stupid. At first, i just read Chieara's quoted Entry,…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Nice XProgramming retort By Roy Osherove February 15, 2003 **Historical article** · Originally published February 15, 2003; technical details may be outdated. Reading [this Blog entry](http://crazybob.org/roller/page/crazybob/20030119) from [CrazyBob](http://crazybob.org/index.jsp) brought a mixed feeling. The entry is an answer for a previous entry by Chiara and talks about why XProgramming is **not** totally stupid. At first, i just read Chieara's quoted Entry, which made me quite upset and wanting to add a Blog response to [Chiara](http://crazybob.org/roller/page/) myself. however, after reading his reposnse to that entry, all i could think was "you read my mind". --- title: "Unbreakable Encryption Claims - revisited" url: "https://osherove.com/blog/2003/2/15/unbreakable-encryption-claims-revisited.md" canonical: "https://osherove.com/blog/2003/2/15/unbreakable-encryption-claims-revisited.html" published: "2003-02-15T16:02:00" updated: "2003-02-15T16:02:00" tags: [] author: "Roy Osherove" description: "Bruce Schneier used Meganet and VME as a leading example of snake oil in a Crypto-Gram article three years back: http://www.counterpane.com/crypto-gram-9902.html His comments include \"This makes no sense, even to an…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Unbreakable Encryption Claims - revisited By Roy Osherove February 15, 2003 **Historical article** · Originally published February 15, 2003; technical details may be outdated. _Bruce Schneier used Meganet and VME as a leading example of snake oil in a Crypto-Gram article three years back: [http://www.counterpane.com/crypto-gram-9902.html](http://www.counterpane.com/crypto-gram-9902.html) His comments include "This makes no sense, even to an expert ... takes the ridiculous a step further ... This is not a proof. It isn't even close." Of course the fact that [Meganet](http://www.meganet.com/) don't communicate their claims well doesn't mean they haven't come up with something good. It's just that there's little reason to feel much confidence._ \[Comment by **Ivan Towlson** to [this](http://dotnetweblogs.com/ROsehrove/Comments/2201.aspx) log entry\] interesting article, makes me much more skepical. ofcourse, this is 3 years back, so we can only assume that if this stands, that eother it is the same hype reinvemted, or it actually [works](http://www.meganet.com/technology/williams.htm)... --- title: "Implement Enterprise notification apps using MSFT's Reference Architecture" url: "https://osherove.com/blog/2003/2/13/implement-enterprise-notification-apps-using-msfts-reference.md" canonical: "https://osherove.com/blog/2003/2/13/implement-enterprise-notification-apps-using-msfts-reference.html" published: "2003-02-13T08:09:00" updated: "2003-02-13T08:09:00" tags: [] author: "Roy Osherove" description: "http://www.microsoft.com/downloads/details.aspx?familyid=7f544f57-20e2-4a05-a574-e3a675b5d15e The Reference Architecture code allows developers to implement notification services in an enterprise environment. The…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Implement Enterprise notification apps using MSFT's Reference Architecture By Roy Osherove February 13, 2003 **Historical article** · Originally published February 13, 2003; technical details may be outdated. [http://www.microsoft.com/downloads/details.aspx?familyid=7f544f57-20e2-4a05-a574-e3a675b5d15e](http://www.microsoft.com/downloads/details.aspx?familyid=7f544f57-20e2-4a05-a574-e3a675b5d15e) The Reference Architecture code allows developers to implement notification services in an enterprise environment. The documentation explains the design and implementation decisions that developers of the Reference Architecture made and also explains how to install the code --- title: "Military Duty Calls" url: "https://osherove.com/blog/2003/2/12/military-duty-calls.md" canonical: "https://osherove.com/blog/2003/2/12/military-duty-calls.html" published: "2003-02-12T13:48:00" updated: "2003-02-12T13:48:00" tags: [] author: "Roy Osherove" description: "I've been called. To the military. It's a call that a small part of israeli men after the age of 21 come to expect 2-3 times a year. I'll be gone for a month or something of the sort, starting the coming sunday. does…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Military Duty Calls By Roy Osherove February 12, 2003 **Historical article** · Originally published February 12, 2003; technical details may be outdated. I've been called. To the military. It's a call that a small part of israeli men after the age of 21 come to expect 2-3 times a year. I'll be gone for a month or something of the sort, starting the coming sunday. does this mean the war is coming? maybe. If israel is gathering is miltary reserve troops to protect it's skies, it maybe just a precaution, and it may not. Why did a isay a small part of israeli men over 21? The Answer is simple. There s a mandatory military service in israel . for men it's 3 year, and for women it's a year and 8 months. it starts at 18. Why a small part? well. ignoring those that can't actually join the service, there are plenty (and i mean plenty) of those who get out of it by claming they learn the torah.In israel there is a law called "Tal's Law" which allows the military to exempt from service those that are "Torah Studiers". It's actually a law. That cuts down the number of mandatory service doers by about half. From those that DO join the mandatory service, More then half of those that finish it, don;t go back to doing reserve service. (to make it clear, it is not optional, Reserve service is required by law if you did mandatory service. ) they get out of it in different excuses, but the sad fact is that currently - about 5% of men that should be serving in reserve, do not. Those that do, need to leave their families, their jobs and thier university studies and just go to about a month a year. this totally screws up the whole system. this is what's happening now. a lot of people will get the call to serve now, they won't have much choice, they'll go. --- title: "First Unbreakable encryption claimed" url: "https://osherove.com/blog/2003/2/11/first-unbreakable-encryption-claimed.md" canonical: "https://osherove.com/blog/2003/2/11/first-unbreakable-encryption-claimed.html" published: "2003-02-11T08:30:00" updated: "2003-02-11T08:30:00" tags: [] author: "Roy Osherove" description: "This article on SlashDot tells about an israeli company MegaNet that has devloped Unbreakable encryption using somthing calls VME (Virtual Mtrix Encryption) technology. here's the exceprt:…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # First Unbreakable encryption claimed By Roy Osherove February 11, 2003 **Historical article** · Originally published February 11, 2003; technical details may be outdated. [This article](http://slashdot.org/articles/03/02/11/0217201.shtml?tid=93&tid=172) on SlashDot tells about an israeli company [MegaNet](http://www.meganet.com/) that has devloped Unbreakable encryption using somthing calls VME (Virtual Mtrix Encryption) technology. here's the exceprt: _\-------------------------------------------_ [_![Encryption](https://osherove.com/img/ext/images.slashdot.org_topics_topicencryption.gif)_](http://slashdot.org/search.pl?topic=93)**_Posted by_ [_timothy_](http://www.monkey.org/~timothy/) _on Tuesday February 11, @04:12AM_** _**from the jackson-pollock-claims-prior-art dept.** Several readers have pointed to an Israeli company's_ [_claim of achieving unbreakable encryption_](http://www.israel21c.org/bin/en.jsp?enPage=BlankPage&enDisplay=view&enDispWhat=object&enDispWho=Articles%5El306&enZone=Technology&enVersion=0&)_. The linked article reports this claim uncritically. Do you think there's such a thing as unbreakable encryption? This_ [_isn't the first time_](http://slashdot.org/articles/01/02/20/136219.shtml?tid=93) _someone's made this claim,_ [_or second_](http://slashdot.org/articles/98/09/11/0837251.shtml?tid=93)_,_ [_or third_](http://slashdot.org/articles/02/03/28/1959249.shtml?tid=93) _..._ _\-------------------------------------------_ I wonder if that's even possible.. --- title: "Cool Bookmarks manager" url: "https://osherove.com/blog/2003/2/10/cool-bookmarks-manager.md" canonical: "https://osherove.com/blog/2003/2/10/cool-bookmarks-manager.html" published: "2003-02-10T15:45:00" updated: "2003-02-10T15:45:00" tags: [] author: "Roy Osherove" description: "Iv'e decided to let you know about the most valuable net tool i use - PowerMarks . It stores massive amounts of bookmars, but not in a hirarchical way, but in a list, allowing you to find one very fast by just typing…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool Bookmarks manager By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. Iv'e decided to let you know about the most valuable net tool i use - [PowerMarks](http://www.kaylon.com/power.html). It stores massive amounts of bookmars, but not in a hirarchical way, but in a list, allowing you to find one very fast by just typing letters. you can add keywords for them and let them have ratings. very nice, and easy to use. great for someone like me who works almos solely with the keyboard when possible. I have about 400 bookmarks, but it never takes me long then about 3 seconds to find the one i need. totally amazing. What's really the coolest feature is that you get to sign up for a free account and store the bookmarks on THEIR servers. then you can just connect from home with Powemarks, and synchronize with the bookmarks from the web.  how come noone thought of this before? i find a cool link, i bookmark it, and when i get home i press one button and get all the links i found at work. Slick. it's also a very simple concept. i guess i need to build me one of those and save the fare... does anyone else know cool NET tools? --- title: "Source Colorizer Web Service" url: "https://osherove.com/blog/2003/2/10/source-colorizer-web-service.md" canonical: "https://osherove.com/blog/2003/2/10/source-colorizer-web-service.html" published: "2003-02-10T15:21:00" updated: "2003-02-10T15:21:00" tags: [] author: "Roy Osherove" description: "Scott Watermasyskt released this free web service to colorize your sourcode. He also put a client side test application to show you how to use the web service if you're new to this. [via Daniel B. ] Cool!. Finallya web…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Source Colorizer Web Service By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. [_Scott Watermasyskt_](http://aspnetweblog.com/) _released this free web service to colorize your sourcode. He also put a client side test application to show you how to use the web service if you're new to this._ _\[via [Daniel B.](http://dotnetweblogs.com/Dbjornbakk)\]_ Cool!. Finallya web service that's usable.. --- title: "Ilan Ramon , The first israeli Astronaut, was barried today in israel." url: "https://osherove.com/blog/2003/2/10/ilan-ramon-the-first-israeli-astronaut-was-barried-today-in.md" canonical: "https://osherove.com/blog/2003/2/10/ilan-ramon-the-first-israeli-astronaut-was-barried-today-in.html" published: "2003-02-10T15:16:00" updated: "2003-02-10T15:16:00" tags: [] author: "Roy Osherove" description: "Ilan Ramon , The first israeli Astronaut, was barried today in israel. All israel held hands and hopes as Ilan Ramon flew into space. All Isarel Stood with tears in their eyes as the news came to them. That was a very…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Ilan Ramon , The first israeli Astronaut, was barried today in israel. By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. **Ilan Ramon** , The first israeli Astronaut, was barried today in israel. All israel held hands and hopes as Ilan Ramon flew into space. All Isarel Stood with tears in their eyes as the news came to them. That was a very sad day. I salute you, Ilan. You have brought Hope, and perhaps even aided in bringing people togather. The day it happened, All the Israeli TV was filled with interviews that were done with him prior to takeoff, and even one from a couple of years ago, when the STS107 was a go for the first time. he went on tv, and was charming and eloquent. He is (or was),i think, a mirror image of what people want themselves to be. There is now talk about the space flights continuing, with more israelis on board. Let it be. --- title: "Yes it looks very nice Ingo" url: "https://osherove.com/blog/2003/2/10/yes-it-looks-very-nice-ingo.md" canonical: "https://osherove.com/blog/2003/2/10/yes-it-looks-very-nice-ingo.html" published: "2003-02-10T14:40:00" updated: "2003-02-10T14:40:00" tags: [] author: "Roy Osherove" description: "It's the time of the year again. http://www.ingorammer.com has undergone it's first major design change. Looks ok ? [ Ingo Rammer ] Slick and simple. I like it." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Yes it looks very nice Ingo By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. _It's the time of the year again._ [_http://www.ingorammer.com_](http://www.ingorammer.com/) _has undergone it's first major design change._ _Looks ok__?_ \[[Ingo Rammer](http://www.ingorammer.com/)\] Slick and simple. I like it. --- title: "No plans for a Sourcesafe.Net tool in MS future" url: "https://osherove.com/blog/2003/2/10/no-plans-for-a-sourcesafenet-tool-in-ms-future.md" canonical: "https://osherove.com/blog/2003/2/10/no-plans-for-a-sourcesafenet-tool-in-ms-future.html" published: "2003-02-10T14:28:00" updated: "2003-02-10T14:28:00" tags: [] author: "Roy Osherove" description: "this is one thing i forgot to say in an earlier message . Appearently , accroding to the MSFT rep. that talked to us ,VSS will only be enhanced , but nothing more. there will not be a more robust version of it, or…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # No plans for a Sourcesafe.Net tool in MS future By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. this is one thing i forgot to say in an [earlier message](http://dotnetweblogs.com/ROsehrove/archive/02102003.aspx#2143). Appearently , accroding to the MSFT rep. that [talked](http://msdn.microsoft.com/vstudio/productinfo/roadmap.asp) to [us](http://www.renaissance.co.il/ivbug/),VSS will only be enhanced , but nothing more. there will not be a more robust version of it, or nothing like the more professionl Version Control systems like rational or PVCS. :( --- title: "I hope this name isn't taken for a weblog.." url: "https://osherove.com/blog/2003/2/10/i-hope-this-name-isnt-taken-for-a-weblog.md" canonical: "https://osherove.com/blog/2003/2/10/i-hope-this-name-isnt-taken-for-a-weblog.html" published: "2003-02-10T14:23:00" updated: "2003-02-10T14:23:00" tags: [] author: "Roy Osherove" description: "I looked it up in Google with \"weblog\", nothing came up. I think it summs up nicely what a weblog does. don't it.." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # I hope this name isn't taken for a weblog.. By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. I looked it up in Google with "weblog", nothing came up. I think it summs up nicely what a weblog does. don't it.. --- title: ".Net Remoting LifeSaver" url: "https://osherove.com/blog/2003/2/10/net-remoting-lifesaver.md" canonical: "https://osherove.com/blog/2003/2/10/net-remoting-lifesaver.html" published: "2003-02-10T14:06:00" updated: "2003-02-10T14:06:00" tags: [] author: "Roy Osherove" description: "Here's something i learned the hard way: When using configuration filnes in Remoting scenarios, be sure to put the following line in the remoting config file (if you use one) of the client application: <debug…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # .Net Remoting LifeSaver By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. Here's something i learned the hard way: When using configuration filnes in Remoting scenarios, be sure to put the following line in the remoting config file (if you use one) of the client application: _<debug LoadTypes="true">_ this tells the framework to throw an exeption if it is not able to load a type that was defined in the config file. Saved me a lot of type errors. othewise, you get totally different exceptions! --- title: "Microsoft's Dev Roadmap - Following the COM way?" url: "https://osherove.com/blog/2003/2/10/microsofts-dev-roadmap-following-the-com-way.md" canonical: "https://osherove.com/blog/2003/2/10/microsofts-dev-roadmap-following-the-com-way.html" published: "2003-02-10T12:26:00" updated: "2003-02-10T12:26:00" tags: [] author: "Roy Osherove" description: "So there i was at my VB User's Group Meeting. We had a lecture from a MSFT guy about MSFT's Dev Roadmap .It Appears Microsoft will attempt to Have the Next-Next Version of windows (aka LongHorn) be 70-80% .Net Framework…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft's Dev Roadmap - Following the COM way? By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. So there i was at my [VB User's Group](http://www.renaissance.co.il/ivbug/) Meeting. We had a lecture from a MSFT guy about [MSFT's Dev Roadmap](http://msdn.microsoft.com/vstudio/productinfo/roadmap.asp).It Appears Microsoft will attempt to Have the Next-Next Version of windows (aka LongHorn) be 70-80% .Net Framework dependent. that means that just above the kernel you will have  Framework standard interfaces which you can access from your code. Also Yukon SQL server in two versions will run and support these internal sytem types, meaning you could basically execute queries wrtten in C# that look for specific files on your system, or have storedprocedures return folder data types. Now THAT i would like to see. They showed us some early preview screenshots, but of course quickly added reservations saying that "all is still open, it might just be 60-50% integrated with .Net" and so on. i do belive they are going to attempt this dramatic change. everything does point to this fact. Also, i asked whether this would be like the projected "COM" revolution we have seen a few years back, where similar plans had been discussed (or maybe it was just rumors..?) to do the same thing with COM. the answer i got was that the speaker knows nothing about incorporating onto the kernel, but he did mention that a lot of the system interfaces do work in COM, and that somehow this is the realization of that plan(if there had ever been one). Well, If.NET integration will be integrated ito the OS just the was COM is today, that would be pretty darn disappointing. For eaxample, if i went out to create a File Manager (like [Total Commander](http://www.ghisler.com/)) with basic functionality, such as viewing files with their associated icons, or displaying associated system context menu of folder and such, and i would try to do all this in VB 6.0,just getting to this basic stuff would be in need of extensive use of API's. Hell, Even in C# i tried doing this and ended up looking at plenty of PInvokes(read: more API's!) articles and extern declarations. Hopefully, this will not be the case. What do you think? --- title: "SmallTalk.NET ?" url: "https://osherove.com/blog/2003/2/10/smalltalknet.md" canonical: "https://osherove.com/blog/2003/2/10/smalltalknet.html" published: "2003-02-10T11:18:00" updated: "2003-02-10T11:18:00" tags: [] author: "Roy Osherove" description: "The SmallScript Common Dynamic Language Runtime (CDLR) System is a rich multi-paradigm dynamic and scripting language architecture. It includes S# as its primary language, a superset/dialect of classic Smalltalk-98.…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # SmallTalk.NET ? By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. [_The SmallScript Common Dynamic Language Runtime_](http://www.smallscript.net/) _(CDLR) System is a rich multi-paradigm dynamic and scripting language architecture. It includes S# as its primary language, a superset/dialect of classic Smalltalk-98. Generally referred to as the "S#" language. (See_ [_Informal Language Comparison Chart_](http://www.smallscript.net/Language%20Comparison%20Chart.asp)_)._ _\[via [Sam Gentile](http://dotnetweblogs.com/sgentile/archive/02102003.aspx#2134)\]_ I never did get SmallTalk, but it's nice to know that laguages are added all the time. --- title: "Continued COM interop discussion" url: "https://osherove.com/blog/2003/2/10/continued-com-interop-discussion.md" canonical: "https://osherove.com/blog/2003/2/10/continued-com-interop-discussion.html" published: "2003-02-10T11:12:00" updated: "2003-02-10T11:12:00" tags: [] author: "Roy Osherove" description: "In reply to my rants about COM Interop , Sam Gentile writes: No, it shouldn't but it is . Welcome to the sometimes nightmare known as COM Interop. I have written extensively on this area starting about a year ago…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Continued COM interop discussion By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. **In reply to my [rants about COM Interop](http://dotnetweblogs.com/ROsehrove/archive/02102003.aspx#2120), [Sam Gentile](http://dotnetweblogs.com/sgentile) writes:** _**No, it shouldn't but it is**. Welcome to the sometimes nightmare known as_ [_COM Interop._](http://dotnetweblogs.com/sgentile/Story/362.aspx) _I have written extensively on this area starting about a year ago thinking the whole darn_ [_thing was flawed_](http://dotnetweblogs.com/sgentile/Story/1987.aspx) _evolving to a_ [_state of acceptance_](http://dotnetweblogs.com/sgentile/Story/294.aspx) _that its the best that could be done. Check them out._ I just did. it's nice to get the feeling that you are not the only one who feels a bit helpless at the sight of these COM interop flaws and misleadings. I do wonder whether there are any news from MSFT about revising/changin this whole approach in the upcoming versions... surly this can't go on. I think a lot of developers and shops that bought into this whole interop being "easy" will try, burn and maybe even go back to their old VB/Other COM apps, since rwriting their whole structure would just be too much to handle in one big swoop. --- title: "source code of the Internet Explorer Web Controls released by MSFT" url: "https://osherove.com/blog/2003/2/10/source-code-of-the-internet-explorer-web-controls-released-b.md" canonical: "https://osherove.com/blog/2003/2/10/source-code-of-the-internet-explorer-web-controls-released-b.html" published: "2003-02-10T10:57:00" updated: "2003-02-10T10:57:00" tags: [] author: "Roy Osherove" description: "Microsoft released the complete source code of the Internet Explorer Web Controls (TreeView, MultiPage, ToolBar, and TabStrip ASP.NET server controls). This is great! [via Fabrice's Weblog ]" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # source code of the Internet Explorer Web Controls released by MSFT By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. _Microsoft released the complete_ [_source code_](http://www.asp.net/IEWebControls/Download.aspx?tabindex=0&tabid=1) _of the_ [_Internet Explorer Web Controls_](http://msdn.microsoft.com/workshop/webcontrols/webcontrols_entry.asp) _(TreeView, MultiPage, ToolBar, and TabStrip ASP.NET server controls). This is great!_ _\[via [Fabrice's Weblog](http://dotnetweblogs.com/FMARGUERIE/archive/02102003.aspx#2129)\]_ --- title: "Microsoft gives coders a bug-catcher" url: "https://osherove.com/blog/2003/2/10/microsoft-gives-coders-a-bug-catcher.md" canonical: "https://osherove.com/blog/2003/2/10/microsoft-gives-coders-a-bug-catcher.html" published: "2003-02-10T10:40:00" updated: "2003-02-10T10:40:00" tags: [] author: "Roy Osherove" description: "Microsoft gives coders a bug-catcher The software giant plans to announce on Monday that a plug-in created by security firm Sanctum, scheduled for release in March, will be the first to easily integrate with Microsoft's…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Microsoft gives coders a bug-catcher By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. [Microsoft gives coders a bug-catcher](http://www.dotnetwire.com/redirect.asp?newsid=4229) The software giant plans to announce on Monday that a plug-in created by security firm Sanctum, scheduled for release in March, will be the first to easily integrate with Microsoft's development platform Visual Studio .NET. The tool, AppScan Developer Edition 1.5, can be run on Web applications in real time to catch common programming flaws. Article. Feb 10, 2003. \[via [.NetWire](http://www.dotnetwire.com/)\] I Almost worked in sanctum for a while. it's a good company. and this should be a cool addin.. --- title: "Cool: Google2Rss" url: "https://osherove.com/blog/2003/2/10/cool-google2rss.md" canonical: "https://osherove.com/blog/2003/2/10/cool-google2rss.html" published: "2003-02-10T10:34:00" updated: "2003-02-10T10:34:00" tags: [] author: "Roy Osherove" description: "Peter Drayton managed to post the following at 5:21 AM: Google2RSS is a command-line tool that runs a query using the Google Web API and spits out an RSS 0.91 feed containing the top 10 hits . [ Sam Gentile's Weblog ]…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Cool: Google2Rss By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. [](http://radio.weblogs.com/0117167/2003/02/08.html#a107)  > [Peter Drayton](http://www.razorsoft.net/weblog) managed to post the following at 5:21 AM: _[Google2RSS](http://www.razorsoft.net/weblog/stories/2002/04/13/google2rss.html)_ _is a command-line tool that runs a query using the_ [_Google Web API_](http://www.google.com/apis/) _and spits out an_ [_RSS 0.91_](http://backend.userland.com/stories/rss091) _feed containing the top 10 hits_. > > > \[[Sam Gentile's Weblog](http://radio.weblogs.com/0105852/)\] \[via [Jamie Cansdale's Radio Weblog](http://radio.weblogs.com/0110440/)\] \[via [Early&Adopter](http://radio.weblogs.com/0117167/2003/02/08.html#a107)\] A lot of possibilites in here methinks. --- title: "Yey - i think" url: "https://osherove.com/blog/2003/2/10/yey-i-think.md" canonical: "https://osherove.com/blog/2003/2/10/yey-i-think.html" published: "2003-02-10T10:23:00" updated: "2003-02-10T10:23:00" tags: [] author: "Roy Osherove" description: "Which OS are You? Is this a good thing? thanks to CraigBlog" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Yey - i think By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. [![Which OS are You?](https://osherove.com/img/ext/www.bbspot.com_Images_News_Features_2003_01_os_quiz_xp.jpg) Which OS are You?](http://bbspot.com/News/2003/01/os_quiz.php) Is this a good thing? thanks to [CraigBlog](http://staff.develop.com/candera/weblog/) --- title: "RSS feeds are not for newbies, but should be" url: "https://osherove.com/blog/2003/2/10/rss-feeds-are-not-for-newbies-but-should-be.md" canonical: "https://osherove.com/blog/2003/2/10/rss-feeds-are-not-for-newbies-but-should-be.html" published: "2003-02-10T08:13:00" updated: "2003-02-10T08:13:00" tags: [] author: "Roy Osherove" description: "I first discovered this whole RSS thing (and blogging as well),just about a month ago. i read weblogs and kept seeing \"syndicate\" and other links like that. i couldnt understand what that was for. i had to really look…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # RSS feeds are not for newbies, but should be By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. I first discovered this whole RSS thing (and blogging as well),just about a month ago. i read weblogs and kept seeing "syndicate" and other links like that. i couldnt understand what that was for. i had to really look hard to find out how to read RSS feeds. still much is not very clear to me, but i learn fast. but the main point is that this is NOT for the average web surfer. it takes too much tech knowladge and knowhow to deal with reading RSS feeds. it's too complex, and you need to know what you are doing.. perhaps each "syndicate me" button should have a link near it to "learn all about rss feeds" or something like that.. --- title: "Reading habtis - total agreement" url: "https://osherove.com/blog/2003/2/10/reading-habtis-total-agreement.md" canonical: "https://osherove.com/blog/2003/2/10/reading-habtis-total-agreement.html" published: "2003-02-10T08:10:00" updated: "2003-02-10T08:10:00" tags: [] author: "Roy Osherove" description: "Ingo Rammer points out that his reading habits have changed and now reads mainly thourhg RSS feeds. Although i am quite new to blogs and RSS feeds, i can certainly say that my habtis are starting to change as well. I…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Reading habtis - total agreement By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. [Ingo Rammer points out](http://www.ingorammer.com/Weblog/default.aspx?day=2003-02-09#20030209163900) that his reading habits have changed and now reads mainly thourhg RSS feeds. Although i am quite new to blogs and RSS feeds, i can certainly say that my habtis are starting to change as well. I mainly use NewGator to read feeds but mostly for weblogs,nothing else. I still think that reading a site through an RSS feed is the lesser experience and you lose a lot of visual satifaction. Yes, you get the info directly, but the web for me is not just info. sometimes i'll see a nice link on a page or something really cool like flash animation,stuff which an rss feed usually cannot show. And of course, What good is the web if you can't anger yourself with the occasional popup window or a small redirect... ;) --- title: "when you have a cat" url: "https://osherove.com/blog/2003/2/10/when-you-have-a-cat.md" canonical: "https://osherove.com/blog/2003/2/10/when-you-have-a-cat.html" published: "2003-02-10T07:56:00" updated: "2003-02-10T07:56:00" tags: [] author: "Roy Osherove" description: "Did a cat ever sit on your keyboavscdascccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc :)" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # when you have a cat By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. Did a **cat** ever sit on your keyboavscdascccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc :) --- title: "Escaping into code" url: "https://osherove.com/blog/2003/2/10/escaping-into-code.md" canonical: "https://osherove.com/blog/2003/2/10/escaping-into-code.html" published: "2003-02-10T07:55:00" updated: "2003-02-10T07:55:00" tags: [] author: "Roy Osherove" description: "Sometimes i wish i could just crawl up and snuggle in a dark, warm little place wth nothing but a nice keyboard, a big LCD screen ,a mother of a computer ,a fat T1 line and just learn and program stuff. oh yeah, and…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Escaping into code By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. Sometimes i wish i could just crawl up and snuggle in a dark, warm little place wth nothing but a nice keyboard, a big LCD screen ,a mother of a computer ,a fat T1 line and just learn and program stuff. oh yeah, and blog too. The news in our country is getting so weird lately. Seems like everywhere you turn there is a disaster, or one that is just waiting to happen. I'm sure i'm not the only geek who feels this way, yet i think each one feels this completely in solitude. when israel lost **Ilan Ramon** - the first israeli in space , it was one of the worst things that could have happened. he gave us hope. hope to get out of this slimey mess we sit in, to live a normal life, to be able to live in a nice house, with a yard, a dog, and a nice car, and that all those could actually be **affordable**. The politics here are getting worse by the day, and people here get killing just beacause they sit in coffeeshops. Sometimes i wish i was in the USA - in a nice programming gig - not worrying my pretty little head about stuff like death and military service. yep. sometimes crawling up will do just fine for me, and probably for many others as well. --- title: "Killer IDE macro" url: "https://osherove.com/blog/2003/2/10/killer-ide-macro.md" canonical: "https://osherove.com/blog/2003/2/10/killer-ide-macro.html" published: "2003-02-10T07:55:00" updated: "2003-02-10T07:55:00" tags: [".Net Original", "Tips & Tricks"] author: "Roy Osherove" description: "I found there is only one(for now) macro that i use in the VS .NET IDE - the one that puts two curly braces in the following lines and puts the cursor in between them. this HAS to be a killer macro. i assigned it the…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Killer IDE macro By Roy Osherove February 10, 2003 In [.Net Original](https://osherove.com/blog/category/net-original), [Tips & Tricks](https://osherove.com/blog/category/tips-tricks) **Historical article** · Originally published February 10, 2003; technical details may be outdated. I found there is only one(for now) macro that i use in the VS .NET IDE - the one that puts two curly braces in the following lines and puts the cursor in between them. this HAS to be a killer macro. i assigned it the "CTRL+SHIFT+\[" keys, and my productyvity went up 10 times... here the simpler the pie code: \----------------------------------------- Sub NewBraces() DTE.ActiveDocument.Selection.NewLine() DTE.ActiveDocument.Selection.Text = "{" DTE.ActiveDocument.Selection.NewLine() DTE.ActiveDocument.Selection.Text = "}" DTE.ActiveDocument.Selection.LineUp() DTE.ActiveDocument.Selection.NewLine() DTE.ActiveDocument.Save() End Sub \----------------------------------------- is it possible that there are people who have NOT created this macro on their own? I think the next one will be one that adds the lines: catch(Exception e) { } to the code. ## More in .Net Original [All posts in .Net Original](https://osherove.com/blog/category/net-original) - Feb 22, 2003 ### [App.Config Magic](https://osherove.com/blog/2003/2/22/appconfig-magic.html) - Feb 22, 2003 ### [Cool IDE Shortcut](https://osherove.com/blog/2003/2/22/cool-ide-shortcut.html) --- title: "Howto : Not lose your job" url: "https://osherove.com/blog/2003/2/10/howto-not-lose-your-job.md" canonical: "https://osherove.com/blog/2003/2/10/howto-not-lose-your-job.html" published: "2003-02-10T07:53:00" updated: "2003-02-10T07:53:00" tags: [] author: "Roy Osherove" description: "Chris Sells points to a nice trick on how to not lose your job" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Howto : Not lose your job By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. [Chris Sells](http://www.sellsbrothers.com/) points to a nice trick on how to [not lose your job](http://www.sellsbrothers.com/spout/#savingYourCareer) --- title: "The occasional Interop Nightmare" url: "https://osherove.com/blog/2003/2/10/the-occasional-interop-nightmare.md" canonical: "https://osherove.com/blog/2003/2/10/the-occasional-interop-nightmare.html" published: "2003-02-10T07:52:00" updated: "2003-02-10T07:52:00" tags: [] author: "Roy Osherove" description: "You would think that After 4-5 years of programming experience, after having learned many new tircvks and technonlogies, i would be less surprised by the bwilderment that overcomes me as i come to solve this interop…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # The occasional Interop Nightmare By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. You would think that After 4-5 years of programming experience, after having learned many new tircvks and technonlogies, i would be less surprised by the bwilderment that overcomes me as i come to solve this interop nightmare i seem to be facing. It started out quite nicely.  [My company](http://www.polyinformation.com/) employs a trace utility to debug our applications. this utility is actually a COM wrapper to a C++ tracing server, to which our C++ apps send traces to while running. A VB Trace client uses this COM wrapper to display the traces in an organized fasion. really nothing fancy, but works. The only trouble we have ever had was using connecting to the COM wrapper running on a remote computer (read: DCOM). our system security policies somehow prevent the DCOM from accessing this wrapper (playing around with dcomConfig did not work of course...). "Well." i thought to myself foolishly, "i WAS trying to learn this whole "Remoting" thing, so this would be a great way to learn!". the target was pretty simple - write a delegation layer using .NET remoting, which passes the Data reciever from the COM wrapper trace events, to a .net remoting enabled client on the client machine, which passes this data on as a COM wrapper in itself, thus allowing the VB Application to use it via the "references" dialog and so on... so ther i went, sifting through the documentation, and event purchased Ingo Rammer's new [Remoting Book](http://www.ingorammer.com/Book/AdvancedDotNetRemoting.html). Well, turns out that the old VB aplication that needed to use COM wrapped .NET componenets needed to have those .NEt componenets Strongly named and in the GAC. **OK** i can live with that. BUT - since my .NEt compoenent also referenced an older COM server (not managed), it too needed to be strongly named, and it's wrapper assembly needed to be in the GAC (or something of the sort - i passed out halfway figuring this thing..) **It should not be this difficult**. really. COM interop should be the easiest thing, and i dont mean just referencing old com - that IS easy, but take the more elaborate step and if i make a compoenent strongly named - automatically make its references strongly named as well ! i shouldnt have to do this manually. Since i'm still not using Everett - i dont know if this was implemented in that version - but i get the feeling it did not.... too bad. COM interop is going to be the most important thing in the next couple of years - people wont just reqrite zillions of lines of code. Amen. --- title: "An honor" url: "https://osherove.com/blog/2003/2/10/an-honor.md" canonical: "https://osherove.com/blog/2003/2/10/an-honor.html" published: "2003-02-10T07:40:00" updated: "2003-02-10T07:40:00" tags: [] author: "Roy Osherove" description: "Well. what can i say. it's an honor to blog among people i respect and read their blogs so much. A little about me : I'm Married to my beautiul wife named Tal. we rent a house togather a little nrth of Tel Aviv in a…" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # An honor By Roy Osherove February 10, 2003 **Historical article** · Originally published February 10, 2003; technical details may be outdated. Well. what can i say. it's an honor to blog among people i respect and read their blogs so much. **A little about me**: I'm Married to my beautiul wife named Tal. we rent a house togather a little nrth of Tel Aviv in a place called "Beney Zion". we have been married for 2 years now.She And I are the same age - 27. 1) **I program in C#:** my main areas currentlyare Remoting an Winforms. 2) **I'm from israel** - this should make things a little more interesting for people since i will probaby be writing in accordance to things that happen in my country. i am not disconected from current events and the israeli-palestinian conflict (although i sometimes wish i were..) 3)**I'm intereseted in a lot of other stuff**. namely - playing classical guitar - and laying around in front of the TV watching garbage. sometimes i just take apart my computer and reformat the life out of it, just ro reassemble it and not sleep for 2 nights. My wife LOVES that.. :) o write about my expriences in >NET here and also other interesting stuff and links.. See ya. Roy --- title: "TDD Kata 1 - String Calculator" url: "https://osherove.com/tdd-kata-1.md" canonical: "https://osherove.com/tdd-kata-1" tags: [] author: "Roy Osherove" description: "String Calculator The following is a TDD Kata- an exercise in coding, refactoring and test-first, that you should apply daily for at least 15 minutes . You" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Kata 1 - String Calculator TDD Kata ## String Calculator The following is a TDD Kata- an exercise in coding, refactoring and test-first, that you should apply daily for at least 15 minutes . [You can download a more readable version of the Kata here.](https://osherove.com/s/String-Calculator-Kata-v1.pdf) [Download as PDF](https://osherove.com/s/String-Calculator-Kata-v1.pdf) --- ## Before you start:  - Try not to read ahead. - Do one task at a time. The trick is to learn to work incrementally. - Make sure you only test for **correct inputs**. there is no need to test for invalid inputs for this kata **String Calculator** 1. ``` Create a simple String calculator with a method signature: ``` 2. ``` Allow the Add method to handle an unknown amount of numbers ``` 3. ``` Allow the Add method to handle new lines between numbers (instead of commas). ``` 1. ``` the following input is ok: “1\n2,3” (will equal 6) ``` 2. ``` the following input is NOT ok: “1,\n” (not need to prove it - just clarifying) ``` 4. ``` Support different delimiters ``` 1. ``` to change a delimiter, the beginning of the string will contain a separate line that looks like this: “//[delimiter]\n[numbers…]” for example “//;\n1;2” should return three where the default delimiter is ‘;’ . ``` 2. ``` the first line is optional. all existing scenarios should still be supported ``` 5. ``` Calling Add with a negative number will throw an exception “negatives not allowed” - and the negative that was passed. ``` 6. ``` Numbers bigger than 1000 should be ignored, so adding 2 + 1001 = 2 ``` 7. ``` Delimiters can be of any length with the following format: “//[delimiter]\n” for example: “//[***]\n1***2***3” should return 6 ``` 8. ``` Allow multiple delimiters like this: “//[delim1][delim2]\n” for example “//[*][%]\n1*2%3” should return 6. ``` 9. ``` make sure you can also handle multiple delimiters with length longer than one char ``` ``` ————————————————————————————————  ``` ### Here are several run throughs of the kata by different people in various languages: **Online Training by Roy Osherove** .NET: [The Art of Unit Testing and TDD in .NET Online](http://tddcourse.osherove.com/) .NET: [Legacy Code Hero (Advanced Refactoring Patterns)](http://legacyhero.osherove.com/) Java: [Unit Testing and TDD in Java Online](http://javatdd.osherove.com/) Ruby: [BDD and TDD in Ruby Online](http://rubytdd.osherove.com/) --- [Submit your own implementation](https://airtable.com/shrDsK4jC9p0Ikqlx) [Embedded content](https://airtable.com/embed/shrqq5umKcXaJDmlm?backgroundColor=redLight&viewControls=on) --- title: "Training" url: "https://osherove.com/trainingoptions.md" canonical: "https://osherove.com/trainingoptions" tags: [] author: "Roy Osherove" description: "Public & Private Training: (Due to #COVID19 - all training can be scheduled to be done ONLINE with Zoom webinars) Contact for course info or scheduling" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Training Training # Training by Roy Osherove ![](https://osherove.com/img/sq/1000w-royTeaching1.JPG) # Public & Private Training: **(Due to #COVID19 - all training can be scheduled to be done ONLINE with Zoom webinars)** [Contact for course info or scheduling](https://osherove.com/contact) [- 0 to 60 TDD in Solidity and Forge (2 day)](https://go.osherove.com/solidity-tdd-60) --- [- Elastic Leadership](https://go.osherove.com/elastic2) --- [- Pipeline Driven Organizations & Continuous Delivery Patterns (1 day)](https://go.osherove.com/cd1)[- Pipeline Driven Organizations & Continuous Delivery Patterns (2 days) ](https://go.osherove.com/cd2) --- Legacy Code:[- Legacy Code Refactoring & Unit Testing in Java (2 days)](https://go.osherove.com/javalegacy2)[- Legacy Code Refactoring & Unit Testing in C# (2 days)](https://go.osherove.com/netlegacy2) --- JavaScript:[- TDD & Art of Unit Testing in Javascript (3 days)](https://go.osherove.com/jstdd3)[- TDD & Art of Unit Testing in Javascript (2 days)](https://go.osherove.com/jstdd2) --- C#:[- Zero to 60 Unit Testing in C# (1 day)](https://go.osherove.com/tddnet1)[- TDD & Art of Unit Testing in C# (3 days)](https://go.osherove.com/tddnet3)[- TDD & Art of Unit Testing Masterclass in C# (5 days)](https://go.osherove.com/tddnet5) --- Kotlin:[- TDD & Art of Unit Testing in Kotlin (3 days)](https://go.osherove.com/kotlintdd3)[- TDD & Art of Unit Testing in Kotlin (2 days)](https://go.osherove.com/kotlintdd2) --- Java:[- TDD & Art of Unit Testing in Java (3 days)](https://go.osherove.com/javatdd3)[- TDD & Art of Unit Testing in Java (2 days)](https://go.osherove.com/javatdd2) [Embedded content](https://airtable.com/embed/shrJSN7PxczQptmc8?backgroundColor=red) # Online Training - .NET: [The Art of Unit Testing and TDD in .NET Online](http://tddcourse.osherove.com/) - .NET: [Legacy Code Hero (Advanced Refactoring Patterns)](http://legacyhero.osherove.com/) - Java: [Unit Testing and TDD in Java Online](http://javatdd.osherove.com/) - Ruby: [BDD and TDD in Ruby Online](http://rubytdd.osherove.com/) ![](https://osherove.com/img/sq/1000w-royTeaching4.JPG) --- title: "Tools" url: "https://osherove.com/tools.md" canonical: "https://osherove.com/tools" tags: [] author: "Roy Osherove" description: "Here is a non comprehensive list of tools I made and how to download them: NOTE: you can get the source code and contribute to most of these over here Regu" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tools Free tools ### Here is a non comprehensive list of tools I made and how to download them: > NOTE: you can [get the source code and contribute to most of these over here](https://github.com/royosherove) **Regular Expressions:** - Regulator:[Download](http://downloads.sourceforge.net/regulator/Regulator20Bin.zip?modtime=1189740236&big_mirror=0), [more info](http://www.webresourcesdepot.com/learn-test-regular-expressions-with-the-regulator/) ([source](https://github.com/royosherove/dotnet-regex-tools)) - Regulazy:[Download](https://osherove.com/s/files/Regulazy.103.zip), [more info](https://osherove.com/blog/2006/7/9/introducing-regulazy-point-click-regular-expression.html) ([source](https://github.com/royosherove/dotnet-regex-tools))(if you liked regulator you’ll love this) - Regex Visualizers: [VS 2008](https://osherove.com/s/files/TeamAgile.RegexKit10.zip) ([more info](http://visualstudiohacks.com/addins/coding/regular-expression-visualizers/)) ([source](https://github.com/royosherove/dotnet-regex-tools)) **Testing:** - XtUnit:[Download](https://osherove.com/s/files/TeamAgile.XtUnit.Bin.zip), [more info](https://osherove.com/blog/2004/10/5/introducing-xtunit-an-unofficial-unit-testing-extensibility.html) ([source](https://github.com/royosherove/dotnet-test-extensions)) - FxCopUnit: ([binaries](https://osherove.com/s/files/TeamAgile.FxCopUnit.Bin.zip)) ([more info](https://osherove.com/blog/2007/2/24/introducing-fxcopunit-a-framework-for-integrated-fxcop-rule.html)) ([source](https://github.com/royosherove/dotnet-test-extensions)) - Depender:[Download,](https://osherove.com/s/files/Depender.zip) [more info](https://osherove.com/blog/2008/7/5/introducing-depender-testability-problem-finder.html) - Thread Tester:[Download](https://osherove.com/s/files/ThreadTester.src.zip), [more info](https://osherove.com/blog/2007/6/22/multi-threaded-unit-tests-with-osherovethreadtester.html) ([source](https://github.com/royosherove/dotnet-test-extensions)) **Other:** - Amazoner:[Download](https://osherove.com/s/files/Amazoner.zip), [more info](https://osherove.com/blog/2005/10/19/introducing-amazoner-create-amazon-associate-links-with-ease.html) - Audibler: [more info](http://weblogs.asp.net/rosherove/archive/2008/07/06/introducing-audibler-download-your-audible-audio-books-drm-free.aspx) and \\ **(note - does not work anymore!)** - Perf+: [info](https://osherove.com/blog/2006/10/14/introducing-perf-a-better-perfmon.html) ([source](https://github.com/royosherove/dotnet-perfplus)) NOTE: **does not work, that’s why there’s not download** - KeyJedi 32 bit:[Download KeyJedi, more info](https://osherove.com/s/files/keyjedi.zip) (and [source code](https://github.com/royosherove/dotnet-keyjedi)) - KeyJedi 64 bit - [can be found here](http://blogs.ugidotnet.org/luKa/archive/2010/09/21/keyboard-jedi-on-windows7-64-bit.aspx) - Thread Safe Winform UI:[Download,](https://osherove.com/s/files/Osherove.ThreadSafeUI.src.zip) [more info](https://osherove.com/blog/2007/5/19/easier-winform-ui-thread-safe-methods-with-dynamicproxy2-and.html) - Version Resistant [Binary Formatter](https://osherove.com/s/files/VersionSupportingBinaryFormatter.zip) - Source Server support for team system: [Download](https://osherove.com/s/files/SourceServerForTeamSystem.zip), [more info](https://osherove.com/blog/2006/7/17/solution-using-source-server-with-team-system-source-control.html) - MethodInfo and Dynamic Method Visualizers [for vs 2005 and 2008](https://osherove.com/s/files/DmVis.zip) ([source](https://github.com/royosherove/dotnet-method-visualizers)) ## Online Training - .NET: [The Art of Unit Testing and TDD in .NET Online](http://tddcourse.osherove.com/) - .NET: [Legacy Code Hero (Advanced Refactoring Patterns)](http://legacyhero.osherove.com/) - Java: [Unit Testing and TDD in Java Online](http://javatdd.osherove.com/) - Ruby: [BDD and TDD in Ruby Online](http://rubytdd.osherove.com/) --- title: "Enterprise DevOps Training" url: "https://osherove.com/enterprise-devops-training.md" canonical: "https://osherove.com/enterprise-devops-training" tags: [] author: "Roy Osherove" description: "You can find this course plus the full list of training options by Roy at this link. (Previously called “Enterprise DevOps”) DevOps is the implementation o" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Enterprise DevOps Training Training # Training on Patterns and Anti patterns for Pipeline Driven Organizations You can find this course plus [the full list of training options by Roy at this link.](https://osherove.com/trainingoptions) ``` (Previously called “Enterprise DevOps”)  ``` DevOps is the implementation of continuous delivery and agile concepts across the organization, focusing on pipelines as the main building blocks for delivery value internally and to the customer. But getting to that state is complicated because it requires several facets of work:  People, process and tools. In large organizations we have the added complexity of: - Multiple dependencies and sub systems - Multiple teams, groups, business units with competing interests - Varying degrees of agility, culture, tools, technologies and processes - Security, compliance and policy gates In this workshop we will discuss main patterns and anti patterns for adopting and implementing DevOps pipelines throughout the organization, that scale. ## Agenda  The workshop consists of two days: ## Day  1: DevOps  & Continuous Delivery Values, Metrics and  concepts:  - Defining DevOps and Enterprise DevOps Pipelines - Continuous Integration vs continuous Delivery - Enterprise vs small scale DevOps challenges - Software defined everything - Value Streaming - Intro & exercises - bottlenecks - Anti patterns & root causes ## Day 2:  Common patterns & solutions   - Value Stream Bottleneck solutions - Infrastructure as code - Ephemeral Environments - Pipelines - Intro to pipeline design - We will start to design a pipeline for a value stream - Parent pipelines and child pipelines - Adoption - Proofs of value & Templating - Adoption anti patterns - Adoption success patterns - Adoption plan design ### You can also find online Training by Roy Osherove ### [The Art of Unit Testing and TDD in .NET Online](http://tddcourse.osherove.com/)[Legacy Code Hero in .NET](http://legacyhero.osherove.com/) ![](https://osherove.com/img/sq/1000w-tddcourse.osherove.jpg) ### [Unit Testing and TDD in Java Online](http://javatdd.osherove.com/) ![](https://osherove.com/img/sq/1000w-javatdd.osherove.jpg) ### [BDD and TDD in Ruby Online](http://rubytdd.osherove.com/) ![](https://osherove.com/img/sq/1000w-rubytdd.osherove.png) --- title: "TDD Kata 2 - Interactions" url: "https://osherove.com/tdd-kata-2.md" canonical: "https://osherove.com/tdd-kata-2" tags: [] author: "Roy Osherove" description: "Videos of people doing the kata The kata in C++ and Igloo The kata in C# and Moq Before you start If you have an online video of you performing this kata o" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Kata 2 - Interactions TDD Kata ### Videos of people doing the kata - [The kata in C++ and Igloo](https://vimeo.com/26177491) - [The kata in C# and Moq](http://rickardnilsson.net/post/2011/07/19/tdd-kata-2.aspx) ### Before you start > If you have an online video of you performing this kata or parts of it, [please ping me](https://osherove.com/request-more-info/) and I’ll link to it here so other people can learn from you. This kata is based on the previous [String Calculator Kata](https://osherove.com/tdd-kata-1/). It is meant to be a continuation of the teaching process about unit testing and TDD. In this part of the teaching process, the kata forces you to think about interacting with the user, and subsequently to perform interation testing using mocks, and possible some stubs ([what’s the difference?](https://osherove.com/blog/2007/9/16/mocks-and-stubs-the-difference-is-in-the-flow-of-information.html)) ### It’s not going to be a piece of cake Becuase this kata requires interaction testing, many students find this kata much harder to accomplish than the first string calculator kata. That’s ok. Getting interaction testing takes longer. Don’t worry if you find yourself struggling with this for a day or even two or three. even in class, with me there, students can take a couple of hours and sometimes up to five hours to accomplish the steps in the kata in this page, with me coaching them. The biggest problem that people face is that they get so mired in the details of how to fake this and that,they end up faking too much, and not really testing anything. Sometimes students will lose track of what it is they are trying to test in the first place. now, more than ever, [good test names can save you](https://osherove.com/blog/2005/4/3/naming-standards-for-unit-tests.html). by writing down in the test name the three main parts of the test (what’s being tested, under what conditions, and what should the expected behavior be under those condistions). > When you are lost, the test name becomes your map and guide, to make sure your test follows what you wrote down in the test name, in each of its parts. The end behavior is what the mock should be asserting. the conditions are the setup code. the “what” is the “act” part of the test. that’s the thing you invoke. people get those mixed up a lot when getting through this, be careful! I would recommend NOT to write any code in the test method body until you get the name good enough to explain as an english sentence. this can even take 30 minutes at first, and that’s perfectly OK. it’s part of you getting to grips with the actual problem and how to solve it. ### How to work with this Kata Add the following features to String Calculator (either in the same class, or using any other structure or design you’d like). Make sure to go through them _one at a time_ and try not to look ahead. Imagine this is a real project where each feature is requested the day _after_ you’ve finished implementing the feature before it. ## **The Kata** 1. Add Logging Abilities to your new String Calculator (to an ILogger.Write()) interface (you will need a mock). Every time you call Add(), the sum result will be logged to the logger. 2. When calling Add() and the logger throws an exception, the string calculator should notify an IWebservice of some kind that logging has failed with the message from the logger’s exception (you will need a mock and a stub). ## A More Difficult Variation of the Kata: 1. Everytime you call **Add(string)** it also _outputs_ the number result of the calculation in a new line to the terminal or console. (remember to try and do this _test first!)_ 1. Create a program (test first)that uses string calculator, which the user can invoke through the terminal/console by calling “**scalc ‘1,2,3’**” and will output the following line before exiting: _**“The result is 6”**_ 2. Instead of exiting after the first result, the program will ask the user for **“another input please**” and print the result of the new user input out as well, until the user gives no input and just preses enter. in that case it will exit. ### Hints: _- _how can you check if something was output to the console? in ruby you can just override the ‘puts’ method or use one of the isolation frameworks to fake it and check that it was called. in .NET, the Console class has a static method called “**SetOut**” that takes a text writer. combine that with a StringBuilder, and you have a built in way to create a mock that can check what was sent to the console. another option is to abstract the output medium completly into its own class or interface such as IOutput, that can be used to ‘mediate’ between the real console and the inputs and outputs.__   _-  _for test driving a console application, if you’re using .NET, you can test-first a public static Main(params string args\[\]) function which is the root of the console application. no need to create a new process in your tests__  _- for number 3, you will need to devise a way to “wait” for user input without really waiting for a real user. your test will need to give two seperate inputs to the program, and it shoudl run fast, and not wait for any manual interaciton from you. Think about how to do that._ _- Can’t think of a way? What if you were to extract a special method called GetNextUserInput() that returns the string the user has provided? then you can overide that method in your tests (using [extract and override](http://www.opensourcetutorials.com/tutorials/Server-Side-Coding/Java/java-unit-testing-with-mock-objects/page3.html) if you need to) and return “fake” user inputs to test the system._ --- title: "TDD Kata 3 - Refactoring" url: "https://osherove.com/tdd-kata-3.md" canonical: "https://osherove.com/tdd-kata-3" tags: [] author: "Roy Osherove" description: "Create a Password verifications class or function for the purposes of password verification. Verification will fail if any one of the rules mentioned does" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Kata 3 - Refactoring TDD Kata # TDD Kata 3 Create a Password verifications class or function for the purposes of password verification. Verification will fail if any one of the rules mentioned does not pass. 1. Implement the following rules: 1. \- password should be larger than 8 chars 2. \- password should not be null 3. \- password should have one uppercase letter at least 4. \- password should have one lowercase letter at least 5. \- password should have one number at least     Each one of these should throw an exception with a different message of your choosing     2. Add feature: Password is OK if at least three of the previous conditions is true     3. Add feature: password is never OK if item 1.4 is not true. 8\. Assume Each verification takes 1 second to complete. How would you solve  items 2 and 3  so tests can run faster? --- title: "TDD Training" url: "https://osherove.com/tdd-training.md" canonical: "https://osherove.com/tdd-training" tags: [] author: "Roy Osherove" description: "This Course Listing has been moved to this page." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Training Training [This Course Listing has been moved to this page.](https://osherove.com/trainingoptions) --- title: "One Day Zero to Expert Unit Testing in .NET" url: "https://osherove.com/one-day-zero-to-expert-unit-te.md" canonical: "https://osherove.com/one-day-zero-to-expert-unit-te" tags: [] author: "Roy Osherove" description: "This Course Listing has been moved to this page." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # One Day Zero to Expert Unit Testing in .NET Training [This Course Listing has been moved to this page.](https://osherove.com/trainingoptions) --- title: "Team Leadership Training" url: "https://osherove.com/leadership-course.md" canonical: "https://osherove.com/leadership-course" tags: [] author: "Roy Osherove" description: "This Course Listing has been moved to this page." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Team Leadership Training Training [This Course Listing has been moved to this page.](https://osherove.com/trainingoptions) --- title: "Train The Trainer" url: "https://osherove.com/train-the-trainer.md" canonical: "https://osherove.com/train-the-trainer" tags: [] author: "Roy Osherove" description: "Want to be personally licensed by me to teach my TDD and Elastic Leadership Courses? This course is for you. In this course I teach prospective trainers of" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Train The Trainer Training Want to be personally licensed by me to teach my TDD and Elastic Leadership Courses? This course is for you. In this course I teach prospective trainers of my course how to teach it, and those who successfully pass it, get an in-writing license to teach my course. ### In this course you will learn: - Deep insights into how I teach - Understand the material on a deeper level - Go through pairing exercises so that I can determine if you can teach my course **Course Length**: 2 days. **Cost**: free, except for travel and stay costs. **Materials Cost**: 2,000 EUR per person (deals for special reasons apply) **License cost if you pass**: 5,000 EUR per personal license, for 2 years. [Contact me for more details.](https://osherove.com/contact) --- title: "Class Setup" url: "https://osherove.com/class-setup.md" canonical: "https://osherove.com/class-setup" tags: [] author: "Roy Osherove" description: "This Course Listing has been moved to this page." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Class Setup Training [This Course Listing has been moved to this page.](https://osherove.com/trainingoptions) --- title: "Terms and Conditions - Courses" url: "https://osherove.com/terms.md" canonical: "https://osherove.com/terms" tags: [] author: "Roy Osherove" description: "These apply to all course related transactions and ordering, unless specifically overridden by email from me with the customer. Travel I usually ask my cli" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Terms and Conditions - Courses Courses # Terms and conditions for course ordering and payments These apply to all course related transactions and ordering, unless specifically overridden by email from me with the customer. ### Travel I usually ask my clients to book the flights and hotels for me(more commitment to not cancel the course without giving it serious thought). Flights are usually business class flights (I arrive the night before the course - and I need to be fresh and ready for it). ### Securing a course date To secure a course date, I ask for 5% of the total course fee (without flights or travel costs) up front. The date is \*not\* considered secure until the payment notification has arrived to me personally. I will provide you with a special link through which you will be able to pay this fee. this link changes for each course and customer. This pre-payment will be deducted from the end-invoice you will receive when the course is over. **Securing course fees are non refundable even if the course is canceled at any time.** > _Why?_ > > It takes lots of my time to do all the administrative stuff to get courses up and running. Also, scheduling a course means I have to say no to other customers who want that month’s course as well (I can only travel once per month). 5% covers that time and makes sure people take the date seriously. ### Payment terms and late fees Payment will be due within one week of the invoice date. I do not accept NET, NET-30 or NET-60 payments at all. You will receive the invoice to pay when the course ends. If payment does not arrive within two weeks of invoice date, You will be charged an extra 2% for each two weeks that pass by.  > _Why?_ > > I’ve had bad experiences with some customers not paying for up to 3 months after the course had been done. This kind of behavior makes me write these terms, because sometimes that’s the only thing payment departments respect. I wish I could just rely on basic human decency, but I’ve been burnt enough times to know when I’m being too naive. ### Canceling a course - You can cancel a course up to 45 days before the course begins without any charge (except the initial secure course fee which is non refundable) - If you cancel a course between 45 and 30 days of the course start date, you will be charged 20% of the total expected course fee (on top of the secure source fee). - If you cancel a course between 30 and 15 days of the course start date, you will be charged 50% of the total expected course fee (on top of the secure source fee). - If you cancel a course within 15 days of the course start date, you will be charged 80% of the total expected course fee (on top of the secure source fee). - If I find out that the course has been canceled and no one even bothered to tell me about it (yes that actually happened) within 30 days of the course starting, you will be charged 100% of the expected course fee - **In any case of cancellation, if I had already booked flight tickets or hotel tickets to be there at your course, you will be charged full reimbursement of those costs (with attached invoices for them of course) on top of the charges listed above.** > _Why?_ > > These requirements are based on some previously bad experiences with people freely canceling courses as if my time and work didn’t matter. I work hard to make these things happen, and when I schedule a course, I have to turn down other customers for those dates. Since I’m only able to travel once per month, if your course is canceled, I’m basically out of income for that month. This is to make sure that people do not take lightly canceling the course, and that if that happens to be the case, that I don’t lose income (it’s usually too late to get other courses in such a short timeframe). --- title: "Contact" url: "https://osherove.com/contact.md" canonical: "https://osherove.com/contact" tags: [] author: "Roy Osherove" description: "Contact Roy Osherove about training, consulting, the TDD katas or his books." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Contact Contact # Got a question for Roy? Training, consulting, a question about one of the books or katas: send a note and Roy will get back to you. Messages go through a short contact form (Google Forms). Roy reads every one. [Open the contact form (opens in a new tab)](https://forms.gle/jQSx5KoXvrVA1JCK7) --- title: "Recommended Books" url: "https://osherove.com/recommended-books.md" canonical: "https://osherove.com/recommended-books" tags: [] author: "Roy Osherove" description: "The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity by Alan Cooper Click to View on Amazon Implementing" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Recommended Books # Books I Like - ### [The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity](https://www.amazon.com/exec/obidos/ASIN/0672326140/?tag=iserializable-20) by Alan Cooper [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0672326140/?tag=iserializable-20) - ### [Implementing Lean Software Development: From Concept to Cash](https://www.amazon.com/exec/obidos/ASIN/0321437381/?tag=iserializable-20) by Mary Poppendieck, Tom Poppendieck [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0321437381/?tag=iserializable-20) - ### [Lean Software Development: An Agile Toolkit](https://www.amazon.com/exec/obidos/ASIN/0321150783/?tag=iserializable-20) by Mary Poppendieck, Tom Poppendieck [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0321150783/?tag=iserializable-20) - ### [The Design of Everyday Things](https://www.amazon.com/exec/obidos/ASIN/0465067107/?tag=iserializable-20) by Donald A. Norman [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0465067107/?tag=iserializable-20) - ### [Hiring The Best Knowledge Workers, Techies & Nerds: The Secrets & Science Of Hiring Technical People](https://www.amazon.com/exec/obidos/ASIN/0932633595/?tag=iserializable-20) by Johanna Rothman [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0932633595/?tag=iserializable-20) - ### [Behind Closed Doors: Secrets of Great Management (Pragmatic Programmers)](https://www.amazon.com/exec/obidos/ASIN/0976694026/?tag=iserializable-20) by Johanna Rothman, Esther Derby [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0976694026/?tag=iserializable-20) - ### [Peopleware: Productive Projects and Teams (Second Edition)](https://www.amazon.com/exec/obidos/ASIN/0932633439/?tag=iserializable-20) by Tom DeMarco, Timothy Lister [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0932633439/?tag=iserializable-20) - ### [Beautiful Code: Leading Programmers Explain How They Think (Theory in Practice (O'Reilly))](https://www.amazon.com/exec/obidos/ASIN/0596510047/?tag=iserializable-20) O'Reilly Media, Inc. [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0596510047/?tag=iserializable-20) - ### [Code: The Hidden Language of Computer Hardware and Software](https://www.amazon.com/exec/obidos/ASIN/0735611319/?tag=iserializable-20) by Charles Petzold [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0735611319/?tag=iserializable-20) - ### [Patterns of Enterprise Application Architecture](https://www.amazon.com/exec/obidos/ASIN/0321127420/?tag=iserializable-20) by Martin Fowler [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0321127420/?tag=iserializable-20) - ### [Rapid Development: Taming Wild Software Schedules](https://www.amazon.com/exec/obidos/ASIN/1556159005/?tag=iserializable-20) by Steve McConnell [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/1556159005/?tag=iserializable-20) - ### [The Deadline: A Novel About Project Management](https://www.amazon.com/exec/obidos/ASIN/0932633390/?tag=iserializable-20) by Tom DeMarco [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0932633390/?tag=iserializable-20) - ### [The Pragmatic Programmer: From Journeyman to Master](https://www.amazon.com/exec/obidos/ASIN/020161622X/?tag=iserializable-20) by Andrew Hunt, David Thomas [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/020161622X/?tag=iserializable-20) - ### [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/exec/obidos/ASIN/0201633612/?tag=iserializable-20) by Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0201633612/?tag=iserializable-20) - ### [Head First Design Patterns](https://www.amazon.com/exec/obidos/ASIN/0596007124/?tag=iserializable-20) by Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0596007124/?tag=iserializable-20) - ### [Test Driven Development: By Example](https://www.amazon.com/exec/obidos/ASIN/0321146530/?tag=iserializable-20) by Kent Beck [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0321146530/?tag=iserializable-20) - ### [The Art of Unit Testing: with Examples in .NET](https://www.amazon.com/exec/obidos/ASIN/1933988274/?tag=iserializable-20) by Roy Osherove the book that I wrote. I find it quite good :) [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/1933988274/?tag=iserializable-20) - ### [.NET Framework Standard Library Annotated Reference, Volume 1: Base Class Library and Extended Numerics Library](https://www.amazon.com/exec/obidos/ASIN/0321154894/?tag=iserializable-20) by Brad Abrams [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0321154894/?tag=iserializable-20) - ### [Test-Driven Development in Microsoft .NET (Microsoft Professional)](https://www.amazon.com/exec/obidos/ASIN/0735619484/?tag=iserializable-20) by James W. Newkirk, Alexei A. Vorontsov [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0735619484/?tag=iserializable-20) - ### [Agile Software Development: The Cooperative Game (2nd Edition)](https://www.amazon.com/exec/obidos/ASIN/0321482751/?tag=iserializable-20) by Alistair Cockburn [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0321482751/?tag=iserializable-20) - [Code Complete: A Practical Handbook of Software Construction](https://www.amazon.com/exec/obidos/ASIN/0735619670/?tag=iserializable-20) ### [Code Complete: A Practical Handbook of Software Construction](https://www.amazon.com/exec/obidos/ASIN/0735619670/?tag=iserializable-20) by Steve McConnell [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0735619670/?tag=iserializable-20) - ### [AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis](https://www.amazon.com/exec/obidos/ASIN/0471197130/?tag=iserializable-20) by William J. Brown, Raphael C. Malveau, Hays W. "Skip" McCormick, Thomas J. Mowbray [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0471197130/?tag=iserializable-20) - ### [Purple Cow: Transform Your Business by Being Remarkable](https://www.amazon.com/exec/obidos/ASIN/159184021X/?tag=iserializable-20) by Seth Godin [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/159184021X/?tag=iserializable-20) - ### [Growing Object-Oriented Software, Guided by Tests](https://www.amazon.com/exec/obidos/ASIN/0321503627/?tag=iserializable-20) by Steve Freeman, Nat Pryce [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0321503627/?tag=iserializable-20) - ### [Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series (Fowler))](https://www.amazon.com/exec/obidos/ASIN/0321601912/?tag=iserializable-20) by Jez Humble, David Farley [Click to View on Amazon](https://www.amazon.com/exec/obidos/ASIN/0321601912/?tag=iserializable-20) --- title: "TDD Kata 0" url: "https://osherove.com/tdd-kata-0.md" canonical: "https://osherove.com/tdd-kata-0" tags: [] author: "Roy Osherove" description: "Decide that you will give this a serious try. At least 10 times." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Kata 0 TDD Kata # Look Within Yourself. # Decide that you will give this a serious try. At least 10 times. --- title: "TDD Kata 4" url: "https://osherove.com/tdd-kata-4.md" canonical: "https://osherove.com/tdd-kata-4" tags: [] author: "Roy Osherove" description: "" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Kata 4 TDD Kata # Bored? --- title: "TDD Kata 5" url: "https://osherove.com/tdd-kata-5.md" canonical: "https://osherove.com/tdd-kata-5" tags: [] author: "Roy Osherove" description: "" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # TDD Kata 5 TDD Kata # How Bored? --- title: "Tdd Kata 6" url: "https://osherove.com/tdd-kata-6.md" canonical: "https://osherove.com/tdd-kata-6" tags: [] author: "Roy Osherove" description: "I didn’t try them all. I have no idea how useful they are." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tdd Kata 6 TDD Kata # Fine. Here are some other Katas. # I didn’t try them all. # I have no idea how useful they are. --- title: "Tdd Kata 7" url: "https://osherove.com/tdd-kata-7.md" canonical: "https://osherove.com/tdd-kata-7" tags: [] author: "Roy Osherove" description: "" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tdd Kata 7 TDD Kata # Go Away. --- title: "Tdd Kata 8" url: "https://osherove.com/tdd-kata-8.md" canonical: "https://osherove.com/tdd-kata-8" tags: [] author: "Roy Osherove" description: "I guess I’m bored too." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tdd Kata 8 TDD Kata # At some point my wife will start to suspect there’s something fishy going on. But I’m just here trying to avoid real work, writing this page. Kata 8, Right. ## I guess I’m bored too. --- title: "Tdd Kata 9" url: "https://osherove.com/tdd-kata-9.md" canonical: "https://osherove.com/tdd-kata-9" tags: [] author: "Roy Osherove" description: "It’s always fun for me to see people try the first kata . Especially when they try to “trick” it. Because they only trick themselves out of learning a usef" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tdd Kata 9 TDD Kata It’s always fun for me to see people try the [first kata](https://osherove.com/tdd-kata-1). Especially when they try to “trick” it. Because they only trick themselves out of learning a useful skill. Who does that? Pays money to go to a course and then not learn new things? --- title: "Tdd Kata 10" url: "https://osherove.com/tdd-kata-10.md" canonical: "https://osherove.com/tdd-kata-10" tags: [] author: "Roy Osherove" description: "" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tdd Kata 10 TDD Kata # Here’s a Cat-A. ![Cat-A.png](https://osherove.com/img/sq/2LND3HF5-Cat-A.png) --- title: "Tdd Kata 11" url: "https://osherove.com/tdd-kata-11.md" canonical: "https://osherove.com/tdd-kata-11" tags: [] author: "Roy Osherove" description: "" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tdd Kata 11 TDD Kata # At this point I’m forced to report you to uncle Bob. --- title: "Tdd Kata 17" url: "https://osherove.com/tdd-kata-17.md" canonical: "https://osherove.com/tdd-kata-17" tags: [] author: "Roy Osherove" description: "" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tdd Kata 17 TDD Kata # Jesus, you’re persistent. --- title: "Tdd Kata 18" url: "https://osherove.com/tdd-kata-18.md" canonical: "https://osherove.com/tdd-kata-18" tags: [] author: "Roy Osherove" description: "Do you find this at all useful?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tdd Kata 18 TDD Kata # What is it with programmers? That they always have to prove that they know what’s going on? # Do you find this at all useful? --- title: "Tdd Kata 19" url: "https://osherove.com/tdd-kata-19.md" canonical: "https://osherove.com/tdd-kata-19" tags: [] author: "Roy Osherove" description: "Oh well. You’ll back me up right? seeing as how you’ve not spent 10 HOURS trying to find secret pages on my site?" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Tdd Kata 19 TDD Kata # I should really get started on that presentation. Those conference organizers are going to be pissed that I spent all this time on these pages instead of that very important Keynote presentation. ## Oh well. ## You’ll back me up right? ## seeing as how you’ve not spent 10 HOURS trying to find secret pages on my site? --- title: "KataNew" url: "https://osherove.com/katanew.md" canonical: "https://osherove.com/katanew" tags: [] author: "Roy Osherove" description: "" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # KataNew TDD Kata --- title: "String Calculator" url: "https://osherove.com/string-calculator.md" canonical: "https://osherove.com/string-calculator" tags: [] author: "Roy Osherove" description: "Intro The following is a TDD Kata- an exercise in coding, refactoring and test-first, that you should apply daily for at least 15 minutes . You can downloa" usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # String Calculator TDD Kata # Intro The following is a TDD Kata- an exercise in coding, refactoring and test-first, that you should apply daily for at least 15 minutes . [You can download a more readable version of the Kata here.](https://osherove.com/s/String-Calculator-Kata-v1.pdf) ## Before you start:  - Try not to read ahead. - Do one task at a time. The trick is to learn to work incrementally. - Make sure you only test for **correct inputs**. there is no need to test for invalid inputs for this kata --- # Step 1 ``` Create a simple String calculator with a method signature: ``` ``` Hints: ``` --- # Detail 3 Sed a ligula quis sapien lacinia egestas. Suspendisse nec congue purus. Nulla eu pretium massa. Aliquam bibendum, turpis eu mattis iaculis, ex lorem mollis sem, ut sollicitudin risus orci quis tellus. Quisque congue porttitor ullamcorper. Donec eget risus diam. Sed a ligula quis sapien lacinia egestas. --- title: "Roy Osherove" url: "https://osherove.com/index.md" canonical: "https://osherove.com/" tags: [] author: "Roy Osherove" description: "Roy Osherove: consulting and training on unit testing, TDD, engineering practices, team leadership, Co-Ops and continuous delivery. Author of The Art of Unit Testing and Elastic Leadership." usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)." license: "https://creativecommons.org/licenses/by/4.0/" --- # Roy Osherove > Roy Osherove's personal site: 20+ years of blog posts on unit testing, TDD, software craftsmanship, team leadership and continuous delivery, plus his training and consulting. HTML: https://osherove.com/ · Guide for AI systems: [llms.txt](https://osherove.com/llms.txt) · Full text: [llms-full.txt](https://osherove.com/llms-full.txt) ## On the home page Engineering Practices & XP Consulting & Training ### Consulting & Training by _Roy Osherove_ Roy Osherove is the author of [The Art of Unit Testing](https://www.artofunittesting.com/), [Elastic Leadership](https://www.elasticleadership.com/) and the upcoming [Co-Ops: Pipeline Driven Organizations](https://pipelinedriven.org/). He has been working and consulting in the software industry for over 20 years in most types of technical roles, for some of the world's largest companies on anything relating to engineering practices, architecture, team leadership and continuous delivery. [Discuss training](https://forms.gle/jQSx5KoXvrVA1JCK7)[Training options](https://osherove.com/trainingoptions) ![Roy Osherove](https://osherove.com/img/author/roy-osherove-2026-photo-600.jpg) Roy Osherove #### Consulting & Training Topics [All training options](https://osherove.com/trainingoptions) 1. ### Team Leaders, Tech Leads & Elastic Leadership It’s almost impossible to find **_real_ self-organizing** teams in the wild today. Most companies I visit have teams that are in what I call [Survival Mode](https://5whys.com/articles/definition-survival-mode.html) - they are too busy fixing fires and reacting that they don’t have time to learn skills that would have prevented those fires in the first place. Getting those teams to _become_ self-organizing is what I coach and train about. [Elastic leadership](https://www.elasticleadership.com/) is a _framework_ and philosophy of technical leadership that can help you as you manage day-to-day and long term challenges and strive to create the elusive self-organizing team. It is about understanding that your leadership needs to change based on which phase you discover your team is in. I coach & train Executives, technical leads and other technical experts in the organization on helping to grow true organizing teams. [Learn more →](https://www.elasticleadership.com/) · [Team leadership training](https://osherove.com/leadership-course) 2. ### XP, Unit Testing, TDD & Engineering Practices I’m the author of [The Art of Unit Testing](https://www.artofunittesting.com/) and also created the [String Calculator Kata](https://osherove.com/tdd-kata-1). I consult teams on various engineering practices & related topics such as: - Unit Testing & Test Driven Development - Refactoring & Clean Code, Branching Strategies & Feature Toggles - Pairing, Continuous Delivery, pipelines & visibility dashboards - Team Metrics & KPIs such as cycle time, [Mean time to Recovery](https://pipelinedriven.org/article/devops-metric-mean-time-to-recovery-mttr-definition-and-reasoning), Escaped Bugs, Red-To-Green time, Main-Merge-Time and more. [Learn more →](https://www.artofunittesting.com/) · [TDD training](https://osherove.com/tdd-training) [![](https://osherove.com/img/video/yt-3_UX8Kqb3aU.jpg) Play videoUnit Testing and TDD: Why you should care and how to make it happen](https://www.youtube.com/watch?v=3_UX8Kqb3aU) 3. ### Co-Ops, Pipeline Driven Organizations & Continuous Delivery **I help large teams and organizations plan and implement [Co-Ops & Continuous Delivery](https://pipelinedriven.org/) transformations** in an environment with Many **inter-dependent** and related systems and subsystems, software and teams that rely on each other, **Monolithic** systems and/or static software/hardware environments, **Lengthy** Approval Gates or change control processes, **security**, **financial**, **medical** or other **compliance** requirements, Lengthy **waterfall** based processes among multiple teams and stakeholders and workflows that are mostly **manual** and **error prone** across multiple teams or stakeholders. The main goal of these transformations is to create an organization that operates through automated pipelines of continuous delivery with fast cycle times, high confidence, and great quality. It doesn’t matter what Agile framework you’re using or attempting: Large Scale Scrum ([LeSS](https://less.works/)), Scaled Agile Framework ([SAFe](https://www.scaledagileframework.com/)), Scrum [Nexus](https://www.scrum.org/resources/scaling-scrum), or others. Continuous Delivery values will be important to you and we can find a way to make them work. [Learn more →](https://pipelinedriven.org/) · [Enterprise DevOps training](https://osherove.com/enterprise-devops-training) [![](https://osherove.com/img/video/yt-bz4AKIIqGL4.jpg) Play videoThe Pipeline Driven Organization (Øredev 2019)](https://www.youtube.com/watch?v=bz4AKIIqGL4) #### Books - [ ![Cover of The Art of Unit Testing](https://osherove.com/img/home/aout-480.jpg) ### The Art of Unit Testing Manning · now in its 3rd edition ](https://www.artofunittesting.com/) - [ ![Cover of Elastic Leadership](https://osherove.com/img/home/el-480.jpg) ### Elastic Leadership Manning · Growing self-organizing teams ](https://www.elasticleadership.com/) - [ ![Cover of Co-Ops: Pipeline Driven Organizations](https://osherove.com/img/home/pdo-480.jpg) ### Co-Ops: Pipeline Driven Organizations ](https://pipelinedriven.org/) Practice daily #### The String Calculator TDD Kata A TDD kata: an exercise in coding, refactoring and test-first that you should apply daily for at least 15 minutes. Do one task at a time; the trick is to learn to work incrementally. [Start the kata](https://osherove.com/tdd-kata-1)[Download the PDF](https://osherove.com/s/String-Calculator-Kata-v1.pdf) ``` int Add(string numbers) Add("") // 0 Add("1") // 1 Add("1,2") // 3 Add("1\n2,3") // 6 ``` #### Twenty years of writing [The full archive](https://osherove.com/blog) 1. [’03 895](https://osherove.com/blog/2003) 2. [’04 604](https://osherove.com/blog/2004) 3. [’05 402](https://osherove.com/blog/2005) 4. [’06 289](https://osherove.com/blog/2006) 5. [’07 190](https://osherove.com/blog/2007) 6. [’08 143](https://osherove.com/blog/2008) 7. [’09 109](https://osherove.com/blog/2009) 8. [’10 58](https://osherove.com/blog/2010) 9. [’11 44](https://osherove.com/blog/2011) 10. [’12 47](https://osherove.com/blog/2012) 11. [’13 43](https://osherove.com/blog/2013) 12. [’14 6](https://osherove.com/blog/2014) 13. [’15 2](https://osherove.com/blog/2015) 14. [’16 2](https://osherove.com/blog/2016) 15. [’17 2](https://osherove.com/blog/2017) 16. ’18 0 17. [’19 6](https://osherove.com/blog/2019) 18. [’20 7](https://osherove.com/blog/2020) 19. [’21 1](https://osherove.com/blog/2021) 20. ’22 0 21. [’23 1](https://osherove.com/blog/2023) 2,851 posts, 2003–2023. Each bar is one year; pick a year to see its posts. ##### Articles readers keep coming back to - Apr 3, 2005 ### [Naming standards for unit tests](https://osherove.com/blog/2005/4/3/naming-standards-for-unit-tests.html) [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) - Sep 16, 2007 ### [Mocks and Stubs - The difference is in the flow of information](https://osherove.com/blog/2007/9/16/mocks-and-stubs-the-difference-is-in-the-flow-of-information.html) [Agile](https://osherove.com/blog/category/agile), [Agile Related](https://osherove.com/blog/category/agile-related), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Testing Guidelines](https://osherove.com/blog/category/testing-guidelines), [Unit Testing](https://osherove.com/blog/category/unit-testing) - May 31, 2008 ### [Unit testing vs. Integration Testing : The Restaurant Analogy](https://osherove.com/blog/2008/5/31/unit-testing-vs-integration-testing-the-restaurant-analogy.html) [Agile](https://osherove.com/blog/category/agile), [Art Of Unit Testing](https://osherove.com/blog/category/art-of-unit-testing), [Unit Testing](https://osherove.com/blog/category/unit-testing) - May 15, 2012 ### [Test Naming Conventions With Unit of Work](https://osherove.com/blog/2012/5/15/test-naming-conventions-with-unit-of-work.html) [Unit Testing](https://osherove.com/blog/category/unit-testing) - Jul 11, 2014 ### [Should you write unit tests or integration tests?](https://osherove.com/blog/2014/7/11/should-you-write-unit-tests-or-integration-tests.html) [Unit Testing](https://osherove.com/blog/category/unit-testing) - Nov 17, 2012 ### [Build Bullet #1 - Use Version Aware Build Scripts](https://osherove.com/blog/2012/11/17/build-bullet-1-use-version-aware-build-scripts.html) [Build Bullet](https://osherove.com/blog/category/build-bullet) ##### Latest posts - Mar 23, 2023 ### [Video: Test Driven Smart Contracts with Solidity and Forge with Roy Osherove](https://osherove.com/blog/2023/3/23/video-test-driven-smart-contracts-with-solidity-and-forge-with-roy-osherove) - Jan 24, 2021 ### [Some opinions about effective software development after 20+ years](https://osherove.com/blog/2021/1/24/some-opinions-about-effective-software-development-after-20-years) - Dec 9, 2020 ### [SOLVED: Getting Skype for Business to Work on Mac with Virtual Camera](https://osherove.com/blog/2020/12/9/solved-getting-skype-for-business-to-work-on-mac-with-virtual-camera) - Nov 18, 2020 ### [Solved - Pihole FTL DB is huge taking too much disk space](https://osherove.com/blog/2020/11/18/solved-pihole-ftl-db-is-huge-taking-too-much-disk-space) - Aug 18, 2020 ### [SOLVED - High CPU and Lagging when Screen Sharing in Zoom 2020 Multiple Screens](https://osherove.com/blog/2020/8/18/solved-high-cpu-and-lagging-when-screen-sharing-in-zoom-2020-multiple-screens) #### Newer writing lives at RobotPaper.ai. Want training or consulting for your team? Get in touch. [Contact Roy](https://forms.gle/jQSx5KoXvrVA1JCK7)[RobotPaper.ai](https://robotpaper.ai/) ## Pages - [TDD Kata 1 - String Calculator](https://osherove.com/tdd-kata-1.md): String Calculator The following is a TDD Kata- an exercise in coding, refactoring and test-first, that you should apply daily for at least 15 minutes . You - [Training](https://osherove.com/trainingoptions.md): Public & Private Training: (Due to #COVID19 - all training can be scheduled to be done ONLINE with Zoom webinars) Contact for course info or scheduling - [Tools](https://osherove.com/tools.md): Here is a non comprehensive list of tools I made and how to download them: NOTE: you can get the source code and contribute to most of these over here Regu - [Enterprise DevOps Training](https://osherove.com/enterprise-devops-training.md): You can find this course plus the full list of training options by Roy at this link. (Previously called “Enterprise DevOps”) DevOps is the implementation o - [TDD Kata 2 - Interactions](https://osherove.com/tdd-kata-2.md): Videos of people doing the kata The kata in C++ and Igloo The kata in C# and Moq Before you start If you have an online video of you performing this kata o - [TDD Kata 3 - Refactoring](https://osherove.com/tdd-kata-3.md): Create a Password verifications class or function for the purposes of password verification. Verification will fail if any one of the rules mentioned does - [TDD Training](https://osherove.com/tdd-training.md): This Course Listing has been moved to this page. - [One Day Zero to Expert Unit Testing in .NET](https://osherove.com/one-day-zero-to-expert-unit-te.md): This Course Listing has been moved to this page. - [Team Leadership Training](https://osherove.com/leadership-course.md): This Course Listing has been moved to this page. - [Train The Trainer](https://osherove.com/train-the-trainer.md): Want to be personally licensed by me to teach my TDD and Elastic Leadership Courses? This course is for you. In this course I teach prospective trainers of - [Class Setup](https://osherove.com/class-setup.md): This Course Listing has been moved to this page. - [Terms and Conditions - Courses](https://osherove.com/terms.md): These apply to all course related transactions and ordering, unless specifically overridden by email from me with the customer. Travel I usually ask my cli - [Contact](https://osherove.com/contact.md): Contact Roy Osherove about training, consulting, the TDD katas or his books. - [Recommended Books](https://osherove.com/recommended-books.md): The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity by Alan Cooper Click to View on Amazon Implementing - [TDD Kata 0](https://osherove.com/tdd-kata-0.md): Decide that you will give this a serious try. At least 10 times. - [TDD Kata 4](https://osherove.com/tdd-kata-4.md) - [TDD Kata 5](https://osherove.com/tdd-kata-5.md) - [Tdd Kata 6](https://osherove.com/tdd-kata-6.md): I didn’t try them all. I have no idea how useful they are. - [Tdd Kata 7](https://osherove.com/tdd-kata-7.md) - [Tdd Kata 8](https://osherove.com/tdd-kata-8.md): I guess I’m bored too. - [Tdd Kata 9](https://osherove.com/tdd-kata-9.md): It’s always fun for me to see people try the first kata . Especially when they try to “trick” it. Because they only trick themselves out of learning a usef - [Tdd Kata 10](https://osherove.com/tdd-kata-10.md) - [Tdd Kata 11](https://osherove.com/tdd-kata-11.md) - [Tdd Kata 17](https://osherove.com/tdd-kata-17.md) - [Tdd Kata 18](https://osherove.com/tdd-kata-18.md): Do you find this at all useful? - [Tdd Kata 19](https://osherove.com/tdd-kata-19.md): Oh well. You’ll back me up right? seeing as how you’ve not spent 10 HOURS trying to find secret pages on my site? - [KataNew](https://osherove.com/katanew.md) - [String Calculator](https://osherove.com/string-calculator.md): Intro The following is a TDD Kata- an exercise in coding, refactoring and test-first, that you should apply daily for at least 15 minutes . You can downloa ## Posts (2879, the 150 most recent listed; all are in llms-full.txt) ### Unit Testing - [What's new and Changed in the Art of Unit Testing 2nd Edition](https://osherove.com/blog/2014/10/25/whats-new-and-changed-in-the-art-of-unit-testing-2nd-edition.md) (2014-10-25): I still get called out for some things I wrote in the first edition published in 2009. Some people might not be aware there is a 2nd edition out there, or are borrowing old copies. Lots has changed in my thinking about… - [Should you write unit tests or integration tests?](https://osherove.com/blog/2014/7/11/should-you-write-unit-tests-or-integration-tests.md) (2014-07-11): I got this question in the mail. I thought it was quite valid for many other people: Question: Trying to promote unit tests in a new work place: the “search” action from the UI goes through IOC container which calls a… - [Video - Refactoring and Design Skills for Test Driven Development](https://osherove.com/blog/2013/10/14/video-refactoring-and-design-skills-for-test-driven-developm.md) (2013-10-14): Last week I presented a keynote and a talk at the London Software Architect conference. Here is the video I recorded from my laptop during my talk about refactoring. I hope you find it useful. Play video Refactoring and… - [Ugly Code Means Your Product Used to be Successful](https://osherove.com/blog/2013/6/4/ugly-code-means-your-product-used-to-be-successful.md) (2013-06-04): I have now worked at a bunch of companies, and consulted for quite a few. I have looked at some pretty horrible code. Every company I visit with say the same thing: “Yeah, but our code really sucks. “ It does not suck… - [April 18: Refactoring and Design Skills for Test Driven Development Workshop](https://osherove.com/blog/2013/4/11/april-18-refactoring-and-design-skills-for-test-driven-devel.md) (2013-04-10): When? April 18-19 Where? Oslo How much? 11,900 NOK How to register? Send me an email. The Problem You have been trying to learn TDD, and it’s going pretty well, but your code looks horrible. Your design skills are… - [Acceptance Frameworks Vs. Specification APis](https://osherove.com/blog/2013/3/29/acceptance-frameworks-vs-specification-apis.md) (2013-03-29): I see two forms of ‘BDD’ tools floating in the wild. The first form, let`s call it ‘deep BDD’ for now, requires you to go through a special langauge filter, before translating it with special adapters into executable… - [Using System.Transactions.TransactionScope to Rollback Database changes under an integration test](https://osherove.com/blog/2013/3/28/using-systemtransactionstransactionscope-to-rollback-databas.md) (2013-03-28): It has been several years since I came up with the idea of database rolled back tests based on com+ transactions, which later became ServicedComponent tests, which later became TransactionScope aided tests. At some… - [Video: (part 8 - The big Refactoring) TDD Pairing a Go Game Engine](https://osherove.com/blog/2012/7/13/video-part-8-the-big-refactoring-tdd-pairing-a-go-game-engin.md) (2012-07-12): In this video (all the sessions are here ), Raymond and I do a refactoring of the code, to something we like much more. We end up with code we can be more proud of, and the comtinued feedback of the tests helps us do… - [Video: (part 7 - The bug that wouldn't die) Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/7/9/video-part-7-the-bug-that-wouldnt-die-go-game-engine-with-td.md) (2012-07-09): In our continuing series of TDD pairing videos , Raymond and I meet again to continue where we left off. Where we left off was not a good place - we had bugs in the logic of our test code that we hunted down in the last… - [Faking static methods in Moq, FakeItEasy and NSubstitute might be closer than imagined](https://osherove.com/blog/2012/7/8/faking-static-methods-in-moq-fakeiteasy-and-nsubstitute-migh.md) (2012-07-08): Update : the version that works with .net 4.0 is here (link to InjecttionExample3.zip in that page). the examples from the link below work in .net 3.5 and under. While I was doing my TDD course at Soluto this week, One… - [Video: (part 6 - Total n00b mistakes) Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/7/5/video-part-6-total-n00b-mistakes-go-game-engine-with-tdd-and.md) (2012-07-05): If you calculate by hours, this might be called “the first session of the 2nd day” of Raymond and me working together. This was by far the most frustrating one of the 6 we’ve had so far. all the other sessions are here… - [Video: (part 5 - A Test DSL) Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/7/2/video-part-5-a-test-dsl-go-game-engine-with-tdd-and-pair-pro.md) (2012-07-02): In this session we start writing some tests that don’t fail first, and we don’t understand why. So we take some time to make a testing DSL, so that our tests will be more readable, and also easier to write. We also… - [Refactoring Dillema Video: (part 4) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/29/refactoring-dillema-video-part-4-building-a-go-game-engine-w.md) (2012-06-29): In this video ( the rest are here ) we focus on refactoring, and we try out the strategy pattern. We end up not being sure how well it worked out for the future, but we’ll see how things unfold in the next parts. We… - [Video: (part 3) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/28/video-part-3-building-a-go-game-engine-with-tdd-and-pair-pro.md) (2012-06-28): Another good hour of pairing with Raymond Lim yesterday. This time we continue by adding more sub-features to the “GetWinner” feature, and discover a bug in the process. As usual, you can find all the videos of our… - [Video: (part 2c) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/28/video-part-2c-building-a-go-game-engine-with-tdd-and-pair-pr.md) (2012-06-27): In this final part, Raymond and I finish a big refactoring. First, we fail. then we back up and start moving slowly again.Finally, we succeed. Our tests save our asses in the process. Play video TDD and Pairing Session… - [Video: Part 2b : TDD and Pairing on a go engine with Raymond Lim](https://osherove.com/blog/2012/6/27/video-part-2b-tdd-and-pairing-on-a-go-engine-with-raymond-li.md) (2012-06-27): Here’s the 2nd part of three total, of my second session with Raymond going through building a Go game engine from scratch. I’ve put the whole list of continually updating videos on this Go game over here , so you can… - [The future of Isolation frameworks, and how Moq isn't it (for now)](https://osherove.com/blog/2012/6/27/the-future-of-isolation-frameworks-and-how-moq-isnt-it-for-n.md) (2012-06-26): In a past post I hinted that I think Moq is not a part of the future of isolation frameworks. Here’s where I get to explain why. To be clear, it is a really valuable, widely used framework, and it helped change the… - [Video: (part 2a) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/26/video-part-2a-building-a-go-game-engine-with-tdd-and-pair-pr.md) (2012-06-26): I’ve put the whole list of continually updating videos on this Go game over here , so you can watch them form the beginning. There is still much to do, but this is starting to get fun! In this 30 minutes video, Raymond… - [FakeItEasy or NSubstitute? Which should I use for samples in art of unit testing 2nd edition?](https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.md) (2012-06-26): In my upcoming 2nd edition of art of unit testing , I’ve decided not to use RhinoMocks (too old and stuck in the past), or Moq (although widely used, I think it represents the past, not the future) for examples of an… - [Video: (part 1) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/blog/2012/6/25/video-part-1-building-a-go-game-engine-with-tdd-and-pair-pro.md) (2012-06-24): I’ve put the whole list of continually updating videos on this Go game over here , so you can watch them form the beginning. A few days ago, a guy named Raymond Lim sent me an email with some questions about how to do… - [File System Wrappers for Unit Testing in C#](https://osherove.com/blog/2012/5/16/file-system-wrappers-for-unit-testing-in-c.md) (2012-05-16): I’ve asked this on twitter, and here’s what I got: System.IO.Abstractions (looks pretty deep) SystemWrapper (I’m not crazy about the file system being used as a mock API) Something older I’d take a look at the first on… - [Test Driven Validation Logic with Extract & Override](https://osherove.com/blog/2012/5/16/test-driven-validation-logic-with-extract-override.md) (2012-05-16): In the NerdDinner project, there’s this amazing test (see the bottom, second one). There are so many things wrong here: What is exactly correct about these properties? Many magic values Multiple tests in a single test… - [Test Naming Conventions With Unit of Work](https://osherove.com/blog/2012/5/15/test-naming-conventions-with-unit-of-work.md) (2012-05-15): When I name my tests I use the name of the “ unit of work ” as the first part. If the unit of work is bigger than a method, I usually name the test with the name of the initial public method that starts the unit of… - [What does the 'unit' in 'unit test' mean?](https://osherove.com/blog/2012/5/15/what-does-the-unit-in-unit-test-mean.md) (2012-05-15): I used to think it was a method. Then I thought it coule be several methods. then I thought it might be several classes. then I realized it changes all the time. It means “unit of work”. A unit of work is a use case in… - [Free event and 5 day TDD masterclass in Copenhagen this month](https://osherove.com/blog/2011/10/6/free-event-and-5-day-tdd-masterclass-in-copenhagen-this-mont.md) (2011-10-06): Hi all. Two things to announce: TDD Master Class: If you’re in or near Copenhagen this month, and are interested in joining my 5 day TDD master class in .NET, you can learn more about it here . This is the only time… - [Why MSTest is the IE6 of unit test frameworks](https://osherove.com/blog/2011/8/24/why-mstest-is-the-ie6-of-unit-test-frameworks.md) (2011-08-24): Someone asked me by email a couple of weeks ago, whether I still think NUnit is better than MSTest. I had two weeks to think about this before having enough time to write this. keep in mind, I posted pretty much the… ### Build Bullet - [Beautiful Builds: Release Compilation Step](https://osherove.com/blog/2013/4/23/beautiful-builds-release-compilation-step.md) (2013-04-22): Imagine you could only compile once a week. Once every two weeks. Once a month. Scary? All that code that you write blindly, not knowing whether it even compiles. All those hidden errors lurking, accumulating in the… - [Build Pattern: Cumulative Build](https://osherove.com/blog/2013/2/7/build-pattern-adopt-artifacts.md) (2013-02-07): Note : This will become part of my book on beautiful builds . Any comments or feedback are more than welcome, as well as ideas of other common build patterns you see in the wild. Other Names: Distilled Build… - [Tests and Builds are Made to be Broken](https://osherove.com/blog/2013/1/20/tests-and-builds-are-made-to-be-broken.md) (2013-01-20): Many agile teams seem to be very focused on not breaking the build. I myself used to jokingly say that your team should have a “I Broke the Build” T-Shirt, to switch between team members. That was a mistake. I think… - [Build Pattern: Gated Commit](https://osherove.com/blog/2013/1/20/build-pattern-gated-commit.md) (2013-01-20): Other names: Pre-tested commit Gated Check-in Private Build Delayed Commit Symptoms: The build keeps breaking for trivial problems. Problem: Developers do not know what are the outcomes of committing their source code… - [Build Pattern: Extract Script](https://osherove.com/blog/2013/1/19/build-pattern-extract-script.md) (2013-01-19): This is a variation of Fill in the blanks and will become part of the Builds Book. Symptoms: You have multiple build scripts that contain parts that execute the same set of complicated actions, differing only by path… - [Build Pattern: Fill In the Blanks](https://osherove.com/blog/2013/1/19/build-pattern-fill-in-the-blanks.md) (2013-01-19): Other names: DRY Build Scripts (Don’t Repeat Yourself) Infrastructure agnostic scripts Parameterized Scripts Fill In the Blanks Symptoms: You find yourself having to change the script in many places, because a single… - [Build Pattern: Location Agnostic Script](https://osherove.com/blog/2013/1/19/build-pattern-location-agnostic-script.md) (2013-01-19): Symptoms: Running the build script on a machine where it was never run before requires extra pre-work to make the machine ready, such as mapping drives, creating a special build script folder etc. Problem: The build… - [Build Pattern: Shipping Skeleton](https://osherove.com/blog/2013/1/7/build-pattern-shipping-skeleton.md) (2013-01-07): I am slowly realizing that perhaps my concepts for the build book could be better serving as reusable patterns for creating builds, solving specific problems. Pattern: Shipping Skeleton other names: “Hello World”,… - [Build Bullet #5– How to make your builds FAST using DRY and SRP Principles](https://osherove.com/blog/2012/12/6/build-bullet-5ndash-how-to-make-your-builds-fast-using-dry-a.md) (2012-12-06): (this will become part of my upcoming booklet on beautiful builds ) One of the things that kept frustrating me when I was working on various types of build configurations in our CI server, was that each build in a… - [Build Bullet #4: Rolling Builds and the Plane of Confidence](https://osherove.com/blog/2012/11/27/build-bullet-4-rolling-builds-and-the-plane-of-confidence.md) (2012-11-27): When I check in code I have been working on, I feel: 1. I want to wait for the build result 2. I don’t want to waste time waiting for the build results, doing nothing 3. But I fear doing something in the code until I’m… - [Build Bullet #3– Start Products with an Empty Build and Deploy Pipeline](https://osherove.com/blog/2012/11/18/build-bullet-3ndash-start-products-with-an-empty-build-and-d.md) (2012-11-18): Builds can be nasty beasts when It’s finally time to organize and do them. There are so many things you did not think about, that it can take days or weeks to come up with a build for an existing system. To avoid the… - [Build Bullets #2–Avoid XML Facing Build Tools](https://osherove.com/blog/2012/11/18/build-bullets-2ndashavoid-xml-facing-build-tools.md) (2012-11-18): Having your build scripts in XML is one of the worst things you can do for maintainability and readability. Treat your build scripts like you treat your source code (or, how developers should treat their source code) –… - [Build Bullet #1 - Use Version Aware Build Scripts](https://osherove.com/blog/2012/11/17/build-bullet-1-use-version-aware-build-scripts.md) (2012-11-17): I am thinking of writing a small booklet about better builds . this blog post might end up as a part of it . Let me know if you’re interested by taking a look here. While I do love to use Continuous Integration Servers… ### video - [Videos: Beautiful Builds, and a Second Look at Unit Testing](https://osherove.com/blog/2013/5/17/videos-beautiful-builds-and-a-second-look-at-unit-testing.md) (2013-05-16): While at the msswit conference in the Ukraine, I got to speak on two subjects with the following videos: Beautiful Builds: Maintainable, Coherent Build Processes A Second Look at Unit Testing : what I learned since the… - [TDD Master Class Online: Get Each Day Separately for $59](https://osherove.com/blog/2013/3/22/tdd-master-class-online-get-each-day-separately-for-59.md) (2013-03-22): Due to public demand, The full course is 99$. and as part of the big experiment I am doing, you can now have TWO ways to get my TDD master class online: You can get the whole master class thing in one big giant course ,… - [Can’t attend my five day TDD master class? Buy & Watch it online, recorded live.](https://osherove.com/blog/2013/3/17/canrsquot-attend-my-five-day-tdd-master-class-buy-amp-watch.md) (2013-03-17): Phew. This is going to be scary. I am making my full TDD master class in .NET available as a video series of over nine hours, recorded live in class . If you have ever wanted to attend my classes, but couldn’t : this is… - [Two Day Leadership Workshop–London April 11-12](https://osherove.com/blog/2013/2/6/two-day-leadership-workshopndashlondon-april-11-12.md) (2013-02-06): I would love to see you at my upcoming two day workshop in London . Place is limited to 20 participants. The workshop is for architects, team leaders, and managers . The point? Learn how to make the things you believe… - [\[Video\] Vimming - Natural Selection in Visual Mode](https://osherove.com/blog/2012/5/9/video-vimming-natural-selection-in-visual-mode.md) (2012-05-09): My third vimdeo Play video Vimming - Natural Selection - [Video: Team Leadership in the Age of Agile](https://osherove.com/blog/2011/7/8/video-team-leadership-in-the-age-of-agile.md) (2011-07-08): during QCon 2011 in London, I gave a talk about the new qualities that team leaders need to make agile succeed. It's a very small fraction of what I cover and coach during my upcoming course. See the full video here… - [Video: The 3 amigos at NDC2011](https://osherove.com/blog/2011/6/18/video-the-3-amigos-at-ndc2011.md) (2011-06-18): Embedded Flash media from the original post is no longer playable. recorded at NDC 2011 picturing Ruby on Rails development vs. ASP.NET MVC development ### course - [New Online Course: TDD and BDD in Ruby](https://osherove.com/blog/2013/9/15/new-online-course-tdd-and-bdd-in-ruby.md) (2013-09-15): If you are just coming into the Ruby community, you might think “man; everyone here does unit testing and TDD already”. But the truth is, that is very far from reality. Most people in Ruby seem to talk the talk, but… - [Coming to America (to do training)](https://osherove.com/blog/2013/6/6/coming-to-america-to-do-training.md) (2013-06-06): After a long standing bureaucratic battle with the US immigration authority , I finally have a visa to come to the US, and it expires DEC 2nd 2013 (in a few months… I know..) I would like to make the most of this… - [Osherove online TDD master class at 40% off for a few hours.](https://osherove.com/blog/2013/3/21/osherove-online-tdd-master-class-at-40-off-for-a-few-hours.md) (2013-03-21): FYI, for the next few hours, I am offering a 40% off my TDD online training course ($300 instead of $500). use coupon code ‘ readability’ on the course page. This is an experiment I am doing, and will be doing others,… - [March 7 : Refactoring Skills for Unit Testing and TDD Course](https://osherove.com/blog/2013/2/21/march-7-refactoring-skills-for-unit-testing-and-tdd-course.md) (2013-02-21): update: the course is running. we have 8 participants so far. yay! I usually do not focus about design in my TDD courses. I believe that separating the learning about the core skills of Unit Testing, TDD, and Design… - [Upcoming 1-day courses in Sweden](https://osherove.com/blog/2012/6/20/upcoming-1-day-courses-in-sweden.md) (2012-06-20): I’ve joined with Foo-Cafe in Sweden (the same folks who brought you oredev until a couple of years ago) here are a few one day courses I’ll be doing there, which are open to the public: Stockholm, October 19, 2012 -… ### .NET - [How Microsoft Israel Scares .NET Consultants Into Submission](https://osherove.com/blog/2011/11/27/how-microsoft-israel-scares-net-consultants-into-submission.md) (2011-11-27): If you are a consultant related to any Microsoft related technology in Israel, you might know the feeling - There's something you really want to tell your customers about a product that might be better than a current… - [TDD Master class - Videos Available For Purchase at TekPub](https://osherove.com/blog/2011/11/11/tdd-master-class-videos-available-for-purchase-at-tekpub.md) (2011-11-11): UPDATE: I have moved my tdd master class videos over to udemy.com . I’ve added many more and the class is now almost fully complete. In the past several months I’ve been taking background recordings of my classes with… - [Upcoming 3 and 5 day TDD classes](https://osherove.com/blog/2011/8/25/upcoming-3-and-5-day-tdd-classes.md) (2011-08-25): September in Stockholm (3 days) I'll be giving a 3 day version of my TDD masterclass in .NET, in Stockholm. You can register and find more details here. October in Copenhagen (5 days) This is the only 5 day TDD class I… - [The first Ruby on Rails course in Israel is open for registration](https://osherove.com/blog/2011/7/8/the-first-ruby-on-rails-course-in-israel-is-open-for-registr.md) (2011-07-08): if you've ever wanted to learn ruby on rails in Israel, but didn't know how to start on your own, I think you'd find this very interesting! (no, I am not teaching it. someone with much more experience than me is) Web… ### Cool Tools - [Tools And Frameworks for Unit Testing in .NET for 2013](https://osherove.com/blog/2013/3/16/tools-and-frameworks-for-unit-testing-in-net-and-java.md) (2013-03-16): in “ Art of Unit Testing 2nd Edition ” I am now at work on the tools and frameworks appendix. It currently includes the following sections: • Isolation frameworks Moq Rhino Mocks Typemock Isolator NMock ? NUnit.Mocks… - [Six Tools for managing multiple remote desktop sessions on windows and mac](https://osherove.com/blog/2013/2/22/tools-for-managing-multiple-remote-desktop-sessions-on-windo.md) (2013-02-22): I use both mac and windows at work, and I do a lot of remote desktop stuff as well. I asked on twitter “what tools would you recommend on windows to manage remote desktops?” here is the list I got: RemoteNG - oldie but… - [\[Cool Tool\] Chocolatey for windows is what you will not live without in two years](https://osherove.com/blog/2012/6/18/cool-tool-chocolatey-for-windows-is-what-you-will-not-live-w.md) (2012-06-18): OK, the name isn’t amazing, but having lived in linux land for a while now, and on mac too, the one thing I miss in windows is a no-hassle, dialog-free installation experience, that I can just do using a command line.… - [\[Cool Tool\] Checking Out VsVim](https://osherove.com/blog/2011/12/14/cool-tool-checking-out-vsvim.md) (2011-12-14): I've been using VsVim in my latest TDD course. It's a simulator of Vim keybindings for visual studio. I've been using vim since january 2011, so almost a year now, and i've come to really like the power you get when… ### More posts from 2020–2023 - [Video: Test Driven Smart Contracts with Solidity and Forge with Roy Osherove](https://osherove.com/blog/2023/3/23/video-test-driven-smart-contracts-with-solidity-and-forge-with-roy-osherove.md) (2023-03-23): I did a talk about Test Driven Solidity Smart contracts at the Israel web3 developers underground last week. Here’s how it went. Hope you enjoy it! Play video Test Driven Solidity Smart Contracts with Foundry & Forge -… - [Some opinions about effective software development after 20+ years](https://osherove.com/blog/2021/1/24/some-opinions-about-effective-software-development-after-20-years.md) (2021-01-24): This post on hackernews made me write this: Being able to communicate ideas > Being a great technical developer - For every great developer that's an asshole, you can find a great developer that won't be an asshole.… - [SOLVED: Getting Skype for Business to Work on Mac with Virtual Camera](https://osherove.com/blog/2020/12/9/solved-getting-skype-for-business-to-work-on-mac-with-virtual-camera.md) (2020-12-09): Skype for business… it used to be “acceptable”. These days it’s the notepad of the conferencing world. Skype has recently broken compatibility with Virtual cameras with the new versions of MAC OS, so here’s the trick… - [Solved - Pihole FTL DB is huge taking too much disk space](https://osherove.com/blog/2020/11/18/solved-pihole-ftl-db-is-huge-taking-too-much-disk-space.md) (2020-11-18): If, like me, you’ve also run out of room on your pi-hole running on a raspberry pi, here’s how you can clean up the database (note: all of the logged data will disappear forever!) cd /etc/pihole sudo service pihole-FTL… - [SOLVED - High CPU and Lagging when Screen Sharing in Zoom 2020 Multiple Screens](https://osherove.com/blog/2020/8/18/solved-high-cpu-and-lagging-when-screen-sharing-in-zoom-2020-multiple-screens.md) (2020-08-18): (on a mac) I’m sharing here what I’ve learned the hard way. This has now helped me when teaching half day remote classes about TDD: Go into zoom settings Under “Screen Share” -> Advanced -> Screen Capture Mode Set… - [COVID19: All current online unit testing and TDD training content is free until further notice](https://osherove.com/blog/2020/3/19/covid19-free-unit-testing-training.md) (2020-03-19): OK. We’re all stuck at home (or will be soon). COVID19 is wreaking havoc on our economy and our way of living. It’s pretty intense, but it’s also a time, for those of us who can do it, to grow and learn new skills, get… - [Unit Testing Entry and Exit Points](https://osherove.com/blog/2020/3/12/unit-testing-entry-points-and-exit-points.md) (2020-03-12): Let’s talk about the word “unit” in unit testing. To me, a unit stands for “unit of work” or a “use case” inside the system. A unit of work has a beginning and an end. I call these entry points and exit points . A… - [Re-Thinking the Role of Mock Objects, Design & Test Maintainability (stream of thought)](https://osherove.com/blog/2020/3/2/re-thinking-the-role-of-mock-objects-design-amp-test-maintainability-stream-of-thought.md) (2020-03-02): Disclaimer : this post assumes you understand mock objects deeply and have been using them for a long time and are familiar with the london-school of TDD. Disclaimer : written as a stream of though. So might be a bit… - [Seeking Speakers about Branching Strategies, Feature Toggles, Pairing & Other XP/CD Practices](https://osherove.com/blog/2020/1/19/seeking-speakers-about-branching-strategies-feature-toggles-pairing-amp-other-xpcd-practices.md) (2020-01-19): The new CD/XP israel meetup that I’m running is seeking speakers for our meetups in the next few months about any of the following subjects: Branching Strategies Continuous Delivery Metrics Engineering Practices &… ### More posts from 2017–2019 - [An updated diagram of the TDD process from the upcoming 3rd Edition of Art of Unit Testing](https://osherove.com/blog/2019/11/12/an-updated-diagram-of-the-tdd-process-from-the-upcoming-3rd-edition-of-art-of-unit-testing.md) (2019-11-12): As part of the work on Art of Unit Testing in JS, here’s a diagram I’ve created to explain Test Driven Development. Any feedback is welcome: - [Can you write for 5 minutes?](https://osherove.com/blog/2019/8/22/can-you-write-for-5-minutes.md) (2019-08-22): Here’s a nice little web app that forces you to write continuously for a specified amount of time, and if you stop, all text is deleted. It’s a fun exercise, especially if you want to practice writing “flow”. Here’s… - [Art of Unit Testing, 3rd Edition, With Examples in JavaScript: Tech Reviewers Wanted](https://osherove.com/blog/2019/7/26/art-of-unit-testing-3rd-edition-with-examples-in-javascript-tech-reviewers-wanted.md) (2019-07-26): TLDR: I need JS Savvy tech reviewers for the 3rd edition of the book. Apply here, get a free book with your name mentioned in it if your feedback is awesome. The Rest Dear Diary. It has been six years since the last… - [Announcing Continuous Delivery Israel Meetup - First Meeting (June 24)](https://osherove.com/blog/2019/6/2/announcing-continuous-delivery-israel-meetup-first-meeting-june-24.md) (2019-06-02): I’m pleased to announce that we will have the first ever meeting Continuous Delivery Israel meetup , in the AWS Floor28 offices in Tel Aviv, June 24th, 2019, at 6PM. The Group’s page is located at CDIsrael.com If you… - [About Being Lonely as a Consultant](https://osherove.com/blog/2019/4/16/about-being-lonely-as-a-consultant.md) (2019-04-16): Loneliness, as far as I’ve felt it in the past 20+ years where I’ve done perhaps 50% of them as a consultant, is very common. If you become a consultant, you should expect and anticipate it as a given for at least part… - [Looking to do training or consulting in London around week of May 13th 2019](https://osherove.com/blog/2019/3/14/looking-to-do-training-or-consulting-in-london-around-week-of-may-13th-2019.md) (2019-03-14): If you're based in LONDON - I'm looking to do a 1-2 day workshop for interested customers about either DevOps Patterns , Elastic Leadership or TDD during the week of May 15th. Here’s the list of possible training or… - [Removing bloatware from a new windows machine](https://osherove.com/blog/2017/9/29/removing-bloatware-from-a-new-windows-machine.md) (2017-09-29): Reminder to self: here’s what you do through powershell: get-appxpackage messaging | remove-appxpackage get-appxpackage sway | remove-appxpackage get-appxpackage commsphone | remove-appxpackage get-appxpackage… - [New Vim Course Online - Vim Hates You](https://osherove.com/blog/2017/4/20/new-vim-course-online-vim-hates-you.md) (2017-04-20): I’ve added a new course to http://courses.osherove.com - This time it’s all about Vim, which I’ve been using for a few good years now. Play video Vim Hates You You can check out my online Vim course at… ### More posts from 2014–2016 - [Enterprise DevOps](https://osherove.com/blog/2016/10/29/enterprise-devops.md) (2016-10-29): As part of my work in the past few years I’ve been more and more deeply involved in large scale DevOps implemementations in very large companies. I’m now writing about my experiences in here: Main website:… - [Code as Music - Test Environments](https://osherove.com/blog/2016/8/18/code-as-music-test-environments.md) (2016-08-17): Music Production also has some corollaries with coding in terms of testing. When producing music, it is important that the music sounds good on multiple types of speakers: in your car, in your iphone headphones, on a… - [Music Production vs. Code Production](https://osherove.com/blog/2015/12/21/music-production-vs-code-production.md) (2015-12-21): My off hours hobby is music production. Here are similarities I see between coding and music production so far: Code compiles into binary - midi is rendered into wav files When producing music you need to take many… - [Two new Online Courses: Effective Total Command and FinalBuilder Training Videos](https://osherove.com/blog/2015/1/30/two-new-online-courses-effective-total-command-and-finalbuil.md) (2015-01-30): I’m happy to report two new video courses that I just finished recording and publishing two new courses: Automating All the Things with FinalBuilder Commanding Total Commander Both of these are tools that I rave about… - [Why The Hell did you move to New Jersey, Roy?](https://osherove.com/blog/2014/10/7/why-the-hell-did-you-move-to-new-jersey-roy.md) (2014-10-07): After two years in amazing Norway, our Scandinavian adventure has been transformed into what I can only call so far as “The New Jersey Experience”. I’m here on an O-1 visa . I’m also open to doing part time training… - [New Online Course: Beautiful Builds and Continuous Delivery Patterns](https://osherove.com/blog/2014/7/11/new-online-course-beautiful-builds-and-continuous-delivery-p.md) (2014-07-11): I somehow forgot to blog about this, but it’s never too late. My new online course Beautiful Builds and Continuous Delivery patterns is now available and is $25 until the end of this month (July). Here’s the course… - [Why I stopped selling courses on udemy](https://osherove.com/blog/2014/5/7/why-i-stopped-selling-courses-on-udemy.md) (2014-05-07): The Udemy Pyramid Scheme. I’ve run several successfull courses on udemy (update: I’ve moved my courses over here now) back when they had a royalty rate of 90% revenue share per course. Then things started to change, to… - [Photo and Video Backup Strategy: Why I am not likely to ever lose my family photos and videos from the last 10 years in the next 10 years.](https://osherove.com/blog/2014/1/28/photo-and-video-backup-strategy-why-i-am-not-likely-to-ever.md) (2014-01-28): Here is the way I backup my photos> First I use dropbox for “immediate” backup of the last month Then I use PictureLife as a full backup and viewing service Then I use Amazon Glacier for “cold storage” For my stuff I… ### More posts from 2013 - [Fifteen things I look for in an Isolation framework](https://osherove.com/blog/2013/11/23/fifteen-things-i-look-for-in-an-isolation-framework.md) (2013-11-23): Is the framework strict or non strict by default? Hopefully non strict. Is everything called a mock? Hopefully not. a fake? mock/stub differentiation? Does it have recursive fakes? Hopefully. How good are the error… - [Looking for a new adventure and challenging work in 2014](https://osherove.com/blog/2013/10/20/looking-for-a-new-adventure-and-challenging-work-in-2014.md) (2013-10-20): TLDR; If you think I would be useful to your company in the US or in Europe as an Architect, Team Leader, Senior Developer, CTO, Trainer or any other role where I can make a real difference - maybe we can work together,… - [$11,000](https://osherove.com/blog/2013/10/18/11000.md) (2013-10-18): That is what I earned on my book for software team leaders before it was even finished. This august I finished writing and publishing my first self-published book. Last month I got done adding a print and an audio… - [Refactoring and Design Skills for Test Driven Development](https://osherove.com/videos/2013/10/16/refactoring-and-design-skills-for-test-driven-development.md) (2013-10-16): Last week I presented a keynote and a talk at the London Software Architect conference. Here is the video I recorded from my laptop during my talk about refactoring. I hope you find it useful. Play video Refactoring and… - [Video: Unit Testing and TDD – Why You Should Care and How to Make It Happen](https://osherove.com/videos/2013/10/16/video-unit-testing-and-tdd-ndash-why-you-should-care-and-how.md) (2013-10-16): A few weeks ago I spent a few days in Germany and got the opportunity to speak at the siemens healthcare testing conference. I talked about why we usually fail to introduce new paractices into an organization and… - [Video: Unit Testing and TDD – Why You Should Care and How to Make It Happen](https://osherove.com/blog/2013/10/16/video-unit-testing-and-tdd-ndash-why-you-should-care-and-how.md) (2013-10-16): A few weeks ago I spent a few days in Germany and got the opportunity to speak at the siemens healthcare testing conference. I talked about why we usually fail to introduce new paractices into an organization and… - [Looking for promising .NET developers for my current project](https://osherove.com/blog/2013/10/3/looking-for-promising-net-developers-for-my-current-project.md) (2013-10-03): I am currently in Norway, Oslo area, and involved in a very interesting project. Both architecturally and in terms of teams and cross communication of a big product. We are looking for good .NET developers to join, who… - [Book & Audio Book: Notes to a Software Team Leader](https://osherove.com/blog/2013/8/19/book-audio-book-notes-to-a-software-team-leader.md) (2013-08-19): If you are a software team leader, architect, scrum master or project leader, you might be interested in the book Notes to a Software Team Leader which I have just finished. The book contains important techniques and… - [Be a Book Reviewer for 'Notes to a Software Team Leader'](https://osherove.com/blog/2013/6/20/be-a-book-reviewer-for-notes-to-a-software-team-leader.md) (2013-06-20): Want a free book ? Willing to review it on Amazon when it is published? Willing to give me valueble feedback? Fill out this form. Loading&#8230; - [Fix: PhantomJs, YSlow and Loadspeed load pages very slowly on windows machines](https://osherove.com/blog/2013/6/10/fix-phantomjs-yslow-and-loadspeed-load-pages-very-slowly-on.md) (2013-06-10): I was running into this problem. We were using phantomjs to run speed tests and weight tests for our web pages, and it all worked well on my machine. Then it worked VERY slowly (five times slower!) on the build agent.… - [Creativity in Coding - Does TDD Leave Room For it?](https://osherove.com/blog/2013/6/3/creativity-in-coding-does-tdd-leave-room-for-it.md) (2013-06-03): “Is there any room left for creativity in coding?” That’s hilarious. Let’s reach back in time… As poets focus more on rhyme schemes and meter, where is there room for creativity? Now they have this new-fangled thing… - [Video: A Second Look At Unit Testing](https://osherove.com/videos/2013/5/17/video-a-second-look-at-unit-testing.md) (2013-05-16): While at the msswit Conference in Ukraine, I spoke about all the things I had learned since the first version of my art of unit testing book . lots. You can see the video here. - [Video: Beautiful Builds](https://osherove.com/videos/2013/5/17/video-beautiful-builds.md) (2013-05-16): While at the MSSwit conference in Ukraine, I spoke about Beautiful Builds , and common patterns you can use to make your builds more coherent and maintainable. You can view the video here. - [Two workshops on Beautiful Builds, Refactoring and Design Skills](https://osherove.com/blog/2013/4/6/two-workshops-on-beautiful-builds-and-refactoring-and-design.md) (2013-04-06): This April, I will be in Kyiv, speaking at the Microsoft SWIT conference . I will also be holding two separate workshops before the conference. Two very NEW workshops that I have only done once or twice before. The… - [Which Specification Style Framework in .NET are you using?](https://osherove.com/blog/2013/3/29/which-specification-style-framework-in-net-are-you-using.md) (2013-03-29): Which one are you using? - [Poll> Which IoC frameworks Are you actively using in your current .NET projects?](https://osherove.com/blog/2013/3/25/pollgt-which-ioc-frameworks-are-you-actively-using-in-your-c.md) (2013-03-25): Which ones do you actively use? - [My first talk in Norwegian - Beautiful Builds](https://osherove.com/blog/2013/3/15/my-first-talk-in-norwegian-beautiful-builds.md) (2013-03-15): I promised myself that I would be able to do a full talk in norweign about six months after coming here. A couple of days ago at the internal Bouvet One conference, I got the chance, as I was standing in for a friend… - [Refactoring String Calculator with SOLID Principles in Mind - Examples Needed](https://osherove.com/blog/2013/3/6/refactoring-string-calculator-with-solid-principles-in-mind.md) (2013-03-06): Given this simple implementation of string calculator , mid way, how would you refactor this, based on SOLID principles ? and how far would you go? Please note what principles you think this code breaks, and why it is… - [Books vs. Kids](https://osherove.com/blog/2013/3/4/books-vs-kids.md) (2013-03-04): Books vs. Kids: a post by Roy Osherove. - [When I fight with legacy code](https://osherove.com/blog/2013/2/8/when-i-fight-with-legacy-code.md) (2013-02-08): When I consult on Sharepoint Projects When I see sharepoint designers at work When I pair with someone and we rock - [Mac: keyboard shortcut to enable and disable function keys](https://osherove.com/blog/2013/1/22/mac-keyboard-shortcut-to-enable-and-disable-function-keys.md) (2013-01-22): I work a lot with visual studio in a virtual machine, and on a mac, the function keys just get in the way of debugging and what not. I needed a way to quickly enable and disable the mac function keys. Found my solution… - [Elastic, Agile, Adaptive Leadership Workshop, January 31 2013, Oslo](https://osherove.com/blog/2013/1/16/elastic-agile-adaptive-leadership-workshop-january-31-2013-o.md) (2013-01-16): This January, the 31st, I will be giving a two day Workshop for team leaders, architects, and scrum masters, titled Elastic, Agile, Adaptive Leadership. If you’re interested in joining, please contact me directly (or… - [When I have to support an old vb6 project](https://osherove.com/blog/2013/1/12/when-i-have-to-support-an-old-vb6-project.md) (2013-01-12): When I try to read Prolog When devops do their thing The first time I logged into realtime chat in a BBS every company party ever When everything works beautifully - [Upcoming Courses (C#, Java, Ruby, IOS, MVC and more) (Q1 2013)](https://osherove.com/blog/2013/1/11/upcoming-courses-c-java-ruby-ios-mvc-and-more-q1-2013.md) (2013-01-11): So, I have lots of new courses that I am doing in Oslo . If you are interested, or if you want me to teach these course in your place, or organize public courses like these in your country, ping me directly by emailing… ### More posts from 2012 - [Build Patterns: Script Injection](https://osherove.com/blog/2012/12/30/build-patterns-script-injection.md) (2012-12-30): I am slowly realizing that perhaps my concepts for the build book could be better serving as reusable patterns for creating builds, solving specific problems. This is a test to see how well this idea holds up in… - [When they tell me I have to use MSBuild to automate our CI Process](https://osherove.com/blog/2012/12/12/when-they-tell-me-i-have-to-use-msbuild-to-automate-our-ci-p.md) (2012-12-12): When they tell me I have to use MSBuild to automate our CI Process When I see a terminal keyboard junkie doing their thing When we are starting a brand new green field project When they approve the budget for… - [The Three Values of a Good Isolation Framework](https://osherove.com/blog/2012/10/14/the-three-values-of-a-good-isolation-framework.md) (2012-10-14): I’m working on the 2nd edition of “ The Art of Unit Testing ” and this is one of the topics I plan to cover. A good isolation framework(mocking framework… but that is a horrible name for it. the word mock is overloaded… - [Polite Code, News Articles, And Pulling Out Early](https://osherove.com/blog/2012/9/21/polite-code-news-articles-and-pulling-out-early.md) (2012-09-21): Christine Gorman gave a talk about getting rid of unneeded complexity in code, but removing ideas many of us (me too) find make it more readable. I couldn’t explain why I disagreed with her, except that I like the… - [Readable, Maintainable, Trustworthy Unit Tests in Java](https://osherove.com/blog/2012/9/17/readable-maintainable-trustworthy-unit-tests-in-java.md) (2012-09-17): While in JavaZone, I adapted my talk about good unit tests to Java. Here you go - [protip: How to have a very good panel debate at your conference](https://osherove.com/blog/2012/9/14/protip-how-to-have-a-very-good-panel-debate-at-your-conferen.md) (2012-09-14): I was part of this panel about “making the programming pain stop” along with Kevlin Henney and others. It was such fun! One of the things that helped it succeed was the fact that Johannes (the panel moderator) asked the… - [Video: Discussing Evolutionary Value Delivery with Tom Gilb](https://osherove.com/blog/2012/9/14/video-discussing-evolutionary-value-delivery-with-tom-gilb.md) (2012-09-14): During JavaZone yesterday in Oslo, I got to meet with Tom Gilb and his son - Kai. I don’t know much about what they teach relating to Evolutionary Value Delivery (EVO for short) so i was intrigued to find out more. Tom… - [Update on foocafe courses in sweden (tdd and elastic leadership)](https://osherove.com/blog/2012/9/7/update-on-foocafe-courses-in-sweden-tdd-and-elastic-leadersh.md) (2012-09-06): My links were wrong. here are the links for the sweden courses Stockholm, October 19, 2012 - Advanced TDD Subjects in .NET Malmo, October 15, 2012 - Advanced TDD Subjects in .NET Stockholm, November 2. 2012 - Essential… - [A view of the books in my bouvet office](https://osherove.com/blog/2012/9/6/a-view-of-the-books-in-my-bouvet-office.md) (2012-09-06): Here’s a short video I took reviewing the old and new books in my bouvet shared office. Its interesting to look at, just like watching the rings on a cut down tree. You can tell what things the team is interested in (or… - [Book me for consulting,courses in Norway and scandinavia - I live here now](https://osherove.com/blog/2012/9/5/book-me-for-consultingcourses-in-norway-and-scandinavia-i-li.md) (2012-09-05): Hi Folks. My move to Norway is now almost complete (should be getting my id number mid September.) Bærum Kummune, I am in you. Yeah. And I have the norwegian keyboard to prøve it. Now that I’m here I plan to do a lot… - [HOW TO: Find the temp videos screenflow makes when uploading to vimeo and youtube](https://osherove.com/blog/2012/6/26/how-to-find-the-temp-videos-screenflow-makes-when-uploading.md) (2012-06-25): I was finishing up a screenflow recording and immediately pressed the “upload to youtube” button. then I realized that the auto-saved video file will have to be re-generated if I ever wanted to upload it to another… - [Video: (part 1) Building a Go Game Engine with TDD and Pair Programming](https://osherove.com/videos/2012/6/25/video-part-1-building-a-go-game-engine-with-tdd-and-pair-pro.md) (2012-06-24): A few days ago, a guy named Raymond Lim sent me an email with some questions about how to do something with TDD. He has been working on creating a game engine for “Go” game, for practice. I thought it would make for a… - [The courses I'll be teaching while living in scandinavia](https://osherove.com/blog/2012/6/17/the-courses-ill-be-teaching-while-living-in-scandinavia.md) (2012-06-17): If you answer this poll, I’ll get a better chance of knowing which courses i should do and which I shouldn’t waste my time on. Help me figure this out. And feel free to suggest courses you’d like to see me teach! - [Free for private leadership and TDD training June and July](https://osherove.com/blog/2012/6/12/free-for-private-leadership-and-tdd-training-june-and-july.md) (2012-06-12): With all the work going on with our move to norway this august, I managed to not book anything for end of june, and all through july. If anyone wants me to come over and bring some TDD sense , or leadership techniques… - [Zen of python revisited with code samples](https://osherove.com/blog/2012/5/16/zen-of-python-revisited-with-code-samples.md) (2012-05-15): I really like reading this code . I will look deeper into it this week. Many of the “zen” ideas here speak to me on the unit test level. - [\[Video\] Vimming - All about change](https://osherove.com/blog/2012/5/8/video-vimming-all-about-change.md) (2012-05-08): here’s my second attempt Play video vimming - All About Change - [\[Video\] Vimming - Hello World with vim](https://osherove.com/blog/2012/5/7/video-vimming-hello-world-with-vim.md) (2012-05-07): My first foray into trying to teach vim related stuff. hope you like it. Play video vimming - Hello World with vim - [Annual Poll: Which Isolation framework do you use if any?](https://osherove.com/blog/2012/5/4/annual-poll-which-isolation-framework-do-you-use-if-any.md) (2012-05-04): Please answer the following: - [Hire me for a day or two in Oslo, in June](https://osherove.com/blog/2012/5/3/hire-me-for-a-day-or-two-in-oslo-in-june.md) (2012-05-03): During the week of NDC, I will be spending some of my time doing absolutely nothing but look at apartments (we’re planning to move to Norway in august, given all works out and I find a good place to work). If anyone… - [The Zen of python should be the zen of good unit testing](https://osherove.com/blog/2012/5/2/the-zen-of-python-should-be-the-zen-of-good-unit-testing.md) (2012-05-01): I’ve come across the “ zen of python ”. A list of siple rules for style and thought. Overall, I’ve heard that python folks like to be more explicit, and I always felt it’s a good idea. but when I came across the full… - [NEW: Ruby podcast in hebrew](https://osherove.com/blog/2012/5/2/new-ruby-podcast-in-hebrew-1.md) (2012-05-01): A few of the members of the ruby underground in israel have started a ruby related podcast in the hebrew language. It’s pretty awesome - go have a listen to the first show about quality software . - [Looking for full time work in Norway](https://osherove.com/blog/2012/4/16/looking-for-full-time-work-in-norway.md) (2012-04-16): It’s decided. I want to live with my family in norway (unless some magical opportunity comes my way from Sweden!) for a few years and see what happens. It seems like a big place of opportunity and learning, and here in… - [New Book: Notes to a software team leader](https://osherove.com/blog/2012/2/28/new-book-notes-to-a-software-team-leader.md) (2012-02-28): I've started to write my upcoming book titled " Notes to a software team leader " (hat tip to Kevlin Henney for the name idea). The book will combine many of the subjects my 5whys blog addresses, plus notes collected… ### More posts from 2011 - [Help me pick a name for my new site - a search engine for keyboard shortcuts](https://osherove.com/blog/2011/12/5/help-me-pick-a-name-for-my-new-site-a-search-engine-for-keyb.md) (2011-12-05): I’m working on a new site that will be a search engine for keyboard shortuts, where you’d put in an app name and get all the shortcuts for it. But I’m not sure which name is best. help me decide, dear reader! - [Norway - Stavanger Elastic Leadership Class](https://osherove.com/blog/2011/11/29/norway-stavanger-elastic-leadership-class.md) (2011-11-29): This is very short notice, (which is why there is a surprise) - but During December 15-16, I’ll be doing my Elastic Leadership Course “Lead Better” in Stavanger, Norway. This course is for new and experienced software… - [My Suggested Talks for NDC 2012](https://osherove.com/blog/2011/11/23/my-suggested-talks-for-ndc-2012.md) (2011-11-23): Here’s the list I submitted to the powers that be for NDC 2012 . Most of these are new. soe are ‘refurbished’ with information I learned in the past year. I wonder which ones will go through.. 10 things every software… - [Effective Miscommunication](https://osherove.com/blog/2011/11/5/effective-miscommunication.md) (2011-11-05): My previous post was precieved by some people as an arrogant, self congratulatory public postering of someone who wrote me some praise. That was not the intended meaning of that post. It was about effective ways of… - ["This is not a question. Just a comment for you, Roy."](https://osherove.com/blog/2011/11/5/this-is-not-a-question-just-a-comment-for-you-roy.md) (2011-11-05): —————- My Name:: ***** My Email is:: ******* My Company: I’m interested in: Other I am located in : Sweden Message: Thanks for having videos publicly available. I am going to setup hands-on courses in using… - [What You Don't Know You Don't Know](https://osherove.com/blog/2011/10/21/what-you-dont-know-you-dont-know.md) (2011-10-21): I recently did a talk to a your crowd of israeli developers (it was in hebrew) about a stopic I’ve never spoken about before in a talk - The reasons for my leaving the .NET world for a year. You can see the video of… - [What You Don't Know You Don't Know (Hebrew)](https://osherove.com/videos/2011/10/19/what-you-dont-know-you-dont-know-hebrew.md) (2011-10-19): what_you_dont_know.mp4 In this video (which is in Hebrew) I talk to a crowd of young developers in Israel about the reasons for my leaving the .NET world - mostly - the idea of finding out the things you don’t know that… - [Want me to train or consult in your company during 2012?](https://osherove.com/blog/2011/9/19/want-me-to-train-or-consult-in-your-company-during-2012.md) (2011-09-19): I'm planning 2012 , as well as December of this year, so I'm looking for interesting places to host either my 3 or 5 day TDD master class in .NET, or a two day Software Team Leader Essential Skills (Elastic Leadership)… - [Agile Israel - Intro to Agile (Hebrew)](https://osherove.com/videos/2011/9/9/agile-israel-intro-to-agile-hebrew.md) (2011-09-09): During 2007 I did a talk at teh agile israel user group about introduction to agile development. It’s in hebrew, and there isn’t a lot of hebrew video material on this yet. Also, I didn’t want this to get lost in the… - [One Day Software Team Leader Skills Class - Lund, Sweden](https://osherove.com/blog/2011/9/2/one-day-software-team-leader-skills-class-lund-sweden.md) (2011-09-02): FYI - this course has been CANCELED I will be doing a one day class for new and experienced software team leaders about important skills you need to "make" it as a team leader. In the class you will learn how to… - [One day dive into Unit Testing and TDD in .NET - Lund, Sweden](https://osherove.com/blog/2011/9/2/one-day-dive-into-unit-testing-and-tdd-in-net-lund-sweden.md) (2011-09-02): FYI - this course has been CANCELED This September, I will be doing a one day TDD and unit testing class in Lund. The class is it for both people who have never written a unit test before and people who have. The first… - [A week in Stockholm - Open for consulting or training](https://osherove.com/blog/2011/9/1/a-week-in-stockholm-open-for-consulting-or-training.md) (2011-09-01): I'll be spending the week of September 12-16 in Stockholm, Sweden. While i'm there I will be doing consulting gigs and possibly training. If you're interested in me coming to your company for a day or two and teach Test… - [TDD in .NET Day 3 Learnings](https://osherove.com/blog/2011/8/12/tdd-in-net-day-3-learnings.md) (2011-08-12): 3rd day of TDD in .net in Oslo is over, and here are some of the subjects covered: Moq FakeitEasy Extract & Override refactoring Typemock Doing Test Reviews on other people's tests Approaching Legacy Code - [TDD in .NET course - Day 2 Learnings](https://osherove.com/blog/2011/8/11/tdd-in-net-course-day-2-learnings.md) (2011-08-11): Just finished day two od TDD in .NET course here in oslo. here are the list of things we covered today: Test that an even gets fired Understand the boundaries of a unit of work (more than a single method) mocks vs.… - [Elastic Team Leadership Class in Oslo - August 2011](https://osherove.com/blog/2011/8/2/elastic-team-leadership-class-in-oslo-august-2011.md) (2011-08-02): I'm holding a two day Elastic Team Leadership class in Oslo next week - (right before my 3 day TDD course) This class is about everything that Agile methodologies do not teach you Have you ever come across these… - [TDD course in Oslo - August 2011](https://osherove.com/blog/2011/8/2/tdd-course-in-oslo-august-2011.md) (2011-08-02): I will be starting a 3 day TDD in .NET course in Oslo next week (wed.). The course covers everything from zero - so I assume you have no unit testing experience whatsoever. Then it gets you al the way to *highly… - [How not to do TDD](https://osherove.com/blog/2011/7/29/how-not-to-do-tdd.md) (2011-07-28): Update : It seems that much further down in the book, they do cover a more minimalist and simplistic approach to make the tests pass . I was too quick to write, and did not look further in the book. I would recommend… - [Ruby User Group: upcoming meeting on Ruby next week](https://osherove.com/blog/2011/7/8/ruby-user-group-upcoming-meeting-on-ruby-next-week.md) (2011-07-08): Hi all. Next week the Ruby Underground meeting is actually taking place in Microsoft in Herzliya. The topics of the meeting will be about Sinatra, and a glimpse of one developer's development environment and what tools… - [Agile Practitioners Israel Group Announced](https://osherove.com/blog/2011/6/9/agile-practitioners-israel-group-announced.md) (2011-06-09): Elad Sofer and Lior Fridman have created Agile Practitioners in Israel group. More details here , and you can sign up for the upcoming event here . I'm happy to see that people are picking up what ever shreds of the…