Downloads
Linux Mint 13 / Ubuntu 12.04

http://download.virtualbox.org/virtualbox/4.2.12/virtualbox-4.2_4.2.12-84980~Ubuntu~quantal_amd64.deb

Linux Mint 14 /Ubuntu 12.10

http://download.virtualbox.org/virtualbox/4.2.12/virtualbox-4.2_4.2.12-84980~Ubuntu~raring_amd64.deb

Extention:

http://download.virtualbox.org/virtualbox/4.2.12/Oracle_VM_VirtualBox_Extension_Pack-4.2.12-84980.vbox-extpack

VirtualBox Rules File

http://goo.im/devs/childofthehorn/virtualbox/10-vboxdrv.rules

Setting Up VBOX

1. Install both packages (just click on them or use dpkg)
2. Open a Terminal (insert your username in place of “username”)

su -
groupadd vboxusers
usermod -G vboxusers -a username
chmod 660 /dev/vboxdrv
chgrp vboxusers /dev/vboxdrv

3. Open a Terminal from the /Udev Rules folder

su -s
cp -f 10-vboxdrv.rules /etc/udev/rules.d/

reboot

Now you have full USB 2.0 Data in Virtual Box!

Soo I bought a Logitech K810 Keyboard because I use a lot of different devices at my desk and I needed something equipped for travel.

My main machines are Linux (usually a variant of Linux Mint). Well The blueZ stack for LM and Ubuntu LTS did NOT work with this keyboard (though 11 did…).

Anyway, I was able to get this to work by following these steps:

*must have bluez-hcidump installed*

*Start the pairing proceedure for your device*

Open a First Terminal: 

“hcitool scan”

This will give you a BT address of the device you are trying to attach to.

Open a Second Terminal :

“sudo hcidump -at”

You will see below

Screenshot from 2013-02-22 16:05:05 In the First Terminal: 

“sudo bluez-simple-agent hci0 XX:XX….”

In the Second Terminal: 

Look for “passcode: ******* ”

Type it on the keyboard and hit enter

In the First Terminal:

You will see “Release /n New Device (/org/bluez/1129/hci0/dev_00_XX…)”

Yay, you have added the device!

“sudo bluez-test-device trusted 00:XX…  yes”

“sudo bluez-test-input connect 00:XX…”

The whole thing will look like

Screenshot from 2013-02-22 16:03:42

And your Device will appear in your standard menu from now on and will work instantly on boot!

Screenshot from 2013-02-22 16:25:59

WOW,

After a bunch of work, I present to you WORKING CLOCKWORKMOD!

IMG_20130115_122504*Big thanks to those of you who worked on the d2att, that code was invaluable for getting a working graphics driver and some unknowns I could not see.*

You can also use this to get ROOT!

I built this on the SGH-497, but is might very well work because many of the ramdisk files for the recovery were written for the SGH-497 and SGH-T779 on the code. LET ME KNOW IF THIS WORKS FOR THE T-MOBILE VARIANT. Funny thing is that they used the SAME CODENAME as the non-d2-based Galaxy Tab 2 for the codename of this device. Therefore I am calling it the espresso10att to separate it a bit.

Requirements:
- Windows Computer with Samsung Drivers installed
- Odin if on Windows/Heimdall on Linux
- sdcard in the /sdcard slot

1. Download my Odin package HERE

2. Download SuperSu from Chainfire and copy to your sdcard:

3. Open Odin (as administrator) and hit the “PDA” button, remember to uncheck the reset

4. Mount Device into Download Mode (PWR, Vol) and Hit go on Odin once it appears.

5. Once Finished, Reboot into Recovery

6. Backup your existing image

7. Flash SuperSu from SDcard

8. Winning.

****In the process of doing this, I had to bust my /system in order to get the files required.
I would strongly appreciate if anyone can send me a copy of their boot.img and either a copy of their system.img or system.tar.ext4 made by clockworkmod. ****

Part of doing this was integrating everything with the d2-variant build chains in CM9 and CM10. Therefore a CM9 port should be quickly forthcomming. My Github will have all of this code up there soon, I have a bit of cleaning to do….and comment adding.

Thanks Guys!

So some of you know that I kinda was in a bind this weekend, found my way out and with the help of some folks like kermione96 and utkanos.
Remember that these are UNOFFICIAL and to be used for your own purposes! No guarantees. CC, Apache, etc...

