Ellenbogen found a new home…

Hey guys & gals,


After a few intense interviews and a great time talking about things I just love (code, code, code), I did it.  

I’m very proud to inform you that I’ve join Mercury as a programmer at the Performance Center product


 


 mercury_logo.gif


Mercury Performance Center™ is an enterprise-class application performance testing platform. It provides a complete, on-demand optimization solution for your application performance process, integrating load testing with diagnostics… Mercury Performance Center is the platform on which you can base your quality initiative. Mercury Performance Center delivers a 24×7, globally accessible and shareable pool of load testing resources to minimize the total cost of load testing in the enterprise 



Man, I’m so eager to start !!!

 

Growing organism – based on a real life story

While I was sitting in McDonald’s today, eating some junk-burger, I looked across my table and noticed a beautiful girl. Man, she was something else. A true beauty. I looked at her walking to another table, 20 fit from my table and sitting down. In front of her was a woman. Try to guess on your own, how does the woman look like:


a. A true super-hot-mama, even more beautiful than her daughter(?).
b. Good looking woman.
c. An OK woman.
d. My GOD! What a monster ?!


I’ll let you ponder for a few seconds…


Now that I’m sure you’ve got the right answer, have you ever thought about these questions:


In 15 years, will this beautiful girl will look like her mother(?) ?
Is there any chance that god is just messing with my head and she’ll be a fine woman even if her mother(?) is a….
What about statistics? Anyone knows what are the odds for a beautiful girl to become a beautiful woman ?


And of course, a sick question to recap this self-debate:


What does her father think about this situation ?


For some strange reason, I started to think about applications. I know, I’m sick, no doubt, but bare with me: How many small beautiful applications you developed, become a monstrous Enterprise Applications that are eating their programmers for breakfast ? Go back to my questions and replace the word “girl” with “small application” and the word “mother” with “Enterprise Application”. I think that this symptom of “growing organism” exists in developing real applications and we encounter it every day when we maintain legacy code or patching-up a system that shouldn’t survive the prototype phase.


I guess that just like in life, with good monitoring of our state and good activities, this transformation, this growing, could still be graceful.


I just wonder what are the odds…

 

Moving out from SQLink: Ellenbogen is looking for a new home.

Our SQLink R&D department was merged with Aman Computers.


At the moment, I’m still not sure if my place is at Aman although I’ve got a very nice offer from them and it seems like a very nice place to be at.


I’m looking for a place with (my ideal, I’m a realistic guy though):



  1. Many people who love coding, read about it, write about it and lecture about it.
  2. Building Enterprise applications.
  3. Using the newest technology (.Net 2.0+)
  4. A place that loves to teach his employees, to set goals and to push you through crises.
  5. Provide me the stage to show what I am capable of, where managers trying to bring out the best from their people.
  6. Organic teams. I would like to be one of a great team of people. I work better with other people around me and I love sharing my thoughts and teaching others.
  7. Agile methodologies.
If your place is looking for a passionate-for-code guy, someone that can upgrade the surrounding and contribute to the “team’s glue”, I would be glad if you’ll contact me via email (oren dot ellenbogen AT gmail dot com) so we can chat. In addition, I’m *interested* in relocation(especially in the US, I’ve got a citizenship(+visa\green-card)) as it always been a dream of mine.

 

So when is it a good time to develop infrastructures ?!

Today I sat with Moran after he “paged” me. He reviewed some code of one of our applications and he saw some things he thought he could make better. It was one of those classic “Hey! it should be a single service which every one of our applications will use!”. Step after step he made the required refactoring and some elegant API took shape. The improvement was in magnitude but I still thought that the API should be quite different before making it “public” and placing it in our infrastructure. But, and that’s a big but, the guys that develop the specific application needed the class and Moran was required to help in another project.


Should Moran take the opportunity to invest some time in this API? Should I help him through? We can talk about services, about providers, about extendability. We can play with code just to see how the API will look like. We can play with ideas, learn from each other, share our experience. We can share with others, we can send some quick “API tests” to get some feedbacks.


