tomo's blog

Using 3G Internet in Cambodia

Submitted by tomo on October 19, 2012 - 11:45am

On my most recent trip to Cambodia I bought a Cambodian SIM card so that I could both make calls and use the Internet on my smartphone. At the Moc Bai/Bavet border are a number of Khmer people (who speak Vietnamese) hanging around offering to change money into Cambodian Riel from Vietnam Dong (or US dollars). They also sell sim cards for around 60k VND ($3) which gives you a few dollars worth of calls. They can also cut the SIMs into microsims for iPhones.

I got a MetFone sim but my Vietnamese Mobifone sim actually worked while in Bavet and didn't lose signal until we were a few kilometers from the border. When I eventually lost signal and switched in the new MetFone sim, however, I wasn't able to get on the internet with either GPRS or 3G. And even when I arrived in Phnom Penh I couldn't find anyone who knew how to activate 3G and MetFone's website was not accessible.

Here are the instructions for anyone who wants to activate 3G on their MetFone sim card.

1) Send "3G ON" or just "ON" as a sms to the number 133. This enables 3G for your account. But you still need to set up your phone to use their APN.

2) You can have MetFone configure your smartphone by sending a special configuration file but you need to know the name of your handset according to MetFone. You can guess it but if you guess wrong you won't receive anything or you'll receive a configuration file for the wrong phone.

Send "MI " to the number 111. For a Sony Ericsson P900 the handset code is P900. For an LG Optimus Black the code is P970. It is the code name your manufacturer uses for your phone.

3) If you can't figure out the right handset code or MetFone doesn't know about your phone then you can configure it manually.

Go into your connection settings and set up an APN.

           Input information APN: Metfone
           Username:        Metfone
           Password:        No
           Input code 1111 ( if handset request) and reset again.

0) When you need to check your balance to see how many phone credits or how many kilobytes of data you can transfer, dial the code "*097#". This will send a command to your carrier and you'll get a message back immediately.

You may also need to reset your phone after enabling 3G or setting up your APN.

Note that 3G coverage in Cambodia is very spotty compared to Vietnam (even though MetFone is from Vietnamese military company Viettel). Speed can be decent but you may lose connection even without moving. This applies to Phnom Penh. Like Vietnam, most hotels have free wifi although many cheap guesthouses don't. When looking around for hotels in Phnom Penh be sure to ask first. My tips for finding a hotel in Vietnam also applies to Cambodia.

Use your own mail server or outsource it?

Let's say you have a rather large mailing list of a few thousand email addresses and, well, sending it out with GMail is no longer cutting it. What are your options?

One recent option that's pretty cool for many reasons is outsourcing the sending to MailChimp. MailChimp is actually a pretty comprehensive solution for mailing lists. They will help you design your HTML email template by providing some base themes. And most importantly and perhaps underrated is that they will do their best to not get your emails flagged as spam and have your sending address blacklisted on a Real-time Blackhole List (RBL, or DNSBL). There are some 100 such RBLs which are constantly updated with the IP addresses of hosts on the Internet being used to send spam. Anything coming from those IP addresses will be flagged as spam. So you really do not want to end up on one of those lists. There are hundreds of public RBLs and you can search your mail server's IP address on them if you suspect that you're on a blacklist.

It's unlikely that MailChimp's servers will ever end up on a RBL since they would fight strongly to protect their reputation. But if you choose to run your own mail server (rather than offloading it to Google Apps for domains which is free for most small businesses and organizations) and also to use it to pump out large mailing lists then the onus is on you to set it up correctly. For example, don't let it be an open relay for anyone to send mail through. You'll also want to set up SPF records for your domain.

If you mess up and your mails look like spam to someone like Google or Yahoo or Hotmail (does anybody still use Hotmail to receive email rather than to send spam themselves?) then they will block mail from you to all of their users. Or they will get your mails but they will automatically go into their spam folders. Then you will be forced to thrust yourself into the Kafkaesque world of customer support at companies which don't have retail stores for you to visit, and which you aren't really a customer of to begin with.