ClockworkMod Touch (All variants): 
http://goo.im/devs/childofthehorn/comanche/samsung_comanche_cwmtouch_childofthehorn.tar.md5

I also made some Recovery Images for Odin for the ATT Crowd:  

Root, Recovery, CWM (basic) ATT ONLY: (unzip with 7zip first) 
http://goo.im/devs/childofthehorn/comanche/Stock_Root_CWM_i547_cached_out.tar.md5.7z

STOCK, no Root, stock recovery ATT: (unzip with 7zip first): 
http://goo.im/devs/childofthehorn/comanche/Stock_ATT_comanche_i547_ICS.tar.md5.7z

If anyone has the Courage to try this and can send me the Output files (xbackup.img where x is a number) along with what their carrier is and Odin Flash Counter #, it could be helpful. If we knew where the Modems were, it would help with future updates, etc without loosing root.

Android Script to Download:
https://dl.dropbox.com/u/58849669/ROMS/sysmaybe

Run in Terminal:
adb push sysmaybe /data/local/tmp
adb shell
(su if you have root)
cd /data/local/tmp
chmod 755 sysmaybe
./sysmaybe

AS A SIDE NOTE TO THOSE WHO MIGHT BE HAVING LTE ISSUES AFTER ROOT

Try triangle away from chainfire.
DOWNLOAD ON GOOGLE PLAY
http://forum.xda-developers.com/showthread.php?t=1494114
It is not compatible with this device, so as of yet it will not reset your counter to 0. However, the attempt does reset something I do not yet know and allows you to connect to the the LTE (found this to be an LTE connection issue on an ATT device after recovering).

I had a bit of a kerfuffle doing fancy Notifications for Android that needed to look and work the same on Honeycomb (3.x) , ICS (4.0.X), and JellyBean (4.1 – 4.2) (API11-16) . This was because the Google Android developers page….is wrong-ish..The Function Example Below shows you how to access many of the Fancier (IO 2012) Notification Abilities and appearance and add them to your application for consistent notifications to the user of status in an easy way. (Like a VPN Tunnel,  Private Wifi, Security Apps).

The way that this function uses the context of wherever  it is called and is placed in the code, allows you to use a single function that can update with multiple abilities for the user. For instance in my application, I have two critical components that must be functioning in order to maintain a connected state and a want to display real-time information from a system service. To be extremely fast and accurate, it is much better to simply call this function every time that the status of one of those items changed (on signalChanged, onLocationChanged, etc). It is also much more battery efficient, since you are waiting and only updating when required. This is important when you have an ongoing notification and/or application.

 //Code!!!
import java.io.*; //just always a good idea.....
 import android.graphics.*; //for our image conversion
 import android.app.Activity; // normal
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
private void alertNotification(){ //Normally we would be starting the function with Context context
 //We use this. instead of context because we will be calling it from multiple places and within other running services
       NotificationManager notificationManager = (NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE);
//Declare your New builder for your notification (This is slightly different from the Google example, but cleaner since we call it multiple ways )
       Notification.Builder builder = new Notification.Builder(this);
//Make sure that your syntax is correct for all of the info you will display
        String dbs = Integer.toString(decibels); String titles = null; String texts = null;
//Conditional Statements to change the Icons and Information
      if (connection_state == "Connected" ){
               titles = "Connected to System";
               texts = "Signal: " + dbs + "db " ;
               icon = R.drawable.connected_icon; // Small icon = 48pix or 36pix for xhdpi/hdpi
               l_icon = R.drawable.icon_connected; //Same size as launcher icons
       }
       if(connection_state != "Connected" ){
               l_icon = R.drawable.icon_start;
               titles = "Not Connected to System";
               texts = "Searching for Connection";
               icon = R.drawable.start_icon;
        }
// We have to convert a Drawable Resource to Bitmap using
        Bitmap large_icon = BitmapFactory.decodeResource(this.getResources(),l_icon);
//One Builder for both options of Connection
        builder
        .setContentTitle(titles) //Give it a title (String)
        .setContentText(texts) //Give a bit more detail (String)
        .setSmallIcon(icon) //Icon that appears in the Staus Bar and right bottom corner of Notification (R.drawable)
        .setNumber(decibels)// Only found this to work on CERTAIN API16 Devices (must be int) to dispay a number next to your icon
        .setTicker(titles) // The pop-up Text in Status Bar when the Notification is Called
        //.setPriority(1) Does Not allow for API11 - API15
        .setOngoing(true) // Cannot Have the icon Swept away, also forces it to the top in most cases
        .setLargeIcon(large_icon) //Icon to Appear on the Big Left Area
         //******************* //Pay attention here as it is NOT COVERED IN THE API DOCS BY GOOGLE!
        .getNotification();
 //You know where is says use .builder(), don't as its ONLY valid for API16+ or 4.1+ //******************* 
//Define what you just built as the Notification that you plan to use
         Notification notification = builder.getNotification();
//Run and Set your Notification!
         notificationManager.notify(R.drawable.ic_launcher, notification);
 }

