14 Predictions for 2020


2010 is here.  It seems like only yesterday that we partied like it was 1999.  Here are my predictions for what the world will look like in ten years.

  1. There will be a massively noticeable jump in the battery technology.  If today, we are struggling to get the hybrid plug-ins on the road, in 10 years, electric vehicles will rule.  Why?  Because right now there are way too many people are working on improving the batteries – someone is bound to make a breakthrough.  Most new vehicles sold will be electric.
  2. The vehicles themselves will be similar to what we have today.  With one significant difference – they will have internet connectivity, which changes everything.  All of a sudden the entertainment options quadruple.  The kids in the back can watch whatever.  The vehicle will do a lot of self-diagnostics and possible let you know ahead of time about needed maintenance, etc…
  3. Solar for residential home will be a no brainer.  The improvement in the efficiency of solar panel will go through the roof and the price will drastically come down. Thus it will make no sense to keep on paying the electric company when you can produce it yourself and potentially sell it back to the utilities (although the last part will most likely not last).  The reason for Solar’s success lies in the basic research that has been going on for a decade now.  There will most likely be laws mandating solar roofs for new buildings (commercial at first, then residential).
  4. Facebook will be history.  People will simply get bored with it. It will be replaced by another fad. 
  5. The number of significant mobile phone operating systems will shrink significantly.  Nokia’s Symbian and Maemo will be gone.  Same fate awaits Palm’s WebOS.  The battle will be fought between the Apple’s iPhone, Google’s Android, Rim’s BlackBerry and Microsoft’s next mobile OS.  I don’t foresee any new entrants, as all the major players now have an OS, which is really difficult to build without a ton of people.
  6. We will still have general purpose computers, even though by 2020 the mobile devices will be able to do pretty much anything the desktop counterparts can.  But they’ll be smaller and more stylish.  Windows will still be dominant.  Google’s Chrome OS will be nowhere to be seen.
  7. We will not have landed a human on Mars because it is devilishly difficult to bring that person back to earth.  But the Red planet will become increasingly polluted with all kind of hardware from Earth (e.g. rovers, etc…).
  8. One of the Voyager spacecraft encounters a signal or an anomaly that could possibly be construed as alien in nature.
  9. Here is an easy one – most of our data is in the cloud.  Even desktop applications, such as Microsoft Office, operate on data residing in the cloud.  In other words, when you go File/New – a file gets created in the cloud.
  10. The TV will be different.  First of all, the coolest toy that everyone will want in 2020 is a foldable TV.  Other TVs will simply look like glass when turned off.  But beyond that the TV will be connected, there will be an App Store for the TV that does all kinds of things.
  11. Geek stats:  Typical  bandwidth will be about 500 megabits per second. Hard drives will mostly be solid state, typical drive – 1 petabyte.   The CPUs for mobile devices will come with multiple cores.  Typical servers will easily contain 64 cores. 
  12. Combine predictions about solar and batteries.  For commercial deliveries it’s absolutely huge.  All of a sudden your largest expense (gasoline) is history because your vehicles run on batteries using electricity produced by the solar panels installed on the roof of the warehouse.  This enables cheaper deliveries on a large scale.  Thus the refrigerator will do the shopping for us.  It will quickly scan the contents and communicate to your grocery store what you are running out of.  Items you are short on will be brought to you as a part of your weekly deliveries.
  13. We’ve all seen how citizen journalism changed things in the Iran protests.  All of a sudden 100 people with cheap camcorders were telling the world what was really happening in the streets of Tehran.  Fast forward 10 years and now you got thousands of people live video-blogging from their iPhone 8G to services such as Ustream.  This makes it very difficult of oppressive regimes to go on, though they surely will.
  14. North Korea no longer exists – it will have merged with the South – it will happen very quickly and unexpectedly.  Cuba’s 50 year experiment with communism is over after the death of Fidel and his brother.   Arabs and Jews are still at it (albeit after at least one major war).  USA continues to have all kinds of problems stemming from living beyond means, unworkable and corruptible legislature, exploding medical costs for the baby boomers, etc…  China experiences another Tiananmen square like event, although the results are far more explosive.  

