Yvan Rodrigues' problogue

(like a blog, but with less effort)

Disconnected ramblings about software development, iOS, FreeBSD, anti-social networking, kittens, drosophilidae, small business, Android, web services, finches, Windows, electrical engineering, XML, rental cars, rye, or ... FIVE dollars??!... something something beer.

AFI's 100 Years… 100 Movies

In 1998, the American Film Institute (AFI) unveiled a list of the 100 best American movies, as determined by a poll of artists and leaders in the film industry from a list of 400 nominated movies. It became a must-watch list for a generation of film buffs who had enjoyed the films when they were released, and a generation of budding film buffs who discovered these masterpieces for the first time.

This app encourages you to browse both lists, enjoy the original movie posters, make your own watch list, rate each of the titles, and learn about the directors, actors and writers of these films.

Awesome Tips and Tricks


Speakout Wireless: But that's just stupid.

I needed a mobile account for a test device today, so I pulled a Speakout SIM out of my GSM drawer. It has been many months since I last used it, so I fully expected there to be no available call balance on the account, and that a new account and phone number would need to be reassigned.

When I tried to activate the SIM on their website, it told me that it had already been activated. Fair enough.

Since they use your phone number as an account number, I tried adding $25 to the account. It happily took my money, but gave me an error that the funds were not added to my account and that I should call service. A little annoying but sure, it has been a while, and this falls outside the realm of "normal" service activation.

When I reached an agent, she explained that once A SIM on an account goes dormant, it cannot be reactivated. You have to buy a new SIM. The old one is garbage. But... huh? It turns out that after your balance expires, you have 45 days to top it up. After 45 days, the SIM cannot be reactivated.

There is no technical reason for this. Heck, I'd pay $5 just for the convenience of being able to use the old one. That's just stupid.

Luckily my drawer also have some fresh SIM cards, so at least I don't need to make a trip to the store just to buy a SIM card.

Orient the bed to the North, of course.

My father was nothing short of a brilliant man. He was an engineer. He spoke 7 or 8 languages, 4 of them fluently. He was well travelled, well read, and well spoken.

He was also vehemently skeptical of the occult, astrology, and all things flaky. 

Every once in a while he would spew the odd wisdom, that I simply assumed was the truth, and usually it was.

Not long ago I found myself explaining to my wife Sarah that the bed should be oriented such that your head points North. I have always done so. When asked why, I didn't have an answer. It's just what Papa said.

Today something made me think of this again, and I thought I'd look it up on the internets. Apparently, the hot topic of nocturnal directionality has been around for eons.

Some say that sleeping with your head oriented to the North results in horrible dreams and exhaustion. That is pretty close to home.

In Hinduism it is said that you should not sleep with your head pointing North or West. Vishnu Purana says: "It is beneficial to lie down with the head placed eastward or southward. The man who lies down with his head placed in contrary directions becomes diseased."

Yet others following Hinduism suggest that the opposite is true. Proponents of sattvik living suggest that there are frequencies present everywhere, and that sleeping toward the North avoids alignment with the negative Patal and tiryak frequencies.

Feng Shui proposes the same sentiment, though prefers Easterly orientation.

I have also seen reference to a tradition that people in the Northern hemisphere should orient to the North, and the opposite for the Southern hemisphere. My father grew up 15 degrees North of the equator.

There may be some science behind all of this. It is theorized that humans like many other species have an internal magnetic compass, our heads being the North pole and our feet at the South. In birds and fish it is thought that this compass aids in navigation.

When two magnets are oriented such that their like poles are aligned, a repulsive force is created by the magnetic fields. Is it possible that sleeping with our heads pointing North results in a constant experience of a repulsive force at the cellular level that could affect our health?

Studies have suggested that humans who sleep in an East-West position have far shorter R.E.M. sleep cycles, in which dreams occur, compared with North-South sleepers who got more REM sleep.

I have found no shortage of testimonials of people who after reorienting to sleep South-facing experience more energy and focus and decreased stress. The same seems to be true about each direction.

One uncited source reports that babies, left to their own devices, will orient themselves toward the North.

Now I feel even less certain.

Candy Crush Saga Cheats

I gave in and I tried this Candy Crush game that everyone was talking about. I'm hooked.

Let me be clear. Five lives per day is a perfectly healthy number. It gives you some time for leisure, and then you are forced to assimilate back into society as a contributing member.

