Homepage

Shame on Olympics Opening Ceremonies

August 13th, 2008

According to the report, the girl who sang “Ode to the Motherland” during 2008 Beijing Olympics Opening Ceremonies was actually lip-syncing. The real singer is not on stage due to her face deemed “not suitable” by the authorities.

What a shame.

See if they will go tell the gold metal winners to have other people replace them in the awarding event. Even better, go tell Chairman Hu that he is elected chairman because he is the best looking man in China.

It’s just stupid. The worst part is, you’re showing billions of people that you are THAT stupid, LIVE.

Uncategorized | No comments Jump to the top of this page

Gossip: Which Option should I Use?

August 9th, 2008

I met my friend on-line recently, and he was bemused by various options to choose from for his project.  It was actually a simple problem, he just needed to choose the combination of options that will generate best profit.  The problem is, how?

In his case, his customer contracted out a system to his company, so the profit could be represented as

    Profit = Revenue - Development Cost - Maintanence Cost - Fixed Cost

Typically people use man-hour to calculate development and maintanence cost. However, this could be deceiving. If the project fails, fewer man-hours just imply less loss. As a result, the rule is making sure the combination of options will work. In his case, most of his team members knew only Java or PHP, so he did not really have options w.r.t. programming languages. If Java and PHP could not solve his problems, the only option for him is to bail out.

Now the choice of platform. Since the platform one chose influenced fixed cost accountingly immediately, many bosses just veto any plan using Microsoft solutions because it had to be paid. Well, the real cost should be calculated by TCO (total cost of ownership), which included development cost and maintainence cost. In my friend’s case, the SA of his customer only maintained Windows and Solaris machines, and he was the only guy in his team that knew Solaris. We could basically computed that the TCO for using Windows would be lower because he had more choices for more affordable x86 servers, and he did not have to pay the man-hours for his team to learn Solaris. Once the programming languages and platform were determined, CM (Configuration Management) policy and environment could be setuped, and the project execution plan could be expanded according to the requirement analysis results. Well, it’s his job, work harder dude!

Why not Linux in this case? Linux is very close to Solaris, at least closer than Windows. This is a good question. If his customer’s SA is willing to maintain a third type of OS, sure, go ahead. If not, then who’s going to maintain the OS? Well, who propose it is the one that need to do it. Will the customer pay extra money for extra works? I kind of doubt it.

Uncategorized | No comments Jump to the top of this page

Gossip: Which Programming Language Should I Learn?

August 1st, 2008

I was asked this interesting question yesterday.  To keep my bad habit consistent, I asked the young man back instead of directly answering the question: What programming languages have you learned? and Why?  He gave me a modest answer that he learned what the school taught to earn semester units.  However, he was very confused about which programming language will be “better” for his career.

I believe many people pose same question as this young man does, however, there is no “answer” to this question IMO.  One reason is because programming software already evolved for decades and it is very sophiscated and specialized nowadays.  Another reason I have is that different people have different definitions of ideal jobs.  In most of the cases, the programming language is already determined by higher ups of the given projects, and thus it’s the programming languages that are used to filter junior developers during recuitment process.  If you have a clear idea about the jobs you’re most interested, Google or Monster can easily help you determine what programming languages you should master.

The trouble is, folks asking questions like this typically do not really know what they want.  My advice for them will be betting on one language/platform and making sure you are the real expert in this field.  As to picking language from C++, C#, or Java, or choosing a platform from a specific OS or WWW, that would be your call.  However, there’s one thing I’d like to clarify: programming languages are not neccessarily tied to a platform, but to create something which has business values using any programming language, you need to have sufficient knowledge about the targeting platform.  For example, one can claim that he has solid understandings of C++ and he knows things like virtual inheritance.  Nevertheless, it is not guaranteed that he can produce code demanded by business requirements unless he also have platform-related expertise like UI programming or multithreading.  As a result, still, programming nowadays is very specialized and sophiscated, and one must decide what he/she really wants for his/her career.

