Here’s one by Jeremy Miller

Posted by RoyOsherove | 5 comment(s)
Filed under: ,

and another, by Michael.

Posted by RoyOsherove | 2 comment(s)
Filed under: ,

This one, by Ted Neward

Note: it starts about 10-15 minutes into the video (it is unedited)

 

Posted by RoyOsherove | 1 comment(s)
Filed under: ,

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 (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:

Posted by RoyOsherove | 6 comment(s)
Filed under:

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.
Posted by RoyOsherove | 14 comment(s)
Filed under:

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 but he came back with a quote I’d love to use and I’m really proud of:

Uncle Bob:

"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…

Posted by RoyOsherove | 10 comment(s)
Filed under: ,

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 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.

Posted by RoyOsherove | 29 comment(s)
Filed under:

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?

Including JQuery into the mix

  • I downloaded and extended the JQuery for Script# project. 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.
Posted by RoyOsherove | 16 comment(s)
Filed under: , ,

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..

 

for direct links:

8am GMT – https://www2.gotomeeting.com/register/813743274
And again at 3pm EDT: https://www2.gotomeeting.com/register/121909771

Posted by RoyOsherove | 3 comment(s)
Filed under:

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.

Posted by RoyOsherove | 1 comment(s)
Filed under: ,
More Posts « Previous page - Next page »