author: Angry Hacker | posted @ Sunday, January 03, 2010 12:06 AM | Feedback (0)

Google Voice for BlackBerry. Why do you suck so?


I ended up installing Google Voice on my BlackBerry.  Why?  Cause my employer took away SMS/MMS messaging from the calling plan.  There goes my social life.  Anyway, I was expecting the standard Google fare: highly refined user experience, the necessary minimum of features to get going, combined with the fast access time.  Well…one of out three ain’t bad.  It’s speedy.  Oh, hold on, one out of three actually sucks.  At least it’s fast.

Here are the sins of the application – hope they fix them soon:

  • There is no light indicator to see that an SMS arrived
  • There is no sound or vibrate to indicate a new text message and no way to configure it
  • Auto text does not work when composing SMS.  In other words, the first letter of the sentence will not automatically go upper case, even though every other Google app on the BlackBerry happily does it.
  • There is no push capability – the application must poll Google servers to check for new activity
  • MMS is non-existent
  • When the SMS message does arrive, the Google Voice icon changes very imperceptibly.  It needs much better contrast, similar to the Gmail app.
  • When you are looking at your SMS conversations – Google Voice displays just the phone number, not the name.  This is massively odd, considering that I started the conversation from the Address Book.

author: Angry Hacker | posted @ Thursday, November 19, 2009 6:26 PM | Feedback (0)

Expert .NET Micro Framework


I haven’t had this much fun programming in a long, long time – since the exhilaration of  the first project after college.

The further in time we go, the more removed the programmers are from the hardware. Consider the number of abstractions, that a typical C# corporate developer works through.

  1. CPU/Registers
  2. Windows Kernel
  3. Windows Drivers
  4. Windows API
  5. .NET Wrapper for Windows API
  6. Probably some other home grown or 3rd party framework
  7. Finally code.

That’s a lot of layers. If you think of a guy who writes firmware in assembly as a heart surgeon, then the C# coders are psychologists, trying to cajole and persuade Windows into doing what we need it to do.

That’s why, after perusing chapter 5 of Jens’ book and writing the following:

   1:  OutputPort op = new OutputPort(Cpu.Pin.GPIO_Pin0, true);
 

and an LED light connected to the first pin of the CPU board lit up…well, I felt like a heart surgeon again.

The thing about this book…it’s so massively timely. .NET Micro Framework is not widely used, certainly not on the scale of the full blown .NET framework. There isn’t a whole lot of resources you can tap. Aside from a NNTP newsgroup and a forum or two, that’s it. There isn’t an army of programmers writing blog entries about it daily.

On top of all that, the book is actually pretty great and reads very easily. It goes from getting started to basic to advanced, giving you runnable code all along the way. It covers pretty everything that is possible today with the .NET Micro Framework.

It has an awesome mega chapter on networking, where he goes into having the device be a client or a web server, device discovery, SSL and all other kinds of goodies. In fact, I am trying to implement most of it and the book came in just in time.

Totally recommend it.  Link.

author: Angry Hacker | posted @ Saturday, October 03, 2009 3:43 PM | Feedback (0)

Bulk Scanning Photos. Take 2.


Recently I’ve been on a tear to scan my old paper photos before they turn into dust.  My first attempt has been reasonably successful.  I hired a lady to scan photos for me and at the end of the day, it came out to about $0.36 per photo.  I paid the lady $10 per hour. 

The process was as follows:

  1. She would scan the 3 photos at a time into Photoshop in the configuration below.  The important piece here is to leave space both between the photos and the edges of the scanner and between the photos themselves.  Why?  Because the next step would not work without it.

  2. Then she would apply Photoshop’s Crop and Straighten Photos feature, which would split the photos into 3 separate images. 
  3. The lady would rotate each individual photo properly.
  4. She would then save these 3 images separately.

After she left, I was left thinking that several things could be improved upon:

  1. For instance, maybe Photoshop could somehow be automated to automatically apply the Crop and Straighten Photos feature and perhaps save the file. 
  2. A better scanner would mean faster processing and cheaper rate per photo. 
  3. At the end she processed a total of 110 photos.  This is not bad, but I have 1500 photos at least. 