First, are you sure your host allows you to send a lot of emails out? Is it your own server or VPS or a shared host? A shared host will probably rate-limit your email sending meaning it will take hours or days to send out a single email to your entire list.

Next, since you're not using MailChimp's cool interface (I really should get paid for plugging MailChimp so much even though I don't use it) you need to run some mailing list manager software.

First up is Mailman. Mailman is a GNU project. It's by hackers for hackers and thus requires perhaps more manual configuration inside config files than most non-technical people can handle. The interface is not easy to use either. Side note: There are several Drupal modules for connecting Drupal to Mailman.

An alternative to that is Phplist, "the world's most popular open source mailing list manager". OK. It's PHP and web-based, and might integrate with your existing PHP website although there's not much reason to. It's popular.

Then there's poMMo. poMMo is a basic piece of software with a decent web interface, except when there are errors. Unfortunately, poMMo didn't get fully developed before being abandoned by its developers. But somebody else has created their own poMMo project on GitHub:

Neither poMMo nor Mailman do click through detection so you would need another solution like a URL link shortener to create links that you can keep track of clicks on.

Hackation. That's what people are calling hackathons (sponsored hackathons!) away from home. It could be in NYC, Bali, Berlin. But a lot of people are moving to the Bay Area or quitting their good-paying jobs in the Bay Area and sticking around and building their startup product from there. There are a lot of good reasons to be near Silicon Valley when you're a tech startup. Access to capital, a local consumer market who's up for and used to using experimental products.

But not every product needs to be developed in Silicon Valley. Not everybody needs to submit themselves to the pumped up rental prices there right now. Not every product person needs to be in the echo chamber of tech startup talk. Not everyone needs to live in a van just so they can afford to bootstrap in the Bay.

Haters gonna hate. Hackers need to hack.

Why Vietnam?

Vietnam? Isn't there like a war going on there? Answer: No. But due to nearly two decades of disastrous economic mismanagement by the government the country, and its remaining people (those that didn't risk their lives to escape on boats), remained in a post-war stupor until the turn of the millenium when things really started turning around economically due to open market reforms culminating in entrance to the WTO. Today, Vietnam's economic capital Ho Chi Minh City (which you may call Saigon) has a sheen of modernity to it. Western fast food chains like KFC and Pizza Hut abound. Downtown Saigon is full of new shopping malls and department stores - great for window-shopping. Young people increasingly choose between carrying iPhones or Samsungs, although Nokia still dominates. Traffic, once dominated by bicycles and rickshaws, is now completely gas-powered - but mostly scooters, not cars. Wifi is freely available and 3G internet can be had for $2/month. Of course, underneath it all is a missing public transit network, lack of public safety controls, regular brownouts, streets that flood due to poor urban planning and rapid development, an Internet that is reliant on a handful of undersea cables, and a currency that is subject to periodic devaluations. For the Vietnamese citizenry all is not rose-colored.

Low cost == Longer runway.

For foreigners though, late economic development, a huge population of underemployed people, cooling foreign direct investment sentiment, and a perenially weak currency means cheap guesthouses vie for customers, beers cost from 1 to 4 bottles per dollar, and a hacker can hack it in this country for $10-$20 a day. Are you consisting on ramen? Living in your car? Or otherwise roughing it to save money for your startup? Maybe I can convince you to reweigh your options.

Incubators, events, community

Vietnam is not particularly good at a lot of things. It's also not an Asian Silicon Valley - that's a title Singapore is trying way too hard to earn. There's no Y Combinator (okay, there was a V Combinator....) and no Google or Facebook. But we do have a scrappy and growing community of tech entrepreneurs. We have programs like Topica Founders Institute, shared work spaces like the Start Network, incubators like Officience, mLabs in the Saigon High Tech Park, annual events like Startup Weekend Ho Chi Minh and BarCamp Saigon, and smaller events like Start Me Up and Mobile Mondays.

