Saturday, December 03, 2005

The day before yesterday I felt the urge for some Chili Con Carne. So yesterday I went over to all recipes and a couple of hours later I was finally feeding.

Turned out muy delicioso.

Bookmark and Share Sunday, December 04, 2005 12:10:13 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [13]  

This I wouldn't expect. I registered my domain a while ago using Yahoo! Domains. Back then in was 9.95$ a year. A couple of months ago they started offering a domain for 2.95$ a year. So you'd think I'll be able to switch to the 2.95 plan starting with the second year, right? Wrong. They won't let me switch, they'll just automatically charge me 9.95 for every folllowing year. Now if I really want to switch I have to cancel my plan, which will release the domain to the wild (and we all know how many people out there want the pashabitz.com real bad), wait for some undefined amount of time until it becomes available and then register it again as a new customer.

I even emailed their support (which is not easy, let me assure you) and got such a laconic reply I'm not even sure it wasn't all computer-generated.

The correspondence went sort of like this:

Me: "I'm on the 9.95 plan but I see there's a 2.95 plan now. Can I switch starting with next year?"

Yahoo! Support: "No, you can't. We'll charge you 9.95 forever, until the world ends."

M: "But don't you see how moronic this is, you bloody fools? You realize I can switch the hard way right?"

Y: "Hmm. 2.95 is a limited-time new-customer offer, you have to pay 9.95"

M: "Are you even listening to me? Why would you treat an existing customer worse than a new one?"

Y: "The price is 9.95. You have an existing plan. You'll pay 9.95 once a year. Okay?

   Please fill out this quick survey:

   (1) Was Yahoo! Customer Support helpful to you? (a) Very (b) Not (c) Guess so

   ..."

 

You get the point.

This is all very Israeli-type service, but very not USA-type service. That's the surprising part of it, for me.

And anyway, why can't Yahoo! give me that lousy 7 buck discount? They make like a bejillion dollars a month. Their market cap is 50 to the 28th power. They *buy* small countries every day just to "enter new markets". Be damned if I understand.

Bookmark and Share Saturday, December 03, 2005 11:54:02 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [12]  

Zap are really providing a great price-comparing service, I use it all the time.

But of course this is Israel, so I always wondered whether the store reviews are real. I'm sure every online store out there, would log on and post 500 favourable reviews of themselves, if they could. Can they?

Hearing some awful user-experiences from people I know, and having purchased some stuff online myself, I wanted to help fellow customers and also share the love for places of business that are doing a great job. So I decided to post some store reviews on Zap. Turns out they have a Stalinist review regime over there. Guess they figured the Israeli head out too. You must provide a digitally scanned copy of your purchase receipt in order for them to post your review of a store!

I don't own a scanner, and who does anyway? Like I'm going to look for a scanner somewhere, go there, remember I don't have the receipt, go back home, find the receipt, go to the place with the scanner, scan the receipt and email it to Zap just so I can review an online shop. I don't have that much love to share. Not to a website, for sure.

Now they're obviously in a dilemma: they want the user-generated content, and they can loosen the controls so it'll be easy to post a review, but then the info will be very unreliable (that may work in Norway, not here). Or they can make you go through hell so that almost no one will post reviews, but the small amount of data that's available is very trustable. They went for the latter.

 

But I still want to help you out with your online shopping (and you already know I'm very trustworthy) so I'm going to put up some short reviews for google to index:

The Official and Unbiased pashabitz.com Online Stores in Israel Reviews

a) e-net - ordered a Nokia phone, received in two days, no problems at all. "Totally Happy" on the Bitz-scale.

b) Mardanit - ordered a memory chip for a PC, same thing - delivered in two days, no problems. "Totally Happy".

c) Yarden PC - a graphics card for a PC. Fast delivery, no problems. "Totally Happy".

d) Master PC - an LCD screen. Had a few time-wasting phone calls with their orders department. For some reasong they were having problems with my credit card (listen, my credit is respected worldwide, don't be thinking nothing funny). But then after 3 or 4 days the screen got delivered as should. "Just Happy" on the Bitz-scale.

e) Photofilm - bought a compact flash memory card. Arrived in two days. No problem. "Totally Happy".

 

And remember: the spin stops right here.

Bookmark and Share Saturday, December 03, 2005 11:09:58 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [13]  

Ever wanted to manually control what build-events run when you build in Visual Studio?

For example, if you want to register the output in GAC or something, but not always, only when you choose to do so.

At first I was thinking about flipping some boolean environment variable and then testing it in the build event code. But later I decided it's better to define a new build configuration and test for it. To test for the build config - use the ConfigurationName macro, like this:

if $(ConfigurationName) ==DoStuffConfig echo doing stuff

if not $(ConfigurationName) ==DoStuffConfig echo not doing stuff

