Skip to main content

Posts

Showing posts from 2005

The road to performance

Why is it that every time a developer has to go optimize something in assembler, they have to re-learn the darn language again?

Okay, you've optimized the, to use a technical term, crap out of that loop in C/C++ and it is not calling any functions what-so-ever any more...and it still has lousy performance. So, now you have to make the tough call to move to assembler. It will instantly tie your application to a single compiler and architecture and make it that much harder to port. Any reasonable business person will look at the potential millions lost and will decide that the product is "good enough" if it means getting it cross-platform faster to gain an extra 20% market share sooner and then go back later to "fix" the problem.

Unfortunately, in this case, there is only one platform and the performance is abysmal. The program should be operating at 10 times the speed it is actually performing at. And I've forgotten just about everything assembler in an a…

Rubber melts

I discovered today that rubber can melt just sitting in one place and that putting a graphing calculator under running water causes it to stop functioning.

I picked up my calculator today that I've had for forever and my hand stuck to it. Removing my hand from the sticky revealed that the sticky had gotten on my hand. So, I went to the restroom to see if I could do something about it. Then I got back and realized that the sticky was everywhere. So, not thinking clearly, I took the calculator and ran it under water. And soap. Soap seemed pretty effective against the melted rubber pad and the only really good way to remove soap is with running water.

Now each TI-82 graphing calculator that Texas Instruments manufacturers comes with four rubber pads. Only one of the four has melted so far.

I'm letting it air dry for the next few days in the hope that nothing is seriously wrong (i.e. a short). I've never been very good with electronics, but I do know that water doesn'…

Google has nifty feature.

If anyone can figure out how Google is selecting what links appear on certain searches, I would really like to know.

Here is what I'm referring to:

http://www.google.com/search?hl=en&q=cnet
http://www.google.com/search?hl=en&q=yahoo
http://www.google.com/search?hl=en&q=microsoft

Each of those three searches return four select links to sections of each company's website. What I want to know is how Google is deciding what links come up. This is possibly the biggest feature they have put together in a long time. It seems to me that anyone can benefit from this, but the rules seem really sketchy at best. It looks like different subdomains are favored, but then why is CNet inconsistent? It also appears that you can only have 15 characters for each displayed link.

I've not cared much for SEO until now. This, however, piques my interest because this potentially allows searchers to quickly find what they are looking for if they know your company name or website name bu…

Misinformation

Misinformation is abundant. For instance, I needed a read/write locking mechanism for Windows and was hoping to get some development tips and ran across this as one of the top ten results from Google:

http://www.joecheng.com/blog/entries/Writinganinter-processRea.html

That's all fine and dandy...if you want application performance to, to use a technical term, suck. Performance really goes down the tubes if 10 threads want to write all at once. Every thread wanting to write has to line up and then 1000+ synchronization primitives have to be acquired before the last one can finish writing.

If you are a software developer with less than 5 years of experience and don't know the first thing about a topic, please, please, please do NOT blog on it, do not write an article, do not visit a forum declaring knowledge of it, do pass GO, and do not collect $200. (If anything, you owe the world a formal apology and you owe me $200 for wasting my time). Google and other search engines will…

Day 3 - SIC 2005

Wow. I meant to post yesterday, but I was extremely busy and I was so exhausted I could not even blog about it. I went to a number of sessions, but missed portions of the afternoon ones. I missed the session on UI design because I was talking to people about ShareWrap. There is a lot of interest and excitement about the product activation system that does not "phone home".

Microsoft is here at the conference and they had a session where they presented something that is shipping with their Visual Studio .NET 2005 product called the "Shareware Starter Kit". I will be publishing a PowerPoint presentation that describes what all has to be used in order to get it to actually work in the first place.