It's not a lot but it may give you just enough sense of community to concentrate on building your own damn product. You won't overhear product pitches at every cafe (of which there's an order of magnitude way more of in Saigon than anywhere in the States).

But once you do need to hire help you will be able to do it affordably, whether for software development, testing, usability, marketing, research... While you're here, take advantage of the fact you don't have to pay Silicon Valley salaries.

Link to Silicon Valley

With all that said, there are a lot of reverse refugees from the Bay Area now living in Vietnam. After the Vietnam War (referred to here as the American War) ended and hundreds of thousands of Vietnamese, especially the educated and merchant classes, fled the new government, many of them wound up living in San Francisco and then San Jose. Others ended up in Orange County, Dallas, Houston, and other parts of the world. But today, a huge population of Vietnamese-Americans lives and works in Silicon Valley. Now that business opportunities are better in Vietnam, many experienced technology workers have returned to their birthplace to start companies. And so, thanks to their experience, today a large software industry exists in Vietnam. And many non-Vietnamese have come to join them. Maybe you'd like to be one of them?

Anyways, it may seem like a crazy idea at first. Moving to a foreign country and all. But if you're young, single, a bit adventurous, and determined to strike out on your own - or already have and are now ramen-profitable - then consider the costs: $1200 for cheap-ish rent in the Bay Area, buys you a round trip ticket from SFO to SGN. And every month of rent thereafter buys you two whole months of living nicely (all expenses) in Saigon. If you have a couple thousand bucks in the bank you can easily triple or quadruple the length of your runway by spending the time in Vietnam.

Who the heck would retire in the Bay Area? Retire to Vietnam instead.

If you ask Vietnamese officials, you'll hear such hyperbole as "the Internet service development in Vietnam is in no way inferior to developed countries in the world" (Mai Liem Truc, former Deputy Minister of Post and Telematics). But when people say such things and thus denying the existence of any problems they are leaving no room for improvement.

Yes, we have high speed internet and even fiber to the home (FTTH), both at relatively low costs compared to developed countries, though also not as fast as connections from homes to ISPs in Korea or Japan. We have 3G (but not LTE or 4G) also at very cheap prices - prepaid packages from $2 a month, even cheaper for a week or a day (you have to get used to the idea of being able to buy a single use ketchup packet of shampoo, $1 worth of credit for a phone, and a day's worth of data). Satellite connections exist although general ISPs don't offer them. Vietnam even has an indigenous satellite program (but they transmit to Earth at pitiful data rates thus not being suitable for general consumers).

But all methods of accessing the Internet are limited by Vietnam's links to the outside Internet where most of the content lies, since homegrown content in Vietnam is lacking compared to the English-language Internet both in quantity and quality. We have limited terrestrial links to China, and otherwise we have to rely on undersea cables from stations in Vung Tau and Da Nang to major regional undersea cables that connect Vietnam to neighboring Hong Kong or Singapore and points beyond. Some of these cables start in Europe and go through the Middle East. Others simply connect us to Japan and then the US.

When the Internet isn't super slow due to undersea cable cuts, it could be broken locally for other reasons. Infrastructure is fragile. Wires often catch fire or get cut for other reasons (did I mention rats?). Power goes out. Having a laptop and 3G internet access is a backup plan you'll use often, but this isn't reasonable for companies of any size. Being able to say that there are fiber connections and 3G is just a show. The reality is that Vietnam's Internet is considerably inferior to developed countries qualitatively.

On Censorship. One thing I've learned from talking to many mainland Chinese people is that they don't realize Internet censorship is a problem or that it's a bad or undesirable thing. Although not exactly the same, Vietnamese people similarly don't take a tone of offense at the idea of the government or really anyone imposing their restrictions on them. Or people take a light view of it, considering the easy of circumventing previous Facebook blocks. But this also leads to the Vietnamese Internet's lack of local content (and thus overdependence on international links). Creative people are not encouraged to produce content. Writers are jailed. Musicians and film directors have no protection for their works, sometimes even less than foreign works in Vietnam. So anyone who wants to take full advantage of the Internet right now and into the foreseeable future must learn English.

Gone are the days of whistling a 2600 Hz tone into your rotary phone. Or the era of using redboxes to get free calls from payphones - where can you find a payphone anymore nowadays? So where have all the phreakers gone? Who even remembers what phone phreaking means, and what the significance of Cap'n Crunch cereal is?

Vietnam, like many developing countries, is a country where wireless infrastructure, cellular networks and wifi, leapfrogged traditional wired networks: telephone, cable TV. Payphones (or "cardphones" which used prepaid cards since coins were inconsistently minted and still not always accepted as legal tender in Vietnam), which became increasingly common in the late 90s, are nearly extinct in Vietnam now due to mobile phones.

Throughout the world, phone systems have been converted from analog to digital. From a phreaking standpoint, it's easier for the phone companies to secure their systems as they don't need to use in-band methods (using the channel for system operators as what's used by customers) of managing their systems. Even the cellular networks are all digital and encrypted now so you can no longer just snoop in on your neighbor's conversations using a special phone (or clone another user's ESN on the old AMPS networks). Unfortunately, this means there is no tone or sound that you can play into your mobile handset in order to get free calls or anything else.

Nowadays, free long distance calling - for decades the big prize for phreakers - is ubiquitous. PBXs are freely downloadable software that anyone can run. And we don't even need physical phones to make phone calls anymore - we have software phones using Voice over IP (VoIP) which can call the plain old telephone system or simply call other softphones on the Internet.

So what does modern phone phreaking mean?

Answer: VoIP hacking, virtual PBX hacking, voicemail hacking (not really phreaking, just unauthorized access of systems), femtocell hacking for the truly adventurous, and GSM decryption for the cryptos with a lot of computing resources.

Caller ID spoofing

Caller ID is a feature that's in all cell phones, and many land lines also have this ability to see the phone number of the person that's calling you. This is how you know to answer your mother's phone call and ignore your girlfriend's, or the other way around. But did you know you could control what number is seen by the called party?

How? Example: One way is to have a real phone company set your forwarding number, which is a fake origin, and then it will be used as your caller ID value when you call out from your (VoIP) phone. Another way is to route calls through your own PBX (Asterisk).

PBX hacking

Back in the day when PBXs were only affordable to large corporations and getting access to one meant you had great resources available to you like calling out to long distance numbers for free. But now there are cheap and even free open source virtual PBX solutions that run on normal PCs running Linux like Asterisk. And of course these can be hacked. If you're running Asterisk you run the risk of remote hackers DoSing your server or hacking the Linux server that's running Asterisk. Once they're on there they can also have their way with the PBX.

Femtocell hacking

Femtocells are stations that are set up to provide buildings or rural areas which have weak signals with access to cellular networks via internet connections. Subscribers can buy femtocells from their phone companies and set them up themselves - and can even take their femtocell with them to a foreign country (yes!) and have access to their home country's phone network without incurring roaming charges. These femtocells, whose manufacturer varies by telco, may be running Linux and may be hackable (rootable) and if so can be used to eavesdrop on calls and SMSs as well as spoof and use credits from subscribers' accounts without authorization. It's like taking over a cell tower. But not all telcos even offer these for sale and it's not enough for you to just get one from a manufacturer.

GSM encryption cracking

In the old days of cell phones you could easily listen in on calls made around you. But since GSM the call traffic is encrypted from the phone to the cell tower. However, it can be possible to crack weak A5/1 GSM encryption using something called COPACOBANA. Or you could probably use Amazon EC2 to affordably and instantly bring up the enormous CPU resources combined with some rainbow tables needed to crack the cipher. Don't assume that your mobile phone calls are secure.

Voicemail hacking

Voicemail (VMB) hacking isn't that new. And not all phone providers even offer voicemail services on their lines. But for those who do it's often easy to get into another subscriber's mailbox. Spoof your caller ID to look like theirs and often you won't be asked for any passcode to enter your voicemail. Other ways are to guess or social engineer the PIN code which you can then use to access the mailbox. Old voicemail systems used to have default codes which you could use to have fun like creating your own VMBs.


Another kind of hacking: mobile phone rooting and modification

Generally, when I use the word "hacking" above it refers to unauthorized access of systems. But sometimes the system you want to "hack" is your own property. Mobile phones today are powerful computers running advanced software based on open source code. But it doesn't mean that the manufacturers want to give you free reign or access to what's inside. Fortunately, hacker communities exist to find holes in our phones which enable them to be "rooted" after which we can control the software running on them and by controlling the software we can control our hardware.

As always, especially in Vietnam, protect your accounts and privacy when online with an encrypted connection to a VPN.


poMMo proBLEMs

Submitted by tomo on October 15, 2012 - 4:26pm

poMMo is free open source mailing list management software. It's written in PHP and pretty basic but does give a decent management interface. However, it's no longer maintained. There is a GitHub repository from a guy who's trying to continue developing it sporadically so please contribute there if you can.

Some problems:

When installing, make sure /cache is writable.

After installation (assuming it was successful) test sending email by going to support/tests/mailing.test.php. You should see the message:

Initial spawn success. Respawn success. Spawning Works!

If instead you see:
Error message: "Initial Spawn Failed! You must correct this before poMMo can send mailings."

Then you have some problem with poMMo reaching your own web server. For example, if your web server is being password protected with basic auth, you'll need to hack the file inc/classes/mailctl.php and find:

// to allow for basic .htaccess http authentication,
//   uncomment and fill in the following;
// $out .= "Authorization: Basic " . base64_encode('username:password')."\r\n";

You need to set the username and password (replace username with an actual .htpasswd username and password with the password) then remove the '//' before each line.

If you see:
Initial Spawn Failed (test file not written)! You must correct this before poMMo can send mailings.
then you have some problem with your cache directory. You can edit the file to see what path/file it's trying to write to.

If you see:
Spawning Failed. Codes did not match.

then I feel sorry for you.

My situation

I'm a career programmer who has suffered from pain in my hands and arms for several years. Like carpal tunnel syndrome, this pain is from damage to tissue (including tendons) caused by lots of use - repetitive use. Thus the problems are collectively called repetitive stress injuries (RSI, also called repetitive strain injuries). For those who have carpal tunnel syndrome (CTS), the diagnosis is fairly easy - you can basically check yourself - and so is the treatment. The treatment is an invasive surgery that snips something inside your wrist (in the carpal tunnel) and this relieves the pain. Carpal tunnel surgery is regularly done with successful results. But my case was not CTS.

How I got there

As a software developer, I spent most of my day at work typing or otherwise using a computer. At home, it was the same (most of my colleagues, myself included, often worked from home as well). One day, while typing, I suddenly felt fatigue in one arm, and after a short while of compensating with my other arm it happened in the second arm as well. As the weekend was coming up, I just laid off typing for awhile but then the next work week started and I had to do something. My arms had still not healed. In fact, they would stay like that for a long time. The feeling was similar to having rock climbed for a few hours, leading to extreme muscle fatigue and swelling.

I went to see several doctors at several hospitals in two different states. But the doctors weren't sure what it was and blood tests and MRIs weren't helpful either. Some doctors thought it was tendonitis - pain and swelling around tendons, similar to "tennis elbow" (another RSI) caused when people practice tennis for too long. Treatments included over-the-counter pills for reducing inflammation, physical therapy to strengthen arm muscles, sonar massage (which feels quite nice actually), and wearing braces to support the hand.

What I've learned

RSIs are becoming increasingly common. They are a work-related injury, like cutting yourself as a cook or injuring yourself on some machinery at a factory, and so businesses need to take measures to lessen the likelyhood of them happening. When I worked at Hewlett-Packard, there was an on-site ergonomics expert who would come and fit your chair and desk to be more ergonomic. More and more people are working in offices and using computers all day at work. And tablet computing is a rising trend, but the iPad was NOT designed to be ergonomic and it's clear in the way people hold them while using them.

What you should do to prevent repetitive stress injuries

1) Stretch your arms and hands in the morning. Use one hand to pull your fingers back, then switch. You can also massage your arms and hands. Make sure blood is flowing through your hands and be aware of any cool skin temperatures which may be a sign that blood isn't flowing.

2) Take breaks periodically. Use a software timer to remind you to take breaks at least every half hour. If you are working by the Pomodoro method then this should happen naturally. You should also rest your eyes by looking out the window and focusing on something far away since you're focusing on your screen just inches away the rest of the time.

3) Use the right mouse and keyboard. Some people switch to using a keyboard for everything and not using the mouse since they feel moving their hand to use the mouse causes strain.

I've tried many different keyboards and mice trying to find what worked for me, including some very expensive and exotic keyboards (which didn't work for me). In the end I found that the light touch of a laptop keyboard (short depress height, light spring) suited me along with a large and responsive trackpad. Just remember that not all laptop keyboards and trackpads are the same.

