Lucky number

November 30th, 2006

I’ve been providing support online for a few years, mainly for my projects. Someone asks a nice challenging question, you dig in a little, possibly find a bug and fix it, give the user his answer get a nice little thank you and you’re on your way to the next question. Sadly, that ideal is far from being the reality for most questions. Most of the time questions repeat themselves, lack any challenge, lack too much information or asked in an irritating manner. Inspired by the effective bug reporting and smart questions guides, I decided to write my own version. Initially, I wanted to go with the ten commandments, but I didn’t quite see how I could fit “honor your father and mother” in. So, without further ado, I hereby present the seven deadly sins of questioning.

Lust

Moms are smart, that’s a known fact. However, they’re not always right. Especially on so called facts that contain the notorious pair of words “most important”. Breakfast is not the most important meal of day as it’s usually aimed at herbivores and you are not the most important person in the world. Nothing you ask is urgent unless other lives are at stake. There’s nothing to get passionate about. Nothing will happen if you don’t get your answer right away. Armageddon will continue lingering and your mom will still be there for you with her “most important” slogans. So chill. “Urgent” questions and vivid descriptions of how amazing your question is will not get you an answer faster.

Gluttony

Ideally, when stumbling upon an issue, you look around a bit before asking a question. You seek the solution, try to find out what’s wrong, collect as many details as you can until two or more click and you find the solution. Nothing clicks? Time to ask someone else? Don’t skimp on the details, add as many as you can. Gathering them all and then keeping them to yourself doesn’t help anybody and most certainly doesn’t help you. At the very least, describe a method of reproduction of the issue. Even the most talented support champion can’t help you with an issue that can’t be seen or described in words. Even Don Quixote had his windmills to fight.

Greed

Knowledge is power, everybody knows that. It’s only reasonable to keep it to yourself, to keep your prestigious stand. So, if after asking a question, you find the answer yourself, why bother sharing? In fact, why not ask a lot of questions and then come back later to say you solved them all on your own? Instant self-proclaimed hotshot. Power overwhelming. Guru.

So why ask in the first place? Why be a burden? If you’re going to frustrate people by answering yourself before they get a chance or even while they’re trying to politely answer your question, at least share your findings. Even if all it took was that little search you were too lazy to do, share it so your question will rise up from its cyberspace waste status. You may even get a better solution from a true guru, or the average curious John Doe who simply knows better on your specific issue. If you don’t share, why would anyone want to share with you? P2P networks has a lot to teach us in this case.

Sloth

Time is money. Asking for something that can be easily obtained, like questions from a FAQ or searchable questions wastes your time while waiting for the answer and the other side’s time while searching for you. Search engines have been invented for a reason, FAQ pages were not written in vein and documentation files may rot, but shouldn’t be abandoned.

Even if the search comes out empty, there are other ways. Show a bit of self competence, try solving the problem on your own. Isolate the problem, test on different platforms, observe differences that cause the problem to appear, broaden your search and guess a little. You can’t expect the other side to do all the work for you. At the very least, your tests will help the other side finding the solution faster. Lazy questions inspire lazy answers.

The most annoying type of sloth is the ever so lazy request of “do it for me”. Some ask it right out, occasionally attaching a job half done, a very lacking description of things that don’t work, usually with a very descriptive “not working” text. Some simply refuse to understand the solution until it comes in the form of a full fledged example. Then, seeing as their laziness has paid off, they’ll move on to the next issue and once again stumble upon a great obstacle they can’t possibly overcome without yet another example.

Wrath

Raging and screaming won’t help you get your answer faster. It’ll only get the other side angry and unwilling while wasting your time on being calmed down. Frustrated? Upset? Furious? Leave the computer. Go meditate or something… Come back after you’ve found nirvana and everything will look better. You might even find the problem on your own, now that you have more blood running into your brain instead of your fists.

Envy

Been waiting a while? Someone got an answer before you? Forget about the green monster. Go get some tea, sit back and relax. Posting your question in more places where “others got an answer” will only get others annoyed and confused. Which post is the newest? Where do I want to answer? Do I even want to answer and encourage this guy to post his question a zillion times and litter my beautiful piece of heaven? You should spend your time on trying to get more details for your problem instead of getting upset and confusing others.

Pride

Until proven otherwise, you don’t know best. If the computer, application or programmer’s fault is in your axiom list, you’re doomed. You’ll never find your answer by assuming it’s not your fault. Even if the problem you’re seeing is caused by a bug, you’ve triggered this bug somehow. Assuming the fault lies solely outside your reach will only get you frustrated and get you farther from redemption.

