ReadWriteWeb Mobile Summit: May 7, 2010, Mountain View, CA,
To me, The ReadWriteWeb is TechCrunch without the sellout PR. Those are strong words but I believe The ReadWriteWeb to be the essential journal of our industry and RWW writers are the authentic journalists of our time. They have a mobile un-conference coming up. If I were in town I would be there the whole time. It's at the Computer History Museum in Mountain View. They sent me a message inviting my groups and a discount code to share with you. If you are involved in mobile, this event will give you the perspectives and connections to reinforce your position in the field in ways that other "un-conferences" could only aspire to. Go if you can. Info and Promo Code below,SidGabriel-----------------------------The ReadWriteWeb Mobile Summit is literally days away! This is a one-of-a-kind opportunity to meet, discuss and debate face-to-face the future of mobile with some fantastic individuals from Google, UrbanAirship, MIT/Stanford Venture Lab, Nokia and more! Richard MacManus, founder and editor of ReadWriteWeb, is giving a special keynote to kick-off the day. Expect some special prizes from Call-Fire during this session. Alcatel-Lucent will also be giving away six free iPads to attendees. And don't forget our speed-geeking session where companies like your's demonstrate their products. If you have something you would like to demo in the speed geeking format, let us know.Don't miss out. We are expecting a full house! As a friend of TMI/SidGabriel and in partnership with ReadWriteWeb, please use this link to register for $300 off the $595 ticket price for the next 24 HOURS ONLY :-). Total cost of entry is $295.Save a lot by bringing five of your colleagues. Group discounts are $995. Take advantage of the group discount by emailing summits@readwriteweb.com.
Welcome folks. As you all know, we'll be using git and github for the ArDevMob Developer Challenge.
What does this mean for you, the developers?You need: 1. An account on github.com. It's free. Just head over here and sign up free, if you don't already have one: https://github.com/signup/free 2.You will want to upload your ssh key during step #1 or right after. That way, when git talks to github, you won't need any passwords, etc. It'll be a seamless experience. See instructions here: https://github.com/guides/providing-your-ssh-key This page will automatically redirect to the instructions applicable for your platform (Mac, Linux, Windows) 3. Install git on your platform: http://git-scm.com/download 4. Tell us your team name and the email address that github knows you by. See below.Each Team in the Challenge will be issued a private repository, thanks to generous sponsoship by github. The repository will be named after the team. And then we add the team members as collaborators. That's why we need your the email address associated with your github account. You'll get pull and push access to that repository. If you already have a github account, then this new repository will just show up as an additional one in your list of repositories. All repositories are private during the competition. At the end of the competition, we'll turn them public, because we require that all code be released under an open source license. To that end, you MUST have a license.txt file in your project's root directory with the license details. Which license you choose it up to you, but it must be an open source license. We recommend the MIT license, http://www.opensource.org/licenses/mit-license.php We'll post github URL's and Team names on this blog prior to the start of the competition.I'll be going over the details during the kickoff event, and I'll be available for git assistance during the event. Good git resource links: http://www.kernel.org/pub/software/scm/git/docs/everyday.html http://help.github.com/ http://git-scm.com/documentationgit help (from the command line)Good luck,Wolf
I'm excited to announce that Junaio has released a preview for Android Developers. Get it here http://www.junaio.com/publisher/main I'm going to download and play with it right now. *and* the Junaio platform on Android or iPhone are admissible projects for the mobile category of this weekend's Augmented Reality Hackathon. Funny, hack an Android to win an iPad? Crazy. Super short free registration at http://ardevmob.com/
1: Download Processing from http://www.processing.org/ 2: Copy the code below and paste it into a blank sketch 3: Hit Play
// SGH2010
// This is ARQanoide the AR Arkanoid Clone
/**
* a arkanoid clone by guru
* adjusted by SidGabriel to use a webcam and a colorful object of your choice.
* Sid's additions marked SGH
*/
//SGH
import processing.video.*;
// Variable for capture device
Capture video;
// A variable for the color we are searching for.
color trackColor;
// variables for toggles
boolean showImage;
boolean acquireColor;
boolean testColor;
// Global tracking coordinates
int wrX;
int wrY;
PFont myFont;
///sgh
int px, py;
int vx, vy;
boolean paused = true;
boolean done = true;
int[][] stones;
void setup() {
size(300,300);
noCursor();
px = width/2;
py = height/2;
vx = int(random( 10, 18 ));
vy = 20;
stones = new int[7][4];
for( int x = 0; x < 7; x++) {
for( int y = 0; y < 4; y++ ) {
stones[x][y] = y + 1;
}
}
//SGH
myFont = createFont("Arial", 18);
textFont(myFont);
video = new Capture(this,width,height,15);
// Start off tracking
trackColor = color(255,255,255);
smooth();
///SGH
}
void draw() {
//background(50);
//SGH Get Camera Controller Info
// Capture the video
if (video.available()) {
video.read();
}
video.loadPixels();
image(video,0,0);
///SGH
stroke(255);
strokeWeight(2);
// update postion of the ball
if (!paused) update();
// draw all stones that are not removed yet
// check if all are gone
done = true;
for( int x = 0; x < 7; x++) {
for( int y = 0; y < 4; y++ ) {
if ( stones[x][y] > 0 ) {
done = false;
// fill( 128 + 10 * stones[x][y] );
rect( 10 + x * 40, 10 + y * 20, 40, 20 );
}
}
}
// no stone remaining - display yippie message
if ( done ) {
paused = true;
fill(255);
textSize( 48 );
text( "JIPPIE!", 50, 200 );
}
// display text if paused
if ( paused ) {
textSize( 16 );
fill(128);
text( "pres 's' to start/stop 't' to train a controller", 10, 270 );
}
fill(128);
// draw ball
ellipse(px,py,20,20);
// Before we begin searching, the "world record" for closest color is set to a high number that is easy for the first pixel to beat.
float worldRecord = 1500;
// XY coordinate of closest color
int closestX = 0;
int closestY = 0;
// Begin loop to walk through every pixel
for (int x = 0; x < video.width; x ++ ) {
for (int y = 0; y < video.height; y ++ ) {
int loc = x + y*video.width;
// What is current color
color currentColor = video.pixels[loc];
float r1 = red(currentColor);
float g1 = green(currentColor);
float b1 = blue(currentColor);
float r2 = red(trackColor);
float g2 = green(trackColor);
float b2 = blue(trackColor);
// Using euclidean distance to compare colors
float d = dist(r1,g1,b1,r2,g2,b2); // We are using the dist( ) function to compare the current color with the color we are tracking.
// If current color is more similar to tracked color than
// closest color, save current location and current difference
if (d < worldRecord) {
worldRecord = d;
closestX = x;
closestY = y;
}
}
}
// We only consider the color found if its color distance is less than 10.
// This threshold of 10 is arbitrary and you can adjust this number depending on how accurate you require the tracking to be.
// if (worldRecord < 10) {
// // Draw a circle at the tracked pixel
// fill(trackColor);
// strokeWeight(4.0);
// stroke(0);
// ellipse(closestX,closestY,16,16);
// }
if (worldRecord < 20) {
// Draw a circle at the tracked pixel
//fill(trackColor);
//strokeWeight(4.0);
//stroke(255);
wrX = closestX;
wrY = closestY;
// draw paddle
fill(trackColor);
rect( closestX - 35, 270, 70, 20 );
}
else {
fill(128);
rect( 150 - 35, 270, 70, 20 );
}
// ready target mode
if(showImage) {
set(0, height - video.height, video);
fill(trackColor);
stroke(trackColor);
ellipse(mouseX,mouseY,8,8);
textSize( 16 );
fill(128);
text( "'a' to acquire a color", 10, 260 );
text( "'c' to test control color", 10, 250 );
}
if(acquireColor) {
fill(trackColor);
ellipse(closestX,closestY,16,16);
int loc = mouseX + mouseY*video.width;
trackColor = video.pixels[loc];
textSize( 16 );
fill(128);
text( "Acqire an object by moving the mouse over it and pres 'a'", 10, 240 );
}
if(testColor) {
fill(trackColor);
ellipse(closestX,closestY,16,16);
text( "confirm read 'c' when done", 10, 240 );
}
}
void update() {
// check if ball dropped out of the lower border
if ( py + vy > height - 10 ) {
px = width/2;
py = height/2;
vx = int(random( 0, 16 ));
vy = 2;
paused = true;
}
// check if the ball hits a block
for( int x = 0; x < 7; x++) {
for( int y = 0; y < 4; y++ ) {
if ( stones[x][y] > 0 ) {
if ( px + vx + 10 > 10 + x * 40 && px + vx - 10 < 10 + x * 40 + 40 &&
py + vy + 10 > 10 + y * 20 && py + vy - 10 < 10 + y * 20 + 20 ) {
stones[x][y] = 0;
// change the velocity in y direction if the block has been hit
// on the bottom or on the top
if ( px + 10 > 10 + x * 40 && px - 10 < 10 + x * 40 + 40 ) vy = -vy;
// change the velocity in the x direction if the block has been hit on the side
if ( py + 10 > 10 + y * 20 && py - 10 < 10 + y * 20 + 20 ) vx = -vx;
}
}
}
}
// change the direction if the ball hits a wall
if (px + vx < 10 || px + vx > width - 10) {
vx = -vx;
}
if (py + vy < 10 || py + vy > height - 10) {
vy = -vy;
}
// check if the paddle was hit
if ( py + vy >= 266 && px >= wrX - 35 && px <= wrX +35 ) {
vy = -vy;
vx = int(map( px - wrX, -35, 35, -8, 8 ));
}
// calculate new postion
px += vx;
py += vy;
}
void mousePressed() {
if (done) {
for( int x = 0; x < 7; x++) {
for( int y = 0; y < 4; y++ ) {
stones[x][y] = y + 1;
}
}
done = false;
px = width/2;
py = height/2;
vx = int(random( -8, 8 ));
vy = -2;
}
}
//SGH Target Mode Toggle
// t = show camera to target color
// a = acquire the color directly under the mouse + show all other pixels with the color
// c = confirm camera color tracking by tagging all pixels of the target range
// s = start or stop the game
public void keyPressed(){
switch (key){
case 't':
showImage = !showImage;
break;
case 'a':
acquireColor = !acquireColor;
break;
case 'c':
testColor = !testColor;
break;
case 's':
paused = !paused;
}
}
// SGH2010
This is a great example of an original interface application that would be admissible for the event this weekend. The only limits on interface are the limits of your own range of expression. I think updating this project is a great way to spend a weekend.
http://code.google.com/p/ideo-multitouch/ For the weekend, I'll supply 3 kits for teams that want to explore this project or do something new with it this weekend. Each kit has a netbook with webcam, Processing 1.1, Flash Builder 4 and a mini projector. I'm not sure what to do about the frosted glass. I'm sure we'll figure something out. The first step is to register at http://open.ardevmob.com
Looks like it's going to be a fun night. I have some friends coming by and one that I haven't seen for a few years. I'll have some rare demos out and I'm really excited to host a free-form agenda in a social and relaxed environment with lots of networking/talking and face time. See you all 'round 7.
>Hands on w/Android, ChromeOS, Augmented Reality & more #elc2010 welcome http://bit.ly/dcNtq8
The Purpose of the ARDevMob is to support free to use Augmented Reality System Makers and Content Creators through real world events, workshops and user community building.
Beyond the Whiz Bang of a new and literally flashy medium there is a new metaphor arising from our edge technologies that undoes the hardship of the desktop metaphor that has shackled user experience to a painful desk and chair for nearly 30 years. These technologies carry the potential and the promise of more natural and intuitive ways of interacting with information and they are progressing along a timeline surprises us every day.
The days when people would self identify as "not a computer person" are drawing to a close and with them a great deal of the learning curve associated with using computers in daily life. There are computers designed for human use on the way, and already in some people's hands.
We have already begun to see AR proliferating through consumer products: Digital cameras that find faces and focus on them, heads up driving navigation displays showing you a map of the road ahead relative to your own real-world position, and fashionable location and orientation aware mobile games and interactive experiences. The pace of development is inspiring to say the least.
What if I told you that in less than 5 years you'll spend more than 50% less time in front of a monitor and keyboard? What if I told you that before the end of the year you would see at least one event broadcast from a computer controlled multi-copter? You'd have to see it to believe it right?