4) Type and mouse less.

You can setup macros and shortcuts to type out long phrases. If you're not an accurate typist, try to improve that to cut down on the number of mistypes and pressing backspace/delete.

My trick is to use a foot mouse. I've bought a few different foot pedals for this and they're all expensive. But I've found that a foot mouse for actually controlling the cursor doesn't work well and isn't helpful. The big win is being able to click with your feet. And you actually don't need a special foot mouse for that. I've found a $5 Mitsumi USB mouse (you can connect several USB mice to a computer at the same time and they all work) set on a pad on the floor is just as easy to click with my big toe.

5) Use speech recognition software. I have been using Dragon Naturally Speaking for years. It's not perfect and you need a fast computer (the faster the better) but it's nice for drafting out long emails and posts.

Google and Microsoft are both working on speech recognition technology so it should soon be very accurate and ubiquitous. Android has it built into their phones and Apple has Siri which doesn't transcribe but at least understands natural speech.

6) Warm up before working. In the cold regions of the US, you will come into the office on cold (and dark) winter mornings. Let your fingers warm up before you force them to dance across the keyboard.

7) Strain from using computers can happen in other parts of your body as well. So make sure you have a nice chair with adjustable height, arm rests (arm rests are optional, sometimes it's better to do without them, but if they are on a chair their height should be adjustable), and you should have a keyboard tray. Adjust your monitor so you are staring straight at it rather than having to look down. When typing, your elbow should be down by your sides and bent at a 90 degree angle. Your feet should be flat on the floor.

Calling the US for free from foreign countries

Submitted by tomo on October 14, 2012 - 12:01am

Calling US numbers from the US is pretty trivial and nearly free. But calling from another country means either:
- paying for long distance from your telephone company
- using a phone card to call the US
- calling via Skype out (like 2 cents per minute)
- call out via Google Voice - FREE!

Yes, for the time being Google Voice lets users call US phone numbers for free from their phone. However, to do that you need to be in the US or make Google think your computer is on an American network. You can easily do this by logging into Gmail while connected to a VPN (like StrongVPN) which will make Google think you're in the States (due to using your VPN's IP address) and then give you the option to dial out from within Gmail.

