29 February 2008

conformity I say!

Hey, it's the 29th of Feburary! I had to post on this day because it only comes once every 4 years right? This might be the only post *EVER* on this blog to have 29 February in the date header! Savour it! (Not to mention this gets me to the average of a post a week for this year thus far). じゃ、はじめましょうか。

You know what annoys me? Discrepancies between companies' touted specs and user-end interpretation. What am I talking about, you may ask? There are two prime examples of this: a) Internet Service Providers and b) Storage Device Manufacturers. First up, time to bash ISPs - aside from them screwing you in the butt with their prices.

Why do they still insist on using the bit representation of throughput speed? It's a capitalization issue as well! I hate it when people say "oh yeah, wellz, my internets is 5mb/sec! Uber fasts" Now you need to determine a few things:

  • What does the other person think is fast? This greatly influences whether or not they meant "Mb or MB"
  • Are they somewhat tech savvy? Do they know the difference between the two?
  • Using that information, which sounds more reasonable? "Mb" or "MB"?

I hate having to clarify myself on which term I mean when I'm chatting with people. There should be one standard that everyone should follow. I shouldn't need to say: Oh, I'm getting 6Mbytes/sec or almost 50Mbit/sec. It totally defeats the purpose of having an abbreviation "KbKB, MbMB, TbTB" for the concept of size. The only reason these stupid companies still use the bit scale is so that they can sound like they're offering faster services than they really are. They're targetting the average user who doesn't know too much about technological terminology. This pisses me off. 5Mb/s sounds much better than 0.64MB/s right?

Aside: It's like all of those $1999.99 TVs - it's not $2000.00, but $1999.99! That one cent makes a psychological difference to the audience. The same thing applies here, except much worse - at least with pricing, there's no conversion issue. It's like saying to an American that the TV is only £500. Even with this example though, it's not too difficult. Roughly multiply by 2 right?

With Mbit to Mbyte, the conversion is so much more "difficult" in that people don't normally divide or multiply by 8. This confuses some people when they see their service stating 15Mb/s service, but when they're downloading, the file transfer speed shows "only" 2MB/s. Abbreviations of terms should be consolidated. Don't get me started on the imperial vs. metric system.

Along the same lines of company specs vs. real world usage are those storage devices. 1TB SATA HDD! 750GB! 500GB EXTERNAL USB HDD! These manufacturers are even worse with respect to number manipulation. There's no subtle difference as with ISPs - no, no, when dealing with these companies, we don't get the luxury of deciphering the nuances of capitalization. These manufacterurs blatantly state their specs in large, bold, ^and misleading^ letters. I remember the *verrrrrry* first time I installed a hard drive into my computer - with the help of my dad, since I was probably 7 or 8. I can still remember him telling me "The red striped on the IDE cable will always be closest to the molex power cable". But I digress. At the time we were still in the age of the megabyte, so the displayed number on the HDD matched fairly closely to the one reported by Windows (95!).