This is a repost of Stephen Wylie’s post on Google Plus (my husband!)

THIS IS THE NEWEST AND BEST WAY TO DO OAUTH AND INTEGRATE GOOGLE. I PROMISE!

Here are a series of steps you can use in order to integrate an Android app with the Google Play Services, particularly for the sake of accessing a user’s Google Drive documents.  See below for a link to some sample code that ties it all together.

=======================================================

Step 1: Create an account for Google API Services, and access your Google APIs Console.

Create an entry for your application, — “Create” a new “Project” if you don’t have one already, then create an OAuth2 key “for installed applications” (assuming you’re writing an Android app).  This generates a “Client ID” which you’ll use in about 15 seconds.  Part of this process involves obtaining the SHA1 fingerprint of my debug key, which I obtained by using the jre7 version of keytool to read the debug.keystore file.  This allowed me to use the “Drive-initiated authorization” listed at https://developers.google.com/drive/about-auth#drive-initiated_authorization because I’m not intending to override any other phase of the OAuth2 process or involve any other APIs that aren’t in Drive.  Remember to change this to the actual signed key once you make the release version of your APK.

Back in “Services”, enable the Google Drive API and Google Drive SDK, and this will activate an option in your sidebar called “Drive SDK”.  You must fill this page out with the pertinent data relating to your application.  This data includes the following:

* Put in an Application Icon.

* The Client ID is something you must generate when you create an OAuth 2.0 key in general.  Just copy that Client ID into the appropriate box.

* Make up a URL for the “Open URL.”

* Throw in mime types you care about. Most folks might want to specify actual MIME types that the app is allowed to open, but for now, I only want to open up the reserved Google document types (e.g. application/vnd.google-apps.spreadsheet), which the SDK Panel won’t let me specify as a MIME type to open.  If you’re only interested in the document types Drive lets you create within itself, check the “Import: Allow users to open files that can be converted to a format that this app can open” box.  Check outhttps://developers.google.com/drive/enable-sdk – especially the “Setting MIME types and extensions” section for more details.

* Add some Google API Scopes.  There are two required for Drive apps:https://www.googleapis.com/auth/userinfo.email andhttps://www.googleapis.com/auth/userinfo.profile.  https://www.googleapis.com/auth/drive.file should be included by default, but it may be prudent to still list it here anyway.  There are some others listed athttps://developers.google.com/drive/scopes.  One basic one worth including in many cases is https://www.googleapis.com/auth/drive, which allows access to all files on the user’s Dtive.  For read-only access to all documents, usehttps://www.googleapis.com/auth/drive.readonly.

Make sure to save your changes and then check the top (PgUp) to see if any of the input was invalid.  Make any necessary changes until Google notes your changes were saved successfully.

Step 2: Watch this Google IO 2012 presentation, or thumb through the slides:https://docs.google.com/presentation/d/1LrEKp2PqESsES3upS1xsSARz35KS-9QHnYFTKvS2yzM/preview#slide=id.p19

While this will help you write your code, there are definitely some key pieces missing from it, and also things that will cause errors once you think everything’s been implemented.  Here are the pitfalls:

* Slide 17 has a typo in the unbolded area which is corrected in the bolded area in slide 18 — Context does not know what startActivityForResult is.  Activity does, so since I usually make it available as a class variable, the asynchronous process knows what it is without me having to pass it in.