So Google Voice is obviously the preferable way to make calls if you don't want to give Skype (and Microsoft) money. But what if you want to receive calls too?

Of course you can pay a monthly subscription fee to Skype to get a Skype in phone number which will ring your Skype account or forward to a phone. You could also set up your own VoIP service, buy a DID (direct inward dialing) number from someone and have Asterisk set up on a Linux server somewhere.

You can also have Google Voice receive calls with a personal Google number. However, it needs to actually forward to another phone number - if you're a real American living in the US then you should have a cell phone or home phone line to forward to.

The problem is when you're an expat living in Vietnam. You can't set up Google Voice to forward to your local number. But what you can do is set up a free New York state-based DID incoming phone number (your free number there is limited to being a NY number but you will just be forwarding your Google number to it anyways so it shouldn't matter - you can choose Google Voice phone numbers from any area code) at CallCentric or somewhere else. This will also be your phone number, but you can use it only for the free unlimited incoming calls. You'll forward your Google Voice number to this DID number but then use Google Voice (you need to install a plugin to be able to call out from Gmail) to call out for free, at least until the end of the year. To answer your DID number (from CallCentric) you'll need to be running sip phone software and be online. The best thing is you can set up your smartphone (and Symbian Nokia phones) to be your sip phone so anytime your phone is online you can receive calls when people call your Google Voice number!

If you don't receive calls with your Google Voice number you can still receive voice messages which are then transcribed and emailed to you.

Before I begin: I'm a Drupal guy. What I say could be construed as being biased. I'll try to be honest though.

When building a website you or your developers have some decisions to make: what language to use, whether to use a framework and which one (depending on language - Zend/CodeIgniter/Symfony/CakePHP for PHP, Ruby on Rails, Django for Python, etc.), whether to use a CMS (WordPress, Joomla, Drupal), whether to self-host or use a blogging service (, Drupal Gardens, Tumblr, Blogger). There is no single right answer.

First, go with the language that is most comfortable. Previously, I had several years experience with both PHP and Python with Python actually being more recent. But few people in Vietnam know Python where many know PHP. But Drupal being in PHP sealed the deal.

Next, is it mostly about managing news-like content? Then go with a blog. Does it need some popular features like user logins and full accounts, social media integration, voting, storing meta-information besides blog text, or otherwise some customization of what kind of content you are storing? Then it's no longer a blog and you should use Drupal. Is it purely ecommerce? Drupal Commerce or Ubercart can do the job, but Magento might be all you need if you are not a developer and as long as you can afford to buy the yearly license fee for it and your website only needs a store of physical items without any other content or custom design.

Do you need something that is more like a web app that's unlike any existing blog, news site, social media site, online store, or corporate website out there? Then maybe you should have a team of developers starting with a web framework (Drupal, as well as being a content management system, is also a content management framework) and start from more basic building blocks.

Some specific use cases:

1) An intranet website for managing some internal corporate data that is really custom to your company. WordPress would not be adequate none of its strong points would apply. Drupal's theming weak points would no longer hurt you here since you just need a professional-looking tool. Best of all Drupal easily gives you and novice users a way to manage your data.

