Logo




Subscribe:
RSS 2.0 | Atom 1.0
Categories:

Sign In


[Giagnocavo]Michael::Write()

# Tuesday, May 23, 2006
One year ago to the hour

This night, at around 23:30 we went to the hospital because Gaby was having contractions (3 months early). Exactly one year ago, to the hour, we went to the hospital for Mei. Fortunately, this time it wasn't as big a deal, a few injections and tests later and we're back home, everything ok for now... Just very... odd/coincidental/? that down to the hour we were going back to the hospital, one year later.

Mei | Personal
Tuesday, May 23, 2006 8:50:39 AM UTC  #    Comments [1]  |  Trackback

# Tuesday, December 27, 2005
Yey!

Well, we found out that Gaby is pregant again -- due sometime around the end of July (near my birthday? ^_^).

It was really exciting seeing the test show the two lines -- unbelievable at first. Then, really sad , as it brings back so many memories (well, not like we don't re-live them every day anyways). I can see how parents have a hard time equally sharing among too kids. Sometimes I feel guilty getting so excited about this new one when I think about little Mei. I realise that Mei would want us to be happy for her sister, but it still feels sad.

Anyways, I'm sure as soon as I can start feeling her my outlook will pick up. Right now she's a little jumping grain of rice :) -- 146 heartbeats/minute.

Mei | Personal
Tuesday, December 27, 2005 1:49:35 AM UTC  #    Comments [3]  |  Trackback

# Friday, August 12, 2005
I can't be online yet

Landing: 15.30
Shuttle to downtown Denver: 45 minutes
Getting tour of apartment and keys: 30 minutes
Stopping by leasing office to find closest wireless vendor: 2 minutes
Figuring out that 16th street has no relation to 16th avenue: 20 minutes
Walking to 16th street: 7 minutes
Purchasing Ricochet modem: 5 minutes
Walking back: 7 minutes
Installation: 3 minutes

So, yes, it's quite possible to get medium-speed, non-premeditated Internet access in a new apartment, without any knowledge of a city you've just landed in.

Personal
Friday, August 12, 2005 12:58:33 PM UTC  #    Comments [4]  |  Trackback

# Wednesday, August 10, 2005
I'm out

Adios, Guatemala. I've got a one-way ticket to an undisclosed location a few Mkm to the north of Guatemala. Finally. After 8 years, I can honestly say I'm not going to miss too much (o.k., well family), and I'm quite happy to go. And not because “the grass is always greener”, but well, read the Guatemala and Mei categories here and you'll have an idea why. Nice view, facing mountains, and not towards Guatemala :\.

On a less down-sounding note, it's a very large and exciting opportunity where I get to combine a lot of different technology. More on that soon. A LOT more on that soon. Got a lot of topics (tech related, imagine that!) that I really want to talk about.

Oh yea, and I get to live in a nice place with 6mbps/768kbps ADSL, where things pretty much “just work” (well, relative to Guatemala anyways). So, 12 more hours and I'll be checking a few large boxes and flying “Pollo Campero” class (everyone feels compelled to bring that chicken *shudder*, even though there's places in the states where they sell it!) -- for several hours.

Guatemala | Personal
Wednesday, August 10, 2005 11:02:01 PM UTC  #    Comments [2]  |  Trackback

# Thursday, March 31, 2005
Last day as an MVP

Well, I didn't get reawarded this year, so today's my last day as an MVP. I didn't get reawarded this year because, lets see.... I didn't do anything to deserve the MVP award. I wholly agree with their decision, and I'm quite sure another way more qualified person is now in the program. I'm just really busy with this thing called “real life”. Growing up, I wasn't sure it existed :). Anyways, with a baby and some serious work issues coming up ahead, I doubt I'll be able to do much for the community for the next while anyways.

Anyways, it was a great ride, lots of fun. Thanks!

Personal
Thursday, March 31, 2005 9:32:13 PM UTC  #    Comments [3]  |  Trackback

# Saturday, December 25, 2004
Merry Christmas from Guatemala

Well, I'm heading off to my parents' place, and my in-laws. And of course, what better way to celebrate than with kilos of powder! This year has surpassed every other in terms of aerial payloads. For less than $8, one can buy rockets with about 1kg of gunpowder. Some people have been launching these every day for the past week or so. They set off car alarms blocks away, and the diameter of the burst is probably about 20 metres? I suck at estimating sizes and weights, so maybe it's 50m. Or perhaps 5 cm. At any rate, it's big.

Last year we set someone's roof on fire in our fire-induced bliss. But to be fair, it was their fault since they never clean their roof, and it had lots of dry, dry, pine needles on it.

I bought a “Christmas Basket” for our security guards here. I'm not sure what gift baskets in other countries have, but here it contained this:

 - 1 litre of rum
 - 1 can of “Vienna” hot dogs
 - 1 bag of large marshmellows
 - 1 box of crackers
 - 1 box of brie cheese
 - 1 can of SPAM

I'm not sure what the continuity is here, but they seem to sell quite well.

Anyways, happy times to all, and if I don't blog for a few weeks, it'll be because my brother wasn't joking when he said he wanted to launch a shell horizontally. That, or I was attacked by a drunk with a can of SPAM.

Guatemala | Personal
Saturday, December 25, 2004 2:07:06 AM UTC  #    Comments [1]  |  Trackback

# Friday, November 26, 2004
Telgua ADSL: Turbonett -- really sucks

Isn't this fun? I ordered ADSL from Telgua (Turbonett -- their marketing people are morons, yes) at a price of $229 a month for 512k. Ridiculous. Even more crazy is that now, 2 months later, they haven't installed the service. Also, since Telgua moves your phone line over to the Turbonett people, now my phone line doesn't work either. Every call to them, including talking to manager ends with some silly statement about how the technical people don't have phones, so you can't call them. I asked the guy if I should just cancel my phone and switch companies and he said “yea, you're right.” I'm supposedly getting some cable Internet today, so we'll see how that works out.

Personal
Friday, November 26, 2004 8:49:42 PM UTC  #    Comments [2]  |  Trackback

# Sunday, November 07, 2004
Send a gift to a Guatemalan orphan

My brother is running a charity this year to buy Christmas gifts for orphans in Guatemala this year. For under $10, you can get a gift delivered to an orphan this year. If you'd like to, go check it out: www.ProjectHappiness.org.

Guatemala | Personal
Sunday, November 07, 2004 4:40:31 AM UTC  #    Comments [1]  |  Trackback

# Friday, November 05, 2004
Sign the receipt you keep?

Earlier this week, I paid the local security providers (guards who supposedly guard the neighbourhood). The next day the guy came with my receipt, so I told him to leave it in the mailbox. He said, “I can't do that. I need you to sign for it.” Not sure why they do this, but whatever. Best not to argue with the guys who walk around with shotguns, know where you live, and so on, right?

So I'm handed a sheet of paper with a bunch of names and numbers on it, and told to find my name. OK, there we go, #1088. He looks in his folder and finds receipt number #1088, and then has me sign it. Then, he gives me the receipt I just signed. So I ask him “Why do you have me sign this paper, if I'm going to keep it?” “Umm, well, we have you check your name off on this list, so that we know you signed the receipt.” Alright, I'll check my name off... crazy but whatever. Oh, what's this, my name's already checked off, as are most of the names on the list. “Ahh, well. You are normally supposed to check off your name.”

