Every time I tried to start an Android emulator, the window appear briefly,
then disappear, and I'd get the error, "emulator window was out of view and was
recentered". The solution is to edit
emulator-user.ini in the
$HOME/.android/avd/<image name>, by
default, on linux. Set window.x and window.y to 0.
The solution is on stackoverflow, but Google couldn't find it.
Update 10/05/2012: I've found this solution to work inconsistently. A better solution under xmonad is to set up a ManageHook to match the emulator window and move it to the floating layer:
myManageHook = composeAll [ className =? "emulator-arm" --> doFloat ]
The solution I came up with uses VirtualBox, a Windows 7 image, Google Drive for Windows, a tool from Microsoft called SyncToy, and the Windows task scheduler.
Based on my previous Force.com app for managing Salesforce Cases on a Kanban board, I've built Kanban for Salesforce, a project management tool on the Force.com platform. It uses a custom object for cards so it's not tied to an existing Salesforce native object. Cards can be organizated into sprints.
I've updated my kanban tool for Salesforce Cases to allow filtering Cases by multiple criteria. In addition to Owner, you can now filter by the age of the Case, the Priority, and the Type.
I've started building a tool to manage Salesforce Cases on a kanban board. Each case is a card, and each Status picklist value is a list on which the cases can be organized. You can drag cases around to prioritize and track progression.
The lists are organized left-to-right in the same order that the picklist values are arranged top-to-bottom. There's a custom setting to treat the first picklist value, typically "New", as your backlog. The backlog is hidden by default, and can be shown by clicking the arrow on the top left.
If you use Salesforce Cases, please try it out. I would love to get some feedback and suggestions for features. It's still early in development, but I was able to get off to a good start on the front-end by adapting code from huboard, a great tool for managing github tickets.
This is also my first time trying to build my own commercial application on the force.com platform. Thoughts from anyone who has sold applications on the AppExchange would also be appreciated.
Update 2012-05-27: Added better handling of many open Cases.
Update 2012-06-24: Now supports filtering by multiple criteria.
Update 2012-08-11: I've developed a new project management tool not tied to native Cases, Kanban for Salesforce.
Static Resources in Salesforce are often zip files containing multiple files. If you're keeping static resource under version control using git, here's how to get useful diffs for them whether they are zip files or single text files.
Create a shell script which will identify whether a file is a zip file or not.
If so, it should unzip the contents to stdout; otherwise, it should just output
the contents of the file. I called it
#!/bin/bash file -b --mime-type $1 | grep application/zip && unzip -c -a $1 || cat $1
Tell git to use this conversion utility for a new "resource" diff driver:
$ git config [--global] diff.resource.textconv resource-conv
Tell your repo that .resource files should use the "resource" diff driver by
adding the following to your
The following steps can be used to create a debian package repository easily and host it on Amazon Web Services S3.
First, install reprepro, which will create the repository file structure from .deb packages. Also install s3cmd to sync a local copy of the repository to s3.
$ sudo apt-get install reprepro s3cmd
Create a directory for the repository and a conf sub-directory.
$ mkdir -p /path/to/my-repo/conf
Create the config file, conf/distributions, describing the repository. Setting Codename, Components, and Architectures are sufficient to get started. If your packages are specific to a Debian distribution (or other Debian-based distro like Ubuntu), you can set Codename to the code name of the distro, e.g. squeeze. It should not be set to stable, testing, or unstable; these can be set in the Suite option. See reprepro(1) for more details.
Codename: example Components: main Architectures: i386 amd64
Add a package to the repo using reprepro.
$ reprepro -b /path/to/my-repo includedeb example /path/to/package.deb
Here are the contents of the repo after adding one package:
my-repo/ my-repo/pool my-repo/pool/main my-repo/pool/main/m my-repo/pool/main/m/mypackage my-repo/pool/main/m/mypackage/mypackage_1.0_all.deb my-repo/dists my-repo/dists/example my-repo/dists/example/main my-repo/dists/example/main/binary-i386 my-repo/dists/example/main/binary-i386/Packages.gz my-repo/dists/example/main/binary-i386/Release my-repo/dists/example/main/binary-i386/Packages my-repo/dists/example/main/binary-amd64 my-repo/dists/example/main/binary-amd64/Packages.gz my-repo/dists/example/main/binary-amd64/Release my-repo/dists/example/main/binary-amd64/Packages my-repo/dists/example/Release my-repo/conf my-repo/conf/distributions my-repo/db my-repo/db/packages.db my-repo/db/release.caches.db my-repo/db/checksums.db my-repo/db/version my-repo/db/references.db my-repo/db/contents.cache.db
Configure s3cmd with your AWS credentials:
$ s3cmd --configure Enter new values or accept defaults in brackets with Enter. Refer to user manual for detailed description of all options. Access key and Secret key are your identifiers for Amazon S3 Access Key [XXXXXXXXXXXXXXXXXXXX]: Secret Key [XX+XXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]: Encryption password is used to protect your files from reading by unauthorized persons while in transfer to S3 Encryption password: Path to GPG program [/usr/bin/gpg]: When using secure HTTPS protocol all communication with Amazon S3 servers is protected from 3rd party eavesdropping. This method is slower than plain HTTP and can't be used if you're behind a proxy Use HTTPS protocol [Yes]:
You can leave the encryption password blank; you don't want to encrypt the files in the repository.
Create a bucket in S3 and sync your repository to the bucket. The bucket name must be globally unique. You will get an error if you use the name of an existing S3 bucket.
$ s3cmd mb s3://my-repo/ $ s3cmd --verbose --acl-public --delete-removed sync /path/to/my-repo/ s3://my-repo/
Note the trailing slash after /path/to/my-repo. Without it, the my-repo folder itself will be created in your bucket.
Add the repository to your sources.list:
deb http://my-repo.s3.amazonaws.com example main
Now you can install packages from the repository:
$ sudo apt-get update $ apt-cache policy mypackage mypackage: Installed: (none) Candidate: 1.0 Version table: 1.0 0 500 http://my-repo.s3.amazonaws.com/ example/main amd64 Packages
Kat at notthatkindofgirl.net was appalled by a Hornitos Tequila commercial in which it is implied that a man is about sleep with his twin brother's girlfriend while deceiving her into thinking that he is her boyfriend. She wrote the company a letter to express her displeasure.
I wrote up a comment to her post, but her WordPress blog rejected it as spam so I'll post it here:
Thanks for the thought-provoking post. Like some of the other commenters, I also didn't initially draw the conclusion that the scenario you describe in the commercial was rape. Once you made the connection, intuitively, it makes sense to call the scenario rape. Rape is non-consensual sex. The woman is consenting to have sex with her boyfriend, not his brother. Therefore, the brother having sex with the woman is rape. But upon further reflection, it's not so clear to me. The woman is giving consent, but it is misinformed consent. Is sex under the context of misinformed consent always rape? The are two aspects to the scenario that make the consent questionable: possible intoxication and misrepresentation of the brother's identity. Although the line where judgment is impaired through intoxication enough to make consent non-informed may be fuzzy, most people would agree that consent is non-informed at some point, even if the intoxication is entirely self-inflicted and not assisted through involuntary ingestion of rohypnol or similar. Therefore, I think the impersonation by the brother raises the more interesting question. So let's assume that the pair are partying with Hornitas Ginger Ale. Is misrepresenting one's identity as a pretext for sex rape? Suppose the guy lies and says he's Kobe Bryant and the woman agrees to sleep with him. Is it rape? If not, suppose he sells her an autographed basketball instead. This would be fraud. If the fraudulent basis for sex isn't rape, what is it? Suppose the guy proposes, promising to marry her with no intention of actually doing so, and she agrees to sex, after which he calls off the wedding. Suppose he does marry her with the intention of divorcing her after she sleeps with him. Suppose the woman lies and says she's a virgin, convincing the guy to sleep with her. Are these all rape? If not, is it because the would-be victim has some responsibility to become informed to some reasonable level before giving consent? In the Hornitos commercial, asking her "boyfriend" if he's really an evil twin brother would presumably be beyond such a level of reasonableness. What if she knew her boyfriend had a twin brother? Finally, what if the victim gives misinformed consent with no act of misrepresentation occurring? Suppose the woman recognizes a man in a coffee shop as her favorite author and goes home with him without the man being aware of who she thinks he is. Although I can see a case for the other scenarios above being crimes, I can't imagine this being interpreted as a crime. I don't have a lot of good answers at this point, but thanks again for provoking interesting questions.
This is brain-dead simple, but useful.
$ pandoc example.rst | stdin2www
Configuring Salesforce Chatter with an account in an org that doesn't have Chatter enabled results in an unusable app. Upon start-up, it authenticates against the org, shows an error, "Chatter is not enabled for this organization", then exits.
To restore Chatter to a state where it prompts for the org type, Default or Sandbox, I had to remove the Encrypted Local Store used by AIR apps.
$ rm -rf ~/.appdata/Adobe/AIR/ELS/sfdc-desktop.*
The state is that great fiction by which everyone tries to live at the expense of everyone else. - Frederic Bastiat