2) Brochure website - like a business card for a store or business with a dozen or so pages of information and some links and a contact form. If you don't already know Drupal then use WordPress. WordPress also has many available commercial themes which can be used. However, a Drupal expert can just as quickly and easily build brochure sites in Drupal.

3) Social network - There are open source packages that are like social-network-in-a-box solutions. But nowadays, social networking is a feature, not a sufficient product alone. In my experience, using these off the shelf packages ends up being too limiting because you will always want to do new things and come up against the limits of the software, even if its open source. This applies to social news software like Pligg, school software like OpenSIS, Open Source Q&A software, forums like vBulletin, etc. Those kinds of sites were once novel and rare but are now just features to be added to larger sites, but they can not reasonable be used to build those larger sites.

WordPress's strong points:

1) Being a blog. It does one thing really well. I have run many WordPress blogs in the past. This blog is built with Drupal though because it's possible to blog with Drupal, and because I've also extended it far beyond blogging with many experiments.

2) Availability of commercial themes. There are a lot of companies making and selling themes for WordPress (this is also a point where Joomla wins over Drupal). There are also plenty of free themes. This is good for people who don't want to put money down on a fully custom design yet and are just happy to use something that looks professional.

3) Usability. Out of the box, WordPress is user friendly and makes it easy to get up and running. Drupal improves at this with every major version but is still something a developer more easily loves than an end user.