Have a little modesty, just as you’d except the other side to have. Pride is an epidemic. It rapidly infects all parties and consumes all hope of a solution, sending your time right down the drain. Declaring you know best before any details, or unequivocally proclaiming what’s a right and what’s wrong, will force the other side into a defense position from which you’ll have a hard time getting your answer.

Still think you know it all? Found the bug that no one else found? Do you really think such a huge bug would go unnoticed by so many people? If you are so certain, you must have a lot of information to back your claim. Post that information or face the immanent failure of finding a solution.

--

Mr. Smarty Pants

November 3rd, 2006

PestImagine you had an application that gets over 1,000 downloads a day. Imagine that this application’s soul purpose is to create other applications. Imagine those applications are distributed by you users, some bigger some smaller. Imagine those derived applications get downloaded over 1,000,000 times a day. Feeling good yet?

Now imagine someone would offer you 0.001$ for each user that opens one of those derived applications. That’s over 1,000$ a day. 30,000$ a month. 360,000$ a year. Perfect, ain’t that right? You’re sitting on your porch, a beer in your hand, music in the background and the skies are raining green bills. Does it get any better?

Sounds too good to be true? How about we dig in a little? Say, mister money pants… What exactly do I have to do for this money? “Nothing really”, he responds. “All you have to do is include our little library in every derived application your application creates”, he adds. Move a little uncomfortably in your chair and he’ll satisfy you, “it just gives the user nice and unobtrusive advertisements specifically targeted at him”. Sold yet? I sure am!

So you decide to wrap it up. But you still feel a little bit uncomfortable with it. Maybe because you don’t want people to know you’re making money of your free software, or maybe because you still don’t trust this guy too much. What do you do? You move his library a bit further. Assuming your application is called XYZ, you pack money pants’ library into XYZ Media which will be silently installed by your application’s derived applications. No one will know it’s you now. It’s ingenious!

Best deal ever? Right? You dig? Well? No? Why? Come on… You with me or what? Of course not. Why would I ever want to do something like that?

  1. My software is not only free, it’s open-source and is freely hosted on SourceForge. It costs me nothing but time. I’ve got no bills to cover.
  2. I’ve got a job, I don’t need an additional income. I’ve also had my share of incomes from the free software, without the need for deals like that.
  3. It’s completely evil. Besides forfeiting my ever-elusive seat in heaven, it’d also send my software right down the drain. Even if I remove XYZ Media later, no one will ever want to use it again. 1,000 downloads a day? Try one closed project.

As you’ve probably already guessed, I’m talking about NSIS and NSIS Media. NSIS Media is an extremely annoying adware package, or so reports say. It installs itself on both Internet Explorer and Firefox. On Firefox, it installs an extension with a file named NSIS.jar. These browser extensions pop-up advertisements titled “NSIS Media Advertisement” for the user at what appears to be random times. It shows an uninstaller in the Add/Remove control panel, but as long as the carrier program is installed, it’ll just come back.

According to reports online, it comes with eMule++ and every download from Openwares. The eMule++ installer and each installer I have downloaded from Openwares install two DLLs to the Windows directory. DLL names include wmidext.dll winsdrv.dll, msxmlu.dll and even nvrssid.dll pretending to be shell extension of nVidia. As you can see, it doesn’t really smell too good. But as can be seen in the picture below, it does ask the user for permission, at least with the original eMule++ installer.

eMule++ NSIS Media page

In Openwares installers, on the other hand, there is no such page. So what is this Openwares? It’s a company that would, at least according to their front page, freely repackage your installer with NSIS, publish it on their website and on CNet’s Download.com. The latter seems to be most fertile ground for their deployment.

So is it evil or not? The eMule++ installer page might suggest it’s not. So does NSIS Media’s website, especially the uninstall page. But do they enforce this installer page on all of their partners? It doesn’t seem like they care too much for Openwares’ installers which seem to be pretty wide spread. Add the weird DLL naming and the very peculiar company name choice; and one thing you won’t get is positive credit. More specimens, outside of Openwares, or a direct contact at NSIS Media are required to determine the true nature of the beast.

But we’re not here to discuss the business affairs of this advertisement company. We have gathered here today to discuss my righteousness. Some people actually think I’m responsible for this mess. Probably some just Google up “NSIS” and find my e-mail address as the first result. But some people actually believe I’m behind this abomination. I got everything from polite requests for removal instructions to death threats. My favorites follow.