And this guy gets paid to walk around and do this? It just really makes me wonder what kind of thoughts go through some peoples' brains. I wish I could have a short glimpse into some of these minds and see how it works. I mean, do they feel a fog over their mind? Or is it like they just don't care? Or does it feel like I do when I think about anti-matter warp drives: I have some clue as to how it's supposed to work but really don't know much details and probably wouldn't understand them if I did? 

Guatemala | Humour | Personal
Friday, November 05, 2004 3:28:48 PM UTC  #    Comments [2]  |  Trackback

# Wednesday, November 03, 2004
Help out: Hold an intervention

OK, I hardly do any politics here, so here's my one shot, considering the US elections failed. What a bad omen for the new few years eh? Anyways, instead of just complaining, I think we (people of the Earth) should step in and help. A bunch of other countries should get together and hold and intervention for the USA. Just like a friend on cocaine (or something bad) -- you perhaps watch and warn the first time it's a problem, and after that you just get involved.

Other nations should just step in and say, “We're sorry. We love [some] of you. We can't let you continue to do this to yourselves.” And then we would put someone else more competent in charge. Maybe Tommy Chong. “It's only for your own good” is what we'd tell the states. Faced with a world-wide show of love and support they'd definately see their folly and agree, right? Maybe not, judging from the voting maps. If you look at the voting maps, Bush is very much skewed towards people with pitchforks and gun racks in their pickups, while non-Bush is skewed towards people with an IQ above 110. Then again, we'll probably see a few more soverign countries blown up anyways, so there's probably not much to lose.

OK, I'm done.

Humour | Personal
Wednesday, November 03, 2004 8:50:15 PM UTC  #    Comments [6]  |  Trackback

# Tuesday, October 12, 2004
A baby...

Just got back from LA, where I was attending the Internet Telephony conference. Just when I thought things couldn't get more exciting, my wife tells me: “I'm pregnant.”. Very cool. Can't say much more than that it's completely amazing and quite exciting.

Personal
Tuesday, October 12, 2004 1:40:08 AM UTC  #    Comments [2]  |  Trackback

# Saturday, September 18, 2004
Finally, REAL broadband: 30Mbps

30Mbps to your house:
http://www22.verizon.com/ForYourHome/Fios/packagePrice.asp
A tad pricey perhaps, but at least it's a start. Meanwhile, down here, I'm paying $229/mo for 512k...well, I will be, whenever they come to install (perhaps a month).

Guatemala | Misc. Technology | Personal
Saturday, September 18, 2004 3:53:21 PM UTC  #    Comments [1]  |  Trackback

# Friday, August 27, 2004
Back in Guatemala

Actually, I've been here for over a week now... or has it been two?

What's bad is that the house (and more importantly, the Internet connection) that were promised to us turned out not be available. So meanwhile I'm on a DirecWay (yuck!) connection and a CDMA (interesting) connection. Both are slow. Both have high ping times. The CDMA connection is better than DirecWay, but it's still lacking. The cool thing is that a simple USB/PCMCIA card can connect at 128k to 2Mbps almost anywhere in the country, for only $50 a month!

Coming to Guatemala now seems a lot different than it did the first time I got here (Almost 7 years ago). More correctly, Guatemala hasn't changed much (OK, widespread Internet and cell phone access apart), but I've changed a lot. Living in Atlanta for 6 months really got me comfy on some things (like high speeds, or being able to actually order stuff online). Other things I had gotten so used to in Guatemala and then Atlanta, I've just noticed them more. Here are some random items:

-Driving. I don't have a driver's license, so I only drove once or twice while in Atlanta. Even then, it was only for a few minutes, and rather nervously. (My brother insists that you don't need a license or insurance to drive in the states, but I'm pretty sure they'd arrest you.) In Guatemala, I can use my own printed license or a few dollars. A few years ago I was stopped with no license or registration at all. After indignantly claiming I didn't need a license, the six cops settled for about $7, and even offered me change. I have a friend here who has used his university student ID card as a drivers license and it works fine. Of course, driving again just reminds me how much I hate driving (well, more specifically, traffic).

-Slow pace/bureaucratic . The USA, being quite consumer-oriented, seems to move quite fast for many products and services. Call Comcast, give them your address/phone number, and they're there in a few days installing your Internet connection (OK, YMMV :) ). Down here, it just takes longer for everything. DSL? Fill out 5 pages of paperwork, sign a 1 year contract, etc. etc. Then they might install in a month. For the Bellsouth CDMA access we have they wanted 3 bank statements, legal ownership papers and a whole slew of other stuff -- all this for a $50/month service and about $100 in hardware. Just a different pace to adjust to -- probably better for your health.

-Different freedom. While Guatemala's laws are complex and strict on some things (for instance, making an invoice requires the government to approve the design of your invoice), they are usually marginalized because of lack of enforcement or corruption (the oil of bureaucracy). I drive a 89 Jeep Korando, which wouldn't pass any inspection of anything, yet it's not a problem. I'll leave my Internet connection on (when I get a real one) eMule 24/7 and never worry about the MPAA/RIAA suing me. Of course, there's downsides to this (i.e., don't make strong enemies, since the police aren't gonna do much about it). The interesting thing is the odd things that might be enforced. For instance, broadcast on an unlicensed frequency (and almost all frequencies are licensed here), and the telecommunications agency will triangulate you and fine you quite quickly. Also, you can get stopped and fined for driving while talking on a cell phone (however driving a vehicle with no doors, exhaust like a burning oil field, and no headlights, will hardly get you noticed).

-Homogeneous environment/culture. In the states, you find all sorts of people. Companies and people must be somewhat politically correct in some areas. It's harder to make assumptions about people in the states (say, which holidays they celebrate). In Guatemala, you have essentially two groups: the Mayans and the Latinos. Inside the two groups, a lot of common thought is shared. Nothing surprising really, it's just that you don't see this as much in the states since there's quite a bit more of a mixture, and here there's a lot less diversity: I've seen perhaps 10 black people in Guatemala city and the surrounding areas (go towards Belize and of course this changes) in the years I've been here. Once I saw a company van (a photo company) driving around with loudspeakers playing a common anti-gay song at full volume. I highly doubt they got any complains.

-Radio/TV suck. Oh wait, that's not differnet. They suck in the states too. Although, I'm able to get Korean TV included in the cheap ($10) cable package (unlike Comcast, who wants $15/mo for *one* channel more).

-Money. Basic living costs are much cheaper (rent, food, etc.). However, go above that, and you get gouged. The big electronics store down here (related to Sony) sells the same equipment for about double or triple the cost of what'd you'd in the states. Telgua wants $150 for a 128K ADSL line with a public IP ($50 a month if you want private). MS Office 2002 retails for $500+ at Office Depot here. Also, good luck on finding a GeForce 6800. Yet, you could get an Oracle DBA with 8 years of experience for probably $2000 or $3000 a month.

-Armed guards. Something I'm so used to I almost forgot: armed guards. Everywhere. At the bank in Atlanta, I think the guard had a pointy stick and a .22. Here, the guard at the postal office had some mean-looking automatic assault rifle. Pretty much any mall, store or any place with anything of any value will have really-armed guards. After a bit they just start to blend in. And in reality, I doubt they help that much. I worked on restoring bank robbery footage, and the poor bank guard in one attack couldn't even pull his pistol out in time. Also, the thieves are similarly (or more -- in one video, they came in with some machine gun type thing that was around 150cm long), and have the element of surprise. In fact, I'm not even sure how a guard would use an assault rifle in a mall or a bank. Police are armed like that too (once I got stopped on foot by police -- by having their uzi stuck into my back), but they've got some training at least.

-Security. Since the police force is not an effective deterrent (since the response is not that great), a lot of focus is put on prevention. This is directly in constrast to the states, where prevention is hardly anything, and everything is based on detection and response. Almost all houses will have a wall around them, some with razor wire or perhaps broken glass on top. Driving around in Atlanta's suburbs seemed so strange, since you could look, or walk, right into people's houses. Also, I've yet to see many residential windows that don't have iron bars across them. Having homes be like mini-fortresses just seems natural after a while.

Those are just some differences, some nice, some not-so-nice, that I've noticed. I'll try to remember some others.

Personal | Guatemala
Friday, August 27, 2004 5:58:52 PM UTC  #    Comments [4]  |  Trackback

# Saturday, August 14, 2004
Wow, these fortune cookies are right on

Since I've been living alone for the last few weeks, my main food intake is from a local Chinese restaurant. About a week ago, I got this fortune inside the cookie: “An exciting new job will present itself soon.” And the next day, I got a call from a recruiter with XXX. Exciting is an understatement. First time a fortune cookie has been that accurate for me. Because of this, I still order from that restaurant, even though they had a roach in my soup the other day.

Two days ago, I got this fortune: “Someone you haven't seen for a long time will re-enter your life.” Now, I tried to imagine who this could be. Well, again they were right. Yesterday, I sadly said farewell to a friend: My MSDN Code Center Premium Smartcard. The shared source licensing doesn't apply to Guatemala, so I had to have my account deactivated and card returned. Today I'm fixing an error in an app where FormsAuthentication isn't working correctly (signout is not happening). Usually, I'd just slip in my card, navigate to com/netfx/framework/xsp/.... and well, I'd have the source and figure it out quite quickly. That's no longer an option. Enter my the someone I haven't seen for a long time: ILDAasm. Sigh.

Personal
Saturday, August 14, 2004 6:27:04 PM UTC  #    Comments [5]  |  Trackback

# Wednesday, August 04, 2004
Little bit of clarification on "3rd world"

My great friend Herbert Sandoval left a comment on my entry about returning to Guatemala. He's a little pissed at me for sounding so cocky and, well, ignorant, hypocritical, etc. And, well, he's got a point there. What is 3rd world? Who is any other country to decide what's 3rd world? But is it an offensive term? I certainly use it to describe certain characteristics. They may or might not have anything to do with 3rd-worldliness (whatever the hell that is). I've lived most of my life in the USA, and Guatemala, with a bit in Canada, so it's not exactly like I have a wealth of data to pull from. He makes some great points about culture (well, *I* made those points quite a long time ago myself, so I want some credit for those ideas!!! :)), and “if you're a 1st class country, why go and attack less fortunate countries” <ok, let's not say anything since I don't wanna start a political battle here!>.

So if anyone is offended, my deepest apologies. That's just a term to describe some of the things I face there. That's all. I don't think I would have married someone from there if I thought “3rd world” was an offensive term. I do like being able to order a Arctic-Cooling Super Silent 4Pro L Heatsink/Fan for $10 and have it arrive at my door in 2 days, and I like being able to use PayPal. Or make a phone call and 5 days later have a 4Mbps connection. As I noted in my comment, perhaps my definition of “3rd world” should be related to how fast I can get a great Internet connection :).

Then again, go check out my parents' clinic: www.hands-of-hope.com. Talk to Anita about what she deals with every day. Sure, things like this can happen everywhere. I think the general term “3rd world” comes out of that in certain parts of Guatemala, things like that are more common. It doesn't reflect on individual people like Herbert (who is a kick-ass designer -- if you ever need graphic work, go here: www.expletus.com), or Juan Gabriel (probably one of the best people I've ever worked with). Just please remember you don't decide where you are born. Being proud or offended by nationality is childish. It may be fun “Yea, we're the best, let's rock the world!“, but it's still silly. I can't remember the last time I was offended by hearing anything negative about Canada. I'm not “proud to be Canadian“ (although I love the passport). There are people doing advanced technology and all sorts of things all over the world. Countries are too large a unit to do much with :). Hey, here's a brand-new blogger, a Visual FoxPro developer in Guatemala.

Being “3rd world“ doesn't affect everything in Guatemala. Actually, being “3rd world” is only a label, it doesn't affect anything at all, except perhaps some peoples perceptions. Hell, if you're in Guatemala City, you probably wouldn't notice much different from many other cities. I love staying at Johnny's Place out in Monterrico. Eve Andersson has a great tour of Guatemala. However, certain things remain factual: high illiteracy rate, lack of medical care in certain areas, widespread poverty in certain areas, crime, etc. There are certain disadvantages (Internet access being my #1 complaint :)). I'm not making any judgements, just saying how I see it. Correct me if I'm wrong. Perhaps it's an elitist term I should stay away from, but I've never cared for being PC :).

Personal
Wednesday, August 04, 2004 9:56:05 PM UTC  #    Comments [2]  |  Trackback

# Monday, August 02, 2004
Living with stupidity

One of the biggest things I hate about living in Guatemala is the seemingly constant deluge of stupidity from companies.

For instance, when paying your electric bill, you have to have exact change. They don't allow you pay via card (they told me it was because Visa doesn't do that kind of thing over the phone -- WTF?), so you physically have to go in with cash or a check. I once saw someone show up, and their check was for 10 or 20 cents more than their bill (which was for hundreds). They told him to come back with the correct amount.

One thing that really annoyed me was with PriceSmart. Usually they seem to be rather intelligent people, and most problems have had a nice resolution. However, for quite some time I was trying to buy a trampoline. I called all around the country looking for stores. Some had them, but with crazy prices (say, $600 or $800). PriceSmart sells them as well. However, out of the many times I went to PriceSmart, they never had them in stock. I asked them “Why oh why don't you buy enough? They keep on selling out!“ The response was “We do buy enough. But people keep on buying all of them.“

Well, this just happened at Target. I just bought 2 Philips DVP642 players. Why? Well, simply, it's the best bloody player out there. Region free, plays DivX, XviD, optical and digital coax output, handles DVD+/-R +/-RW and +R DL. What more can I ask for? And at a price of $70, it's cheaper than most other players out there. Well, I asked to purchase this at Target and was told “Oh yea, for some reason everyone wants that one. So we're always sold out.“ .... So even the sales clerks realise that it's a hot seller (even though they can't stand why anyone would want to pay less for more), yet they don't stock up on them... Sigh.

The good thing is that now I'm realising the business idiots are all over the place too. I used to think the USA had capitalism and business logic deeply infused in it, but knowing that is not true makes it a bit easier to deal with it wherever I live -- at least I'll know the grass isn't always greener :).

Personal
Monday, August 02, 2004 8:27:15 PM UTC  #    Comments [2]  |  Trackback

# Saturday, July 31, 2004
Moving to Guatemala

A few days ago my wife left for Guatemala, since her “permission“ to stay in the U.S. expired, even though her visa's good for much longer. INS (or Citizen Services or whatever lame name they've come up with now), allows you to apply for an extension. In this case, I only wanted a 3 month extension, and applied a month in advance.

Their website indicates it only takes a few days for processing... great! Well, by “few days for processing“, they mean “few days to notify you that we'll start processing“. Their estimated processing time was around 6 months. We'd have had to applied for an extension before we even considered moving to the U.S. $200 for that... sigh. I'd like to dispute the charge since they are purposely misleading on their site, but I'd actually have to spend time dealing with them, so it's not worth the hassle. So off to Guatemala it is.

Seems like just a few weeks ago I was moving to Atlanta... anyways, there are some other good reasons:

  -I did what I came here to do (get some work done on InvisiSource)
  -I remembered that I don't like living here that much after all (OK, I noticed that months ago)
  -Trying to stay here legally long term is too much of a PITA (which is funny, considering this country was built on people leaving other countries)

There will be some things I miss such as my 3Mbps Comcast line. And...that's about it. Fortunately, Bellsouth is offering a 2Mbps wireless connection where I'll be living so perhaps that'll be close enough...

On the plus side:

  -I'll be near family (both my immediate family and my wife's family)
  -I'll no longer have a problem driving without a license or insurance
     (actually, pretty much any issues like that are cheap enough to solve)
  -I'll make more money (cheap cost of living, no IRS worries)