Honorable mentions

Mezzanine ( is a promising-looking CMS built with Django/Python. If you like Python (like I do) then consider giving it a shot, although it doesn't have nearly the depth and breadth of free modules that Drupal offers nor the size of community.

Cartridge ( is Mezzanine's ecommerce/shopping cart solution. Again, you won't get the community and support like you would with Ubercart but at least you would get to hack in Python!

Build your own FAQ in Drupal

Submitted by tomo on October 13, 2012 - 12:15pm

Websites, including Drupal sites, often need Frequently Asked Questions and answers to them. Drupal, as a content management system, should manage your question and answer content intelligently. With all the great modules contributed to Drupal's community you might think there are some good FAQ modules. In my experience, the Drupal FAQ module is too rigid, and therefore unusable for most of my sites. But we can build a FAQ system using basic Drupal building blocks.

What we need: taxonomy, blocks, views, a few lines of PHP (that can be stored in the database - no custom module required)

1. Content type: Create a new content type. CCK is optional here, as you can just use Title as Question and Body as Answer.

2. Vocabulary: Create a new vocabulary called FAQ. Add a few terms if only for testing.

3. Devel Generate: Optional - requires Devel module's devel_generate to generate some test nodes with test questions, answers, and topics. devel_generate can be run from the command line too if you have drush installed - just run "drush genc". Anyways, generate a few dozen nodes, as many nodes as questions you have. It'll be easier to mass edit the questions once the nodes have already been generated.

4. Views: You'll need two views although they can also be two displays of a single view, so let's do that.

a. Create a view, filtered by your FAQ content type (and published or published/admin).

You will add three node fields:
Node: Nid (Nid) [make this field hidden, but its value is used in the rewritten Question field below]
Node: Title (Question)
Node: Body (Answer)

For the Question, rewrite the output to:

<a name="q-[nid]"></a>

You'll have on argument, which is the Term (FAQ vocabulary topic) in the URL.

- Configure Argument Taxonomy: Term
-- Provide default argument
--- Default argument type: Taxonomy Term ID from URL
-- Validator: (Choose your FAQ vocabulary)
-- Argument type: Term name or synonym
-- (Optional) Transform spaces to dashes in URL

Now turn this default view into a page that's not overridden in any way. Set the URL to be something that's NOT your vocabulary name because your URL will conflict with the default taxonomy paths ("taxonomy/term/%" - which Taxonomy sets up path aliases for from each vocabulary with each term - but that page may also be being overridden by a view included by Views by default). So if you want your URLs to be like "/faq/return-policy" then name your Vocabulary like "FAQ Terms" instead of "FAQ".

At this point you should save your new view and be able to go to "/faq/troubleshooting" or whatever. It will give you a list of questions with answers. But usually a FAQ section will also list out all questions at the top with links to answers below. How can we accomplish that?

b. Let's create a new Display that's a Block. Now override the fields and remove the Answer field. Override the display of the Question to:

<a href="#q-[nid]">[title]</a>

Optionally, set a blank title for this field. Then we will have a block that is just a list of questions. But the argument won't work anymore since it's a block. So you need to override the argument "Taxonomy: Term".

- Default argument type:
-- PHP Code
--- return arg(1);

- Validator: Basic validation + Transform dashes in URL to spaces in term name arguments

This will find the term "charity" in the path "/faq/charity" and pass it on.

5. Now that the block is created, you need to make it display. We want to display it on the top of our first view!

This is assuming you have a region in your theme for blocks at the top of content in pages. You could choose another location but it should really appear as the first content you see. But you want this block to appear ONLY on this page! So in block admin, configure the block you just created, and under:

Page specific visibility settings
- Show block on specific pages:
-- [check] Show on only the listed pages.
- Type in "faq/*"

Save the block. Now your question list with links to answers further down the page should be appearing at the top of your FAQ pages!

7. Next, you need a list of your categories. Sadly, there's no easy way for Drupal to do this. Views has a view type for taxonomies which is unfortunately not very powerful and so we can't use it to get links to "/faq/[term]" as it doesn't allow us to rewrite our own links. It allows you to link to term pages but those pages are rendered by either the Taxonomy module or that default view I mentioned earlier. Trying to override those paths with our own view is a mess, probably due to weighting.

Anyways, we can easily create a list of topics with links with a tiny bit of PHP. Create a new block using the Block admin page. In the block body:

$tree = taxonomy_get_tree($vocabulary_id=YOUR_FAQ_VOCABULARY_ID_HERE);
$html = '<ul>';
if ($tree) {
    foreach ($tree as $term) 
        $html .= '<li>' . l($term->name, 'faq/' . str_replace(' ', '-', mb_strtolower($term->name))) . '</li>';
$html .= '</ul>';
return $html;

Again, set this block to only appear on "faq/*" pages. Then configure its location into a sidebar or somewhere and you will be displaying links to each of your FAQ topics and you're done!

Syndicate content
© 2010-2014 Saigonist.