The process of developing the basics for our applications should be *long*. It should allow space for errors. The margins should be wide enough to let us experience, to learn from our mistakes, to discuss, to make Design Reviews, To Prototyping and throwing it all to the garbage 2 days later. It’s all OK.


But maybe this is not the right time for games. Maybe Moran should make it work somehow and carry on to the next project ? After all, the next project’s deadline is near(like always) and we need to join forces just to keep it up. Hey! we get paid to reach deadlines, to make it happen while keeping the quality at high level. The deadline is sacred. I truly believe that a good team will deliver on time even on the expense of features or well-known but low prioritized bugs.


On the one hand, I know that developing small to medium applications (0.5-2 human years) almost never allow you to invest the required amount of time in the basics. On the other hand, I also know that developing applications at work and infrastructures at home is not the answer for long terms. The process is short. No errors are allowed. There is almost no Design Reviews. Does it mean that the results of “home infrastructures” will be poor ? of course not, but the experience, the ability to break our requirements to programmer stories, to exchange ideas, to grow – is lost. The funniest part is that developing small application without a solid infrastructure turns into medium-large application. I guess it’s the egg-chicken paradox.


The best I can do is to tell the reality from my perspective. My reality is that there is never time(well, that depends on the urgency and the magnitude of the application), and keeping with my expectations makes me perform the global thinking and implementation at home. This is the only time that I actually “have the time”. Investing my time in developing some required infrastructure can save my guys at work a significant amount of work. Still, putting the effort on developing infrastructure during work hours will come on the expense of developing user stories, mentoring, guiding, consulting, talking with our customers. I guess that I still don’t know my place. I’m a good developer, I would like to think, and coding some really interesting delegates-based infrastructure or some neat OOP solution are those treats I can’t live without. Still, leading projects, make sure everything ticks and the quality is high is a challenge I love to face in my every-day work; Above all – seeing my guys getting to the next step and helping them in this journey is the main reason I’m doing what I’m doing. I want to be the best I can be for my team and yet make an influence in the way we work via developing some solid infrastructures. My gut feeling is that I need to get better. I feel that I can and should be a lot better as a manager and a programmer but It is still very hard for me to decide how and where to invest my time.


This issue keeps me awake at nights “lately”(last 6 months or so).



Where do you put the line ? How do you decide to invest your time in programming on the expense of managing and vice versa ? When do you think it’ss appropriate to invest additional hour\day\month to something you believe in ? Do you have some rules of thumb ?

 

Roee Daliyot makes the web a little easier and a lot more yummy!

It’s about time.


Our CTO, Roee Daliyot, is finally taking the time to write about the things he loves – GUI programming.


After writing about delegates & anonymous methods via JavaScript, he just released 2 must-see client-side controls for Drag&Drop and Clone&Drag&Drop.


So go on and pay him a visit.


Tell him I sent you.

 

People are funny

Well, I really don’t like writing posts like “Today I drank some Cola and wrote some pieces of code”, but this is just funny.


I checked my Referrers list and I saw some interesting searches which lead to my blog:


1. delegate oren (www.google.com) – 1st place


   I like that phrase. delegate oren. yep, you can ring me any time. honestly!
   I guess that my lecture on delegates & anonymous methods gave me some good google PR.


Before you’ll read the second one, sit down and don’t hold
any glass or anything sharp in your hands.


 


2. why is teched dying (www.google.com) – 6th place


   Don’t ask me why, don’t ask me how, Just laugh… That’s what I did.


   I have nothing but kind words to say about TechEd and you can even read some great posts here and here.

   Who is the psycho that wrote this phrase ?!?! ;-) 


3. teched 2006 party (www.google.com) – 14th place


   That’s better. great party !


update:


4. porno oren (http://search.msn.fr/) – 4th place


   Oh-My-God…


5. modal refresh why god why (www.google.com) – 1st place


   Yes god, why ? well, I have a solution for this one.

 

TechEd 2006. Day 2. What a day…

We got up at 07:05. It was hard as hell, but we had to put the effort for the team. After all, we came to hear some great lectures. No way in hell I’m gonna miss it.


Lessons from “the Factory floor” on How Microsoft does software engineering, by Amnon Horowitz


This lecture was nice- but I can’t say that Amnon did the maximum he could have done. I think that he could transfer the material with some more excitement, after all, he manage thousand of people! The lecture turned out to be pretty dry and somehow boring as Amnon started to answer some really not-important(I’ll be soft) questions and even to answer a question which was answered 5 minutes before. I hope that on his next lecture he could be a little tougher and ask some of the guys to ask him those questions during break time. Enough bitching, there were 3 pluses as well:



  1. MS doing some things right! It was great to hear how MS works from an insider. I really admire the strength to say: “Hey, we have to cut those features and to close those bugs for the near release”.
  2. I was able to think about the way I communicate with my QA department. I can make some dramatic improvements by cutting down some long, hard to read & understand papers, and form a 6-7 lines of Dos(and how) & Donts so my programmers can work more efficient with our testers.
  3. I had some time to think about ideas for my lecture, mostly about how to present the data I want to transport.

My grade for Amnon’s lecture (1-10): 6.


New directions for developing rich Web applications with Atlas, by Leon L.


I’ve enjoyed this session. I must admit that I didn’t play with Atlas enough so Leon managed to teach me a lot of things and make me want to start playing with Atlas. I really liked the Server Centric approach, its almost like you develop WinForms application. It’s amazing what you could do with a good, solid framework.


My grade for Leon’s lecture (1-10): 8.


Getting specific on Generics, by Noam King & Alon Felis


I must admit, this one was pretty bad. In a lecture of 400+ level, I expect to learn something new, even if I’m quite familiar on the subject. In addition, there were a lot(!) of errors in the presentation slides; Ken & I counted at least 4 slides with terrible mistakes. I told Noam about those mistakes at the end of the lecture so I hope he’ll get them fixed. To sum-up, I simply didn’t get into the “beat”…


My grade for Noam and Alon’s lecture (1-10): 4.


Oh, one thing! Try to tell what OS this dude is running:


DSC00086.jpg


Yep, this is Linux (GNome)! a big NO-NO at TechEd ! :-)


WPF – Part 2 – Interoperability with Windows Forms, by Arik Cohen


I love this dude! Arik is such a typical American geek. He’s one of those folks which you enjoy to share your geekness with. His presentation was pure joy. I really got excited about WPF for Windows Forms and Web Forms. Arik showed a bunch of samples about the way you develop WinForms & WebForms with WPF, just to understand how it all works. One important thing – WPF/e – This baby will able you to convert WinForms application to WebForms application in one click. WPF/e will download a small “host” (~2MB) for the browser which will allow you to show your XAML application as it was developed for WebForms application from the beginning. Cool !


My grade for Arik’s lecture (1-10): 9.


Ask The Experts


