Category Archives: Uncategorized

I Still Don’t Sign NDAs For Job Interviews

I had a phone interview with a stupid startup. They insisted that I sign an NDA before they tell me their business plan. I refused, and said that I only sign NDAs at the job offer stage, never as a prerequisite for an interview.

I already mentioned this here.

They said I was the only candidate they talked to that refused to sign! (I probably also was the most qualified by a huge margin.)

They had 2 other red flags.

1. They hired an outsourcing firm to develop their MVP. I’ve been on several interviews where they wanted me to clean up the mess made by the outsourcing firm that made the MVP. They always say “It’s 80% done! We just need some finishing touches!”, but when I look at it, it’s garbage. That’s a no-win situation. The client isn’t able to admit that the outsourcing firm delivered crap and he wasted his money. He wouldn’t let me do a complete rewrite and do it correctly. Outsourcing your MVP is a no-win situation, a doomed startup. The outsourcing firm delivers garbage, but having wasted their money, the client wants to patch it and make it work instead of a complete rewrite, leading to inevitable failure.

1.a. When I asked them who the outsourcing firm was, they also treated that as super-confidential. Again, that’s proof that they’re crazy. I don’t need to hire an outsourcing firm, I’d just write it myself. The fact that they treated it as super-confidential shows mental illness level paranoia.

2. Neither of them were technical themselves, but they had a “technical adviser” who didn’t actually work on their product, which is another red flag every time I’ve seen that. (If their idea was so brilliant, their “technical adviser” would work on it himself full-time.)

So, I avoided wasting my time on fruitcakes. My “No NDAs!” policy served its purpose. However, I’m kind of surprised that nobody else refuses to sign NDAs? I thought that was standard among people who have at least half a clue? I don’t mind missing out on the opportunity, because they clearly were nuts. I’m surprised that NOBODY ELSE refused to sign the NDA. I’m 99.9% sure I did right thing, but it still is disturbing when an ***hole says that you’re wrong for standing up for yourself.


I saw one article that explained why “Non-technical cofounder looking for programmer/co-founder” types are all fruitcakes. If you’re a potential non-technical co-founder who’s an 8-10, you aren’t going to do a startup. Those people are VCs, hedge fund managers, investment bankers, etc. It’s only the low-quality nontechnical guys who do startups, the people who are 5s and 6s.

Another person said that the software job market is a “double lemon market”. It’s a lemon market for employers, because most active candidates are unemployable losers. (I’m an active candidate, highly qualified, AND an unemployable loser.) It’s a lemon market for candidates also, because a highly qualified manager will have plenty of people to hire from his network or from previous jobs, so he won’t be posting on some job board. When most of the candidates are lemons and most of the jobs are lemons, it’s very hard. It’s hard for the good candidates to get past the gatekeepers, who think their job is to filter out the lemons. Employers get frustrated, because their gatekeepers are also filtering out the outlier great candidates. It’s frustrating when most of the jobs you interview for aren’t worth taking.

Reader Mail – 03/23/2014 To 03/29/2014

reemul commented on node.js Is VB6 - Does node.js Suck?.
1) There is no developer license for for Flex/Flash. The only one charging developers for licenses is Apple.

2) When developing mobile apps, you use touch events, NOT mouse events. Adobe and Apache have been good at developing mobile libraries.

1. I'm pretty sure that Adobe charges money for their Flash SDK. I researched this a couple years ago. The open-source Flash SDK isn't as good.

2. The problem is OLD Flash content won't work on mobile, unless it is re-written specifically to work on mobile.

More importantly, I've decided that HTML5/CSS/Javascript is worth learning more than Flash or native mobile apps. Of course, I could be wrong, like with my decision to invest in C/C++ instead of Java.

I've been (slowly) experimenting with HTML5/Javascript, but I don't have much energy leftover after work.

Reader Mail – 03/16/2014 To 03/22/2014

Ira Hyman commented on About FSK.
Some friends and myself (in NYC) have started a software company and need a programmer, we would like to use GO, for our first project. On Amazon there is a kindle book called the "The Way to GO " it's enough for you to evaluate the GO language it only cost 3 Dollars.Please download this and let me know if you think you can program in GO, it seems close to C and C++ in many respects.This is very inportant to me, please contact me ASAP. We have money set aside for the making of a demo program and if you can make this happen in a month or so,it will lead to a great paying permanent gig with us and shares in the company as well & title as well.Thank you FSK for your time, I hope we can solve each others problems, by the way we are doing a cyber security plug in.Thanks IRA.