At the exhibit I was literally swamped. I was executing about three conversations at once and needed to be doing about five at a time to keep up with the rate of people arriving. Thankfully the PowerPoint presentations explained both what the Microsoft SSK (that's t…

Day 2 - SIC 2005

Today I found out that Internet access is "free" at the expense of moving to a public area and having to turn on my computer's firewall. However, that is a small price to pay compared to the rediculous $9.95 US per 24 hours of access that was originally thought to exist. Very few places actually do that rate any more. I guess they can get away with it because the hotel is "super fancy." Silly hotel.

I hung out with a couple people (Hi Carolyn and Jessie) from TechSmith today (a former life) after they spotted me. Well, technically I spotted them first, but only because I knew they were coming because they are sponsoring SIC 2005. I told them about this blog, so they are probably thrilled I mentioned them (and possibly annoyed as well because I mentioned them).

I met a whole ton of people today from a number of companies. As usual, I supplied all sorts of advice and advertised my products - perfecting my sales pitch for the ShareWrap product. Actually, I f…

Day 1 - SIC 2005

Unfortunately, I do not have access to the Internet at this point. The price for access is a rediculous $9.95 (US) per 24 hours here at the Hyatt. You would think that for about 450+ technical geeks at a single gathering wireless Internet access would be one of those nice convienences they simply give out for free. As it is, I am going to have a heck of a time getting the overhauled Powerpoint presentation onto my main PC. Oh yeah, I changed the Powerpoint after giving a short presentation to a guinea pig audience of people who don't understand the technology. That opened my eyes to the major details I was leaving out.

The Colorado mountains are actually quite lovely this time of year. While Michigan has skiing and stuff up north, I don't get up there very often. Besides too many jokes have been made of "Youppers" (Upper-peninsula). I took some photographs on my way back from visiting some relatives of the mountains and they are quite picturesque.

As to the pro…

The IETF

Frustrated by spam? Blame the IETF. I sure did today on their primary mailing list. I probably sparked a war :) Just in case they choose to block the post, it is here for posterity's sake.

Some guy named John wrote something that sort of triggered a lot of bottled up angst for the IETF. Partly because the IETF has turned, in the past few years, into a bunch of technically-correct drunkards. Instead of actually doing stuff at BOF (Birds of a Feather) meetings, they get drunk. Every time I receive a piece of spam, I think about how the IETF is not doing anything about it. Anyway, here is John's post and my witty reply:

------------
> John C Klensin wrote:
>[..]

>
>> But the notion that the IETF can prevent something from happening or
>> being deployed by declining to register it, or by turning our
>> collective backs on it without any real explanation -- even at the
>> waist of the hourglass-- is, in this world, just delusional. And, if
>> that delus…

Visual Studio freaked out

The Visual Studio .NET IDE just completely freaked out and went all Japanese on me. If you ever want to be scared witless, don't close the IDE for weeks on end and this too will happen to you. I've had Intellisense freak out before (giving me the hint I need to save my work shortly before the IDE decides to crash), but the IDE itself never freaked out before to change the actual text in the document to Japanese/Chinese characters. Source code really doesn't look very good in anything other than English 7-bit ASCII. I mean, UTF-16 might be okay from a visual perspective, but I doubt most compilers would enjoy dealing with that.

How does this relate to developing software? Well, don't do this. Users get confused easily. This sort of thing would only complicate their lives more and probably frustrate them to no end. Especially if they don't understand Japanese/Chinese/corrupt lines of text.

Everyone loves Garfield...

Completely and totally unrelated to software development, I found this:

http://www.garfield.com/fungames/comiccreator.html

And made this:



Okay, so it isn't exactly funny, but given that the tools given to people to use are quite terrible, I'd say it ranks somewhere from sort of funny to downright hilarious - depending on your personal luck with "the ladies."

