Five Things New First Time Employees Should Know

Just out of college? New to the work force? Here’s five tip that you should keep in mind.

  1. Assume the world is tiny. Perhaps the biggest eye opener is just how small the working world is. People in the same industry routinely work together at different companies over their career. But this also means your reputation at one company will likely follow you to the next, and the likelihood of this increases as you work at more places. It doesn’t just stop there. Managers and executives at companies often know each other through their careers. This means one bad piece of history might haunt you at several potential jobs in the future. As such, don’t burn bridges, ever. Even if you are the guy firing somebody, be nice. You never know if next time they’ll be your boss (no, seriously, this is more common than you think).
  2. Respect seniority of everybody, especially those below you. This sounds obvious, but sometimes you work with people that seem less intelligent, less capable, or less motivated than you. First of all, that’s based on your limited understanding of the business, and second, you haven’t figured out the political state of the office. As such, don’t step on the toes of co-workers, regardless of their position. Some times, the people below you have the ears of the people above you. Besides, being nice is a Good Thing (and, see #1).
  3. Make your suggestions count by limiting them to a few good ones, rather than many poorly thought out ones. As in, don’t give suggestions early at a new job. I know some people might disagree, but let me explain. You might see it as a cost reduction measure, but others might see it as quality reduction or removal of an important sanity check. Anybody can walk into a bank’s mainframe and give a million reasons to upgrade the 20 year old UNIX build to something more modern, but this only makes you look naive and misguided. Before you suggest using Ruby on Rails instead of ASP, it’s better that you yield the decision until you have a fuller understanding of everything happening beneath the business hood. Business decisions are often limited by constraints that result in less than ideal solutions – but this is reality. The key is to understand which constraints can be manipulated. This can’t possibly be done effectively by somebody who just started.
  4. Assume your Internet activities are being watched. If you work for bigger companies, it is highly likely that the computer you are using has key logging or other “big brother” software on it. How likely? According to PC World, 60% of companies monitor where you visit, 50% monitor your email, and 20% monitor IM chats!
  5. Don’t engage in side projects. When you’re still learning the ropes, it is expected that you are committing 100% of your professional time to the new job. So save yourself the headache and preemptively decline all side jobs for the first six months of your employment. If you have time to be doing side jobs when you are just starting out, you are probably not focusing enough on your career. And this is exactly how your boss will feel if they catch wind (see #1) of this activity.

Agree? Disagree? Let me know.

Google Desktop 5 – Up the Visuals, Missing the Point

First it was Apple. Then Microsoft does Vista. And now Google with Google Desktop.

What am I talking about? A focus on visual appeal. I’m sure there are tons of cool new tweaks to Google Desktop 5, but the thing Google is hyping the most is the new “blending” feature of the application. It’s not quite transparency — think of it like a chameleon. Aside from the cosmetics, not much else changed.

Google Desktop is a great application, yet Google still fail to utilize its full potential. There are four things still holding it back:

  1. Direct integration with Gmail so that I can read and write emails without ever leaving my desktop. They would send as soon as my Internet connection is up and ready, of course. This means off line composing would be possible. Currently, I have to open Gmail in a browser (lame).
  2. Direct integration with Google Calendar. I mean an actual client-side interface: not that hokey short-cut-to-a-web-page crap. I would create and edit the task on my machine, and it would sync it as soon as an Internet connection is available. Again, offline managing is possible. Currently, I have to open Google Calendar in a browser (lame).
  3. Direct integration with Google Reader and Personalized Homepage. I happen to have quite a few RSS feeds I watch on the Personalized Homepage that don’t get imported into Desktop by default. It should. There is a huge disconnect between Google Reader, Personalized Homepage, and Google Desktop Web Clips – yet they all serve the same purpose.
  4. The ability to have floating gadgets without having the sidebar enabled. When I like one or two of those widgets, I don’t want to have an entire edge of my screen taken up by a bar full of tools I don’t use. Google should learn a thing or two about widgets from Yahoo and Apple (think of the widget hide key).

In short, Google needs to think of this as a stand alone application rather than a short-cut key to its online tools. I know they do it because easier since they already have working web interfaces, but the reality is that there are advantages to a client-side installed application that are being overlooked. This includes slicker effects, not needing to load up another program (IE/Firefox), and not having to load an entire website to do a minor task. Oh, and not having to wait for stuff to load.

I do happen to use Google Desktop at work, where I have three 1600×1200 screens (so I can afford the screen real estate). And I do admit that once you start using it, it is actually quite useful. I use the to do list the most, but the scratch pad and web feeds are very useful as well. If either of these tools involved opening up a web browser, I would have never even bothered.

Perhaps the single most under-appreciated feature of Google Desktop is its ability to port your gadget settings from one machine to the next. So when I edit my to do list, make notes on my scratch pad, set my preferences in the weather widget, and then I go to my home computer: it’s all synced.

Nevertheless, such features don’t mean Google has to resort to web interfaces to do desktop functions. Google leverages the web well, but it utilizes the power of the desktop poorly.

The iPhone-Killer Buzz Hits Google

So now there is buzz that Google is producing a phone. Supposedly, this phone will sport a touch screen and be a thin client. As in, your data is stored on the grid and therefore accessible from anywhere with an Internet connection (especially your phone).

Only a fool would believe this rumor.

The concept is almost believable, but the idea that Google is producing consumer electronics is a little sketchy. Even if they did, I’m wondering how Google can price this competitively without the bulk that a company such as Apple could sell.

And pictures were leaked to Engadget. Look, it has  touch screen and no buttons, but it isn’t a music player. Apple just reinvented how phones are defined. Now they must all play music. All of them! Especially the ones that involve touch screen interfaces or cost more than $200. All of them. Welcome to iWorld where everybody compares your phone to the iPhone.

So if Google came up with this design all on their own: bravo. But it’s a shame that Apple stole all the thunder two months ago when they decided to drop the iPhone bomb and pretty much doom all other phones to a bucket we refer to as the “iPhone Killers.”

You just can’t beat good marketing, and that’s one thing Apple has got right. On that topic, you might be interested on the most interesting but damning aspect of this phone:

Apparently, Google is planning to build distribution relationships with multiple carriers by allowing them to minimize subscription and marketing costs. In other words, Google will market the phone online and carriers will fulfill.

Wow, good luck. Google’s marketing is always about features and functionality while Apple is always about form factor and style. I repeat: Apple is going to clean up on this fight.

That’s assuming this isn’t a stupid hoax, which I still think it is. Why would Google go after a totally unrelated market only to become a me-too product and potentially scare all its mobile partners away from using Google Search. That’s the last thing in the world it wants, but it’s exactly what would happen if it competed against every wireless carrier and phone maker in the world.

I call this fake!

The CEO of Google is on Apple’s Board of Directors. Why would he compete with iPhone on the eve of its release? Next time, think of a more viable fairy tale!

On this topic, I’d like to say that the Zune Phone bullshit I talked about last month hasn’t materialized. I’m glad, for Microsoft’s sake, that it was just a rumor. I really think they’d be shooting themselves in the foot just as badly as Google if they released a Zune Phone. Now that I think about it, they have that same problem as Google in that they too have a search engine they want adopted by mobile users.

Let’s keep the rumors real.

Dumb Ideas with a CEO: ChaCha

what's Digg?The dumbest idea I’ve seen so far this year: a human assisted search engine. The idea is simple, when you need to find something on the web, this search engine connects you to a live operator (“guide”) who then will help you find what you need (searches for you). Why is this the dumbest idea ever? Because the company has failed to address a real need, at least without introducing more problems.

What’s the point of search? Finding stuff, right? Let’s take two cases. 

I need to find something straight forward: in such a case, a Google search will very likely suffice. On the other hand…

I need to find something very obscure: this is the case where a human powered search engine would shine, right?

Wrong. If I can’t find it on Google, how are you going to find it? This morning, I was looking up if the PHP SERVER[‘REQUEST_TIME’] variable takes time zones into consideration. This wasn’t noted in the PHP documentation and several searches came up empty (the answer is that it uses the system time). Would ChaCha technicians know?

No.

If I can’t find this information, how in the world will a $5/hr search monkey find it for me who has a limited (if at all) understanding of PHP? The answer: of course this won’t work.

The more straight forward something is, the more likely a search engine can do the work. The less straight forward and obscure something is, the more likely a human can help if the person were a super computer far more powerful than Google’s 1,000,000 servers and knew the context of everything I was asking. Well, the good news is that they identified a problem, but the bad news is that their solution isn’t the answer.

Okay, what about those cases where a longer session of Google will net you an answer. What’s a decent search time? Five minutes? Well, according to a former guide of ChaCha, they have an economic incentive to drag your search out for 20 minutes. 20 minutes! So which would you rather gamble on: 20 minutes of Google or chatting with a stranger on ChaCha hoping that they’ll eventually find it for you (in 20 minutes)? For that effort, I’d rather chat with friends who might be able to help me. For that effort, I’d go post my question on Yahoo Answers and wait for a reply (last time I tried, took about 10 minutes).

Lastly, the management of the “employees” are clearly a bust. ChaCha uses volunteers as their “guides.” And this is where it gets sick. I can become a guide. I can help other people find stuff by using my “expert” Google skills. For $5 an hour. They’re paying people a minimal economic incentive to do work that requires a high degree of computer literacy and language comprehension. Not to mention it requires constant focus and attention, good customer interaction skills, excellent written communication skills, fast thinking, and a person who is “current” since searches tend to mirror pop culture (see picture). These are not traits you can come to expect out of a person being paid minimum wage.

If a customer pisses me off, I can just tell them off. If my buddy IMs me, I can just ignore the customer until they go away. If I think a customer is dumb, I can just call them dumb. If they are searching for stuff I disagree with, I can send them the wrong links. Why? Because the site pays so little that nobody would ever equate being a guide with their livelihood. People simply won’t give a crap if the end-user hates the experience. Either way, you get paid $5. For all you future business owners, remember this: you get what you pay for.

In the end, this company addressed one problem with a solution that introduced a dozen new problems.

Like I said, this is a dumb idea with a CEO. Oh, and it’s poorly executed to boot.

The Crazy Folders on Linux – Now You Can be Hardcore Too

I’ve always wondered what all of the folder names meant on Linux, and Saturday’s post on Slashdot about the /etc folder answered it.

From the responses:

All the system directories were kept to three letters, and all of the names are abbreviations — none are acronyms.

/adm = administrative (now found in /var/adm)
/bin – binaries
/sbin – system binaries
/dev – devices
/home – user home directories
/lib – libraries
/log = logs (now found in /var/log)
/mnt – temporary mount point
/root – root’s home directory in case /home is on another file system
/var – variable data, such as databases, news, and mail
/tmp – temporary files
/usr – mostly there because it wouldn’t fit on / ๐Ÿ˜›
/etc – stuff that doesn’t fit any of the above

Neat, huh?

Another neat factoid regarding “/etc”:

Lot of hardcore UNIX guys pronounce it “et-see” because you sound retarded saying, “It’s in “et-cetera-slash-init-period-d” rather than “et-see init-dee”. Same reason people transliterate Ess-Que-Ell (SQL) into “Sequel” …It’s quicker, and it sounds better.

Microsoft DOESN’T Owe 1.5 Billion

So contrary to the previous ruling, Microsoft has now had a previous 1.5 Billion dollar ruling reversed. The previous ruling was made by a jury that determined Microsoft had violated Alcatel-Lucent patents related to MP3 audio technology.

But this week’s a federal judge has ruled  that Microsoft has not violated any of the patents. So unless Microsoft loses an appeal, they’ve been saved. This is good news since the loss could have had ripple effects across the digital music industry. The last thing we need is for the most pervasive file format on the planet to be patented into the ground.

Cisco Bought Tribe.net! (WTF!)

You read the title correctly. Cisco Systems bought Tribe.net. Cisco is that company that makes routers and switches. They bought Tribe.net, a not-very-popular social networking site. If Cisco paid any more than $100 million, we’ll call this the dumbest purchase of 2007. Even $10 million would be too much money.

Cisco has no experience in this realm, but apparently somebody in management drank a little bit too much of the social networking Kool Aid. Proof? Well, it turns out Cisco bought another social networking company last week called Five Across. According to that development, Cisco did it because… well, check out this quote:

Based on conversations with three or four different Cisco executives in recent months, it is clear Cisco sees social networking and the wider Web 2.0 phenomenon as ways to drive Internet traffic, and thus traffic over their routers and other networking gear รขโ‚ฌโ€ and, it follows, more revenue for Cisco.

I guess by that logic, oil companies should buy amusement parks to get more people outside and driving. The logic is retarded, and highly troubling that it’s coming from executives themselves. Cisco is chasing a pipe dream.

Tribe.net might as well have asked Krispy Kreme to buy them because the fit is that bad. I can’t see any competitive edge coming out from either company’s assets that will help the other. They are simply unrelated. One caters to free loading teenagers while the other builds hardware for paying corporate clients. One is sales and support based while the other is supported by ad revenue. One sells tangible goods while the other gives away a service on a website. One has over 50,000 employees and the other has less than 10. One is a proven fighter in its sector, and the other got smashed into obscurity and nearly went bankrupt.

The New York Times calls it a “curious pairing.” I call it dumb, especially on Cisco’s part.

The new social networking players, which include Cisco … say that social networks will soon be as ubiquitous as regular Web sites. They are aiming to create tools to let ordinary people, large companies and even presidential candidates create social Web sites tailored for their own customers, friends, fans and employees.

Cisco is hoping to use this new resource to eventually create customizable, personalized social networks. They believe that social networks will become a commodity. Ning is already doing exactly that and it has a two year head start. If Cisco was really committed to this vision of theirs, they should have bought Ning.

Besides, if an eight person company can build something that you plan on re-developing into something else, why not just hire 20 people and do it from the ground up, the way you need it to be? Why hack an already existing system that was built from the ground up to compete with Myspace and Facebook when you are after a whole different market? Frankly, even the technical justification doesn’t make sense.

And if Cisco truly believes social networking will become ubiquitous, which I can understand, they need to start on a new technological foot. Social networks will become a commodity when open protocols for exchanging information between them becomes open and published. Much like HTML of today, social networks of the future will communicate on open protocols to exchange data. That’s the only way they’ll ever get as common place as Cisco sees it. And tribe.net isn’t getting them any closer to that path. You would think a major producer of hardware that relies on open protocols would understand this best.

Congratulations on the big pay day, Tribe.net owners. You just schooled some heavy weight businessmen from their hard earned money. In closing, the founder of Ning said:

The idea that Cisco is going to be a force in social networking is about as plausible as Ning being a force in optical switches.

I understand Cisco’s motives for buying Tribes.net, but if you want to branch out into other markets by buying companies, you do it by buying winners, not has-beens.

Variable Assignment, Exception Handling, and Destructors in PHP

I had the craziest set of “bugs” the other day — well, that was until I realized they weren’t bugs. It turns out, at least in PHP, if you try to assign an object to a variable, but during the assignment, an exception is thrown, the variable keeps its original value. Oh, and the destructor fires immediately before anything else. I am not sure if this is true in other languages, but if it is, please let me know. ๐Ÿ™‚

Not sure what the hell I’m talking about, or want to learn more about exception handling? If I get any requests in my comments, I’ll follow up on a walk-through about the topic. Same goes for destructors. Speak up or forever hold your peace.

Exceptions and Variable Assignment

So back to the problem at hand:

$connection = ‘hello’;
try {
    $connection = new Database($parameters);
    $connection->doStuff();
} catch (Exception $exception) {
    echo $exception->getMessage();
} // continue as if nothing happened
var_dump($connection);

So what’s the result when I dump $connection?

  1. If no exception is thrown anywhere, the value is the Database object.
  2. If an exception is thrown during doStuff(), the value is the Database object (as expected).
  3. If an exception is thrown in the constructor of Database, the value of $connection is “hello”.

This makes sense. During the assignment, the code is short circuited, and the object is never assigned.

In other words:

  1. new Database() is processed.
  2. During processing (the constructor), throws an error.
  3. The code exits out of the constructor and looks for a catch statement.
  4. The first catch statement found is below the assignment line.
  5. Thus not only does doStuff() never get executed, but the Database object is never assigned.
  6. The $connection variable is never modified.

The lesson I take away from this is to not throw exceptions in constructors. This is largely whey I only do property assignments during constructors and any potentially error causing stuff is tossed in an initialize() function I call later during the first operation that might require more than simple assignments. But that’s just me.

Destructors on Exceptions During Constructors

For those of you still reading, and understanding what I’m talking about, I have another point to add: destructors fire before the exception is thrown out! As in, as soon as the program sees the throw keyword and we leave the constructor, the destructor fires! I imagine this is because since the variable was never assigned, it’s just a dangling variable in memory, and thus gets cleaned up immediately.

This is probably nothing unexpected, but surely something to keep in mind if you use PHP destructors (as I was). This is relevant because I was trying to log some stuff during the destructor, even on an error. Exceptions cause text to get dumped, so I figured I would just collect the text in the destructor (from the output buffer) and then toss it in a file. Unfortunately, that didn’t work because the destructor fired way before the exception had a chance to display anything. My (broken) code looked something like this:

ob_start();
$framework = NULL;
try {
    $framework = new Framework();
    $framework->initialize();
} catch (Exception $exception) {
    echo $exception->getMessage();
}
unset($framework); // make the destructor go off

During the destructor, anything written to the output buffer (error or no error) was tossed in a file. This worked unless an exception was tossed in the Framework constructor.

Output Buffers and Destructors (tricky!)

Lastly, as a golden bonus to those still reading, the reason I manually unset the variable is because through trial and error, I discovered that at the end of a program’s execution, the output buffer is flushed (and cleaned) before variables are erased. This meant that by the time my destructor fired (when $framework got erased), the output buffer was already empty and crap was already on the client’s screen. Thus, I had to unset it manually. ๐Ÿ™‚

I hope this helped somebody.

Mac Sales Doubled Since Year Ago

Apple Insider is reporting that Macs are now selling twice as much as one year ago. What’s more interesting is that the average price has also gone up, giving Apple a 108% revenue growth. Now that’s impressive.

Apple has doubled their business from two years ago:

Apple, Inc: 2005 - 2007

And this paints an interesting scenario to me. Clearly, the iPod halo effect on Macs is delayed since people buy computers much less frequently than music players. It would take months of using the iPod and iTunes before someone might finally think, “Hey, maybe Macs are this easy too…”

Either way, it has to be some rough proportion of all iPod consumers. And this made me think. Just how fast are iPod sales growing? Well, the news of this post is that Mac sales are up 100%, so iPod sales must have been up 100% recently right?

Nope. The 2006-2007 sales “only” grew by 50%. However, you’ll notice 2005-2006 was a 200% increase. Well, let’s be honest here, Mac sales have never grown 200% in any year. But what if that 200% was responsible for the surge that happened this year? Wouldn’t that mean next year, we’ll see weaker Mac sales?

Well, let’s be honest here. It may be only 50% more iPod buyers, but it’s 7 million extra people exposed to the Apple experience. Sales can’t keep doubling forever. After all, iPods grew something like 400% between 2004-2005.

Either way, if the halo effect stays as strong as it has so far, we should see an even greater uptake of Macs this year, albeit not at a growth rate that matched 2006, but a double-digit growth nonetheless.