“As you can see, I am an IBM employee. Somehow the NSIS Media Trojan Horse has invaded my system. Please promptly send me instructions on how to remove it so that I don’t have to report this issue to IBM Legal.”

“CUT THE CRAP (read: spy-ware) !!!” (this one is actually longer, I trimmed it a bit…)

Some even plot a NSIS-Firefox grand conspiracy in their heads.

“Why there is no info on the Firefox / NSIS spyware scandal? Some malicious code installs into Firefox browsers and Thunderbird mail clients via JAR files by abusing a yet unpatched NSIS security hole and the bombards the user with many pop-up windows and downloads further spyware. The Net is up in arms about it, especially in Europe, where Firefox has 20% share in browsing. Firefox developers accuse NSIS developers of indifference and lazyness in fixing.”

All of the above and many more like those, got the appropriate response in the lines of “NSIS is not NSIS Media, go away”. Poor saps, fooled three times in a row. The first time, they’ve downloaded their application of choice from a bad source. Next, they miss the warning signs in the installer or all of those privacy statements. And finally, when reality pops-up in their faces, they miss the word “media” and blame yours truly.

So what have we learned today?

  1. NSIS Media is in no way related to NSIS.
  2. Download only from trusted sources and read carefully what the installer tells you.
  3. kichik doesn’t make 1000$ a day :(

--

Ownage

October 31st, 2006

Quake flagPah! I just got this cool Quake flag from a friend. It ownz! :twisted:

Bet that won’t help my rails, since I’ll be looking at it all the time. Still have to figure out where to hang it… Probably not too close to the screen ;)

Click on the image on the left for a bigger version.

--

Screen’s up

October 27th, 2006

I went to see Fearless today. It’s nice, nothing too special. I can’t say I had a great time though. There’s just something about movie theaters that repeals me lately.

The video quality sucks. I keep seeing crackles, brown spots used to prevent ripping and black lines — early 90′s TV style. The sound quality isn’t that amazing as well. Not as rarely as I’d hope, it seems as if the non-existent computer playing the movie is passing its quota of CPU power. The surround speakers set also seems to go unused too many times. Should I even mention prices?

But I can live with all that for the big screen, the uninterrupted volume and the comfy seats. You pay for the experience just like with anything else. You pay, others pay, you get together and enjoy the goods. But some people reckon it’s not enough to keep the joy to themselves. They must share it with their friends. Loudly. Since when did it become a norm to talk in movie theaters?! Why do I have to find myself a new seat just so I can enjoy the movie quietly? Even after several undeserved polite requests, the noise just keeps on coming from every direction.

And they say piracy is the number one reason for diminishing profits… :roll:

--

Color practice

October 20th, 2006

Red lightOn the way home today, I passed through several crosswalks. It was late, I was hungry, the bus was already waiting in the station and I missed every green light by a few seconds. Four good enough reasons for good old jaywalking, but I decided to be a good boy and wait. But it was worth it. When standing in the long line for the bus, with a recently acquired sandwich in my hand, I looked back and saw two cops come out of a rented car (illegally) parked right next to the last crosswalk I passed and start talking to two guys who failed the color test.

--

Big badaboom

October 17th, 2006

Nuclear mushroom cloudWhat’s the big deal with nuclear weapons? What’s with everybody wanting them lately? What’s wrong with plain old explosives? Far be it from me to understand the costs of either choice, but it does seem somewhat fair to assume that they are cheaper to produce and maintain. The warheads might be lighter due less mechanism requirements. So the rockets can go further or simpler rockets can be used. But even if the same rockets are needed, it’s still less research and development because more information is available, more professionals are in the neighborhood and it’s much easier to get around the airports in your handbag because everybody’s focus is on the nuclear weapons. Even more, “conventional” weapons (what’s with that distinction anyway?) are safer to keep around as there’s no radiation so there’s no need for as much shielding. If it’s cheaper and faster to produce, there’s an option to produce much more warheads. This allows spreading the attack wider and makes it harder on defense as it’ll need many more defensive missiles / rockets / guns / shelters / whatever. The fact is, I can never know which one is more efficient because I don’t have all the details.

That’s the problem with all of those “secret” stuff. You can never get the details you need to make your own calculations. You always have to trust the politicians that say they have the facts. But you can’t even be sure they have the facts. In fact, opposing politicians always claim to their thesis is correct according to the facts. Some even claim to the same facts but derive different conclusions, which they conveniently call facts.