My attitude towards languages is "learn them when I need them". Right now, I've been looking at html5/javascript/css for my personal experiements. If you're serious about hiring me, I'll learn Go as needed.

I usually don't waste time learning a language as a pre-requisite to an interview, because I learn them as needed pretty quickly.

However, this is a huge red flag. You haven't hired a programmer yet, and you already decided you're using Go. If you are not technical yourself, how can you know that Go is the right choice? Whenever I hear someone say "We're starting a startup, we don't have a programmer among our current co-founders, and we already decided what language we're using for implementation.", my reaction is "Oh, you're clueless. Why am I wasting my time on you?"

Since you are not technical, I know you have selected Go based on hype and not based on technical merit, so I don't see why you're worth my time.

What if I evaluate the description of your product, and conclude another tool is better than Go?


reemul commented on node.js Is VB6 - Does node.js Suck?.
Hold off on PHP being the bastard language for amateurs, I develop Flex applications. Last I heard Flash/Flex developers are the red headed stepchildren in the programming world. I also develop in nodejs (got hired at a company, they said "use this") so I did. I like the scalability of it and it's lightweight nature. I don't know how it compares to VB6 cuz I started in the C/C++ world and then C#/MVC as far as MS development. As such I always thought of VB6 as the bastard language to be forgotten. I always chose C# over VB. But to each his own. It seems every company I work for wants to do something else. So I tend to go with the flow. I will say this, I once got hired for a PHP role(don't know why), needless to say it did not work out.

The nail in the coffin for Flash was Apple refusing to support it on mobile.

I also will usually use whatever tools the employer picks. However, employers almost always want job candidates to already be experts in whatever they're using.

reemul commented on node.js Is VB6 - Does node.js Suck?.

Actually Flash is not dead. It just out grew the browser. That's how the AIR runtime came to be. If you have a strong Flash or Flex background you don't have to ditch your skillset to produce mobile apps for both Android and Apple. Also there are new tools such as edge that will translate Flash and actionscript to html and javascript.

One complaint I have with Flash/AIR is that the development license is big $$$, along with the vendor lock-in. That makes it bigger than my budget when I'm just doing a casual experiment.

I looked around, and there also are tools that compile Javascript to native mobile binaries. I don't know if they're any good.

One issue with Flash on mobile is that "mouse-hover" is a common operation in Flash (especially Flash games), but mosue-hover has no comparable operation on a mobile touchscreen. Existing Flash content would need to be re-written to work properly on mobile. That's one reason Flash was banned on the iPhone, because existing Flash web apps wouldn't work properly. However, I do like the way Puffin browser handles Flash. (I have it on my Android phone.)

Reader Mail – 03/09/2014 To 03/15/2014

John K. Hinsdale commented on Test Driven Development Personality Analysis.
Another fundamental flaw with TDD is that -- by definition -- it cannot be known, when the test is first written, i.e., before the code it is tests has been written, whether the test ITSELF has bugs. Tests are themselves software that can be buggy. Therefore, the initial status of the test as failing may be due also to the test being buggy, not only the code under test's being incomplete. So now, during development, when you are struggling to get the automated test to pass, you've got two places to worry about. Debugging is all about eliminating variables and isolating problems, not adding variables. TDD -- specifically, the "write tests first" part -- is asinine. I'm glad someone is calling it out, good work!

After spending a lot of time with PHP and Javascript, I started doing some C/C++ again. It's amazing how nice it is to use a strongly typed language. The compiler catches so many bugs for you! The compiler catches mistyped variable names, unused local variables, wrong function arguments, and more. Plus, the compiler error messages in C/C++ are so much better than the barely-useful messages you get from PHP and Javascript(firebug).

Also, how do you qualify for having your own Wikipedia page? I thought they're pretty strict. You work at Wireless Generation? They used to spam Craigslist job ads but I haven't seen them in awhile. I never got an on-site interview from them.


Marc commented on The HIV/AIDS Conspiracy Theory.
Your comment is awaiting moderation.

Visit the link below to learn great evidence about HIV/AIDS and why it kills so much black people, you will also learn about suspects that may have spread the disease throughout the world. You will also learn why disease, economy, abortion, and divorce are killing people in the black community in alarming rates. Click or Copy and paste the link below.

http://worldcommercialsandnews.com/four_reasons_movie_download_page.html

Reader Mail – 03/02/2014 To 03/08/2014