Of course, there are a lot of annoying things about living in a 3rd world country, so this won't be long term. I'm planning on getting my wife Canadian residency while down there, so we can eventually get Canadian citizenship for her. After that, then we can move anywhere we want without immigration troubles. Then the only issue becomes finding a decent country (Canada looks nice)...

Personal
Saturday, July 31, 2004 6:51:08 PM UTC  #    Comments [4]  |  Trackback

# Friday, July 23, 2004
A few interviewing tips for both sides

I interview people as part of my job. Many times I know of someone who's looking for a good developer and I interview people every so often. I'm not by any means an expert interviewer, but I've learned a few things. Here are some notes for both sides of the table. These apply to technical interviews.

My goal as an interviewer is to determine what you know, and what you do not know.

1: Be honest
It's ok to say your an expert in a certain area, but know where you are not. Unless you wrote the entire system in question from start to finish, there's probably a few areas you are unsure in. Take .NET for instance. .NET is huge. It's impossible that you are a guru and know every IL and x86 instruction in every single class. You might have worked on many different parts, but don't try to say you aren't weak in any of them. The interviewer will find an area you're weak with, and you'll be forced to make a retraction “Oh well, actually, I've never touched remoting or Windows Forms.” It's not BAD to not know something. During an interview, the goal is to find if you're smart and will work well. If a question is asked and you have no clue, *say so*. I try to ask a question like that every time (some esoteric thing). Good candidates will answer with “Well, I believe this is related to that, but I'd have to look this up to be sure.“ or “I'm not familiar with that.“ Bad candidates will try to make up some BS answer, perhaps thinking that you have no clue what it is either. In other cases, the interviewer just wants to know your limitations.

If you are interviewing, and feel like you're getting BS'd, start drilling down. Perhaps the interviewee misunderstood the question or is unsure of what you want. I like to give people a second chance if they start something, just to show that BS isn't going to fly. However, if the second answer to “So, you have no weaknesses?“ is “No...“ -- red flag.

2: If your resume says you know something, you better know it
Don't copy and paste the .NET Framework class library reference into your resume unless you truly understand how to use each class in detail. If something's on your resume, we'll pound you on it. That's how we determine how well you know technology. The specifics aren't important. If you write “.NET Remoting”, you better be able to tell me what MarshalByRefObject does and how statics work in this context. If you have a CS degree you better sure be able to tell me what a binary tree is. And by all means, don't say you're a C# expert, and go on to describe that C# is actually just a mix between JavaScript and Visual Basic. (Yes, that really happened.)

When interviewing, many times a great candidate won't have experience with the particular technology you're using. That's ok, provided they can learn and are good in other areas. The problem is always trying to find something you can quiz them on. I look to their resume and see. Whatever they list, I ask them to rate themselves in it. If they still say they are experts in it, then I'll drill in with a few questions on that technology. “How good is their best?“ -- that's what I want to answer.

3: Know some basics
Everyone who can type can use Visual Studio. Saying you built a data-driven app with ASP.NET only tells me that you have basic mouse and keyboard skills. You better be able to handle some fundamental *thinking*. Traverse a tree, reverse a string, add items into a sorted array. Don't bother trying to defend saying “these are impractical -- when's the last time you used BinarySearch in a real app“? Umm, let me think... yesterday. You won't get hired for *real* work if you are just a IDE groupie. Sure, you can make cool things happen, perhaps even get paid. But I'm also interested in that the code you generate is decent. Sure, in many cases you might be able to go allocation crazy and box 1 million ints for fun. In other situations, you'll need to write better code, and you need to know how to do that. If you don't want these questions, say you dropped out of school and have been just programming for years. While it might not save you if you're an idiot, at least it gives the interviewer a frame of reference. At least that's better than saying you have a CS degree, but not knowing what a BinaryTree is, how to sort an array, or so on.

Interviewing people for .NET positions can be hard, because Microsoft's done the hard work for us in most cases. One red alert is “Well, perhaps I'm not that good in that, but I know my way around .NET.“ That's like a mechanic saying “Well, hmm, I'm not sure of the difference between these fluids and those hoses, but I've got 101 power tools and a lot of rags, so I can get it working.“ You don't want people who just “get stuff working“. You want people who are going to build something nice, something you don't mind working on later on.

4: Ask for clarification
If you are unsure about something, ask to clarify it. If you think there could be something else, ask. If you have to write a function, get some context. Is this part of a realtime process and needs to execute with a given amount of resources? Or is this a drag-n-drop application that runs once a year? Sometimes it won't matter, but when it does, you've saved yourself the trouble of saying “Oh, I didn't know you wanted *efficient* code. Let me go rewrite that.“.

Sometimes it's a good idea to hold details back to see what the interviewee does. Good candidates will try to gather requirements or probe you to see what's going on. Not so good candidates just start blasting away. On the job, that means they might be likely to just write some code without much forethought of how it's going to work with everything else. Or it means that they might spend 10 hours writing a super-efficient algorithm in x86 for something that's only called once a day or will never be a bottleneck, thus lowering productivity. Try to see what balances they strike out, what trade-offs they make. If a candidate seems hestitant, volunteer some information. On interviews, people react differently than they will on the job. Hesitation might just mean they want to ask, but are afraid of negative points.

5: Have a good attitude
Almost always, you'll be joining a team and have to work with other human beings. While it might be “right” to get the smartest person ('cause intelligence is all that matters, right? :)), even if they are arrogant, it probably won't happen. You'll want to show that you will get along with other members on the team.

When interviewing, I try to make sure that this person is going to cooperate. Are they going to write code while getting feedback from others? Or will they write their “own” code and defend it at all costs? Will they help out other team members, or try to fight for the “top”?

Anyways, those are just a few notes I've realised when interviewing people. Hope it helps someone!

Misc. Technology | Personal
Friday, July 23, 2004 8:20:37 PM UTC  #    Comments [4]  |  Trackback

# Thursday, July 15, 2004
Interviewing at Microsoft

