Monday, 20 December 2010

ALT.NET – 3rd Tool Evening

Another meeting of the Israeli ALT.NET group took place today. This session was divided into 5 parts of 20-30 minutes each describing a specific tool. Raven DB The first tool was presented by Oren Eini (aka Ayende), which demonstrated Raven DB - a none SQL DB. I wont say much about the tool there’s more than enough info to be found here. The session however was hilarious. During Oren talk the technical devil decided to unleash havoc. it started when the projector started to flicker unexplainably causing the viewers a mild headache. trying to reconnect the laptop change the cable didn’t work, Until at last a new projector was brought.However, at the offices the projector screen is wired to fold when the main projector is shut down, which...

Wednesday, 8 December 2010

Rapid-Dev - Release Update

A new version of Rapid-Dev is available for download. the exact details can be found here, however to summarize there are 2 main changes: Added support for VS 2010. Added a "Reset" ability to instruct the Add-in to execute ALL tests again. Also we fixed a major bug the add-in to crash during loading time. along with some other improvements to stability and capability. I would like to thank everyone who invested the time to check and evaluate the Add-in. Specifically to those who cooperated with us helping us improve. your effort is really appreciated especially in the light that things were not working for you at a...

Monday, 29 November 2010

So what is an Alpha Version?

Many software products I’ve used in the last years comes with these strange titles like Alpha/Beta/Release Candidate (RC)… But never once have I seen any definition of what those terms means. What’s the real difference between an RC and a final release? what should I expect of a beta version? should I even try to use an alpha version? When coming to release Rapid-Dev we knew that its is not fully ready, so we needed to do some thinking on the exact term to use. On one side the product is clearly not complete (check here for details). But is in in Alpha stage or beta stage? How can I tell the difference? Should we wait and make it more stable or are we waiting too much risking investing time and money in the wrong directions? For me the most important things is that the product will deliver...

Monday, 22 November 2010

Rapid-Dev - A Continuous Testing Add-in for VS2008

Over the last year I have been working on an Visual studio Add-in with the goal of minimizing the waiting time of developers for test execution. I'm happy to say that the Add-in has reached the state in which we would like to share it with other people and get feedback on how they find it. to get more information about you can either go to: The product web site Or the product Blog The site has a short demo of how the add-in fits into the VS development environment (and of course a download link), while the blog will be used to share the story of the product developme...

Tuesday, 9 November 2010

How not to Organize an Event

I've been running this blog for 2 years now and so far I have kept my ranting to a bear minimum. Today I'll make an exception (hopefully the last one). I got a distributing call a couple of days ago, telling me that unfortunately there are no more places at the Haifa Agile Tour event and "were sorry but please don't come". In itself not a big deal, I've missed more than one event dues to space limitations. Getting this calls just TWO days before the event (which I registered a few months ago) AFTER I got a a confirmation email saying "please come and here is where you park" is a just plain wrong. When you organize an event its ok to: Limit the amount of people that can register Its also ok to register everyone and later on confirming only part. It's even ok to delay the even...

Thursday, 16 September 2010

Things That Works – Time Management

Gil has posted two articles (Write down everything, Juggling multiple tasks) about techinques he uses for time management that works for him. Since i liked his title so much and since this is a problem im struggling with as well I thought to add. So first lets describe my context (a solution is not relevant without the context in which it works/failed). being an agile coach means that a large chunk of my time I’m dealing with a few regular clients, some small gigs that pops up and of course the staff related to marketing sales and logistics. I’m also doing some academicals research and have a couple of pet projects I try to advance. Attempt 1 I started out by using old plain memory power , and to say the truth most of the times that worked...

Wednesday, 15 September 2010

Software Craftsmanship – Meeting

Today I gave a session about how to write better code in the Israeli Software Craftsmanship group. While I didn’t manage to cover all the things i planned to do (I underestimated the time needed) I still manage to have a great time. For those who missed the session and for those who wish to get a second glimpse the slides they can be downloaded here....

Sunday, 15 August 2010

Running all Tests in Solution