I am not sure I want all the facts of nuclear weapons freely available, but sometimes, even with simpler stuff, the secrecy overextends. Sometimes it seems like freedom of information only concerns keeping information already freely available as it is. I remember trying to figure out how come a local tax-funded television channel keeps buying new big-shot series no other channel has, right as their season ends in the USA. I had to use connections to get a “don’t worry, the prices are suitable” accompanied with a reasonable explanation why a tax-funded channel should have such series. I was kindly reminded our country is semi-socialistic and that even people who can’t or won’t pay for cable should get quality television. But we’re also semi-democratic, so why can’t I can get a copy of the budget? Though I have to be honest – I probably didn’t try hard enough.

--

Vista update

September 30th, 2006

Tyler from Microsoft has contacted me about my Vista bug report. He said he’ll open an internal bug report for it, but can’t promise it’d be fixed before RTM. In the mean time, newer versions of NSIS will include the manifest so no problems should come up with them.

--

Logical extensions

September 29th, 2006

While working on a new NSIS header file to properly handle Windows versions, I thought of something really cool. The LogicLib is a cool library dselkirk and eccles wrote a long time ago. It allows you to avoid using labels, Goto, StrCmp, IntCmp, relative jumps and other cool beans. Instead, you get a bunch of macros wrapped in defines that make your life so much easier.

${If} $0 == "good"
DetailPrint "it's not evil"
${EndIf}

It struck me while I was thinking of the interface I want to use for the new version checking stuff, I originally started with a function taking an argument. However, functions and header files don’t work too well together. A warning is spewed, if the function isn’t used. The code was also meant to be short, as there isn’t too much to do. So, combine those two together and of course you get macros. But what will the macro get? Labels to jump to? What if the user passes relative jumps? What if the user wants to skip a label definition and just jump to the next line? Why can’t it be like LogicLib? Because these checks don’t fit into LogicLib.nsh? So what? Why can’t I define more tests for LogicLib? Who said I can’t? I can.

And it turns out adding more tests to LogicLib is quite easy as well. Just define a macro with a name prefixed with an underscore and give it four parameters. Two operands and jump labels for true and false. The LogicLib will handle creating the labels and all that is left for this little macro is the actual test.

!macro _= _a _b _t _f
IntCmp `${_a}` `${_b}` `${_t}` `${_f}` `${_f}`
!macroend

The end result is quite cool. Instead of yet another new interface for another functionality, there are just a few new operators for LogicLib.

${If} ${AtLeastWin2000}
DetailPrint "2000 or better. Fun!"
${EndIf}

The new code is available on CVS for your eager browsing. Crave code. Craving is good.

--

The great outdoors

September 24th, 2006

Beach timeStargate is off for “fall break”. Seasons of 4400, The Shield and House have all ended. Nothing to watch on TV anymore. Well, except for the news, but that show has been airing reruns for so long it’s a arguably laughable. Now and then they find something semi-new, like the latest Thai coup. But overall, it’s almost always the same episodes over and over again.

If already on the subject, does the completion of “Carter & McKay’s intergalactical bridge” mean SG-1 will finally see some digital stargates? And is it just me or 4400 is becoming more and more X-men’ish with each passing episode? Too bad for Kenny Johnson, I think he really liked the first episode…

Well, more time for rest & recreation or beer & beach I guess… Too bad summer is on the brink of destruction almost over.

--

Longer is better

September 22nd, 2006

The modern technological world is all about faster and smaller these days. New acronyms pop-up daily. It’d probably be an understatement saying an average technology related sentence contains at least 3 abbreviation of some kind, be it an acronym or just a simple abbreviation. It’s deeply embedded in us, there’s no running away from it. We are so used to it, we normally don’t even recognize an abbreviation when we see it. They are just normal words for us.

I really like exploiting this when I’m bored or when I’m writing long official documents, especially those I don’t want to write. Instead of talking or writing like every other human being on the planet, I expand every possible abbreviation to the longest form available. It drives people nuts. Not only do they need to read more, they need to think longer and reabbreviate the words. Some expansions, people don’t even recognize and have to come back for an explanation.

That’s the time abbreviations become a total absurd – when people don’t even know the original meaning. Then you get redundant definitions like YWMT (sounds better in Hebrew) which stands for yellow white marking tape. No one knows or cares the W in WMT stands for white. WMT is just a marking tape for everybody. So when in need of an abbreviation for a yellow marking tape, it’s just called yellow WMT or YWMT.

--