Anyone who knows me knows how much I like Microsoft. That company has repeatedly improved my standard of living. Since I spend too many hours a day using their products, they've made a huge impact on me. Sure, people can make their comments about MS, but the personal computer industry would not be the same had individual hardware makers (IBM) gotten their way (just think about if no one had a common software model to work against). Being a developer just really increases my fondness of Microsoft, since Microsoft loves developers a lot. Visual Studio is an amazing product. So, you can imagine how excited I was to interview for Microsoft.

I had been “hoping” to get an interview there someday, a hope that I really never expected to come true. Thanks to someone, I got my resume submitted via the internal site. Knowing that many hires come from internal referrals, my hope was now increased. My chances were now somewhere less than 1-in-the-length-of-a-whale-in-nanometers. Quite some time passed and I had heard nothing (as expected). Then, one day, out of the blue, I get an email from a recruiter asking if “I'd be interested in an opportunity at Microsoft”. I thought it was a joke at first, but after verifying that person does indeed exist at MS and is indeed a recruiter, wow was all I could think.

Now, let me tell you a bit about myself. Internally, my emotions are held in an signed 16-bit register (ok, it's technically more complex than that, as any 8th-year-neurosurgeon knows, but I'm making a point). Usually that works just fine. Well, not in this case. My excitement levels quickly overflowed and then I calmed down. And then I got excited again, and so on and so forth. This continued to happen over the next few weeks. Perhaps the closest experience was when I installed the first Whidbey alpha, where I promptly hyper-respirated, blacked out and fell out of my chair. At least I had soft carpeting.

Well, I responded to the recuiter, saying that “Yes, I'd be interested.” This was followed by a phone interview, to see what experience I have, what I do [not] well, and so on. I was told that I looked interesting because of my C# background. I also found out that I wasn't found in the internal database, but just by searching on the web. Wow. The recruiter was from HED, the Home Entertainment Division. This includes XBox, Encarta, and so on. I still didn't know what the position was, but I tried to find it on the online site, and thought it might have something to do with an XBox server, since that was the only posting that was geared towards a C# person. I don't have any experience programming games or 3D so this seemed a bit odd. The only info I had was that it was an SDE position involving C#.