That said, I get just as much fun from taking toys apart as from playing with them, so I started tearing it apart to see what I could do about these limited lives.

These are notes, not instructions. A developer should have no problems here, but if you need step-by-step instructions you'll need to look elsewhere. Better yet, just buy some more lives/items.

The Save File

Your belongings in the gave are saved in a save file, called save_XXXXX.dat, where XXXXX is some sort of timestamp. This file is present in the app's sandbox once you have played the game. It is a binary file. If they used a serializer, I'm not sure which one.

For an iOS device you can read and write to the filesystem using DiskAid.

The process for reverse-engineering save files is no mystery. Copy the save file. Make a change. Copy the save file. Compare.

I used VBinDiff for the binary diffs and Fhred as my hex editor.

Here are my findings so far. Values are big-endian.

Item Byte Offset Bits Tested Bits Predicted
Disco ball 0x0050 32 32
Coconut ring 0x0068 16 32
Jelly Fish 0x005c 8 32
Wrapped & Striped 0x00a4 16 32
Lives 0x0290 16 32
Lollipop hammer  0x0074  8 32
Lucky Candy 0x0098  32

The connection name 'LocalSqlServer' was not found in the applications configuration or the connection string is empty.

You just added a Razor web page to a traditional ASP.NET project and now you get this error.

A new section has been added to your [geshifilter-code]Web.config[/geshifilter-code] file. Modify it like so:

[geshifilter-xml] <appSettings> <add key="webpages:Enabled" value="true" /> <add key="enableSimpleMembership" value="false" /> </appSettings> [/geshifilter-xml]

Deployment failed because of an internal error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

I encountered this error when deploying an Android app that was built for an older version (4.2.x) of Mono for Android.

[geshifilter-blockcode]Detecting installed packages Waiting for packaging to complete Installing application on device Deployment failed because of an internal error: Unexpected install output: &nbsp;&nbsp;&nbsp; pkg: /data/local/tmp/ca.guelph.visit-Signed.apk Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED] Deployment failed. Internal error.[/geshifilter-blockcode]

The cause of the problem was these lines in the AndroidManifest.xml:

[geshifilter-xml]<!-- Allow the application to access Google web-based services. --> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <!-- Notice here that we have the package name of our application as a prefix on the permissions. --> <uses-permission android:name="Visit.Guelph.permission.MAPS_RECEIVE" /> <permission android:name="Visit.Guelph.permission.MAPS_RECEIVE" android:protectionLevel="signature" />[/geshifilter-xml]

How to write to stderr in .NET

[geshifilter-cs]TextWriter stderr = Console.Error; stderr.WriteLine("Error, world!");[/geshifilter-cs]

Unlimited online storage $45 for two years. Too good to be true? Probably.


Actually this site offers unlimited free storage, with some restrictions. I signed up for the paid plan at $45 for two years. Not only is it cheap, but the features are amazing:

  • Dedicated IP address
  • Lots of connectivity options:
    • Automated backup software
    • SSH / SCP / SFTP
    • Rsync
    • Network drive
  • Streaming media
  • Unlimited user accounts
  • Public links for sharing
  • User and group file sharing
  • Webhosting
  • MySQL server
  • Mobile app

You know what they say about things that are too good to be true. I'll let you know.

Follow-up #1

At least 10 or more people have had a bad enough experience with this company to complain online at RipoffReport, and Dalino Pianini wrote How OLScs Lost My Data on his blog. There are a couple of positive, and many negative reviews at photo.net.and Webutation.

The main concerns of the reports are:

  • Customer service that is slow, non-responsive, and rude
  • Unrecoverable data loss
  • High downtime
  • Differing definitions of unlimited

Since I only signed up to add extra redundancy to my backups, I'm debating whether to see if I have a different experience, or if they will honour their 45-day money-back guarantee.

Follow-up #2

The main reason I was drawn to this service was the features, in particular the support for standard protocols like SSH, SCP, SFTP, and Rsync. The software that this site uses is ownCloud. This open-source do-your-own-cloud software is absolutely amazing. If you are looking for a storage provider, I strongly recommend finding a reputable company that uses this software. Alternately, if you have your own server, or want to spin one up on EC2 or another cloud provider, this software would be perfect.



Simple Copyright Policy: If you want to reproduce anything on this site, get my permission first.