It is of course possible to master multi fields/platforms/programming languages given enough resources (time/money) invested.  I personally know several gurus that posses proficient knowledge w.r.t. multiple platforms and programming languages.  I also know that they’ve devoted most of their time in researching/learning, and that’s why they are what they are today.  So, back to our original question, what programming language should one learn?  My personal advice will be mastering a language that you know can feed yourself (like C++, C#, or Java), and learn one scripting related language (e.g. Perl, Python) to make you work more efficiently.  If you have spare time, you might want to use it to learn or research platform-related knowledge.

Uncategorized | No comments Jump to the top of this page

Gossip: Why is Synchronization Important?

July 27th, 2008

In Joel’s article, he joked about “architect astronaut” and the idea of synchronization.  Alright, there seems to be something really weird.  Microsoft is not the only guy in this “synchronization” business.  If synchronizing files is not making profit, why so many folks keep burning money on it?

IMO, synchronzing files does not make money by itself.  It’s just the fundation of a (money-making) vision: share info and work with peer easily.  Had you ever play chess?  Direct moves are not necessarily smart moves, because sometimes you just need to plan and take indirect moves to win.  Today’s mobile devices have at most VGA resolution screens so there are not really “killer applications” yet.  However, if one just sit and wait the whole environment to mature and everyone having a cell phone with dirt cheap data fee and XGA screens, it’s too late for the game.

The term “synchronization” is not accurate at all.  It’s more about cloud computing.  All informations are stored and manipulated in the cloud so that they are of course “synchronized”.  Is cloud computing another hype created by architect astronauts?  I don’t think so.  Who needs synchronizing files?  Eventually everyone will enjoy, since it is just a very minor checklist item provided in the big package.

Reviews & Comments | No comments Jump to the top of this page

Troubleshooting Network Connectivity (5)

June 29th, 2008

Different applications have different troubles with connectivity.  In the following I’m going to list some common causes.  One top item in the field is LSP.  LSP is provided by Winsock as a linked service provider.  In Vista, this thing won’t be a serious issue as before since Vista poses more limitation/restrictions which makes LSP not quite “useful” as their XP counterparts.  One can use “netsh winsock show catalog” to inspect how many LSP providers are installed, and what protocols are they working on.  You can google a bit and find a bunch of nice LSP fixers to deal with LSP problems if you have any.  Newer security suites should all have the capability to deal with LSP layer infections.

The other common problem is the conflict among security softwares.  Modern security softwares install kernel-level drivers and work directly inside network stack so that they can provide full protections.  Unfortunately, none of them are designed to work with security software from their competitors.  As a result, if you want to secure computer but not screw it, install one suite of security software.  People tell you things like “hey, BLAHBLAH is a nice add-on for WALAWALA and can further secure the computer”.  My translation for that is “I can make more money from you if you bought two instead of one”.

Most security software that did content scanning uses techniques named “proxy”, which means redirecting your network traffic to some program, holding the connection contents, and then performing scans.  For example, anti-spam software monitors network connections between your computer and the mail servers, holds your mails first, scans them, and decides which folders should these mails go to your Outlook.  If the holding/scanning part is dead but redirecting part is still working, then you’ll have nothing displayed in your program.  Typically a reboot can fix these issues.  For anti-spam softwares, if a reboot does not fix the problem, that typically implies the software can not handle certain e-mails in your mail box (either too large, failed to parse, or some other reason).  You might want to temporarily disable it, pull down all your e-mails, and then turn it back on.

The last and most frustrating reason is malware.  Malware plays important roles in certain huge and profitable businesses.  For example, on-line advertisement firms want to send out advertisement e-mails (yeah, spams for most people).  However, they don’t want to pay for the internet bandwidth, at least not paying in full.  How can they do that?  Writing a malware, try to infect your computer, and use your internet connections to help them send out e-mails silently.  Although most malwares today attempt to stay in your computer forever, they do not work well together with each other (fortunately).  As a result, if your computer is heavily infected, it’s very likely these malwares are fighting each other to take over controls of your network, which renders your machine useless.  So here are your options

  • Install a security suite to clean your machine up
  • Ghost back your whole machine and try not to get infected
  • Write your lawmakers to push for laws to put these malware authors in jail (Believe it or not, it is legal in most countries to write malwares and sell them to others if you’re not distributing them yourself.)

BTW, make sure the application that you use does not have serious bugs themselves, especially when you update to a newer version :)

Technical, Troubleshooting, Windows | No comments Jump to the top of this page

Troubleshooting Network Connectivity (4)

June 14th, 2008

Most people mix ”network connectivity” and “working browser” together, which means, if they can’t use their browser to browse the internet, they will say that they are not connected.  And yes, they e-mail tech support complaining that they don’t have network connectivity.

Alright, customers are always right.  So it’s the little peon’s job to figure out what they are really complaining about.  Top reasons for a non-working browser are

  1. DNS service is down
  2. Infected by malware
  3. The home page web site is down
  4. Protection software conflict