I soon got an email from the recruiter with details on the position (it's a new product), and asking when I could meet with the hiring manager. About a week later had an interview with the hiring manager, the person who would be my boss if I was accepted. This was more technical, asking about specific technologies, having me explain some design decisions I'd make, and a technical question. I thought I was doing pretty well up until the technical question. It was a trivial question about linked lists, but it seemed like it took me forever to answer it. I suppose it was only a few minutes, but I sure was sweating. We then talked a little bit about the order of complexity of the solution. At least the asymptotic analysis came quickly to me.

After the question, I figured I had blown it. I thought that surely even a half-year CS student could answer it in 5 seconds (something that I later found not to be to true of many people). I never did much formal education, dropping out after grade 10 or 11. So I haven't learned or memorized any “basic” CS stuff via any normal channels, but instead mainly through experience. The next question confirmed it: “What's your education level?”... “Umm. None. I've just been using computers since I was 3 or 4.” “Ok, I see. Well, the recruiter will follow up with you...” I wasn't going to take that for an answer. I really wanted to know “Was I a total dumbass?” The hiring manager then said that it was not a negative (not having formal education, that is), and that he would like to move forward with me, but that the recruiter needs to handle those details. Ok, so I wasn't being blown off.

Soon I get an email from the recruiter, saying that they'd like to move forward and fly me to Redmond for interviews. Wow. A dream come true. I'm actually going to Redmond. I had only been there once before, for the Global MVP Summit. It was extremely impressive, to say the least. During the next week, we got all the details arranged. Microsoft buys you the airplane ticket, hotel, rental car (although I can't legally drive in the states, ok, well, I can't legally drive anywhere, but at least in Guatemala a few bucks fixes that) or reimburses you for taxis. They also reimburse you for food and other expenses. However, they do not reimburse you for gambling expenses, haircuts, alcohol, or other “personal entertainment”, which includes the pay-per-view porn at hotels. They make this very clear on their website, leading me to wonder how many people tried to pass of a $10,000 bill for a complete makeover, champagne, and a couple of call girls. Their websites handle everything, including making your appointments. Very smooth (it'd have to be, with the number of people they interview).

I had a trip coming up, so it was actually about 3 weeks before I could get out there. I re-read “How to move Mount Fuji”, which was o.k. Some of the answers were wrong (I had read it a year earlier, just for fun) though, and it doesn't cover any technical questions. Nice flight out, easy taxi over to the Marriot Courtyard, which is just a block away from campus. The night I got there, I met up with a friend from MS, and had some Pho'. He was very reassuring, telling me about his interviews, which was quite helpful. I didn't get to sleep until quite late, and I slept quite poorly as well. Due to the time change, I also woke up quite early too. Not a good start. I went down and had a few cups of yogurt, and noticed that my hands were shaking. Quite a few other people were there on Microsoft-related business. Maybe the whole hotel was rented by MS. Who knows.

First off, I had to meet the recruiter. That building was not on campus, and was actually about 4km away. Not being able to calculate the time a taxi traveling at 50km/hr would take to go 4km, I left about an hour an a half before my appointment, promptly arriving 1.3 hours early. Well, better early than late, eh? I nervously paced around the waiting room, perhaps annoying the receptionist who was frantically trying to reschedule a meeting room she overbooked. I think I finally got a bit calmer, somehow. Or maybe I just thought I was calm. Finally, I was entered into the sacred building and sat down in the recruiters office.

He gave me a brief overview of what I was here for, telling me the routine. One piece of advice I was given “Do not bullshit these people. They are very smart, and it will not work. Don't even try. Just be yourself.“ I had 3 interviews scheduled. The second one was a lunch interview. From what I had heard, they give you a few interviews. If you suck, they don't give you any extras, or come up with an excuse like “The next person to interview's kids just got hit by a truck, so he won't be in today. So you can go.” If you don't suck, then you'll get “bonus” interviews. Without much ado, I got on the shuttle and headed over to the (or one of the) Encarta building(s).

My first interview was with a dev lead for Encarta. The entire interview was writing code on the whiteboard. Most of it was writing a string-lookup function, so we dicussed dictionaries, hashtables, and so on, as well explaining some .NET-specific code (since string interning can be used). I think I did alright there. Very friendly and nice person. Right before I left, I had to write a simple C++ function to deal with linked lists, mainly to make sure I knew what pointers are and how they are used. No problem there.

My next interview was with another dev lead for Encarta, this time on the online version. We went to an Indian restaurant, and the food was great. I had never had Indian food at an Indian restaurant before, so that was quite enjoyable. Looking back, perhaps I enjoyed the food too much and maybe shouldn't have eaten, so as to answer more questions. On the way over, I was asked to explain things about garbage collection, disposing and finalization. I was on solid ground there. In fact, that's a question I ask many people I interview. During lunch, we talked about ASP.NET, different kinds of controls, caching strategies for search engines, and so on. When we got back, I had to write some code to do some caching, making it syncronized so that data is never retrieved more than once. I also did a small “reverse a string“ sample in C.

The next interview was finally with someone who was on the new product team. A good portion was spent talking about what the product actually was (since I was still rather in the dark). Then I had to write some code to randomize a deck of cards (in other words, randomize an array order). We had some fun discussions about random output and probability. I did well there too. By that I mean I was correct, and I'm pretty sure he thought the same way too. I say this, because in another discussion with someone else, they pointed out an “optmiziation” to an algorithm when we were leaving (so I didn't get a chance to rebut it) that was based on a false assumption, and was thus wrong, especially in light of the optimizations the JIT engine does.

One troubling thing revealed was that it was not sure that C# was going to be used. Apparently, Microsoft suffers from internal politics like any other company and due to some situations out of this team's control, having the .NET Framework was not a given. I told them this was utter crap, and that the other team should fix their thinking (in fact, I told this team that they should do so during the last beta of their product), and they seemed to agree. But that didn't change the situation that we might have to use C++. I'm not that good with C++. I haven't done much work in it for a while, and the last time I did use it, it was Managed C++. Of course, I'd write in C++ if they wanted me to. I told them that for MS, I'd write in Cobol, Ada, Prolog, or even Brainf*ck. At this point, my hopes went down. There are definately more experienced people for the job if they want a C++ Windows application. Considering that a reason the recuiter called was for a “C# expert“, this was quite a letdown.

However, I did get a bonus interview, to see if I was smart enough to really do a good job C++, or to see if I was just a .NET-groupie. This time, I met with a dev lead on an educational product. She posed quite a few different design questions, asked about order of complexity, different algorithms, explaining dictionary versus hashtable (and what is the “HybridDictionary“ .NET class), and so on. I had to write a search function for a binary tree in C++, which I did alright, except for one syntax mistake at the end (hey, I told them I hadn't used C++ for a while). I think I did well overall, because I got another bonus interview: The End Boss.

The first think the hiring manager asked me when I sat down with him was “How are you doing?“ to which I responded “Well, I'm seeing you, so I guess I'm not doing that bad.“ “Oh, so you know how things work here...“ We dicussed more of the project at hand, talked about my past experience (“What was the hardest non-technical thing you've done?“). Then the technical question. Before I describe this, let me note that I had only slept about 5 hours the night before, and had been up since 6 or 7, and interviewing since 11. It was now 6:30PM. This would throw me off my game any day, but adding the pressure and excitement of being on campus, and well, I wasn't in my top-coding mood by now. I might not have realised it unless he had pointed out that it was late (I was doing o.k. in the last interview). Anyways, up to the whiteboard.

“Find the smallest element in a circular array.” I chucked internally -- damn, this was easy. I instantly knew how to approach it, so set about it. He takes one glance, and “Nope, that doesn't work.“ Red Alert. After a few off-by-one errors, I thought I had it. “Nope, still doesn't work, but you fixed another small issue.“ Panic mode. Hmm, should I open my wallet and take some Xanax? Nah, it was too late. The pressure was already on. I wish I had brought Xanax. “Hmm, that, no, I don't think, nope. Still wrong.” This guy was smart (as was everyone else, but I didn't embarrass myself as much in front of them). I felt like he could see right through my mind, laughing at each weak neuron. He gave me a simple hint, and it was a small, obvious thing, a particular case. Something I would have caught in VS in about 10 seconds. Of course the code didn't work. So I added some checks for the case. “Nope. Still doesn't work.” Fixed a few other issues with the recursion. “Yea, ok, that's more or less it.“ I had lost. Perhaps it worked, but the whiteboard was a mess. “Well, you're tired, it's been a long day, and it's late.“ Then I made the biggest mistake of the day.

“Look, give me another question, so I can prove I'm not a dumbass.“ And another, retardedly easy question he gave me. And at that precise moment, my brain decided to stop functioning. Somehow, 0xF5 got sent to the part of my brain that does coding and thinking. HLT. How simple can it be? “Write a non-recursive function to do inorder traversal of a binary tree.“ Nothing that should take much time at all. But boom. I profusely apologised and promised to email him the code. He said that was ok.

For the next 48 hours (which consisted of sleeping, riding an airplane, and sleeping), I could do nothing but berate myself. I got seriously depressed/annoyed. Not because I blew my chance, but because I felt so utterly stupid. I could handle “We are looking for a different skillset.“ I couldn't handle “You're a bloody idiot. Give us back the hotel fare.“ I finally sat down, spit out the code, make a quick pass at refining it for elegance, and sent it off. At least I had done it. Now all I could do was wait. The recuiter promised to get back to me within a few days.

Well, a few days and nothing, so I pinged him. “They haven't made a decision yet. However, if they don't want you, I'll look for another position for you.“ A week later (which was last week) “Not for that position. They have another opening soon, maybe there. I also am sending your data to two other managers for other positions.“

And that's where I stand. I know these things take time, so maybe I'll get some good news. Looking back on everything, I'm not sure how bad the last interview was. Maybe they were just looking for someone, who, say, knew how to write a Windows app in C++ already. I'm guessing if I totally flubbed it, they'd tell me “You sucked, no thanks.“ From reading The Moon Gals Blog, I know it'll take time. At any rate, I'm feeling great now. Interviewing was more than I had hoped for, so that's pretty cool in and of itself. I'd love to be hired, obviously, but at least the suspense is over.

Misc. Technology | Personal
Thursday, July 15, 2004 3:02:10 PM UTC  #    Comments [6]  |  Trackback

# Sunday, July 11, 2004
D&D Items do exist: I just read a "Tome of Stupidity -1"

For those of you who played D&D (here's a funny video to see what it's like), you might recall that there were magical tomes that could increase or decrease your abilities, just by reading them. Of course that's impossible in real life since we'd need powerful magic... right? Well, as I have unfortunately learned, no. A while ago, I had to maintain someone else's app. I believe in the process of reading this app's code, I have lost a few IQ points. Let's take a look, shall we?*

All the code in this app uses horrible variable names. In a 250 line block of code (a single method -- the writers must have thought there to be huge drawbacks to using methods), the first line starts off by declaring the variables. A sample looks this:

dim objconn,objrs,strDatabase,mysql,mysql1,sqlstring,rstemp,dbConn1,objrs1,query

This is a truncated line. They actually declare about double that much. Regardless on how you feel about declaring everything at the top of a file, this is bad. They don't use these variables at the same time. For instance, they'll open objrs, do something, and then close it, then open rstemp and repeat. There aren't actually two objects in use at once. They just declared extra variables for fun. Or maybe they thought they had to give the variables a rest. I don't know. And I don't think they did either. Of course, it's better than using no variable names at all.

They have a process to read values from a comma-delimited file. So, one line at a time, they use VB's split function, storing the result in a variable named “split“. So far so good. Then they proceed to use constants for the next 100 lines to refer to different fields, giving way to wonderful code as so:

if split(6) = “true“ then
  objrs1.open “SELECT * FROM Table WHERE Field1 = “ & split(2) & “ Field2 = '“ & split(9) & “'“
  split(4) = objrs1(“SomeField“)

At a few places in the app, a field is selected from the DB for absolutely no reason:

someId = Request.QueryString(“someId“)
rs.Open “SELECT SomeId FROM Orders WHERE SomeId = “ & someId, objConn1

someId = rs(“SomeId“)

That's right. They select a single field (an int), constraining it to the current value of their var, and then set the var to the same value. Maybe there's something special in SQL that I'm not aware of. To their credit, there's actually a check for rs.Eof first (omitted for clarity of stupidity).

Here's a brilliant idea for performance: Don't use SQL's COUNT. In quite a few places, they'll execute a semi-complex query that returns, on average, 10,000 rows. But why bother with SELECT COUNT, when we have SELECT *?

The entire app is built like this. The people who wrote this should have their text editors confiscated.

* Some variable names have been renamed to protect the innoce-- mentally challenged.

Code | Humour | Misc. Technology | Personal
Sunday, July 11, 2004 8:14:29 PM UTC  #    Comments [1]  |  Trackback

# Wednesday, June 23, 2004
Why I hate nVidia now

At the PDC '03, and the time after it, it seemed like Microsoft was really liking ATI. I remember using their cards a long time ago, and it was a very bad experience. So, I've been quite loyal to nVidia for the past while, since they hadn't disappointed majorly... until a few days ago. I just left for a trip, and was counting on using Remote Desktop to get access to VS, Outlook, etc. while on the road.

I connect to my machine from my laptop. User... pass.. applying settings -- window closes. Try again. On another machine. Try with a different user (perhaps the profile was messed up...). All the same. After login, the window closes.

Google group search for “remote desktop closes”... and tada! Are you using nVidia's drivers? Guess what? Their drivers install a service and yep, that service kills remote desktop. Stop the service, and you're set. Well, I'm 3000 miles away from my computer, so that's pretty hard (two firewalls, so I can't connect to SQL Server and run a extended procedure or likewise).

Apparently, this is nothing that new (judging from Google groups), but I don't remember nVidia mentioning this in their release notes. Why can't hardware vendors just make drivers? That's all I need. Drivers and an optional configuration app. Seems like this trend is only getting worse...

Misc. Technology | Personal
Wednesday, June 23, 2004 6:28:54 AM UTC  #    Comments [3]  |  Trackback

# Monday, May 10, 2004
Three great things

Just recently, I had three great things happen. Actually, I think there were some others, but I've since forgotten them (I wanted to write this post a week ago).

1: My wife finally got to Atlanta. After some issues with INS (grrr) and Delta (grrrrr), we finally got her up to Atlanta from Guatemala on a six-month visa. No more sleeping under my desk.

2: Code Center Premium access. I got my smart card and account info, and now I'm in. The complete Windows source code, including the .NET Framework. Now I can browse the source, as well as doing just-in-time source debugging on Windows and .NET. Swweeeeeet. Had I had this years ago, I'd have saved myself so many headaches (as well as written much better code!).

3: Renewal in the Microsoft MVP Program. Lots of goodies (like source licensing), as well as access to a lot of great information and contacts.

Personal
Monday, May 10, 2004 4:38:41 PM UTC  #    Comments [0]  |  Trackback

Visual Studio never ceases to impress me

On Friday, I had some issues with Visual Studio setup. I was trying to add some features, however VS wasn't liking my MSDN source (I guess I used a different MSI to install before, and the MSDN MSI was different). PSS couldn't resolve it with their cool little MSI tools, so a re-install was in order.

I was hesistant, since I have some add-ons, lots of customizations, and things like VSIP installed. Well, even after the full uninstall-reinstall, all my settings and addons were retained. I'm exceedingly impressed.

I also spent this weekend coding on my wife's laptop. She only has the framework, no SDK, so it was quite an interesting experience. I couldn't use ILDASM (*gasp*), and had no docs. I was also using CSC and Notepad. Getting back into VS2005 feels *really* good now :).

Misc. Technology | Personal
Monday, May 10, 2004 4:31:48 PM UTC  #    Comments [0]  |  Trackback

# Wednesday, March 17, 2004
Easy on your eyes

I just got to Atlanta, and the next morning, UPS showed up with my new Sony SDM-S73/B, a wonderful 17” LCD panel (analog). Wow. I've been using CRTs for 18 years, and my eyes hurt.  This panel is such a welcome relief!

Big benefit: no refresh.  I'm really sensitive to refresh rate, and pretty much any CRT running at less than 85Hz gives me a headache within a few minutes. Even though this panel runs at only 75Hz, the way that LCD works means that you don't notice it. It's a solid display that's just... there. Feels like it's just painted on.

Another big benefit: low output. Every CRT I've used, I feel like there's a lot of energy coming towards my eyes. It's a lot to handle, and it's hard on them, thus my articles on using gray. This Sony display has a great “Eco” button that flips between energy levels (both in consumption and output). Thus I can keep my display as low as possible throughout the day and night, and save energy too.

Another nice thing is that the stand makes it very simple to move up and down, so as I change my sitting (slouching?) position, I can make sure I'm straight-on, which is best for ClearType reading. ClearType really makes text look better. Windows Media Video HD looks spectacular on this display. It has a 160-degree viewing angle, so a few people can sit around and watch too.

TigerDirect has them for $450, which is about $50 cheaper than anywhere else I found them.

Misc. Technology | Personal
Wednesday, March 17, 2004 7:10:13 PM UTC  #    Comments [3]  |  Trackback

# Thursday, March 11, 2004
Packing up and shipping out

Well, I'm moving to Atlanta tomorrow (with a few day stop in Miami).  It's rather sudden (only decided about 2 weeks ago).  As I try to pack up everything I have, I'm amazed at how much stuff I have that's just sitting around.  I'm destroying ~500 CD-ROMs and DVDs (old backups, beta CDs, etc.).  I've noticed that MSDN contributes quite a bit to this (because MSDN Latin America refuses to send just English, but insists on sending all sorts of localized versions that I'm never going to use (because I have MUIs!)).

On the other hand, there aren't that many things I'm taking (a few suitcases is all of my stuff).  Apart from my CPU case, the largest thing I have is my Go board.  Makes me wonder why I keep so many things lying around. 

Anyways, does anyone have any hints for a .NET MVP getting into Atlanta?  I'm looking for apartments (2BR) in Midtown... we'll see how that goes.  If any other .NET people are interesting meeting up sometime for a drink, let me know.  I hope there's a good local user group in Atlanta...

(Yes, because of this I won't be posting anything substantial for a bit.)

Misc | Personal
Thursday, March 11, 2004 7:10:36 PM UTC  #    Comments [2]  |  Trackback

# Sunday, March 07, 2004
I've been Scobleized!

Scoble linked to me!  Around 2AM or so.  And now by 11AM, I've had over 500 visits (and some new subscribers)!  And this is on a Sunday.  Very cool.  Time to turn on the caching.

Personal
Sunday, March 07, 2004 5:07:35 PM UTC  #    Comments [1]  |  Trackback

# Sunday, February 29, 2004
McDonalds home delivery and amazing service

One thing about living in Guatemala is that McDonalds has a delivery service.  I don't think they do in Canada or the states.  I wouldn't usually write this, but they had some awesome service today.  My nephew stayed at my house last night, and this morning we called for a Happy Meal.  He is collecting the current toy line, so we asked for a specific part. 

Well, when the delivery guy showed up, they had the wrong one.  I figured we'd go later and change it.  A few minutes later, McDonalds calls to apologize for the mistake and invites us to come by to change the toy.  An hour later, they show up at my house, just to deliver the new toy and apolgize again.  WOW!  That'd be impressive in most countries, but it's doubly so in Guatemala, where the concept of customer service is pretty much non-existant.

Personal
Sunday, February 29, 2004 5:32:28 PM UTC  #    Comments [0]  |  Trackback

Using gray

Well, for the last two weeks I've been using some shade of gray (205,205,205) as my Window colour (all backgrounds).  And for the most part, applications have worked just fine, not like my last experience.  Perhaps I need a darker shade, but I'm worried that the reduced contrast will start straining my eyes and negate the benefit of non-white background to begin with.

Of course, I could change the text colours to white, but I really doubt anything would look good then...  Anyways, give it a spin!  Turn down the amount of energy that your display is emitting and see how it feels.

Misc. Technology | Personal
Sunday, February 29, 2004 4:28:38 AM UTC  #    Comments [2]  |  Trackback

# Thursday, February 12, 2004
Some colour tips for Visual Studio .NET

One thing I don't understand is why VS.NET ships with no color coding for strings.  It's right there in the options.  But, it's left as automatic.  Considering how much strings are used in .NET coding, I'd think they'd warrant a bit more attention.  I set my string color to Maroon.  It's dark so it doesn't stick out too much, but just enough to let me know where character and string data are. 

When writing  of code (esp. when mixing string literals with code, as I am now for outputting dynamic JScript to web pages), this helps me catch a lot of errors that I'd normally find at syntax checking or compile time.  When scanning through to make a change somewhere, the string data sticks out enough that I can easily find a section.  I also know explicitly where I'm passing strings around (and thus can find places that might have a refactor possibility).

For those of you who haven't, go into VS.NET Tools -> Options -> Environment -> Fonts and Colors.  Go change your string colour to maroon and see if you like it.

My second tip is against eye strain.  By default, you have a white background.  That's fine if you deal with paper all the time, and thus most text is dark on light.  However, if you're like many programmers, time spent on paper during the day (reading programming books in bed doesn't count) is significantly less than time on-screen.  Thus, you can benefit by changing text to be dark on light, or in my case, dark on not-as-dark.

What I've done is change my text background to gray (specifically 205, 205, 205).  It's light enough that the standard text colours work, but it's dark enough that there is a significant reduction in light output from my monitor.  At first it's a bit odd, but quickly you start to feel more comfortable.  Naturally, there's less strain on your eyes, since there is less energy going in.  This may be one of those things that takes a few years (like ergonomic keyboards) before you realise the benefit.  Since eyes are harder to fix than wrists, I'd play it safe and try to reduce strain as much as possible instead of having problems later on. 

Oddly enough, this is one area where most systems have gone backwards.  When I used various versions of BASIC over 14 years ago, white text was the norm.  Heck, even in Turbo C++ I remember not having a white background.  One company that does realise this is discreet*.  All their products have a “charcoal” interface, where everything is dark.  They have a more urgent reason for this, since their products work with video and graphics: your colour perception gets distorted by extra light, thus by keeping the UI dark and as invisible as possible, you don't mix the UI into your colour corrections.

Code | Personal
Thursday, February 12, 2004 2:57:56 PM UTC  #    Comments [1]  |  Trackback

Languages and abstract thought

Something that many programmers have to do, consciously and subconsciously, is think abstractly.  Some have defined intelligence as the ability to think or reason abstractly.  Abstraction occurs from specification design, all the way to the actual code construction.

I bet many of us have run into some kind of problem in a program where we realise that perhaps one set of data was incorrectly or unnecessarily related to another.  Sometimes the reasons for this are related to a lack of understanding of the data that's being dealt with, sometimes it's just oversight.

Something I see happening all the time is the first problem: lack of understanding.  This presents itself very often as text encoding problems: “I just want the standard 8-bit ASCII!” is heard often.  The easy solution is giving someone a quick primer in Unicode and different encodings.

However, if someone grew up in English, and only uses English, their thoughts regarding the abstraction of language versus text can be quite limited.  Perhaps they took a year or two of Spanish or other similar language, so they know that grammar structures can change around.  But even with Western European languages, the relation of written versus spoken language is somewhat similar -- at least there is a letter-based alphabet.

I think it should be mandatory for students to learn another alphabet.  It's not needed that they understand a language behind it.  Simply writing English in a foreign script can be a great mental excercise.  Abstracting written language from alphabets is a good thing to know of. 

Also, I believe that anyone learning another script or language should do so not only on paper, but use a computer with different inputs configured.  Being able to read and write isn't too useful when you're stuck on a computer and you don't know how to use the IME.  I can't remember when I used a pen last (except my digitizer).  And who is going to have paper pen-pals?  Nowadays, it's easier and more fun to get online IM-pals or email-pals.

A simple example is my Chinese Hangman program.  In Hangman, I'd be tempted to take the incoming keystroke and add that to the guess -- one letter at a time, just like the paper game.  In concept, that works fine for Chinese -- a one character guess.  In practise, the problem is that to get that character, many keystrokes or perhaps even characters could be written.  For me, I use the Korean word 과일 (Gwa-il) and then convert to Hanja (Chinese characters).  My keystrokes are: [Right Alt][r][h][k][Right Ctrl][2].  The right alt switches to Hangeul, rhk are: ㄱ ㅗ ㅏ, which combine to form 과.  Right control tells the IME to list Chinese characters for words with the current syllable, and 2 is the number from the list that corresponds to fruit.  The end result: 果.  Note to everyone who is trying to grab control keys and stop their normal usage for some funky functionality in their own app: You're screwing with someone's input in a very annoying way.

In less two weeks, someone can learn a simple phonetic alphabet and how to use an IME.  At least well enough to type a few simple things in, and get a feel for how input might be entered.  However, the lessons learned are going to be there adding another automatic “what if...” case while coding or designing, and hopefully avoid some flaw.

Code | Personal
Thursday, February 12, 2004 2:38:37 PM UTC  #    Comments [0]  |  Trackback

# Friday, January 30, 2004
Learning a language: "Total Immersion"

As part of my continued (albiet slow) efforts at learning Korean, I decided I need more immersion.  Living in a Spanish-speaking country isn't exactly conducive to picking up Korean.  Enter the full power of MUIs.

A MUI is a Multilingual User Interface.  This enables corporations to standardize on Windows, Office, and whatever else in English, but allow a user to switch to a localized version.  I've been using a few MUIs for over a month or so, mainly for enhanced alternate input (the IMEs that ship with Windows don't have speech or handwriting recognition).

Today I'm finally changing the default interfaces for Windows and Office over to Korean.  Sure, I don't understand a lot of the text right now, but I know my way around the products enough get through most dialogs, and I should be able to pick out enough understanding if it's an unfamiliar one.

One interesting side effect of having IE in Korean is that many sites detect this, and thus display fully- or semi-localized versions of a page.

Personal
Friday, January 30, 2004 2:43:11 PM UTC  #    Comments [0]  |  Trackback

# Tuesday, January 13, 2004
Learning languages with Office 2003

I'm currently studying Korean.

I just finished downloading all four Office 2003 MUI CDs, and installed Japanese, Korean, and Chinese (Traditional and Simplified) MUIs for XP and Office, complete with speech and handwriting.

It's great!  I use Word a lot now to test spelling/grammar, get simple definitions, find the Hanja (Korean for Chinese character) for a word and vice-versa, and so on.

I'd like to learn Japanese someday, but currently all I know I've learned from watching anime.  Even so, the Japanese IME is easy enough to use that I can type in (not knowing much Hiragana)  something I hear in a movie, and translate from that, right inside Word.  Very interesting.

With a digitizer pad, I can practise my Hangul (Korean alphabet) too.  Probably would have been more useful a while ago, as I can type Korean as fast as I write it now, and I'd imagine I'll soon be typing it much faster than I write (as it should be). 

Personal
Tuesday, January 13, 2004 1:14:54 PM UTC  #    Comments [0]  |  Trackback