* The ‘setQ(“mimeType=text/plain”)’ method invocation mentioned in slide 36, when used just as written, seems to produce an error: “Invalid Value”.  It becomes apparent from looking at the XML message that the error came from the value in “q”; it seemed to work better once I put ‘setQ(“mimeType=\”text/plain\”")’ — note the escaped quotes around text/plain.  However, this query is optional.

* Finally, and this is very important, is the line:

return GoogleAuthUtil.getToken(ctx, account.name, “oauth2:” + DriveScopes.DRIVE_READONLY);

Note that, in the presentation, it’s listed as DriveScopes.DRIVE_FILE.  This only gives you access to the files the user has already created with the app.  This may be what you want in some instances, but for my app, I need DRIVE_READONLY.  DriveScopes.DRIVE gives the program full, unfettered R/W access to any user files, which is beyond what I need.  This was described above in the “Google API Scopes” area.

=======================================================

Once this has been done, and the considerations above have been taken (which may not be all the ones I had to make, but the sample code definitely works), you’ll be able to use Google Play Services to connect to Google Drive.

Oh, by the way, here are the relevant pieces of a Java activity I wrote that does all this: http://one-dollar.us/DriveActivity.java  Note it doesn’t take care of practically any exception cases properly, notify the user what the heck’s going on while it’s fetching the files, or even fetch the files if the user has to tap the “Yes, I really want to do this” button.  I also suspect there are probably some code paths that aren’t necessary in here, or are unreachable because I put in the capability to do things 2 different ways and it only ever uses one.  The good news is that the most important feature works!

=======================================================

Example code relating to GoogleAuthUtil, also features nice asynchronous wrapper: https://developers.google.com/android/google-play-services/reference/com/google/android/gms/auth/GoogleAuthUtil  I got some more ideas from herehttps://developers.google.com/drive/examples/java#making_authorized_api_requests, but this page didn’t end up being too useful.

This piece of code provided some insight as to how to possibly include the authentication token into the http://code.google.com/p/google-oauth-java-client/wiki/OAuth2#Servlet_authorization_code_flow

 

Solder SMD Chips the Easy way!

 

 

A Simple Demo on how to Drag solder SMD chips onto a pcb board
I show you step by step how to do it and even up close checkup on the microscope
The chips shown are ATmega328′s and the iron used is a Metcal.

Yes, I know that there is a board error, this is all about examples!

Download it here! http://www.windowsphone.com/en-US/apps/c6805e55-e39a-4ce8-985c-680a8658edc6

I made my first native Windows Phone (WP7) app and it was really easy! Thinking about making a Pivot Themer based on my work on this.

 

Meet Wet Andy, a UNIVERSAL splash screen tool. 

Posted Image
Yes, you heard right, this is a tool that can take any standard image (jpg, png, bmp), convert it to the exact screen size of your device, and flash it to your device. 

Custom splash screens have never been easier! It will work with API7 through API15 without issue (on the 8 different devices I tested). This is a self-contained  package, no installers, and can be used from a flash drive with no additional downloads required. All the tools are right there!

STEPS: 

1. Connect your Device and enable USB Debugging. Start the “Wet Andy” program by clicking it.

2. Hit the “TEST ADB” button, it will tell you if your device is connected. (output can be seen as ADBTEST.txt in the folder)

3. Hit “PICK” and you must pick an image file that is JPG, BMP, or PNG using the file chooser.

4. Hit “CONVERT”, you will not see the progress on screen, but when you see your image, display.txt, and splash.img in the program folder it has worked!
* This program auto converts the image to the size of your screen, so you can use any image. If your phone does not display its screen size in the props, the default is 480×800
5. Close the program. (ffmpeg has something weord where it keeps going, but don’t worry as it WORKED.

6. Restart the program and “TEST ADB”

7. Once you see it is connected, hit “Install”
* The phone will freeze, then reboot into the bootloader. From there, it will do the install.
* Once you see the screen go blank and the program show “Installing”, it has installed and is rebooting
* You will see the new image as it boots!

TO REUSE AND FLASH ANOTHER IMAGE TO THE SPLASH, DELETE THE SPLASH.IMG !!!!

DOWNLOAD: http://dl.dropbox.co…ndy.windows.zip

NOTICE: BY USING THIS PROGRAM, YOU AGREE TO THE RIGHTS AND PRIVILAGES OF GOOGLE AND THEIR SDK TOOLS

These are our Save The Date Postcards I designed for all of our friends and family members.

The Box in the top is a Linux Bash Shell and you can actually type in those commands with that being the real output from the computer. Nerds will get the joke, others will be confused and think its cute. I feel like STD cards can afford to be a bit more eccentric… The back has our personal info…so its not getting posted!