To automate Photoshop I headed to the Adobe forums.  I posted my problem there and 15 minutes later or so I had my answer.  It turns out Photoshop CS4 not only supports scripting, it has a full blown Integrated Development Environment with an editor, debugger, etc… that ships with it.   Some chap wrote me a script that would take a file, apply to it the Crop and Straighten Photos feature and would save the 3 resulting photos as separate files.  This worked like a charm.

Once the photos were separated, I needed to find a way to bulk rotate them into the right position.  I set the view in the folder to Thumbnail, selected all the photos that needed to rotated clockwise, right-clicked and selected ‘Rotate Clockwise’.  Ditto for counter clockwise. 

Armed with the new process, I had a friend loan me a faster scanner (just your average HP all-in-one device).  I called the lady back, and this time, all she had to do was just scan 3 photos at a time and save the resulting file.

After she left, I ran the script on the folder where she saved all the images, then rotated them properly – this took a total of about 3 minutes.

I calculated the monetary damage and it was really really good - $0.19 per photo - cheaper than any commercial service out there. 

author: Angry Hacker | posted @ Saturday, October 03, 2009 1:38 AM | Feedback (4)

Stoners Please Pay First


IMG00114-s

author: Angry Hacker | posted @ Monday, June 29, 2009 6:34 PM | Feedback (4)

Parenting Fail


Pole Dancer with kids.

ParentingFail2

author: Angry Hacker | posted @ Thursday, May 14, 2009 4:14 PM | Feedback (4)

Bulk Scanning Your Old Photos


Search for solution

I have a lot of paper photos.  A whole lot.  Like 10 large albeiffelums  each containing around 150 photos.  I recently tried to convert them to digital by using a scanner.  The job was massively mind-numbing and I quit after 6 photos.  But I still wanted digital copies.

So I checked out a couple of services that claim to do this.  The best one is probably DigMyPics.com.  They offer scanning at 300 and 600 dpi.  For 300dpi (which is similar to a 2 megapixels digital photo) , the cost to scan all my 1500 photos is around $410 or $0.27 per photo.  For 600dpi (similar to 8 megapixels), the cost is $675 or $0.45 per photo.  Plus shipping and handling, of course.  I’d say anything over 300 dpi is overkill. 

It’s kind of pricey, but what really kills it for me is that I have to mail the photos to them.  If the photos are lost, they are lost forever.  However, it’s an impressive service. 

Craigslist to the Rescue

So seeing how I have zero patience for scanning, I decided to hire a person to do it for me.  I posted an ad on Craigslist (in the computer gigs section).  My terms were $40 for 4 hours of work, so $10 an hour – a bit over the $8 minimum wage in California. I honestly did not expect a lot of response,  but to my utter amazement I got a massive amount of emails.   I had a hard time trying to decide whom to give the job to.  Eventually, I settled on a lady that lost her job recently and seemed in real need of money.  Plus at her last job, she used to scan a whole lot.

The process

Before the lady arrived, I set out to create a process to make sure that the scanning was as fast as it could be.  I decided to go with 300 dpi, rather than scanner’s default 150 dpi.  This meant that the scanner worked almost twice as slow.  With my scanner (Canon LiDE30), I could fit 3 photos at a time in 2 different configurations. 

Configuration 1 Configuration 2
config1 config2

Configuration 1 would have been perfect, but I wanted to use Photoshop’s Crop and Straighten Photos feature, which splits up the scanned image into separate photos.  Unfortunately it is not smart enough to figure out where one photo stops and the next one starts and, thus, requires white space between the images.  So to go forward with this config would require manual cropping.

Configuration 2 provides the white space, but it requires that photos 2 and 3 be rotated (so a bit of extra work).  So I settled on this configuration.   

When my hire showed up, I quickly walked her through the process and she was pretty efficient going forward.  She worked 4 full hours and while she waited for the scanner to do its thing, she worked on her unemployment application.  Somehow she seemed to enjoy the work and at the end asked me whether I wanted her to come back to scan more photos.

Results