Ho man, that was cool !! Myself & Ken talked with Luca Bolognese about several ideas we had. We even met Oren Eini and talked a bit. And as always, Yossi Taguri, one of the guys I really like at MS, gave us some answers and connected us to some experts in the field – Thanks Yossi.
It’s just a shame that I don’t like beer because there were plenty of it there… :(


The P-A-R-T-Y !!


Woooo!!


DSC00098.jpg


                                       Party time!


 


DSC00129.jpg


                        Come on!! get low, get low, get low !!


 


DSC00108.jpg


                               Me, Ken & Shani


DSC00135.jpg


                 He can’t code, but he sure can dance! Ho well…


DSC00189.jpg


                  I’m thirsty, and you ? What a hot bartender !


DSC00183.jpg


                        Coding is fun, but this is better !


DSC00150.jpg


                                       Me & Shani


DSC00153.jpg


               Me – drunk, tired, no laptop…


DSC00195.jpg


                  Me – with the laptop… the good life


DSC00099.jpg


               Ken, a guffy guy. You got to love him… (?)


DSC00144.jpg


              Me and some messed up dude! Man, he was hilarious !


DSC00104.jpg


                     Me, Roee & Ken. padding-right: 100px;


 

 

TechEd 2006. Day 1. Our story begins…

So it all began on Tuesday, Moty (CEO), Roee(CTO), Ken (Team Leader and a major guffy) and myself drove about 5 hours to Eilat. The view on the way was nice but I’m not a big desert landscape fan so you won’t get me excited about that. We got to the hotel at 15:00 and took our stuff to our rooms (nice, big, comfortable rooms, I might add). From there we went to the kick-off meeting which was kind of sad; too much folks, too much noise, and a poor lecturer who had to suffer from all of that. There I met my good friends Shani Raba (aka human debugger), Alex Iagovsky and Yossi Ganot and said hello to a few colleagues from MS. After mingling around I went to my first lecture. Oh, on the way to my first session I took a pic of this cute parrot:


                                       DSC00048.jpg


                                                     Cute parrot – speaks C# 2.0 for living
 


Session 1: Introduction to WinFX, by Payam Shodjai


This was a great lecture and really served it’s purpose. Payam is a great speaker, one of those guys that makes you feel comfortable sitting 1.5 hours and listen to some high-ground material and still have a smile on your face (I’m one of those geek that loves the bit & bytes stuff). This session gave me the order I need to the new technology Microsoft is about to deliver in the following year. Payam presented the 4 wheels of WinFX: WPF (windows presentation framework), WCF (windows communication framework), WWF (windows workflow framework) and (4) InfoCard (a huge progress to the real deal – Identity 2.0). I guess you wonder “so what can you tell me about those 4 features ?! come on, I’m dying here! ” (if not, something is really messed up with you :)), so here is a short summary about the 3 magic beans:


WPF – You can throw Javascript to the garbage. No, I’m just kidding, wait … !!!
WPF (or in it’s old name – Avalon) is the new GUI framework from MS and damn they did a fine job in this hot-spot topic. No more drawing with GDI+ or DirectX, it’s time for vectors to kick-in. Imagine develop an application which will look beautiful on 1024*768 resolution but at the same time it will be as smooth and clear on 640*480 with no need to change CSS or images ! The name is XAML (pronounced ZAML) and it’s a descriptive way to create your forms (web or windows). In addition, you can really change the way SelectList, Radio-Buttons, Grids and other controls rendered. A quick example of a vectorial clock can be found here; Just enter this link and I promise you will be amazed by the simplicity of this technology. Superb!


Our CTO, Roee Dalyot, which is a Javascript master and in general a GUI extreme programmer is gonna lead this technology in our company and I’m sure you’ll hear from him on this topic. I can’t wait for his posts (and hopefully, some lectures) about this topic.

WCF – We all had the pleasure(?) to write WebServices, to enhance them via WSE (1.0, 2.0 and 3.0), to use Remoting, Windows Services, Transactions, MSMQ and many other communication API providers. It’s time to make some order and to unite all this technologies together – WCF ! This new API will help you communicate between you apps with ease, and it’s about time…
Oh, it almost got away: WCF(new name) is equal to Indigo(old name).


Ken, our talented (but still guffy) guy will take this one. I can bet that his going to do magic with it, just hold on to your sit.


WWF – This is the real deal (I’m biased). This puppy can make you Business Logic describe itself. Image a drawing (kind of UML) which describe the set of actions you perform according to a set of logic conditions. This workflow engine allows you, the developer, to write a set of “Activities” and connect to via a logic process diagram.  Each activity is just a simple class which implements Execute method. You can obviously create “sequence” workflow and pass arguments between the steps in the flow. You can change the steps order or the logic conditions (sometimes without re-compilation, depends on the change) with a simple drag-and-drop around the screen. Creating some “template” activities can make some of your application’s flow a drag, drop and to-production. All in 5 minutes.