MsTest is a nice testing framework. However it can be annoying from time to time. a while ago in the past I’ve blogged about the inability of this testing framework to execute all tests in a given sln file. Recently i had some time and I decided thats its about time that ill do something productive about this (instead of my usual complaining) and I’ve sat down to write a simple msbuild task that runs all tests in a solution. here is an example of a build script that uses this task: <UsingTask TaskName="RunAllTestsInSolution" AssemblyFile="RunAllTestsInSolution.dll" /> <PropertyGroup > <MSTestLocation>C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE</MSTestLocation> </PropertyGroup> <Target Name="UnitTestsWithCoverage"> <RunAllTestsInSolution ...

Friday, 6 August 2010

ALT .NET – Take 4

Start of next month The ALT.Net group will be having another unconference. This will take place on the first weekend of September. If you want to come, find out all the details and register using this link. (Exact place is yet to be decid...

Tracking Actual Hours On Tasks

Oren Ellenbogen has posted a couple of weeks ago “Why tracking actual hours is so imperative?”. Earlier this week I had a discussion with a VP R&D on exactly the same issues.. For me tracking hours on task is well useless. But here are some of the things they said on why it is important: When people know they are being tracked they become more committed and dedicated to their tasks. We need to report on people performance to higher management and this kind of information is crucial to understand how people perform. We track times in order to verify how much is done on sprint related tasks and how much time is invested on other things. We track time in order to make sure that people are working enough time. ...

Wednesday, 14 July 2010

Unlocker is Back

One of the most useful development tool I used in the past is Unlocker. this amazing tools is a life saver when you are developing using the file system and use may cause all kind of file handler to be left hanging. however about a couple of years ago (I think), when I was forced to switch to working on a 64 bit vista machine, I stopped using it since it didn't support that platform. You can imagine my happiness when found out this week in the Alt.NET tool evening that they now have a version that does support my configuration. Who said that conventions are a waste of ti...

Wednesday, 7 July 2010

ALT .NET – Second Tool Night

The Israeli ALT.NET group is having its second tool night Monday the next week on the WHEN? on Mon. 12/07, 18:00-21:00 WHERE? Sears offices, Ekershtein building A, HaMenofim 9 St, Herzeliyya Pituach CONTENT? The format is for 4-6 sessions, by different presenters. Test Lint - Roy Osherove Code Rush & Resharper - Uri Lavy Process Explorer - Ariel Raunstien NDepend - Dror Helper IronRuby - Shay Friedman And if there will be time I'll demo the Testify Wizard if you want to register and tell us you’re coming go here.Hope to see you all th...

Thursday, 17 June 2010

TDD .NET Course

Next Month I'll be giving a 3-day course in TDD. The course will take start on the 12/7 and take place at Sela house. If you want to join or know people who might be interested, just leave me a comment. More details about what will be covered you can refer to the course syllabus h...

Thursday, 27 May 2010

Importance of prioritization

Knowing to prioritize is a necessary skill. when you open windows live update which claims to have 1 more important update selected and you see that the update name is Games for Windows - Live V3.3 You kind of think that someone is missing something....

Design is contextual

i once wrote about the fact that there is no perfect and absolute design approach/strategy. To me design always depends upon the context of the system it is developed for and it should evolve along with the system. Furthermore, I believe design decision should also be based on the context of the people involved i.e. the development team. Meaning that a good design for a given system in one team might not be appropriate for a different team working on the SAME system To understand the previous statement, we need to first consider the main goal in software design. Not what makes good design but what we would expect a good design to do for us, or why is design important. For me a good system design is one that will minimize both the system maintenance cost and the cost of of developing new...

Wednesday, 26 May 2010

Israel Craftsmanship – First meeting

Software craftsmanship is something that naturally speaks to me, so I couldn’t miss the chance to meet other people sharing the same passion. Today the first meeting of the Israeli Craftsmanship group arranged by Uri Lavy was held at the offices of PicScout. the meeting itself was more of a get to know gathering an Uri gave a short summary of what does software craftsmanship, why is it important and what will be the focus of the group. All and all it was a very nice overview session which didn’t go very deep but held many promises for more to come. The nice thing about it was the surprisingly large number of participants. The sitting space allocated by PicScout was completely filled and people spilled in all directions. It seems that future sessions will require more spa...

Monday, 24 May 2010

Starting TDD – Conclusion

How do I start TDD? is a question I’ve been asked too many times. Unlike many I don’t believe that in order to start you need the entire team approval. In this series I’ve described a few situation one might find himself in and offered some ideas on how to approach them. Although each developer has its own context i hope you can find some resemblance in the described cases and find the ideas useful. Since this is what I’m doing for a living this days, I would love to hear about your way on the TDD road and specifically on how you started and what were the initial experience. last in a previous post i was asked by Daniel the following: So if a single developer on a team is driving the design of his code by TDD, do you really think it would work? The code is probably going to be different...

Sunday, 23 May 2010

Starting TDD (Part 6)

if you are really lucky you will find yourself joining an team which already practice TDD: New developer joining a team doing TDD You are just starting a new job (maybe in a new company). You have heard all about how the team is doing Agile (Scrum/XP) and how the tests are written before the code (TDD). In fact you are nervously waiting to start doing all those wonderful things. Take a breath. Joining such a team is not an easy switch. If this is your first time doing TDD (and Agile). It is going to be kind of a shock, working in an agile team is different in many aspects TDD is just one of them. It can take some time to make the needed adjustment. I myself have not fully experienced this, but helping other pass through the transition, I have learned that it can be a frustrating process,...

Starting TDD (Part 5)

With some luck, one day, the place you are working in will decide it want to fully adopt TDD. On that day you might find yourself in the following scenario: A lone developer in charge of implementing TDD The team/ manager have considered TDD, they chose to evaluate it and decided that its a good idea. the decision as made and in fact most of the team is quite happy with the change. However, since its a busy time they want to approach the subject with some care and have chosen you to start the ball rolling. that is you are expected to lead the transition for your team first by doing it yourself and then by helping the rest adopt the methodology. The steps in this scenario are very similar to the one described in Part 4 the focus however is to gather as much real hands experience the fastest...

Sunday, 16 May 2010

Showing GoogleTests/JUnit Results in CC.Net

In a Place I’m working in, we needed to integrate the results from tests running in the C++ googleTest framework into the team build machine which is running CC.Net. It appears that GoogleTest can output its result into a standard JUnit xml format, however I couldn’t locate a proper XSL that will transform the results into a nice report in the CC.Net Dashboard. The following link points to the resulting xsl file that will create a nice looking report from googleTest output. Instruct googletest (using the –gtest_output) to write its result into an xml. Update the ccnet.config file to merge the resulting file into the CC.Net build report. Put the supplied xsl into the webdashboard/xsl directory of the cc.net installation. Download the xsl from this link. Update dashboard.config...

Thursday, 13 May 2010

Starting TDD (Part 4)

In some cases the idea of TDD is seen as a promising idea by the organization. lets consider the following A Lone Developer in charge of evaluating TDD You talked with your manager and thinks TDD might be a very good idea. in fact he has given you a green light to evaluate the approach. most likely other team members are also in favor of checking this out all are waiting for your conclusions. In this context the plan of action is very similar to the previous scenario. The difference here is that you are expected to do a more thorough job, and you are expected to show result in a given timeframe. Therefore, you still need to pass the learning phase, you also need to setup a CI Server and pick out the tools before starting. Time boxing the learning phase will be a good idea, while you still...

Wednesday, 12 May 2010

Starting TDD (Part 3)

In the previous post I’ve talked how a even in the most hostile environment one can do things that will help on the road for becoming a better programmer. fortunately however the scenario described in the previous post is quite rare and in most cases things are not as bad. The following is probably a more reasonable scenario A lone Developer in an indifferent organization You discussed TDD with your boss and while he is not against it, he doesn’t see enough value in it . Most likely his reaction went along the lines of: Yes, automated unit tests are great but … On the other side, you generally get enough freedom as long as you get the job done. other team members also think TDD an interesting concept, but again no one has yet made any move. Start Learning If you find yourself...

Monday, 10 May 2010

Starting TDD (Part 2)

In my previous post I explained that you don’t need the entire team in order to start TDD. So lets see some options for the lone programmer. The question of where to start depends upon the context you find yourself in. For example lets consider the following: A lone programmer in a hostile organization You are a team member (or a team lead), you tried running TDD through the team but they feel its stupid, in fact they are strongly against it. If that’s not enough your manager also think TDD is a total waste of time and is closely monitoring to make sure you are focusing on writing production code only. And the worst thing is that the organization is a strict one, no tool can be used without going through the proper channels. Yes this is as worst as it can get and there is not much you...

Starting TDD (part 1)

One of the most common question I encounter is how to start with TDD. Usually the questions is formed as how do I get my team to pick up TDD. There are many answers to this, and in fact it really depends on the specific context (more on this later) but one thing I do know. You don’t need the entire team A popular mistake is to think that a lone developer can’t do TDD and you need entire team do it together. This contradict the fact that TDD is a solitary practice i.e. you can do it all by yourself. Think about it, don’t you write code alone? TDD is a development methodology, its an exercise in producing high quality code, in that aspect its not different then doing low level design or writing clean code. Do you need the rest of your team to design properly in order to produce good design...

Thursday, 6 May 2010

Using CollectionAssert of MSTest

Here is a nice trick to apply when using CollectionAssert.AreEquivalent of MSTest. While the signature of the method is: (ICollection expected, ICollection actual) When using them in your code switch between the actual and expected. Pass your execution result as the first argument, and you expected collection as the second. Doing this will give a better more informative error message in during failures. Lets see an example, I have a test which ends with this: var actual = CrapAnalyzer.CreateCrapReport("", "");var expected = new Dictionary<string, double>();expected["MyClass.Method1"] = 1.34;expected["MyClass.Method2"] = 1.22;expected["MyClass.Method3"] = 5;CollectionAssert.AreEquivalent ( expected as ICollection, actual as ICollection );When run as is I get the following:CollectionAssert.AreEquivalent...

Wednesday, 28 April 2010

The things alcohol make you do

A consultant and a developer went to a bar..... And after a few drinks they got into a stupid discussion on how bad programmers are. One said that most programmer will look at a class and if they will think that they will only need a single instance of that class in their system they will instinctively make that class a Singleton. The other would not accept the fact that this can be. So who do you think is right and who is clearly mistaken? and while you're at it, can you tell who said what?...

Managing a one man project

Ken Egozi asked me to put an answer I gave on the Alt.Net mailing list so here goes. the thread started by someone asking for an online Gantt service and later evolved on how to manage a project without the use of a Gantt. the specific project is quite small - about 2 months total and will be done by a single person. however the client is pressured and want to be sure that it can be done by the specified target date. Here's what I wrote: If I were you I would start by: write down in a list all the things need to be done (from the point of view of the client). not the technical 'how', just a list of things that define "what' needs to be done. after you have your list, sort it by priority and roughly estimate how long each item is going to take you. when you finish, take a step...

Monday, 26 April 2010

What Have we Learnt Today?

As usual during the Practical Scrum Course I’m giving. At the end of the first day I gather some feedback in the form of two questions I ask: What was the most surprising thing you have heard today? What is the most controversial thing you have heard today? here are the (unedited) answers I've got this time: The Most Surprising How much client expectation can effect estimations That in some projects a client can get a new version every couple of weeks New approach to estimations. That in 4 weeks we should finish X features (development, testing and documentation) and make them ready to be shipped. Its important to leave room for “exciters” features. The most controversial Less documentation if at all. Priority Poker technique Everyone using a waterfall...

JustMock – New Mocking Framework

The world of unit testing in .NET has recently become just a little more interesting. This month Telerik has announced the beta of their new JustMock mocking framework. The interesting thing about this framework, is that for the first time a new tool is actually trying to compete with the power of TypeMock’s Isolator framework. JustMock, like Isolator, is using the CLR profiler API in order to intercept method calls, allowing mocking of virtually any kind of class/method in your code. Including static methods, private methods, sealed classes and more. At a first glance JustMock API looks very similar to the AAA syntax of the Isolator tool, what I did notice howeverare two main differances: It appears that JustMock has two modes of operation. The standard mode, in which the profiler...

Sunday, 18 April 2010

Resetting Visual studio

Lately I've been working on some visual studio add-ins and plug-ins. I'm testing a few new ones and even playing around learning how to develop one of my own. Doing so did cause me to break the IDE leaving me in all sorts of weird situations. For example one time I messed it so bad I couldn't even create a new .NET project any more. For some reason the IDE insisted that I'll install some language tools (or something alike). In the past this got me into a reinstall process which in most cases does solve the problem however does take about an hour or so. Lately, I found that in most cases, issuing a reset command does in most cases solve the problem as well. So when having problems with VS-IDE before reinstalling try the following: Reset...

Wednesday, 14 April 2010

Don't be a Smart Ass Coder - Exercise in Rafctoring

Here's a piece of code I saw the other day. the code is for real and given after massive renaming to protect the guilty for ( int j = 0; j < 2; j ++ ){ if ( j == 0 ) pObject = Repository::GetInstance() ->GetObjectByHandle( pParent->GetPartAHandle()); else pObject = Repository::GetInstance() ->GetObjectByHandle( pParent->GetPartBAHandle()); if ( pObject ) { ObjectGeometry objectGeometry = pObject->GetGeometry(); for ( UINT i = 0; i < objectGeometry.NumRectangles(); i ++) { Rectangle* pRect = Repository::GetInstance() ->GetRectanglesByHandle( pObject->GetRectnagleHandle(i, 0)); if ( pRect ) m_Repository.DiscardRect( pRect->GetHandle() ); } m_Repository.DiscardSpread(...

Wednesday, 24 February 2010

Customer Support

A couple of days ago I had a good conversation with a friend of mine regarding customer support. Before going into the actual discussion, I want to say that I'm a very strong believer in actively engaging your customers/users on all level, specifically one of the competitive advantages any organization can develop is having great support. In fact there is no excuse for not having great support. You don't have to be a big company, you don't have to use any fancy management system, you don't need to hire special experts at doing so. All you need is the will to establish great support and the persistence to actually go and do that. Establishing great support, from my experience, has one of the biggest ROI in the organization. But back to the discussion, specifically what we talked about...

Wednesday, 17 February 2010

Flexible Planning

I sometimes have trouble with explaining to people the basic concept behind agile way of thought regarding project planning and management. Recently i cam across this gem, which as far as i could tell is unrelated to software but in my eyes does a marvelous job at explaining these ideas. just to make sure i understand, I’ll recap his main points. there are two way of planning and managing a project: the classical way – set your goals as the result you want to achieve, from those goes backward and derive the steps needed in order to achieve these goals.from these decide on your plan of action and than just try to follow that plan. Flexible Planning – goes a little different. you still start out by setting the goals as desired results. but instead of going backward from them, you start...

Experience of a beginner

One of the thing i really like about being a consultant, is that i get a chance experience first time reaction of people i’m consulting to the new practices. Sometimes these reaction are suspicion, fear and doubt. But in some (happy) cases when I’m able to bypass these, I see beginners takes these practices and leverage them in ways I only expect to see much farther down the line. so what am i talking about? Every programmer is given from time to time a task to change/fix sections of the code he is unfamiliar with. Over time I’ve noticed that there seem to be two basic approaches in this situation: Lets read and understand one approach taken by many when facing new code is to treat it as a text book to be understood. First the programmer will collect every piece of information he can get...

Thursday, 28 January 2010

Quick Unit Video

After several tries I managed to finally upload the Video from last night session. here is the link. (BTW the Lecture is in Hebrew)...

Wednesday, 27 January 2010

Alt.NET Israel - First tool night

Just came back from the first Alt.NET tool night and it was fun.all and all it was quite long. We had 6 short sessions (15-20) minutes along with a short break so it ended about 21:30. The sessions themselves were quite interesting and covered a wide variety of tools. the good news is that the entire session was filmed by Ohad Israeli and I'm sure he will upload it in a few days (probably tomorrow). I did however brought my own camcorder and managed to film the session about Quick Unit. For those of you who are not aware, Quick Unit is a new test authoring tool, which speed up the process of creating unit tests along with giving guidelines on how to write them properly. Unlike other test generation tool, the basic idea is not to try to...

Saturday, 23 January 2010

The one true way

in a recent post uncle bob talks about BDD and compare it to a table based style of test definition.Ii don’t want to talk about that. i do however want to comment on the following quote: My issue is not with the tools. My issue is with the idea that BDD is the only true way, and that all tests should be expressed in GWT format forever and ever amen. Lets revise this statement. In fact lets just remove the part where BDD is mention and we get: My issue is not with the tools. My issue is with the idea that _____ is the only true way How many times have you been in a discussion which went along these lines? how many blogs have you seen advocating for “single and best” solution? I myself have seen these kind too many times. I’ve seen it in the context of design, testing, code convention,...

Wednesday, 13 January 2010

Open House – Estimations&Planning – Take 2

It appears that many have found this topic interesting, therefore we shall be conducting this open house one more time. it will take place on Monday, February the first at Sela offices. This event requires registration so if you are interested just leave me a comment. If you wish to review the slides they can be found he...

Pages 381234 »

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Walgreens Printable Coupons