captain hindsight commented on Larken Rose Still Thinks Like A Statist.
Well that was stupid of you. You could have been rich by now.

:)

I still say that Bitcoin is stupid. In retrospect, it would have been a good investment to buy a couple years ago and sell now (If I could find an exchange that wouldn't MtGox me!).

My first Bitcoin post was in March 2011, when the price USD/BTC was less than $6/BTC!


Larissa commented on Node.js And NPM - Still Run By Children.
Why are you surprised about v8 beating php and python?

http://stackoverflow.com/questions/5168718/what-blocks-ruby-python-to-get-javascript-v8-speed

http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&lang2=python3

I thought that PHP was mostly a wrapper around the C standard library. I didn't realize there was that much extra overhead.

I did seriously consider HVVM (Facebook's optimized PHP), but that's probably not worth my time.

My plan is still to use PHP, and then switch to C/C++ when performance is an issue. Now I know to not do anything calculation-intensive in PHP.

There was another amusing bit at work. Doing calculations on the server in SQL isn't really much faster than doing it on the client (in Javascript)! The only downside of doing it on the client is that it takes awhile to transmit the data. I blame the lousy AWS instance. I noticed a 100% variation in the amount of time a calculation takes! (i.e. 40-80 milliseconds)

I did some more C/C++ lately, working on the Video Poker program. I forgot how nice it is to use a strongly typed language. It's so much easier to debug when errors show up at compile-time instead of run-time. Lots of nice little things like "unused local variable warning" that you don't get in Javascript and PHP.


Anonymous Coward commented on Survivor Anti-Intellectualism.
I went to the top university in my country for science. Most of my employers have told me I do perfect work.

Yet throughout most of my working life I have been unpaid and a fair proportion of my jobs have been unstable for a variety of reasons. I lost one job with a famous tech company one day after my last project manager visited me to give me a gift for doing such good work! In that company you had one "people" manager and several different project managers. As such my "people" manager fired me, despite my project manager congratulating me on my work.

So I might have some intellectual capacity, but as far as my own success in the corporate world goes I have been a failure.

I run my own business now and that actually does quite well. I've just sold a lot of my software to one of the top three tech companies in the world.

Anonymous Coward commented on Survivor Anti-Intellectualism.

Correction:

> I have been unpaid

This should read "I have been *underpaid*.....

I Don’t Like Hackathons

Hackathons are very popular now. During a hackathon, a bunch of people get together for 24-48 hours and develop a simple product. If your project does well, you might get someone to invest in your project or get hired.

What’s the problem? There are some projects that can’t be done in 1-2 days. I don’t like hackathons, because I’m interested in projects that can’t be finished in one weekend.

Some people cheat. They come with code written ahead of time, and pretend to finish at the hackathon.

The hackathon is a usually bunch of people in a big noisy open plan room. I like to work in a quiet place.

I don’t like the idea of hackathons, because I prefer projects that can’t be finished in 2 days.

Survivor Anti-Intellectualism

I watched bits of the first episode of Survivor. The players are in 3 teams, “Beauty”, “Brains”, and “Brawn”. However, they picked COMPLETE IDIOTS for the “Brains” tribe. The hidden message is “Smart people are really stupid.”

The “Brains” team had the same problem on Big Brother, when they tried that. Ronnie played really stupid during his HoH. Chima got kicked out for breaking the rules once she realized she was going to lose (just like the girl who dumped the rice in the fire on Survivor).

The Survivor “Brains” team voted out their two most athletic players first, an idiot move. As I just mentioned, one of the players dumped their rice into the fire when the other players told her she was getting voted out. The other players were idiots for not blindsiding her. The correct way to manage the votes on Survivor is to make every player think they’re safe, until the vote is revealed.

There are two types of intelligence, logical intelligence and emotional intelligence. To win on a reality show, you really need emotional intelligence, because you need to make alliances and convince other people to not backstab you. The “Brains” tribe seems to have mediocre logical intelligence and lousy emotional intelligence.

The producers for Survivor intentionally picked idiots for the “Brains” tribe, because they want to promote the idea that intelligent people actually are stupid. That seems to be a universal rule. If a reality show has a “Brains” team, they will play the game really poorly.

Node.js And NPM – Still Run By Children

This story is pretty funny. (also notice the discussions on Hacker News) The package manager for node.js is npm. Due to a bug regarding security certificates, npm stopped working for a bunch of users.

I’m amused by the way people say “Node.js is cool because it has a package manager!” Almost every modern language/OS has a package manager, such as CPAN, PEAR, apt-get, and yum. One problem with npm is that lots of the packages are junk. Lazy programmers use someone else’s buggy package that meets 80% of their needs, rather than writing their own thing that meets 100% of their needs and, if you’re competent, bug-free. Seriously, people are using packages when rolling your own would only take a couple hours. It takes more than a couple hours to figure out how to configure the package and use it properly and then debug it when it doesn’t work right.

I already wrote about the maintainers of node.js acting like spoiled children. Now, the maintainers of npm are doing the same thing.

Someone posted a comment saying “If you don’t manage npm properly, someone is going to fork it.” That comment was censored on the npm website.

I have zero tolerance for censorship. On every forum where someone censored one of my comments, I stopped contributing. There’s no point participating someplace where you aren’t respected. For example, one of my comments was once censored on Joel on Software, I stopped contributing, and that forum is dead now. That’s one of the big advantages of having my own blog. Nobody can censor me here. My policy is to allow all comments except for obvious spam.

When the node.js and npm people censor people for disagreeing with them, that’s a clear signal that you shouldn’t contribute to their project or use it.

The person whose comment was censored was Rob Colbert. Initially, I had some sympathy for him. However, he’s also a twit. He had a programmer job, and tried to convince his bosses to use node.js. When they (correctly) refused to start using node.js, he quit in protest. What makes him a twit is that he has no savings and now can’t pay his rent, and he’s refusing to take a job where he can’t use node.js.

Also, he’s running his blog off a residential DSL connection, rather than spending $5-$20/month for proper hosting. My Linode is worth $20/month, especially since the Linux administration experience is useful at one of my current jobs.

He also was complaining “Why aren’t any responsible people contributing to node.js? Why do most npm packages suck? All these clueless people are making node.js look bad, and making competent employers reluctant to use node.js.”

There’s a simple answer. When a community is controlled by children, the sensible people stay away. A serious programmer would stay away from the retarded idea of single-threaded Javascript on the server and callback spaghetti continuation-passing-style. The serious programmers have better things to do, so only children contribute to node.js.

There are a large group of people working on node.js (until the next fad), because they follow the hype and not the technical merit. The people who are capable of evaluating technical merit know to avoid node.js. That’s two reasons node.js can’t ever compete with an adult language. First, the community is controlled by children, which smart people notice and stay away. Second, it’s a fundamentally stupid idea, and even if competent people were working on node.js, it’ll never be better than something that isn’t based on a retarded idea.

The weird thing is, in my performance benchmark test, Javascript/V8 came in third, behind C/C++ and Java but ahead of Python and PHP. I still prefer PHP, but now I know to use an external C/C++ program for anything computation-intensive. If I ever run into a situation where PHP can’t perform well enough, I’ll switch to C/C++ rather than one of the inferior solutions.

Incidents like this and Ben Noordhuis show that node.js is run by children and not adults. I’ve already concluded that node.js is a waste of time. Foolishness like this shows that I made the right decision to not invest any time in node.js.

Reader Mail – 02/23/2014 To 03/01/2014

James R. Alkire commented on FAQ.
BMI filed a copyright infringement lawsuit in The U.S. District Court For The District of Massachusetts against me as principal owner of The Fresh Chef Inc. that operates Point Breeze Restaurant located in Webster Mass. I currently have an ASCAP license covering their artists but not one from BMI. My venue is a building first erected in 1888 and since added various spaces bringing a building capacity to 400. I offer recorded music in two of the three spaces and have a Serius Commercial Music package to deliver to my diners that music at a cost of about $350 per year(Serius pays the licensing fees) which is much less than the licensing fees BMI and ASCAp require with their blanket license calculation formulas. Those spaces have a seating capacity of only 200. I also offer live music in two of the three spaces that have again only a 200 capacity. The third space of my restaurant is closed off to the live music areas(used only for private functions) but BMI has only offered me a license for the entire premiss(400 seats) thus increasing the yearly fee to $4,426. ASCAP'S yearly fee is half that because they have allowed me to use the 200 capacity in their calculator formulas. I have told the BMI phone reps every time they called in 2013 that their calculator formula should not apply in a blanket form to my business yet they have gone forward with their lawsuit. My attorney feels we should settle,pay the copyright infringement fees, the $4,426 annual fee and therefore minimizing the lawyer fees for BMI's firm. My question to you and your readers is shouldn't there be a federal consumer protection statute forcing licensing agents to be held to a reasonable standard of fairness. It clearly is not fair to be charged for 400 people when the city licensing/building agent only allows 200 people to be in the space. We need help now because I believe my attorney is correct in his belief that we need to settle quickly. I wish someone could site some favorable case law in this regard. Thank you, JRA

Wait a minute, did you say Serius? Do you mean Sirius Satellite Radio?

For Sirius Satellite Radio, the fee you pay includes the license.

For live music, it's much harder. You have to make sure that the band only plays public domain songs, or songs for which they own the copyright. This means no covers.

The short answer is: You're probably screwed. Your attorney is probably correct by advising you to settle. The licensing extortion cartels know that they own the government and judges, and you aren't going to win. If you contest the amount of the fee (but not whether you owe it at all), there's a separate process for that.

Another point if they're contesting your live music: Their agents use software to determine whether the song played is in their catalog. If the song really isn't in the catalog, but sounds similar to one that is in the catalog, they may give false positives.

If you do contest the fee, make sure that you mention the Sirius deal, which means you already are paying them some money. They're double-dipping if you're paying via Sirius and also them directly.

Also, you can point out the unfairness of the fee schedule if you do contest it. You pay the same fee if your band plays 99% original music and 1% covers, or 100% covers. That is unfair. However, you'd have to know your bands were mostly playing original music if you go that route.

Another possibility is to settle, go along with it for a year (whatever the minimum is) and then cancel at the first opportunity. Stop having live music for a few months, and then when you restart make sure your bands only play songs that don't require a license. It would require strict documentation.


Someone found a bug in your Java. It leads to a 5x slowdown.

for (int i=0; i!=5; ++i)

{

int card_rank = (int)(hand[i]%13);

int suit_rank = (int)(hand[i]/13);

ranks[card_rank]+=1;

suits[suit_rank]+=1;

[missing brace]

Not only does that make the performance worse, it causes it to give the wrong answer. (Three Jacks will come out as a pair of Jacks.)

I should have checked your work. I guess I have to also look at the Python version.

It's just like at work. They release code without testing it. They get annoyed when I ask "Did you even bother testing that the button you just added actually works when you click on it?"

MP commented on FSK Benchmark Test - C/C++ vs. Javascript vs. PHP.

Well, the point of submitting the code was to increase scrutiny. I didn't bother with a test harness, or have a golden file to compare against.

I'll take a look at the Java code when I get a chance, but it's well off of my urgent list.

I'm going to re-run the test myself. For the C/C++ version, you can call it with a specific hand rather than shuffling, so you can check your answer. That matters because rand() is implemented differently in various languages.

The other language I'm interested in is Go, for a comparison. People say it's as good as C/C++.

MP commented on FSK Benchmark Test - C/C++ vs. Javascript vs. PHP.

After fixing that missing closing bracket, the Java code runs in 0.97 sec. Much better than I expected--still not parity but less than 2x C++.

I suggest you choose a starting deck for your C++ code, and I'll push it to Python & Java, and we can compare the results.

I should re-run the test myself. 2x slower is closer to what I expected. Someone on crazyontap said that Java was faster, which I didn't believe.

The only other language I'm seriously interested in is Go. I've heard a lot of hype about it. People are also talking about Rust.

I'll make another version where the hands are fixed rather than shuffled. That would also make it easier to verify the output.

A 2x performance slowdown isn't worth all the "nice" things Java does for you. Actually, I found Java annoying.

Reader Mail – 02/16/2014 To 02/22/2014

fosamax commented on Will GCW Zero Deliver Their Kickstarter Handhelds?.
So things started to move again lately. Shipping resumed and I got a tracking number so I may see the GCW Zero quite soon. I hope I will like it anyway.

I'm still using a Xperia Mini Pro as my main phone. It's a great little device with a physical keyboard. The CPU is the same as in the Xperia Play so it's quite capable but it's only single core. It's quite enough for a bit of GBA on the go (games like advance wars play well with a physical keyboard).


MP commented on FSK Benchmark Test - C/C++ vs. Javascript vs. PHP.
Okay, Java is done. Here's the code.

It fared better than I expected. Runtime is 2.5 seconds. For comparison we have:

C++: 0.56 secs

Java: 2.5 secs

Python: 42.5 secs

So Java is only 5x slower than C++. Thoughts?

5x slower? That really is pretty bad. I've had people swear to me Java was at worst 10%-20% slower than C/C++. They were lying and/or stupid, as I suspected.

Of course, that isn't tuned Java, but I doubt you could tune it enough to overcome the 5x deficit.

So the winner for languages other than C/C++ is Javascript? With only 2.5x-3x slower than C/C++?

I'm really souring on these higher-level languages now that I performed this benchmark test. I always knew it was a little slower, but 5x-40x slower is not acceptable.

Some people will say that for I/O bound operations it doesn't matter as much. Number-crunching is my specialty, so it certainly matters for the stuff I typically write.

=====

I put your code in the ftp directory (in case you ever take it down from your site).

MP commented on FSK Benchmark Test - C/C++ vs. Javascript vs. PHP.

My comment didn't come through quite right. I tried to italicize the "only" -- as in Java is "only" 5x slower. I did look into profiling the Java code, but I was less than impressed with JVisualVM, and it didn't prove useful.

Thank you for putting the source with the other examples. If you can, I think you should run all of the samples on the same machine to get better numbers for comparison.

I'm kind of thinking I should put together a C# implementation to compare with .Net. I'd expect it to be on par with Java (possibly slightly better -- IIRC it's better about native types than Java, but I haven't kept up with details like that in a while).

Your score for C++ is close to mine, so I'm confident in the others. I've had bad experiences with Java messing up other things, so I'm not that eager to install the Java SDK on my PC.

5x worse is pretty bad, considering how many people told me Java was "the same" performance as C/C++.

I wonder how older languages would fare, like FOTRAN, COBOL, and Pascal? Those were also written relatively close to the metal, so I think they'd do well.


MP commented on Whatsapp And Mark Zuckerberg Steal $19B From Facebook Shareholders.
The only reason this is dumber than Google's Nest buy is the price. There is no way the app is worth $19B. The only time I've heard of it was when a coworker figured out WhatsApp was killing his Galaxy S3 battery.

I've noticed that on Android. Something that runs in the background can really drain your battery, even if your phone is locked and the screen is off.

If a program runs in the background with frequent updates and push notifications, it can drain your battery AND your data.

What I do now is reboot my phone whenever I'm done, which flushes things that would otherwise be running in the background.

[Apparently the newest version of Android PREVENTS APPS FROM WRITING TO THE EXTERNAL SD CARD. That seems to be another effort by Google to force people to use cloud storage like Google Drive.]

MP commented on Whatsapp And Mark Zuckerberg Steal $19B From Facebook Shareholders.

The external storage issue is more complicated, and I don't know how I feel about it. There are reasonable arguments for why blob of storage should be available for any program (I use different audio players, etc.), and also reasonable security arguments for why programs should be separated.

I'm just bummed at how limited the external storage market has gotten. All the phone vendors except Samsung seem to have given up on them, and then make you pay an extra 100-200 dollars for a measly additional 16 to 32 GB. Meanwhile I picked up a 64GB MicroSD card for my Galaxy Lite (a $150 non-subsidized phone). My only requirement for a phone was 1) external storage available, and 2) removable battery. How hard is this for manufacturers to figure out?

Saurabh commented on Whatsapp And Mark Zuckerberg Steal $19B From Facebook Shareholders.

Whatsapp is quite popular in India. And not because bunch of indians were paid to use it. Majority of the mobile users in India use prepaid and before Whatsapp we used to pay for unlimited SMS plans every month. Due to the surge of cheaper Android handsets, as well as cheap data plans, most of the users now prefer Whatsapp over traditional SMS (also because it support longer messages, images and videos). That being said this buyout is quite ridiculous if facebook thinks it will help users turn to use facebook messenger. Whole point of prefering Whatsapp over facebook was that you don't have to fill lots of details about yourself before using it, your phone no is your username and your contacts are your friend list.

That's the reason to limit the external storage. Why let people use a removable SD card, when you can charge them $100-$200 more for an extra 16G-32G of internal storage? That's been a huge profit center for Apple, charging people a lot more for a little extra storage.

You should be allowed to give an app unlimited access to external storage, if you want. It's your phone! Almost every app I use writes to external storage! (text editor, emulators)

I'm considering switching to T-Mobile. The phone isn't subsidized, but it's more than offset by the cheaper monthly cost. Plus, if I keep my phone more than 2 years, it winds up cheaper.

I miss the physical keyboard on my Droid 3. I didn't get the Droid 4 because it didn't have a removable battery. Do you realize how many times I had to take out my phone's battery to reset it due to an Android OS bug?

I would try something other than Android or iPhone, if there were a viable alternative. Maybe ubuntu phone will be good, but I'm skeptical.