All in all, she processed 110 photos.  So applying the math, that works out to be about $0.36 per scan.  It’s a bit pricier than DigMyPics but not obscenely so.  110 photos in 4 hours does not seem like a lot, but she was actually working fast.  There are a couple of steps that slowed the process down.

  1. The scanner itself needs to be faster.
  2. Removing photos from the album and placing them back in after the scan takes time. 
  3. Having to always rotate 2 images.
  4. Saving each cropped file takes a bit of time.  I had her saving files as PNG and Photoshop asks you every time whether you want to interlace the file.  I did not find a setting to tell Photoshop to stop asking.
  5. The file naming scheme.  I basically told her to name files numerically, so she always had to look up what was the last number that she saved.

How to speed it up.

Or a better way to ask this is how to reduce the cost of scanning a single photo.  So method #1 is easy, get a faster scanner. 

Part #2 has a bit more hair.  I am planning to write a Photoshop script (.jsx script) that will do the following 3 things automatically:

  1. Scans the 3 photos
  2. Splits them up into 3 separate images
  3. Auto rotate images 2 and 3
  4. Saves the images to disk.

Combining these two methods will hopefully bring the price down and speed up for the next go around.

author: Angry Hacker | posted @ Sunday, April 26, 2009 12:11 AM | Feedback (5)

Android Adventures


I like the Android OS.   There is a foregone conclusion in many circles that it’s the heir apparent to the iPhone OS.  Maybe it will happen, maybe it won’t.  But after seeing it at last year’s Google I/O conference, a seed has been planted in my mind that I should develop for it.  The barrier to entry for developing Android apps is really low.  Basically all the tools are free (SDK, Eclipse).  The language is Java, which even c# refugees such as myself can easily pick up in an afternoon.  Documentation needs to improve, but other than that any question you have will pretty much be answered on the android forums.

rimshot The seed came to fruition early this year and I wrote a really simple app – which did one thing and that is play the Rimshot sound.  I put it out on the Android Marketplace and to my amazement, 2000 people   downloaded it in the first 2 days. 

The cool thing about the Android Marketplace is that there is no wait time, there is no submission process, there isn’t a thing standing in your way.  As soon as you upload the NotFunny2application, it is immediately available in the store.  You pay a one time $25 fee and you are in.   Compare this with the iTunes store ($99, plus months waiting for submissions to be approved), Microsoft Mobile Store ($99 to enroll, $99 per application) or BlackBerry App World ($200 per application).

The experience emboldened me and I wrote a second application, called That’s Not Funny.  This application contains a collection of sounds that are handy when somebody says something that’s unfunny (e.g. Boo sound, Wa-wa-wa-wa, etc…).  In addition, I integrated ads into the application.  I was trying to see whether it is possible to make a living writing mobile apps. 

The number of downloads for That’s Not Funny totally blew me away.  As of now, it’s been downloaded by over 50,000 users.  Given the number of G1 phones out there, that’s like 1 in every 12 owners.  The integrated ads yielded $174 for February and about $240 in March.  Can’t really live on that, but if you have several successful apps, it starts to become possible.

betterdeal2 Which brings me to today.  I’ve released my first paid application called Better Deal.  It’s 99 cents.  The idea came to me while I was at Costco, trying to decide between 2 gigantic sets of paper towels.  One was 704 square feet for $16.99 and the other one 640 square feet for $14.99.   I couldn’t figure out which one was a better deal, without trying to do massive brain acrobatics in a crowded and noisy store.  

So I set out to write an application, which would be able to figure these types of pricing issues for you.  It was not too hard to write.  Really, the most complicated task was getting the layout right. 

I am realistic and guessing that it won’t get 50,000 downloads or anywhere close to that.  But it’ll give me a gauge of what to expect for paid apps.

If you are reading this on your G1 phone, you can get the application here.

author: Angry Hacker | posted @ Thursday, April 09, 2009 1:12 AM | Feedback (0)

Top 10 signs you should not be a VB programmer


And now for something completely irrelevant and totally out of date.  I was cleaning out “My Documents” folder today when I ran into something from another lifetime (like around 2000).

A co-worker of mine used to refer to VB6’s Run button as the Play button, among other things.  That inspired me to write a Top 10 list (i was a fan of Letterman back then) as to why one shouldn’t be a VB programmer.  It will only make sense to you if you coded VB5/6 in the 90’s.  In fact, for some of the terms, I had to take a double take (WebClasses?). 