Now, if you want the special code to run, switch the configuration to "DoStuffConfig" (you have to create it first, of course).If you don't want it to run, switch to some other config.

Only problem is, switching the configuration takes a while on a big solution (30 seconds or so). Is there a better way?

Bookmark and Share Saturday, December 03, 2005 10:37:24 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [1]  
Hey, I just read a whole (beginning of a) news story on terra.com.ar without using the dictionary even once!! It's in Spanish, yo. Cool.
Bookmark and Share Saturday, December 03, 2005 10:30:46 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [13]  
 Saturday, November 12, 2005

Background

I used to be a programmer. I guess I liked the job, but I wasn't happy. I felt stuck. I wanted more control, I wanted to make all the decisions. I was sure I knew better than the rest of my teammates, and much better than my team lead. What can you do, I was twenty one. Then a funny thing happened: someone up there (where the air is thin, I guess) decided I should be promoted. So they promoted me to be the new team lead. I was happy and grateful.

The hardest two and a half years of my life followed. Being the team lead wasn't easy on me. At different times I was angry, stressed, pissed, hopeless, clueless, annoyed, betrayed, outraged, ashamed, bored. Most of the time I was more than one of the above at the same time. On a couple of oh-so-special thursday nights I was all of them at the same time.

I constantly felt like I'm about to have a heart attack, my ears will blow off my head to release all that steam, and my intestines will spill out of my eye sockets.

It was a blast.

Two weeks ago my time was finally up. I finished the job and returned to being a programmer for the two months remaining until I'm released.

I noticed two things about that two and a half years.

The obvious - I learned a *lot*.

And the not so obvious.

I learned how to be a better programmer.

 

A good programmer

Well, a definition is in place I guess. It's not enough to write fast and write without bugs (It's a must, but not enough).

The most important things to me in a great programmer are: (a) team work, (b) "big head", (b) getting things done.

(a) Any software today that's worthwhile (I mean, that can make profit) is a product of a team of people. That software and these teams succeed and fail as a team of people.