First and most is the DNS service is down.  DNS servers are responsible to translate human-readable names to actual IP addresses.  For example, translate www.cchsu.com to some IP address that can be used by machines to do their jobs.  Your ISP typically maintain a DNS service for you, and as you all know, it’s just as reliable as your DSL/cable service, which means it can be down.  For some ISPs that I used to use, it can be as frequent as twice a day, although each time the down time is roughly 10 minutes.  As a result, it is important that you write down the DNS servers’ addresses so that you can ping or tracert to see if you can reach them.  If the DNS servers are down, all that you can do is waiting.

Let’s summarize what we have now:

  • We are sure the router is working fine without hardware failures
  • We are sure what needs to be plugged is plugged firmly (if on wired network), and we are sure the wireless link is working (if on wireless network)
  • We have an valid IP address and we can reach the router from our machine
  • We can reach the DNS server from our machine, and nslookup works fine

If you reached this far, you can almost be certain that something in the software level is preventing the network connectivity.  We are going to cover that in next article.

Uncategorized | No comments Jump to the top of this page

Troubleshooting Network Connectivity (3)

June 7th, 2008

The TCP/IP network that most people use today is not really a plug-n-play thing.  It needs proper configuration.  Typically I follow these steps to figure out if the network configuration is correct or not.

  1. Do I have an IP address?
  2. Do I have a working name service?
  3. Can I reach the machine that I want to connect to?

The most basic and important part of network configuration is to get a valid IP address.  One can simply use the ipconfig tool to tell if there is a valid IP address (i.e. something other than 0.0.0.0 or 169.254.*.*).  We can further drill down the possible reasons of not having a valid IP address

  1. No actual network link is established (typically happens in wireless network)
  2. DHCP down
  3. Misconfiguration

Wireless devices today typically negotiates well with the wireless router.  However, if you want the wireless link to be secure, you’ll need to enable WPA or WPA2, which requires setting up passwords to connect to the router.  I find that the problems often come from the tools that shipped with wireless routers/adapters to “help” user setup these configurations.  From my personal experience/bias, these tools creates more problems than the problems that they intend to solve.  Here are some rules of thumb that I’d suggest

  • Do not install additional programs unless absolutely necessary
  • If there is a Windows build-in device driver for the wireless adapter, and there is no strong evidence saying that vendor-provided drivers perform better, use the Windows one.  It’s not a 3D-graphics card and there’s typically little performance difference between Microsoft and vendor drivers.  More than often, you don’t really need the add-on features provided by vendor drivers.
  • If you can install device driver through Device Manager in Windows, do it that way.  I’ve seen too many ill-written setup programs of wireless adapters that do lousy jobs and screw the registry.
  • IMO the best way to do WPA configurations is getting them done through the web interface of router and through the Windows Control Panel.  Remember to write down the passwords and settings.

The criteria that we have an actual network link to the router is that you can ping the router (say, ping 192.168.1.1 and found it’s responsive).  Remember to turn off your firewall program when you ping because some firewall can block the ping (ICMP) traffic.

DHCP is a nice tool to have, and most routers today have built-in DHCP server.  However, if you don’t have a IP address, and the network link is okay (i.e. you can ping the router), I’d then suspect DHCP server is down.  A router can still be operational even though its DHCP server is not working, so power cycling the router is typically a worth try.  (Just think that the router is a small computer running programs, and DHCP server is one of these programs so it could be dead while other programs running normally.)  Again, you’ll need to disable the firewall, do “ipconfig /renew”, and see if you can acquire an IP address from the DHCP server.

One problem that I often see is that people have statically configured their network in the beginning (with some guru’s help), and then purchased new equipments and run the auto-configuration tool.  There’s little chance that the auto-configuration tool will respect existing network configuraions and setup accordingly.  As a result, you might have some computers configured as 192.168.1.* while others as 192.168.2.*, which by no means will work.

The other typical misconfiguration is that people have two routers and try to setup them in a single network segment (i.e. an old wired router as 192.168.1.1 and a new wireless router as 192.168.1.2).  You can not have two routers in a single segment.  If the numbers of IP address really matter, we can play netmask tricks and setup static routes so every device has a 192.168.1.* address, that’s one way to do it.  The other way is to downgrade the wireless router to AP or the wired router to hub, so there’s only one router in charge.

 

Technical, Troubleshooting, Windows | No comments Jump to the top of this page

Arthur’s “always-under-construction” blog

Archives

Blogroll

Meta