I will be the one that takes charge on this beauty. Prepare to be WWF spammed !


My grade for payam’s lecture (1-10): 9.
 


Session 2: Deep relfection – What’s new and important in .Net 2.0 Reflection, by Roy Osherove


This one really blew my mind away. I’ve learned a bunch of new stuff and got really excited about DynamicMethod and ReflectionOnly-*. This two immediately got me thinking about some implementations I can use today. Roy sent the message loud and clear and the lecture was smooth and fun. Let me elaborate on the things you should know about:


DynamicMethod – This is the fastest way to create code on-the-fly and inject it into memory. I’ll use Roy’s sample: Let’s say you want to clone object from type A to a new object, something like:

A a = new A();
a.Name = “Oren”;

A a1 = a.Clone();


a.Clone() will perform a (deep\shallow) copy of a. So you can say – OK, let’s create a Clone method in each of our custom objects and implement it, something like:

class A
{
   public A Clone()
   {
      A newA = new A();
      newA.Name = this.Name;
      return newA;
   }
}


Well, if you have a lot of custom classes (and each custom class has more than one property, most of the time), this could be quite exhausting. The idea with DynamicMethod is to generate the IL code which will copy the object on the first time you call it; meaning, on the first call to a.Clone() you’ll probe the object and create, dynamically, the Clone method and save it into memory. Roy will upload his presentations and examples so you could view some nice usages of this new great feature. One thing though, this feature requires knowledge of understanding IL which can be quite hard for novice programmers, but I see some great usages if you’re an infrastructure guy: Serialize, Deserialize, Cloning, Attaching methods to events (like Handles keyword in VB.NET), Formatting objects (to xml for example) and many other things I’ll leave under my sleeves for the moment (I’ll implement and upload, in time).


ReflectionOnly-* – If you ever reflect some of the assemblies or types in your system (e.g Plugins system), this one is for you. See, the minute you ask questions like GetCustomAttributes() you actually running the constructor of each one of the attributes. Now let’s say that the attribute is a Custom Attribute which you’ve wrote and you want to upload (to memory) all the classes with that attribute. This could be unsafe. The reason is that I(hacker) can inherit from your custom attribute and put some malicious code in the constructor which will be run in the context of your application (the one that called GetCustomAttributes) !!
With ReflectionOnly-* you can be with and feel without – this is a safe way to probe your assemblies\types. This is something I’ll take advantage of immediately so thanks Roy !


My grade for Roy’s lecture (1-10): 9.



End of the day – Cocktails “party”:

This was nice although I hate standing while I eat. Good drinks, nice food, a lot of gifts (if you give your name, email and phone number to the devil – the spamming machine). Nice.


Some pics:


         DSC00063.jpg 


                              Myself and Shani Raba                                                


        DSC00054.jpg

         A look from above (Hey! I’m 1.70m guy, what can I do ?!)


 


End of day 1.

 

Wwwoooo !!! I’m sycked and I’m loving it !!

Man, that was a good 3 days of great lectures, great people and one great great party ! I had so much fun, really, and I’ll try to share with my enthusiasm during the following 2-3 posts. Prepare for plenty of reviews about the lectures I’ve went to and a big set of pictures.


I got a lot of inspiration from some of the lecturers at TechEd and I can’t tell you how much I’m excited about my lecture this week, I’ve invested a tremendous amount of time in it so I hope it will turn out the way I’m want it to be. It will be a dream come true to lecture on one of the next TechEd, so I hope I’ll have some chances to share with you my motivation and my passion about our world(programming rules!).


All in time, I guess.

OK – on to the next post !

 

Chuck Boyce is podcasting and he mentions my blog

I know, this is kind of a childish post but heck, It’s hilarious to hear someone tries to pronounce my name – kudos Chuck, you did it !!


Click here to download the podcast (btw – my “thing” starts at -5:38).


Thanks Chuck, I’ll update my progress on this one so keep reading ;)