(b) Software development done by a team is almost totally unmanageable (don't beleive anything else they say). That doesn't mean there are no correct and "best" practices. If you don't do them - you're screwed for sure. But they don't guarantee success either. Once you have all the correct practices in place, you solely rely on the programmers to do all the needed things, big and small, in order for the project to be successful. And it takes a very special kind of person (a "big head" they call them in the IDF) to do these things. Trouble is, you can't really define these things in advance, and you can hardly teach anyone to do them.

(c) Programming is the perfect breeding-ground for perfectionism. Software can never be "done". There will always be unsolved bugs, and unincluded features. And this is just the excuse any programmer needs to not get things done. So when you realize that the project consists of a thousand tasks, all of which must be concluded for the project to be done, you must have programmers who know how to get each and every task done. Or your project is rotten eggs.

 

Team Economics

Your career, good programmers, bla bla bla. What's with the stuff about economics?

I know, I took the long rout, but I'm getting there.

See, Adam Smith teaches us that the invisible hand guides us in all our actions, individuals and groups alike. And when everybody does what's best for them, the whole benefit. It's why Communism collapsed, America is the only super power, and Big Macs are so cheap and are everywhere.

bigmac.jpg

Now, these theories are applied to more and more areas of life lately. But I never though of it in relation to sofware development, nor have I read about such application anywhere. I should have.

Last week I was sitting at my desk, hacking away, when I had an idea of how to shorten our solution build times.

<side note (but wait, spaces are not allowed here! aaaaaa!)>

Compiling takes a lot of time at our place. We have some build-events inside Visual Studio that make it longer. I figured I could save myself a minute or so for each time I build the solution, by adjusting the build events. Turns out it was a stupid idea, embarassing even, so I won't go into it. The technicality of it is really not the issue here.

</side note>

I estimated I can save myself something like 30 minutes a day, if I invested a couple of hours immediately. I could be making "profit" within a few days. So I went for it. I implemented the solution, was happy, but then realized it was all unnecessary, so I threw it away. Case closed.

But this got me thinking about the way I made the decision to invest the time in implementing the time saving feature.

It was pure economics. Cutting build times had nothing to do with the specific coding task I was working on. And I was about to *lose time* working on something else. I still went for it, simply because I could see clearly that I will be able to produce more within a weeks time. See? I am on to something.

 

Examples

I'm sure a bell is ringing for you now. These kinds of decisions are everywhere in the lives of the project and the team. Usually the profit/loss calculation is more complicated.

I can develop a quick solution in an ASP.NET page which will benefit me know (code complete, go home early) or I can develop, say, a reusable web control which will take twice the time but will cut development time of future pages in half for everyone on my team.

I can develop a class that accesses a database table for my module or I can develop a general-purpose class that uses metadata files to access any table.

I can unit-test my code using a temporary driver page or develop a clean unit test class which will benefit me when I make changes to the code later.

And so on.

And how are these decisions usually made in a real-world team dev. environment? 99% of the time it is the developer measuring visible short time savings (say, in the couple-of-weeks area).

 

So Now What? (A Word of Advice for Team Managers)

The issue I just described is so ubiquitous, you can almost define our jobs as handling and managing this kind of economics well.

Look at the team as the single entity in this economy. Profit is less bugs, shorter schedule, *as a whole team*.

One developer working for 3 months, then 3 developers working for one week each is better than 4 developers working for 1 month each. It's not economical for the lone person working the longest, it's profitable for the team.

Single task taking 1 month, than 5 tasks taking 1 day is better than 6 tasks taking 2 weeks each.

How many of these decisions are made the "profitable" way for the team? Not many. Because the economics governing the single person who makes the decision are not the economics that benefit your team.

So it's your job to create an environment where the coder profit will coincide with the team profit.

How? I don't have non-obvious ideas yet. The obvious to me is: you must be aggressive in "investing" (usually time) correctly to make profit (usually later). Rule of thumb: if you're in a team that looks like the ones I know, you're probably not making enough of these investments. Your team mates are probably making most of the decisions, based on narrow single-coder economics.

 

So Now what? (A Word of Advice for Programmers)

We're all human beings. It's okay to be guided by self-benefit. Don't be your team's communist, it won't work. But we're probably not making enough of the right investments either. Don't be short-sighted, many investments can bring profit in a short time. But you got to have balls, of course. Nobody cares what kind of stuff you developed if you took twice as long to accomplish your current task.

(1) Be confident. You'll make up the lost time before they'll fire you, most of the time. Pop quiz: anyone you know got fired for building solid frameworks? Reusable controls?

(2) Market yourself. Make sure everybody knows what you do. Make others benefit from your investments, you'll become indispensable. It's all enonomics after all.

 

Conclusion

Team dev. economics are an interesting way, IMO, to look at what we do, as team managers and developers. I didn't study economics unfortunately, but maybe some insights into our jobs will come from looking at them from an economical stand of point. I think I can do some thinking and googling about it now.

Bookmark and Share Sunday, November 13, 2005 1:29:09 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [5]  
 Saturday, November 05, 2005

I forgot to tell you I got the Benq FP71G+ eventually.

It's 17 inch, 8ms refresh rate. Works very well so far, I recommend.

I also recommend dealing with MasterPC. Had no problems with the order, the screen showed up after three days.

benq lcd.jpg

Bookmark and Share Saturday, November 05, 2005 8:32:27 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [11]  
 Friday, November 04, 2005

Check out some pics I took in Modiin today. It's here.

p.s.

By the way, what I said about Flickr limiting the free account to 20MB a month: come to think of it, it's reasonable, because you usually won't upload the photos at their full size anyway. So 20MB is enough.

Bookmark and Share Saturday, November 05, 2005 2:58:21 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  

I just started working on my Castellano two weeks ago. Luckily, Or is fluent, and provided for me the must-know, real-world, survival-enabling phrase list. And I just had to share some gems with you:

"no tepreocupes, conozco un rabino reformo" (don't worry, I know a reformic Rabbi)

"cuales son mis derechos?" (what are my rights?)

"a mi me gusta Maradona, vos te gusta maradona, porque pelear" (I love Maradona, you love Maradona, why fight?)

"el mosad te asesinara" (the Mossad will assasinate you)

"me prefiere bailar con chicas"... (I prefer dancing with girls)

..."sin embargo, podemos quedar amigos" (but still, we can remain friends)

"tienes una copia de la partitura de esa opera?" (do you have a copy of this opera's partitura?)

"no soy comunista" (I am not a Communist)

"si no regresare del trek, divida mis cosas entre los huespedes del hostal" (if I don't return from this trek, please divide my belongings among the hostel's guests)

"tengo seguro completo, llama un helicoptero" (I have the complete insurance, call in the helicopter)

 

If you are only going to learn 10 phrases, make sure it's these.

Bookmark and Share Saturday, November 05, 2005 2:48:53 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [2]  

It's always exciting to go through a favorite-song-switch. I had one two weeks ago.

What's a favorite-song-switch? I can split my life into periods by the song I loved listening to the most during that time. The same thing happens also with "favorite-artist", "favorite-book" and so on. But "song" is one of the most important ones. It's like the "World Cup of period definers" for me. Or maybe it's the "World Series". Never mind.

All this just to tell you that "Rumble On" which is on the "Led Zeppelin II" album is fantastic. Music, lyrics, everything.

Made the switch.

 

I also love the word pair. Could be a good company name, no? (That's always an important issue, right? Good names are not to be taken for granted.) Unfortunately www.rumbleon.com is taken.

But I can still grab www.rumbleonsoft.com.

 

Bookmark and Share Saturday, November 05, 2005 2:36:04 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]