As to how this relates to software development: Give people enough tools to get the job done, but not too many or users will get lost quickly (or use them for means they weren't meant to be used for). Given this tool is available free for everyone to use, you wouldn't want to grant too much power or people will start their own rogue Garfield strips. However, there are too few options to do anything remotely hilarious. It took me a long time to figure out the best way to pummel Jon was to use a pillow. That's frustrating. I could have used the other props. but the characters and objects are limited to the …

MSDN Library vs. "Grandma"

Dear Microsoft,Can you PLEASE stop using pictures of people on the MSDN Library CDs/DVDs? No offense, but this latest release has me realizing that I don't want to be looking at someone else's "grandma" for three months (the last one with that guy with the nasty goatee grossed me out for three months and this one is already making my stomach churn and my face turn green). While I'm at it, I don't want to be looking at anyone - about:blank suits me just fine. I'm sorely tempted to rollback several releases until I find a better-looking picture. But I know Microsoft wants to always look and sound impressive, so pictures of tech. stuff works fine by me. Come on, seriously, you've got plenty of geek toys lying around - Pocket PCs, Tablet PCs, that new mouse with the horizontal scroll - we're geeks and are more than willing to drool over cool stuff. Just no more people for a while...If you _absolutely_ have to use people, then stop making them lo…

Spyware strikes again...

I'm getting really fed up with the idiots out there who think they can install spyware junk on my PC even _with_ my permission. There should be a way to set some obscure setting in IE that says, "I'm a computer geek, I'm not stupid, go away. Go bother someone else who is vulnerable to such nonsense."

Take, for instance:

http://www.lyricspy.com/

Running that site in FireFox makes it show up just fine. Now load it in IE (er, assuming you have all the latest security patches installed) and you get a face full of some annoying Flash animation telling you to install their ActiveX (spyware/virus/trojan) control (um...no way) and a dialog box telling you to install the ActiveX control (still no way) and a whole lot of junk (the text on the webpage is busted - still no way I'm installing it). This isn't the first time I've run into this and I'm just picking that page out as an example.

In FireFox, just about at the same location in the source (if you can …

Really great monitor idea.

This is boiled down from a discussion on a list I own and moderate with over 5,000 software developers (I initiated the discussion):

Let's say you are editing code. What is the number one complaint I hear people talking about from IDEs and editors? Not enough text on the screen. Well, since everything these days operates on fonts, the natural thing to do is to first play with the fixed-width font size being used (variable-width fonts don't work for programmers).

So, now you have, if you are lucky, a font that can display maybe 140'ish characters across. The ideal width is roughly 200 characters. However, what about the vertical? Depending on the editor/IDE, most likely anywhere from 30-50 lines. The ideal height is 200 lines.

Okay, now what? Well, since screens operate on pixels, the next natural thing to do is to increase the number of pixels.

Okay, so you've got 1600x1200 screen resolution. Big deal. The font is so tiny you can't see it. So, you crank up t…

Logitech sales = clueless.

My Microsoft Intellimouse Explorer 3.0 USB mouse died today. Well, it was working on dying for the past three days. At first I thought a hacker had busted into my system, but it turns out that the manufacturing of this mouse is so poor that the cord simply becomes disconnected over time...inside the mouse. This particular mouse is self-contained and sealed - meaning no dust, dirt, grime, etc. can ever get on the optical lense - the downside is that repairs to the mouse (e.g. fixing the cord) are impossible.

I could buy a new one, but from the reviews on Amazon and what-not are not too good - it seems Microsoft has started making shoddy hardware that dies in months or even days of purchase.

So, where did I head for a mouse. You got it - Logitech. I went to their website and started looking at mice. They have a lot of mice. So, I said to myself, "Surely they know their competitor products and can sell me a mouse". So, I hit the link at the bottom that said, "Contact…

My love hate relationship...

Today I hate Microsoft. Some days I'm indifferent. Some days I love the company. Today I hate Microsoft.

It has absolutely nothing to do with any Slashdot or Register or other news article. Both of those sites loathe and are hostile toward any company and/or person that makes more than 1 million USD per year.

Nope. None of that. It has everything to do with DestroyWindow(). I hate Microsoft's DestroyWindow() function. MSDN Library has this one little innocent comment that caused me to waste an inordinate (and highly frustrating) amount of time today:

"A thread cannot use DestroyWindow to destroy a window created by a different thread."

WHAT THE...!?! I have words for that that are inappropriate for this blog. I need a good chunk of lye for cleaning of the mouth.

Let's think about this. I understand perfectly that people wouldn't want other processes calling DestroyWindow. That's uncouth. However, within the same process, Windows should never give …

Completely Random Thought of the Day...

Someone was having a conversation with me recently and brought up temperatures at which stuff is frozen. Of course, the conversation went downhill from there. However, I did get to thinking about zero kelvin...the point at which all molecules completely freeze. Unfortunately, my idea is impossible because no one has ever attained zero kelvin yet (we've come close, but not close enough for this idea to work).

Here's the rhetorical idea of the day: Take a person or animal or other living thing. What would happen if every molecule of that entity were instantly frozen to zero kelvin, left alone for two years, and then every molecule instantly restored to the temperature it was at before being frozen? In order for such an experiment to work, we would need zero kelvin cold storage AND the ability to immediately alter molecules on an immediate basis AND a couple volunteers.

This, of course, would have huge implications if it worked - this freezing/restoring process could perfectl…

The definitive guide to dinner.

There have been so many debates as to what dinner is and when it is and all that, I finally got fed up tonight and decided to settle the matter once-and-for-all. What follows is the Hitchhiker's Guide to Dinner...or something like that anyway.

First off, if you have 42 of anything in your food, whether it be molecules or atoms or subatomic particles, you can sell it on eBay for a few million dollars.

The basic definition of dinner is the "chief meal of the day" according to all sorts of dictionaries out there. Therefore, this means that whenever a person feels fullest, they have had dinner. So, if, at the time most people have breakfast, a person feels fullest after, they have had dinner. Universally accepted are the definitions of breakfast, lunch, and dinner.

However, if dinner is had at the time of breakfast, this probably means the person stayed up until 5 and missed breakfast and lunch. That's 5 a.m., not 5 p.m. - just in case anyone needed clarification on th…

A Funny Thought...

I just had a really funny thought. I was watching the evening news this evening and just happened to hear Dan Rather or some other equally ancient dude talking about how younger people seem to not care about private savings accounts and all the hoopla surrounding Social Security. My inital thought was, "Well, they don't care because they are watching Cartoon Network instead of the evening news."

http://www.cartoonnetwork.com/

At least I thought it was pretty funny. In reality, the reason we don't care is because I can name three things that are on the evening news occupying over half the timeslot:

1) Someone died in Iraq by carbomb/whatever or announcing airport security stinks.
2) Someone discovers that bananas cause cancer or another FDA approved blah blah blah gets mad cow disease or some other such nonsense.
3) Someone is pushing budget balancing, social security reform, this reform, that reform.
(Other, more minor, negative news follows - very rarely any positiv…

Uh oh...

Oh boy - two posts in one day. That's a rare treat for all of you, but I absolutely have to share this:

http://www.schneier.com/blog/archives/2005/02/sha1_broken.html

Don't bother reading the above unless you are in the security industry. There is only one thing you need to know: e-commerce = seriously busted. See, I am into the whole security industry thing and you don't need to be. However, when something this huge happens, you need to know about it - and perhaps the underlying technology of how it works. And this is huge.

Okay, we all remember...we probably don't remember but think we do...back when e-commerce was this huge buzzword and everyone was talking about how it was the hot next best thing? That was somewhere around 1998 and escalated into 2001. It is now 2005. In computer to human years, that is 80 total years for e-commerce.

E-commerce is based on a technology called Secure Socket Layer (SSL). SSL is called a layer because it transports data securely…

Ran across this...

I had no idea people could get SQL Server - you know, that huge hosebeast of a database server - for free:

http://www.microsoft.com/sql/msde/default.asp

Granted it only supports 25 concurrent users, but seriously, how many people is 25 concurrent users? The way I figure it, if a single user is considered as connecting and disconnecting within 100ms after executing their query, that's a total of roughly 250 users per second or roughly 15,000 users per minute without collisions. Of course, that assumes perfect timing connecting and disconnecting at that rate, so I'll assume there is some delay and say roughly 7,000 users per minute to be safe.

Of course, if people are hanging onto their SQL connections longer than 100ms, then the number drops dramatically.

Basically, if you are using Access or Jet or whatever, you can use this as a drop-in replacement. Sort of an intermediate step to a full-blown SQL Server environment. At the very least, it will be faster executing queries and …

Bit manipulation...

Completely unrelated to what I want to talk about (but got me thinking about CubicSpot):

http://99zeros.blogspot.com/

Mark Jen got fired from Google after leaving Microsoft and putting information about Google on his blog, which is above. It was easy enough to find - thanks to Google it was the "I Feel Lucky" link from my keyword search "Mark Jen".

CubicleSoft (http://www.cubiclesoft.com/) has been tasked with the task (there's an interesting paradox - tasking people with a task is a task that has to have been tasked) to move roughly 1.5 million lines of C code to C++. The process isn't incredibly involved because a majority of the code has already been written in a modular format and has been well debugged. It is just the stuff that isn't modularly written (or the stuff that needs to be _re-written_) that is the major time killer, what with all brand-new test cases and what-not. As such, I haven't been loyally blogging to my heart's content be…

More on the mini

Everyone's chatting about the latest development at Apple, so this is likely to get lost in the mix. I've been in contact with Bill Fox at www.macsonly.com. Great website, by the way for understanding what is happening in Mac land. Anyway, here is what I've been looking for in terms of hardware details that PC users are wanting to know. Bill's reply to my major issue with the Mac mini revealed some important information about the internal guts:

"The hard drives in the mini's are not Mac drives they are typical 2.5" ATA notebook drives found in PCs and Macs. Their RPM is 4200. You can get a 100GB 5400RPM notebook drive or a 60GB 7200RPM drive and those are the largest and fastest available.

If one needs a huge drive, one can use an external FireWire or USB 2.0 3.5" drive."


Apparently the Mac mini hard drive is not only small, but ALSO kind of sluggish. Most PC notebooks seem to have 5400RPM drives in them, but the mini is only 4200RPM. Howe…

This is going to take a long time...

I am in the process of moving roughly 1.5 million lines of C code to C++ for several very specific reasons I can't mention here - not yet anyway. I'm off e-mail, web surfing, IM, blogging, and general reality for the next 3-4 weeks.

I expect that by the time I get back, I will have my fourth case of Carpal Tunnel Syndrome (CTS) in the past three years. Wish me luck and, uh, I hope it doesn't take much longer than that. I have already had enough setbacks, but this one could knock me out for a while.

Time for an update

What's hot? What's not?
Below is my list of recommended companies to do business with and those whom you should avoid like the plague. As a developer, you need computer equipment and software that simply works. I am always looking out for newer and more interesting technologies to add to my core recommended list. If you are a hardcore gamer, these recommendations are not for you. If you are searching for a good PC that won't break down, these can be for you but may be slightly out of your budget.

Recommended PC and/or hardware manufacturers:
Dell. I have yet to have a problem with Dell. Good solid hardware, but not the best for gaming. Spending less than $500 on a PC will get you in trouble, though (you get what you pay for).

IBM. Good hardware. Unfortunately, they shut down their PC division, so parts will be hard to find. Expensive.

Micron. Their memory chips are still top notch for those who need an upgrade to existing hardware.

ATI. NVidia has simp…

Wow...in the "I have just been positively wowed" sense.

Usually when I say, "wow," I refer to the negative sense of the word. This is most definitely a positive "wow."

Apple has recently slashed prices on their hardware. About a year ago I got a new PC, but at the same time I was seriously considering a Mac. All developers, look at this:

http://www.apple.com/macmini/

The Mac mini is visually impressive, but that isn't what counts. I have been saying for a long time that people won't move to Linux because it is unusable. Macintosh/Apple/whatever their name is today (such is the sad result of mergers - you can't figure out a company's name any more), has their sticky fingers all over making a usable OS. I would recommend Mac over Linux any day. I could care less about proprietary hardware - in fact, as a developer, it probably makes my life easier.

For developers, I have been eyeing the Mac for a really long time. It has one thing that every developer needs: Three OSes rolled into one without reboo…

I have returned...

Eons ago, in a day before my time, Douglas Macarthur once said that he would return. When he returned and set foot on one of the islands in the Philippines, he said that famous phrase, "I have returned." (Unfortunately for him, Ahnold Schwarzenegger's line "I'll be back" seems to have superceded "I shall return" in more recent times - I would wager that the difference makes for a good history test question).

In roughly the same way that Macarthur returned, Microsoft today dropped a bombshell on the anti-virus companies. In my automatic updates in-box resides something called the "Malicious Software Removal Tool," which will get installed before the next reboot in roughly 23 days from now. Microsoft is wisely being very careful as they cautiously step on anti-virus vendor's toes not even daring to call it an anti-virus tool.

Most people will not remember back to the Windows 3.x days as Microsoft was busy trying to define what the …

An interesting article on blogs

http://www.developershed.com/plugin/PIM_200501.pdf

See the last page of that PDF.

The author discusses an important topic about bloggers. Basically, bloggers can control the results that come back from search engines. For those who have no idea what I am talking about, I am referring to SEO. No, this isn't someone who has decided to shorten their long name to three letters, but rather stands for Search Engine Optimization.

Most programmers are aware of things like Googlebombs and sites like that and generally think there isn't much to search engine optimization. Technically, there isn't. You want people to link to your site and they want you to link to theirs. A never ending battle of trying to get high quality and high quantity links to a website - and get spidered properly. The trick comes in knowing how each search engine algorithm works and what to do if it changes. Some people try underhanded methods to raise rankings. A Googlebomb, for instance, will get you …

Standard additions...

Okay, while I am not on the C/C++ committees, it has come to my attention over the more recent months and years that the core languages are simply not capable of handling modern devices - particularly dealing with PCs. If you search the archives of several of the many lists I subscribe to, you will frequently find programmers asking about how to use ANSI C/C++ to do:

1) Single keypress keyboard input.
2) Drawing graphics on the screen.
3) Printing to a printer.
4) Accessing USB devices (e.g. a scanner).
5) Responding to mouse movement.
(etc.)

Every single time, without fail, someone replies saying that these are not standard. I have, on occassion, jokingly made the suggestion that C was designed to output to a dot matrix or line printer. So, all of these discussions have me thinking about what to do. The result of all this thinking is that, because C is incapable of these things, people have to resort to using OS-level APIs. One of the major goals of C/C++ was to make it able to compi…

The English language.

"i am having TreeCtrl which have check box can any body tell me how to get check box click event or
what iwan to do is to select the child notes when theparent node is selected???
can any oyd help me????????????"

The English language is a rich language. Please do not misuse it. As programmers who participate in the art of writing code (it is an art) and the science of writing code (it is a science) know how important it is to have detailed and complete comments. Their comments in programming forums should be of equal value.

I found the above paragraph on a random forum. I'm sure Google will turn up where it came from, but realize that the topic of this is not about where the source is, but to use it as a mere example of the broad problem that plagues programmers. Programmers simply don't know how to write in English. If they can't write good English, they will be lousy commenters and therefore lousy programmers - no matter how good their coding skills are. They a…