Later on in life, when I installed my first 20gig hard drive (I was so happy: I went from a 1gig compressed to 1.5gig HDD to a 20gig (Does Windows have the option of compressing an HDD any more?)), I thought, "WHERE THE MONKEYS DID A WHOLE GIGABYTE GO!" So the next day I went to the school library to look up on the internet why this was happening. (Because school internet was faster than dial-up at home [remember those days too?, lego.com took forever to load at home, but it was flippin' awesome at school]). And sure enough, the answer was that the manufacturer was trying to screw me over.
1GB according to manufacturers is 1000MB
1MB according to manufacturers is 1000KB and
1KB according to manufacturers is 1000B

The only problem is (as brushed briefly before with the internet speeds) the computer uses 2^10 as the conversion factor between abbreviations. Now we've got metric versus binary. According to the manufacturer, their conversion rate is logical. According to the computer, its conversion rate is logical. According to the user, the manufacturer is manipulating numbers.

For every GB listed by the manufacturer, we're effectively losing ~50MB. Doesn't seem like too much?
For every 100GB listed, we're effectively losing 6.8GB.
This trend gets progressively worse with larger sizes. Each time you go up a tier, you're adding another multiple of 1000/1024 to the conversion.

Almost 70GB is "lost" in that translation! (I don't have a TB hard drive to know what real-life results are, but the numbers don't lie too much). That's just a little ridiculous dontcha think? This manipulation of numbers also applies to other manufacturers of devices that use storage: MP3 players, memory cards, USB-stick drives, ... if the device stores stuff, manufacters will find a way to manipulate the numbers to make themselves look better.

Consumers need to rally for a standardized system for manufacturers to adhere to when listing their product specifications. There's too much trickery and ... well I guess it's called marketing. I would glady support a company who reports their product specs in a way that conforms with practical and daily-use numbers. I don't care that the drive is "100GB" if I can't use in the "practical" sense - as in what I see reported to me by the computer - all 100GB.

This would ease confusion. I don't like being confused. I don't like it when others are confused. This is no excuse for not researching the product you are purchasing; but that doesn't mean manufacturer's should be free and able to distort the truth to their benefit. Perhaps I'm just fixated with organization and standardization. It's your call on what you think about my views. Have fun with life.

28 February 2008

doodles of emails?

So it looks like I won't keep up with my resolution of getting one post per week for this month of February. Whatever, we'll take a month to be 4 weeks and sum February and January's post together for a total of 8 posts. That'll even out to 4 posts per month right? Good.

Lately I've been running a lot of tests at work - it's all about making sure nothing is completely busted and observing all possible cases. That's what life is about right? You're constantly changing, but you always need to make sure you're on the right track and that you didn't screw anything completely. If you did, corrective measures are taken, right? So with all this testing, and a discussion with nien, a diagram was born.

This picture was designed in the ever so high-end application that you all should be familiar with. After being around for so long, this application has undergone surprisingly few changes! Come to think of it, Paint from way back in Win3.1 wasn't much different! For some reason I remember it even had a feature the current one doesn't: selective color erasing. Or maybe I'm confusing it with another application - I very well could be... I was, what... at most 8 years old when I was using Win3.11. Anywho, back to the topic at hand.

I was at work when this masterpiece was created; as you can see, it even includes transparancy of the two colors at the region where they overlap. Truly, MSPaint is a powerful application. This chart basically is concerned with Doodle Time - time at which one may constructively doodle without interfering with any form of legitimate work whatsoever. Thus, the diagram says. All code compile time is doodle time and all test time is only sometimes doodle time. I'll let the impact of that settle in.

What do I doodle? There's no real trend. Lately I've been imagining what kind of ofice/manroom/entertainment room I will have when I get a house. I began some rough sketches of that:But I didn't get very far. It's quite confusing, but I'm too lazy to go into explanations. Next topic!




This post deserves a horizontal rule line break because I believe this to be a fairly thought provoking matter - unlike the previous topic. Have you ever written semi-formal emails to people? The reason I thought about this was because sending emails around to co-workers / supervisors causes this issue. I do, however, encountering this issue when emailing my Japanese professor. I emphasized what type of professor due to some issues that I'm going to explore.

The body and the footer of these emails are the easy part. The body contains what you need to say, it doesn't truly need an introductory paragraph or anything because it's only semi-formal. The conclusory paragraph : same thing applies. The footer is easy, "Sincerely" is an accepted standard. If you're feeling like mixing it up, "Regards" will work as well.

(There is most probably a guidebook or handbook or set of rules that govern what I'm about to explore, but bear with me. This is just something that irks me.)

Now, the issue is... you guessed it, the header. What should the very first line be? Let's say we're writing a letter to Bob. I will now explore a few possibilites.


To whom it may concern,

Straight up wrong. You know who this email is directed towards. It's formal, but not useable.


Dear Bob,

This just feels weird and out of place in an email, don't you think? Plus, this is a person you know, and whom you see fairly regularly. It doesn't feel right to me.


To Bob,

Again, this is an email; the person already knows that it's addressed to them. After all, they're the recipient of the email! No good.


Hey Bob, / Hey Bob-san,

This works in cases where the recipient is on friendly basis with you, but this does not work with people who require respect - if only a little. Take the case of your professor - some may be completely fine with this address. Try it with the Japanese professor and you're in rude-territory.


Bob, / Bob-san,

This feels weird to me. I can't pinpoint why. But here's my attempt. These semi-formal emails are akin to talking to the person... in person. This is the best solution I have to my uneasiness about headers in emails. It works in the all the situations that a semi-formal email entails, but I still don't like it.


[Blank]

There's also the option of leaving the header blank and immediately starting the body. This... sometimes works, but I always feel uneasy doing so. There's the "rude-complex" that I have. It just feels rude to not address the person you're "talking" to.


With that said, there should be some kind of universal passive-feeling word that is not rude, but does not feel weird in a semi-formal situation. Something like... I dunno... "Fortu Bob," The only problem with that is getting the word into circulation and everyday use. The word needs to be instantly recognized as an addressal, but cannot be offensive at the same time.

I think I've wasted enough of your time. I do hope that the topic made you think a little. Until next time, take care and take it easy!

15 February 2008

shrtct

Not much along the lines of creative thinking for this blog has happened in my mind as of late. Guess there are just some days that are more conducive to random thinking than others - the past week or so has not been so. Still, I find myself feeling like I need to post something - no reason really. Not too many people read the blog regularly, so there really isn't all that much of a point to post. Still, it gives me something to do, I suppose.

On the computer, I'm all about the shortcuts and things that make navigation and manipulation easier. The right-click menu is awesome. What's not awesome, however, is unconformity with natural trends. -- That sure did sound like a load of BS -- What I'm trying to say is, different programs doing different things with context menus that one expects to be globally the same. Even though I said "what I'm trying to say is..." I still didn't get any clearer in what I was trying to explain - I'll need to work on that.

So, I like to use "Right-Click -> Close" from the Start bar a lot. It's very convenient, you right click the item and move the mouse just a tad and then left click. Simple! Yay! Window DESTROYED! Very satisfying. This kind of thing seems very standard, does it not? I would venture to say 90-95% of windows applications use this convention. By now, it just looks natural, right? Sure there are other weird ones that don't have a maximize button, or a downsize button. But the "X Close Alt+F4" option is still in the same place.

What gets me is those non conformers. I'm all about freedom of expression and creativity and all that jazz. But when it comes to something as structured and mechanical as a computer - some things are better meant to be universally the same.
What happened! AAAAAAH! Here are some examples of where things start to break down.

  • I'll go to close WinPAR: BOOM new selection list. What? No, that was supposed to remove things from my screen, not add stuff!
  • This next one irks me off very much and very often. (cygwin does the same, which I suppose is because it uses the same Windows shell interface.... or something) I go to close a command window, and whaddya know! A properties window pops up! Again, the opposite effect that I was expecting. Window close vs. Spawn window.
  • And then there's the old-fashioned Help windows. Yeah yeah, things have moved on to different types of help windows... Why do we need to know ABOUT the help window? It gives us help when we're retarded-imean stuck.
  • I don't have it any longer, but the old Creative Surround Mixer utility did the same thing as the Help window I showed. Information about the application - whoop-dee-doo.

That's all I have for today. I was going to talk about why single stall bathrooms still need a female or male sign on the door. Especially at a work office where the majority of employees are male. It just seems counter productive to have the same amount of "female" as "male" bathrooms when the inside of the bathrooms are exactly the same (Ok, so maybe half are the mirror image of the other half. big deal.)

Until I think of better things to share. Enjoy Life!

01 February 2008

Command n Conquer. Cookies n Code.

Parentheses (Is that how the plural form is spelled? It looks weird.) are destroying me today! It's like Left Parenthesis said, "Yo, Right Parenthesis, wanna screw with nfinite today?"

And Right Parenthesis replied, "Hell yeah!"

Ok, so they only screwed with me twice. They even had the nerve to call up Mr. Semicolon to aid them in giving me grief. What's all this about you may be wondering? I had a bad time coding today. I needed to change an implementation of a linked list into a circular buffer. (For those who know programming, you don't need those links, so I'm not trying to be condescending; just trying to educate). We started having memory leaks due to allocation and deallocation of each node. We knew exactly what was happening and why the leaks where occuring, but there was nothing we could do without restructuring a lot. To protect my employer's intellectual property, I shall now generate an extended analogy to the issue we were having - with COOKIES!

Let's say we have a queue of cookies. If we create this queue as a linked list, each time we add a cookie to this queue, we have to make a box to hold it. It's then placed on the conveyor belt and sent on it's way to YOU (yes, you, this is getting personal now. You are getting fed cookies, you should be happy!). Everytime you eat a cookie, you dispose of the box by means of recycling.

Now, sometimes you need to stop this conveyor belt for various reason (maybe you're too full and need a break from cookies... weakling). When this happens, a GIGANTIC MONSTRUOUS EPIC PENDULUM OF COOKIE STOPPING swings down and blocks the cookies. The problem now is that this GIGANTIC MONSTRUOUS EPIC PENDULUM OF COOKIE STOPPING occasionally swipes a box of cookies - resulting in the box to go flying into the depths of nowhere, never to be found. THIS IS BAD! We do not want cookies to get lost! (This was the memory leak that was occuring).

So instead, it was my task to go in and create a circular buffer. You can think of a circular buffer as an escalator (the linked list was the conveyor belt with boxes). For our purposes, the escalator is extremely sanitary. Each step of the escalator is a platform for a cookie. In this way, we don't need to make boxes for the cookies anymore. You are at the top eating the cookies as they come up, and the cookies are getting placed on each step starting at the bottom. The steps can be reused after they are cleaned of their cookies by you. Now, when the GIGANTIC MONSTRUOUS EPIC PENDULUM OF COOKIE STOPPING comes down, the cookie is small enough to avoid being swatted away. (See, the box was getting hit before, but since the cookie was in the box... ok my analogy is starting to break down here... but whatever! just know that there are no more memory/cookie leak problems with this approach).

Now that you understand the importance of ensuring no cookies are lost, I move on to coding the escalator - which is where Mr. and Mrs. Parenthesis start to toy with me. (They must not like cookies...). I hope I don't lose any of you at this point. It's gonna get a little more technical than eating cookies. Again, I am simply going to tailor this code to the cookie example. Take the following code:

That's basically the pertinent stuff. That should be straightforward except for (add_cookie_step+1)&COOKIES_MODULO. Each step is numbered 0 through 511 (for a total of 512 steps). This snippet says, if we go up one step and it's 512, the number will wrap down to 0. Basically it repeats counting 0-511 for us. So I compiled the thing and BOOM Right Parenthesis has an issue with me.

line 12: error: expected a ")"

I could not find a problem with it for the longest time. ALL THE PARENTHESES ARE MATCHED! There are the same number of left as right parentheses! I went to a fellow cookie-meister and he took a look at it and thought it was screwy too! What was the problem? If you found it right away, congrats. It's a lot harder when the code is ~1000 lines long. Apparently, Mrs. Right Parenthesis was having an affair with Mr. Semicolon. COOKIES_MODULO was defined as (MAX_COOKIES-1); This means that, to the compiler, line 12 said:

while ( (add_cookie_step+1)&(MAX_COOKIES-1); == remove_cookie_step )

That semicolon in there is a big no-no. It seems it didn't care about the following line though.

remove_cookie_step = (remove_cookie_step+1)&(MAX_COOKIES-1);;

Fine, fine, whatever. Problem solved.

I was going to explain the second problem that I had, but I would need to extend my analogy even more. I don't want to do that anymore. Just know that the code did not do what I expected it to do. I forgot to add that there can be multiple escalators. What happened, however, was that you ate only cookies on Escalator #0, but none of the others! "WHYYYY WERE YOU ACTING UP!" I asked myself.

if ( (Cookie->EscalatorNumber)&Escalators_To_Eat_From != 0 )

This line basically asks if the cookie is edible by looking at a designator of EdibleCookies (We can't eat bad cookies. We don't want to eat bad cookies.) Basically some order of operations mumbo jumbo happened. This line needed to be

if ( ((Cookie->EscalatorNumber)&Escalators_To_Eat_From) != 0 )

So when I didn't need parentheses, the compiler complained at me. But when I needed them, it didn't say a single thing.

I Hate You Mr. and Mrs. Parenthesis. Oh and Mr. Semicolon too (because I always seem to forget to add you to the end of lines, and then Mr. Compiler throws fifty million errors for the lines that proceed /rant).

Ok, I'm done, I hope you want cookies now. I sure do, but I don't have any. Sad day. Well, maybe Rainy has some cookies. She better, it's like a house-warming party. Since her blog is "reopening" (or something) she needs to give us cookies.

I know I said there would be pictures this post, but this post has gotten long. So I guess ya'll will just have to wait until next time! Stay tuned for sexy video cards, sexy keyboards, and sexy cars.
Stay sexy!