Posts Tagged “personal”


Two more years and one programming language later


Two more years have passed. Last time both Noam and Alma were still just playing with BabySmash. These days however Noam is taking his first steps into programming:
Noam writing python, Alma playing BabySmash

Two years and one baby later


two years ago, my Noam (who was 1y and a wee back then) got caught on camera doing this:


And now, Alma (8 months) is doing that:


smaller screen, shorter hair, the rest is quite the same

Awesome companies


During the last year I got to meet several companies. With some I just had a chat over coffee or during a rock concert, with some ran a couple of consulting sessions, for some I did some coding work, with some I discussed maters of process management and agile adoption. With some I interviewed for various fulltime roles, and from some I got very attractive offers.

I’d like to point out a few of the most awesome ones. If you ever get a chance to work with them or for them – you won’t be wrong to take it. Asana ( Suffice to say that interviewing with them was the single most difficult interview I have ever gone through. And I have been through some hairy interviews in my time. Just browse their team page, full of successful startup veterans, to understand their capacity for execution, and deep understanding of how a web company is to be build on business, tech and team spirit aspects. Bizzabo ( I wish they were around back when I ran IDCC ‘09. The team is super focused, and their product is great. Take a couple of minutes off this page, and go read Commerce Sciences ( If having Ron Gross there was not enough, they recently added Oren Ellenbogen to their impressive cast. I had the immense pleasure to work with these guys for quite some time. You’ll be able to learn a ton just by being around them. If you’re not following their tweeters and blogs, go do that right now. And if all that is still not enough, the founders have long, successful history in e-commerce and global-scale web services. E-commerce analysis suddenly sounds super interesting! Gogobot ( With an incredible ability to deliver top-quality features in virtually no-time, focus on customers, tons of talent and super fun team spirit, this gang is re-inventing social travel planning. If you’re travelling somewhere without using the service you are missing out. If you are looking for great team to work with in the Bay area – give them a call. Windward ( This was a refreshing change from all the social-web-mobile-2.0 related companies. these guys are back to basics – solving some actual problems for actual customers with actual money. Forget the long tail – we’re talking big-time clients. They are also dealing with some seriously complex data-crunching, and non-trivial tech challenges. The management crew are extremely professional, experienced and friendly. I spent a truly remarkable month with them, and I’m sure anyone who will be working with them would feel the same. Yotpo ( I think that Tomer and Omri have one of the best age:matureness ratio in the business. They also appear to be able to crack down the social e-commerce formula into a compelling business model. YouSites ( A really unique atmosphere. Working from an old villa in the relaxed Rehovot suburb, with home-cocked food and pets running around. Their sunlit garden is one of the best meeting rooms I’ve been to. With a passionate and experienced team, they got a nice thing going there. Keep an eye on them.

I might have forgotten a few others (sorry) – it has been a crazy year after all

Some of these places are hiring. If you are awesome (you probably are if you’re reading my blog) and want an introduction – ping me.

A year of changes


Just one year ago, I was working for Sears Israel, living in Raanana and being generally happy with my life.

Since then I left my job, met, consulted and worked with a few awesome startups, and finally joined Microsoft and moved with my family to Redmond, WA.

And had a new baby.

So tons of things were going on, lets see if I can capture some thoughts on them:

Central Israel vs. Seattle suburbs

Life here on the “east-side” are much more relaxed. The amazingscenery, the very low honk/minutes-on-road ratio, switching from an 60 years old tiny apartment to a 20 years old house, cool, drizzly weather vs the hot and moist middle east. We do miss our families very much, but we also have much richer social lives here, with many friends, and plenty of play-dates and outdoor activities for the kids.

Startups vs. Corporate

I’ve been working with and for startups for many years now. The move to a ~100,000 strong company is a huge change. Half a year in, and I am still struggling to adapt to the big-company way of thinking. There is also a big sense of responsibility knowing that my work now will soon be affecting a serious amount of customers globally, a thing that in many cases in startup world is not entirely true.

Startups are also often times between financially promising, and money-down-the-drain. Microsoft is in business for many decades, and still manages to net tons of money every year, and every year do so more than the last one.

I also need to re-prove myself. When I was employed full-time in the past I was holding top positions such as Architect, Dev manager, and was offered a few VP R&D and CTO jobs. As a busy consulted, I way actually paid to come in and voice my opinions out loud. In corporate land I started much lower, and now need to work very hard to get my voice heard. Especially when I am surrounded with a really talented and experienced bunch of people. I see it as a challenge and as an opportunity to grow and learn. Being a Lion’s tail beats Wolf’s head almost any day of the year. And it is full of Lions around here.

One kid vs. two

Given W[n]<=>work required for n kids, and F[n]<=>fun gained from n kids, it is sad that

F[n+1] = F[n] * 2, while W[n+1] = W[n] 2

Totally worth it though.

Settling down It has been a heck of a year, with so many things to do that it kept me busy from engaging the OSS and dev community activities as I did in the past. I only gave two short tech presentations (on git and on NoSQL data stores), did very little OSS contributions, and wrote no blog posts for seven months! Now that the whirlwind slowed down, I find myself getting back to these things. I already have tons of things to write about, and a few session proposals to send out to conferences.

As far as this blog goes - the year of changes has just ended, and the year of new and exciting (at least for me) content begins. Stay tuned.

Do you know a web architect


Following the worst job description ever, I’ve received an email I got today from a recruitment company, titles the same as this post.

Here is a (translated from Hebrew, structural and grammar weirdness transferred along) copy of the content:

We have an opening that might interest you or one of your friends.


And this is how I responded to that email:

Dear XYZ

If you’d be able to supply answers to these following questions:

then I’d be able to say if this would interest me or my friends. Without that, there’s just not enough data to know

Blah blah clarification Blah blah


You’re missing the point After writing my last the post, I kind-of learned that not everyone got my point correctly. For e.g., someone who did not get my point right, took it personally perhaps, and started bashing me and the .NET crowd (as if I was a formal representative or something) over at Google plus.

Anyway My points:- I don’t like people from one discipline bash other people and disciplines

**according to the comments on my previous post, and after talking to a few people that whished to remain anonymous, I am not the only one.

Not my points:- Technology X is better than Y. It is about flavors and personal preferences. Productivity and quality has lots more to do with the actual team than the technology choices.

**I’ve been asked to name the persons and/or groups where I was getting the offensive vibe, but I am not in the business of name calling and finger pointing. The people who are offensive already know that, and they are also very unlikely to change anyway so it won’t do any good.

My personal take Maybe I am too offensive myself. Perhaps I should have titled that last post something like “The Ruby train is sometimes a bit too loud”. Changing it now will hurt the context though, but I will try to be more aware.

Back to being friends everyone?

The Ruby train goes blah blah blah


In reply to the latest and greatest article about how the ruby train is all choo choo. This started as a comment on the said post, but grew too large into justifying a post here.

A couple of pre-words on me in case you got here from that article and you’re not familiar with me.

I’ve been doing web related and (other kinds of) software development for quite a few years. Just in the last couple of years I did so with Java, .NET, Ruby, Javascript (and to a lesser extent also with python and php, even perl). I actually moved from “fat-client” to web with .NET (circa 2003) and discovered rails later (but quite early – @mid 2006) so I fall into the “.NET devs discovering rails” group. My machine of choice (actually bought it myself) is Macbook Pro. You cannot put any fanboy hat on my head.

And I think that Rails is a cool platform, I really do.

And I like the ruby language. A lot.

BUThere is my take on the takeaways from that article:

  1. RoR is mainstream in Silicon Valley startup scene. Even non devs (business guys and VC types) that I talked with were all chanting about “how ruby is cool and all startups must use rails”. It is far from mainstream on any corporate environment, at least the ones I’ve been in contact with. Why? I have a idea but there isn’t enough room here for that. But it is getting a huge traction outside of early adopters circles (along with other disruptive stuff like node.js, tornado, lift etc

  2. Rails is more enjoyable from crappy vanilla .NET environments. But vanilla rails (with no gems) is much worse. Now if you use modern tools and libraries on .net (monorail/fubo/nancy/windsor/nhibernate/etc.) then .NET is at least as “enjoyable” if not more, since you do not have to deal with crap-load of conflicting, questionable-quality gems. As for productivity - this is a whole different story - it is more about the developer’s abilities and mindset than about the tools he’s using. I know COBOL devs that are super productive, and Rails guys that are destructive at best. Perhaps others think differently than I do, but you should scrap the “every, single, one” bit (or at least the undo the colouring). I might just be that one, and I know more than a few more.

  3. Far from being a fanboy MS (with regards to server dev tools) has loads to offer. C# is wildly more advanced and feature rich than any other mainstream language, and the upcoming things in c#5 making it even better. And the BCL of .NET is better and richer than perhaps any other built-in class library today in orders of magnitude. The VM , typesystem and core runtime are very robust and filled with features. Real features, like the advanced concurrency controls etc. So, true that Rails comes with nice sugars that appeal to some people, but once you need to do more than “read from DB render to html” you start hitting walls. While on the other end, if you start with a solid baseline (like .NET’s or Java’s) you are far less likely to get stuck, and it is easy to find the right sugar to sparkle on-top (there are countless snappy MVC frameworks for Java and .NET, and language choices - even compatible rubies, but far more options). Java 7 got dynamic dispatch, and if Java 8 will at last get closures (and if it will be supported in the runtime and not in the compiler) then we are looking also at good news from Oracle-land.Btw - if stagnation is the issue - when would the rubyists finally give up on 1.8, and on the hybrid 1.9, and get a proper 2.0?

  4. Almost every professional I know that is involved in .NET, is not identifying himself as a .NET developer, but as a Software Developer, and they are open for ideas, and they are not religious about their tools. On the other hand, apart from one, all of the Rails related professionals I know of are behaving as if they are the warrior-priests of DHH, spreading arrogance (we saw the light - you will too!, my life were so bad, but now it’s all flowers and barbecue, blah blah blah) FUD and loudness everywhere (whitespace is crap! static typing is crap! tabs instead of spaces? crap!). And they ALL identify themselves as “Rails developers”.

It is much worse than what the Java community used to be before they started opening up for stuff like groovy, scala and clojure.

My takeaways:

  1. As a developer – always strive to be better. Know the tools of the trade. Know the tradeoffs of the tools.

  2. As a person – always strive to be better. Know that the are (usually) no black-and-white decisions. know the tradeoffs.

Baby smash on big screen


Noam is just crazy about computers …  thx Scott for BabySmash






CDRW driven nostalgia–WinFX edition


I was looking in my box-with-old-cds to find a CDRW to burn some podcast episodes (I have a CD based MP3 player in my car) and I stumbled upon an old CDRW. Looking into the content before erasing, and I found there some early beta installations for WinFX – that is what .NET 3.0 used to be called. These files were from mid-2006.


so, 4 and something years ago I was all excited about the new, shiny things from MS. The farthest away I went was into some use of the Boo language, and starting with some .NET OSS hacking (AspView, and Castle in general)

These days I find myself using Ruby (go Sinatra), Python (for AppEngine), and even god forbid Java. git it is my SCM of choice, MongoDB and MySql for data storage, etc.

I still find the .NET environment most productive, with a high quality core and superb language support, but I certainly have expanded my horizons to other areas.


I wonder what my areas of interests would look like on 2014 …

See you in the Netherlands?


I am going to be spending the next weekend and the following week in the Netherlands.


So, if you know of a cool user group, geek get-together or whatnot, please let  me know. Everything that has to do with web development (in any FW out there), large-scale systems, distributed data stores, agile processes, team leadership and management, ALM tools.



This is also a good opportunity if you are looking into a short consultation gig (a few hours) in one of the aforementioned areas, especially with MVC frameworks for .NET, client side JS/CSS guidance, setting up CI environment, DVCS usage and more. Give me a shout on email or through a comment on the blog (that will be kept private if you wish to)



I will mostly be in the area of Utrecht and Amsterdam, however I’ll have a leased car so I guess that everywhere within a reasonable driving range is acceptable.

My Birthday gift for myself


I had tremendous fun coordinating work on the project, and I enjoy working with Monorail on my day job. I just do not have neither the time nor the attention to give the project anymore, and John is a much better fit, as he proved over the last few months with his efforts for the project.


So I treated myself to a one demanding hobby less.


I hope it will help me post more regularly now.



Interesting enough, I plan to do a few posts about recent performance issues I tackled in AspView. So I guess my MR days really aren’t over yet :)



I’ve just found out that my I’m being *quoted in a book !


the book is Testing ASP.NET Web Applications (Wrox Programmer to Programmer) from Ben Hall, a great guy I know from the first UK ALT.NET conf, and another guy, who happens to blog quite rarely, but I do like his

So You Think You’re A Web Developer series. Plus anyone investing time in Web apps testing is a worthy man, not to mention a guy that invests time in educating people into testing their web apps.



The next big thing in software development


Take a look at the following piece of code

namespace Egozi
	class Baby
		public static void Main()
			var noam = new Baby(DateTime.Parse(&quot;2009/08/21 20:00 +3&quot;), 2.750, &quot;Noam&quot;);
			while (true) noam.RelaxOnDaddy();
		public Baby(DateTime birthdate, double initialWeight, string name)
			Birthdate = birthdate;
			InitialWeight = initialWeight;
			Name = name;
		public ulong GetComputedCutenessLevel()
			return Name == &quot;Noam&quot;
				? ulong.MaxValue
				: GetRandomNumber(1, ulong.MaxValue);
		public DateTime Birthdate { get; private set; }

		public double InitialWeight { get; private set; }
		public string Name { get; private set; }	

		public void RelaxOnDaddy() { }
		public void Poo() { }
		public void Pee() { }

		public void Burp() { }

		public void Accept(IVisitorWithPresents visitorWithPresents)


Not too exciting on it’s own, right?


Now take a look at on the binary format:



and here after call to RelaxOnDaddy():




super sweet :)


The little dude even acted as the resident super model during the “how to bathe your baby” session at the nursery, acting as if he was a Michael Phelps grade in Water Handling.


So if you were wondering why my general availability was not at it’s best lately, this tiny little miracle who crashed into our life just short of three days ago, is the reason.


Lots of experiences to have, lots of things to learn and explore. All very complicated. The amount of baby related stuff and things out there is mind blowing. And everything should be used just a wee bit differently then the next thing, and every nurse gives you a different advice with a 100% certainty. It is kind of like your regular OSS usergroup of choice actually.

So without any proper location to RTFM from, I guess it would come down to a mix of instincts, best judgement, and a good portion of trials and errors.



I’m popping back offline now to attend my amazing wife who took care of the whole thing, and our cute little wonder.


UPDATE (25/08): fixed a copy&paste type, added Main, added name

My blog is moving to a new server


Some interruptions etc. might occur, so please be patient. I hope it’ll be allright soon enough.


Please do not leave any comments meanwhile as they might not make it through to the new server.

If you can see this post then …


I hope that the new server will prove more stable.

Off to vacation


I like the ‘smell’ of the airport.

I’ll be spending the following week on a snowboard, and the guesthouse I’ll be at has no internet access, so if you see me ignore emails, castle’s usergroups, facebook ‘join XYZ group’ invitations etc., don’t take it personally.

Except the facebook thing, I rarely join any group, cause or application. only friends requests (from people I know), thank you.

I might have a little time to post some more while waiting in the airport lounge, but don’t count on that.

Delving deeper


Took me a little while to set my mind on it, but after doing remote contracting for a year and a half I’ve had enough of pyjama-driven work, and I started looking for brilliant teams to become part of.

In the past I always worked at places where I was, in technical terms at least, the leader. At most, I shared that position with Oren Ellenbogen at SQLink for a while, but at the end of the day I always had the ability to veto on technological issues, and people were following my advice on seniority basis.

While contracting, I worked with this amazing start-up company in the UK. They have very experienced and smart people on boards, and it was the first time I found that I really need to fight to get my voice heard. It would be an understatement to say that the satisfaction from knowing this kind of team has accepted my proposals at times is enormous. That’s because I was challenged, and needed to lead a change in a place I’m not the CTO/Team-leader of. When at later point we did things according to my suggested (and accepted) design, and was happy to work with it as it was easier and more fun, I was very proud of my work.

One more aspect of my past employment is that it was always in small to small-ish teams. at most I was a part of about 10 people R&D department.

So what I was looking for now was a company with a large(r) R&D team, with great people with whom I can learn together. A place that is being managed well, that is fun to work for, and that will challenge my skills and push me to learn and evolve.

Being the software geek that I am for so many years, and also active in the development community, I am blessed with friends who are holding various positions in R&D departments around the country. This gave me the opportunity to come in to amazing companies, and go through very interesting interviews (that goes way beyond abstract-class-vs-interface, testing my design, coding and testing skills, my knowledge in software architecture and problem-solving skills).

At the end I picked up It’s acoolstartupcompanywithembarrassinglysmartpeople and I’m honoured to be in their ranks.

Oh, and they are also using AspView in production from day one … ;)

To new beginnings,

Ken the devler

Single and looking


explanation (before the wife kills me): I have some free time in the coming months, so I’m looking for interesting consulting gigs.

So, if you’re in a company / dev team, and looking for some help with Castle (Windsor, MonoRail), NHibernate, or general information system design and architecture advices or training, setting up build and test environments, or any other of the things I rant about in this blog, then I’m your guy.

I also do web-client ninja work, dancing the crazy css/html/javascript tango (jQuery: yes, Ms-Ajax: no)

I currently live in Israel, but I’m fine with going abroad for short terms if you’re an off-shore client.

you can contact me at “”

Where is Ayende?


I mean, see how dependant on rss I became.

I’m doing my blog reading through google reader and I’m quite happy with it. One of the first blogs I was subscribed to is Ayende’s. This dude usually post about 100 articles a day, so it’s a safe bet to see him in the Unread list when I fire up reader to help my morning coffee down the throat.

At 17 Sep. I stopped finding new posts there, knowing Oren personally, I knew he was doing some off-shore consulting gigs and I figured he had little time for that.

I even remember a certain known figure in the .NET OSS world who have asked me to try and visit Oren in his home, as this dude was worried due to the unlikely low profile on his blog for some time …

I did reach him then by email and that was enough to prove he’s alive and well, but I didn’t think about asking him on the matter of the silence on the blog feed.

Today I opened up his blog to look at something in his blog’s layout and the first thing that I noticed was that there’s a new layout. Then I found that there are many new posts, which I did not get to my reader.

Apparently what happened is that the feed is being burned via feedburner now, and I was looking at his old Dasblog based feed endpoint, and the redirect from there is probably no more in place.

Lesson I’ve learned: pop onto my favourite bloggers’ sites from time to time.

New design to my search page


I’ve revisited my google-ajax-enabled search page (at


It can still look better of course, but it is much better than the former one.

Now I need to revisit my blog’s design a wee bit …

btw, I use this page as the home page on all my browsers. It makes googling much faster and productive, and you are all invited to use it for your search needs. I try to keep it as lightweight as possible so it would load as fast as possible. Suggestions etc. are always welcome.

Post post number 300


Without even noticing, I’ve passed the 300th post on this blog this week.

As the first post was at 30th Jan 2006, it gives 305 posts over 31 months - that’s almost 10 per month. And I started off very slow …

ALT.NET Israel is flickred


Prepare to be surprised …

How Did I Get Started In Software Development?


I’ve been tagged by Mike Hadlow (Great blog - subscribe to it now, what are you waiting for?)

Ok, let’s go.

How old were you when you first started in programming?

My dad is one the IT dinosaurs. He have been doing the Punched card dance from early stages of public sector computing in Israel, and I guess I must have inherited the passion for programming. Before I got six, he bought me a ZX-Spectrum, alongside some BASIC beginners book in Hebrew and threw me into the deep water.

After a few months of getting comfy with the language, I’ve learned to read English and got my first serious programming book, one the tried to teach things like code reuse using GOTO and GOSUB.

I also had to learn some Assembler as the ZX’s BASIC was pretty much limited.


What was your first programming language? BASIC, as noted above


What was the first real program you wrote? A simple yet effective word processing application, written in Turbo Pascal 5.5. I was about 16 then.

This word processor was for the sole purpose of aiding my older sister go through Law School. I needed a way to type and printing her seminars and there was no built in WP in MS-DOS but edlin.exe back then, and no Internet to download a WP from.

At 18 I wrote another program in Pascal, aimed at keeping track of membership payments for a local Bnei-Akiva Branch. I learned the hard way that building a DB engine by hand without any theoretical background, and without ever hearing about terms like “SQL”, “Relations”, “Transaction” and the like, is not a simple thing to do. By the time this application had enough features I have already left to recruit to the IDF, so it never got into production.


Then there was a gap of a few years during which I didn’t program until I was 24, and I needed to write my third and forth applications. They were in ACCESS, VBA and VB, written as part of my jobs in the army as a logistics officer. I needed a better inventory manager than the old MAGIC based that my unit had, and a better solution for keeping track of vacations utilisation of the staff.

There you go. Not only the first one, but the first four.

What languages have you used since you started programming?

What was your first professional programming gig?

After leaving the army, I taught myself C#, HTML and ASP.NET, registered as self employed and ran a few projects for a few clients. The first of which was a simple VBA based automation for an import/export dealer in the aviation industry. The application was automating the read of RFQ emails, looking up for matched data in their propriety Interbase driven DB, and then exported a report containing highly probable sale items. They liked it so much that they started adding features, and other business-helping apps. They still are a valued customer.

An interesting note here - the last time I have updated or fixed a bug on the first application was almost two years ago. And it’s still in daily use, so even though it’s coded in a way I’d call blasphemy today, with all the VB-ness scattered around, I still am very proud of this piece of code, as professionally it is rock solid, and not too difficult to maintain, and from business prospective it had a huge benefit for the client.

If you knew then what you know now, would you have started programming?

I would have started even earlier :)

If there is one thing you learned along the way that you would tell new developers, what would it be?

Be open to criticism. If you program alone, then try to share as much code with the community as you can, by participating in open source projects. The best place to learn is from your own mistakes, pointed out by others.

I can certainly testify on myself, that I’ve learned a lot more when I was part of teams where I was not THE tech leader, be it on paid gigs or on OSS.

What’s the most fun you’ve ever had programming? During University when I took “Introduction to Algorithms” (learning part I of “Introduction to Algorithms”) I had to build a Red-Black tree representation. Back then The only language I know well enough was VB, but I had write it in C++. I did know the basic syntax from my C background, and some vague knowledge of pointers and memory allocations, but that’s about it. The project was supposed to be written by a team of three, but I then decided that I had to learn C++ decently and write this alone, so I sat down for a long weekend, got myself a copy of the STL to learn by example, and produces a working generic RB-Tree implementation using Templates to allow generic keys in the tree.

When I sent it over to the other team members, all they had to do was to smoothen up the rough edges.

Again, it wasn’t very pretty, but I did prove a point to myself, with that little exercise.

Who am I calling out? In order to make the propagation of this topic even faster, I decided to tag 9 people (!):

Feedback please


One of the goals of this blog is for me to be able to get feedback from other people. Usually it means feedback regarding code I write, design decisions I make, and other technical stuff.

However one other goal is to improve my written English skills. Therefore I would be happy to accept any input regarding spelling, vocabulary and grammar mistakes. I won’t be offended, that’s a promise.

Unit Testing in PROLOG - take 2


I’ve refined my “unit testing framework” a bit, to make it less awkward.

the code:

test(Fact/Test):- current_predicate_under_test(Predicate), retractall(test_def(Predicate/Fact/Test)), assert(test_def(Predicate/Fact/Test)). setup_tests(Predicate) :- retractall(test_def(Predicate/_/_)), assert(current_predicate_under_test(Predicate)). end_setup_tests:- retractall(current_predicate_under_test(_)). run_tests :- dynamic(tests_stats/2), bagof(P/Tests, bagof((Fact/Test), test_def(P/Fact/Test), Tests), TestsPerPredicate), run_tests(TestsPerPredicate, Passed/Failed), write_tests_summary(Passed/Failed). run_tests(TestsTestsPerPredicate, TotalPassed/TotalFailed) :- run_tests(TestsTestsPerPredicate, 0/0, TotalPassed/TotalFailed). run_tests([], Passed/Failed, Passed/Failed):-!. 
run_tests([P/Tests|Rest], Passed/Failed, TotalPassed/TotalFailed):- write('testing '), write(P),  foreach_test(Tests, PassedInPredicate/FailedInPredicate), write(' passed:'), write(PassedInPredicate), (FailedInPredicate > 0, write(' failed:'), write(FailedInPredicate) ; true), nl, Passed1 is Passed + PassedInPredicate, Failed1 is Failed + FailedInPredicate, run_tests(Rest, Passed1/Failed1, TotalPassed/TotalFailed). foreach_test(Tests, Passed/Failed):- foreach_test(Tests, 0/0, Passed/Failed). foreach_test([], Passed/Failed, Passed/Failed):-!. foreach_test([Fact/Test|Rest], Passed/Failed, NewPassed/NewFailed):- assert((run_test:-Test)), ( run_test, !, NextPassed is Passed + 1, NextFailed is Failed ; NextFailed is Failed + 1, NextPassed is Passed, write('FAIL: '), write(Fact), nl ), retract((run_test:-Test)), foreach_test(Rest, NextPassed/NextFailed, NewPassed/NewFailed). write_tests_summary(Passed/0) :- !, nl, write(Passed), write(' tests passed :)'), nl. write_tests_summary(Passed/Failed) :- nl, write(Passed), write(' tests passed, however'), nl, write(Failed), write(' tests failed :('), nl. reset_all_tests:- retractall(test_def(_/_/_)).

the usage:

:- setup_tests('conc/3'). 
:- test('empty and empty returns empty'/( conc([], [], []))). 
:- test('empty and nonempty returns L2'/( conc([], [1,2], [1,2]))). 
:- test('nonempty and empty returns L1'/( conc([1,2], [], [1,2]))). 
:- test('nonempty and nonempty returns L1 concatenated with L2'/( conc([1,2], [3,4], [1,2,3,4]))). 
:- end_setup_tests.

my current test output:

| ?- run_tests.
testing conc/3 passed:4testing create_list/3 passed:2testing empty_pit/5 passed:1testing get_opposite_pit/2 passed:2testing in_range/2 passed:2testing is_in_range/2 passed:4testing put_seeds/5 passed:3 
18 tests passed :)yes

Unit testing in PROLOG


Finally I’m sitting down to be done with my Computer Science degree. I’ve been studying in the Israeli Open University starting 2003, while working full time and more. Over than two years ago I reached the point of having literally no time at all to finish it up, so I left it to be with only two final projects to complete, present and defend.

The first one is to write a simple AI enabled game (using depth delimited alpha-beta algorithm variation) , in PROLOG.

Back when I took that course, the whole paradigm was too strange to me. I’ve been doing procedural and OO coding for years, and the look of the programs just looked …. wrong.

Nowadays that I developed a lot of curiosity into declarative languages like Erlang and F#, (and being a much better and way more experienced developer) I can relate to that type of coding more easily.

So, dusting the rust of two year of not touching it at all, I sat down today to start working on that project (delivery is next month), I started with writing down a small helper for running unit tests on my code.

Ain’t pretty, but it serves both the need to test my code, and the need to re-learn the language:

run_tests :- 
  dynamic([ tests_passed/1, failing_tests/1, total_tests_passed/1, total_failing_tests/1 ]), 
  bagof( (Module/Predicate, Tests),  
    tests(Module/Predicate, Tests),  
  len(TotalFailedAtEnd, TotalFailedAtEndCount), 
  write('Passed: '), 
  write(' Failed: '), 
  (TotalFailedAtEndCount> 0, write_fails(TotalFailedAtEnd) ; write('Alles Gut'), nl). 

run_tests_definitions([]) :- 

run_tests_definitions([(Module/Predicate, Tests)|T]) :- 
  write('module: '), 
  write(' predicate: '), 
  write(' ... '), 
  len(Failed, FailedCount), 
  write('Passed: '), 
  write(' Failed: '), 
  NewTotalPassed is TotalPassed + Passed, 
  conc(Failed, TotalFailed, NewTotalFailed), 

write_fails([]) :-
write_fails([H|T]) :-  
  write(' failed'), 

run_tests([]) :- 

run_tests([H|T]) :- 

run_test(Test) :- 
  NewX is X + 1, assert(tests_passed(NewX)).

run_test(Test) :- 
  NewX = [Test|X], 
% Asserts

assert_all_members_equal_to([], _).
assert_all_members_equal_to([H|T], H) :- 
  assert_all_members_equal_to(T, H). 

this code is allowing me to define my tests like the following:

tests(moves/change_list, [ 

change_list__add_first__works :- 
  L = [1,1,1],
  change_list(L, L1, 1, add), 
  L1 = [2,1,1]. 
change_list__add_middle__works :- 
  L = [1,1,1],
  change_list(L, L1, 2, add), 
  L1 = [1,2,1].

invoking the tests is as simple as the predicate:

:- run_tests.

and the current output from my project is:

module: utils predicate: in_range ... Passed: 4 Failed: 0
module: utils predicate: create_list ... Passed: 2 Failed: 0
module: moves predicate: change_list ... Passed: 6 Failed: 0
module: moves predicate: move ... Passed: 1 Failed: 0
module: moves predicate: step ... Passed: 1 Failed: 1
summary:Passed: 14 Failed: 1
step__when_ends_within_same_player_pits__works failed


Ahm. A failing test …. back to work I guess.

btw, The game I am implementing is Kalah.

AspView Nostalgia


I’ve just stumbled upon an old post on this very blog.

In the post I actually quote a comment I have left on Ayende’s blog. The nice excerpt from there:

Maybe having a ViewEngine that’s use c# or VB.NET instead of boo (not the WebForm ViewEngine which suck, but somthing similar to Brail)

This was on 26/10/2006 …

Three weeks later (on 14/11/2006) I’ve announced AspView, after starting working with the first bits for my employer at the time, SQLink

Two days later I have made a first release public.

on 01/12/2006 I was granted a Write access to castle/contrib - AspView started gaining some recognition from the community

The rest is history. You can follow on the AspView tag here

What’s there to come? stay tuned and find out

The Tooth Ferry


Hadn’t been writing a lot lately, even though exciting things were happening, especially in the AspView front (stay tuned).

Why, you ask?

Well, I’ll tell you why.

Had a tooth implant on Sunday, and the antibiotics and pain killers were distracting me. To the point of loosing time over extremely stupid mistakes.

Anyway, I hope to fell better next week, and to have some spare time for writing some interesting stuff.

50% up in four months


Wow, it feels like yesterday.

On last December, the feedburner’s subscribers count on this blog has first reached 200.

Two weeks ago I’ve noticed that:


Silly, useless, but pats a certain shoulder nonetheless.

Happy Birthday to ... ME


30, that is.

I’ve been snatched to birthday dinners all week, like it’s not enough that Im on the most full-of-work time of my life. Non-urgent things (like improving AspView or taking a shower) got pushed aside. Just kidding, AspView is important enough …

Sarit took me on a surprise vacation.

Mt. Hermon, view from Kefar Giladi:

Mt. Hermon, view from Kefar Giladi

Grotto at Rosh-Hanikra:Grotto in Rosh-Hanikra

That’s me at the Zavitan pools next to the waterfall:

אני בזויתן 2

As for “next year resolutions” - hmm, I did not put much thought in that so I’m just scribbling:

  1. Complete the bachelor’s degree. High time I did that;

  2. Give at least three talks. I really enjoy sharing knowledge, and it also pushes me to know more on things I consider myself proficient in. First talk is already scheduled for 14 May, at “The Developers Group” meeting on Microsoft Victoria, London UK. I hope there’d more to come;

  3. Delve into Silverlight 2.0;

  4. Learn F#;

  5. Increase my NHibernate skills;

  6. Find time to contribute to Linq For NHibernate;

  7. Continue pushing Castle forward. The whole stack. It’s just great;

  8. Do more sports (cycling and/or swimming);

Email Problem and an Apology


I’m terribly sorry, but it seam that I’ve had a problem with my mail server, so during the last two month I did not receive any mail sent to my mail address on this domain.

I was able to access some of those now, and I’m going over the messages, so if you were waiting for a response regarding any Castle / AspView / Other issue, I hope Ill get in contact soon.

Dreaming in Code


I guess we are all crazy.

I swear that this post’s content is true:

I certainly remember a few occurrences of going to sleep with some coding/design problem or idea (of late - SQL Query Generator), just to wake up with a solution. I also tend to wake up from disturbing dreams, with some of those being just the regular night horrors, but at times they involve irresolvable build errors, ASP.NET yellow screens, and TortoiseSVN irritating noises.

Anyone like to share his Coding Dreams?

I'm Back Online


Last Thursday I was informed by the organizers of UK conference that they have managed to squeeze me in, so I immediatly booked a flight to London, and have attendet.

I was superb, and I’ve written a few posts, but since I was not online during the last few days I had no chance of publishing ‘em. Hopefully they’ll get during the next few days.

A lot have also been piling up on my MonoRail and AspView “desktops” so I appreciate the patience of the users, and I promise to do my best to keep up with the requests and patches being sent to me …

What Drives Me to Excel


Not MS-Excel.

As if it was not enough that wife has graduated her B.A. with honors, now she has just given a notice that she is about to gain honors on her M.A. studies, too.

And as if that’s not enough, during the course of the studies, she has been employed at 80%-100%.

And now she starts looking at doing a Ph.D.

Now I feel the urge to complete my damn Bachelor’s (and I’m around 84, so no honors for me), and learn so much, and code that much so I’d become a greatgood better-than-I-am-now developer, and just to try and keep up.

That’s Wife holding a Cat:Wife holding a Cat

Me, not holding by liqueur:Not holding my liquer

Reaching 200 - a Useless Stat That Makes Me Proud


When I’ve started using feedburner (mid Sep.) there were about 160 subscribers.


200 readers

Next to super-blogers like Scott Hanselman or even local blog heros like Ayende, its nothing.

But it’s mine.

I can also see a very (obvious) correlation between the amount of code posts per month and the growth in popularity.

That mean that people likes reading code samples, and that they find it useful, so I’d do my best to make more of these, should time permit.

DevTeach Vancouver - I won't be there, but you should


I wish I had the time (and cash) to go there, as great speakers would host there.

Anyway - if I would’ve got there, I’d go for:


New Look


sneak peek (for those who read this through a feed reader):

Sneak peek

cool huh?

Comments Are Back


So you can tell me what you think on the new design, or any other thing (like what you think on the new changes to AspView, how you like working with the Castle stack,how great AspView is, how good looking I am, and any other kind of constructive criticism).

The uncool wedding invitee, or, blogging on an old PDA


It’s time to reveal one of my major handicaps, that didn’t make it to my “five things you didn’t know about me” list:

I can’t dance.I hate to dance.I won’t dance.

Therefore: I am getting bored at weddings.

Yesterday at a wedding party of a good friend of ours, I found myself sitting at the table by myself, with only my old PDA to accompany me.

So I wrotea post about the new release of AspView.

I would’ve written that one, too, however the PDA went low on battery, so I’ve had to find something else to do.

That was, drawing some domain design concepts for a portion of my new project at Music Glue, not on napkins, but rather on the back side of my checkbook …

When we went home, the happy groom and bride hugged and thanked Sarit who was dancing all night like a party animal, and then gave me The Look. Yep, That one. That say “You’d better leave a fine present as no happiness came from your’s tonight”.

It was a craic*


Just been back from a few days in Ireland, where I went with Sarit for a vacation, and for getting to a clearer state of mind. At least on that level it proved to be very productive,as I came back with more than a few solutions to problems I’ve been facing ,and even some new ideas for expanding the line of servicesthat we, at Music Glue, can provide.

Just so you’d understand how muse-ful can Ireland be:

Waterfall at Wicklow


View from Valetia Island

(All pictures were taken on a Canon S3 IS Camera - a perfect thing for a photo-newbie like me)

I’ll upload some more pictures in the next days. Actually, I guess it is high time I’ll get me a proper image sharing service subscription.

Any recommendation of a free (or low cost) ones?

I guess my priorities would be:

High availability;


Easy to use (allow multiple uploads, allow easy post-upload tagging);

More pictures to come …

*Craic: Irish word for fun/enjoyment that has been brought into the English language. usu. when mixed with alcohol and/or music. source:

Presenting you: the Egozimpsons


It seams that everybodyis makingtheir Simpsons themed avatars lately.

So, I present you with the Egozi family’s Simpson pic.

I was sorry that we could not make Simpsons Cats for our kitties, so we settled for putting cats on our shirts …


See if you can guess who’s who.

Liked it? Grab yourself one, right here

Summing up the last two and a half years - Bye bye SQLink


It was absolutely brilliant.

I started to work for SQLink on late December 2005 as a Team Leader in the Web Projects Department.

Colleaged by Oren Ellenbogen, it has been a pleasure. Our department head, Moti, was doing the best he can to create a very likeable working environment, and all our developers were enjoing a workplace that enabled them to learn a lot. Oren and I were directing all kinds of sessions with the developers, showing them stuff about .NET and the CLR, from “what are nullables”, through “What does the ‘using’ reserved word mean”, to “how the GC is actually working”.

We have built this great website called GotFriends, that gave the company a great new source for recruiting new employees, and actually is ground breaking in the Israeli HR world. Building that site, we’ve used many technologies to make it work smoothly with the company’s inner legacy HR system, and with the aid of the SQL master Moran Benisty, it even worked in an efficient way, and coded in a maintainable manner.

Mixing WebForms and Monorail, CodeSmith based BLL with ActiveRecord/NH, ASP.NET WebServices (asmx) and POX/JSON services, it was a very fun thing to work on, in addition to the business benefit to the company.

However, a few months ago the Web Project Department was closed, and the company started a new R&D team, leadedby Elad, the company’s VP of Business Development. We were two developers (Moran and I), and we worked on several initiatives that the CEO Tamir, and Elad, were cooking all the time. Those projects wereall Community-Driven-So-Called-Web-2.0-Kinda-Websites. It was a real delight, and I got the chance to learn a lot about the business side of running an Internet related initiative, as both Tamir and Elad are experienced and intelligent, and the process of refining ideas, with those two, was a real treat.

They also gave me the freedom to make all the technology decisions, and they’ve had enough faith in me to allow me run the projects using MonoRail and AspView, and running Castle ActiveRecord for DB access. Actually, most of the drive behind creating AspView was actually driven by Elad and Tamir, as I’ve promised to do the best I can to make sure that future additions to the team won’t need to learn Boo / Velocity in addition to learn the Monorail MVC and hql.

Which actually worked great. Moran has left the team about two months ago, and we’ve brought three new guys along (Ili, Ofir and last but not least, Itay), and they have seam to easily get control of all the “funky” technologies I’ve put in use in our projects.

Sadly enough, one of the initiatives has stalled just before airing, due to some business decisions. Then we started a new one, and in about 3 weeks we’ve had a working proof-of-concept, and I really hope that the site will air during August. I give the credit to the team, and to the use of MonoRail/ActiveRecord, as it’s such agile and suits highly-changing-environment, as most web initiatives are.

A point of interest: This very blog’s engine was actually a beta testing for some of the stuff we were using on our last project.

That’s it folks. I wish the SQLink family all the best, and I’m going to keep an eye on the cool stuff the R&D team is doing, and hopefully I’ll report on their success (which would be an AspView success too …) right here on my blog.

Things I Learned About Software


Following Scott’s post, here are my listings (is four okay?):

Fourthings I learned about software (in University, not College):

  1. If you’ll help a friend with a red-black tree implementation in C++, he’d eventually help you with an assembler precompiler in C.

  2. Software Engineering is the only course where you can write a fully working program, with no compile warnings, with all tests green, and still get 60 out of a 100. (I’m sorry that my printing method was named ToString, while supposedly in ADA I should name itPut to keep convention with the language)

  3. The good looking gals usually do not attend CS classes. If they do, they take DB Basics and DBMS implementations.

  4. Watefall / BUFD is the ONLY WAY to manage software projects. I’ve had a 6 points course that dealt almost only on that. And they gave me 10% off the grade for doing a final design document without the proper fonts and colors.

Three things I learned about software while not in the university:

  1. A code you write alone is bad. At least get someone to do code-review, and at best, pair program, or open-source your code so it’d get looked at.

  2. You can either eat Pizzas,or have a loot of sugar-loaded-coffe mugs. If you do both, you’ll get fat. (that ofcourse, unless you are a gal who attended a non DB related CS course, and then you’re screwed anyway).

  3. O.O. languages is not the only way to go. Static typing is not always the best thing. Javascipt is actually a programming language.

  4. Scrum / XP / TDD / IoC / DI /MVC / UnitOfWork

New feature to the blog - a blogroll


just added a blogroll.

To the DB, to the Domain, to the controller and to the view.

Took me (all in all) 30 minutes, including all the coding, CSS-ing, uploading to the webserver, setting up the DB table on the hosted server, adding a few entries, clearing the browser’s cache, and viewing it.

ah, and committing changes to Google code.

All of that was made in the Budapest Airport cafeteria, while waiting for my flight home (was a great trip. Photos, though not many of them, will be posted later on).

Rest assure that the DB access code is tested, and that the calls to the DB and to the cached data from the Controller and View are all typed.

I’d like to thank NHibernate, Castle and AspView (hey - that’s me !), who made this possible.

I bet Ayende would have done it in 20 …

A new feature on my blog: Comments feed


Just added.

Commited to the repository, too (hosted at google code).

Look for the link on each post’s footer.

Things my blog is missing


Since this blog is running on an engine that I wrote (available on Google code site, here), it lack some features that more mature blog engines already have. (the other engines lacks the combined power of ActiveRecord/MonoRail/AspView …)

So, that’s currently my list:

  1. Blogroll, for obvious reasons.

  2. Email alert for me when anyone posts a comment for one of my posts.

  3. Comments feed (via ATOM).


  1. Email subscriptions for new posts, or new comments on specific posts.

  2. I have a problem with the font. I should fix the CSS but the Internet connection here (I’m at a Budapest hotel) is quite poor. Will be fixed next week.


Any other suggestions?

note that I do not intent on implementing Pingbacks and Trackbacks, since those were littering my blog in the past.

I Work for money


Ofir (a team member) has just sent me this:

It reminded me how much I miss my cats (I’m in Budapest for two days now).

My blog is running on ActiveRecord-MonoRail-AspView


So long dasBlog. It was great to have you, but it’s time to move on.

After a lot of work, I am proud to announce that my blog is running on MonoRail, using AspView for the views, and ActiveRecord to do DB stuff.

Not too fancy codewise, since I have very little spare time.

Most of the time spent on the blog upgrade process was on:

  1. Exporting the data from the “old” blog, and

  2. making a decent markup and design for the new one.

oh. and 3. letting WindowsLiveWriter do the edits, since I wasn’t in the mood to create a backoffice.

I’ll blog more about the process, and I’ll make the source available.

Please leave your comments here about the overall look’n’feel. There must be tons of bugs and I want your feedback.

The forth Israeli Bloggers Dinner


Arranged by Omer, the dinner will take place at 21/02/2007.

If you come - please leave a comment at his post, or here.

Bon Apetit

Long time no posting. Must write.


I haven’t written much lately, since I was:

a. Learning for my final exam so I’d get my Bachelor’s Degree at this decade.b. Under a lot of preassure at work, since we have a cool web2.0 thingie approaching a public beta real soon (will be followed).c.Sneasing my heart out, darn flew.d.Got into a new project at my personal business. This one is driven by Castle’s ActiveRecord+MonoRail+AspView, and due to the client’s request it’ll use Access as the backend DB, and that would be a first-time-ActiveRecord/access for me. I still hope to convince him to at-least go for embedded FireBird.

So, stay tuned to some experiences with AspView, and hopefully in about a month you’ll havetwo MonoRail/AspView driven websites out in the open. I am excited. Are you?

My first CodeProject article is up


I’ve posted an article to CodeProject about building my Google Ajax Search EnabledHomepage.

So, go there, read it, comment it, vote for it, tell your friends about it, print it and glue it to your forehead, whatever you think is appropriate.

Unless you didn’t like it. In that case, you shouldn’t do anything. why bother ? :)

Google AJAX Search API and My New Homepage


I have loaded a new homepage, and used a little of the Google AJAX Search API to make it interesting. Actually, I’m using it now as my browser’s default homepage, instead of

Not only that, but I have documented the process of making it, and have sent it to codeproject, to be published, as my first contribution there, in hope for more to come.

So, please leave your impressions, eiether here or in the codeproject article (I’ll post the addresss once it will be up).



So, I’ve been tagged.

Actually, it was more than a week ago. Since I am not much of a writer, it takes me a lot of effort to write non-technical stuff. I’ve worked on a “5 things” post on notepad, and mistakenly closed it without saving. It took me while to recover (myself, not the file) and gather the courage to redo this post.

So, with no further ado, here are 5 thing you didn’t know about me, nor will you probably remember tomorrow.

  1. I grew up in a religious family. I even learn a few months in a Yeshiva. I used to like (and was quite good) the studies of “Talmud” and “Halacha” (the basis for Jewish laws) since those involve strict logic methods, and much resembles the way you prove mathematical theorems.

  2. Before I was programming professionally, I was in the IDF. I attended the IAF flight course for a while, then went through combat training in the infantry forces until my knees almost fell apart, and I found myself doingpaperwork. Later on I moved to the Logistics force, andbecame expert in Warehouse Management, and small scale HR management.

3.Before I was in the army, I was a musician. I own a great acoustic guitar (by Takamine), two sound modules (Korg and Roland), an electric guitar (Washburn), two Multi-Effect modules for guitar (Boss and Zoom), a synth (Ensoniq), two dedicated sound-cards (hoontech/Yamaha and an old SBLive Premium), Shure mics. I ran a full featured MIDI recording studio, and produced playbacks for people who wanted demos for the radio. I have also did musical direction for song contests, of the religious youth movement “Bnei Akiva”. But I cannot read notes.

  1. When I grew up I was afraid of animals. Of any kind. Even kittens. Now I live with three ex-stray cats and they sleep with me. Actually, they fight and I try to sleep … I’ll flickr some photos of them sometime. One of them play “fetch” like a dog. When I throw one of his toys, he runs to it, take it in his mouth, and bring it to me to throw again. The second is a beautiful cat who acts like a lady, and the third is blind from birth, but rules the house easily.

  2. I have been coding since I was 5. really. My father have bought me a ZX-80 and a bunch of BASIC books, and I went CAREZY about it. I remember that when I was about 7 I coded a simple Space Invaders mock and invited two of my classmates to play with me. however, then I came to learn the importance of QA, since the game was very buggy and the friends went to play hide-and-seek while I tried to debug my spaghetti …

So those were 60 minutes, about Ken Egozi. The movie feature is due this summer ( …)

Eli Golovinsky, Dror Engel, Yosi Taguri, Hamilton Verissimo de Oliveira, Omer van Kloeten, Roy Daya

Hey people - you have been tagged !

Follow @kenegozi