10. You think that Inheritance is something you get from your granddaddy

9. Think that that Call keyword has something to do with the modem.

8. You think that a WebClass is something you take at your local community college

7. If you look at a checkbox and exclaim: "Wow! Is this new in version 6.0?"

6. If you see an ad in the paper for VB programmer paying $8.25 and you respond to it

5. If you think BLOB and DCOM are new slangs for crack

4. If the ad says "VB programmer with good communication skills needed" and you respond because you have good communications skills

3. If your resume states that you have 27 years of Visual Basic experience

2. You think that downloading VB Helpwriter will help you write VB code

And the Number 1 sign, you should NOT be a VB programmer is

1. You refer to the 'Run' button as the 'Play' button

author: Angry Hacker | posted @ Sunday, March 01, 2009 10:52 PM | Feedback (4)

5 ways to be a more efficient developer in 5 minutes.


The other day I saw a really cool and to the point post entitled 8 ways to be a better programmer in 6 minutes.SecretGeek was talking about .NET development, of course, and so am I.  I thought I’ll come up with my own list, but focus on efficiency and speed.  Anyway, here it goes.

  1. Make commenting and uncommenting dead easy. 
    Right on the toolbar, click Customize… Drag Comment Block and Uncomment Block onto the toolbar.  Using the ampersand, make shortcut keys, respectively, to be Alt+c and Alt+x. CommentTrick How? Just rename the menu items  to &Comment and &xUncomment.  This allows you to comment and uncomment really quickly, thus avoiding mind numbing and difficult to remember Ctrl+K/Ctrl+C and Ctrl+U.  The final result should look something like the picture.    This trick works on C#, VB.NET, XML and has worked on every version of Visual Studio since Visual Basic 5.  If you are still unclear on the concept, try the hand-holding edition.

  2. Learn the frakking snippets. 
    Seriously, they’ve been around since 2005 – that’s four years.  Every time I see a developer writing a property by hand, my blood pressure rises and, given my recent medical troubles, that’s not good thing.  Ah, if only I could fire people without regard to their mortgages, kids, debts and families.

    Create your own snippets for code patterns you use most.  It’ll take you no more than 10 minutes to come up to speed on how to create them.  I have, for instance, several that simplify management of classes, data types, etc.  I also modified a couple of existing ones to comply with the corporate coding standards.   

  3. Make a better environment  
    Courier New is so Windows 95.  Consolas is where it’s at and it excels at rendering on flat screens.  This font is so much easier on the eyes – mine used to be tired at the end of the day.  But not with Consolas.  It comes with Vista and higher. XP users can download it.  There are other fine new fonts as well, but after trying many of them, I keep coming back to Consolas.

    Same goes for your Visual Studio theme.  Does white background bother you? Would you like better contrast?  Would you like a change once in a while?  Hanselman has got you covered.  I use a modified version of John Lam’s Vibrant Ink.

  4. Use Add-Ins
    Some people don’t use them because they slow down Visual Studio.  It’s true enough for some add-ins (yeah, Resharper, looking at you).  However, there are 2 dimensions to this issue:  slower startup time and slower runtime.  Different approaches are required to tackle either.  

    Resharper, for instance, slows down both startup and runtime, so you better be sure that its functionality justifies the cost.  However, most simpler add-ins’ impact on either startup or runtime is negligible.  For instance,  GhostDochas no effect whatsoever.  Let’s take another example, MZ-Tools.  It does slow down the startup, so the fix is to not load it on startup.  The perf hit will then occur the first time you use one of its functions. 

    In addition, it’s pretty easy to write your own.  The wizard takes care of most of the plumbing, so you can focus on your needs.

  5. Use the External Tools menu to define your own
    This is one of those unsung features that can really speed things up for you.  For instance, I have a “Remove Read-only” and “To Explorer”.  They were really easy to write and save me a ton of time I would have otherwise wasted. 

    To make things even faster, I drag these tools onto the toolbar, so it’s a one-click affair.

What are your tricks?

author: Angry Hacker | posted @ Tuesday, February 10, 2009 10:50 PM | Feedback (2)